(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記のように、従来技術では、主走査方向において、エッジ画像データの端から端までエッジ点の検出が行われていた。しかし、エッジ画像データでは、主走査方向の少なくとも一部においてエッジ点が存在しないことがあり、特に、名刺などの小型原稿のエッジ画像データでは、主走査方向の略半分の領域においてエッジ点が存在しないことがあった。そのため、従来技術のエッジ点の検出方法では、必要以上にエッジ点の検出が行われ、原稿の傾きを求めるまでの時間が長期化してしまう問題が生じていた。
【0005】
本明細書では、搬送される原稿の傾きを求めて傾き補正を行う画像読取装置において、原稿の傾きを求めるまでの時間を短縮する技術を開示する。
【課題を解決するための手段】
【0006】
本明細書によって開示される画像読取装置は、
原稿が載置されるトレイと、前記原稿を搬送経路に沿って搬送する搬送部と、前記搬送経路上の読取位置に配置され、前記搬送部によって搬送される前記原稿
の画像を主走査方向に並んで配置される複数の読取素子を用いて読み取る読取部と、
前記トレイにおける前記主走査方向の
中点である基準位置に対して前記主走査方向の片側に設けられ
た検知位置で、前記原稿の有無を検知する検知部と、
ユーザによる操作入力を受け付ける入力部と、制御部と、を備え、前記制御部は、前記検知部によって前記原稿が検知され
、かつ、前記入力部によって読取開始指示の入力が受付けられた場
合、前記搬送部に前記原稿を搬送させる搬送処理と、前記主走査方向と直交する副走査方向の所定範囲に亘って、前記読取部に、前記搬送処理により搬送される原稿の先端を含めた画像を読み取らせる読取処理と、前記
読取処理によって読み取られた前記所定範囲の読取画像を抽出する読取画像抽出処理と、前記所定範囲の読取画像のうち、前記基準位置上に配置された基準読取素子及び前記基準読取素子よりも前記主走査方向において前記検知部側に配置された前記読取素子を用いて読み取られた検知部側読取画像に対して、エッジ点を検索する検知部側エッジ点検索処理と、検索されたエッジ点から前記原稿の主走査方向に対する傾きを求め、前記傾きから前記読取部が読み取った読取画像の傾き補正を行う傾き補正処理と、を実行し、前記傾き補正処理では、前記検知部側エッジ点検索処理において前記基準読取素子を用いて読み取られた基準読取画像でエッジ点が検索されない場合に、前記検知部側エッジ点検索処理によって検索されたエッジ点から前記原稿の主走査方向に対する傾きを求める。
【0007】
この画像読取装置では、主走査方向の基準位置の片側に設けられた検知部により原稿が検知され、所定範囲の読取画像が抽出されると、当該読取画像のうち、基準位置の片側に相当する検知部側読取画像に対して検知部側エッジ点検索処理を実行する。そして、当該処理において、基準読取画像でエッジ点が検索されない場合には、検知部側エッジ点検索処理によって検索されたエッジ点から原稿の主走査方向に対する傾きを求める。そのため、開始点を読取画像の主走査方向における端から端まで移動させてエッジ点の検索を行う従来技術に比べて、片側だけでエッジ点の検索が済むため、エッジ点の検索に必要な時間を短縮することができ、原稿の傾きを求めるまでの時間を短縮することができる。
【0008】
また、上記の画像読取装置では、前記制御部は、更に、前記検知部側エッジ点検索処理において前記基準読取画像でエッジ点が検索された場合に、前記所定範囲の読取画像のうち、前記基準読取素子よりも前記主走査方向において前記検知部側と逆側に配置された前記読取素子を用いて読み取られた逆側読取画像に対して、エッジ点を検索する逆側エッジ点検索処理、を実行し、前記傾き補正処理では、前記検知部側エッジ点検索処理において前記基準読取画像でエッジ点が検索される場合に、前記検知部側エッジ点検索処理及び前記逆側エッジ点検索処理によって検索されたエッジ点から前記原稿の主走査方向に対する傾きを求める構成としても良い。
【0009】
この画像読取装置によれば、検知部側エッジ点検索処理において、基準読取画像でエッジ点が検索されない場合には、検知部側エッジ点検索処理のみを行い、基準読取画像でエッジ点が検索される場合には、検知部側エッジ点検索処理及び逆側エッジ点検索処理を行うので、片側だけでなく両側の探索が必要であっても適切にエッジ点を探索することができる。
【0010】
また、上記の画像読取装置では、前記制御部は、前記検知部側エッジ点検索処理において、前記基準読取画像のうち、前記読取部によって前記副走査方向に先に読み取られた側の端である先読取端を開始点とし、前記開始点から前記副走査方向へエッジ点を検索し、前記基準読取画像でエッジ点が検索されない場合に、エッジ点が検索されるまで前記開始点を前記検知部側に移動させて該開始点から前記副走査方向へのエッジ点の検索を繰り返す構成としても良い。
【0011】
この画像読取装置では、検知部側エッジ点検索処理において、開始点を基準読取画像から検知部側に移動させてエッジ点を検索する。そのため、エッジ点が存在しない読取画像の主走査方向における端部においてエッジ点を検索することが抑制され、エッジ点の検索に必要な時間を短縮することができる。また、基準読取画像でエッジ点が検索されない場合でも、エッジ点が検索されるまでエッジ点の検索を繰り返すので、基準読取画像でエッジ点が検索されない場合に、エッジ点の検索が終了され、エッジ点が検索できない事態が発生することが抑制される。
【0012】
また、上記の画像読取装置では、前記所定範囲の読取画像は、前記主走査方向及び前記副走査方向に単位画像を示す読取データが複数個並んで配置されて構成されており、前記制御部は、前記検知部側エッジ点検索処理において、前記開始点を前記主走査方向に基準データ数毎に移動させて前記エッジ点の検索を繰り返す構成としても良い。
【0013】
この画像読取装置によれば、主走査方向に並んだ全てのデータに対してエッジ点を検索する場合に比べて、エッジ点の検索に必要な時間を短縮することができ、原稿の傾きを求めるまでの時間を短縮することができる。
【0014】
また、上記の画像読取装置では、前記制御部は、前記読取画像抽出処理において、前記所定範囲の読取画像を、前記読取画像において閾値よりも低い輝度を有する前記読取データを第1データとし、前記読取画像において前記閾値よりも高い輝度を有する前記読取データを第2データとした2値化されたデータであるエッジ画像として抽出し、前記検知部側エッジ点検索処理において、前記開始点から前記副走査方向に前記エッジ画像を検索し、前記副走査方向に連続した第1データを検索した場合に、エッジ点が検索されたと判断する構成としても良い。
【0015】
画像読取装置では、通常、原稿が存在しない領域におけるエッジ画像は第2データとなり、原稿が存在する領域と原稿が存在しない領域の境界部分におけるエッジ画像は第1データとなることから、この違いを利用して境界部分、つまりエッジ点を検索することができる。しかし、原稿が存在しない領域におけるエッジ画像においても、ノイズ等により第1データが含まれることがあり、ノイズ等により第1データとなったエッジ画像を境界部分を読み取ったエッジ画像と誤検索してしまうと、原稿の傾きを正確に求めることができない。この画像読取装置によれば、副走査方向に連続した第1データを検索した場合に、エッジ点を検索するので、境界部分を誤検索してしまうことが抑制され、原稿の傾きを正確に求めることができる。
【0016】
また、上記の画像読取装置では、前記制御部は、前記検知部側エッジ点検索処理において、エッジ点が検索された後、前記開始点を前記検知部側に移動させて前記開始点から前記副走査方向に前記所定範囲に亘って検索してもエッジ点が検索されないことが連続して生じた場合に、エッジ点が検索されないと判断し、エッジ点の検索を終了する構成としても良い。
【0017】
この画像読取装置によれば、検知部側に開始点を移動させてエッジ点が検索されないことが連続して生じた場合に、エッジ点の検索を終了するので、ノイズ等により1回だけエッジ点が検索されなかった場合にエッジ点の検索を終了してしまうことが抑制され、エッジ点の検索を終了するか否かを正確に判断することができる。
【0018】
また、上記の画像読取装置では、前記制御部は、前記検知部側エッジ点検索処理において、前記基準読取画像でエッジ点が検索されない場合に、前記エッジ点が初めて検索された際の開始点へ移動する前の開始点の前記主走査方向の位置である第1位置を記憶するとともに、前記エッジ点の探索を終了した際の前記開始点の前記主走査方向の位置である第2位置を記憶し、前記制御部は、更に、前記読取画像のうち、前記主走査方向が前記第1位置となる点を開始点とし、前記開始点から前記主走査方向において前記検知部側にエッジ点を検索する基準位置側エッジ点検索処理と、前記読取画像のうち、前記主走査方向が前記第2位置となる点を開始点とし、前記開始点から前記主走査方向において前記検知部側と逆側にエッジ点を検索する端部側エッジ点検索処理と、前記傾き補正処理によって求められた傾きと、前記準位置側エッジ点検索処理及び前記端部側エッジ点検索処理によってそれぞれ求められたエッジ点とから、前記原稿の先端側の角位置を検出する原稿角位置検出処理と、前記原稿角位置検出処理によって求められた前記原稿の角位置から前記原稿の幅を求め、該幅から原稿のサイズを検出する原稿サイズ検出処理と、を実行する構成としても良い。
【0019】
この画像読取装置では、基準位置側エッジ点検索処理において主走査方向が第1位置となる点を開始点とし、読取画像の検知部側の端位置を開始点としない。また、端部側エッジ点検索処理において主走査方向が第2位置となる点を開始点とし、読取画像の検知部側と逆側の端位置を開始点としない。この画像読取装置では、読取画像の検知部側または検知部側と逆側における端位置を開始点としないことで、エッジ点の検索に必要な時間を短縮することができ、原稿のサイズを検出するまでの時間を短縮することができる。
【0020】
また、上記の画像読取装置では、前記主走査方向の基準位置は、前記主走査方向の中点である構成としても良い。
【0021】
この画像読取装置では、主走査方向の基準位置を主走査方向の中点とするので、主走査方向の基準位置が主走査方向の中点よりも主走査方向の検知部側の逆側に存在する場合に比べて、検知部側エッジ点検索処理においてエッジ点の検索に必要な時間を短縮することができる。
【0022】
また、上記の画像読取装置では、更に、前記原稿が前記主走査方向の前記検知部側に載置される載置台を備え、前記検知部は、前記載置台に位置し、前記搬送部は、載置台に前記原稿が載置されたことを前記検知部が検知すると、前記載置台に載置された前記原稿を順に搬送する構成としても良い。
【0023】
この画像読取装置では、搬送台の主走査方向の検知部側に原稿が載置され、載置台に位置する検知部によって、載置台に原稿が載置されたことが検知されると、当該原稿が搬送部により搬送され、読取部を用いて読み取られる。この画像読取装置によれば、名刺サイズなどの小さい原稿が搬送台の主走査方向の検知部側に載置され、読取部において原稿が載置されていない領域が比較的広い場合に、原稿の傾きを求めるまでの時間を短縮することができる。
【発明の効果】
【0024】
本明細書によって開示される画像読取装置では、搬送される原稿の傾きを求めて傾き補正を行う場合に、原稿の傾きを求めるまでの時間を短縮することができる。
【発明を実施するための形態】
【0026】
<実施形態>
本発明の一実施形態を、
図1ないし
図12を用いて説明する。
【0027】
1.画像読取装置の機械的構成
図1に示すように、画像読取装置1は、ユーザにより給紙トレイ2に載置された複数の原稿Gを排紙トレイ4A、4Bに搬送するとともに、搬送中の原稿Gを本体部3に含まれるCIS30を用いて読み取るシートフィードスキャナである。給紙トレイ2は、載置台の一例である。
【0028】
画像読取装置1の本体部3には、給紙トレイ2と排紙トレイ4を接続する搬送経路22が設けられており、この搬送経路22の周辺に、給紙ローラ40と、分離パッド42と、搬送ローラ44と、CIS30と、フロントセンサ(以下、Fセンサ)13と、リアセンサ(以下、Rセンサ)14と、排紙ローラ46と、切換板48と、を備える。CIS30は、読取部の一例であり、Fセンサ13は、検知部の一例である。
【0029】
給紙ローラ40は、給紙トレイ2に載置された原稿Gに当接し、摩擦力により、給紙トレイ2に載置された原稿Gを本体部3の内部へと引き込む。この際、原稿Gは、分離パッド42の摩擦力により各原稿G毎に分離され、搬送経路22へと送り出される。
【0030】
搬送ローラ44は、モータM(
図2参照)により駆動され、本体部3の内部へと引き込まれた原稿Gを搬送経路22に沿って搬送する。CIS30は、その主走査方向D1が搬送経路22に沿った搬送方向D2に直交する姿勢で搬送経路22上の読取位置L1に配置され、読取位置L1を通過する原稿Gを読み取る。
図1に上面視して示すように、CIS30の原稿Gと対向する上面に複数の読取素子31が主走査方向D1に並んで配置されており、これらの読取素子31を用いて原稿Gを読み取る。
【0031】
排紙ローラ46は、搬送ローラ44と同様にモータMにより駆動され、搬送経路22上に搬送された原稿Gを排紙トレイ4に送り出す。排紙ローラ46の搬送経路22を挟んで対向する位置に、切換板48が配置されている。切換板48は、切換部19(
図2参照)により制御されており、排紙トレイ4Aへと続く第1搬送経路22Aに沿った第1姿勢F1と、排紙トレイ4Bへと続く第2搬送経路22Bに沿った第2姿勢F2と、のいずれか一方の姿勢となるように制御される。
【0032】
第1搬送経路22Aと第2搬送経路22Bは、給紙トレイ2から排紙ローラ46に至る範囲において共通している。つまり、読取位置L1を共通するとともに、後述する検知位置L2を共通する。
【0033】
その一方、第1搬送経路22Aと第2搬送経路22Bは、排紙ローラ46から排紙トレイ4A、4Bに至る範囲において異なる。この範囲において、第1搬送経路22Aは、略直線状に設けられており、名刺などの比較的小型の原稿の搬送に用いられる。また、第2搬送経路22Bは、その一部が排紙ローラ46に沿って曲線状に設けられており、A4サイズなどの比較的大型の原稿の搬送に用いられる。
【0034】
切換板48が
図1に実線で示す第1姿勢F1である場合、原稿Gは第1搬送経路22Aに沿って搬送され、排紙トレイ4Aに排紙される。一方、切換板48が
図1に点線で示す第2姿勢F2である場合、原稿Gは第2搬送経路22Bに沿って搬送され、排紙トレイ4Bに排紙される。つまり、給紙ローラ40と搬送ローラ44と排紙ローラ46とによって、給紙トレイ2に載置された複数の原稿Gを搬送経路22に沿って搬送する搬送部15が形成されている。
【0035】
Fセンサ13は、給紙トレイ2に配置され、給紙トレイ2に原稿Gが載置された場合にオンし、給紙トレイ2に原稿Gが載置されていない場合にオフする。つまり、Fセンサ13は、搬送経路22において読取位置L1よりも上流側の検知位置L2に配置され、給紙トレイ2に原稿Gが有るか否かを検知する。Rセンサ14は、搬送経路22において読取位置L1よりも上流側であり、検知位置L2よりも下流側の検知位置L3に配置され、原稿Gが搬送経路22上の検知位置L3を通過する場合にオンし、原稿Gが検知位置L3を通過していない場合にオフする。
【0036】
図1に上面視して示すように、本実施形態では、原稿Gは給紙トレイ2に対して主走査方向の右側基準で載置され、主走査方向D1において、一点鎖線で示す中心線Pよりも右側に配置されたFセンサ13によって原稿Gの有無が検知される。そして、Fセンサ13により原稿Gが検知されると、搬送部15により原稿Gが搬送され、CIS30が有する複数の読取素子31によって原稿Gが読み取られる。中心線Pが配された主走査方向D1の中点が、基準位置の一例である。また、中心線Pよりも右側が、主走査方向D1の基準位置の片側の一例であり、主走査方向D1の検知部側の一例である。本実施形態において、主走査方向D1の検知部側は、主走査方向D1と等しい。
【0037】
そのため、
図2に実線で示すように、原稿Gが名刺などの小型の原稿である場合、原稿Gは中心線Pよりも右側に載置される。この場合、原稿Gの画像は、CIS30の複数の読取素子31のうち、中心線P上の基準読取素子31Kよりも右側に配置された右側読取素子31Rにより読み取られる。
【0038】
一方、
図2に二点鎖線で示すように、原稿GがA4サイズなどの大型の原稿である場合、原稿Gは中心線Pを亘って両側に載置される。この場合、原稿Gの画像は、基準読取素子31K、右側読取素子31Rに加えて、基準読取素子31Kよりも左側に配置された左側読取素子31Lにより読み取られる。基準読取素子31Kよりも左側は、主走査方向D1の検知部側と逆側の一例である。本実施形態において、主走査方向D1の検知部側と逆側は、主走査方向D1の逆側と等しい。
【0039】
さらに、画像読取装置1には、各種のボタンからなり、ユーザからの操作入力を受け付ける入力部11、画像読取装置1の状態を表示する液晶ディスプレイからなる表示部12が設けられている(
図2参照)。
【0040】
2.画像読取装置の電気的構成
図3に示すように、画像読取装置1は、中央処理装置(以下、CPU)20、ROM26、RAM27、画像処理部28、デバイス制御部16、アナログフロントエンド(以下、AFE)17、駆動回路18を備え、これらにバス29を介して、入力部11、表示部12、切換部19、Fセンサ13、Rセンサ14、などが接続されている。
図3に点線21で示すように、CPU20と、ROM26と、RAM27と、画像処理部28を含めたものが、制御部の一例である。
【0041】
ROM26には、画像読取装置1の動作を制御するための各種のプログラムが記憶されており、CPU20は、ROM26から読み出したプログラムに従って各部の制御を行う。デバイス制御部16は、CIS30に接続されており、CPU20からの命令に基づいて読取制御信号をCIS30に送信する。CIS30は、デバイス制御部16からの読取制御信号に基づいて、予め定められた読取領域H(
図10参照)に亘って原稿Gを読み取る。
【0042】
CIS30は、搬送経路22の読取位置L1を搬送される原稿Gに対して、各読取素子31を用いて読取領域Hに亘って繰り返し読取データを取得する。これにより、CIS30は、主走査方向D1及び主走査方向D1と直交する副走査方向D3に複数の読取データが並んで配置されて構成される読取画像G1(
図10参照)を読み取ると、読取画像G1をAFE15に出力する。
図10に示すように、読取画像G1の各読取データには、当該読取データが読み取られた受光素子及びタイミングに基づいて、主走査方向D1に延びるX軸方向のX座標、及び副走査方向D3に延びるY軸方向のY座標が設定される。
【0043】
AFE17は、CIS30に接続されており、CPU20からの命令に基づいて、CIS30から出力されるアナログ信号である読取データをデジタル信号である階調データに変換する。AFE15は、変換した階調データを、バス29を介してRAM27に記憶する。
【0044】
画像処理部28は、RAM27に記憶された階調データに2値化処理やエンハンス処理等のエッジ抽出処理を行い、エッジ画像G2に変換する。画像処理部28は、2値化処理において、予め記憶された閾値と各読取データを比較し、閾値よりも低い輝度を有する読取データを「1」に変換し、閾値よりも高い輝度を有する読取データを「0」に変換する。そのため、エッジ画像G2は、「0」と「1」で表される2値化データとなる。「1」は、第1データの一例であり、「0」は、第2データの一例である。また、画像処理部28は、RAM27に記憶された階調データに傾き補正やトリミング処理等の補正処理を行う。画像処理部28により変換されたエッジ画像G2は、RAM27に記憶される。
【0045】
駆動回路18は、モータMに接続されており、CPU20からの命令に基づいてパルス信号をモータMに送信する。モータMは、パルス信号の1パルスで、1ステップの回転角度分、回転駆動する。モータMが1ステップ分駆動すると、搬送ローラ44及び排紙ローラ46が駆動し、搬送経路22上を原稿Gが所定距離の分だけ搬送される。CPU20は、原稿Gを搬送する際に、駆動回路18を介してパルス信号をモータMに送信し、これに従って搬送部15は、そのパルス信号のパルスの数に規定距離を掛けた距離だけ原稿Gを搬送する。以後、駆動回路18がモータMに送信するパルス信号のパルスの数を、ステップ数と呼ぶ。
【0046】
3.読取処理
次に、
図3ないし
図12を参照して、画像読取装置1における原稿Gの読取処理について説明する。本実施形態では、原稿Gとして、
図10に実線で示す名刺を読み取る処理について主に説明する。
【0047】
図3は、CPU20が所定のプログラムに従って実行する読取処理のフローチャートを示す。CPU20は、給紙トレイ2に原稿Gが載置されたことがFセンサ13により検知され、入力部11を介して使用者から原稿Gの読取指示が入力されると、処理を開始する。
【0048】
CPU20は、読取処理を開始すると、駆動回路18を用いてモータMにパルス信号を送信して原稿Gの搬送を開始する(S2)とともに、ステップ数をカウントする。CPU20は、Rセンサ14を用いて搬送中の原稿Gの位置を検知し(S4:NO)、Rセンサ14がオン(S4:YES)すると、搬送経路22上の検知位置L3に原稿Gの搬送方向D2の先端が到達したことを検知する。CPU20は、Rセンサ14がオンしてから第1ステップ数ST1がカウントされた後に原稿Gの読み取りを開始する(S6)。
【0049】
CPU20は、原稿Gの読み取りを開始すると、まず、読取領域Hの先端側に設定された先端読取領域SHの先端読取画像SG1を読み取る読取画像抽出処理を実行する。
図10に示すように、先端読取領域SHは、副走査方向D3における幅Wが、原稿Gの搬送方向D2の先端を含む範囲に設定されている。そのため、先端読取画像SG1には、原稿Gの先端エッジ、つまり原稿Gの搬送方向D2における先端辺を読み取った画像が含まれる。先端読取領域SHは、所定範囲の一例である。
【0050】
また、CPU20は、画像処理部28を用いて先端読取画像SG1にエッジ抽出処理を実行する(S8)。CPU20は、先端読取領域SHの幅Wに相当する第2ステップ数ST2がカウントされるまで、先端読取画像SG1の読み取り及びエッジ抽出処理を繰り返す(S10:NO)。CPU20は、第2ステップ数ST2がカウントされると(S10:YES)、先端読取画像SG1をエッジ抽出処理した先端エッジ画像SG2をRAM27に記憶し、原稿Gの傾きθ及び原稿サイズZを検出する傾き/原稿サイズ検出処理(S12)を実行する。CPU20は、当該処理を、先端読取領域SHの読取後、読取領域Hの読取完了前に実行する。
【0051】
(傾き/原稿サイズ検出処理)
図4に、傾き/原稿サイズ検出処理のフローチャートを示す。傾き/原稿サイズ検出処理において、CPU20は、RAM27から先端エッジ画像SG2を読み出し(S32)、画像処理部28を用いて原稿Gの先端エッジに当たる読取データである先端エッジデータを検索する処理を実行する。先端エッジデータは、エッジ点の一例である。
【0052】
当該処理において、CPU20は、まず、先端エッジ画像SG2のうち、基準読取素子31K及び右側読取素子31Rを用いて読み取られた右側先端エッジ画像SGR(
図11参照)に対して先端エッジデータを検索する右側先端エッジデータ検索処理を実行する(S34)。右側先端エッジ画像SGRには、基準読取素子31Kを用いて読み取られた基準先端エッジ画像SGKが含まれる。右側先端エッジ画像SGRは、検知部側読取画像の一例であり、基準先端エッジ画像SGKは、基準読取画像の一例である。また、右側先端エッジデータ検索処理は、検知部側エッジ点検索処理の一例である。
【0053】
(右側先端エッジデータ検索処理)
図5に、右側先端エッジデータ検索処理のフローチャートを示す。右側原稿先端エッジ探索処理において、CPU20は、検索された先端エッジデータの数を示す検索データ数B、及び検索を失敗した回数を示す失敗カウンタNをゼロにし(S52、S54)、当該処理の開始時における開始点を(XM、Y0)に設定する(S56)。
図10に示すように、先端読取画像SG1及び先端エッジ画像SG2では、図面右上角の座標は(X0、Y0)で表され、図面左下角の座標は(XMAX、YT)で表される。XMは、X0とXMAXの中点を意味しており、Y0は、CIS30によって副走査方向D3に先に読み取られた側の端における読取データのY座標を意味する。先端エッジデータ検索処理では、開始点のY座標はY0に設定される。
【0054】
CPU20は、現在の開始点のX座標がXMAX以下であるかを確認し(S58)、現在の開始点のX座標がXMAXよりも大きい場合(S58:NO)、右側先端エッジデータ検索処理を終了する。一方、現在の開始点のX座標がXMAX以下である場合(S58:YES)、開始点から副走査方向D3に検索点を移動させて先端エッジデータを検索する副走査方向検索処理を実行する(S60)。
【0055】
(副走査方向検索処理)
図6に、副走査方向検索処理のフローチャートを示す。副走査方向検索処理の開始時において、検索点は開始点に等しい。副走査方向検索処理において、CPU20は、今回の検索点における読取データを確認する(S82)。
【0056】
図11は、
図10に示す先端エッジ画像SG2を、各読取データが視認できる程度に拡大した拡大図である。
図11に示すように、先端エッジ画像SG2では、通常、原稿Gが存在しない領域を読み取った読取データは「0」の2値化データで表され、先端エッジデータは「1」の2値化データで表される。
図11では、「0」の2値化データについては表示を省略し、「1」の2値化データを黒点で表示している。また、先端エッジデータなどのエッジデータは、主走査方向及び副走査方向において連続した2個の「1」の2値化データによって表され、主走査方向及び副走査方向に連続して発生することがない孤立点Bと区別される。
【0057】
CPU20は、今回の検索点が「0」である場合(S84:NO)、今回の検索点のY座標に1を加え、次回の検索点とする(S96)。CPU20は、次回の検索点のY座標がYTよりも大きいかを確認し(S98)、次回の検索点のY座標がYTよりも大きい場合(S98:YES)、検索成功フラグFをオフし(S100)、副走査方向検索処理を終了する。これにより、現在の開始点からの副走査方向検索処理において、先端エッジデータが検索されなかったことが示される。一方、次回の検索点のY座標がYT以下である場合(S98:NO)、S82からの処理を繰り返す。
【0058】
また、CPU20は、今回の検索点が「1」である場合(S84:YES)、今回の検索点の座標をRAM27に一時的に記憶する(S86)。次に、CPU20は、今回の検索点のY座標がY0よりも大きいかを確認する(S88)。CPU20は、今回の検索点のY座標がY0である場合(S88:NO)、現在の開始点からの副走査方向検索処理において、複数の検索が行われておらず、先端エッジデータの正確な検索が困難なことから、S96からの処理を繰り返す。
【0059】
一方、CPU20は、今回の検索点のY座標がY0よりも大きい場合(S88:YES)、前回の検索点が「1」であったかを確認する(S90)。具体的には、CPU20は、RAM27に前回の検索点の座標が記憶されているかを確認する。CPU20は、前回の検索点が「0」であった場合(S90:NO)、先端エッジデータか孤立点Bかの区別が困難なことから、S96からの処理を繰り返す。
【0060】
CPU20は、前回の検索点が「1」であった場合(S90:YES)、副走査方向D3に連続した「1」の2値化データが検索されたことから、先端エッジデータが検索されたと判断する。CPU20は、今回の検索点の座標を先端エッジデータの座標としてRAM27に記憶し(S92)、検索成功フラグFをオンして(S94)、副走査方向検索処理を終了する。これにより、現在の開始点からの副走査方向検索処理において、先端エッジデータが検索されたことが示される。
【0061】
CPU20は、副走査方向検索処理を終了すると、
図5に示す右側先端エッジデータ検索処理に戻り、終了した副走査方向検索処理において先端エッジデータが検索されたかを確認する(S62)。CPU20は、検索成功フラグFがオンされており、先端エッジデータが検索された場合(S62:YES)、検索データ数Bに1を加えるとともに失敗カウンタNをゼロにする(S64)。
【0062】
また、CPU20は、現在の開始点のX座標に15を加え、次回の開始点とし(S66)、S58からの処理を繰り返す。つまり、CPU20は、開始点を主走査方向D1に15毎に移動させて、先端エッジデータの検索を繰り返す。開始点のX座標に加える15は、基準データ数の一例である。
【0063】
一方、CPU20は、検索成功フラグFがオフされており、先端エッジデータが検索されなかった場合(S62:NO)、更に検索データ数Bを確認する(S68)。CPU20は、検索データ数Bがゼロであり(S68:YES)、右側先端エッジデータ検索処理において未だに先端エッジデータが検索されていない場合、失敗カウンタNを増加させることなく、処理を続行する。これによって、先端エッジデータが検索される前に、失敗カウンタNの増加により右側先端エッジデータ検索処理が終了してしまうことが防止され、先端エッジデータが検索されるまで副走査方向検索処理が繰り返される。
【0064】
CPU20は、現在の開始点のX座標を左側外部座標T1としてRAM27に記憶し(S70)、S66からの処理を繰り返す。ここで、左側外部座標T1は先端エッジデータが初めて検索された開始点へ移動する前の開始点のX座標を意味する。つまり、次のS66からの処理において、先端エッジデータが初めて検索された場合、左側外部座標T1は先端エッジデータが初めて検索された開始点へ移動する前の開始点のX座標となる。また、次のS66からの処理においても先端エッジデータが初めて検索されなかった場合、左側外部座標T1が順次更新されることで、左側外部座標T1は先端エッジデータが初めて検索された開始点へ移動する前の開始点のX座標となる。左側外部座標T1は、第1位置の一例である。
【0065】
一方、CPU20は、検索データ数Bがゼロでなく(S68:YES)、右側先端エッジデータ検索処理において既に先端エッジデータが検索されている場合、失敗カウンタNに1を加え(S72)、失敗カウンタNを確認する(S74)。CPU20は、失敗カウンタNが1である場合(S74:NO)、つまり先端エッジデータが検索されないことが連続して生じていない場合には、検索されない原因がノイズ等である可能性があることから、S66からの処理を繰り返す。
【0066】
また、CPU20は、失敗カウンタNが2である場合(S74:YES)、つまり先端エッジデータが検索されないことが連続して生じている場合には、これ以上検索を繰り返しても先端エッジデータが検索されないと判断する。CPU20は、現在の開始点のX座標を右側外部座標T2としてRAM27に記憶し(S76)、右側先端エッジデータ検索処理を終了する。
【0067】
CPU20は、右側先端エッジデータ検索処理を終了すると、
図4に示す傾き/原稿サイズ検出処理に戻り、終了した右側先端エッジデータ検索処理において基準先端エッジ画像SGKで先端エッジデータが検索されたかを確認する(S36)。具体的には、CPU20は、RAM27にX座標がXMとなる先端エッジデータの座標が記憶されているかを確認する。
【0068】
CPU20は、
図10に二点鎖線で示すように、基準先端エッジ画像SGKで先端エッジデータが検索された場合(S36:YES)、左側読取素子31Lを用いて読み取られた左側先端エッジ画像SGL(
図11参照)に対して先端エッジデータを検索する左側先端エッジデータ検索処理を実行する(S38)。
【0069】
(左側先端エッジデータ検索処理)
左側先端エッジデータ検索処理は、開始点を(XM−15、Y0)に設定する点(S56)、現在の開始点のX座標がX0以上であるかを確認する点(S58)、及び現在の開始点のX座標から15を減じ、次回の開始点とする点(S66)を除いて右側先端エッジデータ検索処理と同一であり、重複した説明を省略する。左側先端エッジデータ検索処理を実行する場合、右側先端エッジデータ検索処理において左側外部座標T1がRAM27に記憶されない。この場合、CPU20は、左側先端エッジデータ検索処理で検索された外部座標Tを左側外部座標T1としてRAM27に記憶する(S76)。
【0070】
CPU20は、左側先端エッジデータ検索処理を実行した場合、右側先端エッジデータ検索処理及び左側先端エッジデータ検索処理の両方の先端エッジデータ検索処理において検索された先端エッジデータを用いて、後述する原稿Gの傾きθを求める処理を実行する(S42)。
【0071】
一方、CPU20は、
図10に実線で示すように、基準先端エッジ画像SGKで先端エッジデータが検索されない場合(S36:NO)、左側先端エッジデータ検索処理を実行することなく、右側先端エッジデータ検索処理において検索された先端エッジデータを用いて、後述する原稿Gの傾きθを求める処理を実行する(S42)。
【0072】
CPU20は、原稿Gの主走査方向D1に対する傾きθを求める処理において、RAM27から先端エッジデータの座標を読み出す(S40)。CPU20は、左側先端エッジデータ検索処理が実行されている場合、右側先端エッジデータ検索処理及び左側先端エッジデータ検索処理において検索された先端エッジデータの座標を読み出し、左側先端エッジデータ検索処理が実行されていない場合、右側先端エッジデータ検索処理において検索された先端エッジデータの座標を読み出す。
【0073】
CPU20は、読み出した先端エッジデータの座標を直線近似し、算出された直線式をRAM27に記憶する。算出された直線式は、X軸及びY軸を用いて表わされ、直線式の傾きは、X軸方向、つまり主走査方向D1に対する傾きを表す。CPU20は、算出された直線式の傾きを、原稿Gの主走査方向D1に対する傾きθとして検出し(S42)、次に、原稿サイズZを検出する原稿サイズ検出処理を実行する(S44)。
【0074】
(原稿サイズ検出処理)
図7に、原稿サイズ検出処理のフローチャートを示す。原稿サイズ検出処理において、CPU20は、RAM27から先端エッジ画像SG2を読み出し(S102)、画像処理部28を用いて原稿サイズZを検出する処理を実行する。CPU20は、まず、原稿Gの先端エッジの左側頂点の読取データに当たる左側頂点データを検出するために、原稿Gの左側端点に当たる左側エッジデータを検索する左側エッジデータ検索処理を実行する(S104)。
【0075】
(左側エッジデータ検索処理)
図8に、左側エッジデータ検索処理のフローチャートを示す。左側エッジデータ検索処理において、CPU20は、失敗カウンタNをゼロにし(S122)、RAM27から左側外部座標T1を読み出す(S124)。CPU20は、読み出した左側外部座標T1を用いて、当該処理の開始時における開始点を(T1、YT)に設定する(S126)。左側エッジデータ検索処理では、開始点のX座標はT1に設定される。
【0076】
CPU20は、現在の開始点のY座標がY0以上であるかを確認し(S128)、現在の開始点のY座標がY0よりも小さい場合(S128:NO)、左側エッジデータ検索処理を終了する。一方、現在の開始点のY座標がY0以上である場合(S128:YES)、
図12に示すように、開始点から主走査方向D1に検索点を移動させて左側エッジデータを検索する主走査方向検索処理を実行する(S130)。
【0077】
(主走査方向検索処理)
図9に、主走査方向検索処理のフローチャートを示す。主走査方向検索処理において、CPU20は、今回の検索点における読取データを確認する(S152)。CPU20は、今回の検索点が「0」である場合(S154:NO)、今回の検索点のX座標に1を加え、次回の検索点とする(S166)。CPU20は、次回の検索点のX座標がXMAXよりも大きいかを確認し(S168)、次回の検索点のX座標がXMAXよりも大きい場合(S168:YES)、検索成功フラグFをオフし(S100)、主走査方向検索処理を終了する。一方、次回の検索点のX座標がXMAX以下である場合(S168:NO)、S152からの処理を繰り返す。
【0078】
また、CPU20は、今回の検索点が「1」である場合(S154:YES)、今回の検索点の座標をRAM27に一時的に記憶する(S156)。次に、CPU20は、今回の検索点のX座標がT1よりも大きいかを確認する(S158)。CPU20は、今回の検索点のX座標がT1である場合(S158:YES)、S166からの処理を繰り返す。
【0079】
一方、CPU20は、今回の検索点のX座標がT1よりも大きい場合(S158:YES)、前回の検索点が「1」であったかを確認する(S160)。CPU20は、前回の検索点が「0」であった場合(S160:NO)、左側エッジデータか孤立点Bかの区別が困難なことから、S166からの処理を繰り返す。
【0080】
CPU20は、前回の検索点が「1」であった場合(S160:YES)、左側エッジデータが検索されたと判断し、今回の検索点の座標を左側エッジデータの座標としてRAM27に記憶するとともに(S162)、検索成功フラグFをオンして(S164)、主走査方向検索処理を終了する。
【0081】
CPU20は、主走査方向検索処理を終了すると、
図8に示す左側エッジデータ検索処理に戻り、終了した主走査方向検索処理において左側エッジデータが検索されたかを確認する(S132)。CPU20は、検索成功フラグFがオンされており、左側エッジデータが検索された場合(S132:YES)、失敗カウンタNをゼロにする(S134)。CPU20は、現在の開始点のY座標から15を減じて次回の開始点とし(S136)、S128からの処理を繰り返す。
【0082】
一方、CPU20は、検索成功フラグFがオフされており、左側エッジデータが検索されなかった場合(S132:NO)、失敗カウンタNに1を加え(S138)、失敗カウンタNを確認する(S140)。CPU20は、失敗カウンタNが1である場合(S140:NO)、S136からの処理を繰り返す。CPU20は、失敗カウンタNが2である場合(S140:YES)、これ以上検索を繰り返しても左側エッジデータが検索されないと判断し、左側エッジデータ検索処理を終了する。
【0083】
CPU20は、左側エッジデータ検索処理を終了すると、
図7に示す原稿サイズ検出処理に戻り、終了した左側エッジデータ検索処理において検索された左側エッジデータから代表左側エッジデータを選出する(S106)。CPU20は、左側エッジデータ検索処理において1つの左側エッジデータが検索された場合、その左側エッジデータを代表左側エッジデータとして選出する。また、左側エッジデータ検索処理において複数の左側エッジデータが検索された場合、その平均や中点等を代表左側エッジデータとして選出する。
【0084】
(右側エッジデータ検索処理)
次に、CPU20は、原稿Gの先端エッジの右側頂点の読取データに当たる右側頂点データを検出するために、原稿Gの右側端点に当たる右側エッジデータを検索する右側エッジデータ検索処理を実行する(S108)。
【0085】
右側先端エッジデータ検索処理では、開始点のX座標はT2に設定され、CPU20は、
図12に示すように、開始点から主走査方向D1と逆側に検索点を移動させて原稿Gの右側エッジに当たる読取データである右側エッジデータを検索する。右側先端エッジデータ検索処理は、開始点を(T2、YT)に設定する点(S126)、主走査方向検索処理において今回の検索点のX座標がT2よりも小さいかを確認する点(S158)、主走査方向検索処理において今回の検索点のX座標から1を減じて次回の検索点とする点(S166)、次回の検索点のX座標がX0よりも小さいかを確認する点(S168)、を除いて左側エッジデータ検索処理と同一であり、重複した説明を省略する。
【0086】
CPU20は、右側エッジデータ検索処理を終了すると、終了した右側エッジデータ検索処理において検索された右側エッジデータから代表右側エッジデータを選出する(S110)。CPU20は、先端エッジデータから算出された直線式をRAM27から読み出し(S112)、当該直線式で示される直線と、当該直線に対する垂線であって代表左側エッジデータを通過する垂線との交点を、左側頂点データとして検出する(S114)。同様に、代表右側エッジデータを通過する垂線との交点を、右側頂点データとして検出する(S116)。
【0087】
CPU20は、左側頂点データと右側頂点データの座標から、原稿Gの先端エッジにおける頂点間距離、つまり原稿Gの先端辺の幅Dを算出する(S118)。ROM26には、予め原稿Gの幅Dと原稿サイズZとが対応付けられた対応表が記憶されている。CPU20は、算出された原稿Gの先端辺の幅DとROM26に記憶された対応表から原稿サイズZを検出し(S120)、原稿サイズ検出処理を終了するとともに、傾き/原稿サイズ検出処理を終了する。
【0088】
上述したように、CPU20は、読取領域Hの読取中に傾き/原稿サイズ検出処理を実行している。そして、CPU20は、、傾き/原稿サイズ検出処理において原稿Gの傾きθ及び原稿サイズZが検出されると、読取領域Hの読取中に読取画像G1の傾き補正を開始する。つまり、読取画像G1を読み取りながら読取画像G1の傾き補正を実行する。
【0089】
CPU20は、検出された原稿Gの傾きθと基準角度θKとを比較し(S14)、原稿Gの傾きθが基準角度θK以内である場合(S14:YES)、画像処理部28を用いてRAM27に記憶されている読取画像G1に対して、トリミング及び傾き補正処理を実行する(S16)。CPU20は、検出された原稿サイズZから出力用データのサイズを決定し、RAM27に記憶されている読取画像G1から原稿Gの傾きθに沿った方向に読取データを読み出し、出力用データを完成させる。
【0090】
一方、CPU20は、原稿Gの傾きθが基準角度θKよりも大きい場合(S14:NO)、RAM27に記憶されている読取画像G1に対して、トリミング処理を実行する(S18)。CPU20は、検出された原稿サイズZから出力用データのサイズを決定し、RAM27に記憶されている読取画像G1から主走査方向に沿った方向に読取データを読み出し、出力用データを完成させる。
【0091】
CPU20は、Rセンサ14がオフするまでS14〜S18の処理を繰り返す(S20:NO)。CPU20は、Rセンサ14がオフすると(S20:YES)、Rセンサ14がオフしてから第3ステップ数ST3がカウントされた後に原稿Gの読み取りを終了する(S22)とともに原稿Gの搬送を終了し(S24)、読取処理を終了する。
【0092】
4.本実施形態の効果
(1)本実施形態の画像読取装置1では、先端エッジ画像SG2の先端エッジデータを検索する際に、まず右側先端エッジ画像SGRに対して右側先端エッジデータ検索処理を実行し、当該右側先端エッジデータ検索処理において、基準先端エッジ画像SGKで先端エッジデータが検索されない場合には、左側先端エッジ画像SGLに対して先端エッジデータを検索することなく、右側先端エッジデータ検索処理において検索された先端エッジデータから原稿Gの傾きθを求める。そのため、開始点を先端エッジ画像SG2の主走査方向における端から端まで移動させて検索を行う従来技術に比べて、中心線Pに対して片側だけで先端エッジデータの検索が済むため、先端エッジデータの検索に必要な時間を短縮することができ、原稿Gの傾きθを求めるまでの時間を短縮することができる。
【0093】
(2)一方、本実施形態の画像読取装置1では、右側先端エッジデータ検索処理において、基準先端エッジ画像SGKで先端エッジデータが検索された場合、左側先端エッジ画像SGLに対して左側先端エッジデータ検索処理を実行し、右側先端エッジデータ検索処理及び左側先端エッジデータ検索処理において検索された先端エッジデータから原稿Gの傾きθを求める。そのため、中心線Pに対して両側で検索された先端エッジデータを用いて、原稿Gの傾きθを精度良く求めることができる。
【0094】
(3)本実施形態の画像読取装置1では、右側(左側)先端エッジデータ検索処理の開始時において開始点のX座標をXM(XM−15)に設定し、その後、開始点を主走査方向D1(主走査方向D1と逆側)に移動させて先端エッジデータを検索する。そのため、先端エッジ画像SG2の主走査方向D1における両端部など、先端エッジデータが存在しない部分において先端エッジデータを検索する必要がなく、先端エッジデータの検索に必要な時間を短縮することができる。
【0095】
(4)本実施形態の画像読取装置1では、右側先端エッジデータ検索処理において、基準先端エッジ画像SGKで先端エッジデータが検索されない場合でも、先端エッジデータが検索されるまで先端エッジデータの検索を繰り返すので、先端エッジデータが検索される前に先端エッジデータの検索が終了され、右側先端エッジデータ検索処理において先端エッジデータが1つも検索されない事態が発生することが抑制される。
【0096】
(5)本実施形態の画像読取装置1では、右側(左側)先端エッジデータ検索処理において、開始点のX座標を15づつ移動して先端エッジデータを検索する。また、右側(左側)エッジデータ検索処理において、開始点のY座標を15づつ移動して右側(左側)エッジデータを検索する。そのため、開始点のX座標及び又はY座標を1づつ移動してエッジデータを検索する場合に比べて、先端エッジデータの検索に必要な時間を短縮することができ、原稿Gの傾きθを求めるまでの時間を短縮することができる。
【0097】
(6)本実施形態の画像読取装置1では、右側(左側)先端エッジデータ検索処理及び右側(左側)エッジデータ検索処理において、主走査方向D1または副走査方向D3に連続した検索点がいずれも「1」である場合にエッジデータが検索されたと判断する。そのため、副走査方向に連続して発生することがない孤立点Bをエッジデータと誤検索してしまうことが抑制され、原稿Gの傾きθを正確に求めることができる。
【0098】
(7)本実施形態の画像読取装置1では、右側(左側)先端エッジデータ検索処理及び右側(左側)エッジデータ検索処理において、主走査方向D1または副走査方向D3に開始点を移動させてエッジデータを検索し、先端エッジデータ検索されないことが連続して生じた場合に、先端エッジデータの検索を終了する。そのため、ノイズ等により1回だけエッジデータが検索されなかった場合にエッジデータの検索を終了してしまうことが抑制され、エッジデータの検索終了タイミングを正確に判断することができる。
【0099】
(8)本実施形態の画像読取装置1では、左側エッジデータ検索処理において、開始点のX座標をT1に設定し、先端エッジ画像SG2の主走査方向D1の逆側における端位置、つまりX0を開始点としない。また、右側エッジデータ検索処理において、開始点のX座標をT2に設定し、先端エッジ画像SG2の主走査方向D1における端位置、つまりXMAXを開始点としない。そのため、右側(左側)エッジデータ検索処理に必要な時間を短縮することができ、原稿サイズZを求めるまでの時間を短縮することができる。
【0100】
(9)本実施形態の画像読取装置1では、中心線Pを主走査方向D1の基準位置とするので、主走査方向D1の基準位置が主走査方向D1におけるFセンサ13の位置と逆側に配置される場合に比べて、右側先端エッジデータ検索処理に必要な時間を短縮することができる。
【0101】
<他の実施形態>
本発明は上記記述及び図面によって説明した実施形態に限定されるものではなく、例えば次のような種々の態様も本発明の技術的範囲に含まれる。
(1)上記実施形態では、スキャナ機能を備えた画像読取装置1を用いて説明を行ったが、本発明はこれに限られず、プリンタ機能、コピー機能、ファクシミリ機能などを備えた複合機であっても良い。
【0102】
(2)上記実施形態では、画像読取装置1が1つのCPU20を有し、この1つのCPU20によって読取処理等の各種処理が実行される例を用いて説明を行ったが、本発明はこれに限られない。例えば、複数のCPUにより各部が構成されてもよければ、ASIC(Application Specific Integrated Circuit)などのハード回路のみにより各部が構成されてもよい。さらには、単数又は複数のCPU及びASICによって、各部が構成されてもよい。
【0103】
(3)また、CPU20が実行するプログラムは必ずしもROM26に記憶されている必要はなく、CPU20自身に記憶されていてもよければ、他の記憶装置に記憶されていても良い。
【0104】
(4)上記実施形態では、検知部が給紙トレイ2に載置されたFセンサ13である例を用いて説明を行ったが、検知部は必ずしもFセンサ13である必要はなく、また、検知部は必ずしも給紙トレイ2に載置されている必要もない。
【0105】
(5)上記実施形態では、主走査方向D1の基準位置が、主走査方向D1の中点である例を用いて説明を行ったが、基準位置は主走査方向D1において適宜変更することができる。
【0106】
(6)上記実施形態では、右側(左側)エッジデータ検索処理において、複数回の主走査方向検索処理を実行する例を用いて説明を行ったが、右側(左側)エッジデータ検索処理では、必ずしも複数個の右側(左側)エッジデータを検索する必要がなく、右側(左側)エッジデータを1つ検索した場合に右側(左側)エッジデータ検索処理を終了してもよい。
【0107】
(7)上記実施形態では、右側(左側)先端エッジデータ検索処理及び右側(左側)エッジデータ検索処理において、開始点のX座標またはY座標を15づつ移動して検索を行う例を用いて説明を行ったが、15は一例であり、2以上の整数であれば、特に限定されるものではない。