以下、添付図面を参照して本発明の実施の形態を詳しく説明する。尚、以下の実施の形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
<実施形態1>
図1は、本実施形態で使用する画像処理システムを示す図である。本実施形態の画像処理システムは、情報処理装置100と画像処理装置200とを有している。
情報処理装置100において、CPU101は、ROM102や外部記憶装置104に記憶された各種プログラムに従いRAM103をワークエリアとしながら装置全体を制御する。ROM102には、初期化プログラムが記憶されている。外部記憶装置104には、OS(Operating System)、アプリケーション、標準ライブラリ、標準ドライバ、ベンダードライバのようなソフトウェアや、各種のデータが記憶されている。
入力インタフェース105は、マウス107及びキーボード108を介して入力された指示を、CPU101に提供する。出力インタフェース106は、CPU101の指示に従って、所定の情報を表示部109に表示する。ユーザは、表示部109に表示された情報を確認しながらマウス107及びキーボード108を用い、各種設定やコマンドを入力することができる。USBインタフェース110は、USBケーブル300を介して画像処理装置200のUSBインタフェース204との間で情報の授受を行う。なお、情報処理装置100と画像処理装置200とは、インタフェース110、204ではなく、LANインタフェース等を介してネットワーク接続されていてもよい。
画像処理装置200において、CPU201は、ROM202に記憶されたプログラムに従いRAM203をワークエリアとしながら装置全体を制御する。スキャンエンジン205は、後述する光学センサや光学センサを駆動するためのモータなどを有し、CPU201の制御の下、RAM203に保存されたジョブの内容に基づいて、各種スキャン処理を行う。この際、スキャンエンジン205は、必要に応じて、ADF206や透過原稿ユニット207を動作させる。スキャンエンジン205が読み取り動作を行って得られた画像データは、RAM203に展開され、CPU201によって後述する様々な処理が施される。
図2は、情報処理装置100におけるソフトウェアの構成を示す模式図である。ユーザは、画像処理装置200を用いて原稿のスキャン処理を行いたいとき、情報処理装置100上でアプリケーション500を起動させる。アプリケーション500は、標準ライブラリ501、またはベンダードライバ502又は標準ドライバ503を介して画像処理装置200にスキャン処理を行わせ、画像処理装置200が取得した画像を保存するスキャンアプリである。
また、アプリケーション500は、アプリケーション標準規約に定義されているApplication Program Interface(以下、標準APIと称す)を用いて、OSに含まれている標準ライブラリ501のプログラムを呼び出す。
標準ライブラリ501は、アプリケーション500のコマンドに基づき、制御内容を自身の変数に蓄積したり、ドライバAPIを用いてベンダードライバ502や標準ドライバ503にコマンドを発行したりする。ベンダードライバ502は、画像処理装置200のベンダーが提供するドライバである。標準ドライバ503は、OSメーカーが提供しOSに含まれているドライバである。ベンダードライバ502は、ベンダーが独自に定義したベンダープロトコルを用いて画像処理装置200を制御する。標準ドライバ503は、OSメーカーや標準化団体が定める標準プロトコルを用いて画像処理装置200を制御する。
標準ライブラリ501は、アプリケーション500からのドライバ起動指示を受けると、ベンダードライバ502を起動するのか、標準ドライバ503を起動するのかを適宜切り替える。その切換えの条件として、例えばアプリケーション500の種類に応じて、起動するドライバを切り替えてもよい。具体的には、ベンダードライバ502を提供するベンダーが、アプリケーション500として、ベンダードライバ502用のスキャンアプリと、標準ドライバ503用のスキャンアプリを提供する。そして、それらのスキャンアプリがインストールされるときに、スキャンアプリに対応するドライバを特定するための情報が、標準ライブラリ501が参照可能な領域に記憶される。そして、標準ライブラリ501は、アプリケーション500からドライバ起動指示を受けると、上記情報により特定されたドライバを起動する。なお、単一のアプリケーション500において、ベンダードライバ502または標準ドライバ503を指定し、標準ライブラリ501は、指定されたドライバを起動するようにしてもよい。
ベンダープロトコルを使用するベンダードライバ502は、画像処理装置200に対し、画像処理装置200が有する機能を十分に活用できるよう、詳細な指示を発信することができる。一方、標準プロトコルを使用する標準ドライバ503は、様々な画像処理装置に共通する標準的な指示を発信する。
すなわち、画像処理装置200を標準的な形態で活用する場合、ベンダードライバ502と標準ドライバ503との間で差は発生しない。しかしながら、画像処理装置200が固有な拡張機能を有する場合、標準ドライバ503はその拡張機能を活用できないことがある。
本実施形態において、画像処理装置200は、標準的な反射方式のスキャン処理(以下、反射型スキャンという)と、透過方式のスキャン処理(以下、透過型スキャンという)とを実現可能とする。反射型スキャン、透過型スキャンの詳細については、図3~図5を用いて後述する。そして、ベンダープロトコルを使用可能なベンダードライバ502は、画像処理装置200に対し、反射型スキャンと透過型スキャンとをサポートしており、どちらのスキャン処理を行うかを一義的に指示することができる。しかしながら、標準プロトコルを用いる標準ドライバ503は、反射型スキャンはサポートするが、透過型スキャンはサポートしないものとする。すなわち、標準ドライバ503は、反射型スキャンに関するコマンドは発信可能であるが、透過型スキャンに関するコマンドは発信不可能である。アプリケーション500が、ベンダードライバ502で拡張された機能を、標準ドライバ503を介して呼び出そうとしても、ベンダープロトコルを理解できない標準ドライバ503はこれを無視したり、エラーと判断したりする。
図3(a)~(c)は、本実施形態の画像処理装置200の概略構成図である。本実施形態の画像処理装置200は、原稿に光を照射しその反射光を光学センサで読み取る反射型スキャンと、原稿に光を照射しその透過光を光学センサで読み取る透過型スキャンとを実現可能なスキャナである。
画像処理装置200は、主に原稿台209と原稿台カバー208とで構成される。図3(a)は原稿台カバー208を閉じた状態の外観斜視図であり、同図(b)は原稿台カバー208を開いた状態の外観斜視図である。画像処理装置200にスキャン処理を行わせる際、ユーザは原稿台カバー208を開放し、原稿を原稿台209に乗せた状態で原稿台カバー208を閉じる。
図3(c)は、原稿台209を上面から見た図である。原稿台209の表面には平滑な原稿台ガラス210が嵌め込まれている。原稿台ガラス210の更に下側(-z方向側)にはx方向に延在するスキャナバー211が配され、スキャナバー211にはx方向に延在する反射用光源212と、x方向に配列されている複数の光学センサ213が配備されている。
図4(a)及び(b)は、原稿台保護シート223を原稿台カバー208に取り付ける様子を示す図である。原稿台保護シート223は、画像処理装置200が反射型スキャンを行う場合に原稿台カバー208に取り付けられる。図4(a)に示すように、原稿台保護シート223は、原稿台ガラス210の全面を覆う白色シート224を有し、白色シート224は、反射用光源212から照射された光を高い反射率で反射して、原稿の読み取りを安定化させる。原稿台保護シート223の両端には、原稿台カバー208に取り付ける際の位置決め手段となる保護シート用フック225が配されている。
図4(b)は、原稿台カバー208の下面、つまり原稿台209と接する側の面を示し、図4(b)に示す状態では原稿台保護シート223が取り付けられている。原稿台カバー208の保護シート用ノッチ222に保護シート用フック225を係合させることにより、原稿台カバー208に原稿台保護シート223を取り付けることができる。
フラットベッド方式で反射原稿スキャンを行う場合、ユーザは原稿の読み取り面が原稿台ガラス210に接するよう原稿を原稿台209に載置した状態で、原稿台保護シート223を取り付けた原稿台カバー208を閉じ、所望のスキャン処理を開始させる。これにより、反射用光源212が点灯した状態でスキャナバー211が所定の速度でy方向に移動し、その移動の過程で光学センサ213が原稿の反射光を検出する。その結果、原稿台ガラス210に押し当てられた原稿の画像が取得される。
なお、原稿台209において、原稿台ガラス210の±y側には、透過用スキャンで用いるフィルムガイドを位置決めするためのガイドノッチ214が配備されている(図3(c)参照)。
図5(a)~(c)は、透過型スキャンを行う場合の原稿のセット構成を説明する図である。本実施形態の画像処理装置200は、ネガフィルムまたはポジフィルムを、透過型スキャンの原稿とすることができる。図5(a)は、透過型スキャンを行う場合に用いるフィルムガイドを示す。本実施形態では、スリーブ用のフィルムガイド215と、スライド用のフィルムガイド216と、ブローニー用のフィルムガイド217とが用意され、対応するフィルムを搭載した状態で原稿台209にセット可能になっている。フィルムガイド215~217の上下端部には、原稿台209にセットする際の位置決め手段となるガイドフック218が配されている。また、フィルムガイド215~217の上端部には、フィルムガイドの種類即ちフィルムの種類を判定するための検知用パターン219が形成されている。
図5(b)は、原稿台209のガイドノッチ214にガイドフック218を係合させることにより、原稿台209にスリーブ用のフィルムガイド215をセットした状態を示す。
図5(c)は、原稿台保護シート223が外された状態の原稿台カバー208を示す。原稿台カバー208の中央には、透過用光源220と透過用光源板221とがy方向に延在している。
透過型スキャンを行う場合、ユーザは原稿となるフィルムをフィルムガイド215~217のいずれかにセットし、そのフィルムガイド215~217を原稿台209にセットする。そして、原稿台カバー208を閉じて所定のスキャン処理を開始させる。これにより、透過用光源220の照射光が透過用光源板221で拡散され、フィルム面全体が上方から一様に照射される。一方、スキャナバー211に搭載されている反射用光源212は消灯している。その状態で、スキャナバー211が所定の速度でy方向に移動し、その移動の過程で光学センサ213がフィルムを透過した光を検出することにより、原稿の画像を読み取ることができる。
なお、透過用光源220は、複数の光源から構成されていてもよい。また、透過用光源220と透過用光源板221とを、スキャナバー211と共にy方向に移動させて、更に大きなサイズのフィルムをスキャン可能な構成としてもよい。更に、透過用光源220と透過用光源板221とをコンパクトな一体型カートリッジとし、このカートリッジを原稿台カバー208の様々な位置に手動で設置可能な構成としてもよい。
一方、図3には示していないが、本実施形態の画像処理装置200は、ADF(Auto Document Feeder)206も備えている。ADF206を用いて反射型スキャンを行う場合、ユーザはADF206に原稿をセットして所定のスキャン処理を開始させる。これにより、ADF206に搭載された原稿は1枚ずつ装置内に送られ、位置決めされたスキャナバー211の光学センサ213に対向するように一定の速度で搬送される。搬送の過程において光学センサ213が、反射用光源212はより照射され原稿で反射された光を検出することにより、原稿の画像が読み取られる。
なお、画像処理装置200においては、ADF用いた反射型スキャンを行うための光学センサを、フラットベット用の光学センサ213とは別に用意してもよい。また、ADFの搬送経路の表面側と裏面側に光学センサを配し、原稿の表裏面を同じ搬送動作で読み取るようにしてもよい。
図6(a)及び(b)は、UI画面900を示す図である。図6(a)はベンダードライバのUI画面900であり、同図(b)は、標準ライブラリ501が提供する標準ドライバ用のUI画面(以下、標準ドライバのUI画面907とも称する)である。例えばアプリケーション500がベンダードライバ502に対応するスキャンアプリである場合、標準ライブラリ501がベンダードライバ502を起動することで、UI画面900が表示される。またアプリケーション500が標準ドライバに対応するスキャンアプリである場合、標準ライブラリ501がUI画面907を表示する。
UI画面900、907のどちらにおいても、各種設定を行うための設定部と、プレビュースキャン処理によって得られた画像を表示するためのプレビューイメージが表示される領域が配されている。なお、UI画面900、907において共通の設定項目やプレビューイメージが表示される領域、同様の機能に関するボタンには、同一の符号901~906が付与されている。ユーザがスキャン方式設定部902をクリックすると、画像処理装置200が実行可能な複数のスキャン方式が表示され、ユーザは表示されたスキャン方式の中から1つを選択することができる。ただし、図6(a)に示すベンダードライバ用のUI画面900では、フラットベッド方式での反射型スキャンを示す「Platen」、ADF方式での反射型スキャンを示す「ADF」、透過型スキャンを示す「Film」の3つが選択可能に表示される。一方、図6(b)に示す標準ドライバ用のUI画面907では、「Platen」と「ADF」のみが選択可能に表示され、「Film」は表示されない。なお、ベンダードライバであっても標準ドライバであってもデフォルトでは「Platen」が設定されている。
カラーモード設定部903において、ユーザは「Color」または「Gray(Black&White)」を選択可能とする。解像度設定部904において、ユーザは様々な読み取り解像度を選択的に又は手入力によって設定することができる。
図6(a)に示すベンダードライバのUI画面900では、画像処理装置200の特殊機能の設定を行うための特殊機能設定部910が表示される。ここでは、アンシャープ機能のOn/Offを切り替えるための設定部が表示された例を示している。一方、図6(b)に示す標準ドライバのUI画面907には、特殊機能設定部910は表示されない。
UI画面900の右下には、プレビュースキャン処理を指示するための「Preview」ボタンと実スキャン処理を指示するための「Scan」ボタンが表示される。ユーザが「Preview」ボタンをクリックした場合、ベンダードライバ502または標準ドライバ503が画像処理装置200に、UI画面900で設定された入力形式とカラーモードを含むスキャン指示を送信する。画像処理装置200はこのスキャン指示に含まれている入力形式とカラーモードに基づいてプレビュースキャン処理を行い、ベンダードライバ502又は標準ドライバ503に提供する。ベンダードライバ502又は標準ドライバ503は、取得した画像に対し所定の処理を施し、プレビューイメージ901に表示する。ユーザは、プレビューイメージ901に表示されたプレビュー画像の中から、実スキャン処理を行いたい領域をクロップ指定することができる。
なお、「Preview」ボタンがクリックされた場合と「Scan」ボタンがクリックされた場合において異なる種類のスキャン指示が送信されてもよい。そして、画像処理装置200は、そのスキャン指示の種類に応じて異なるスキャン方法で原稿のスキャンを実行してもよい。例えば「Preview」ボタンがクリックされた場合、「Scan」ボタンがクリックされた場合よりも低解像度であるが高速なスキャン方法によりスキャンを行ってもよい。
クロップ指定を行った後、ユーザが「Scan」ボタンをクリックすると、画像処理装置200は、クロップ指定された領域を、設定された入力形式、カラーモード、及び解像度に従ってスキャン処理する。そして、画像処理装置200は、原稿のスキャンにより得られたスキャン画像を、情報処理装置100に送信する。ベンダードライバ502又は標準ドライバ503は、画像処理装置200から得られたスキャン画像をアプリケーション500に提供する。なお、スキャン画像の形式は例えばRAW画像である。また、画像処理装置200は、クロップ指定された領域に応じてスキャンを実行してもよいし、クロップ指定された領域に応じてスキャン画像の送信を行ってもよい。前者の場合、例えば図3(c)におけるy方向については、クロップ指定された領域に対応する部分についてのみ、光学センサ213を駆動させてもよい。そして、x方向については、例えばクロップ指定された領域に対応する部分についてのみ、情報処理装置100に送信するようにしてもよい。後者の場合、例えば原稿台209の全面をスキャンするが、スキャン画像のうち、クロップ指定された領域に対応する部分のみ、情報処理装置100に送信してもよい。
図7は、ベンダードライバ502において、ユーザが、スキャン方式設定部902で「Film」を設定した状態で「Preview」ボタンをクリックした場合のUI画面900を示す図である。「Film」が設定された場合、ベンダードライバ502は、「Film」の設定を含むスキャン指示を画像処理装置200に送信する。画像処理装置200は、該スキャン指示の受信に応じて、上述の透過型スキャンを実行し、スキャン画像を情報処理装置100に送信する。情報処理装置100のベンダードライバ502は、画像処理装置200から取得したスキャン画像から、フィルムの各コマに対応するコマ画像911を抽出する。そして、ベンダードライバ502は、図7に示すようにコマ画像911を整列させた状態で領域901にプレビューイメージとして表示する。図7は、6つのコマ画像911が表示された状態を示している。例えば、原稿がネガフィルムの場合、ベンダードライバ502は、ネガポジ反転処理を含む画像処理を行う。原稿がポジフォルムの場合、ベンダードライバ502は、ネガポジ反転処理は行わないがポジフィルムに適した画像処理を行う。35mmスリーブの場合、ベンダードライバ502は、一続きの画像を複数のコマ画像911に分割する。このように、ベンダードライバ502は、原稿の形態に応じた適切な画像処理やリサイズ処理を行った上で、プレビューイメージ901に複数のコマ画像を整列させて表示する。ユーザは、サムネイル化されたコマ画像911の単位でクロップ指定を行うことができる。
ユーザが、サムネイル化された複数のコマ画像911の中から所望のコマ画像911を選択して「Scan」ボタンをクリックすると、ベンダードライバ502は、画像処理装置200に以下の指示を行う。すなわち、ベンダードライバ502は、画像処理装置200に、選択されたコマ画像911に対し実スキャン処理を実行させるスキャン指示を行う。この際、個々のコマ画像911においては、その画像を撮影した時の露光時間、シャッタースピード、天候、光の向きのような撮影条件が、互いに異なる場合がある。よって、ベンダードライバ502は、プレビュースキャン処理で抽出されたコマ画像911のそれぞれの特徴を解析し、最適な蓄光時間を設定した上で実スキャン処理を行う。例えば、明るいコマ画像については、光学センサ213の検出値が飽和しないように、光学センサ213に対する蓄光時間を短く設定した上で実スキャン処理を行う。反対に、暗いコマ画像においては、光学センサ213の出力値の階調範囲を広げるように、光学センサ213に対する蓄光時間を長く設定した上で実スキャン処理を行う。
なお、ベンダードライバ502画面のスキャン方式設定部902で、ユーザが「Platen」を設定した状態で「Preview」ボタン又は「Scan」ボタンをクリックした場合、ベンダードライバ502は以下の指示を行う。すなわちこの場合、ベンダードライバ502は、「Platen」の設定を含むスキャン指示を画像処理装置200に送信する。画像処理装置200は、該スキャン指示の受信に応じて、上述の反射型スキャンを実行し、スキャン画像を情報処理装置100に送信する。
以上、図7を用いて説明した透過型スキャンは、ベンダードライバ502を介した場合に実行可能な機能である。標準プロトコルを用いる標準ドライバ503では、反射型スキャンの範囲でしか画像処理装置200を制御することができず、スキャン方式設定部902で「Film」を設定することもできない。すなわち、標準ドライバ503は、上述のベンダードライバ502のように、透過型スキャンをスキャン指示により指示することができない。そのためユーザは、フィルムのような透過型原稿を画像処理装置200にセットしても、標準ドライバを用いる場合には、適切な読み取り画像を取得することができなかった。
このような状況を改善するために、本実施形態の画像処理装置200には、標準ドライバ503にと反射型原稿と同じ形態で情報の授受を行いつつ、透過型原稿のスキャン処理を適宜実行するためのスキャンプログラムが記憶される。具体的には、画像処理装置200に搭載されている原稿が透過型原稿である場合、画像処理装置200のCPU201は、スキャンエンジン205に対しては、透過方式でプレビュースキャン処理や実スキャン処理を実行させる。その上でCPU201は、透過方式で得られた画像に対して所定の処理を施し、反射方式でプレビュースキャン処理や実スキャン処理を実行した場合と同様の画像を生成し、この画像を用いて標準ドライバ503との間で情報の授受を行う。以下、詳しく説明する。
図8は、標準ドライバ503を用いた場合の、情報処理装置100と画像処理装置200における、ソフトウェア間の制御の構成を示す図である。ユーザは、表示部109で情報を確認しながら、マウス107やキーボード108を介して、画像処理装置200に対する指示を与える。具体的には、アプリケーション500を介して標準ライブラリ501に図6(b)で示したようなUI画面907を表示させ、UI画面907の下で画像処理装置200に関する様々な設定や指示を与える。アプリケーション500は、リンクされた標準APIを用いて標準ライブラリ501との間で情報の授受を行う。標準ライブラリ501は、ドライバAPIを用いて標準ドライバ503との間で情報の授受を行う。標準ドライバ503は、標準プロトコルを用いて、画像処理装置200のスキャンプログラム230との間で情報の授受を行う。
スキャンプログラム230は、画像処理装置200のROM202に格納されたプログラムである。標準ライブラリ501から、標準ドライバ503を介してコマンドが入力された場合、CPU201はスキャンプログラム230をROM202から読み出し、RAM203をワークエリアとしながら各種処理を実行する(図1参照)。すなわち、CPU201はスキャンプログラム230に従って、スキャンエンジン205を制御する。
図9は、画像処理装置200に透過用原稿がセットされた状態で、ユーザが標準ドライバを介してプレビュースキャンを指示した場合の、処理の工程を示す図である。図において、アプリケーション500、標準ライブラリ501、標準ドライバ503は、情報処理装置100のCPU101によって実行されるソフトウェアである。スキャンプログラム230は、画像処理装置200のROM202に記憶され、CPU201によって実行されるソフトウェアである。スキャンエンジン205は、画像処理装置200のCPU201が、スキャンプログラム230に従って制御するハードウェアである。
本処理を開始する際、ユーザは、アプリケーション500を起動し、「スキャナから取り込む」などのメニューを選択する(S1010)。アプリケーション500は、リンクしているOSが提供する標準ライブラリ501に、UI画面900の表示を指示する(S1020)。なお、アプリケーション500は、起動された時点で標準ライブラリ501にUI画面900の表示を指示してもよい。
指示を受けた標準ライブラリ501は、選択されたデバイスの機能情報(Device Capability)を標準ドライバ506に要求する(S1030)。本例の場合は、例えば、画像処理装置200がADFを装備しているか否かなどの情報が、機能情報として要求される。標準ドライバ503は、標準プロトコルを用いて、画像処理装置200のスキャンプログラム230に画像処理装置200の機能情報を要求する(S1040)。
スキャンプログラム230は、スキャンエンジン205の機能情報を標準ドライバ503に応答する(S1041)。標準ドライバ503は、受け取った機能情報を標準ライブラリ501に応答する(S1031)。標準ライブラリ501は、受け取った機能情報に基づいて、図6(b)に示すようなUI画面900を表示する(S1032)。
例えば、機能情報がADFを装備していることを示す場合は、UI画面900のスキャン方式設定部902において、「Platen」と「ADF」が選択可能となる。本実施形態の場合、透過型原稿に対応可能であるか否かの情報は機能情報に含まれないため、選択肢に「Film」は表示されない。ユーザは、表示された選択肢の中から所望の入力方式を選択し、UI画面900で「Preview」ボタン905をクリックする(S1011)。ここでは、「Platen」が選択された状態で「Preview」ボタン905がクリックされたものとする。
「Preview」に指示を受けた標準ライブラリ501は、反射型原稿のプレビュースキャン処理、すなわち原稿台209全面に対する簡易的なスキャン処理を標準ドライバ503に指示する(S1033)。標準ドライバ503も、スキャンプログラム230に対し同様の指示を行う(S1042)。
画像処理装置200のスキャンプログラム230は、標準ドライバ503から受信したスキャン指示と画像処理装置200における原稿のセット状態とに基づいて、プレビュースキャン処理を行う。そして、プレビュースキャン処理によって取得したスキャン画像に対し所定の画像処理を施し、処理後のスキャン画像を標準ドライバ503に送信する(S1043)。S1050~S1051の工程は、スキャンプログラム230がスキャンエンジン205を制御しながら上記スキャン結果を生成するための工程である。
以下、S1050~S1065の工程を順に説明する。S1042で標準ドライバ503より反射型原稿用のプレビュースキャン処理の指示を受け取ると、スキャンプログラム230は、スキャンエンジン205に透過型原稿のスキャン処理を行うか否かを確認する(S1050)。スキャンエンジン205は、画像処理装置200の原稿セット状態を確認し、スキャンプログラムに応答する(S1051)。
原稿セット状態は、様々な方法で確認することができる。例えば、原稿台カバー208に原稿台保護シート223が取り付けられている場合、透過用光源220を点灯しても、光学センサ213には透過用光源220の光が検知されない。このような場合には、反射型原稿がセットされており、画像処理装置が、透過方式により原稿をスキャンする状態ではないと判定することができる。一方、原稿台保護シート223、即ち反射方式により原稿をスキャンするための部材が取り付けられていない場合、画像処理装置が、透過方式により原稿をスキャンする状態であると判定することができる。また、原稿台209にフィルムガイド215~217がセットされている場合、光学センサ213が検知用パターン219を検出することによって、透過型原稿がセットされていると判断することができる。図9の例では、スキャンエンジン205が、透過用原稿がセットされた状態であること、すなわち透過型原稿のスキャン処理を行うことをスキャンプロクラムに応答する(S1051)。
なお、原稿台保護シート223の有無やフィルムガイド215~217がセットされているか否かについては、画像処理装置200の不図示のセンサにより検知される。或いは、画像処理装置200がスキャンを実行し、そのスキャンにより得られたスキャン画像から原稿台保護シート223の有無やフィルムガイド215~217がセットされているか否かを判断してもよい。
次に、スキャンプログラム230は、スキャンエンジン205を、透過型原稿のスキャンモードに設定する(S1052)。具体的には、透過用光源220を点灯させたり、スキャン解像度の設定を行ったりする。例えば、透過型原稿のプレビュースキャン処理には最低でも300dpiの読み取り解像度が必要である場合には、受信したコマンドの指示が300dpiより低い読み取り解像度であっても、300dpiに変更する。上記設定が既に済んでいる場合、本工程はスキップしてもよい。
次に、スキャンプログラム230は、スキャンエンジン205に透過型原稿用のプレビュースキャン処理を実行させる(S1060)。スキャンエンジン205は、スキャナバー211を、透過型原稿のプレビュースキャン処理に適した速度で、透過型原稿用の領域を移動させながら、光学センサ213の検出値を取得する。本実施形態において、光学センサ213の検出値はRGBの輝度値であり、画像処理装置200のRAM203には、各画素に対応するRGBの輝度値を含むRAW画像データがスキャン画像として保存される(S1061)。
次に、スキャンプログラム230は、S1060で取得したRAW画像の中から、1つ以上のコマ画像911を抽出する(S1062)。
図10は、S1060で取得したRAW画像に対し、スキャンプログラム230が行う処理を説明するための模式図である。ここでは、スリーブ用フィルムガイド215にネガフィルムをセットした場合を示している。RAW画像800には、スリーブ用フィルムガイド215の枠体と、セットされたネガフィルムの4つの画像が含まれている。
図9のS1062において、スキャンプログラム230は、このようなRAW画像800より、撮影単位である画像をコマ画像911として抽出する。この際、スキャンプログラム230は、RAW画像800に含まれるフィルムガイド検知用パターン219(図5(a)参照)を、コマ画像911を切り取る際の基準として利用してもよい。ここでは、RAW画像800より4つのコマ画像911が抽出された例を示している。
図9の説明に戻る。S1063において、スキャンプログラム230は、個々のコマを解析し、プレビューイメージ901を生成するために適した画像処理条件を、各コマについて導出する。画像処理条件には、ネガポジ反転処理の要否や、色補正処理の方法などが含まれる。スキャンプログラム230は、個々のコマ画像911に対し、導出した画像処理条件に基づいて画像処理を行う(S1063)。
図10の場合、S1062で抽出された4つのコマ画像911はネガ画像であるため、それぞれに対しネガポジ反転処理を含む画像処理が行われる。これにより、4つのポジ画像が得られる。
再び図9の説明に戻る。S1064において、スキャンプログラム230は、S063で画像処理された後のコマ画像911を用いてプレビュー用画像830を生成する。
S1062でコマ画像911を抽出した際、スキャンプログラム230は抽出されたコマ画像の数Nをカウントする。図10の場合N=4となる。また、反射用原稿のプレビュースキャン処理で得られる大きさ(画素数)を有し、全画素が白に設定されたビットマップ画像(以下、白紙画像810と称す)を用意する。そして、白紙画像810に、同サイズのN個のコマ領域820を配置する。
図11は、白紙画像810におけるコマ領域820のレイアウトを、コマ数N=1~16について示す図である。スキャンプログラム230は、どのようなコマ数Nであっても、同サイズのN個のコマ領域820が白紙画像810の全域に均等に配置されるように、コマ領域820のサイズと行列数を設定する。図10(d)は、白紙画像810に2列2行の4つのコマ領域820を配置した例を示している。
更に、スキャンプログラム230は、4つのコマ領域820のそれぞれに、S1063で生成した4つのコマ画像911をレイアウトする(S1064)。これによって、図10(e)に示すような、プレビュー用画像830が生成される。
ところで、コマ画像911をコマ領域820にレイアウトする際、コマ画像911のぞれぞれは、対応するコマ領域820に対し適切な拡大率でリサイズされる必要がある。
図12は、コマ画像911のリサイズ方法を示す図である。ここでは、コマ領域820の幅をWi、コマ領域820の高さをHi、コマ画像911の幅をWs、コマ画像911の高さをHsとして示している。スキャンプログラム230は、幅方向におけるコマ画像911に対するコマ領域820の比(Sw=Wi/Ws)と、高さ方向におけるコマ画像911に対するコマ領域820の比(Sh=Hi/Hs)とを求める。そして、より小さい方の比率でコマ画像911を拡大し、コマ領域820にレイアウトする。図12において、上段はSw>Shであった場合を示す。この場合は高さ方向の比Shでコマ画像911を拡大し、コマ領域820にレイアウトする。下段はSw<Shであった場合を示す。この場合は幅方向の比Swでコマ画像911を拡大し、コマ領域820にレイアウトする。複数のコマ画像911には、横長写真と縦長写真が含まれている場合がある。個々の写真に上下を判定可能な情報が含まれている場合は、全ての写真の上下方向が一致するようにコマ画像911を回転した上で、上記処理を行ってもよい。
図10のようにコマ画像911のそれぞれを、一定の間隔を置いて配置させれば、後に、プレビュー用画像830を受け取った標準ライブラリ501は、クロップ枠を容易に作成可能となる。
但し、以上説明したレイアウト方法は一例であり、行と列の数やレイアウトする位置及びコマのサイズは予めユーザがカスタマイズできるようにしてもよい。また、標準ライブラリ501が、クロップ枠の設定を行わない場合は、ユーザがクロップ作業を行いやすいように、スキャンプログラム230が、プレビュー用画像830にサムネイル枠をS1064で描画してもよい。
再び図9の説明に戻る。図10のようなプレビュー用画像830が得られると、スキャンプログラム230は、次にスキャン指示を受信したときに必要となるプレビュー情報をメモリに保存する(S1065)。具体的には、プレビュースキャン処理で取得したRAW画像800と、各コマ画像の原稿台における座標とプレビュー用画像における座標との対応情報とをメモリに保持する(S1065)。
図13(a)~(c)は、座標情報を説明するための図である。図13(a)は、RAW画像800より抽出された1つのコマ画像911の、x座標とy座標を示している。原点Oは、原稿台209における読み取りの原点を示している。図13(b)は、リサイズされたコマ画像911のプレビュー用画像830におけるx座標とy座標を示している。原点O´は、プレビュー用画像830の原点を示している。S1065において、スキャンプログラム230は、このような座標情報を個々のコマ画像911に対応付けてメモリに保存する。図13(c)は、メモリにおける保存状態を示している。なお、この座標情報は、図16において説明する実スキャンにおいて使用される。
再び図9の説明に戻る。スキャンプログラム230は、生成したプレビュー用画像830を標準ドライバ503に送信する(S1043)。標準ドライバ503は、反射型原稿用のプレビュー処理の指示(S1042)に対し、実際の反射用原稿のプレビュー処理を行った場合と同じサイズのプレビュー用画像830を、スキャン結果の出力画像としてS1043で受け取ることになる。すなわち、これ以降の工程において、標準ドライバ503、標準ライブラリ501及びアプリケーション500は、反射型原稿のプレビュースキャン処理を行った場合と同じ処理により受け取ったデータのプレビュー表示を行うことができる。
標準ドライバ503は、スキャンプログラム230より受け取ったスキャン結果を標準ライブラリ501に提供する(S1034)。標準ライブラリ501は、取得したスキャン結果を用いてプレビューイメージを生成し、UI画面900の領域901に表示する(S1035)。更に、標準ライブラリ501は、所定のクロップ検出ロジックに基づいてクロップ枠を作成し、領域901内のプレビューイメージ上に表示する。
図14は、S1036において表示部109に表示されるUI画面907の例を示す図である。ここでは、6つのコマ画像911が、抽出された場合を示している。この際、画像処理装置200にセットされているフィルムが、スリーブ用フィルムガイド215であってもスライド用フィルムガイド216であっても、個々のコマ画像911は、図14のように整列されてレイアウトされる。また、セットされているフィルムがネガフィルムである場合には、個々のコマ画像911はネガポジ反転処理が行われた状態でプレビューイメージ901内に表示される。プレビューイメージ901において、各コマ画像911には実スキャンを行う際にスキャン領域を指示するためのクロップ枠912が、選択可能に配置されている。
このように、本実施形態のスキャンプログラム230は、標準ドライバ503から反射型原稿用のプレビュースキャン処理のコマンドを受けながら(S1042)、透過型原稿に対し適切なプレビュースキャン処理を行う(S1051~S1061)。そして、取得した画像に対しコマ画像の抽出やネガポジ反転処理など透過用画像に適した処理を行って、反射用画像と同等のプレビュー用の画像を作成する(S1062~S1065)。
図15は、画像処理装置200に反射用原稿がセットされた状態で、ユーザが標準ドライバを介してプレビューする場合の、処理の工程を示す図である。スキャンプログラム230とスキャンエンジン205との間のやりとり以外は、図9で説明した工程と同じであるので、ここでの説明は割愛する。
本例の場合、S1050におけるスキャンプログラム230からの問い合わせに対し、スキャンエンジン205は、反射用原稿がセットされた状態であること、すなわち透過型原稿のスキャン処理を行わないことを応答する(S1053)。
この場合、スキャンプログラム230は、スキャンエンジン205を、反射原稿用スキャンモードに設定する。具体的には、反射用光源212を点灯させたり、プレビュースキャン処理の解像度を反射型原稿用に設定したりする(S1054)。上記設定が既に済んでいる場合、本工程はスキップしてもよい。
次に、スキャンプログラム230は、透過型原稿用のプレビュー情報、すなわち図9のS1065で保存したRAW画像800と各コマ画像の座標情報を消去する(S1070)。
次に、スキャンプログラム230は、スキャンエンジン205に反射型原稿用のプレビュースキャン処理を実行させる(S1071)。本指示を受け取ったスキャンエンジン205は、反射用原稿に適した設定の下で読み取り処理を行う。すなわち、スキャンエンジン205は、反射用光源212を点灯させたスキャナバー211を、反射型原稿のプレビュースキャン処理に適した速度で、原稿台209の全領域を移動させながら、光学センサ213の検出値を取得する。そして、RAW形式のスキャン画像としてメモリに保存する(S1072)。スキャンプログラム230は、取得したRAW画像に対し、反射用原稿に適した画像処理を行い、プレビュー用画像830を生成し(S1073)、生成したプレビュー用画像830をスキャン結果として標準ドライバ503に送信する(S1043)。
以上説明したように、画像処理装置200のスキャンプログラム230は、情報処理装置100から反射型原稿用のプレビューコマンドを受け取った場合であっても、セットされている原稿の種類に応じて、プレビュー用のスキャン処理方法を適切に切り替える。これにより、情報処理装置100のアプリケーション500、標準ライブラリ501及び標準ドライバ503は、画像処理装置200にセットされている原稿の種類に関わらず、反射型原稿としてプレビュー処理を行うことができる。
図16は、図9で説明したプレビュースキャン処理によって得られたプレビュー画像に基づいて、実スキャン処理を行う場合の処理の工程を示す図である。ユーザは、図14に示すUI画面900の領域901内のプレビューイメージにより、実スキャンを行うべきコマ画像911をクロップ枠912で選択する(S1012)。この際ユーザは、コマ画像911に対しクロップ枠912のサイズを調整することができる。また、複数のコマ画像911を同時に選択することもできる。更に、カラーモード設定部903や解像度設定部904を用いて、実スキャン時の読み取りモードや読み取り解像度を設定することもできる。設定が完了すると、ユーザはスキャンボタン906をクリックする(S1013)。
コマンドを受信した標準ライブラリ501は、設定されたクロップ枠912に対応する座標情報や、解像度設定部904で設定された解像度など、実スキャン処理に必要な項目を作成し、標準ドライバ503に実スキャンを指示する(S1037)。標準ドライバ503は、上記指示をスキャンプログラム230に送信する(S1043)。
スキャンプログラム230は、メモリ内に、プレビュースキャン処理を行った時(S1065)に保存したプレビュー情報が保存されているかを確認する(S1055)。プレビュー情報が保存されていない場合は、透過原稿のスキャンの準備が整っていないことになるので、反射用原稿の実スキャンシーケンスに移動する。ここでは、プレビュー情報が保存されているとして説明を続ける。なお、プレビュー情報が保存されていない場合については、図22を用いて後述する。
次に、スキャンプログラム230は、スキャンエンジン205に画像処理装置200が透過型原稿のセット状態にあるかを問い合わせる(S1050)。スキャンエンジン205は、画像処理装置200の原稿セット状態を確認し、スキャンプログラムに応答する(S1051)。画像処理装置200が透過型原稿のセット状態にある場合、スキャンプログラム230は、スキャンエンジン205を、透過型原稿のスキャンモードに設定する。具体的には、透過用光源220を点灯させたりする。(S1052)。
次に、スキャンプログラム230は、標準ドライバ503より受信した設定項目が示す実スキャン領域に基づいて、原稿台における実スキャン領域の座標を取得(デコード)する。具体的には、図13(c)に示すような、プレビュースキャン処理で保存されたプレビュー情報の座標情報をメモリより読み出す。そして、この座標情報を参照しながら、標準ドライバ503より指示されたクロップ枠座標に基づいて、実スキャンで実際に画像を読み取る実スキャン領域を求める(S1090)。
図17は、実スキャン領域を求める方法を説明するための図である。図において、「クロップ座標」は、領域901のプレビューイメージにおいて、クロップ枠で選択されたコマ画像nの座標を示す。「スキャン座標」は、プレビュースキャン処理時にメモリに保存された、RAW画像800におけるコマ画像nの座標を示す。「イメージ座標」は、プレビュースキャン処理時にメモリに保存された、プレビュー用画像830におけるリサイズされたコマ画像nの座標を示す。「スキャン座標」、「イメージ座標」はいずれもS1065において座標情報として保存されている。
スキャンプログラム230は、まず、スキャン座標およびイメージ座標に基づいて、スケールを求める。スケールは、RAW画像800におけるコマnのサイズと、プレビュー用画像830におけるリサイズされたコマnのサイズの比を、幅と高さ(ΔX、ΔY)それぞれについて求める。また、スキャンプログラム230は、クロップ座標とイメージ座標とのオフセット量(UL’,UT’)を求める。
次に、スキャンプログラム230は、スケール(ΔX、ΔY)、オフセット量(UL’,UT’)及びスキャン座標(SL,ST)に基づいて、スキャン座標における実スキャンする領域の基準座標(UL’’,UT’’)を求める。また、クロップ座標における幅と高さの情報(W,H)と、スケール(ΔX、ΔY)から、スキャン座標における実スキャンする領域の幅と高さ(UL’’+W’-1,UT’’+H’’-1)を求める。
図18は、プレビューイメージ901のクロップ枠912の座標と、RAW画像800における読み取りの座標の対応を示す図である。コマ画像911の内側がクロップされた場合におけるRAW画像800の読み取り領域を、図17に示した計算式に基づいて算出している。なお、ここではプレビューイメージ901を生成する際に、コマ画像の回転処理を行っていない場合を示している。
図16の説明に戻る。S1090において実スキャン領域を確定すると、スキャンプログラム230は、プレビュー情報として保存してあるRAW画像のうち、実スキャン領域に対応する領域の画像を解析し、蓄光時間のようなスキャン条件を設定する。そして、設定したスキャン条件の下で、スキャンエンジン205に実スキャン動作を実行させる(S1091)。
スキャンエンジン205は指定されたスキャン条件に従って指定された領域に対する実スキャン処理を行い、取得したRAW画像をメモリに保存する(S1092)。スキャンプログラム230は、プレビュースキャン処理で保存しておいたRAW画像のうち、実スキャン領域に対応する領域の画像を解析して得られる画像処理条件に従って、実スキャン処理で取得したRAW画像に対する画像処理を行う(S1093)。
次に、スキャンエンジン205は、クロップ枠912に対応する実スキャン領域と実際にスキャンエンジン205がスキャンした領域との差分領域に白画像を補填し、ユーザが指定したクロップ枠912のサイズに対応する画像を生成する(S1094)。
スキャンプログラム230は、生成した画像を実スキャンの結果として標準ドライバ503に送信する(S1044)。標準ドライバ503は、スキャンプログラム230より受け取ったスキャン結果を標準ライブラリ501に提供する(S1038)。
なお、UI画面907において、複数の領域(クロップ枠912)についての実スキャンが指示されている場合、標準ライブラリ501はS1037において、次の領域についての実スキャン処理を指示された領域数分繰り返す。そして、全ての選択領域についてのスキャン結果が得られると、標準ライブラリ501は、取得したスキャン結果をアプリケーション500に渡す(S1021)。
その後、アプリケーション500は、受け取ったスキャン結果をメモリに保存したり(S1022)、表示部109に表示したり(S1023)など、ユーザから受けている指示に従って処理する。以上で本処理は終了する。
図19(a)および(b)は、プレビューイメージ901において、クロップ枠912が、複数のコマ画像を含むように設定された場合の、実スキャン処理の例を示す。プレビューイメージ901では、4つのコマ画像911は縦横に整列して表示されるが、RAW画像では1列に並ぶ画像である。
図19(a)は、クロップ枠912に含まれる全てのコマ画像に対して実スキャン処理を行い、それぞれのコマ画像からクロップ枠912に含まれた領域を切り取り、合成する例を示す。図19(b)は、クロップ枠912に含まれる複数のコマ画像911のうち、面積が最も大きいコマ画像911を選択し、そのコマ画像911に対してのみ実スキャン処理を行い、クロップ枠912に含まれた領域のみを取得する方法を示す。本実施形態では、どちらの方法を採用してもよいし、どちらの方法を採用するかを予めユーザが指定可能としてもよい。
図20(a)~(c)は、プレビューイメージ901において、クロップ枠912が、透過原稿の読み取り可能範囲を超えている場合の、実スキャン処理の例を示す。図20(a)は、プレビューイメージ901で指定されたクロップ枠912を、RAW画像800に投影させた状態を示している。クロップ枠912に相応する領域には、透過原稿の読み取り可能範囲外の、読み取り不可能領域914が含まれている。
図20(b)は、クロップ枠912に含まれる複数のコマ画像911のうち、面積が最も大きいコマ画像911に対して実スキャン処理を行う例を示す。一方、図20(c)は、RAW画像800のクロップ枠912に対応する領域のうち、読み取り可能範囲に含まれる全領域に対して実スキャン処理を行う例を示す。どちらの場合も、スキャンプログラム230は、得られたRAW画像に所定の画像処理を行い、クロップ枠912に相当するサイズの白画像915に処理後の画像を合成して、スキャン結果を生成する。本実施形態では、どちらの方法を採用してもよいし、どちらの方法を採用するかを予めユーザが指定可能としてもよい。
図21は、実スキャン処理を行う場合に、画像処理装置200に透過用原稿がセットされていないときの、処理の工程を示す図である。スキャンプログラム230とスキャンエンジン205との間のやりとり以外は、図16で説明した工程と同じであるので、ここでの説明は割愛する。
画像処理装置200に透過用原稿がセットされていない場合、スキャンエンジン205は、スキャンプログラム230の問い合わせに対し、透過用原稿に対する実スキャン処理が不可能であることをスキャンプログラム230に応答する(S1053)。
これを受けたスキャンプログラム230は、スキャンエンジン205を、反射用原稿のスキャンモードに設定する(S1054)。そして、スキャンプログラム230は、メモリに残っている透過型原稿用のプレビュー情報を消去する(S1070)。
次に、スキャンプログラム230は、スキャンエンジン205に標準ドライバ503より受信した設定に従って、実スキャンを指示する(S1071)。本指示を受け取ったスキャンエンジン205は、指示された設定に従って反射型スキャンを実行する(S1072)。スキャンプログラム230は、S1072で取得したRAW画像に対し、反射用原稿に適した画像処理を行い、実スキャン結果を生成する(S1073)。その後、スキャンプログラム230は、生成した実スキャン結果を標準ドライバ503に送信する(S1043)。
一方、図22は、図21のS1055において、スキャンプログラム230が、プレビュー情報が保存されていないと判定した場合の処理の工程を示す図である。プレビュー情報が保存されていない場合、透過用原稿を実スキャン処理する準備は整っていない。このため、スキャンプログラム230は、スキャンモードを切り替えたりプレビュー情報を消去したりする必要なく、そのままS1071に進み、標準ドライバ503から指示された通りの実スキャンをスキャンエンジン205に指示する。
図23は、情報処理装置100の標準ドライバ503よりスキャンコマンドを受信した際に、画像処理装置200のCPU201が実行する処理を説明するためのフローチャートである。本処理は、ROM202に記憶されているスキャンプログラム230に従って、CPU201がRAM203をワークエリアとして使用しながら実行する。
本処理が開始されると、CPU201は、スキャンコマンドがプレビュースキャン処理のコマンドであるか実スキャン処理のコマンドあるかを判定する(S2001)。そして、プレビュースキャン処理のコマンドである場合はS2002に進み、実スキャン処理のコマンドである場合はS2010に進む。
S2002において、CPU201は、画像処理装置200の原稿セット状態を確認する。そして、透過用原稿がセットされていると確認した場合はS2003に進み、透過用原稿がセットされていないと判定した場合はS2020に進む。
S2003において、CPU201は、スキャンエンジン205を、透過原稿読み取りモードに設定する。具体的には、透過用光源220を点灯させたり、スキャン解像度の設定を行ったりする。
S2004において、CPU201は、S2003で設定した条件の下で、透過用原稿のプレビュースキャン処理を実行し、取得したRAW画像をメモリに保存する。S2005において、スキャンプログラム230は、取得したRAW画像800の中から、1つ以上のコマ画像911を抽出する。
S2006において、CPU201は、抽出したコマ画像911のうち、1つのコマ画像に対し適切な画像処理条件を設定し、設定された画像処理条件で画像処理を行う。このようなコマ画像911ごとの画像処理を、S2007において全てのコマ画像911についての画像処理が終了したと判定するまで繰り返す。
全てのコマ画像911についての画像処理が終了すると、CPU201は、S2008で、画像処理されたコマ画像11を、コマ数に応じてリサイズし、合成し、プレビュー用画像830を生成する。
S2009において、CPU201は、S2004で取得したRAW画像と共に、各コマ画像911の座標情報を、プレビュー情報としてメモリに保存する。
一方、S2001において、受信したスキャンコマンドが実スキャン処理のコマンドあると判定した場合、CPU201は、S2010へ進み、メモリにプレビュー情報が保存されているか否かを確認する。プレビュー情報が確認された場合、CPU201は、S2011において、画像処理装置200の原稿セット状態を確認する。そして、透過用原稿がセットされていると確認した場合はS2012に進み、透過用原稿がセットされていないと判定した場合はS2020に進む。
S2012において、CPU201は、指示されたクロップ枠912とメモリに保存されたプレビュー情報とに基づいて、実スキャン領域を求める。
S2013において、CPU201は、S2012で求めた実スキャン領域が、透過用原稿のスキャン処理で読み取り可能な範囲にあるか否かを判定する。実スキャン領域が読み取り可能な範囲を超えている場合、CPU201は、S2014において実スキャン領域を補正する。一方、実スキャン領域が読み取り可能範囲に含まれている場合、CPU201は、S2015にスキップする。
S2015において、CPU201は、プレビュー情報のRAW画像のうち、実スキャン領域に対応する領域の画像を解析して得られる画像処理条件に従って、S2015で取得したRAW画像に対する画像処理を行う。
S2017において、CPU201は、クロップ枠912に対応する実スキャン領域と実際にスキャンした領域との差分領域に白画像を補填し、クロップ枠912のサイズに相応する画像を生成する。
S2018において、CPU201は、メモリに残っている透過用原稿のプレビュー情報を消去する。
S2002又はS2011において、透過用原稿がセットされていないと判定した場合、CPU201はS2020に進み、メモリに残っている透過用原稿のプレビュー情報を消去する。
S2021において、CPU201は、反射用原稿のスキャン処理を標準ドライバ503より受信した指示通りに実行する。
S2022において、CPU201は、S2021で取得したRAW画像に対し、反射用原稿に適した画像処理を行う。その後、CPU201は、S2023で生成した画像を情報処理装置100に転送する。以上で本処理を終了する。
以上説明した本実施形態によれば、画像処理装置が、透過型原稿のスキャン処理をサポートしていない標準ドライバに制御される場合であっても、透過型原稿を適切に読み取り適切な画像をユーザに提供することが可能となる。
なお、上述のように画像処理装置200は、情報処理装置100で使用されているドライバがベンダードライバ502の場合、図7を用いて説明した処理を実行し、標準ドライバ503の場合、図8~図23を用いて説明した処理を実行する。このような処理の切り替えは、種々の条件により行われる。例えば、画像処理装置200がスキャン指示を受信したときの通信プロトコルが、上述のベンダープロトコルであるか標準プロトコルであるかに応じて処理を切り替えてもよい。或いは、スキャン指示にドライバの種類を特定する情報が含まれており、その情報により画像処理装置200が実行する処理が切り替わってもよい。
また、ベンダードライバ502によりフィルムのスキャンが指示された場合でも、ベンダードライバ502および画像処理装置200が、図9~図23と同様の処理を行ってもよい。そして、ベンダードライバ502は、画像処理装置200から受信したスキャン画像について、標準ドライバ503では実装されていない機能を実行してもよい。これにより、画像処理装置200が、情報処理装置100において使用されているドライバにより処理を切り替える必要がなくなる。
一方で、情報処理装置100と画像処理装置200の種類によるが、情報処理装置100の方が、処理能力が高い場合がある。この場合に、ドライバの種類により画像処理装置200における処理が切り替わることで、ベンダードライバ502が使用される場合、より高速にフィルムのスキャン画像のプレビューや実スキャンを行うことができる。
<実施形態2>
図24は、本実施形態で使用する情報処理システムを示す図である。本実施形態の情報処理システムは、情報処理装置100と画像処理装置200に加え、スキャナサーバ400を含んでいる。
スキャナサーバ400において、CPU401は、ROM402に記憶されたプログラムに従いRAM403をワークエリアとしながら装置全体を制御する。スキャナサーバ400は、LANインタフェース405を介して情報処理装置100のLANインタフェース111とネットワーク接続されている。また、スキャナサーバ400は、USBインタフェース404を介して画像処理装置200のUSBインタフェース204と接続されている。
図25(a)及び(b)は、情報処理装置100、スキャナサーバ400、及び画像処理装置200における、ソフトウェア間の制御の構成を示す図である。図25(a)はスキャナサーバ400に、ベンダードライバの機能がカスタマイズして組み込まれている状態を示す。一方、図25(b)は、スキャナサーバ400が、サーバ制御部406、標準ライブラリ407、ベンダードライバ408の機能を備えている状態を示す。どちらの場合も、スキャナサーバ400は、情報処理装置100の標準ドライバ503との間では標準プロトコルを用いて情報の授受を行い、画像処理装置200のスキャンプログラム230との間では、ベンダープロトコルを用いて情報の授受を行う。
このような情報処理システムの場合、図9、図15、図16~図22に説明したスキャンプログラム230の機能は、スキャナサーバ400或いはサーバ制御部406が実現することになる。すなわち本実施形態においても、透過型原稿のスキャン処理をサポートしていない標準ドライバに制御される状況において、画像処理装置には透過型原稿を適切に読み取らせ、適切な画像をユーザに提供することが可能となる。
なお、実施形態2においても、情報処理装置100においてベンダードライバ502を使用することは可能である。ベンダードライバ502からのスキャン指示は、実施形態1と同様に、スキャナサーバ400を介さずに画像処理装置200に送信される。この場合、実施形態1と同様に、ベンダードライバ502のためのスキャン処理が実行される。この場合のスキャン指示は、上述のベンダープロトコルにより送信される。
<その他の実施形態>
本発明は、上記実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。