以下に図面を参照して、本発明の好適な実施形態を例示的に説明する。ただし、本発明については、その趣旨を逸脱しない範囲で、当業者の通常の知識に基づいて、以下に記載する実施形態に対して適宜変更、改良が加えられたものについても本発明の範囲に入ることが理解されるべきである。
(第1実施形態)
本発明を適用した読み取り装置について説明する。本実施形態において、読み取り装置として、インクジェット記録方式の複合機(MFP)を例示しているが、MFPではなく、単機能の装置(SFP)であっても良い。また、本発明の読み取り装置は、印刷機能を備えていなくても良く、少なくとも、原稿を読み取って画像データを生成する読み取り機能(スキャン機能)を有していれば良い。
図1(A)は、本実施形態の読み取り装置であるMFP100の外観を示す図である。原稿台101は、スキャン対象の原稿が載置される場所である。挿入口103は、印刷対象の記録媒体(紙等)が挿入されるためのユニットである。ユーザが挿入口103に記録媒体を載置した後、MFP100が印刷動作命令を受け付けると、MFP100によって印刷が実行され、記録剤によって印刷が施された記録媒体(印刷結果物)が排出口104から排出される。なお、ユーザが原稿台101に原稿を載置し、挿入口103に記録媒体を載置した後、MFP100がコピー動作命令を受け付けると、MFP100によって、原稿台101に置かれた原稿がスキャンされ、その結果得られた画像が記録媒体に形成される。
図2は、MFP100のハードウェア構成を示すブロック図である。CPU203を含む制御部202は、MFP100全体の動作を制御する。
CPU203は、ROM205に記憶された制御プログラムをRAM204に展開し、必要な時に読み出して読取制御や印刷制御などの各種制御を行う。RAM204は、CPU203の主記憶メモリであり、ワークエリアやROM205に記憶された各種プログラムを展開する為の一時記憶領域として用いられる。
ROM205は、CPU203が実行する制御プログラムや組込オペレーティングシステム(以下、OS)プログラム等の各種プログラムを格納する。本実施形態では、ROM205に格納されている制御プログラムは、ROM205に格納されている組込OSの管理下で、スケジューリングやタスクスイッチ等のソフトウェア制御を行う。また、本実施形態では、ROM205は、画像データ、各種プログラム及び各種設定情報も格納する。本実施形態では、ROM205としてフラッシュストレージ等を想定しているが、ハードディスク等の補助記憶装置であってもよい。
プリンタI/F207は、プリンタ部213と制御部202とを接続させるためのインタフェースである。画像データはプリンタI/F207を介して制御部202からプリンタ部213に転送される。画像データを受信したプリンタ部213は、印刷部として動作し、インク等の記録剤を用いて、紙等の記録媒体上に、受信した画像データに応じた画像を印刷する。
スキャナI/F208は、スキャナ部214と制御部202とを接続させるためのインタフェースである。スキャナ部214は、原稿台101に載置された原稿を読み取ってデジタル画像データを生成し、生成した画像データを、スキャナI/F208を介してRAM204に転送する。
操作部I/F209は、UI部215と制御部202を接続する。UI部215には、タッチパネル機能を有する液晶表示部や操作キーなどが備えられている。すなわちUI部215は、ユーザから各種操作を受け付ける操作部や、ユーザに情報を表示する表示部として機能する。なお、本実施形態では、UI部215をタッチパネルで構成することで、操作部と表示部とを同一のユニットとしているが、例えば、操作部を物理キー等で構成することで、操作部と表示部とを別々のユニットとして構成しても良い。また、MFP100は、UI部215に対するユーザからの操作を受け付けることで、ユーザから印刷動作命令やコピー動作命令、スキャン動作命令を受け付けることが可能である。なお、MFP100は、UI部215を介してユーザから印刷動作命令を受け付ける場合には、例えばSDカード等の記録媒体に格納された画像データに基づいて印刷を行う。
USB I/F210及びネットワークI/F211は、MFP100と外部装置とを接続させ、MFP100と外部装置との通信を制御するためのインタフェースである。例えば、USB I/F210は、USBケーブル経由で外部装置からスキャン動作命令(スキャンジョブ)を受け付けた場合、当該命令に対応する信号をRAM204に保存する。CPU203はこれを読み取ることでスキャナ部214にスキャン動作を実行させ、スキャン動作によって取得された画像データを一時的にRAM204に保存する。RAM204に保存された画像データは、USB I/F210を介して外部装置に転送される。CPU203は、画像データが外部装置に転送されたことを確認すると、RAM204に保存されている、外部装置へ転送済みの画像データを削除する。全ての画像データの転送と削除が終了することで、外部装置から指示されたスキャン動作も終了する。
USBケーブル経由でなく、ネットワーク経由で、外部装置からスキャン動作命令が行われる場合は、同様の動作がネットワークI/F211を介して実施される。なお、MFP100は、スキャンジョブを外部装置から受信するだけでなく、例えば、操作部I/F209を介したユーザ操作等からも、スキャンジョブを受け付けることができる。
画像処理部216は、スキャン動作によって得られた画像データに画像処理や補正が必要な場合や、外部装置から印刷動作命令(印刷ジョブ)とともに受信した画像データに画像処理が必要な場合に使用される。また、主に、画像処理部216は、RAM204に展開された制御プログラムによる画像処理や補正では時間がかかってしまうような処理を、ハード機能で処理する場合に用いられる。なお、外部装置とは、読み取り装置と通信可能な装置あり、例えば、携帯端末、パーソナルコンピュータ(PC)、タブレット端末、PDA(Personal Digital Assistant)、デジタルカメラ等の装置である。以上が、ハードウェア構成図の説明となる。
続いて、MFP100のソフトウェア構成図について説明する。図4は、RAM204に展開された、各ハードモジュールを制御するための制御プログラムのソフトウェア構成図である。なお、制御プログラムは、アプリケーション410、ミドルウェア420、オペレーションシステム430の3つのブロックに大別される。なお、各ソフトウェアによって実現される処理は、ROM205等のメモリに格納された各ソフトウェアに対応する各種プログラムを、CPU203がRAM204に読み出して実行することにより実現される。
オペレーションシステム430は、制御部202で制御プログラムに基づく処理を実行するための基礎的な機能を提供するソフトウェアである。ミドルウェア420は、プリンタ部213やスキャナ部214などの各物理的なデバイスとのインタフェース(I/F)を制御するソフトウェア群で構成される。本実施形態では、ミドルウェア420として、プリンタI/F207を制御するモジュールであるプリンタ制御モジュール421や、スキャナI/F208を制御するモジュールであるスキャナ制御モジュール422が存在する。さらに、ミドルウェア420として、USB I/F210及びネットワークI/F211を制御するI/F制御部424や、操作部I/F209を制御するUI制御モジュール425が存在する。アプリケーション410は、各ミドルウェアを介して各デバイスを動作させて、MFP100がユーザに提供する機能(印刷機能、コピー機能、スキャン機能等)を実現するためのソフトウェア群で構成される。
例えば、UI部215や操作部I/F209を介してユーザがコピー動作命令を入力したことをUI制御モジュールが検知すると、アプリケーション410にそのことが報知される。アプリケーション410は、報知を受けて、コピーを実行するための機能管理アプリケーション(以下機能管理APL)411を実行する。機能管理APL411はコピーを実行するに当たり、スキャンジョブとプリントジョブを発行し、ジョブ管理アプリケーション(以下ジョブ管理APL)412によってそれらのジョブを実行させる。まず、ジョブ管理APL412は、スキャンジョブを実行する。具体的には、ジョブ管理APL412は、ミドルウェア420のスキャナ制御モジュール422を用いて、スキャナ部214にスキャン動作を実行させ、その結果取得された画像データをRAM204に保存する。なお、ジョブ管理APL412がRAM204に画像データを保存する際、当該画像データに画像処理や補正を必要とする場合がある。その場合は、スキャナ制御モジュール422は、画像処理部216を用いて、画像データに、必要な画像処理や補正を施す。このようにしてコピーに使用される画像データがRAM204に保存されると、ジョブ管理APL412は、印刷ジョブを実行する。具体的には、ジョブ管理APL412は、ミドルウェア420のプリンタ制御モジュール421を用いて、プリンタ部213に、RAM204に保存された画像データに基づく印刷を実行させる。このとき、プリンタ制御モジュール421は、RAM204に保存されている画像データを、プリンタI/F207に送信する。この際、プリンタ制御モジュール421は、必要であれば画像処理部216を用いて、送信する画像データに対し画像処理や補正を施す。このように各モジュールが連動することで、MFP100が提供する各機能が実現される。以上が、ソフトウェア構成図の説明となる。
図1(B)は、スキャナ部214の断面図である。原稿台はスキャナセンサと原稿間の距離を一定に保つためのコンタクトガラス115と、それを保持する部品で構成されている。ユーザは原稿台101に載置されたヒンジ116を支点として原稿台カバー102を持ち上げる(コンタクトガラス115に対して垂直方向上方に回動させる)ことができる。原稿台カバー102は、コンタクトガラス115を覆う閉じ位置と、コンタクトガラス115を開放する開放位置との間で回動可能なカバーである。原稿台カバー102が持ち上げられ、原稿台101が開放されると、ユーザは原稿台101に原稿を載置することができる。なお、原稿台カバー102は閉じ位置に位置することで、コンタクトガラス115上(原稿台101上)に載置された原稿を押さえる圧板としても機能する。このとき、原稿台カバー102における、コンタクトガラス115上に載置された原稿に接する面には、スキャン画像を損なわないための白色のシートが貼り付けられている。これが白色シート105である。なお、コンタクトガラス115上に載置された原稿に接する面とは、言い換えれば、原稿台カバー102は閉じ位置に位置する状態で原稿台101に対向する面である。スキャナ部214は、原稿台カバー102と原稿台101の間に載置された被読み取り物(原稿等)を読み取って、画像データを生成する。なお、例えば、原稿台101に原稿が載置されていない状態でスキャンが行われる場合は、原稿台上には原稿台カバー102に張り付けられた白色シート105が位置することになるため、スキャナ部214は、白色シート105を読み取ることになる。なお、スキャナ部214が被読み取り物の読み取りに用いる構成として、本実施形態では、スキャナ部214は、コンタクトイメージセンサ(以下CIS)によって読み取りを行うものとする。スキャナ部214は、CIS120と、CIS120をコンタクトガラス115と略水平の方向に駆動させる移動装置から構成されている。なお、スキャナ部214の構成は上述の形態に限定されない。例えば、スキャナ部214には、CCDイメージセンサ等、公知の構成が適用可能である。
スキャナ部214は、スキャナI/F208を介してスキャナ制御モジュール422から読取命令を受け取ると、まず白基準シート114の下に移動し、センサアレイ113によって各画素の出力補正データを作成する。なお、白基準シート114とは、後述するシェーディング補正処理において基準となる出力値を得るために使用されるシートである。なお、白基準シート114は、上記の目的に使用される部材(すなわち、白基準部材)であれば、その形状や材質は限定されない。出力補正データの作成方法と、補正方法についての詳細は<シェーディング補正について>のセクションで述べる。作成された補正データは、スキャナ制御モジュール422によって、RAM204へと送信される。補正データの作成が終わると、スキャナ制御モジュール422はLED111を点灯し、CIS120を移動させながらコンタクトガラス115上に載置された原稿を読み取る。
なお、本実施形態のCIS120は、画像をデジタル化して出力を得るためのイメージセンサの集合であるセンサアレイ113を含む。CIS120の移動中、LED111から発せられた光は原稿から反射するが、この反射光はレンズアレイ112を介してセンサアレイ113へ導かれる。原稿からの反射光がセンサアレイ113に入射することで、各色の出力が得られるので、スキャナ制御モジュール422はこれをRAM204に保存する。具体的には、スキャナ制御モジュール422は、反射光を撮像素子で電気信号に変換した後、その電気信号をA/D変換することで、デジタルデータを出力する。なお、スキャナ制御モジュール422は、LED111が発する光をR(Red),G(Green),B(Blue)と変化させてセンサアレイ113への入射光を制御することで、各色の出力を取得し、合成する。そして、スキャナ制御モジュール422は、各色の出力と、RAM204に保存してある出力補正用データと画像処理部216を用いて画像データを生成する。なお、本実施形態において、センサによってある領域に対応する出力を得ることは、センサによって当該領域の原稿を読み取り、当該領域に対応する画像データを生成することに対応する。コンタクトガラス115上に載置された原稿の読み取りが完了し、原稿のデジタル画像データの生成が終了すると、スキャナ制御モジュール422は、次の原稿の読み取りに向けてCIS120を待機位置1106に移動させる。待機位置1106とは、CIS120がスキャン前に待機している位置である。待機位置1106の一例を図11に示す。本実施形態では、待機位置1106は、白基準シート114の下の位置であるものとするが、この形態に限定されず、任意の位置であって良い。MFP100は、このようにしてスキャナ部214で生成された画像データをプリンタ部213に転送することで、当該画像データに基づく画像を印刷することができる。また、スキャナ部214で生成された画像データを、各種送信プロトコルを用いて外部装置に送信することもできる。更に、スキャナ部214で生成された画像データをMFP100が読み書き可能な保存領域に保存することもできる。
ユーザがMFP100の電源をオンすると、MFP100に実行させる処理を設定するための設定画面が、UI部215に表示される。図5は、UI部215に表示される設定画面の一例を示す図である。ユーザは、図5の画面において操作キー501〜503を操作することにより、MFP100に実行させる処理を指定する事ができる。操作キー501は、MFP100にコピーを実行させるためのキーである。操作キー502は、MFP100にスキャンを実行させ、さらに、スキャンによって取得された画像データを外部装置に送信させるためのキーである。操作キー503は、MFP100にスキャンを実行させ、さらに、スキャンによって取得された画像データをMFP100が備える記憶領域に保存させるためのキーである。なお、設定画面において、MFP100に他の処理を実行させるためのキーが備わっていても良い。例えば、MFP100の設定(ネットワーク設定や印刷設定等)を変更させるためのキーが備わっていても良い。また、図5では、機能として「コピー」、「スキャンして送信」及び「スキャンして保存」を例示しているが、MFP100がこれら以外の機能を備えていてもよい。なお、本実施形態で開示する原稿取り忘れ検知処理は、上述した各機能が実行された場合や、外部装置からスキャンジョブやコピージョブを受け付けた場合等に実行される。
以下に、本実施形態で開示する原稿取り忘れ検知処理について説明する。本実施形態では、原稿取り忘れ検知処理は、スキャン中に原稿台101上に原稿があるか否かを判定する原稿検知処理、スキャン後の原稿台カバー102の開閉を検知する開閉検知処理及びユーザに原稿の取り忘れを報知する報知処理を含む。本実施形態では、原稿検知処理の結果に応じて開閉検知処理及び報知処理を行うか否かを決定することで、原稿が無いにも関わらず、報知処理が行われてしまうことを抑制できる。また、本実施形態では、シェーディング補正データの取得中に得た出力値と、スキャン中に得た出力値との比較によって原稿検知処理を行うことで、スキャンを複数回繰り返すことなく、原稿台101上に原稿があるか否かを判定することができる。各処理の詳細は後述する。
<シェーディング補正について>
図1(C)は、スキャナ部214の上方からの俯瞰図である。なお、図1(C)は、スキャナ部214がスキャン動作を実行中のある一瞬を切り取った場面における模式図であるため、CIS120は待機位置ではなく、スキャン経路上の位置にある。本実施形態では、LED111から発せられ、原稿から反射された光を受け付け、その光に対して光電変換を行い、電流として出力できるセンサが、センサアレイ113に一次元に並んだ構成となっている。本実施形態では、「センサの主走査方向」とは、センサが並んでいる方向である。また、言いかえれば、「センサの主走査方向」とは、スキャン動作中にCIS120が移動する方向と略垂直な方向である。
また、本実施形態では、センサアレイ113を構成しているセンサひとつひとつからセンサの位置順に得られた出力がA/D変換された結果を、「主走査方向1ラインの出力」と呼ぶ。図1(C)に、主走査方向1ラインの出力範囲を図示する。なお、各センサから得られる出力は、ジョブ管理APL412によって指定された解像度が300dpiであるならば、最大値65535、最小値0となる。例えば、センサアレイ113が2592個のセンサで構成され、それぞれの出力が16bitでA/D変換される場合、「主走査方向1ラインの出力」は、各センサから得られる2592個の出力(デジタルデータ)となる。ただし、「主走査方向1ラインの出力」における出力の個数は、ジョブ管理APL412によって指定された解像度や、センサアレイ113に含まれるセンサの個数によって変化する。例えばジョブ管理APL412によって指定された解像度が150dpiである場合、スキャナ制御モジュール422は、隣り合うセンサの出力の平均を取るなどして、1296個のデジタルデータを得る。
続いて、「コンタクトガラス115の開口部における主走査方向出力範囲」について説明する。図1(C)に、この範囲を図示する。多くの場合、センサアレイ113の主走査方向の長さは、コンタクトガラス115の主走査方向の長さに対して長い。そのため、センサアレイ113の端部は、コンタクトガラス115の開口部には対向せず、コンタクトガラス115の外側にある、光を透過しない部材に対向することになる。センサアレイ113に配置されたセンサのうち、光を透過しない部材に対向する部分に配置されるセンサの出力は、原稿台に載置された原稿の状態や、原稿台カバーの状態にあまり影響されない。これは、LED111から発せられた光が、光を透過しない部材に吸収されるため、センサに反射光が入射しないためである。そのため、光を透過しない部材に対向する部分に配置されるセンサの出力からは、原稿台に載置された原稿の状態や、原稿台カバーの状態を検知することができない。よって、本実施形態では、光を透過しない部材に対向する部分以外の範囲である「コンタクトガラス115の開口部における主走査方向出力範囲」のセンサ出力を様々な判定に用いるものとする。
最後に、「スキャン動作の主走査方向出力範囲」について説明する。図1(C)に、この範囲を図示している。MFP100がスキャンジョブを実行する場合、スキャナ制御モジュール422は、ジョブ管理APL412からスキャン動作対象範囲117の指定を受け付ける。例えば、スキャンジョブには、スキャン動作対象範囲117に関する設定情報が含まれており、当該設定情報が、A4を示すものである場合、スキャン動作対象範囲117は、A4の大きさに対応する範囲となる。
その後、スキャナ制御モジュール422は、スキャンジョブに含まれる設定情報に基づいて、センサアレイ113に配置されているセンサのうち、いずれのセンサを用いるかを決定する。具体的には、スキャナ制御モジュール422は、センサアレイ113に配置されたセンサのうち、スキャン動作対象範囲117の主走査方向の長さ及び位置に対応する部分に配置されているセンサを用いることを決定する。これにより、スキャナ制御モジュール422は、スキャン動作対象範囲117における出力を得られるようにする。なおこのとき、決定されたセンサ以外のセンサは駆動しないように制御されても良いし、全センサを駆動して出力を得た後、決定されたセンサから得られる出力のみ利用するよう制御されても良い。その後、スキャナ制御モジュール422は、スキャンジョブに含まれる設定情報に基づいて、スキャン中にCIS120を副走査方向に移動させる範囲(スキャンする範囲)を指定する。具体的には、スキャナ制御モジュール422は、少なくとも、スキャン動作対象範囲117の副走査方向の長さに対応する距離、CIS120を移動させることを決定し、スキャン動作対象範囲117における出力を得られるようにする。
続いて、スキャン中(センサアレイ113による出力結果取得中)に、原稿取り忘れ検知処理で使用するパラメータをどのように取得するかについて解説する。
図6はスキャナ制御モジュール422が行う、白基準シートを用いたシェーディング補正制御のフローチャートである。センサから得られる本来の出力と、センサから実際に得られる出力との差は、一般にシェーディングと呼ばれる。そして、各センサのシェーディングを補正する処理は、シェーディング補正と呼ばれる。以下、シェーディング補正のために用いられるデータを「シェーディング補正用データ」という。
図6(A)は、MFP100が実行するシェーディング補正処理を示すフローチャートである。なお、図6(A)に示すフローチャートは、例えば、CPU203がROM205等に格納されたプログラムをRAM204に読み出して実行することにより実現される。また、シェーディング補正処理が実行されるタイミングは特に限定されず、例えば、スキャン前に必ず実行される形態としても良いし、前回のシェーディング補正処理から所定の時間が経過したタイミングで実行される形態としても良い。また、例えば、MFP100の電源が入ったタイミングや、センサから得られる出力に有意な誤差が生じたタイミングで実施されても良い。なお、センサから得られる出力に有意な誤差が生じたか否かは、同条件における出力を定期的にセンサから取得し、取得された出力に有意な差が生じたタイミングを検知することで判定することができる。
S611で、CPU203は、図示しないモータ制御部にモータを駆動させることで、白基準シート114の下にCIS120を移動させる。以後、CIS120の移動は全て、モータ制御部によってモータが駆動することで実現されるものとする。
次に、CPU203は、LED111をコントロールし、R(Red)、G(Green)、B(Blue)の各波長帯の光の、スキャン動作時における点灯時間を決定する(S612)。この処理を調光処理と呼ぶ。
図6(B)は、MFP100が実行する調光処理を示すフローチャートである。なお、図6(B)に示すフローチャートは、例えば、CPU203がROM205等に格納されたプログラムをRAM204に読み出して実行することにより実現される。また、図6(B)に示すフローチャートは、S612の処理に対応する。
S621において、CPU203は、LED111の点灯色であるR(Red)、G(Green)、B(Blue)全ての点灯色の調光が完了したか否かを判定する。CPU203は、全ての点灯色の調光が完了したと判定した場合、調光処理を終了し、S612の処理を実行する。一方、CPU203は、全ての点灯色の調光が完了していないと判定した場合、S622の処理を実行する。
S622において、CPU203は、LED111の点灯色であるR(Red)、G(Green)、B(Blue)のうち、いずれかを選択し、選択した点灯色の調光を開始する。本実施形態では、Rから調光を開始するとする。
S623において、CPU203は、S622で選択した調光対象の点灯色の点灯時間Tを最大値Tmaxに設定する。
その後、S624において、CPU203は、点灯時間Tだけ、S622で選択した調光対象の点灯色の光をLED111から発するよう制御する。このとき、白基準シートで反射した、調光対象の点灯色の光は、センサアレイ113に入射し、センサアレイ113に含まれる各センサから電気信号としてアナログ出力される。この出力結果はA/D変換回路に入力され、デジタルデータに変換される。S625において、CPU203は、白基準シートで反射した、調光対象の点灯色の光がセンサアレイ113を介してデジタルデータに変換された後の値である出力Oを取得する。
なお、LED111の点灯時間Tがセンサアレイ113の感度に対し長すぎる場合は、センサアレイ113の出力Oは飽和してしまう。すなわち、出力Oが、最大値(解像度が300dpiであるならば、65535)に達してしまう。そこで、S626において、CPU203は、出力Oが予め定められた閾値Osat(Osat<出力最大値)より大きいか否かを判定することによって、出力Oが飽和しているか否かを判定する。出力Oが飽和していた場合、点灯時間Tがセンサアレイ113の感度に対し長すぎるので、CPU203は、S627に進み、点灯時間Tを、現在設定されている値からTsだけ小さい値に設定する。その後、CPU203は、再度S624に進み、新たに設定された時間だけLED111を点灯し、新たに出力Oを得た後、出力Oが飽和しているか否かを判定する。CPU203は、これらの処理を繰り返し、点灯時間Tに、出力Oが飽和しない値を設定する。この処理を、点灯各色(RGB)に対して行い、各色の点灯時間To_R、To_G、To_Bを取得する。なお、本実施形態では、S625で取得される出力Oは、主走査方向1ラインにおいて各センサから得られる出力のうち、最大値とする。この最大値は、スキャナI/F208に含まれる最大最小値算出回路によって求められるものとする。本実施形態では、処理高速化と処理負担軽減のために専用回路を用いて最大値を求めているが、主走査方向1ラインにおいて各センサから得られる出力を一時的にバッファに保存し、保存した値から最大値を検索することで最大値を求めても良い。
以上が調光処理の説明となる。調光処理によって決定された各色の点灯時間は、スキャン動作時他、シェーディング補正用データ取得時、さらに本実施形態で開示される開閉検知処理時等に使用される。このようにすることで、LED点灯時間がセンサの感度に対して適切でないことによる誤動作が生じることを抑制する。
CPU203は、上述した調光処理が終了した場合、S613において、シェーディング補正用データ作成処理を行う。
図6(C)は、MFP100が実行するシェーディング補正用データ作成処理を示すフローチャートである。なお、図6(C)に示すフローチャートは、例えば、CPU203がROM205等に格納されたプログラムをRAM204に読み出して実行することにより実現される。また、図6(C)に示すフローチャートは、S613の処理に対応する。
S631にて、CPU203は、図示しないスキャナ制御回路を介してLED111をコントロールし、R(Red)、G(Green)、B(Blue)の波長帯の光を順次点灯する。このときの各色の点灯時間の値は、調光処理で求められた値であるTo_R、To_G、To_Bである。それぞれの光は、白基準シート114上で反射した後、順々にセンサアレイ113に入射する。その後、センサアレイ113に含まれるセンサからそれぞれの光に対するアナログ出力(電気信号)得られ、得られた電気信号がA/D変換回路を介してデジタルデータに変換される。これにより、CPU203は、LED111を点灯させた状態で、出力値(Osh_on)を得る。
S632にて、CPU203は、センサアレイ113に含まれるセンサから得られた出力値(Osh_on)を取得し、RAM204におけるシェーディング補正用データ保管領域に、一時的に保存する。なお、Osh_onは、複数のセンサから得られた複数の出力値の集合を示す。本実施形態では、保存されるデータは主走査方向1ライン分の出力に対応するデータのみとし、各データの値は、点灯色毎にそれぞれOsh_on_R,Osh_on_G,Osh_on_B,とする。主走査方向1ライン分の出力に対応するデータは、主走査方向1ライン分の出力に対応するデータそのものであってもよいし、複数ライン分の出力に対応するデータの平均値であっても良い。また、CPU203は、白基準シート下でCIS120を副走査方向に移動(走査)させ、それぞれ異なるラインにおける出力をセンサに取得させることで、複数ライン分の出力に対応するデータを取得してもよい。CPU203は、CIS120を副走査方向に移動させて出力を取得させた場合は、主走査方向のセンサ毎の出力のソートを行い、上位/下位のいくつかの出力を除外してから平均値を求めてもよい。これにより、白基準シート上のゴミや特異点の影響を抑えることができる。
続いてS633では、出力値(Osh_on)のうち、最大値(Osh_max)と最小値(Osh_min)を取得し、シェーディング補正用データ保管領域に保存する。具体的には、CPU203は、Osh_on_R,Osh_on_G,Osh_on_Bのうち、それぞれの最大最小値であるOsh_Rmax/Osh_Rmin,Osh_Gmax/Osh_Gmin,Osh_Bmax/Osh_Bminを取得する。なおこのとき、CPU203は、Osh_on_R,Osh_on_G,Osh_on_Bのうち、全ての値から最大最小値を求めることはしない。具体的には、CPU203は、Osh_on_R,Osh_on_G,Osh_on_Bのうち、コンタクトガラス115の開口部分に対向するセンサからの出力から、最大最小値を求める。コンタクトガラス115に対してセンサアレイ113が長い場合、センサアレイ113上のセンサのうち、コンタクトガラス115の開口部ではない部分に対向するセンサから得られる出力は常に小さい。そのため、Osh_on_R,Osh_on_G,Osh_on_Bのうち、全ての値から最小値を求める場合、最小値が、コンタクトガラス115の開口部ではない部分に対向するセンサから得られる出力に常になってしまう。これを抑制するために、CPU203は、少なくとも、原稿が置かれたことや原稿台カバーが開閉されたことにより出力が変化する範囲のデータから、最大最小値を取得する。なお、ここで取得された値は、後述の原稿検知処理判定において利用される。
S634では、CPU203は、LED111を消灯させる。
S635では、CPU203は、LED111を消灯させた状態で、センサアレイ113に含まれるセンサから、出力値(Osh_off)を取得し、シェーディング補正用データ保管領域に、一時的に保存する。このとき保存されるデータの取得方法は、S632におけるデータの取得方法と同様である。これにより、CPU203は、LED111を消灯させた状態における出力を得る。
S636では、CPU203は、S632及びS635において得られた出力値(Osh_onとOsh_off)から、シェーディング補正用データを作成する。具体的には、S632及びS635において得られた出力値(Osh_onとOsh_off)と、予め定められた基準の出力値との差に基づいて、センサの出力値の誤差を補正するためのシェーディング補正用データを作成する。作成されたシェーディング補正用データは、シェーディング補正用データ保管領域に保存される。なお、シェーディング補正用データが作成された後、一時的に保存されたOsh_onとOsh_offがシェーディング補正用データ保管領域から削除される。
画像処理部216に含まれるシェーディング補正処理部321には、スキャンによって取得された画像データに対し、シェーディング補正用データによる補正(シェーディング補正)が行われた後のデータを算出する回路が設けられている。スキャン動作実行時に、シェーディング補正処理部321に、スキャンによって取得された画像データとシェーディング補正用データが入力されることで、シェーディング補正が施されたデジタル画像データが作成される。なお、本実施形態では、シェーディング補正として、公知の種々の方法が用いられて良く、その詳細は特に限定されない。
なお、本実施形態では、スキャン画像が、RGB点灯から得られるカラー画像である場合について解説したが、例えば、G点灯から得られる画像のみを取得する形態や、点灯は3色だがセンサからの出力は1色とする形態などにも応用が可能である。また、CCDイメージセンサによって画像の読み取りが行われる形態の場合、RGBの各色に対応する出力を取得する三本のセンサでスキャナ部214が構成される。この場合は、Osh_Rmax/Osh_Rmin,Osh_Gmax/Osh_Gmin,Osh_Bmax/Osh_Bminの各値は、それぞれのセンサの主走査方向1ライン分の出力に対応するデータのうちの最大最小値として取得される。このようにしてシェーディング補正が終了した後、CPU203は、S614で、CIS120を待機位置に移動させる。
以上が、本実施形態におけるシェーディング補正用データ取得フローである。このフロー中に取得した各色の調光結果及びシェーディング補正中に取得した各色の最大最小値が、後述する原稿取り忘れ防止制御フローで使用される。なお、シェーディング補正用データ取得フローは、スキャン動作直前に毎回実施されてもよいし、MFP100の電源が入ったタイミングや、センサから得られる出力に有意な誤差が生じたタイミングで実施されても良い。なお、センサから得られる出力に有意な誤差が生じたか否かは、同条件における出力を定期的にセンサから取得し、取得された出力に有意な差が生じたタイミングを検知することで判定することができる。
<原稿取り忘れ検知処理について>
本実施形態においてMFP100が実行する原稿取り忘れ検知処理について説明する。上述したように、本実施形態では、原稿取り忘れ検知処理は、原稿検知処理と開閉検知処理を含む。
図7(A)は、MFP100が実行する原稿取り忘れ検知処理のフローチャートを示す。本実施形態では、スキャン動作中に原稿の有無を検知する形態について説明する。なお、図7(A)に示すフローチャートは、例えば、CPU203がROM205等に格納されたプログラムをRAM204に読み出して実行することにより実現される。また、本フローチャートは、MFP100がスキャンジョブを受け付ける等し、MFP100スキャンを実行する場合に開始される。
S7001では、CPU203は、Line_cnt及びDoc_on_flgを初期化する。具体的には、Line_cntを0、Doc_on_flgをoffに設定する。Line_cntは、後述する原稿検知処理で「原稿有り」と判定されたラインが、副走査方向に何ライン続くかを示す変数である。また、Doc_on_flgは、原稿台に原稿があるか否かの最終的な判定結果を示す変数(フラグ)である。Doc_on_flg がonである場合は、原稿台に原稿があると判定されたことが示され、offである場合は原稿台に原稿がないと判定されたことが示される。初期化後、CPU203は、読取開始位置までCIS120を移動させ、スキャン動作を開始する。すなわち、CPU203は、CIS120に、ジョブ管理APL412から指示される範囲のスキャンの実行を開始させる。
S7002では、CPU203は、スキャン動作を終了するか否かを判定する。具体的には、CPU203は、ジョブ管理APL412から指示された範囲のスキャンが完了するように、副走査方向にCIS120が移動したか判定する。さらに具体的には、CPU203は、CIS120が、スキャン動作終了位置まで移動したか否かを判定する。CPU203は、スキャン動作を終了しないと判定した場合、S7003に進み、スキャン動作を終了すると判定した場合、S7011に進む。
S7003では、CPU203は、LED111を点灯させ、現在CIS120がいる位置における主走査方向1ライン分の出力をセンサから取得する。そして、CPU203は、取得した出力のうち、ジョブ管理APL412から指示されたスキャン範囲に対応する出力(Ord_on)をスキャン画像データ保管領域332に保存する。
S7004では、CPU203は、S7003で得られた出力に基づいて、「原稿検知処理」を実施する。「原稿検知処理」の詳細については後述する。
S7005では、CPU203は、S7004における「原稿検知処理」の結果に基づいて、現在CIS120がいる位置において原稿があるかないかを判定する。CPU203は、「原稿検知処理」にて「原稿有り」と判定された場合は、S7006に進み、「原稿検知処理」にて「原稿無し」と判定された場合は、S7009に進む。
S7006では、CPU203は、Line_cntをインクリメントする。
S7007では、CPU203は、Line_cntが所定の閾値(Line_cnt_on)より大きいか否かを判定する。コンタクトガラス115上に原稿がある場合は、「原稿有り」と判定されるラインが一定値(Line_cnt_on)以上続くこととなる。すなわち、「原稿有り」と判定されるラインが所定の数以上続くこととなる。そのため、CPU203は、Line_cntが所定の閾値(Line_cnt_on)より大きいと判定した場合、S7008に進み、Doc_on_flgをonに設定する。すなわち、CPU203は、最終的な判定として、コンタクトガラス115上に原稿があると判定する。その後、CPU203は、S7010に進む。一方、CPU203は、Line_cntが所定の閾値(Line_cnt_on)より小さいと判定した場合、Doc_on_flgを書き換えることなく、S7010に進む。
このように、本実施形態では、主走査方向1ライン分のデータにおける判定結果のみで、原稿の有無に関する最終的な判定をせず、「原稿有り」と判定されるラインが続いた場合に、最終的な判定として、コンタクトガラス115上に原稿があると判定する。すなわち、本実施形態では、所定の閾値(DocDct_MAX_TH)以上のAbs(1−Ord_min/Osh_min)の値が、所定の数のライン分続いた場合に、最終的な判定として、コンタクトガラス115上に原稿があると判定する。これは、例えば、白色シート105やコンタクトガラス115上に、ゴミやほこり等が混入していた場合、CPU203が、ゴミやほこり等があったラインに原稿があるものと誤判定してしまう場合があるためである。なお、Line_cnt_onの値は、上述のようなケースを考慮して、任意の値が設定されて良い。Line_cnt_onの値が適切に設定されることで、最終的な判定結果として、原稿の有無を誤判定してしまうことを抑制できる。なお、本実施形態では、所定の閾値(Line_cnt_on)を、幅2mmに対応する値とし、「原稿有り」と判定されたラインが、幅2mm以上の範囲で続いた場合に、最終的な判定として、コンタクトガラス115上に原稿があると判定する。
S7009では、CPU203は、Line_cntを初期化する。具体的には、CPU203は、Line_cntを0に設定する。
S7010では、CPU203は、CIS120を次の読み取り位置に移動させた後、S7002の処理を再び実行する。すなわち、CPU203は、スキャン動作が終了するまで、原稿の読み取り及び原稿検知処理を繰り返す。なお、CPU203は、S7008にて、Doc_on_flgをonに書き換えた場合は、以降の繰り返し処理において、S7004〜S7009の処理を実行しなくても良い。すなわち、CPU203は、コンタクトガラス115上に原稿があると判定した場合は、以降の繰り返し処理において、原稿検知処理を実行せず、スキャンを終了するか否かの判定(S7002)及び原稿の読み取り(S7003)のみ実行すれば良い。
図7(A)に示す形態とすることで、MFP100は、原稿のスキャン動作と原稿検知処理を並行して行うことができる。
受け付けたスキャンジョブに基づくスキャン動作が終了した後、CPU203は、S7011にて、Doc_on_flgの状態を確認する。上述したように、コンタクトガラス115上に原稿があると判定された場合、S7008にてDoc_on_flgがonに書き換えられる。コンタクトガラス115上に原稿がある場合は、当該原稿は、スキャン動作が終了した後に速やかにユーザによって原稿台101から取り除かれることが望ましい。また、原稿が原稿台101から取り除かれるためには、原稿台カバー102が開閉される必要があるため、原稿台カバー102が開閉されたか否かを検知することによって、原稿が原稿台101から取り除かれたか否かを検知することができる。そのため、CPU203は、Doc_on_flgがonである場合は、S7012に進み、開閉検知処理を実行する。開閉検知処理とは、原稿台カバー102が開閉されたか否かを判定する処理であり、この処理により、CPU203は、スキャンされた原稿をユーザが取り忘れているか否かを判定することができる。詳細は後述するが、CPU203は、スキャンが終了してから一定時間以上、原稿台カバー102が開閉されていないと判定した場合は、スキャンされた原稿をユーザが取り忘れていると判定し、スキャンされた原稿を取り忘れている旨をユーザに報知する。具体的には、例えばCPU203は、スキャンされた原稿を取り忘れている旨を報知するための画面(例えば、図3に示す画面)をUI部215に表示させたり、スキャンされた原稿を取り忘れている旨を報知するための報知音を発生させたりする。また、例えば、CPU203は、スキャンされた原稿を取り忘れている旨を報知するための画面を、スキャンジョブを送信した外部装置に表示させるための情報を、当該外部装置に送信したりする。開閉検知処理の詳細については後述する。
一方、コンタクトガラス115上に原稿がない場合は、Line_cntが所定の閾値(Line_cnt_on)より大きくなることはなく、Doc_on_flgがoffのままとなる。そのため、CPU203は、Doc_on_flgがoffである場合は、S7013に進み、CIS120を待機位置に移動させ、開閉検知処理を実行することなく処理を終了する。すなわち、スキャンされた原稿を取り忘れている旨をユーザに報知する処理を実行せずに、処理を終了する。
このように、本実施形態は、コンタクトガラス115上に原稿が有る場合に、開閉検知処理を実行し、コンタクトガラス115上に原稿がない場合に、開閉検知処理を実行しない。これにより、本実施形態は、コンタクトガラス115上に原稿がなく、開閉検知処理を実行する必要がない場合には、開閉検知処理より生じる処理負荷を軽減することができ、次に実行すべき動作を速やかに実行することができる。さらに、コンタクトガラス115上に原稿がないにも関わらず、スキャンされた原稿を取り忘れている旨をユーザに報知してしまうことを抑制できる。
また、通常、CPU203は、外部装置から送信されたスキャンジョブに基づいてスキャン動作を実行した場合、スキャン動作終了後、読み取った画像データを外部装置に送信する。このとき、読み取られた画像データの容量や、外部装置との通信速度によっては、外部装置への画像データの送信が完了するまでに時間がかかる場合がある。これは、原稿がコンタクトガラス115上に無い状態で読み取られた画像データについても同様である。そのため、コンタクトガラス115上に原稿が無い状態でスキャンジョブが送信された場合は、ユーザが所望の画像データを得られないにもかかわらず、長時間のデータ通信が行われてしまうおそれがある。そこで、本実施形態では、CPU203は、原稿検知処理によって「原稿無し」と判定された場合は、外部装置にスキャン動作によって得られた画像データを送信しない。このような形態とすることで、原稿がコンタクトガラス115上に無い状態で取得された画像データが、外部装置に送信されてしまうことを抑制できる。
なお、CPU203は、原稿検知処理の結果が「原稿無し」である場合は、原稿がコンタクトガラス115上に無い状態で画像データを得たことを外部装置を介してユーザに報知しても良い。CPU203は、原稿がコンタクトガラス115上に無い状態で画像データを得たことを報知する場合、外部装置に、当該報知のための画面を表示させるための情報を送信する。それにより、外部装置が備える表示部に、当該報知のための画面が表示される。なお、ユーザは、この画面を介して、原稿がコンタクトガラス115上に無い状態で取得された画像データの送信をキャンセルするための指示や、当該画像データを送信させるための指示を入力することができる。すわなち、ユーザは、上記報知を確認することで、上記指示のいずれを入力するかを選択することができる。
なお、本実施形態では、CIS120による主走査方向1ライン分の読み取りとCIS120の主走査方向1ライン分の移動が交互に繰り返されるものとしたが、この形態に限定されない。例えば、CIS120による主走査方向1ライン分の読み取りにかかる時間を、CIS120の移動速度に対して充分短くし、CIS120を一定速度で移動させながらCIS120の主走査方向1ライン分の出力を取得しても良い。
<原稿検知処理について>
次に、S7004における原稿検知処理の詳細について、図7(B)を用いて説明する。本実施形態の原稿検知処理によって、スキャンジョブに基づくスキャン指定範囲がスキャンされている間に原稿台101に原稿が載置されているか否かを検知することができる。すなわち、原稿検知処理とは、原稿台101に原稿が載置されているか否かを判定するための判定処理である。図7(B)は、MFP100が実行する原稿検知処理のフローチャートを示す。なお、図7(B)に示すフローチャートは、例えば、CPU203がROM205等に格納されたプログラムをRAM204に読み出して実行することにより実現される。
S7004における原稿検知処理では、ライン単位で、原稿有無を判定する。なお、判定対象のラインは、S7003にてセンサにより読み取られたライン、すなわち、現在CISがいる位置に対応するラインである。
まず、S7101では、CPU203は、Doc_on_flgがonか否かを判定する。すなわち、CPU203は、最終的な判定として、コンタクトガラス115上に原稿があると判定されたか否かを判定する。CPU203は、Doc_on_flgがonであると判定した場合は、各ラインにおける原稿検知処理をこれ以上行う必要がないため、原稿検知処理を終了する。一方、CPU203は、Doc_on_flgがonでない(offである)と判定した場合は、S7102に進む。
S7102では、CPU203は、S7003で取得した主走査方向1ライン分の出力(Ord_on)のうち、最大値と最小値(Ord_max,Ord_min)を取得する。なお、本実施形態では、CPU203は、Ord_max/Ord_minとして、点灯色毎にそれぞれOrd_Rmax/Ord_Rmin,Ord_Gmax/Ord_Gmin,Ord_Bmax/Ord_Bminを取得可能である。ここでは、CPU203は、まだ取得していないいずれかの色に対応する最大値と最小値を得る。
このとき、Ord_max及びOrd_minの取得対象とするデータの範囲は、図6(C)のS633でOsh_Rmax/Osh_Rmin等の値を取得したときと同じデータの範囲とする。すなわち、CPU203は、例えば、コンタクトガラス115の開口部分に対向するセンサからの出力からOsh_Rmaxの値を取得していた場合、コンタクトガラス115の開口部分に対向するセンサからの出力からOrd_maxを取得する。
S7103では、CPU203は、最大値Ord_maxと、前述したシェーディング補正用データ取得中に得られた最大値(Osh_max)、が比率に換算してどれだけの差が出るかを計算する。この際、以下の判定式が用いられる。
Abs(1−Ord_max/Osh_max)
もし、Ord_maxとOsh_maxが同じような値であれば、上述の判定式の計算結果は、0に近い値となる。一方、Ord_maxとOsh_maxとの差が大きければ、上述の判定式の計算結果は1に近い値となる。本実施形態では、CPU203は、上述の判定式の計算結果が所定の閾値より大きければ、(すなわち、Ord_maxとOsh_maxとの差が大きければ)、S7106にて、判定対象のライン上に、「原稿がある」と判定する。一方、上述の判定式の計算結果が所定の閾値以下であれば、(すなわち、Ord_maxとOsh_maxとの差が小さければ)、S7104に進む。
S7104では、CPU203は、最小値Ord_minと、前述したシェーディング補正用データ取得中に得られた最小値(Osh_min)、が比率に換算してどれだけの差が出るかを計算する。この際、以下の判定式が用いられる。
Abs(1−Ord_min/Osh_min)
S7103と同様にして、上述の判定式の計算結果が所定の閾値以上であれば、(すなわち、Ord_minとOsh_minとの差が大きければ)、判定対象のライン上に、「原稿がある」と判定する。本実施形態では、CPU203は、上述の判定式の計算結果が所定の閾値より大きければ、(すなわち、Ord_minとOsh_minとの差が大きければ)、S7106にて、判定対象のライン上に、「原稿がある」と判定する。一方、上述の判定式の計算結果が所定の閾値以下であれば、(すなわち、Ord_minとOsh_minとの差が小さければ)、S7105にて、判定対象のライン上に、「原稿がない」と判定する。
S7107では、CPU203は、RGBの各色について、S7103又は/及びS7104の判定を行ったか否かの判定を行う。CPU203は、S7103又は/及びS7104の判定を行っていない色がある場合には、S7108にて判定対象の色を変更し、新たな判定対象の色について、S7102〜S7104の処理を行う。
このように、本実施形態では、CPU203は、Ord_max及びOrd_minを色毎に取得するため、上記の判定式を用いた計算を色毎に行う。そして、CPU203は、各色の計算結果のうち、1つでも所定の閾値以上の計算結果があった場合には、判定対象のライン上に、「原稿がある」と判定する。一方、所定の閾値(DocDct_MAX_TH)以上の計算結果が1つもない場合には、判定対象のライン上に、「原稿がない」と判定する。
なお、判定式1と判定式2による判定は、実質的に、各値の差が閾値より大きいか小さいかの判定と同義である。そのため、判定式1と判定式2を用いるのではなく、例えば、各値の差と閾値とを比較することで、判定対象のライン上に、「原稿がある」か「原稿がない」かを判定しても良い。具体的には、この場合、各値の差が閾値より大きい場合に、「原稿がある」と判定され、各値の差が閾値より小さい場合に、「原稿がない」と判定される。
なお、本実施形態では、最大値Ord_maxと最大値Osh_maxとの比較と、最小値Ord_minと最小値Osh_minとの比較を行っているが、これは、検出の精度を向上させるためである。例えば、ライン上に小さいごみ等が付着している場合は、ライン上に原稿が無いにも係わらず、最小値Ord_minと最小値Osh_minの差が小さくなってしまうことがある。また、例えば、ライン上に穴のあいている原稿がある場合には、最大値Ord_maxと最大値Osh_maxの差が小さくなってしまうことがある。このようなケースを考慮して、最大値同士の比較と、最小値同士の比較とを行っている。
なお、この形態に限定されず、判定に係る負荷を軽減するために、ある1点の値についてのみ比較を行う形態としても良い。あるいは、より精度を向上させるために3点以上の値について比較を行う形態としても良い。また、比較に用いられる値は、最大値や最小値に限定されず、例えば中間値や、最大値や最小値に対して所定の割合の値等、比較に適した任意の値が用いられて良い。
なお、閾値DocDct_MIN_TH及び閾値DocDct_MAX_THの決定方法については後述する。
次に、スキャン動作中に得られる出力の最大最小値とシェーディング補正用データ取得中に得られる出力の最大最小値を用いた原稿検知処理を実行可能な理由について説明する。図8は、シェーディング補正用データ取得中に得られる、R(Red)の点灯に対応する出力と、コンタクトガラス115上に原稿が無い状態のスキャン動作中に得られる、R(Red)の点灯に対応する主走査方向1ライン分の出力を示す図である。図8では、シェーディング補正用データによって表わされる出力値を実線で示しており、コンタクトガラス115上に原稿が無い状態のスキャン動作中に得られる出力を点線で示している。図8のグラフにおいて、横軸は主走査方向位置を示し、縦軸は各位置における出力値(デジタルデータ)を示す。なお、本実施形態では、白基準シート114及び白色シート105が同様の色をしており、白基準シート114及び白色シート105から反射される光から得られる出力値が近くなるものとする。この場合は、図8のように、シェーディング補正用データ取得中に得られる出力と、コンタクトガラス115上に原稿が無い状態のスキャン動作中に得られる出力が近いものとなる。従って、Ord_RminとOrd_Rminの差が非常に小さくなり、S7103及びS7104における計算結果は、共にとても小さい値(0に近い値)になる。このような理由により、CPU203は、S7103及びS7104において、計算結果が所定の閾値より小さいと判定した場合には、判定対象のライン上に、「原稿がない」と判定する。
一方、図9は、シェーディング補正用データ取得中に得られる、R(Red)の点灯に対応する出力と、コンタクトガラス115上に原稿がある状態のスキャン動作中に得られる、R(Red)の点灯に対応する主走査方向1ライン分の出力を示す図である。図9のグラフの詳細は図8のグラフと同様であるため、説明は省略する。なお、図9におけるデータの取得中にコンタクトガラス115上にある原稿は、黒色の文字が記入されている、白色の記録媒体であるものとする。スキャン中に黒色の文字部分に光が照射された場合、照射された光のうち大部分の光は黒色の文字部分に吸収され、反射されない。そのため、黒色の文字部分に対応するラインでは、センサに入力される光が少なくなり、センサから得られる出力値も小さくなる。図9において、出力値が急激に減少している部分は、黒色の文字部分に対応する。黒色の文字部分においては、シェーディング補正用データ取得中に得られる出力と、コンタクトガラス115上に原稿がある状態のスキャン動作中に得られる出力が大きく乖離することとなる。ゆえに、Ord_Rminに対してOrd_Rminが小さい値になり、S7104における計算結果が大きい値(1に近い値)となる。このような理由により、CPU203は、S7104において、計算結果が所定の閾値より大きいと判定した場合には、判定対象のライン上に、「原稿がある」と判定する。
図10は、シェーディング補正用データ取得中に得られる、G(Green)の点灯に対応する出力と、コンタクトガラス115上に原稿がある状態のスキャン動作中に得られ、G(Green)の点灯に対応する主走査方向1ライン分の出力を示す図である。図10のグラフの詳細も図8のグラフと同様であるため、説明は省略する。なお、なお、図10におけるコンタクトガラス115上にある原稿は、文字や画像が印刷されていない薄ピンク色の記録媒体であるものとする。白基準シート114より、ピンク色の記録媒体の方が光を吸収しやすいため、シェーディング補正用データ取得中に得られる出力より、コンタクトガラス115上に原稿がある状態のスキャン動作中に得られる出力が小さくなる。ゆえに、Ord_Gminに対してOrd_Gminが小さい値になり、S7104における計算結果が大きい値となる。なお、薄ピンク色の記録媒体をスキャンすることで得られる出力のうち、R(Red)の点灯に対応する出力は、シェーディング補正用データ取得中に得られる出力とあまり差が生じない。このような理由により、シェーディング補正用データ取得中に得られる出力とスキャン動作中に得られる出力との比較を、1つの点灯色だけに関して行うのではなく、各点灯色それぞれに関して行うことが好ましい。これにより、薄ピンク色の記録媒体だけでなく、例えば、薄い緑色や薄い青の記録媒体を検出することができる。
なお、本実施形態では、文字や画像が印刷されていない白色の記録媒体についても、条件によって、コンタクトガラス115上に有るか否かを検知することが可能である。コンタクトガラス115上に置かれた原稿に厚みがある場合、コンタクトガラス115から白色シート105まで隙間が生じることがある。隙間ができている領域においては、センサによって取得される出力が小さくなる。これは、隙間により白色シート105とセンサアレイ113までの距離が大きくなり、白色シート105で反射した光がセンサアレイ113に届くまでに減衰するからである。そのため、原稿の大きさ以上の範囲のスキャンを実行し、シェーディング補正用データ取得中に得られる出力と、スキャン動作中に得られる、隙間により減衰した部分の出力とを比較することで、文字や画像が印刷されていない白色の記録媒体を検知できる。なお、隙間は、コンタクトガラス115上に設置された原稿のエッジから数十mmの領域で生じやすい。本実施形態では、Line_cntが所定の閾値(Line_cnt_on)より大きいと判定したラインが、幅2mm以上の範囲で続いた場合に、最終的な判定として、コンタクトガラス115上に原稿があると判定する。そのため、上記のケースでも適切な判定ができる。
閾値DocDct_MIN_TH及び閾値DocDct_MAX_THの決定方法について説明する。閾値DocDct_MIN_TH及び閾値DocDct_MAX_THは、白基準シート114の白さと、白色シート105の白さの違いに応じて決定する。図8−10で示したように、白基準シート114と白色シート105の白さがほぼ同じであれば、コンタクトガラス115上に原稿が無い限り式1の判定式の計算結果と式2の判定式の計算結果はそれぞれほぼ0になる。従って、各閾値DocDct_MIN_TH及びDocDct_MAX_THは小さい値、例えば0.2程度に設定すればよい。これにより、Ord_minまたはOrd_maxがOsh_minまたはOsh_maxに対し80%以下の値を取った場合、コンタクトガラス115上に原稿があることを検知できるようになる。図8の例でいえば、Osh_maxは58000程度、Osh_minは4000程度である。従って、Ord_maxが52000程度になるか、Osh_minが36000程度になれば、コンタクトガラス115上に原稿があることを検知できる。
本実施形態では、白基準シート114の白さと白色シート105の白さが同等であるものとした。なお、例えば、白基準シート114に対して白色シート105がよりグレーの色である場合は、コンタクトガラス115上に原稿がないにも関わらず、式1の判定式の計算結果と式2の判定式の計算結果は大きくなってしまう。そのため、このような場合は、白基準シート114の白さと白色シート105の白さが同等である場合よりも、閾値DocDct_MIN_TH及び閾値DocDct_MAX_THを大きくする。このようにすることで、誤判定が生じてしまう可能性を抑制できる。
本実施形態では、閾値DocDct_MAX_TH及び閾値DocDct_MIN_THは点灯色によらず一定値であるが、白基準シート114と白色シート105との色差によっては点灯色によって閾値を変更してもよい。例えば、白基準シート114に対して白色シート105が赤みを帯びる傾向があったとする。この場合、白基準シート114と白色シート105との色差が小さい場合より、白色シート105におけるRの点灯色に対する出力結果が小さくなる。そのため、白基準シート114に対して白色シート105が赤みを帯びている場合、白基準シート114と白色シート105との色差が小さい場合より、Rの点灯色に対する閾値だけ大きく設定する。このようにすることで、白基準シート114と白色シート105との色差によって生じる出力値の違いによる影響を小さくすることができる。
このように、本実施形態では、シェーディング補正用データ取得中に得られる出力と、スキャン動作中に得られる出力と、を比較することで、原稿の有無を検知している。これにより、例えば、スキャン動作終了後に再度スキャン動作を実施することで得られる2つの画像データを比較することで原稿の有無を検知する方法と比較して、RAM204に保存するデータ量を少なくしたり、検知に係る処理時間を少なくすることができる。
<開閉検知処理について>
次に、S7012における開閉検知処理の詳細について、図7(C)を用いて解説する。原稿台カバー102の開閉検知は、開閉を検知するための専用のセンサを用いる方法が知られているが、本実施形態では、専用のセンサが無い構成で原稿台カバー102の開閉を検知することが可能な方法を提案する。
図7(C)は、MFP100が実行する開閉検知処理のフローチャートを示す。開閉検知処理とは、原稿台カバー102が、閉じ位置から移動したか否かを判定するための判定処理である。本実施形態の開閉検知処理によって、スキャンジョブに基づくスキャン指定範囲がスキャンされた後の所定のタイミングに原稿台101に原稿が載置されているか否かを検知することができる。そのため、開閉検知処理によってスキャンジョブに基づくスキャン指定範囲がスキャンされた後の所定のタイミングにおいて原稿が取り忘れられているか否かを検知することができる。なお、図7(C)に示すフローチャートは、例えば、CPU203がROM205等に格納されたプログラムをRAM204に読み出して実行することにより実現される。
S7201では、CPU203は、CIS120を開閉検知位置に移動させる。開閉検知位置とは、ジョブ管理APL412より依頼があったスキャン範囲のエッジの位置から、副走査方向且つ待機位置と反対方向に固定量だけさらに移動した位置とする。図11は、スキャナ部214を上方から俯瞰した際の、スキャナ部214の模式図である。図11では、S7201にてCIS120が開閉検知位置に移動した状態が示されている。範囲1102が、ジョブ管理APL412より依頼があったスキャン範囲であり、位置1101が、本実施形態における開閉検知位置である。なお、CPU203は、スキャン動作後にCIS120の駆動を停止させることなくシームレスに、CIS120を、開閉検知位置に移動させても良い。また、位置1106が待機位置であり、位置1107がスキャン動作を開始する位置、位置1103がスキャン動作を終了する位置である。
S7202では、CPU203は、開閉検知処理を開始してから所定時間が経過したか否かを判定する。CPU203は、開閉検知処理を開始してから所定時間が経過したと判定した場合、S7218に進み、開閉検知処理を開始してから所定時間が経過していないと判定した場合、S7203に進む。なお、S7202では、CPU203は、スキャン処理を開始してから所定時間が経過したか否かを判定しても良い。
S7203では、CPU203は、LED111を点灯させる。このときの各点灯色の点灯時間は、シェーディング補正用データ取得フローのS612の調光処理で決定されたTo_R、To_G、To_Bである。
S7204では、CPU203は、開閉検知位置におけるコンタクトガラス115の開口部分に対向する主走査方向1ライン分のセンサからの出力(Ocv_on)を取得する。
S7205では、CPU203は、S7204で取得された出力のうち、最大値と最小値を、点灯色毎に取得する。このとき取得される値を、点灯色毎に、Ocv_max_on_R,Ocv_min_on_R,Ocv_max_on_G,Ocv_min_on_G,Ocv_max_on_B,Ocv_min_on_Bとする。
S7206では、CPU203は、S7205の処理が初回か否かを判定する。CPU203は、S7205の処理が初回であると判定した場合、S7209に進み、S7205の処理が初回でないと判定した場合、S7207に進む。
S7209で、CPU203は、S7205で取得した値の扱い方を変更する。具体的には、CPU203は、Rの点灯色に対応する出力であるOcv_max_on_R,Ocv_min_on_RをそれぞれOcv_max_on_R_old,Ocv_min_on_R_oldとみなして保存する。同様に、CPU203は、Gの点灯色に対応する出力であるOcv_max_on_G,Ocv_min_on_Gを、それぞれOcv_max_on_G_old,Ocv_min_on_G_oldとみなして保存する。さらに、CPU203は、Bの点灯色に対応する出力であるOcv_max_on_B,Ocv_min_on_Bを、Ocv_max_on_B_old,Ocv_min_on_B_oldとみなして保存する。なおここでは、S7205で取得された値の扱い方が変更されるだけで、値自体は変更されない。
S7210では、LED111を消灯する。
S7211では、CPU203は、コンタクトガラス115の開口部分に対向する主走査方向1ライン分のセンサからの出力(Ocv_off)を取得する。なお、S7211の処理は、LED111が消灯されていること以外は、S7204の処理と同様である。
S7212では、CPU203は、S7211で取得された出力のうち、最大値と最小値を、点灯色毎に取得する。このとき取得される値を、点灯色毎に、Ocv_max_off_R,Ocv_min_off_R,Ocv_max_off_G,Ocv_min_off_G,Ocv_max_off_B,Ocv_min_off_Bとする。
S7213では、CPU203は、S7212の処理が初回か否かを判定する。CPU203は、S7212の処理が初回であると判定した場合、S7214に進み、S7212の処理が初回でないと判定した場合、S7216に進む。
S7216では、CPU203は、S7212で取得した値の扱い方を変更する。Rの点灯色に対応する出力であるOcv_max_off_R,Ocv_min_off_RをそれぞれOcv_max_off_R_old,Ocv_min_off_R_oldとみなして保存する。同様に、Gの点灯色に対応する出力であるOcv_max_off_G,Ocv_min_off_Gを、それぞれOcv_max_off_G_old,Ocv_min_off_G_oldとみなして保存する。さらに、Bの点灯色に対応する出力であるOcv_max_off_B,Ocv_min_off_Bを、Ocv_max_off_B_old,Ocv_min_off_B_oldとみなして保存する。なおここでは、S7209と同様、S7212で取得された値の扱い方が変更されるだけで、値自体は変更されない。
S7217では、CPU203は、一定時間待機する。本実施形態では、このときCPU203に待機させる時間を500m秒とするが、この値に限定されない。なお、CPU203が待機している間に、原稿カバー102が開き、原稿が取り出された後に再び原稿カバー102が閉じてしまうと、原稿カバー102が開いたことが正確に検知されない。そのため、CPU203に待機させる時間は、原稿カバー102が開いたことを検知するための十分に短い時間が用いられることが好ましい。
500m秒経過後、CPU203は、S7202以降の処理を再び行う。
S7207では、CPU203は、Ocv_max_onとOcv_max_on_oldとの差が、所定の閾値Ocv_MAX_THより大きいか否かを、点灯色毎に判定する。すなわち、CPU203は、新たに取得した出力値と、前回取得した出力値とを比較する。もし500m秒の間に、原稿台カバー102の開閉状態に変化が無ければ、新たに取得した出力値と、前回取得した出力値との差はほとんど生じない。一方、500m秒の間に、原稿台カバー102が閉じられた状態から開かれた状態に変化していれば、センサに入射する光量が変化するため、新たに取得した出力値と、前回(およそ500m秒前)取得した出力値とに差が生じる。そこで、CPU203は、Ocv_max_onとOcv_max_on_oldとの差が、所定の閾値Ocv_MAX_THより大きいと判定した場合、原稿台カバー102の開閉状態が変化したと判定し、S7219に進む。CPU203は、Ocv_max_onとOcv_max_on_oldとの差が、所定の閾値Ocv_MAX_THより小さいと判定した場合、原稿台カバー102の開閉状態が変化していないと判定し、S7208に進む。なお、閾値Ocv_MAX_THは、原稿台カバー102が閉じている状態で取得される出力と、原稿台カバー102が開いている状態で取得される出力が、どれだけ異なる可能性があるかという観点から決定される。本実施形態では、センサからデジタル値を16bitで取得しているため、センサからの出力の最大値は65535となる。そこで、本実施形態では、白色シート105の特性を考慮し、閾値Ocv_MAX_THを、原稿台カバー102が閉じている状態で取得される出力の約1/15である4000程度としている。
S7208では、CPU203は、Ocv_min_onとOcv_min_on_oldとの差が、所定の閾値Ocv_MIN_THより大きいか否かを、点灯色毎に判定する。CPU203は、Ocv_max_onとOcv_max_on_oldとの差が、所定の閾値Ocv_MAX_THより大きいと判定した場合、原稿台カバー102の開閉状態が変化したと判定し、S7219に進む。CPU203は、Ocv_max_onとOcv_max_on_oldとの差が、所定の閾値Ocv_MAX_THより小さいと判定した場合、S7209に進む。
また、S7214では、CPU203は、Ocv_max_offとOcv_max_off_oldとの差が、所定の閾値Ocv_MAX_THより大きいか否かを、点灯色毎に判定する。また、S7215では、CPU203は、Ocv_min_offとOcv_min_off_oldとの差が、所定の閾値Ocv_MIN_THより大きいか否かを、点灯色毎に判定する。なお、S7214及びS7215の判定は、消灯時の出力を比較すること以外は、S7207及びS7208と同様である。
なお、原稿検知処理と同様、判定に係る負荷を軽減するために、最大値と最小値の2点の阿多についての比較でなく、ある1点の値についてのみ比較を行う形態としても良い。あるいは、より精度を向上させるために3点以上の値について比較を行う形態としても良い。また、比較に用いられる値は、最大値や最小値に限定されず、例えば中間値や、最大値や最小値に対して所定の割合の値等、比較に適した任意の値が用いられて良い。
本実施形態では、点灯時の出力を比較する処理と消灯時の出力を比較する処理の双方を実行するものとする。これは例えば、MFP100が暗い部屋に載置されている場合等には、消灯時に原稿台カバー102が空いていない状態で得られる出力と、消灯時に原稿台カバー102が空いている状態で得られる出力とが同様の値になることがあるためである。また、例えば、MFP100が明るい部屋に載置されている場合等には、点灯時に原稿台カバー102が空いていない状態で得られる出力と、点灯時に原稿台カバー102が空いている状態で得られる出力とが同様の値になることがあるためである。点灯時の出力を比較する処理と消灯時の出力を比較する処理どちらもを実行することで、MFP100の載置環境に左右されずに、原稿台カバーの開閉を検知することができる。なお、処理負荷を軽減するために、点灯時の出力を比較する処理と消灯時の出力を比較する処理のどちらか一方の処理のみ行う形態としても良い。
上述のように、CPU203は、S7207、S7208、S7214、S7215のいずれかにおいて、「新たに取得した出力値と前回取得した出力値との差が所定の閾値より大きい」と判定した場合、原稿台カバー102の開閉状態が変化した、と判定する。原稿台カバー102の開閉状態が変化したことは、ユーザによってコンタクトガラス115上の原稿が取り除かれたことと同義とみなされる。そのため、CPU203は、S7219では、スキャンされた原稿を取り忘れている旨をユーザに報知する処理を実施せずに、待機位置1106へCIS120を移動させる。
また、CPU203は、開閉検知処理を開始してから所定時間が経過しても、原稿台カバー102の開閉状態が変化していないと判定した場合は、S7218にて、原稿を取り忘れている旨をユーザに報知する処理を実行する。
なお、本実施形態では、ジョブ管理APL412より依頼があったスキャン範囲1102のエッジの位置(スキャン動作終了位置1103)から、副走査方向且つ待機位置と反対方向に固定量だけさらに移動した位置が開閉検知位置であるものとした。しかし、開閉検知位置はこの形態に限定されず、例えば、画像データの読み取りを開始する位置であるスキャン動作開始位置や、画像データの読み取りを終了する位置であるスキャン動作終了位置等であっても良い。この場合は、コンタクトガラス115上に原稿が載置されている状態では、コンタクトガラス115上に載置されている原稿の状態を読み取ることになる。この場合も、原稿が取り除かれる前と後とで、得られる出力値が変化するため、原稿台カバー102が開閉したか、すなわち、原稿が取り除かれたか否かを適切に検知することができる。このように、開閉検知位置は、原稿が取り除かれる前と後とで、得られる出力値が変化する位置であれば良く、上述の位置に限定されない。
なお、S7202にて開閉検知処理を開始してから所定時間が経過したと判定する前に、CPU203は、外部装置から新たにスキャンジョブやコピージョブを受信したり、コピー動作やスキャン動作を必要とする処理がユーザから指示されたりすることがある。この場合は、CPU203は、即座にS7219に進み、CIS120を待機位置に戻して、次のスキャンに備えるような制御をしてもよい。
このように、本実施形態のMFP100は、シェーディング補正時に得られる出力値を用いて原稿検知処理を実行することで、従来の形態と比較して原稿検知処理にかかる負荷を軽減することができる。
また、本実施形態のMFP100は、コンタクトガラス115上に原稿が有ることが検知された場合に、開閉検知処理を実行する。このような形態とすることで、コンタクトガラス115上に原稿がない場合にスキャンされた原稿を取り忘れている旨をユーザに報知する処理が実行されてしまうことを抑制できる。
(第2実施形態)
第1実施形態で開示した原稿検知判定を、コピー動作に適用する形態について説明する。なお、第1実施形態と同様の部分については説明を省略する。
コピー動作は、スキャン工程と、スキャン工程において読み取った画像データに基づいて印刷を行う印刷工程とを含む。本実施形態では、CPU203は、コピー動作におけるスキャン工程にて原稿検知処理を実行し、原稿検知判定の結果が「原稿無し」である場合は、スキャン工程後の印刷工程を実施しない。または、原稿検知判定の結果が「原稿無し」である場合は、原稿がコンタクトガラス115上に無いことをユーザに報知してから印刷工程を実施する。
このフローについて、図7を使用して解説する。なお、S7001からS7011までの処理については第1実施形態と同様であるため、説明を省略する。
CPU203は、Doc_on_flgがonである場合、すなわち最終的な判定の結果が「原稿有り」である場合、スキャン動作によって得られた画像データをプリンタ制御モジュール421に渡し、当該画像データに基づく印刷を実行してコピー結果を得る。
一方、CPU203は、Doc_on_flgがonである場合、すなわち最終的な判定の結果が「原稿無し」である場合、印刷工程に進まず、スキャン動作によって得られた画像データを一旦RAM204に保持しておく。そして、CPU203は、原稿がコンタクトガラス115上に無い状態でコピー実行がユーザから指示されたことを、機能管理APL411の、コピー動作を管理しているアプリケーションに報知する。機能管理APL411は、その報知を受けた場合、IF制御モジュール424を使用して警告を表示するためのジョブをジョブ管理APL412に依頼する。結果、UI部215に、原稿がコンタクトガラス115上に無い状態でコピー実行がユーザから指示されたことをユーザに報知するための画面が表示される。なお、ユーザは、この画面を介して、コピー動作をキャンセルするための指示や、このままの状態でコピー動作を実行させるための指示を入力することができる。すわなち、ユーザは、上記報知を確認することで、上記指示のいずれを入力するかを選択することができる。なお、最終的な判定の結果が「原稿無し」である場合、例えば、原稿がコンタクトガラス115上に無い状態でコピー実行がユーザから指示されたことをユーザに報知するための画面の表示を行わず、印刷工程をキャンセルする形態であっても良い。
このような形態とすることで、原稿がコンタクトガラス115上に無いにもかかわらず、コピー動作が実行されてしまうことを抑制できる。
なお、第1実施形態で開示した開閉検知処理を、コピー動作時に適用しても良い。この場合、スキャン動作が終了した場合、または印刷動作が終了した場合に、図7(C)で示したような開閉検知処理が実行される。
(その他の実施形態)
上述した実施形態における原稿検知処理や開閉検知処理は、上述した形態に限定されない。すなわち、原稿検知処理や開閉検知処理は、どのような手段を用いて行われても良い。例えば、スキャン後に再度スキャン処理を実行し、得られた2つのデータを比較することで、原稿検知処理を実行しても良い。また、図示しない複数個の反射型センサなどにより構成された、原稿検知専用のセンサを用いて、原稿検知処理や開閉検知処理を実行しても良い。また、図示しないモータまたはソレノイド類のアクチュエータによって上下に作動する仕組みを有し、原稿台カバーが閉じられた状態では下方に押し込められる機構によって、開閉検知処理を実行しても良い。また、開閉検知処理においては、原稿台カバーの開閉を検知するのではなく、コンタクトガラス115上に原稿が有るか否かを検知しても良い。
また、上述の実施形態では、最終的な判定の結果が「原稿無し」である場合には、開閉検知処理を実行しない形態としたが、この形態に限定されない。MFP100は、最終的な判定の結果が「原稿無し」である場合にも開閉検知処理を実行しても良いが、所定の時間以上原稿カバー102の開閉が検知できない場合にも、報知処理が行われないように制御する。
また、上述の実施形態では、Line_cntが所定の閾値(Line_cnt_on)より大きい場合に、最終的な判定としてコンタクトガラス115上に原稿があると判定するが、この形態に限定されない。例えば、処理負荷を軽減するために、原稿検知処理にて1回でも「原稿有り」と判定された場合に、最終的な判定としてコンタクトガラス115上に原稿があると判定しても良い。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(CPUやMPU等)がプログラムを読み出して実行する処理でも実現可能である。また、プログラムは、1つのコンピュータで実行させても、複数のコンピュータを連動させて実行させるようにしてもよい。また、上記した処理の全てをソフトウェアで実現する必要はなく、処理の一部または全部をASIC等のハードウェアで実現するようにしてもよい。また、1つのCPUで全ての処理を行う形態に限らず、複数のCPUが適宜連携をしながら処理を行う形態としてもよい。また、上述した処理のうち、いずれかの処理を1つCPUが実行し、その他の処理を複数のCPUが連携しながら処理を行う形態としても良い。