(57)【要約】【課題】単一のドライバによる不具合を解消することができるようにする。【解決手段】画像を入力するための画像入力装置と、前記画像入力装置を制御するためのドライバ・プログラムとを有する画像処理装置であって、画像入力の際に必要なＵＩ処理及び読み取られた画像データを処理及び表示する為のスキャナ・ドライバ部と、前記スキャナ・ドライバ部とは独立した別のプロセスとして動作し、前記画像入力装置のハードウェアの制御を行う下位レベル・ドライバ部と、前記スキャナ・ドライバ部と前記下位レベル・ドライバ部との間でプロセス間通信を行って情報のやり取りを行う通信部とを有することを特徴とする画像処理装置等、を提供する。【選択図】図１
2007150464.tif 000002
【特許請求の範囲】
【請求項１】
画像を入力するための画像入力装置と、前記画像入力装置を制御するためのドライバ・プログラムとを有する画像処理装置であって、
画像入力の際に必要なＵＩ処理及び読み取られた画像データを処理及び表示する為のスキャナ・ドライバ部と、
前記スキャナ・ドライバ部とは独立した別のプロセスとして動作し、前記画像入力装置のハードウェアの制御を行う下位レベル・ドライバ部と、
前記スキャナ・ドライバ部と前記下位レベル・ドライバ部との間でプロセス間通信を行って情報のやり取りを行う通信部とを有することを特徴とする画像処理装置。
【請求項２】
前記下位レベル・ドライバ部は、前記スキャナ・ドライバ部とは独立に入れ替え可能に構成されていることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記下位レベル・ドライバ部は、複数の画像入力装置のそれぞれに対応して複数個設けられ、実際に接続されている画像入力装置に応じた下位レベル・ドライバ部を自動選択及び実行するように構成されていることを特徴とする請求項１に記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理装置に関し、特に、イメージ・スキャナやフィルム・スキャナ、デジタルカメラなどの画像入力装置の読み込み処理プログラム（ドライバ）を有する画像処理装置に用いて好適な技術に関する。
【背景技術】
【０００２】
イメージ・スキャナやフィルム・スキャナ等の画像入力装置は、反射原稿（写真プリントなど）や透過原稿（写真フィルムなど）をデジタルの画像イメージとして入力する機能を備え、近年わが国でも一般的に使われるようになってきている。この種の装置に於いては、画像入力装置はSCSI(Small Computer System Interface)やＵＳＢ(Universal Serial Bus)等を介してパーソナルコンピュータ等の情報処理装置に接続される。画像入力装置の制御は専用のプログラム（ドライバ・プログラム）により行われる。スキャナ・ドライバはまずスキャン用の画面を表示する。
【０００３】
図２は、スキャン用画面の一例を示す図である。
当該画面に於いてユーザはまずスキャンのモード（カラー、モノクロなど）２０６を指定した後プレビューボタン２０３を押すと、スキャナはプレビュー動作を行う。そうするとスキャナ・ドライバはスキャナからプレビュー用の低解像度の画像を読み出してプレビュー用の画像データを取得する。スキャナ・ドライバではその結果を当該画面のプレビュー領域２０１に表示する。
【０００４】
ユーザはプレビュー画面のうちのスキャンすべき領域２０２をマウス等を使って指定し、スキャンの解像度２０７、ズーム２０８の有無、ガンマ２０９、明るさ２１０、コントラスト２１１等のパラメータを設定した後、スキャンボタン２０４を押す。そうすると、スキャナ・ドライバはスキャナに対してパラメータの設定やコマンドの発行を行い、セットされた原稿のうちユーザが指定した範囲のみをスキャンする。その後読み取った画像データに対して必要な処理（色補正や画像処理）を行った後、ファイルとして保存したり、当該ドライバを呼び出したアプリケーション・プログラムに処理済みの画像データを渡したりする。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来のスキャナでは、スキャナ側にインテリジェンスがあった為に、スキャナ・ドライバでは簡単なコマンドを発行することにより、スキャナに対するパラメータの設定やスキャン画像の呼び出しを行うことができた。例えば図３で示すように、スキャナ・ドライバ３０１はSCSI等のインタフェースを介してスキャナに対してコマンド３０２を送信する。
【０００６】
例えば、CanoScan300/600の場合には以下のようなSCSIコマンドが用意されており、これらを使用するだけでスキャンを実行したり、キャリブレーションを行ったりすることができるようになっていた。この為、従来のスキャナ・ドライバのスキャナ制御部は比較的シンプルにできており、スキャナ・ドライバの一部として組み込まれていた。
SetWindows：スキャン範囲、明るさ／コントラスト等の設定、
Scan：スキャン動作の起動、
Read：画像データの読み込み、
Send：各種パラメータ（ディザパターン、濃度カーブ等）の設定、
Exec Calibration：キャリブレーションの実行。
【０００７】
ところが、近年ではパーソナルコンピュータ等のホスト機器の処理能力が向上してきたことから、スキャナには必要最低限の機能のみを備えている。そして、インタフェース（ＵＳＢ等）を介して、スキャナのコントローラの各種レジスタを直接操作することによりスキャナの制御を行うケースが増えてきた。この場合、スキャナの制御を行う処理が従来に比べて非常に複雑になる為、スキャナを制御する処理を下位レベル・ドライバなるまとまったプログラムとして用意することが増えてきた。
【０００８】
また、従来はスキャナ側で行われていた明るさ／コントラストの調整や色補正（マスキング処理）等もスキャナ・ドライバ側で行う必要が出てきた。このため、第４図に示すように、スキャナ・ドライバは下位レベル・ドライバ部４０２とスキャナ・ドライバ部４０１とから構成されるようになってきている。
【０００９】
スキャナ・ドライバ部４０１は下位レベル・ドライバ部４０２を介して、スキャンのパラメータを設定したり、スキャナからの画像データを読み込み、更に必要な色補正や画像処理（明るさ／コントラストの調整等）を行ったりする。下位レベル・ドライバ部４０２はスキャナ・ドライバ部４０１からの指示に基づいて、ＵＳＢ等のインタフェースを介して画像入力装置４０４のコントローラのレジスタを直接読み書きすることにより、必要なスキャナの制御を行う。
【００１０】
このように、従来のスキャナ・ドライバでは、スキャナ・ドライバ部４０１と下位レベル・ドライバ部４０２は第４図に示すように、一体化されて同一のプロセスとして動作するように構成されていた。このため、スキャナ・ドライバ部４０１と下位レベル・ドライバ部４０２とは逐次的に動作することしかできず、例えばスキャナが画像を読み取っている間は、スキャナ・ドライバ部４０１では色補正や画像処理を行うことができないという問題があった。
【００１１】
また、スキャナのコントローラの仕様は機器毎に異なることが多いが、その場合実際には下位レベル・ドライバ部４０２の処理を入れ替えるだけでよいのに、スキャナ・ドライバ全体を入れ替えなければならないという問題もあった。
【００１２】
本発明は前述の問題点に鑑み、単一のドライバによる不具合を解消することができるようにすることを目的としている。
【課題を解決するための手段】
【００１３】
本発明は前記従来例の欠点に鑑みて成されたものであり、画像を入力するための画像入力装置と、前記画像入力装置を制御するためのドライバ・プログラムとを有する画像処理装置であって、画像入力の際に必要なＵＩ処理及び読み取られた画像データを処理及び表示する為のスキャナ・ドライバ部と、前記スキャナ・ドライバ部とは独立した別のプロセスとして動作し、前記画像入力装置のハードウェアの制御を行う下位レベル・ドライバ部と、前記スキャナ・ドライバ部と前記下位レベル・ドライバ部との間でプロセス間通信を行って情報のやり取りを行う通信部とを有することを特徴とする画像処理装置等、を提供する。
【発明の効果】
【００１４】
本発明によれば、スキャナ・ドライバ部の処理と、実際にスキャナ・コントローラのレジスタを制御する処理とを独立したプロセスとして動作するように構成されているため、両者を並行して動作させることができ、画像入力のスループットを向上させることができるという効果が得られる。また、スキャナ・ドライバ部と下位レベル・ドライバ部とを分離し、スキャナ及びスキャナのコントローラに固有の処理を全て下位レベル・ドライバ部に行わせることができるので、スキャナ・ドライバ部はスキャナに関わらずに共通に使用することができるようになる。更に、スキャナ毎に下位レベル・ドライバ部を複数個用意しておけば、接続されているスキャナの種類に応じて、下位レベル・ドライバ部をダイナミックに切り替えることも可能になる。
【発明を実施するための最良の形態】
【００１５】
（第１の実施形態）
以下に、一実施形態に沿って、本発明に内容を詳細に説明する。
図１は、本実施形態においてシステムの構成を示す図である。
図１において、１０１はスキャナ・ドライバの本体であり、ドライバのＵＩ処理、スキャン処理、及び色補正／画像処理を行う。
【００１６】
１０２はＵＩ処理部であり、図２で示すようなＵＩ画面の表示、プレビューの表示、スキャン範囲の指定処理、及び各種スキャン・パラメータ（モード２０６など）の設定処理、スキャンの実行処理、及びキャリブレーションの実行処理を司る。
【００１７】
１０３は色補正／画像処理部であり、ＵＩ処理部１０１で設定された各種パラメータ（ズーム、ガンマ、明るさ、コントラストなど）、及びスキャン処理部１０４経由で取得された画像データに基づいて、スキャナに応じた色味の調整、拡大／縮小処理（ズームの場合）、明るさ／コントラストの調整処理等を行い、最終的に得られた画像イメージを本ドライバを呼び出したアプリケーションに引き渡す。
【００１８】
１０４はスキャン処理部であり、ＵＩ処理部１０１で設定されたパラメータ（解像度、スキャン範囲など）に従ってスキャン処理を実行し、得られた画像イメージ（生画像イメージ）をＵＩ処理部１０１及び色補正／画像処理部１０３に引き渡す。スキャン処理部１０４ではスキャナの制御は行わず、クライアント側プロセス間通信部１０５と通して下位レベル・ドライバのプロセス１０７とやり取りを行う。すなわち、下位レベル・ドライバのプロセス１０７に実際のスキャナの制御を行ってもらい、再度プロセス間通信を介して読み取られた画像データ等を受け取る。
【００１９】
１０７は下位レベル・ドライバのプロセスである。下位レベル・ドライバのプロセス１０７はプロセス間通信を介してスキャナ・ドライバ１０１からの各種指令及びパラメータを受け取る。当該指令及びパラメータはサーバ側プロセス間通信部１０８で受け取られ、受信した指令（コマンド）に応じて下位レベル・ドライバ１０９本体の対応する関数を呼び出す。
【００２０】
下位レベル・ドライバ１０９はＵＳＢ等のインタフェース１１０を介して画像入力装置１１１のコントローラのレジスタを直接操作し、各種パラメータの設定処理、及びスキャン動作の実行等を行う。読み取られた画像データ等は、再びサーバ側プロセス間通信部１０８を通り、プロセス間通信を経由してスキャナ・ドライバ１１０のクライアント側プロセス間通信部１０５に返される。
【００２１】
次に、本実施形態での処理の流れについて説明する。まずスキャナ・ドライバ１１０側の処理について説明する。図６は、本実施形態におけるスキャナ・ドライバ１１０のメインプログラムの処理手順の一例を示すフローチャートである。
スキャナ・ドライバ１１０は起動されるとまず、下位レベル・ドライバ初期化処理を呼び出す（ステップＳ６０１）。詳細については図７を参照しながら後述する。
【００２２】
次に、スキャナ能力情報取得処理を呼び出して（ステップＳ６０２）、対象となるスキャナの能力（最高解像度、スキャン最大幅／最大高、自動原稿フィーダ(ADF)の有無、透過原稿ユニット(TPU)の有無など）に関する情報を取得する。
【００２３】
その後ＵＩ処理部１０２を起動して図２に示すような画面を表示する（ステップＳ６０３）。次に、プレビューボタン２０３が押されたか否かを判断する（ステップＳ６０４）。この判断の結果、当該画面に於いてプレビューボタン２０３が押された場合には、プレビュー処理を実行した後（ステップＳ６０５）、再びＵＩ処理に戻って、得られたプレビュー画像をＵＩ画面２０１上に表示する。プレビュー処理については、図８を参照しながら後述する。
【００２４】
一方、ステップＳ６０３の判断の結果、プレビューボタン２０３が押されていない場合は、スキャンボタン２０４が押されたか否かを判断する（ステップＳ６０６）。この判断の結果、スキャン範囲２０２を指定してスキャンボタン２０４が押された場合には、本スキャン処理を実行した後（ステップＳ６０７）、再びＵＩ処理に戻る。本スキャン処理については図９を参照しながら後述する。
【００２５】
一方、ステップＳ６０６の判断の結果、スキャンボタン２０４が押されていない場合は、キャリブレーションボタン２０５が押されたか否かを判断する（ステップＳ６０８）。この判断の結果、キャリブレーションボタン２０５が押された場合には、キャリブレーション処理を実行した後（ステップＳ６０９）、再びＵＩ処理に戻る。
【００２６】
一方、ステップＳ６０８の判断の結果、キャリブレーションボタン２０５が押されていない場合は、終了が選択されたか否かを判断する（ステップＳ６１０）。この判断の結果、ＵＩ処理において処理の終了が選択された場合には、下位レベル・ドライバ終了処理を実行して（ステップＳ６１１）、スキャナ・ドライバ１０１の処理を終了する。一方、ステップＳ６１０の判断の結果、処理の終了が選択されていない場合は、再びＵＩ処理に戻る。
【００２７】
図７は、図６のステップＳ６０１の下位レベル・ドライバ初期化処理の詳細を示すフローチャートである。
図７において、まずプロセス間通信に必要なパイプラインをオープンした後（ステップＳ７０１）、下位レベル・ドライバのプロセス１０７を起動する（ステップＳ７０２）。そして、最後にスキャナ初期化処理を実行して（ステップＳ７０３）、処理を終了する。
【００２８】
図８は、図６のステップＳ６０５のプレビュー処理の詳細を示すフローチャートである。
図８において、プレビュー用のスキャン・パラメータを設定(８０１)した後（ステップＳ８０１）、スキャンを起動し（ステップＳ８０２）、画像の読み取り処理を行う（ステップＳ８０３）。そして、スキャン停止を行い（ステップＳ８０４）、最後に取得したプレビュー用画像をデータをバッファに格納して（ステップＳ８０５）、処理を終了する。
【００２９】
図９は、図６のステップＳ６０７の本スキャン処理の詳細を示すフローチャートである。
図９において、まず本スキャンに必要はパラメータを設定した後（ステップＳ９０１）、スキャン動作を起動する（ステップＳ９０２）。
【００３０】
次に、本スキャン用のバッファに空きがあった場合には（ステップＳ９０３）、画像読み取り処理を行い（ステップＳ９０４）、読み取られた生の画像データをバッファに格納する（ステップＳ９０５）。そして、当該生画像データに対して色補正及び画像処理（ガンマ補正、明るさ／コントラスト調整など）を行う（ステップＳ９０６）。これをスキャン範囲全域に対して行い、スキャンが終了したか否かを判断する（ステップＳ９０７）。この判断の結果、必要なスキャンが終了した場合には、スキャン停止処理を行って（ステップＳ９０８）、処理を終了する。一方、ステップＳ９０７の判断の結果、書お良していない場合は、ステップＳ９０３に戻る。
【００３１】
図１０は、図６のステップＳ６１１の下位レベル・ドライバ終了処理の詳細を示すフローチャートである。
図１０において、まずスキャナ終了処理を実行した後（ステップＳ１００１）、下位レベル・ドライバのプロセスを終了させて（ステップＳ１００２）、処理を終了する。
【００３２】
これまで説明してきた処理のうち、下記の８種類の処理については、実際の処理は下位レベル・ドライバのプロセス１０７中で実行されるように構成されている。
（１）スキャナ初期化処理（ステップＳ７０３）、
（２）スキャナ終了処理（ステップＳ１００１）、
（３）スキャナ能力情報取得処理（ステップＳ６０２）、
（４）スキャン・パラメータ設定処理（ステップＳ８０１、Ｓ９０１）、
（５）スキャン開始処理（ステップＳ８０２、Ｓ９０２）、
（６）画像読取り処理（ステップＳ８０３、Ｓ９０４）、
（７）スキャン停止処理（ステップＳ８０４、Ｓ８０８）、
（８）キャリブレーション処理（ステップＳ６０９）。
これらの関数は、図１のクライアント側プロセス間通信処理部１０５においてプロセス間通信に変換され、実際の動作は下位レベル・ドライバ・プロセス１０７側で処理される。
【００３３】
図１１は、本実施形態におけるクライアント側プロセス間通信処理部１０５による処理の詳細を示す図である。スキャナ・ドライバにおいて上記（１）〜（８）の関数を呼び出すと、実際には図１１のそれぞれの対応する関数が呼び出されるようになっている。
【００３４】
処理が開始されると、各関数では呼び出された関数名に対応する"コマンド・コード"を決定し（ステップＳ１１０５）、パイプライン経由で下位レベル・ドライバ・プロセスに送信する（ステップＳ１１０６）。その後、各関数の引数として渡されて来たパラメータを同じくパイプライン経由で下位レベル・ドライバのプロセス１０７に送信する（ステップＳ１１０７）。
【００３５】
これ以降の処理は下位レベル・ドライバのプロセス１０７側で処理され、その結果として"レスポンス・コード"及び"データ"（画像データ等）をパイプライン経由で返して来る。そして、まず"レスポンス・コード"を受信し（ステップＳ１１０８）、次に、"データ"を受信する（ステップＳ１１０９）。そして、それらの値を上記（１）〜（８）の関数の戻り値として返す。
【００３６】
次に、下位レベル・ドライバのプロセス１０７側の処理について説明する。図１２は、本実施形態において、下位レベル・ドライバのプロセス１０７のメイン処理を示すフローチャートであり、図１のサーバ側プロセス間通信部１０８で行われる処理に相当する。
【００３７】
処理が起動されるとまず、スキャナ・ドライバ１０１からのプロセス間通信による"コマンド"の受信を待合わせる（ステップＳ１２０１）。次に、"コマンド"が受信されると、何を呼び出すかを判別する（ステップＳ１２０２）。この判別の結果、その値に応じて、下位レベル・ドライバ１０９の対応する関数（下位レベル・ドライバAPI）を呼び出す（ステップＳ１２０３〜Ｓ１２０６）。
【００３８】
そして、各関数から"結果コード"及び場合によって処理の結果の"データ"（スキャナから読取られた画像データ等）が返ってくるので、それらをパイプライン経由でスキャナ・ドライバ１０１に送り返す（ステップＳ１２０７）。その後、この処理を終了するか否かを判断し（ステップＳ１２０８）、終了しないならばステップＳ１２０１に戻り、終了するならばそのまま終了する。
【００３９】
図１３〜図２１で示される関数群は、下位レベル・ドライバ１０９の実際の処理である。
これらの関数はＵＳＢなどのインタフェースを介して、スキャナのコントローラのレジスタに直接アクセスし、スキャン処理に必要な各種処理を実行する。
図１３は、本実施形態におけるスキャナ初期化処理の詳細を示すフローチャートである。
当該関数では、まずスキャナ・デバイスへのI/Oパスをオープンする（ステップＳ１３０１）。そして、下位レベル・ドライバ１０９の処理に必要な各種内部変数の初期化、及び動的メモリの確保処理等を行った後（ステップＳ１３０２）、スキャナ・コントローラの初期化処理を行い（ステップＳ１３０３）、処理を終了する。
【００４０】
図１４は、本実施形態におけるスキャナ終了処理の詳細を示すフローチャートである。
当該関数では、ステップＳ１３０２で確保された動的メモリの解放処理を行った後（ステップＳ１４０１）、スキャナ・デバイスへのI/Oパスをクローズし（ステップＳ１４０２）、処理を終了する。
【００４１】
図１５は、本実施形態におけるスキャナ能力情報取得関数の詳細を示すフローチャートである。
当該関数では、下位レベル・ドライバ１０９がサポートするスキャナの能力に関する情報、即ち以下のような情報を返す。
ベンダー名、モデル名、ファーム・バージョン、
物理的解像度（75/150/300/600/1200 dpi等）、
スキャン可能範囲の幅／高さ、
スキャン方法（フラットベッド、自動フィーダ(ADF)、透過原稿ユニット(TPU)等、）、
イメージモード（白黒、グレー、カラーなど）、
イメージのビット長（1/8/12/16ビットなど）。
【００４２】
図１６は、本実施形態におけるスキャン・パラメータ設定処理の詳細を示すフローチャートである。
当該関数では、スキャン処理に必要な、以下のようなパラメータを設定し（ステップＳ１６０１）、処理を終了する。
スキャン解像度(dpi)、
スキャン範囲（左上端、右下端の位置）、
スキャンモード（白黒、グレー、カラーなど）、
スキャン方法（フラットベッド、ADF、TPUなど）、
ピクセル当りのビット数（１、８、２４ビットなど）。
【００４３】
一方、図１７は、本実施形態におけるスキャン・パラメータ取得処理の詳細を示すフローチャートである。
当該関数では上記関数とは逆に、下位レベル・ドライバ１０９に設定されているスキャン・パラメータの値を読み出して返す処理を行い（ステップＳ１７０１）、処理を終了する。
【００４４】
図１８は、本実施形態におけるスキャン開始関数の処理を示すフローチャートである。
当該関数ではまず、キャリブレーション・ファイルからキャリブレーション・データを読み出し、当該データをスキャナのコントローラにダウンロードする（ステップＳ１８０１）。なお、キャリブレーション・ファイルについては後述する。これにより、スキャナの状態（ランプの明るさや各イメージ・センサの感度など）に最適な状態でスキャンが出来るようになる。
【００４５】
次に、ステップＳ１８０２でスキャナ・ドライバから（スキャン・パラメータ設定処理経由で）設定されたスキャン・パラメータに応じてコントローラの各種レジスタを設定する。その後、最後にステップＳ１８０３でスキャン動作の起動（ランプのＯＮ、モータの起動など）を行い、処理を終了する。
【００４６】
図１９は、本実施形態における画像読み取り処理を示すフローチャートである。
当該関数では、スキャナのコントローラより、スキャンされた画像データの読み出し処理を行い（ステップＳ１９０１）、処理を終了する。
【００４７】
図２０は、本実施形態におけるスキャン停止処理関数の処理を示すフローチャートである。
当該関数では、スキャン動作の停止処理（モータの停止、ランプＯＦＦ、キャリアのホームポジションへの移動処理等）を行い（ステップＳ２００１）、処理を終了する。
【００４８】
最後に図２１は、本実施形態におけるキャリブレーション処理関数の処理を示すフローチャートである。
当該関数では、スキャナに対してキャリブレーション処理を行った後（ステップＳ２１０１）、結果のデータをファイル（キャリブレーション・ファイル）に書き込み（ステップＳ２１０２）、処理を終了する。
【００４９】
（本発明に係る他の実施形態）
第１の実施形態では、主にフラットベッド・スキャナの場合を例に説明したが、フラットベッド・スキャナに限らず、フィルム・スキャナやデジタルカメラなど、各種の画像入力機器に対しても実施可能である。
【００５０】
また、第１の実施形態では下位レベル・ドライバのプロセスそれぞれ一つであるとして説明を行ってきたが、実際に接続されるスキャナのコントローラの仕様によって下位レベル・ドライバのプロセスで行うべき処理は異なってくる。
【００５１】
そこで、図５に示すように、スキャナの種類に応じて下位レベル・ドライバのプロセス５０２を複数個用意しておく。そして、物理的に接続されている画像入力装置５０４の種類に応じて下位レベル・ドライバのプロセス５０２のプログラムをダイナミックに入れ替えることにより、接続された画像入力装置５０４に最適な処理を実行できるように構成することも可能である。
【００５２】
前述した本発明の実施形態における画像処理装置を構成する各手段は、コンピュータのＲＡＭやＲＯＭなどに記憶されたプログラムが動作することによって実現できる。このプログラム及び前記プログラムを記録したコンピュータ読み取り可能な記録媒体は本発明に含まれる。
【００５３】
また、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
【００５４】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システムまたは装置に直接、または遠隔から供給する。そして、そのシステムまたは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。
【００５５】
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【００５６】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であってもよい。
【００５７】
プログラムを供給するための記録媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスクなどがある。さらに、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ、ＤＶＤ−Ｒ）などもある。
【００５８】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する方法がある。そして、前記ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
【００５９】
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【００６０】
また、その他の方法として、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記録媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【００６１】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。さらに、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【００６２】
さらに、その他の方法として、まず記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。そして、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【００６３】
【図１】本発明の実施形態におけるシステムの構成を示す図である。
【図２】スキャナ・ドライバのＵＩ画面の一例を示す図である。
【図３】従来のスキャナ・ドライバのシステムの構成を示す図である。
【図４】現在よく使用されているスキャナ・ドライバのシステムの構成を示す図である。
【図５】本発明のその他の実施例におけるシステムの構成を示す図である。
【図６】本発明の実施形態におけるスキャナ・ドライバ部のメイン処理を示すフローチャートである。
【図７】図６のステップＳ６０１の下位レベル・ドライバ初期化処理の詳細を示すフローチャートである。
【図８】図６のステップＳ６０５のプレビュー処理の詳細を示すフローチャートである。
【図９】図６のステップＳ６０７の本スキャン処理の詳細を示すフローチャートである。
【図１０】図６のステップＳ６１１の下位レベル・ドライバ終了処理の詳細を示すフローチャートである。
【図１１】本発明の実施形態におけるクライアント側プロセス間通信処理部による処理の詳細を示す図である。
【図１２】本発明の実施形態において、下位レベル・ドライバのプロセスのメイン処理を示すフローチャートである。
【図１３】本発明の実施形態におけるスキャナ初期化処理の詳細を示すフローチャートである。
【図１４】本発明の実施形態におけるスキャナ終了処理の詳細を示すフローチャートである。
【図１５】本発明の実施形態におけるスキャナ能力情報取得関数の詳細を示すフローチャートである。
【図１６】本発明の実施形態におけるスキャン・パラメータ設定処理の詳細を示すフローチャートである。
【図１７】本発明の実施形態におけるスキャン・パラメータ取得処理の詳細を示すフローチャートである。
【図１８】本発明の実施形態におけるスキャン開始関数の処理を示すフローチャートである。
【図１９】本発明の実施形態における画像読み取り処理を示すフローチャートである。
【図２０】本発明の実施形態におけるスキャン停止処理関数の処理を示すフローチャートである。
【図２１】本発明の実施形態におけるキャリブレーション処理関数の処理を示すフローチャートである。
【符号の説明】
【００６４】
１０１  スキャナ・ドライバ
１０２  ＵＩ処理部
１０３  色補正／画像処理部
１０４  スキャン処理部
１０５  クライアント側プロセス間通信部
１０７  下位レベル・ドライバのプロセス
１０８  サーバ側プロセス間通信部
１０９  下位レベル・ドライバ
１１０  インタフェース
１１１  画像入力装置
【図１】
2007150464.tif 000003
【図２】
2007150464.tif 000004
【図３】
2007150464.tif 000005
【図４】
2007150464.tif 000006
【図５】
2007150464.tif 000007
【図６】
2007150464.tif 000008
【図７】
2007150464.tif 000009
【図８】
2007150464.tif 000010
【図９】
2007150464.tif 000011
【図１０】
2007150464.tif 000012
【図１１】
2007150464.tif 000013
【図１２】
2007150464.tif 000014
【図１３】
2007150464.tif 000015
【図１４】
2007150464.tif 000016
【図１５】
2007150464.tif 000017
【図１６】
2007150464.tif 000018
【図１７】
2007150464.tif 000019
【図１８】
2007150464.tif 000020
【図１９】
2007150464.tif 000021
【図２０】
2007150464.tif 000022
【図２１】
2007150464.tif 000023