(57)【要約】【課題】画像処理装置で読取が行われたデータから原稿領域を検出する際の精度の低下を防ぐ画像処理システムを提供する。【解決手段】画像処理装置は、情報処理装置から所定の画像サイズが指定されている原稿の読取指示を受信した場合、読取手段に原稿を読み取らせることにより、原稿の読取データに対応する第１の画像を取得する。取得された第１の画像を原稿領域として含む所定の画像サイズの画像を情報処理装置へ送信する。【選択図】図５
2020167610.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置と画像処理装置とを含む画像処理システムであって、
前記画像処理装置は、
前記情報処理装置から、所定の画像サイズが指定されている原稿の読取指示を受信した場合、読取手段に前記原稿を読み取らせることにより、原稿の読取データに対応する第１の画像を取得する第１取得手段と、
前記第１取得手段により取得された前記第１の画像を原稿領域として含む前記所定の画像サイズの画像を前記情報処理装置へ送信する送信手段と、を備え、
前記情報処理装置は、
前記画像処理装置から送信された前記所定の画像サイズの画像から前記原稿領域としての前記第１の画像を取得する第２取得手段、を備え、
前記送信手段は、前記原稿領域に所定の画像特徴を有する付加画像が付加された、前記所定の画像サイズの画像を送信し、
前記第２の取得手段は、前記付加画像の前記所定の画像特徴に基づいて、前記原稿領域としての前記第１の画像を取得する、
ことを特徴とする画像処理システム。
【請求項２】
前記情報処理装置は、ドライバを用いて前記送信手段により送信された前記所定の画像サイズの画像を受信し、アプリケーションプログラムを用いて前記ドライバにより受信された当該画像から前記第１の画像を取得することを特徴とする請求項１に記載の画像処理システム。
【請求項３】
前記所定の画像特徴は、特定色であることを特徴とする請求項１又は２に記載の画像処理システム。
【請求項４】
前記所定の画像特徴は、複数の色を有するパターンであることを特徴とする請求項１又は２に記載の画像処理システム。
【請求項５】
前記第１取得手段による前記第１の画像の取得、前記送信手段による前記第１の画像または前記付加画像の送信、は、前記所定の画像サイズの画像の１ラインごとに行われることを特徴とする請求項１乃至４のいずれか１項に記載の画像処理システム。
【請求項６】
前記第２取得手段は、前記所定の画像サイズの画像を受信した後、前記第１の画像を取得することを特徴とする請求項５に記載の画像処理システム。
【請求項７】
前記第２取得手段は、前記所定の画像サイズの画像における１ライン分を受信すると、該１ライン分の読取データから、前記第１の画像に含まれる画像データを取得することを特徴とする請求項５に記載の画像処理システム。
【請求項８】
前記情報処理装置は、前記画像処理装置から受信した１ライン分の読取データに、前記第１の画像に含まれるデータがあるか否かを判定する判定手段、をさらに備え、
前記第２取得手段は、前記判定手段により前記第１の画像に含まれるデータがあると判定された場合、前記第２取得手段は、前記１ライン分の読取データから、前記第１の画像に含まれるデータを取得することを特徴とする請求項７に記載の画像処理システム。
【請求項９】
前記判定手段は、前記原稿領域の端部に対応するデータの有無に基づいて、前記画像処理装置から受信した１ライン分の読取データに、前記第１の画像に含まれるデータがあるか否かを判定することを特徴とする請求項８に記載の画像処理システム。
【請求項１０】
前記情報処理装置は、前記情報処理装置のオペレーティングシステムにより提供される第１のドライバと、ベンダーにより提供される第２のドライバを有し、前記第１のドライバと前記第２のドライバのそれぞれを介して前記画像処理装置との間での通信を行い、
前記付加画像の付加は、前記画像処理装置が、前記第１のドライバを介して前記読取を受信した場合に行われることを特徴とする請求項１乃至９のいずれか１項に記載の画像処理システム。
【請求項１１】
情報処理装置と通信可能な画像処理装置であって、
前記情報処理装置から、所定の画像サイズが指定されている原稿の読取指示を受信した場合、読取手段に前記原稿を読み取らせることにより、原稿の読取データに対応する第１の画像を取得する第１取得手段と、
前記第１取得手段により取得された前記第１の画像を原稿領域として含む前記所定の画像サイズの画像を前記情報処理装置へ送信する送信手段と、
を備えることを特徴とする画像処理装置。
【請求項１２】
情報処理装置と画像処理装置とを含む画像処理システムにおいて実行される画像処理方法であって、
前記画像処理装置が、
前記情報処理装置から、所定の画像サイズが指定されている原稿の読取指示を受信した場合、読取手段に前記原稿を読み取らせることにより、原稿の読取データに対応する第１の画像を取得する第１取得工程と、
前記第１取得工程において取得された前記第１の画像を原稿領域として含む前記所定の画像サイズの画像を前記情報処理装置へ送信する送信工程と、
前記情報処理装置が、
前記画像処理装置から送信された前記所定の画像サイズの画像から前記原稿領域としての前記第１の画像を取得する第２取得工程と、を有し、
前記送信工程では、前記原稿領域に所定の画像特徴を有する付加画像が付加された、前記所定の画像サイズの画像を送信し、
前記第２の取得工程では、前記付加画像の前記所定の画像特徴に基づいて、前記原稿領域としての前記第１の画像を取得する、
ことを特徴とする画像処理方法。
【請求項１３】
情報処理装置と通信可能な画像処理装置において実行される画像処理方法であって、
前記情報処理装置から、所定の画像サイズが指定されている原稿の読取指示を受信した場合、読取手段に前記原稿を読み取らせることにより、原稿の読取データに対応する第１の画像を取得する第１取得工程と、
前記第１取得工程において取得された前記第１の画像を原稿領域として含む前記所定の画像サイズの画像を前記情報処理装置へ送信する送信工程と、
を有することを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、原稿を読取可能な画像処理システム、画像処理装置、および画像処理方法に関する。
【背景技術】
【０００２】
情報処理装置に実装されるドライバとして、画像処理装置を提供しているベンダーが自ら提供するベンダードライバがある。ベンダードライバは標準規約に準拠しているが、独自の処理を盛り込むことが可能である。例えば、画像処理装置は、画像処理装置が検知した原稿サイズの情報を、ベンダードライバの独自の処理を経由して情報処理装置のアプリケーションプログラムに送信することができる。例えば、アプリケーションプログラムは、その原稿サイズの情報を用いることにより、ユーザが原稿サイズを指定することなく原稿サイズでのスキャンを自動的に行ったり、コピーを行うことができる。しかしながら、近年のセキュリティ問題やＯＳのアップグレード期間の短縮などにより、ベンダードライバではなく、ＯＳメーカーが用意する標準ドライバを使用し、標準ドライバが直接、画像処理装置を制御するケースが増えてきている。標準ドライバでは、基本機能のみが実装されており、ベンダー固有の機能はサポートされない。
【０００３】
標準ドライバを使いながら機能を拡張する方法が提案されており、特許文献１では、デバイスドライバとアプリケーションとの間でデバイスドライバに固有の設定情報を授受するための拡張インタフェースをオペレーティングシステムのインタフェースで実現し、デバイスドライバの固有の設定情報に基づく設定が可能な設定画面を表示させている。
【０００４】
一方、上記の原稿サイズの検知に関しては、原稿台全面のような、原稿より大きくスキャンした画像を入手し、画像解析により原稿部を検出する方法が知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第４３１０１７２号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１における拡張インタフェースは、標準規約内で定義されたものでない別のプログラムとして構成されるものである。従って、標準ドライバを用いたアプリケーションプログラムの実装において、他のプログラムを構成することなく、原稿サイズの検知を行うためには、上記のように原稿より大きくスキャンした読取データを入手し、画像解析により原稿領域を検出することが考えられる。しかしながら、情報処理装置で画像解析により原稿領域を検出する精度が画像処理装置で原稿領域を検知する精度よりも低い可能性がある。
【０００７】
本発明の目的は、このような従来の問題点を解決することにある。上記の点に鑑み、本発明は、読取データから原稿領域を適切に検出するための画像処理システム、画像処理装置、および画像処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明に係る画像処理システムは、情報処理装置と画像処理装置とを含む画像処理システムであって、前記画像処理装置は、前記情報処理装置から、所定の画像サイズが指定されている原稿の読取指示を受信した場合、読取手段に前記原稿を読み取らせることにより、原稿の読取データに対応する第１の画像を取得する第１取得手段と、前記第１取得手段により取得された前記第１の画像を原稿領域として含む前記所定の画像サイズの画像を前記情報処理装置へ送信する送信手段と、を備え、前記情報処理装置は、前記画像処理装置から送信された前記所定の画像サイズの画像から前記原稿領域としての前記第１の画像を取得する第２取得手段、を備え、前記送信手段は、前記原稿領域に所定の画像特徴を有する付加画像が付加された、前記所定の画像サイズの画像を送信し、前記第２の取得手段は、前記付加画像の前記所定の画像特徴に基づいて、前記原稿領域としての前記第１の画像を取得することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、読取データから原稿領域を適切に検出することができる。
【図面の簡単な説明】
【００１０】
【図１】画像処理システムの構成を示す図である。
【図２】情報処理装置におけるソフトウェアの構成を示す図である。
【図３】情報処理装置におけるソフトウェアの構成を示す図である。
【図４】原稿台に原稿を置いた状態を示す図である。
【図５】画像処理装置の処理を示すフローチャートである。
【図６】ＡＤＦの構成を示す図である。
【図７】画像処理装置の処理を示すフローチャートである。
【図８】原稿台カバーだけをスキャンした場合の読取結果を示す図である。
【図９】原稿を置いてスキャンした場合の読取結果を示す図である。
【図１０】図５の処理によって出力された読取結果を示す図である。
【図１１】情報処理装置に送信された読取結果を示す図である。
【図１２】情報処理装置の処理を示すフローチャートである。
【図１３】余白量を検出する処理を示すフローチャートである。
【図１４】余白量を検出する処理を示すフローチャートである。
【図１５】余白量を検出する処理を示すフローチャートである。
【図１６】余白量を検出する処理を示すフローチャートである。
【図１７】情報処理装置の処理を示すフローチャートである。
【図１８】特定パターンを示す図である。
【図１９】原稿を置いてスキャンした場合の読取結果を示す図である。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照して実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【００１２】
［第１実施形態］
図１は、本実施形態における画像処理システムの構成を示す図である。図１に示すように、画像処理システムは、画像処理装置１５０と情報処理装置１００を含んでいる。本実施形態においては、情報処理装置１００は、例えばＰＣであり、画像処理装置１５０は、例えばスキャナである。画像処理装置１５０は、例えば複数の機能が一体化されたＭＦＰ（Ｍｕｌｔｉｆｕｎｃｔｉｏｎａｌ  Ｐｅｒｉｐｈｅｒａｌ）として構成されても良い。
【００１３】
情報処理装置１００は、入力インタフェース１０２、ＣＰＵ１０３、ＲＯＭ１０４、ＲＡＭ１０５、外部記憶装置１０６、出力インタフェース１０８、表示部１０７、キーボード１０１、マウス１０９、ネットワークインタフェース１１０を有する。ＣＰＵ１０３は、情報処理装置１００を統括的に制御する。ネットワークインタフェース１１０は、ネットワークケーブル１９０を介して画像処理装置１５０と相互に通信可能に接続されている。図１では、ネットワークケーブル１９０として示しているが、ＬＡＮ等のネットワークでルータやハブ等を介しても良く、また、有線や無線媒体を介して相互に通信可能に構成されても良い。
【００１４】
ＲＯＭ１０４は、読出専用のメモリであり、例えば初期化プログラムが記憶されている。外部記憶装置１０６には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）、図２のアプリケーションプログラム２００、標準ライブラリ２０１、ベンダードライバ２１０、図３の標準ドライバ３１０、その他各種のデータが保存されている。ＲＡＭ１０５は、読出し／書込み可能なメモリであり、ワークメモリとして用いられる場合には、外部記憶装置１０６に記憶されている各種プログラムがロードされる。本実施形態における情報処理装置１００の動作は、例えば、ＲＯＭ１０４に記憶されたプログラムがＲＡＭ１０５にロードして実行されることにより実現される。
【００１５】
画像処理装置１５０は、ネットワークインタフェース１５１、ＲＡＭ１５２、スキャンエンジン１５３、ＲＯＭ１５４、ＣＰＵ１５５を有する。ＣＰＵ１５５は、画像処理装置１５０を統括的に制御する。ネットワークインタフェース１５１は、ネットワークケーブル１９０を介して情報処理装置１００と相互に通信可能に接続される。ＲＡＭ１５２は、ＣＰＵ１５５の主メモリとワークメモリとして用いられ、例えば、受信したスキャンジョブを処理するための各種のデータを保存する。本実施形態における画像処理装置１５０の動作は、例えば、ＲＯＭ１５４に記憶されたプログラムがＲＡＭ１５２にロードして実行されることにより実現される。
【００１６】
スキャンエンジン１５３は、ＲＡＭ１５２に保存されたスキャンジョブに基づきスキャンを行う。スキャンエンジン１５３（スキャナ）は、スキャンするための光学センサーやセンサーを駆動するモーターなどを含んで構成される。スキャンエンジン１５３は、不図示の原稿台に原稿をおいてセンサーを駆動することでスキャンする構成や、スキャンする原稿を自動的に送る自動原稿給送装置（ＡＤＦ：Ａｕｔｏ Ｄｏｃｕｍｅｎｔ Ｆｅｅｄｅｒ）として構成される場合がある。また、ＡＤＦとして構成される場合にも、原稿の片面だけを読む片面ＡＤＦと、光学センサーを２つ用いて同時に原稿の両面を読み取る両面ＡＤＦとして構成される場合がある。
【００１７】
本実施形態では、一例として、情報処理装置１００と画像処理装置１５０の構成を上記のようにしているが、各装置が有する機能に応じて、他の機能ブロックを適宜有する。
【００１８】
図２及び図３は、情報処理装置１００におけるソフトウェアの構成の一例を示す図である。情報処理装置１００は、前述のＯＳで制御されており、その上でアプリケーションプログラム２００が動作している。アプリケーションプログラム２００は、画像処理装置１５０から画像データを取得して保存する機能を有する。
【００１９】
アプリケーションプログラム２００がスキャナなどの画像処理装置１５０にアクセスする際には、ＯＳメーカーや標準化団体が定める標準規約を用いて行うことできる。アプリケーションプログラム２００が標準規約を用いて画像処理装置１５０にアクセスする際には、標準規約に定義されているＡｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ（以下、標準ＡＰＩ２０２）を使用する。
【００２０】
アプリケーションプログラム２００は、画像処理装置１５０にアクセスするには、ＯＳに含まれている標準ライブラリ２０１を自身のプログラムに組み込み、その中に定義されている標準ＡＰＩ２０２を呼び出す。標準ＡＰＩ２０２の呼び出しに応じて、ＯＳの標準ライブラリ２０１は、画像処理装置１５０に対応するドライバをロードする。ドライバは、ドライバＡＰＩ２０３で求められる機能に応じて、画像処理装置１５０にアクセスし所望の動作を実現する。
【００２１】
ドライバは、図２で示すようにベンダーが作成し提供するベンダードライバ２１０であっても良いし、図３で示すように標準プロトコル３１１で画像処理装置１５０にアクセスするＯＳメーカーが作成しＯＳに含まれている標準ドライバ３１０であっても良い。標準ドライバ３１０は、本実施形態ではＯＳメーカーが作成したものとしているが、それ以外の標準規約に準拠したドライバであっても良い。また、標準ＡＰＩ２０２と標準ドライバ３１０が一体化されてドライバが存在しない場合でも、本実施形態では、アプリケーションプログラム２００から見た場合には同様として扱う。
【００２２】
図２に示すベンダードライバ２１０と、図３に示す標準ドライバ３１０とは、アプリケーションプログラム２００から見た場合には、標準的な機能を実装する範囲では差がない。ここで、アプリケーションプログラム２００が、ＯＳ標準で提供される画像処理装置１５０の制御に対する使いやすさを向上させたり、機能アップを実現したりする場合は、ベンダーは、図２に示すベンダードライバ２１０に対して独自の拡張をすることにより、ベンダー固有のＶｅｎｄｏｒ  Ｃｏｍｍａｎｄ２１１を発行させることができ、アプリケーションプログラム２００は、それを使用することができる。
【００２３】
一方、図３に示す標準ドライバ３１０では、画像処理装置１５０側にも標準プロトコル３１１しか実装されておらず、画像処理装置１５０固有のコマンドを実行することができない。アプリケーションプログラム２００がベンダードライバ２１０で拡張されていた機能を呼び出そうとしても、標準ドライバ３１０からは無視されるか、若しくはエラーとされる。
【００２４】
図４は、画像処理装置１５０で原稿台４０１に原稿４００を置いてスキャンする構成を上部から見た図である。原稿４００は、原稿台４０１に置かれる。図４では、突き当て４０４に接するように、原稿４００がセットされている。図４では、突き当て４０４は、画像処理装置１５０の左奥とされているが、４隅のいずれかでも良い。原稿台４０１は、ガラスなど透明な素材で構成され、スキャナセンサー４０２が主走査方向４０５に移動しながら原稿を読み取る。原稿の読取は、不図示であるが、原稿台４０１をカバーする蓋のような原稿台カバーを閉じた状態で行われる。原稿台カバーは、スキャンされるスキャンデータの色への影響を少なくするために、平滑で白色であることが多い。
【００２５】
読取可能な範囲は、スキャナセンサー４０２の幅と原稿台４０１の大きさで決定される。図４では、原稿台４０１全面の最大幅（Ｍａｘ  Ｗｉｄｔｈ）４０６、最大長（Ｍａｘ Ｈｅｉｇｈｔ）４０７分が読取可能である。また、原稿４００をスキャンするスキャナセンサー４０２とは別に、特定の位置の原稿の有無だけを検知する原稿検知センサー４０３がある。原稿検知センサー４０３は、特定の位置に原稿があるか否かを識別できればよいので可視光を検知する構成でなくてもよい。例えば、受光部を原稿台カバー側にして原稿によって光がさえぎられることを検知するようなものでも良い。原稿検知センサー４０３は、原稿台４０１の複数の位置に設置され、それぞれの位置における原稿４００の有無の検知結果の組み合わせから、最終的な定型原稿サイズを決定することができる。
【００２６】
図５は、本実施形態における画像処理装置１５０の処理を示すフローチャートである。図５の処理は、例えば、ＣＰＵ１５５がＲＯＭ１５４に記憶されたプログラムをＲＡＭ１５２にロードして実行することにより実現される。
【００２７】
Ｓ５０１において、ＣＰＵ１５５は、情報処理装置１００で動作するアプリケーションプログラム２００からのスキャンの要求（読取指示）を受信する。この読取指示には、スキャンする画像の画像サイズ（スキャン要求サイズ）が、アプリケーション２００により指定されている。ここで、スキャン要求サイズの一例として、開始位置（ｘ，ｙ）＝（０，０）、幅及び長さ（ｗｉｄｔｈ，ｈｅｉｇｈｔ）＝（ｍａｘＸ，ｍａｘＹ）が指定されているとする。また、このとき、画像処理装置１５０の原稿台４０１には、原稿４００が置かれている。ＭａｘＸは、上記のＭａｘＷｉｄｔｈに対応し、ＭａｘＹは、上記のＭａｘＨｅｉｇｈｔに対応する。
【００２８】
Ｓ５０２において、ＣＰＵ１５５は、原稿検知センサー４０３による原稿サイズの検知を行い、Ｓ５０３において、スキャン要求サイズが原稿サイズより大きいか否かを判定する。ここで、スキャン要求サイズが原稿サイズ以下である場合には、Ｓ５１０において、ＣＰＵ１５５は、通常のスキャン動作を行い、その後、図５の処理を終了する。一方、スキャン要求サイズが原稿サイズより大きい場合には、Ｓ５０４に進む。
【００２９】
Ｓ５０４において、ＣＰＵ１５５は、原稿検知センサー４０３で検知された原稿サイズのスキャンを指示する。Ｓ５０５において、ＣＰＵ１５５は、主走査方向４０５の座標（長さに対応）を表す変数Ｙを記憶領域に確保し、変数Ｙを０に初期化する。以降、変数Ｙが検知された原稿サイズの長さ（一例として、Ａ４サイズに対応するＡ４Ｙとする）となるまで、Ｓ５０７〜５０８の処理が繰り返される。
【００３０】
Ｓ５０６において、ＣＰＵ１５５は、変数Ｙの現在値がＡ４Ｙより小さいと判定した場合、Ｓ５０７において、原稿サイズの主走査１ライン分のスキャンデータ（読取データ）を取得する。そして、Ｓ５０８において、ＣＰＵ１５５は、Ｓ５０７で取得されたスキャンデータに対して、ｍａｘＸと原稿サイズの幅との差分の幅を有する特定色の画像データ（付加画像データ）を追加し、その追加後のスキャンデータを情報処理装置１００に送信する。このとき、標準ドライバ３１０に対して、標準プロトコルにより送信が行われる。特定色については後述する。Ｓ５０８の後、Ｓ５０９において、ＣＰＵ１５５は、変数Ｙの値をインクリメントし、Ｓ５０６の処理が繰り返される。
【００３１】
Ｓ５０６で変数Ｙの現在値がＡ４Ｙ以上であると判定された場合、Ｓ５１１に進み、ＣＰＵ１５５は、変数Ｙの現在値がｍａｘＹより小さいか否かを判定する。ここで、変数Ｙの現在値がｍａｘＹより小さいと判定された場合、Ｓ５１２において、主走査１ライン分の特定色のデータを情報処理装置１００に送信する。このとき、標準ドライバ３１０に対して、標準プロトコルにより送信が行われる。Ｓ５１２の後、Ｓ５０９の処理が行われる。Ｓ５１１で変数Ｙの現在値がｍａｘＹ以上であると判定された場合、図５の処理を終了する。
【００３２】
なお、ＣＰＵ１５５が、Ｓ５０１で受信したスキャン指示に使用されたプロトコル等で、該スキャン指示がベンダードライバ２１０により発行されたものか、標準ドライバ３１０により発行されたものか区別できるようにしてもよい。この場合、図５に示した処理は、標準ドライバ３１０によりスキャン指示が発行された場合に実行されてもよい。一方、スキャン指示がベンダードライバ２１０により発行された場合、ＣＰＵ１５５は、ベンダードライバ２１０が使用するプロトコルで受信可能な特別なコマンドにより、センサーによる原稿領域の検知結果を通知してもよい。
【００３３】
ここで、特定色について説明する。基本的に、特定色は、原稿を置かずにスキャナにより読み取られた結果、連続して出現し難い色であれば良い。即ち、原稿台のカバーを閉じたときに原稿台を覆う部材の色と、情報処理装置１００で区別可能な色であれば良い。例えば、本実施形態では、１００％の完全な白色を特定色とする。１００％の完全な白とは、８ビットのＲＧＢの場合、Ｒ＝２５５、Ｇ＝２５５、Ｂ＝２５５の画素値である。これは、情報処理装置１００において、原稿サイズに切り出す処理を行わずに、特定色が含まれた出力結果をそのまま使うケースも想定され得るからである。つまり、上記のように、原稿台を覆う部材の色との差分が大きい極端なパターンや模様の方が、情報処理装置１００における原稿領域の切り出しの精度は向上する。ただ一方で、このようなパターンや模様は、原稿領域の切り出しが行われなかった際に、原稿台を覆う部材との色の違いが目立つため、ユーザにとって望ましい結果にならない。そのため、付加画像データの特定色は、原稿が置かれていない領域（原稿台カバーがスキャン対象となる領域）と区別可能であり、且つ該領域に近いと想定される色にしておくのが望ましい。また、スキャナの構成にもよるが、通常はスキャンの結果として完全な白が出力されることが少ないからである。これは、完全な白が出現するような構成であれば、飽和し易くなって情報を消失してしまうことになるため、通常は完全な白が出力されることが少なくなるように構成されている。さらには、スキャン結果の特徴によるものである。図８、図９、図１０を参照しながら、スキャン結果の特徴について説明する。
【００３４】
図８は、原稿４００を置かずに原稿台カバーだけをスキャンした場合の読取結果を示す図である。図８は、原稿台カバーをスキャンした読取結果８０１を示しているが、スキャナの解像度の方が原稿台カバー自体の平滑性を上回るため、原稿台カバーの平滑さの差に起因する薄い濃淡の画像が出力される結果となる。さらに、原稿台カバーの汚れや、ほこりやごみによって発生するノイズによっても、完全な白とは異なる結果が出力される。
【００３５】
図９は、原稿４００を置いてスキャンした場合の読取結果を示す図である。図９は、原稿の部分であり実際には様々な内容が存在し得るが、どんなに白い白紙を設置したとしても、領域９０２に示すように、紙上に存在する厚さの差に起因する陰影が淡く読取結果に現れることが多い。また、図８と同様、原稿台カバーの部分については、領域９０１に示すような陰影が現れる。つまり、読取結果において、全体的に完全な白で再現されるような領域は発生し難いという特徴がある。
【００３６】
一方、図１０は、図５の処理によって出力された読取結果を示す図である。領域１００１は、画像処理装置１５０のＳ５０８及びＳ５１２によって特定色にされているので、図８及び図９の陰影の要素が現れず、完全な白が連続した領域となる。そのため、図１０に示す完全な白の付加画像データと、図９の領域９０１の画像データを区別することが可能である。
【００３７】
図６は、画像処理装置１５０において、自動的に原稿を給紙するＡＤＦの構成を示す図である。ＡＤＦの構成では、スキャナセンサー４０２は固定されており、原稿４００を原稿送りローラー４１０で移動させることにより、原稿４００をスキャンする。原稿４００の位置は、一対の原稿ガイド４１１で調整される。図６に示すように、原稿ガイド４１１は、原稿４００の両側から幅を調整するように構成されているが、片側だけを調整可能なように構成しても良い。原稿幅センサー４１２は、設置された原稿４００の横幅（原稿幅）を検知する。原稿幅を検知する方法としては、他の構成が用いられても良く、給紙口にいくつかの原稿の有無を判定するセンサーを設置してその有無から幅を検知したり、原稿ガイド４１１そのものの位置を幅として検出可能なように構成しても良い。
【００３８】
ＡＤＦの構成の場合、ＡＤＦの原稿が原稿口に差し込むように設置され、その状態での原稿の終端に対するセンサーはない。そのため、ＡＤＦの構成の場合、原稿幅は検知可能であるが、原稿の長さについてはスキャン前に検知することはできない。実際の原稿の長さは、スキャンを行い、ＡＤＦの原稿検知センサー４０３が原稿の１ページの給送終了を検知した時点で取得され得る。このため、スキャン前に原稿サイズを確定してスキャン動作を行いたい場合には、スキャン開始時に横幅から一致する定型原稿サイズを推定し、その推定したサイズを検知したサイズとして取得するようにしても良い。また、ＡＤＦの構成の場合、原稿の終端までの読み込みを終了したかを識別可能な原稿検知センサーを有し、該当するページの原稿の終端を該当ページの原稿がなくなった状態として把握することが可能である。よって、原稿がなくなった状態まで読み込んだライン数を原稿の長さとして取得するようにしても良い。
【００３９】
図７は、図６に示すＡＤＦの構成の場合における画像処理装置１５０の処理を示すフローチャートである。図７の処理は、例えば、ＣＰＵ１５５がＲＯＭ１５４に記憶されたプログラムをＲＡＭ１５２にロードして実行することにより実現される。
【００４０】
Ｓ７０１において、ＣＰＵ１５５は、情報処理装置１００で動作するアプリケーションプログラム２００からのＡＤＦによるスキャンの要求（読取指示）を受信する。ここで、スキャンの要求の一例として幅＝Ｍａｘ  ｗｉｄｔｈ（図６の幅４０６に対応）が指定されているとする。また、このとき、画像処理装置１５０のＡＤＦには、原稿４００がセットされている。
【００４１】
Ｓ７０２において、ＣＰＵ１５５は、原稿幅センサー４１２による原稿サイズ（幅）の検知を行い、Ｓ７０３において、原稿幅センサー４１２で検知された原稿サイズのスキャンを指示する。ここでは、検知された原稿サイズをＡ４サイズに対応するＡ４Ｘ（Ａ４Ｘ＜Ｍａｘ  ｗｉｄｔｈ）とする。
【００４２】
Ｓ７０４において、ＣＰＵ１５５は、主走査方向４０５の座標（長さに対応）を表す変数Ｙを記憶領域に確保し、変数Ｙを０に初期化する。以降、変数ＹがＨｅｉｇｈｔとなるまで、Ｓ７０６〜Ｓ７０８の処理が繰り返される。ここで、Ｈｅｉｇｈｔとは、例えば、上述した横幅から一致する定型原稿サイズである。
【００４３】
Ｓ７０５において、ＣＰＵ１５５は、変数Ｙの現在値がＨｅｉｇｈｔより小さいと判定した場合、Ｓ７０６において、原稿センサー４０３により原稿の後端を検出したか否かを判定する。ここで、原稿の後端を検出していないと判定された場合、Ｓ７０７に進み、ＣＰＵ１５５は、原稿サイズの主走査１ライン分のスキャンデータ（読取データ）を取得する。そして、Ｓ７０８において、ＣＰＵ１５５は、Ｓ７０７で取得されたスキャンデータに対して、（Ｍａｘ  ｗｉｄｔｈ−Ａ４Ｘ）／２、分の幅を有する特定色のデータ（付加データ）を図６の中心点４１５を挟んで両側端それぞれに追加する。そして、ＣＰＵ１５５は、その追加後のスキャンデータを情報処理装置１００に送信する。Ｓ７０８の後、Ｓ７０９において、ＣＰＵ１５５は、変数Ｙの値をインクリメントし、Ｓ７０５の処理が繰り返される。
【００４４】
Ｓ７０６で原稿の後端を検出したと判定された場合、Ｓ７１１に進み、ＣＰＵ１５５は、主走査１ライン分の特定色のデータを情報処理装置１００に送信する。Ｓ７１１の後、Ｓ７０９の処理が行われる。
【００４５】
Ｓ７０５で変数Ｙの現在値がＨｅｉｇｈｔ以上であると判定された場合、Ｓ７１０に進み、ＣＰＵ１５５は、原稿検知センサーにより、次のページの有無を判定する。Ｓ７１０で次のページがないと判定された場合、図７の処理を終了し、次のページがあると判定された場合、Ｓ７０２の処理が繰り返される。
【００４６】
なお、画像処理装置１５０がＡＤＦに原稿幅センサーがなく、原稿幅を検知できないものの原稿検知センサーにより原稿長さが検知できる場合には、原稿長さが定型サイズの横幅を推定するようにしても良い。
【００４７】
図１１は、図５及び図７の処理により、情報処理装置１００に送信された読取結果の一例を示す図である。図１１では、斜線で塗りつぶされた領域１１０４が原稿４００の読取結果（原稿領域）である。原稿４００は、図４の構成で突き当てに置かれる場合には、原稿サイズ検知の結果は、上下のいずれか、左右のいずれかで行われる。その場合には、図１１のように、原稿領域以外の領域である、Ｔｏｐ余白量１１０２、Ｂｏｔｔｏｍ余白量１１０３、Ｌｅｆｔ余白量１１００、Ｒｉｇｈｔ余白量１１０１で特定される４つの余白領域が全て存在することはなく、隣接する２つの余白領域のみが存在することになる。当然、突き当て位置によって、どの２つの余白領域かは異なることになる。また、図６のＡＤＦの構成の場合には、Ｔｏｐ余白量１１０２の余白領域は常に０となり、中心点４１５を中央として原稿４００が設置される場合には、Ｌｅｆｔ余白量１１００、Ｒｉｇｈｔ余白量１１０１、Ｂｏｔｔｏｍ余白量１１０３で特定される３つの余白領域が存在することになる。このように、種種の形態に応じて、余白領域の存在のし方は異なるものの、図１１は、本実施形態の動作の説明上、上記の４つの余白領域を全て表している。実際の構成においては、４つの空白領域全てを対象とすることはなく、構成（図４の構成か若しくは図６の構成か）や、突き当て位置に応じて、存在する余白領域を対象とする。
【００４８】
図１２は、情報処理装置１００において実行される処理を示すフローチャートである。なお、図１２の処理は、アプリケーション２００に含まれるプログラムにより実現される。例えば、ＣＰＵ１０３がＲＯＭ１０４に記憶された、アプリケーション200に含まれるプログラムをＲＡＭ１０５にロードして実行することにより実現される。図１２の処理は、情報処理装置１００が画像処理装置１５０から読取結果を全て受信すると開始される。情報処理装置１００は、画像処理装置１５０が検知した原稿サイズを検出し、その検出結果に基づいて、原稿サイズでのスキャン結果を出力する。
【００４９】
Ｓ１２０１において、ＣＰＵ１０３は、Ｔｏｐ余白量１１０２を取得し、Ｓ１２０２において、Ｔｏｐ余白量１１０２が０であるか否かを判定する。Ｓ１２０１の処理については後述する。ここで、Ｔｏｐ余白量１１０２が０であると判定された場合、Ｓ１２０４に進む。一方、Ｔｏｐ余白量１１０２が０でないと判定された場合、Ｓ１２０３において、ＣＰＵ１０３は、Ｔｏｐ余白量１１０２分の行を図１１の読取結果の上端から削除し、Ｓ１２０４に進む。
【００５０】
Ｓ１２０４において、ＣＰＵ１０３は、Ｂｏｔｔｏｍ余白量１１０３を取得し、Ｓ１２０５において、Ｂｏｔｔｏｍ余白量１１０３が０であるか否かを判定する。Ｓ１２０４の処理については後述する。ここで、Ｂｏｔｔｏｍ余白量１１０３が０であると判定された場合、Ｓ１２０７に進む。一方、Ｂｏｔｔｏｍ余白量１１０３が０でないと判定された場合、Ｓ１２０６において、ＣＰＵ１０３は、Ｂｏｔｔｏｍ余白量１１０３分の行を図１１の読取結果の下端から削除し、Ｓ１２０７に進む。
【００５１】
Ｓ１２０７において、ＣＰＵ１０３は、Ｌｅｆｔ余白量１１００を取得し、Ｓ１２０８において、Ｌｅｆｔ余白量１１００が０であるか否かを判定する。Ｓ１２０７の処理については後述する。ここで、Ｌｅｆｔ余白量１１００が０であると判定された場合、Ｓ１２１０に進む。一方、Ｌｅｆｔ余白量１１００が０でないと判定された場合、Ｓ１２０９において、ＣＰＵ１０３は、Ｌｅｆｔ余白量１１００分の列を図１１の読取結果の左端から削除し、Ｓ１２１０に進む。
【００５２】
Ｓ１２１０において、ＣＰＵ１０３は、Ｒｉｇｈｔ余白量１１０１を取得し、Ｓ１２１１において、Ｒｉｇｈｔ余白量１１０１が０であるか否かを判定する。Ｓ１２１０の処理については後述する。ここで、Ｒｉｇｈｔ余白量１１０１が０であると判定された場合、図１２の処理を終了する。一方、Ｒｉｇｈｔ余白量１１０１が０でないと判定された場合、Ｓ１２１２において、ＣＰＵ１０３は、Ｒｉｇｈｔ余白量１１０１分の列を図１１の読取結果の右端から削除し、その後、図１２の処理を終了する。
【００５３】
図１２の処理により、画像処理装置１５０が検知した原稿サイズのスキャンデータが情報処理装置１００において抽出される。
【００５４】
図１３は、Ｓ１２０１の処理を示すフローチャートである。Ｓ１３０１において、ＣＰＵ１０３は、余白量を表す変数Ｔｏｐを記憶領域に確保し、変数Ｔｏｐを０に初期化する。Ｓ１３０２において、ＣＰＵ１０３は、長さ方向の位置を表す変数Ｙを記憶領域に確保し、変数Ｙを０に初期化する。変数Ｙ＝０の位置は、例えば図１１の読取結果の上端に対応する。
【００５５】
Ｓ１３０３において、ＣＰＵ１０３は、変数Ｙの現在値がＨｅｉｇｈｔより小さいか否かを判定する。以下、Ｈｅｉｇｈｔとは、図４のＭａｘ  Ｈｅｉｇｈｔに対応する。変数Ｙの現在値がＨｅｉｇｈｔ以上であると判定された場合、即ち、判定処理が上端から下端まで到達した場合には、図１３の処理を終了する。一方、変数Ｙの現在値がＨｅｉｇｈｔより小さいと判定された場合にはＳ１３０４に進む。
【００５６】
Ｓ１３０４において、ＣＰＵ１０３は、幅方向の位置を表す変数Ｘを記憶領域に確保し、変数Ｘを０に初期化する。変数Ｘ＝０の位置は、例えば図１１の読取結果の左端に対応する。
【００５７】
Ｓ１３０５において、ＣＰＵ１０３は、変数Ｘの現在値がＷｉｄｔｈより小さいか否かを判定する。以下、Ｗｉｄｔｈとは、図４のＭａｘ  Ｗｉｄｔｈに対応する。変数Ｘの現在値がＷｉｄｔｈより小さいと判定された場合には、Ｓ１３０６に進み、ＣＰＵ１０３は、その座標（Ｘ，Ｙ）のスキャンデータの画素が表す色が特定色であるか否かを判定する。特定色であると判定された場合、Ｓ１３０９に進み、ＣＰＵ１０３は、変数Ｘの値をインクリメントし、Ｓ１３０５の処理が繰り返される。一方、特定色でないと判定された場合、図１３の処理を終了する。特定色でないと判定された場合とは、即ち、その行からは原稿のスキャンデータが存在するということを意味している。
【００５８】
Ｓ１３０５で変数Ｘの現在値がＷｉｄｔｈ以上であると判定された場合、Ｓ１３０７において、ＣＰＵ１０３は、変数Ｔｏｐの値をインクリメントし、Ｓ１３０８において、変数Ｙの値をインクリメントし、その後、Ｓ１３０３の処理が繰り返される。
【００５９】
図１４は、Ｓ１２０４の処理を示すフローチャートである。Ｓ１４０１において、ＣＰＵ１０３は、余白量を表す変数Ｂｏｔｔｏｍを記憶領域に確保し、変数Ｂｏｔｔｏｍを０に初期化する。Ｓ１４０２において、ＣＰＵ１０３は、長さ方向の位置を表す変数Ｙを記憶領域に確保し、変数ＹをＨｅｉｇｈｔ−１に初期化する。変数Ｙ＝Ｈｅｉｇｈｔ−１は、例えば図１１の読取結果の下端に対応する。
【００６０】
Ｓ１４０３において、ＣＰＵ１０３は、変数Ｙの現在値が０以上であるか否かを判定する。変数Ｙの現在値が０以上でないと判定された場合、即ち、判定処理が下端から上端まで到達した場合には、図１４の処理を終了する。一方、変数Ｙの現在値が０以上であると判定された場合にはＳ１４０４に進む。
【００６１】
Ｓ１４０４において、ＣＰＵ１０３は、幅方向の位置を表す変数Ｘを記憶領域に確保し、変数Ｘを０に初期化する。変数Ｘ＝０の位置は、例えば図１１の読取結果の左端に対応する。
【００６２】
Ｓ１４０５において、ＣＰＵ１０３は、変数Ｘの現在値がＷｉｄｔｈより小さいか否かを判定する。変数Ｘの現在値がＷｉｄｔｈより小さいと判定された場合には、Ｓ１４０６に進み、ＣＰＵ１０３は、その座標（Ｘ，Ｙ）のスキャンデータの画素が表す色が特定色であるか否かを判定する。特定色であると判定された場合、Ｓ１４０９に進み、ＣＰＵ１０３は、変数Ｘの値をインクリメントし、Ｓ１４０５の処理が繰り返される。一方、特定色でないと判定された場合、図１４の処理を終了する。特定色でないと判定された場合とは、即ち、その行からは原稿のスキャンデータが存在するということを意味している。
【００６３】
Ｓ１４０５で変数Ｘの現在値がＷｉｄｔｈ以上であると判定された場合、Ｓ１４０７において、ＣＰＵ１０３は、変数Ｂｏｔｔｏｍの値をインクリメントし、Ｓ１４０８において、変数Ｙの値をデクリメントし、その後、Ｓ１４０３の処理が繰り返される。
【００６４】
図１５は、Ｓ１２０７の処理を示すフローチャートである。Ｓ１５０１において、ＣＰＵ１０３は、余白量を表す変数Ｌｅｆｔを記憶領域に確保し、変数Ｌｅｆｔを０に初期化する。Ｓ１５０２において、ＣＰＵ１０３は、幅方向の位置を表す変数Ｘを記憶領域に確保し、変数Ｘを０に初期化する。変数Ｘ＝０は、例えば図１１の読取結果の左端に対応する。
【００６５】
Ｓ１５０３において、ＣＰＵ１０３は、変数Ｘの現在値がＷｉｄｔｈより小さいか否かを判定する。変数Ｘの現在値がＷｉｄｔｈ以上であると判定された場合、即ち、判定処理が左端から右端まで到達した場合には、図１５の処理を終了する。一方、変数Ｘの現在値がＷｉｄｔｈより小さいと判定された場合にはＳ１５０４に進む。
【００６６】
Ｓ１５０４において、ＣＰＵ１０３は、長さ方向の位置を表す変数Ｙを記憶領域に確保し、変数Ｙを０に初期化する。変数Ｙ＝０の位置は、例えば図１１の読取結果の上端に対応する。
【００６７】
Ｓ１５０５において、ＣＰＵ１０３は、変数Ｙの現在値がＨｅｉｇｈｔより小さいか否かを判定する。変数Ｙの現在値がＨｅｉｇｈｔより小さいと判定された場合には、Ｓ１５０６に進み、ＣＰＵ１０３は、その座標（Ｘ，Ｙ）のスキャンデータの画素が表す色が特定色であるか否かを判定する。特定色であると判定された場合、Ｓ１５０９に進み、ＣＰＵ１０３は、変数Ｙの値をインクリメントし、Ｓ１５０５の処理が繰り返される。一方、特定色でないと判定された場合、図１５の処理を終了する。特定色でないと判定された場合とは、即ち、その列からは原稿のスキャンデータが存在するということを意味している。
【００６８】
Ｓ１５０５で変数Ｙの現在値がＨｅｉｇｈｔ以下であると判定された場合、Ｓ１５０７において、ＣＰＵ１０３は、変数Ｌｅｆｔの値をインクリメントし、Ｓ１５０８において、変数Ｘの値をインクリメントし、その後、Ｓ１５０３の処理が繰り返される。
【００６９】
図１６は、Ｓ１２１０の処理を示すフローチャートである。Ｓ１６０１において、ＣＰＵ１０３は、余白量を表す変数Ｒｉｇｈｔを記憶領域に確保し、変数Ｒｉｇｈｔを０に初期化する。Ｓ１６０２において、ＣＰＵ１０３は、幅方向の位置を表す変数Ｘを記憶領域に確保し、変数ＸをＷｉｄｔｈ−１に初期化する。変数Ｘ＝Ｗｉｄｔｈ−１は、例えば図１１の読取結果の右端に対応する。
【００７０】
Ｓ１６０３において、ＣＰＵ１０３は、変数Ｘの現在値が０以上であるか否かを判定する。変数Ｘの現在値が０以上でないと判定された場合、即ち、判定処理が右端から左端まで到達した場合には、図１６の処理を終了する。一方、変数Ｘの現在値が０以上であると判定された場合にはＳ１６０４に進む。
【００７１】
Ｓ１６０４において、ＣＰＵ１０３は、長さ方向の位置を表す変数Ｙを記憶領域に確保し、変数Ｙを０に初期化する。変数Ｙ＝０の位置は、例えば図１１の読取結果の上端に対応する。
【００７２】
Ｓ１６０５において、ＣＰＵ１０３は、変数Ｙの現在値がＨｅｉｇｈｔより小さいか否かを判定する。変数Ｙの現在値がＨｅｉｇｈｔより小さいと判定された場合には、Ｓ１６０６に進み、ＣＰＵ１０３は、その座標（Ｘ，Ｙ）のスキャンデータの画素が表す色が特定色であるか否かを判定する。特定色であると判定された場合、Ｓ１６０９に進み、ＣＰＵ１０３は、変数Ｙの値をインクリメントし、Ｓ１６０５の処理が繰り返される。一方、特定色でないと判定された場合、図１６の処理を終了する。特定色でないと判定された場合とは、即ち、その列からは原稿のスキャンデータが存在するということを意味している。
【００７３】
Ｓ１６０５で変数Ｙの現在値がＨｅｉｇｈｔ以下であると判定された場合、Ｓ１６０７において、ＣＰＵ１０３は、変数Ｒｉｇｈｔの値をインクリメントし、Ｓ１６０８において、変数Ｘの値をデクリメントし、その後、Ｓ１６０３の処理が繰り返される。
【００７４】
以上のように、本実施形態によれば、画像処理装置１５０において、スキャンされた原稿領域のスキャンデータの周囲（若しくは、周囲の一部）に特定色の画像データが追加され、情報処理装置１００のスキャン要求サイズの画像データとされる。そして、その追加後のデータが情報処理装置１００に送信される。そのような構成により、画像処理装置１５０において原稿領域の切り出し機能がなくても、情報処理装置１００において、画像処理装置１５０でのスキャン領域の検知精度に対応する精度で、原稿領域の切り出しを行うことができる。
【００７５】
そして、上記のように追加（付加）される画像データは、原稿の画像データと同じデータ形式（例えば特別なコマンドが付与されることなく）で情報処理装置１００に送信される。即ち、情報処理装置１００は、図１１に示した画像の受信において、原稿の画像データと付加された画像データとで区別する必要がない。そして、図１１に示した画像について、図１２に示した処理を実行することで、原稿領域の切り出しを行うことができる。そのため、画像処理装置１５０から情報処理装置１００に原稿領域を通知するために（言い換えればセンサーによる原稿検知の結果を通知するために）、画像データを送信するための処理以外の、特別なコマンド等は不要とすることができる。そのため、標準ドライバ３１０のように、標準プロトコル３１１しか実装されていなくても、その標準プロトコル３１１で画像データの受信が行えれば、情報処理装置１１０において、原稿領域が切り出された画像を取得することができる。
【００７６】
また上記の例では、１ラインずつ情報処理装置１００に送信される例を示した。しかしこれに限らず、複数ライン（例えば画像全体）の画像データが画像処理装置１５０に記憶された後、情報処理装置１００に画像データが送信されてもよい。この場合、送信される画像データにおいて、原稿領域と付加された部分とを含む、１枚の画像に対応する画像データとして送信される。そのため、標準ドライバ３１０のように、標準プロトコル３１１しか実装されていなくても、情報処理装置１１０において、原稿領域が切り出された画像を取得することができる。
【００７７】
なお、上記の実施形態では、付加画像の画像特徴として特定色を用いたが、これに限らず、パターン等の画像特徴を付加画像に与えてもよい。但しこの場合でも、上述のように、原稿領域との区別が可能であり、且つ原稿がセットされずに読み取られた場合の画像特徴と大きく違わない画像特徴が望ましい。
【００７８】
［第２実施形態］
第１実施形態において、情報処理装置１００は、情報処理装置１００が画像処理装置１５０から読取結果を全て、即ち原稿領域分、受信してから図１２の処理を行っていた。本実施形態では、情報処理装置１００において、画像処理装置１５０からライン単位で出力されたスキャンデータをリアルタイムに原稿サイズのスキャンデータに変換していくことで処理をより高速化することができる。以下、第２実施形態について、第１実施形態と異なる点について説明する。
【００７９】
図１７は、情報処理装置１００において実行される処理を示すフローチャートである。図１２の処理は、例えば、ＣＰＵ１０３がＲＯＭ１０４に記憶されたプログラムをＲＡＭ１０５にロードして実行することにより実現される。
【００８０】
Ｓ１７０１において、ＣＰＵ１０３は、長さ方向の位置を表す変数Ｙを記憶領域に確保し、変数Ｙを０に初期化する。変数Ｙ＝０の位置は、例えば図１１の読取結果の上端に対応する。Ｓ１７０２において、ＣＰＵ１０３は、画像処理装置１５０から１ライン分のスキャンデータを受信し、Ｓ１７０３において、変数Ｙの現在値がＨｅｉｇｈｔより小さいか否かを判定する。以下、Ｈｅｉｇｈｔとは、図４のＭａｘ  Ｈｅｉｇｈｔに対応する。変数Ｙの現在値がＨｅｉｇｈｔ以上であると判定された場合には、特定色のみを検出し原稿のスキャンデータを検出していないということであるので、Ｓ１７１２において、ＣＰＵ１０３は、原稿未検出エラーとして処理し、その後、図１７の処理を終了する。一方、変数Ｙの現在値がＨｅｉｇｈｔより小さいと判定された場合にはＳ１７０４に進む。
【００８１】
Ｓ１７０４において、ＣＰＵ１０３は、幅方向の位置を表す変数Ｘを記憶領域に確保し、変数Ｘを０に初期化する。変数Ｘ＝０の位置は、例えば図１１の読取結果の左端に対応する。
【００８２】
Ｓ１７０５において、ＣＰＵ１０３は、変数Ｘの現在値がＷｉｄｔｈより小さいか否かを判定する。以下、Ｗｉｄｔｈとは、図４のＭａｘ  Ｗｉｄｔｈに対応する。変数Ｘの現在値がＷｉｄｔｈより小さいと判定された場合には、Ｓ１７０６に進み、ＣＰＵ１０３は、その座標（Ｘ，Ｙ）のスキャンデータの画素が表す色が特定色であるか否かを判定する。特定色であると判定された場合、Ｓ１７１３に進み、ＣＰＵ１０３は、変数Ｘの値をインクリメントし、Ｓ１７０５の処理が繰り返される。一方、特定色でないと判定された場合、Ｓ１７０７に進み、ＣＰＵ１０３は、その行が原稿のスキャンデータであると判断し、そのときの変数Ｘの値を、原稿のスキャンデータの開始列を表す変数ＳＸに格納する。Ｓ１７０５で変数Ｘの現在値がＷｉｄｔｈ以上であると判定された場合、Ｓ１７１１において、ＣＰＵ１０３は、変数Ｙの値をインクリメントし、その後、Ｓ１７０２の処理が繰り返される。
【００８３】
次に、Ｓ１７０８以降の処理により、現在着目している行と同じ行のスキャンデータの反対側（例えば図１１の読取結果の右端）からの判定処理を行う。
【００８４】
Ｓ１７０８において、ＣＰＵ１０３は、変数ＸにＷｉｄｔｈ−１を格納する。Ｓ１７０９において、ＣＰＵ１０３は、その座標（Ｘ，Ｙ）のスキャンデータの画素が表す色が特定色であるか否かを判定する。特定色であると判定された場合、Ｓ１７１４に進み、ＣＰＵ１０３は、変数Ｘの値をデクリメントし、Ｓ１７０９の処理が繰り返される。一方、特定色でないと判定された場合、Ｓ１７１０に進み、ＣＰＵ１０３は、そのときの変数Ｘの値を、原稿のスキャンデータの終端列を表す変数ＥＸに格納し、Ｓ１７１５に進む。Ｓ１７１５において、ＣＰＵ１０３は、Ｓ１７０７で特定されたＳＸの位置から、Ｓ１７１０で特定されたＥＸの位置までのスキャンデータを出力して記憶領域に格納する。
【００８５】
このように、情報処理装置１００では、画像処理装置１５０から受信したスキャンデータで原稿のスキャンデータの一端（ＳＸ）を検出すると、反対側からの走査により他端（ＥＸ）の検出を行う。そのような構成により、原稿のスキャンデータの一端（ＳＸ）から順次同じ走査方向に判定していく処理に比べると、原稿のスキャンデータ（ＳＸからＥＸまでのスキャンデータ）の抽出をより効率良く行うことができる。
【００８６】
Ｓ１７１６において、ＣＰＵ１０３は、変数Ｙの値をインクリメントし、Ｓ１７１７において、画像処理装置１５０から１ライン分のスキャンデータを受信する。そして、Ｓ１７１８において、ＣＰＵ１０３は、変数Ｙの現在値がＨｅｉｇｈｔより小さいか否かを判定する。変数Ｙの現在値がＨｅｉｇｈｔ以上であると判定された場合には、判定処理が上端から下端まで到達したということなので、図１７の処理を終了する。一方、変数Ｙの現在値がＨｅｉｇｈｔより小さいと判定された場合にはＳ１７１９に進む。
【００８７】
Ｓ１７１９において、ＣＰＵ１０３は、変数Ｘを０に初期化する。変数Ｘ＝０の位置は、例えば図１１の読取結果の左端に対応する。Ｓ１７２０において、ＣＰＵ１０３は、変数Ｘの現在値がＷｉｄｔｈより小さいか否かを判定する。変数Ｘの現在値がＷｉｄｔｈより小さいと判定された場合には、Ｓ１７２１に進み、ＣＰＵ１０３は、その座標（Ｘ，Ｙ）のスキャンデータの画素が表す色が特定色であるか否かを判定する。特定色であると判定された場合、Ｓ１７２５に進み、ＣＰＵ１０３は、変数Ｘの値をインクリメントし、Ｓ１７２０の処理が繰り返される。一方、特定色でないと判定された場合、Ｓ１７０７からの処理が繰り返される。
【００８８】
Ｓ１７２０で変数Ｘの現在値がＷｉｄｔｈ以上であると判定された場合、即ち、その着目している行について、原稿のスキャンデータを検出できなかった場合、Ｓ１７２２に進む。Ｓ１７２２において、ＣＰＵ１０３は、変数Ｙをインクリメントし、Ｓ１７２３において、画像処理装置１５０から１ライン分のスキャンデータを受信する。Ｓ１７２３では、ＣＰＵ１０３は、その受信した１ライン分のスキャンデータを読み捨てる。そして、Ｓ１７２４において、ＣＰＵ１０３は、変数Ｙの現在値がＨｅｉｇｈｔより小さいか否かを判定する。ここで、変数Ｙの現在値がＨｅｉｇｈｔより小さいと判定された場合、Ｓ１７２２からの処理が繰り返される。一方、変数Ｙの現在値がＨｅｉｇｈｔ以上であると判定された場合、図１７の処理を終了する。
【００８９】
つまり、１ライン分のスキャンデータの判定の結果、原稿のスキャンデータを検出できなかった場合、Ｓ１７２４で変数Ｙの現在値がＨｅｉｇｈｔ以上であると判定されるまで、画像処理装置１５０から受信したスキャンデータを読み捨てていく。
【００９０】
以上のように、本実施形態によれば、画像処理装置１５０からライン単位で受信したスキャンデータに対して原稿のスキャンデータが存在することを検出した場合には、原稿領域の端部の検出を行う。さらに、原稿のスキャンデータが存在しないことを検出した場合には、以降の行のスキャンデータを画像処理装置１５０から受信して読み捨てる。その結果、情報処理装置１００において、原稿サイズのスキャンデータに変換していく処理を効率的に行うことができる。
【００９１】
本実施形態においては、原稿領域において、特定色が非原稿領域との境界部分（例えば、非原稿領域に隣接する原稿領域内の１画素）に出現した場合には、適切に処理が行われない可能性がある。そのような事態を防ぐために、画像処理装置１５０で、原稿領域の上記境界部分に特定色のスキャン結果が検出された場合、図５のＳ５０８において、画像処理装置１５０のＣＰＵ１５５は、Ｓ５０６で取得されたスキャンデータに対して、ｍａｘＸと原稿サイズの幅との差分の幅を有する、特定色と異なる色のデータを追加し、その追加後のスキャンデータを情報処理装置１００に送信するようにしても良い。例えば、（Ｒ，Ｇ，Ｂ）＝（２５５，２５５，２５５）が特定色である場合には、（Ｒ，Ｇ，Ｂ）＝（２５４，２５５，２５５）のような近似の値に置換する。また、画像処理装置１５０で、原稿領域の行方向の境界部分（例えば、非原稿領域に隣接する原稿領域内の１行分）に特定色のスキャン結果が検出された場合、図Ｓ５１２において、画像処理装置１５０のＣＰＵ１５５は、例えば、行の中の１つのスキャンデータ（例えばその行の先頭画素のスキャンデータ）の値を同様の近似の値に置換するようにしても良い。
【００９２】
［第３実施形態］
第１実施形態や第２実施形態では、特定色により原稿領域と非原稿領域とを識別していた。本実施形態では、特定パターンにより識別するようにする。以下、第１及び第２実施形態と異なる点について説明する。
【００９３】
本実施形態では、特定色ではなく特定パターンを用いることにより、原稿領域と非原稿領域との間における特定色の偶然の一致の発生頻度を低減させることができる。例えば、スキャナの劣化度合いが進行すると、画素値が簡単に飽和し、第１及び第２実施形態での特定色のように、完全な白が多く出現するようになってしまう。また、極めて高い反射性能を持つコーティング紙などをスキャンした場合には、スキャンデータが全て真っ白（飽和）になったスキャン結果が出力され得る。
【００９４】
上記のようなケースにおいて、（Ｒ，Ｇ，Ｂ）＝（２５５，２５５，２５５）を特定色にしていた場合には、原稿領域と非原稿領域との間で特定色が一致して誤判定してしまう可能性がある。本実施形態では、複数の色を配置した特定パターンを用いることにより、原稿領域と非原稿領域との間での特定色の一致が発生してしまうことを防ぐことができる。
【００９５】
本実施形態では、画像処理装置１５０と情報処理装置１００との間で特定パターンの配列の情報を共有する。この情報は、例えば、画像処理装置１５０のファームウェアや情報処理装置１００のアプリケーションプログラム２００に含めるようにしても良い。
【００９６】
図１８は、特定パターンの一例を示す図である。図１８は、特定パターンとして、幅５画素×高さ４画素のパターンデータを示している。つまり、スキャンデータの座標位置（Ｘ，Ｙ）の色は、図１８の特定パターン中の「Ｘ％５」（Ｘの剰余）行目、「Ｙ％４」（Ｙの剰余）列目の要素の色となる。例えば（Ｘ，Ｙ）＝（１００，５０）の位置にあるスキャンデータの特定パターンの色の値は、１００％５＝０、５０％４＝２から、図１８における０行目２列目の要素である「ｃ」となる。
【００９７】
以下、図５を参照しながら、本実施形態における画像処理装置１５０の処理について説明する。本実施形態では、既に説明した図５の処理とＳ５０８の点で異なる。本実施形態では、Ｓ５０８で、特定色のデータを追加するのではなく、座標位置Ｘの剰余とＹの剰余とで特定される特定パターンの要素の色を追加する。つまり、Ｓ５０７で取得されたスキャンデータの１ラインに対応する行の座標位置Ｙと、原稿サイズの幅Ａ４Ｘの端部からＭａｘ  Ｗｉｄｔｈに至るまでの各座標位置Ｘと、に応じた特定パターンの要素の色を上記の剰余式から特定する。そして、Ｓ５０７で取得されたスキャンデータに対して、各座標位置（Ｘ，Ｙ）で特定される要素の色のデータを追加する。
【００９８】
また、情報処理装置１００の図１３、図１４、図１５、図１６の処理は、既に説明した処理と以下の点で異なる。
【００９９】
つまり、図１３のＳ１３０６では、その座標（Ｘ，Ｙ）のスキャンデータの画素が表す色が特定色であるか否かを判定するのではなく、座標位置（Ｘ，Ｙ）と剰余式で特定される特定パターンの要素の色であるか否かを判定する。図１４のＳ１４０６、図１５のＳ１５０６、図１６のＳ１６０６についても同様である。
【０１００】
図１９は、特定パターンで識別した場合の読取結果の一例を示す図である。特定パターンは、特定パターンに含まれる色が原稿領域上に偶然に出現したとしても、その色の周辺でパターンが不一致になれば、その出現結果を無視し、原稿領域として判定する。例えば、図１９の３行目４列目には、特定パターンの要素のｔ色のデータが出現している。しかしながら、その画素の周辺画素の判定結果が、特定パターンの要素の色と一致しないのであれば、ｔ色のデータが出現している画素も、原稿領域として判定される。
【０１０１】
このような処理とするため、例えば、図１３のＳ１３０６では、その座標位置（Ｘ，Ｙ）のスキャンデータの画素が表す色が特定パターン要素の色であると判定された場合、例えば、処理済みのＹ−１行目のスキャンデータのうち同じＸ座標位置の結果、例えば、上記の例では２行目４列目を参照する。そして、そのＸ座標位置の判定結果が特定パターンの色と一致していなかったのであれば（上記の例では、ｏ色でなかったのであれば）、今回の座標位置（Ｘ，Ｙ）での特定パターンの色と一致した判定結果を無視し、原稿領域として判定する。また、上記の方法に限られず、複数画素の集合ごとに判定結果を参照するようにし、連続した所定画素数について、特定パターンの要素の色と一致した場合に、非原稿領域と判定するなど、他の方法が用いられても良い。
【０１０２】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【０１０３】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤなどを用いることができる。
【０１０４】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施例の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOperating System（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれることは言うまでもない。
【０１０５】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書きこまれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１０６】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【０１０７】
１００  情報処理装置：  １０３、１５５  ＣＰＵ：  １０４、１５４  ＲＯＭ：  １０５、１５４  ＲＡＭ：  １５０  画像処理装置
【図１】
2020167610.tif 000003
【図２】
2020167610.tif 000004
【図３】
2020167610.tif 000005
【図４】
2020167610.tif 000006
【図５】
2020167610.tif 000007
【図６】
2020167610.tif 000008
【図７】
2020167610.tif 000009
【図８】
2020167610.tif 000010
【図９】
2020167610.tif 000011
【図１０】
2020167610.tif 000012
【図１１】
2020167610.tif 000013
【図１２】
2020167610.tif 000014
【図１３】
2020167610.tif 000015
【図１４】
2020167610.tif 000016
【図１５】
2020167610.tif 000017
【図１６】
2020167610.tif 000018
【図１７】
2020167610.tif 000019
【図１８】
2020167610.tif 000020
【図１９】
2020167610.tif 000021