(57)【要約】      （修正有）【課題】斜行した原稿を読み取る場合に、正確に原稿のサイズを決定する。【解決手段】画像読取装置は、搬送部と、原稿トレイと、取得部と、記憶部と、所定範囲において、エッジ位置を読取画像データから決定してエッジ位置を記憶する決定部と、制御部とを備える。制御部は、エッジ位置を示す情報又は無エッジを示す情報かを判断するエッジ判断処理と、エッジ位置を示す情報と判断される最も中央画素位置から遠い画素位置を先端位置として検出する先端検出処理と、エッジ位置を示す情報と連続して判断した画素位置を連続画素位置として検出する連続エッジ検出処理と、連続画素位置のうちで中央画素位置から最も遠い位置を側端位置として検出する側端検出処理と、先端位置に基づいて上辺の直線を算出する上辺算出処理と、側端位置と上辺の直線とに基づいて頂点位置を算出する頂点位置算出処理と、頂点位置に基づき原稿幅を算出する幅算出処理と、を実行する。【選択図】図６
2019068178.tif 000002
【特許請求の範囲】
【請求項１】
原稿を副走査方向に沿って下流へ搬送する搬送部と、
副走査方向と直交する主走査方向における中央位置を基点として原稿を支持する原稿トレイであって、前記中央位置は原稿を支持する支持面の中央である原稿トレイと、
前記搬送部により前記原稿トレイから副走査方向の下流へ搬送される原稿を、主走査方向の最も上流に位置する先頭素子から主走査方向の最も下流に位置する最終素子までの主走査方向に沿った素子列からなるラインセンサで読み取ることにより複数ラインの画像データからなる読取画像データを取得する取得部と、
記憶部と、
前記先頭素子で読み取る主走査方向の画素の位置である先頭画素位置から前記最終素子で読み取る主走査方向の画素の位置である最終画素位置までの主走査方向の範囲と、前記ラインセンサで読み取られた原稿の前記複数ラインにおける副走査方向の最も上流のラインの画素位置である上流画素位置から副走査方向に沿って下流へ第１所定距離離れた画素位置までの副走査方向の範囲である副走査範囲とで囲まれた所定範囲において、エッジ位置を前記読取画像データから決定して前記エッジ位置を示す情報を前記記憶部に記憶する決定部であって、前記先頭画素位置から前記最終画素位置までの各前記上流画素位置から副走査方向に沿って下流へ前記副走査範囲において前記複数ラインの画像データが白色の画像データから黒色の画像データへ変化する場合は、最初に白色の画像データから黒色の画像データへ変化する画素の画素位置を前記エッジ位置を示す情報として前記記憶部に記憶し、前記副走査範囲において白色の画像データから黒色の画像データへ変化しない場合は、無エッジを示す情報を前記記憶部に記憶する決定部と、
制御部と、を備え、
前記制御部は、
前記素子列のうち前記中央位置に位置する中央素子で読み取る主走査方向の画素の位置である中央画素位置から前記先頭画素位置へ順に前記記憶部の記憶領域に記憶された情報が前記エッジ位置を示す情報か、又は前記無エッジを示す情報かを判断する上流エッジ判断処理と、
前記中央画素位置から主走査方向の上流の無エッジの画素位置までの間の画素位置において前記記憶部の記憶領域に記憶された情報が前記エッジ位置を示す情報と判断される最も前記中央画素位置から遠い画素位置を上流先端位置として検出する上流先端検出処理と、
前記中央画素位置から前記最終画素位置へ順に前記記憶部の記憶領域に記憶された情報が前記エッジ位置を示す情報か、又は前記無エッジを示す情報かを判断する下流エッジ判断処理と、
前記中央画素位置から主走査方向の下流の無エッジの画素位置までの間の画素位置において前記記憶部の記憶領域に記憶された情報が前記エッジ位置を示す情報と判断される最も前記中央画素位置から遠い画素位置を下流先端位置として検出する下流先端検出処理と、
前記上流の無エッジの画素位置から前記先頭画素位置までの間の画素位置において前記記憶部の記憶領域に記憶された情報が前記エッジ位置を示す情報と連続して判断した画素位置を上流連続画素位置として検出する上流連続エッジ検出処理と、
前記上流連続画素位置のうちで前記中央画素位置から最も遠い位置を上流側端位置として検出する上流側端検出処理と、
前記下流の無エッジの画素位置から前記最終画素位置までの間の画素位置において前記記憶部の記憶領域に記憶された情報が前記エッジ位置を示す情報と連続して判断した画素位置を下流連続画素位置として検出する下流連続エッジ検出処理と、
前記下流連続画素位置のうちで前記中央画素位置から最も遠い位置を下流側端位置として検出する下流側端検出処理と、
前記上流先端位置と前記下流先端位置とに基づいて上辺の直線を算出する上辺算出処理と、
前記上流側端位置と前記上辺の直線とに基づいて上流頂点位置を算出する上流頂点位置算出処理と、
前記下流側端位置と前記上辺の直線とに基づいて下流頂点位置を算出する下流頂点位置算出処理と、
前記上流頂点位置と前記下流頂点位置とに基づき主走査方向の原稿幅を算出する幅算出処理と、を実行することを特徴とする画像読取装置。
【請求項２】
前記上流エッジ判断処理は、前記中央画素位置から前記先頭画素位置へ順に第２所定距離間隔で前記記憶部の記憶領域に記憶された情報が前記エッジ位置を示す情報か、又は前記無エッジを示す情報かを判断し、
前記上流先端検出処理は、
前記上流の無エッジの画素位置から主走査方向に沿って下流へ順に１画素毎に前記記憶部の記憶領域に記憶された情報が前記エッジ位置を示す情報か、又は前記無エッジを示す情報かを判断する上流先端エッジ判断処理を含み、
前記上流先端エッジ判断処理において最初に前記記憶部の記憶領域に記憶された情報が前記エッジ位置を示す情報と判断した画素位置を前記上流先端位置として検出し、
前記下流エッジ判断処理は、前記中央画素位置から前記最終画素位置へ順に前記第２所定距離間隔で前記記憶部の記憶領域に記憶された情報が前記エッジ位置を示す情報か、又は前記無エッジを示す情報かを判断し、
前記下流先端検出処理は、
前記下流の無エッジの画素位置から主走査方向に沿って上流へ順に１画素毎に前記記憶部の記憶領域に記憶された情報が前記エッジ位置を示す情報か、又は前記無エッジを示す情報かを判断する下流先端エッジ判断処理を含み、
前記下流先端エッジ判断処理において最初に前記記憶部の記憶領域に記憶された情報が前記エッジ位置を示す情報と判断した画素位置を前記下流先端位置として検出することを特徴とする請求項１に記載の画像読取装置。
【請求項３】
前記上流連続エッジ検出処理は、
前記上流エッジ判断処理において前記記憶部の記憶領域に記憶された情報が前記エッジ位置を示す情報と判断した場合に、上流連続カウント値に１を加算する上流加算処理と、
前記上流エッジ判断処理において前記記憶部の記憶領域に記憶された情報が前記無エッジを示す情報と判断した場合に、前記上流連続カウント値に０を設定する上流リセット処理と、を含み、
前記上流加算処理において加算した前記上流連続カウント値が３以上となった画素位置を前記上流連続画素位置として検出し、
前記下流連続エッジ検出処理は、
前記下流エッジ判断処理において前記記憶部の記憶領域に記憶された情報が前記エッジ位置を示す情報と判断した場合に、下流連続カウント値に１を加算する下流加算処理と、
前記下流エッジ判断処理において前記記憶部の記憶領域に記憶された情報が前記無エッジを示す情報と判断した場合に、前記下流連続カウント値に０を設定する下流リセット処理と、を含み、
前記下流加算処理において加算した前記下流連続カウント値が３以上となった画素位置を前記下流連続画素位置として検出することを特徴とする請求項２に記載の画像読取装置。
【請求項４】
前記上流側端検出処理は、前記上流先端検出処理において前記上流先端位置を検出した後に、前記上流連続エッジ検出処理において前記上流連続画素位置を検出しなかった場合に、前記上流先端位置を前記上流側端位置として検出し、
前記下流側端検出処理は、前記下流先端検出処理において前記下流先端位置を検出した後に、前記下流連続エッジ検出処理において前記下流連続画素位置を検出しなかった場合に、前記下流先端位置を前記下流側端位置として検出することを特徴とする請求項１乃至請求項３のいずれかに記載の画像読取装置。
【請求項５】
前記上辺算出処理は、
前記上辺の直線の算出に用いる前記上流先端画素位置と前記下流先端画素位置との間の複数の画素位置のうちで隣接する２つの画素位置を結んだ直線の全ての直線の傾きの標本分散値を分散値として算出する分散値算出処理と、
前記分散値が所定値より大きい場合であり、且つ前記上辺の直線が主走査方向に沿って下流へ向かうときに、副走査方向に沿って下流へ向かう直線である場合に、前記中央画素位置と前記下流先端位置との間の画素位置における前記エッジ位置に基づいて前記上辺の直線を算出する下流上辺算出処理と、
前記分散値が前記所定値より大きい場合であり、且つ前記上辺の直線が主走査方向に沿って下流へ向かうときに、副走査方向に沿って上流へ向かう直線である場合に、前記中央画素位置と前記上流先端位置との間の画素位置における前記エッジ位置に基づいて前記上辺の直線を算出する上流上辺算出処理と、を含み、
前記分散値が所定値以下である場合に、前記上辺の直線の算出に用いる前記上流先端画素位置と前記下流先端画素位置との間の画素位置における前記エッジ位置に基づいて前記上辺の直線を算出することを特徴とする請求項１乃至請求項４のいずれかに記載の画像読取装置。
【請求項６】
前記上流頂点位置算出処理は、前記上辺の直線と直交し、且つ前記上流側端位置を通る上流垂線を算出し、前記算出した上流垂線と前記上辺の直線との交点の位置を前記上流頂点位置として算出し、
前記下流頂点位置算出処理は、前記上辺の直線と直交し、且つ前記下流側端位置を通る下流垂線を算出し、前記算出した下流垂線と前記上辺の直線との交点の位置を前記下流頂点位置として算出することを特徴とする請求項１乃至請求項５のいずれかに記載の画像読取装置。
【請求項７】
前記幅算出処理は、前記上流頂点位置と前記下流頂点位置との距離を前記原稿幅として算出することを特徴とする請求項１乃至請求項６のいずれかに記載の画像読取装置。
【請求項８】
前記上辺算出処理は、前記上流先端位置と前記下流先端位置との間に位置するエッジ位置に最小２乗法を適用することにより前記上辺の直線を算出することを特徴とする請求項１乃至請求項７のいずれかに記載の画像読取装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像読取装置に関する。
【背景技術】
【０００２】
原稿の端部である原稿エッジを検出する画像処理装置が知られている。
【０００３】
特許文献１に記載の画像処理装置は、主走査方向の中央位置において原稿先端部の原稿エッジを検出する。画像処理装置は、主走査方向の中央位置から主走査方向に沿って上流へ位置を変更しながら副走査方向の所定範囲内に原稿先端部の原稿エッジの有無を繰り返し検出し、最後に原稿エッジが有ると検出された位置を原稿の左側の頂点の位置として記憶する。画像処理装置は、同様に、主走査方向の中央位置から主走査方向に沿って下流へ位置を変更しながら副走査方向の所定範囲内に原稿先端部の原稿エッジの有無を繰り返し検出し、最後に原稿エッジが有ると検出された位置を原稿先端部の右側の頂点の位置として記憶する。そして、画像処理装置は、検出した原稿エッジから原稿先端部の直線式を算出して原稿の傾きを算出し、原稿先端部の左側と右側との２個の頂点の位置から原稿サイズを算出して、読取画像データに対して必要に応じて傾き補正処理を実行し、必要に応じて傾き補正処理を実行した読取画像データに算出した原稿サイズでトリミング処理を実行する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−１１５６１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載の画像処理装置は、最後に原稿エッジが有ると検出した位置を原稿先端部の左側又は右側の頂点の位置として記憶する。特許文献１に記載の画像処理装置が、読取開始時点において斜行した原稿を読取る場合に、斜行した原稿先端部の一部が画像処理装置の読取位置を通過してしまうことにより原稿先端部の途中の位置から読取開始し、原稿先端部の途中の位置を原稿先端部の左側又は右側の頂点の位置として誤って記憶してしまい、正確に原稿の主走査方向のサイズである原稿幅を決定することができない問題があった。
【０００６】
そこで、本発明は上述した事情に鑑みてなされ、原稿が斜行して原稿先端部を途中の位置から読取開始した場合でも、原稿の主走査方向のサイズである原稿幅を精度良く決定することができる画像読取装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、請求項１に記載の発明態様では、画像読取装置は、原稿を副走査方向に沿って下流へ搬送する搬送部と、副走査方向と直交する主走査方向における中央位置を基点として原稿を支持する原稿トレイであって、前記中央位置は原稿を支持する支持面の中央である原稿トレイと、前記搬送部により前記原稿トレイから副走査方向の下流へ搬送される原稿を、主走査方向の最も上流に位置する先頭素子から主走査方向の最も下流に位置する最終素子までの主走査方向に沿った素子列からなるラインセンサで読み取ることにより複数ラインの画像データからなる読取画像データを取得する取得部と、記憶部と、前記先頭素子で読み取る主走査方向の画素の位置である先頭画素位置から前記最終素子で読み取る主走査方向の画素の位置である最終画素位置までの主走査方向の範囲と、前記ラインセンサで読み取られた原稿の前記複数ラインにおける副走査方向の最も上流のラインの画素位置である上流画素位置から副走査方向に沿って下流へ第１所定距離離れた画素位置までの副走査方向の範囲である副走査範囲とで囲まれた所定範囲において、エッジ位置を前記読取画像データから決定して前記エッジ位置を示す情報を前記記憶部に記憶する決定部であって、前記先頭画素位置から前記最終画素位置までの各前記上流画素位置から副走査方向に沿って下流へ前記副走査範囲において前記複数ラインの画像データが白色の画像データから黒色の画像データへ変化する場合は、最初に白色の画像データから黒色の画像データへ変化する画素の画素位置を前記エッジ位置を示す情報として前記記憶部に記憶し、前記副走査範囲において白色の画像データから黒色の画像データへ変化しない場合は、無エッジを示す情報を前記記憶部に記憶する決定部と、制御部と、を備え、前記制御部は、前記素子列のうち前記中央位置に位置する中央素子で読み取る主走査方向の画素の位置である中央画素位置から前記先頭画素位置へ順に前記記憶部の記憶領域に記憶された情報が前記エッジ位置を示す情報か、又は前記無エッジを示す情報かを判断する上流エッジ判断処理と、前記中央画素位置から主走査方向の上流の無エッジの画素位置までの間の画素位置において前記記憶部の記憶領域に記憶された情報が前記エッジ位置を示す情報と判断される最も前記中央画素位置から遠い画素位置を上流先端位置として検出する上流先端検出処理と、前記中央画素位置から前記最終画素位置へ順に前記記憶部の記憶領域に記憶された情報が前記エッジ位置を示す情報か、又は前記無エッジを示す情報かを判断する下流エッジ判断処理と、前記中央画素位置から主走査方向の下流の無エッジの画素位置までの間の画素位置において前記記憶部の記憶領域に記憶された情報が前記エッジ位置を示す情報と判断される最も前記中央画素位置から遠い画素位置を下流先端位置として検出する下流先端検出処理と、前記上流の無エッジの画素位置から前記先頭画素位置までの間の画素位置において前記記憶部に記憶された情報が前記エッジ位置を示す情報と連続して判断した画素位置を上流連続画素位置として検出する上流連続エッジ検出処理と、前記上流連続画素位置のうちで前記中央画素位置から最も遠い位置を上流側端位置として検出する上流側端検出処理と、前記下流の無エッジの画素位置から前記最終画素位置までの間の画素位置において前記記憶部に記憶された情報が前記エッジ位置を示す情報と連続して判断した画素位置を下流連続画素位置として検出する下流連続エッジ検出処理と、前記下流連続画素位置のうちで前記中央画素位置から最も遠い位置を下流側端位置として検出する下流側端検出処理と、前記上流先端位置と前記下流先端位置とに基づいて上辺の直線を算出する上辺算出処理と、前記上流側端位置と前記上辺の直線とに基づいて上流頂点位置を算出する上流頂点位置算出処理と、前記下流側端位置と前記上辺の直線とに基づいて下流頂点位置を算出する下流頂点位置算出処理と、前記上流頂点位置と前記下流頂点位置とに基づき主走査方向の原稿幅を算出する幅算出処理と、を実行する。
【０００８】
請求項２に記載の具体的態様では、前記上流エッジ判断処理は、前記中央画素位置から前記先頭画素位置へ順に第２所定距離間隔で前記記憶部の記憶領域に記憶された情報が前記エッジ位置を示す情報か、又は前記無エッジを示す情報かを判断し、前記上流先端検出処理は、前記上流の無エッジの画素位置から主走査方向に沿って下流へ順に１画素毎に前記記憶部の記憶領域に記憶された情報が前記エッジ位置を示す情報か、又は前記無エッジを示す情報かを判断する上流先端エッジ判断処理を含み、前記上流先端エッジ判断処理において最初に前記記憶部の記憶領域に記憶された情報が前記エッジ位置を示す情報と判断した画素位置を前記上流先端位置として検出し、前記下流エッジ判断処理は、前記中央画素位置から前記最終画素位置へ順に前記第２所定距離間隔で前記記憶部の記憶領域に記憶された情報が前記エッジ位置を示す情報か、又は前記無エッジを示す情報かを判断し、前記下流先端検出処理は、前記下流の無エッジの画素位置から主走査方向に沿って上流へ順に１画素毎に前記記憶部の記憶領域に記憶された情報が前記エッジ位置を示す情報か、又は前記無エッジを示す情報かを判断する下流先端エッジ判断処理を含み、前記下流先端エッジ判断処理において最初に前記記憶部の記憶領域に記憶された情報が前記エッジ位置を示す情報と判断した画素位置を前記下流先端位置として検出する。
【０００９】
請求項３に記載の具体的態様では、前記上流連続エッジ検出処理は、前記上流エッジ判断処理において前記記憶部の記憶領域に記憶された情報が前記エッジ位置を示す情報と判断した場合に、上流連続カウント値に１を加算する上流加算処理と、前記上流エッジ判断処理において前記記憶部の記憶領域に記憶された情報が前記無エッジを示す情報と判断した場合に、前記上流連続カウント値に０を設定する上流リセット処理と、を含み、前記上流加算処理において加算した前記上流連続カウント値が３以上となった画素位置を前記上流連続画素位置として検出し、前記下流連続エッジ検出処理は、前記下流エッジ判断処理において前記記憶部の記憶領域に記憶された情報が前記エッジ位置を示す情報と判断した場合に、下流連続カウント値に１を加算する下流加算処理と、前記下流エッジ判断処理において前記記憶部の記憶領域に記憶された情報が前記無エッジを示す情報と判断した場合に、前記下流連続カウント値に０を設定する下流リセット処理と、を含み、前記下流加算処理において加算した前記下流連続カウント値が３以上となった画素位置を前記下流連続画素位置として検出する。
【００１０】
請求項４に記載の具体的態様では、前記上流側端検出処理は、前記上流先端検出処理において前記上流先端位置を検出した後に、前記上流連続エッジ検出処理において前記上流連続画素位置を検出しなかった場合に、前記上流先端位置を前記上流側端位置として検出し、前記下流側端検出処理は、前記下流先端検出処理において前記下流先端位置を検出した後に、前記下流連続エッジ検出処理において前記下流連続画素位置を検出しなかった場合に、前記下流先端位置を前記下流側端位置として検出する。
【００１１】
請求項５に記載の具体的態様では、前記上辺算出処理は、前記上辺の直線の算出に用いる前記上流先端画素位置と前記下流先端画素位置との間の複数の画素位置のうちで隣接する２つの画素位置を結んだ全ての直線の傾きの標本分散値を分散値として算出する分散値算出処理と、前記分散値が所定値より大きい場合であり、且つ前記上辺の直線が主走査方向に沿って下流へ向かうときに、副走査方向に沿って下流へ向かう直線である場合に、前記中央画素位置と前記下流先端位置との間の画素位置における前記エッジ位置に基づいて前記上辺の直線を算出する下流上辺算出処理と、前記分散値が前記所定値より大きい場合であり、且つ前記上辺の直線が主走査方向に沿って下流へ向かうときに、副走査方向に沿って上流へ向かう直線である場合に、前記中央画素位置と前記上流先端位置との間の画素位置における前記エッジ位置に基づいて前記上辺の直線を算出する上流上辺算出処理と、を含み、前記分散値が所定値以下である場合に、前記上辺の直線の算出に用いる前記上流先端画素位置と前記下流先端画素位置との間の画素位置における前記エッジ位置に基づいて前記上辺の直線を算出する。
【００１２】
請求項６に記載の具体的態様では、前記上流頂点位置算出処理は、前記上辺の直線と直交し、且つ前記上流側端位置を通る上流垂線を算出し、前記算出した上流垂線と前記上辺の直線との交点の位置を前記上流頂点位置として算出し、前記下流頂点位置算出処理は、前記上辺の直線と直交し、且つ前記下流側端位置を通る下流垂線を算出し、前記算出した下流垂線と前記上辺の直線との交点の位置を前記下流頂点位置として算出する。
【００１３】
請求項７に記載の具体的態様では、前記幅算出処理は、前記上流頂点位置と前記下流頂点位置との距離を前記原稿幅として算出する。
【００１４】
請求項８に記載の具体的態様では、前記上辺算出処理は、前記上流先端位置と前記下流先端位置との間に位置するエッジ位置に最小２乗法を適用することにより前記上辺の直線を算出する。
【発明の効果】
【００１５】
請求項１に記載の発明態様では、上流エッジ判断処理は、中央画素位置から先頭画素位置へ順に記憶部の記憶領域に記憶された情報がエッジ位置を示す情報か、又は無エッジを示す情報かを判断する。上流先端検出処理は、中央画素位置から主走査方向の上流の無エッジの画素位置までの間の画素位置において記憶部の記憶領域に記憶された情報がエッジ位置を示す情報と判断される最も中央画素位置から遠い画素位置を上流先端位置として検出する。よって、中央画素位置から主走査方向に沿って上流へ連続してエッジ位置が検出される最も遠い画素位置を上流先端位置として検出することができる。
【００１６】
下流エッジ判断処理は、中央画素位置から最終画素位置へ順に記憶部の記憶領域に記憶された情報がエッジ位置を示す情報か、又は無エッジを示す情報かを判断する。下流先端検出処理は、中央画素位置から主走査方向の下流の無エッジの画素位置までの間の画素位置において記憶部の記憶領域に記憶された情報がエッジ位置を示す情報と判断される最も中央画素位置から遠い画素位置を上流先端位置として検出する。よって、中央画素位置から主走査方向に沿って下流へ連続してエッジ位置が検出される最も遠い画素位置を下流先端位置として検出することができる。
【００１７】
上流連続エッジ検出処理は、上流の無エッジの画素位置から前記先頭画素位置までの間の画素位置において記憶部の記憶領域に記憶された情報がエッジ位置を示す情報と連続して判断した画素位置を上流連続画素位置として検出する。上流側端検出処理は、上流連続画素位置のうちで中央画素位置から最も遠い位置を上流側端位置として検出する。下流連続エッジ検出処理は、下流の無エッジの画素位置から前記最終画素位置までの間の画素位置において記憶部の記憶領域に記憶された情報がエッジ位置を示す情報と連続して判断した画素位置を下流連続画素位置として検出する。下流側端検出処理は、下流連続画素位置のうちで中央画素位置から最も遠い位置を下流側端位置として検出する。よって、原稿が斜行して原稿先端部を途中の位置から読取開始した場合でも、中央画素位置から最も遠い位置を側端位置とすることで、上流側端位置、および下流側端位置を検出することができる。
【００１８】
上辺算出処理は、上流先端位置と下流先端位置とに基づいて上辺の直線を算出する。上流頂点位置算出処理は、上流側端位置と上辺の直線とに基づいて上流頂点位置を算出する。下流頂点位置算出処理は、下流側端位置と上辺の直線とに基づいて下流頂点位置を算出する。幅算出処理は、上流頂点位置と下流頂点位置とに基づき主走査方向の原稿幅を算出する。よって、原稿の先端位置に基づき算出した上辺の直線と、上流側端位置と、下流側端位置とに基づいて算出した上流頂点位置、および下流頂点位置に基づき原稿幅を算出するため、原稿が斜行して原稿先端部を途中の位置から読取開始した場合でも、原稿の主走査方向の原稿幅を精度良く算出することができる。
【００１９】
請求項２に記載の具体的態様では、上流エッジ判断処理は、中央画素位置から先頭画素位置へ順に第２所定距離間隔で記憶部の記憶領域に記憶された情報がエッジ位置を示す情報か、又は無エッジを示す情報かを判断する。上流先端エッジ判断処理は、上流の無エッジの画素位置から主走査方向に沿って下流へ順に１画素毎に記憶部の記憶領域に記憶された情報がエッジ位置を示す情報か、又は無エッジを示す情報かを判断する。下流エッジ判断処理は、中央画素位置から最終画素位置へ順に第２所定間隔で記憶部の記憶領域に記憶された情報がエッジ位置を示す情報か、又は無エッジを示す情報かを判断する。下流先端エッジ判断処理は、下流の無エッジの画素位置から主走査方向に沿って上流へ順に１画素毎に記憶部の記憶領域に記憶された情報がエッジ位置を示す情報か、又は無エッジを示す情報かを判断する。よって、第２所定距離間隔でエッジ位置を示す情報か、又は無エッジを示す情報かを判断した後に、順に１画素毎にエッジ位置を示す情報か、又は無エッジを示す情報かを判断しているため、速く、且つ精度良く上流先端位置、および下流先端位置を検出することができる。
【００２０】
請求項３に記載の具体的態様では、上流加算処理は、エッジ位置を示す情報と判断した場合に、上流連続カウント値に１を加算する。上流リセット処理は、無エッジを示す情報と判断した場合に、上流連続カウント値に０を設定する。上流連続エッジ検出処理は、上流連続カウント値が３以上となった画素位置を上流連続画素位置として検出する。下流加算処理は、エッジ位置を示す情報と判断した場合に、下流連続カウント値に１を加算する。下流リセット処理は、無エッジを示す情報と判断した場合に、下流連続カウント値に０を設定する。下流連続エッジ検出処理は、下流連続カウント値が３以上となった画素位置を下流連続画素位置として検出する。よって、３以上となった画素位置をそれぞれの連続画素位置として検出するため、ノイズや異物等によって誤ってエッジ位置を示す情報と判断した場合でも、精度良く上流連続画素位置、および下流連続画素位置を検出することができる。
【００２１】
請求項４に記載の具体的態様では、上流側端検出処理は、上流先端検出処理において上流先端を検出した後に、上流連続エッジ検出処理において上流連続画素位置を検出しなかった場合に、上流先端位置を上流側端位置として検出する。下流側端検出処理は、下流先端検出処理において下流先端を検出した後に、下流連続エッジ検出処理において下流連続画素位置を検出しなかった場合に、下流先端位置を下流側端位置として検出する。よって、上流連続画素位置、または下流連続画素位置が検出されない場合でも、上流側端位置、および下流側端位置を検出することができる。
【００２２】
請求項５に記載の具体的態様では、分散値算出処理は、上辺の直線の算出に用いる上流先端画素位置と下流先端画素位置との間の複数の画素位置のうちで隣接する２つの画素位置を結んだ直線の全ての直線の傾きの標本分散値を分散値として算出する。下流上辺算出処理は、分散値が所定値より大きい場合であり、且つ上辺の直線が主走査方向に沿って下流へ向かうときに、副走査方向に沿って下流へ向かう直線である場合に、中央画素位置と下流先端位置との間の画素位置におけるエッジ位置に基づいて上辺の直線を算出する。上流上辺算出処理は、分散値が所定値よりも大きい場合であり、且つ上辺の直線が主走査方向に沿って下流へ向かうときに、副走査方向に沿って上流へ向かう直線である場合に、中央画素位置と上流先端画素位置との間の画素位置におけるエッジ位置に基づいて上辺の直線を算出する。上辺算出処理は、分散値が所定値以下である場合に、上辺の直線の算出に用いる上流先端画素位置と下流先端画素位置との間の画素位置におけるエッジ位置に基づいて上辺の直線を算出する。よって、原稿が斜行することにより上流先端位置、または下流先端位置を誤検出した場合でも、精度良く上辺の直線を算出することができる。
【００２３】
請求項６に記載の具体的態様では、上流頂点位置算出処理は、上辺の直線と直交し、且つ上流側端位置を通る上流垂線を算出し、上流垂線と上辺の直線との交点の位置を上流頂点位置として算出する。下流頂点位置算出処理は、上辺の直線と直交し、且つ下流側端位置を通る下流垂線を算出し、下流垂線と上辺の直線との交点の位置を下流頂点位置として算出する。よって、上流頂点位置、および下流頂点位置を精度良く算出することができる。
【００２４】
請求項７に記載の具体的態様では、幅算出処理は、上流頂点位置と下流頂点位置との距離を原稿幅として算出する。よって、原稿幅を精度良く算出することができる。
【００２５】
請求項８に記載の具体的態様では、上辺算出処理は、上流先端位置と下流先端位置との間に位置するエッジ位置に最小２乗法を適用することにより上辺の直線を算出する。よって、上流先端位置と下流先端位置との２つの位置から直線を算出するよりも、精度良く上辺の直線を算出することができる。
【図面の簡単な説明】
【００２６】
【図１】画像読取装置１の内部構成を示す正面図である。
【図２】画像読取装置１の読取部２４の構成を拡大して示す図面である。
【図３】読取部２４の受光部３１の構成を示すブロック図である。
【図４】画像読取装置１の電気的構成を示すブロック図である。
【図５】読取メイン処理を示すフローチャートである。
【図６】上流側頂点位置ＵＨＶＰ、および下流側頂点位置ＤＨＶＰ算出処理Ｒ３を示すフローチャートである。
【図７】上流位置検出処理ＲＡ２を示すフローチャートである。
【図８】最上流先端位置ＵＨＰ検出処理ＲＢ１を示すフローチャートである。
【図９】最上流側端位置ＵＳＰ検出処理ＲＢ３を示すフローチャートである。
【図１０】下流位置検出処理ＲＡ３を示すフローチャートである。
【図１１】先端直線ＨＥＬ算出処理ＲＡ４を示すフローチャートである。
【図１２】（Ａ）主走査位置ＭＤＰ、およびエッジ位置ＥＰのＲＡＭ４２における記憶状態を説明する図面である。（Ｂ）主走査位置ＭＤＰ、およびエッジ位置ＥＰの位置を説明する図面である。
【図１３】最下流先端位置ＤＨＰ検出処理ＲＥ１を示すフローチャートである。
【図１４】最下流側端位置ＤＳＰ検出処理ＲＥ３を示すフローチャートである。
【発明を実施するための形態】
【００２７】
＜画像読取装置１の機械的構成＞
画像読取装置１について図面を参照して説明する。図１において、上下方向および前後方向は矢印により示される。搬送方向ＦＤは、図１および図２において、矢印により示される。主走査方向ＭＤは、図３において、矢印により示される。
【００２８】
図１において、画像読取装置１は、給紙トレイ２と、本体部３と、排紙トレイ４とを備える。操作部５、および表示部６が、本体部３の上面に配置される。操作部５は、電源スイッチ、および各種設定ボタンを含み、使用者からの操作指令等を受け付ける。例えば、操作部５は、読取動作の開始を指示する開始ボタンなどを含む。表示部６は、ＬＣＤを含み、画像読取装置１の状況を表示する。原稿ＧＳは、給紙トレイ２の支持面の主走査方向ＭＤの中央位置と、原稿ＧＳの主走査方向ＭＤの中央位置とが一致するように載置される。
【００２９】
搬送経路２０が、本体部３の内部に形成される。給紙トレイ２に支持された原稿ＧＳは、搬送経路２０に沿って搬送方向ＦＤに搬送され、排紙トレイ４に排出される。給紙ローラ２１と、分離パッド２２と、一対の上流側搬送ローラ２３と、読取部２４と、プラテンガラス２５と、一対の下流側搬送ローラ２６とが、搬送経路２０に沿って配置される。
【００３０】
給紙ローラ２１は、分離パッド２２と協働して、複数枚の原稿ＧＳを、１枚ずつ給送する。給紙ローラ２１、上流側搬送ローラ２３、および下流側搬送ローラ２６は、搬送モータＭＴ（図４参照）により駆動される。プラテンガラス２５は、光透過性を有し、搬送経路２０の下側において搬送経路２０に沿って配置される。搬送ローラ２３、２６は、搬送経路２０において主走査方向の中央位置に配置され、給紙ローラ２１から給送された原稿ＧＳが所定の間隔でプラテンガラス２５の上を通過するように原稿ＧＳを搬送する。
【００３１】
本実施形態では、原稿ＧＳの読み取り面が給紙トレイ２の支持面に向くように原稿ＧＳが給紙トレイ２に支持される。読取部２４は、搬送経路２０の下側に配置され、プラテンガラス２５を通過する原稿ＧＳの読み取り面の画像を読み取る。原稿センサ２７が、給紙トレイ２に配置され、給紙トレイ２に原稿ＧＳが支持されたときにオンし、給紙トレイ２に原稿ＧＳが支持されていないときにオフするように構成される。
【００３２】
（読取部２４の詳細な構成）
読取部２４の詳細な構成について図２および図３を参照して説明する。図２において、読取部２４は、光源３０と、受光部３１と、ロッドレンズアレイ３２とを備える。光源３０は、赤色、緑色、および青色の３色の発光ダイオードを含む。光源３０から出射された光が原稿ＧＳの読み取り面などにより反射されたときに、ロッドレンズアレイ３２は、反射光を受光部３１に結像する。本実施形態において、３色の発光ダイオードが順次点灯することにより１ラインの原稿ＧＳの画像が読み取られる。光源３０は、３色の発光ダイオードが備えられた１チップの発光ダイオードと、発光ダイオードからの光を主走査方向ＭＤに導光する導光体とを含む。
【００３３】
白色基準板３４が、読取部２４と搬送経路２０を介して対向する位置に、配置される。白色基準板３４は、原稿ＧＳの背景色である白色と同じ反射率を有する。搬送経路２０に原稿ＧＳが存在しない場合に、光源３０からの出射光は、白色基準板３４により反射され、その反射光はロッドレンズアレイ３２を介して受光部３１により受光される。
【００３４】
図３において、受光部３１は、主走査方向ＭＤに直線状に配列される１２個のセンサＩＣチップＣＨ１〜ＣＨ１２（以下、チップＣＨ１〜ＣＨ１２という）と、図示しないアナログシフトレジスタと、を有する。各チップＣＨ１〜ＣＨ１２は、主走査方向ＭＤに配列される２４８１個の光電変換素子３３を含む。各光電変換素子３３の受光量が電荷として蓄積され、その電荷が各画素の電気信号としてアナログシフトレジスタに出力される。アナログシフトレジスタは、光電変換素子３３と同数の画素の電気信号を蓄積できる。各光電変換素子３３とアナログシフトレジスタの各レジスタとがそれぞれ接続されている。アナログシフトレジスタから出力された電気信号は図示しない増幅器を介してアナログ信号として出力される。先頭画素は、主走査方向ＭＤの最上流の位置にあるチップＣＨ１内のチップと隣接していない側の端部にある先頭素子で読み取られる画素であり、最終画素は、主走査方向ＭＤの最下流の位置にあるチップＣＨ１２内のチップと隣接していない側の端部にある最終素子で読み取られる画素である。原稿トレイ２の支持面の主走査方向ＭＤの中央位置に対向する位置にある中央画素は、チップＣＨ７に含まれる１２４１画素目の中央素子で読み取られる画素である。１ラインは、この先頭画素から最終画素までの画素で構成される画素群である。後述する主走査位置ＭＤＰについて、先頭画素位置に対応する主走査位置ＭＤＰは、「１」であり、中央画素位置に対応する主走査位置ＭＤＰは、「１２４１」であり、最終画素位置に対応する主走査位置ＭＤＰは、「２４８１」である。
【００３５】
＜画像読取装置１の電気的構成＞
画像読取装置１の電気的構成について図４を参照して説明する。図４において、画像読取装置１は、ＣＰＵ４０、ＲＯＭ４１、ＲＡＭ４２、フラッシュＲＯＭ４３、デバイス制御部４４、アナログフロントエンド（以下、ＡＦＥという）４５、画像処理部４６、エッジ位置検出部４９、および駆動回路４７を主な構成要素として備える。これらの構成要素は、バス４８を介して、操作部５、表示部６、および原稿センサ２７に接続される。
【００３６】
ＲＯＭ４１は、後述する読取メイン処理、読取メイン処理中のサブルーチンの処理など、画像読取装置１の各種動作を実行するためのプログラムを記憶する。ＣＰＵ４０は、ＲＯＭ４１から読み出されたプログラムに従って、各部の制御を行う。フラッシュＲＯＭ４３は、読み書き可能な不揮発性メモリであり、ＣＰＵ４０の制御処理により設定される各種のデータ、例えば初期化するときに使用する各データなどを記憶する。ＲＡＭ４２は、ＣＰＵ４０の制御処理により生成された算出結果などを一時的に記憶する。
【００３７】
デバイス制御部４４は、読取部２４に接続され、ＣＰＵ４０からの命令に基づいて、光源３０の点灯または消灯を制御する信号、および光源３０に流れる電流値を制御する信号を光源３０に送信する。また、デバイス制御部４４は、図３に示すように、ＣＰＵ４０からの命令に基づいて、受光部３１の各チップＣＨ１〜ＣＨ１２の多数の光電変換素子３３の電気信号を同時にアナログシフトレジスタの各レジスタに転送するためのシリアルイン信号ＳＩおよびアナログシフトレジスタの電気信号を順番に１画素ずつ出力させるためのクロック信号ＣＬＫを受光部３１に送信する。読取部２４は、デバイス制御部４４からこれらの制御信号を受け取ると、光源３０を点灯させるとともに、受光部３１が受光した受光量に応じたアナログ信号をＡＦＥ４５に送信する。
【００３８】
ＡＦＥ４５は、読取部２４に接続され、ＣＰＵ４０からの命令に基づいて、読取部２４から送信されるアナログ信号をデジタルデータに変換する。ＡＦＥ４５は、予め定められた入力レンジおよび分解能を有する。例えば、分解能は、１０ビットであるならば「０」から「１０２３」の階調である。この場合に、ＡＦＥ４５は、読取部２４から送信されたアナログ信号をデジタルデータとして１０ビット（０〜１０２３）の階調データに変換する。ＡＦＥ４５によって変換されたデジタルデータは、画像処理部４６と、エッジ位置検出部４９とに送信される。
【００３９】
画像処理部４６は、画像処理用の専用ＩＣであるＡＳＩＣから構成され、デジタルデータに各種の画像処理を施す。画像処理は、ガンマ補正などの補正処理である。画像処理部４６は、画像処理をデジタルデータに施し、デジタル画像データを生成する。そのデジタル画像データは、バス４８を介してＲＡＭ４２に記憶される。
【００４０】
エッジ位置検出部４９は、特開２０１６−５１８６号公報と同様の方法により、搬送方向ＦＤの最も上流のラインである最上流ラインから５００ライン目のラインまでの範囲のデジタルデータに対してエッジの位置を検出し、主走査方向ＭＤの先頭画素から最終画素までの各画素位置である主走査位置ＭＤＰにおけるエッジデータＥＤをＲＡＭ４２に記憶する。具体的には、エッジ位置検出部４９は、主走査位置ＭＤＰにおいて、搬送方向ＦＤの最上流ラインの位置から５００ライン目のラインの位置までで最初に検出したエッジの位置であるエッジ位置ＥＰをエッジデータＥＤとしてＲＡＭ４２に記憶し、主走査位置ＭＤＰにおいて、搬送方向ＦＤの最上流ラインの位置から５００ライン目のラインの位置までにエッジが検出されなかったときに無エッジＮＥであることを示す「０」をエッジデータＥＤとしてＲＡＭ４２に記憶する。エッジ位置ＥＰは、白色のデジタルデータが黒色のデジタルデータへ変化した画素の位置である。エッジ位置検出部４９は、図１２（Ａ）に示すように、３画素目の画素位置に１６０ライン目の位置でエッジが検出された場合は、主走査位置ＭＤＰとして「３」、エッジデータＥＤとして「１６０」がＲＡＭ４２に記憶される。エッジ位置検出部４９は、図１２（Ａ）に示すように、１画素目の画素位置にエッジが検出されなかった場合は、主走査位置ＭＤＰとして「１」、エッジデータＥＤとして「０」がＲＡＭ４２に記憶される。
【００４１】
駆動回路４７は、搬送モータＭＴに接続され、ＣＰＵ４０から送信される駆動指令に基づいて搬送モータＭＴを駆動する。駆動回路４７は、駆動指令により指令された回転量および回転方向に従って搬送モータＭＴを回転させる。搬送モータＭＴが所定量だけ回転すると、給紙ローラ２１、および搬送ローラ２３、２６が所定角度回転し、搬送経路２０において原稿ＧＳが所定距離だけ搬送される。
【００４２】
＜画像読取装置１の動作＞
次に、画像読取装置１の動作について図面を参照して説明する。画像読取装置１は、原稿ＧＳを読み取る読取メイン処理を主に実行する。読取メイン処理中の処理Ｒ１〜Ｒ５、および各サブルーチンの処理は、ＣＰＵ４０が実行する処理である。
【００４３】
（読取メイン処理）
図５に示す読取メイン処理は、ユーザが原稿ＧＳを給紙トレイ２に載置し、操作部５の読取開始ボタンを押下することにより、開始される。即ち、ＣＰＵ４０は、原稿センサ２７がオンであるときに、操作部５から読取開始指令を受け取ると、読取メイン処理を開始する。
【００４４】
ＣＰＵ４０は、デバイス制御部４４、ＡＦＥ４５、画像処理部４６、およびエッジ位置検出部４９を初期化する（Ｒ１）。具体的には、ＣＰＵ４０は、処理Ｒ２から処理Ｒ５において、主走査方向ＭＤに３００ＤＰＩ、および搬送方向ＦＤに３００ＤＰＩの解像度で読取動作を実行するために必要な設定値を、デバイス制御部４４、ＡＦＥ４５、画像処理部４６、およびエッジ位置検出部４９に設定する。ＣＰＵ４０は、連続カウント値ＣＣＴに「０」を設定する。
【００４５】
ＣＰＵ４０は、原稿ＧＳを搬送させて読取動作を開始する（Ｒ２）。具体的には、ＣＰＵ４０は、駆動回路４７に駆動指令を送信し、原稿ＧＳが読取開始位置まで搬送されたときに、読取動作を開始する。読取開始位置は、原稿ＧＳの先端が読取部２４と対向する位置から搬送方向ＦＤに沿って上流へ「８．５ｍｍ」離れた位置である。原稿ＧＳは、搬送経路２０の主走査方向ＭＤにおける中央位置で搬送されるため、搬送経路２０の主走査方向ＭＤにおける中央位置において読取部２４は原稿ＧＳの先端が到達する前に読取開始する。一方、原稿ＧＳが傾いて搬送される場合、即ち斜行した場合には、搬送経路２０の主走査方向ＭＤにおける中央位置から主走査方向ＭＤに離れた位置において原稿ＧＳの先端の一部が読取部２４を通過した後に、読取開始することもある。ＣＰＵ４０は、読取動作が開始されると、画像処理部４６によりデジタル画像データをＲＡＭ４２に記憶させ、エッジ位置検出部４９により主走査位置ＭＤＰ、およびエッジ位置ＥＰをＲＡＭ４２に記憶させる。本実施形態では、読取開始位置は、原稿ＧＳの先端が読取部２４と対向する位置から搬送方向ＦＤに沿って上流へ「８．５ｍｍ」離れた位置である。そのため、原稿ＧＳの先端は、斜行していない場合には、１００ライン目の位置となる。
【００４６】
ＣＰＵ４０は、上流側頂点位置ＵＨＶＰ、および下流側頂点位置ＤＨＶＰを算出する（Ｒ３）。詳細は後述するため、ここでは概説する。各位置については、図１２（Ｂ）に図示する。ＣＰＵ４０は、最上流先端位置ＵＨＰ、最上流側端位置ＵＳＰ、最下流先端位置ＤＨＰ、および最下流側端位置ＤＳＰを検出する。ＣＰＵ４０は、最上流先端位置ＵＨＰと最下流先端位置ＤＨＰとの間に位置する直線エッジ位置ＬＥＰを抽出して、抽出した直線エッジ位置ＬＥＰに基づき先端直線ＨＥＬを算出する。ＣＰＵ４０は、最上流側端位置ＵＳＰを通り、且つ先端直線ＨＥＬと直交する上流垂線ＵＰＬと先端直線ＨＥＬとの交点の位置を上流側頂点位置ＵＨＶＰとしてＲＡＭ４２に記憶する。ＣＰＵ４０は、最下流側端位置ＤＳＰを通り、且つ先端直線ＨＥＬと直交する下流垂線ＤＰＬと先端直線ＨＥＬとの交点の位置を下流側頂点位置ＤＨＶＰとしてＲＡＭ４２に記憶する。
【００４７】
ＣＰＵ４０は、読取動作を停止して原稿ＧＳを排紙トレイ４へ排出する（Ｒ４）。具体的には、ＣＰＵ４０は、原稿ＧＳが読取終了位置まで搬送されたときに、読取動作を終了し、駆動回路４７に駆動指令を送信し、原稿ＧＳを排紙トレイ４に排出する。読取終了位置は、原稿ＧＳの後端が読取部２４と対向する位置である。
【００４８】
ＣＰＵ４０は、デジタル画像データに補正処理を実行する（Ｒ５）。具体的には、ＣＰＵ４０は、先端直線ＨＥＬから直線の傾きを算出し、原稿ＧＳの先端を示す先端直線ＨＥＬが主走査方向ＭＤと平行となるように、デジタル画像データを回転させる。ＣＰＵ４０は、上流側頂点位置ＵＨＶＰと下流側頂点位置ＤＨＶＰとの距離を主走査方向ＭＤの原稿幅として算出し、回転させたデジタル画像データを主走査方向ＭＤの中央画素位置を中心として原稿幅の距離でトリミングし、トリミングしたデジタル画像データをＲＡＭ４２に記憶する。処理Ｒ５が終了すると、読取メイン処理が終了する。
【００４９】
（上流側頂点位置ＵＨＶＰ、および下流側頂点位置ＤＨＶＰ算出処理Ｒ３）
図６に示す上流側頂点位置ＵＨＶＰ、および下流側頂点位置ＤＨＶＰ算出処理（Ｒ３）が開始されると、ＣＰＵ４０は、中央画素位置におけるエッジ位置ＥＰを取得する（ＲＡ１）。具体的には、ＣＰＵ４０は、中央画素位置である１２４１画素目の主走査位置ＭＤＰ「１２４１」におけるエッジ位置ＥＰをＲＡＭ４２から取得する。
【００５０】
ＣＰＵ４０は、上流位置検出処理を実行する（ＲＡ２）。詳細は後述するため、ここでは概説する。ＣＰＵ４０は、最上流先端位置ＵＨＰ、および最上流側端位置ＵＳＰを検出する。
【００５１】
ＣＰＵ４０は、下流位置検出処理を実行する（ＲＡ３）。詳細は後述するため、ここでは概説する。ＣＰＵ４０は、最下流先端位置ＤＨＰ、および最下流側端位置ＤＳＰを検出する。
【００５２】
ＣＰＵ４０は、先端直線ＨＥＬを算出する（ＲＡ４）。詳細は後述するため、ここでは概説する。ＣＰＵ４０は、図１２（Ｂ）に示すように、最上流先端位置ＵＨＰと最下流先端位置ＤＨＰとの間に位置する画素位置におけるエッジ位置ＥＰから直線エッジ位置ＬＥＰを抽出して、抽出した直線エッジ位置ＬＥＰに基づき先端直線ＨＥＬを算出する。先端直線ＨＥＬは、図１２（Ｂ）において、一点鎖線で示される。
【００５３】
ＣＰＵ４０は、上流側頂点位置ＵＨＶＰを算出する（ＲＡ５）。具体的には、ＣＰＵ４０は、最上流側端位置ＵＳＰを通り、且つ先端直線ＨＥＬと直交する上流垂線ＵＰＬを算出する。ＣＰＵ４０は、この処理で算出した上流垂線ＵＰＬと先端直線ＨＥＬとの交点の位置を上流側頂点位置ＵＨＶＰとしてＲＡＭ４２に記憶する。
【００５４】
ＣＰＵ４０は、下流側頂点位置ＤＨＶＰを算出する（ＲＡ６）。具体的には、ＣＰＵ４０は、図１２（Ｂ）に示すように、最下流側端位置ＤＳＰを通り、且つ先端直線ＨＥＬと直交する下流垂線ＤＰＬを算出する。ＣＰＵ４０は、この処理で算出した下流垂線ＤＰＬと先端直線ＨＥＬとの交点の位置を下流側頂点位置ＤＨＶＰとしてＲＡＭ４２に記憶する。処理ＲＡ６が終了すると、上流側頂点位置ＵＨＶＰ、および下流側頂点位置ＤＨＶＰ算出処理（Ｒ３）が終了する。下流垂線ＤＰＬは、図１２（Ｂ）において、二点鎖線で示される。
【００５５】
（上流位置検出処理ＲＡ２）
図７に示す上流位置検出処理（ＲＡ２）が開始されると、ＣＰＵ４０は、最上流先端位置ＵＨＰを検出する（ＲＢ１）。詳細は後述するため、ここでは概説する。ＣＰＵ４０は、最初に中央画素位置を対象位置ＴＭＤＰとして設定した後に、主走査方向ＭＤに沿って上流へ順に、対象位置ＴＭＤＰにおいてエッジが検出されなくなるまで、対象位置ＴＭＤＰを設定する。ＣＰＵ４０は、対象位置ＴＭＤＰにおいてエッジが検出されなかった場合に、最初にエッジが検出されなかった対象位置ＴＭＤＰを探索位置ＤＭＤＰとして設定した後に、主走査方向ＭＤに沿って下流へ順に、探索位置ＤＭＤＰにおいてエッジが検出されるまで、探索位置ＤＭＤＰを設定する。ＣＰＵ４０は、エッジが検出された探索位置ＤＭＤＰを最上流先端位置ＵＨＰとしてＲＡＭ４２に記憶する。ＣＰＵ４０は、対象位置ＴＭＤＰが先頭画素位置であるか否かを判断し、先頭画素位置である場合に最上流先端位置ＵＨＰを最上流側端位置ＵＳＰとしてＲＡＭ４２に記憶し、側端決定フラグＳＤＦＧをオンにする。
【００５６】
ＣＰＵ４０は、側端決定フラグＳＤＦＧがオンであるか否かを判断する（ＲＢ２）。ＣＰＵ４０は、側端決定フラグＳＤＦＧがオンである場合（ＲＢ２：Ｙｅｓ）に、上流位置検出処理（ＲＡ２）が終了し、側端決定フラグＳＤＦＧがオフである場合（ＲＢ２：Ｎｏ）に、処理ＲＢ３に進む。
【００５７】
ＣＰＵ４０は、最上流側端位置ＵＳＰを検出する（ＲＢ３）。詳細は後述するため、ここでは概説する。ＣＰＵ４０は、処理ＲＢ１で設定した対象位置ＴＭＤＰから主走査方向ＭＤに沿って上流へ順に先頭画素位置まで対象位置ＴＭＤＰを設定する。ＣＰＵ４０は、対象位置ＴＭＤＰにエッジが検出されたか否かを判断し、エッジが検出された場合に連続カウント値ＣＣＴに「１」を加算し、エッジが検出されなかった場合に連続カウント値ＣＣＴに「０」を設定する。ＣＰＵ４０は、連続カウント値ＣＣＴが「３」以上である場合に、対象位置ＴＭＤＰを最上流側端位置ＵＳＰとしてＲＡＭ４２に記憶し、側端決定フラグＳＤＦＧをオンにする。処理ＲＢ３が終了すると、上流位置検出処理（ＲＡ２）が終了する。
【００５８】
（最上流先端位置ＵＨＰ検出処理ＲＢ１）
図８に示す最上流先端位置ＵＨＰ検出処理（ＲＢ１）が開始されると、ＣＰＵ４０は、対象位置ＴＭＤＰを設定する（ＲＣ１）。具体的には、ＣＰＵ４０は、処理ＲＢ１において対象位置ＴＭＤＰが設定されていなければ、中央画素位置を対象位置ＴＭＤＰとして設定する。ＣＰＵ４０は、処理ＲＢ１において対象位置ＴＭＤＰが設定されていれば、設定されている対象位置ＴＭＤＰから主走査方向ＭＤに沿って上流へ所定画素数離れた位置を新たな対象位置ＴＭＤＰとして設定する。本実施形態では、所定画素数を「１０画素」として、１０画素離れた位置を新たな対象位置ＴＭＤＰとして設定する。エッジとして誤検出される紙粉などの異物の大きさは、一般的に「０．８ｍｍ」未満である。本実施形態では、主走査方向の解像度は「３００ＤＰＩ」であるため、所定画素数を「１０画素」とすることで、「０．８５ｍｍ」離れた位置毎に対象位置ＴＭＤＰを設定してエッジの判断をすることで、同じ異物で２回連続して誤検出することを防止する効果がある。
【００５９】
ＣＰＵ４０は、対象位置ＴＭＤＰにおいてエッジが検出されたか否かを判断する（ＲＣ２）。具体的には、ＣＰＵ４０は、対象位置ＴＭＤＰにおけるエッジデータＥＤが無エッジＮＥであることを示す「０」である場合（ＲＣ２：Ｎｏ）に、対象位置ＴＭＤＰにおいてエッジが検出されなかったと判断し、処理ＲＣ５に進む。ＣＰＵ４０は、対象位置ＴＭＤＰにおけるエッジデータＥＤが無エッジＮＥであることを示す「０」でない場合（ＲＣ２：Ｙｅｓ）に、対象位置ＴＭＤＰにおいてエッジが検出されたと判断し、処理ＲＣ３へ進む。
【００６０】
ＣＰＵ４０は、対象位置ＴＭＤＰが先頭画素位置であるか否かを判断する（ＲＣ３）。ＣＰＵ４０は、対象位置ＴＭＤＰが先頭画素位置である場合（ＲＣ３：Ｙｅｓ）に、処理ＲＣ４に進み、対象位置ＴＭＤＰが先頭画素位置でない場合（ＲＣ３：Ｎｏ）に、処理ＲＣ１に進む。
【００６１】
ＣＰＵ４０は、最上流先端位置ＵＨＰおよび最上流側端位置ＵＳＰを記憶する（ＲＣ４）。具体的には、ＣＰＵ４０は、主走査方向ＭＤにおける先頭画素位置と、先頭画素位置における搬送方向ＦＤのエッジ位置ＥＰとを、最上流先端位置ＵＨＰおよび最上流側端位置ＵＳＰとしてＲＡＭ４２に記憶する。ＣＰＵ４０は、処理ＲＣ４が終了すると、処理ＲＣ１０に進む。
【００６２】
処理ＲＣ２において、Ｎｏと判断されると、ＣＰＵ４０は、探索位置ＤＭＤＰを設定する（ＲＣ５）。具体的には、ＣＰＵ４０は、探索位置ＤＭＤＰが設定されていなければ、設定されている対象位置ＴＭＤＰと主走査方向ＭＤに沿って下流に隣接する画素位置を探索位置ＤＭＤＰとして設定する。ＣＰＵ４０は、探索位置ＤＭＤＰが設定されていれば、設定されている探索位置ＤＭＤＰと主走査方向ＭＤに沿って下流へ隣接する画素位置を探索位置ＤＭＤＰとして設定する。
【００６３】
ＣＰＵ４０は、探索位置ＤＭＤＰにおいてエッジが検出されたか否かを判断する（ＲＣ６）。具体的には、ＣＰＵ４０は、探索位置ＤＭＤＰにおけるエッジデータＥＤが無エッジＮＥであることを示す「０」である場合（ＲＣ６：Ｎｏ）に、探索位置ＤＭＤＰにおいてエッジが検出されなかったと判断し、処理ＲＣ５に進む。ＣＰＵ４０は、探索位置ＤＭＤＰにおけるエッジデータＥＤが無エッジＮＥであることを示す「０」でない場合（ＲＣ６：Ｙｅｓ）に、探索位置ＤＭＤＰにおいてエッジが検出されたと判断し、処理ＲＣ７に進む。
【００６４】
ＣＰＵ４０は、最上流先端位置ＵＨＰを記憶する（ＲＣ７）。具体的には、ＣＰＵ４０は、主走査方向ＭＤにおける探索位置ＤＭＤＰと、探索位置ＤＭＤＰにおける搬送方向ＦＤのエッジ位置ＥＰとを、最上流先端位置ＵＨＰとしてＲＡＭ４２に記憶する。
【００６５】
ＣＰＵ４０は、対象位置ＴＭＤＰが先頭画素位置であるか否かを判断する（ＲＣ８）。ＣＰＵ４０は、対象位置ＴＭＤＰが先頭画素位置である場合（ＲＣ８：Ｙｅｓ）に、処理ＲＣ９に進み、対象位置ＴＭＤＰが先頭画素位置でない場合（ＲＣ８：Ｎｏ）に、最上流先端位置ＵＨＰ検出処理（ＲＢ１）が終了する。
【００６６】
ＣＰＵ４０は、最上流先端位置ＵＨＰを最上流側端位置ＵＳＰとしてＲＡＭ４２に記憶する（ＲＣ９）。
【００６７】
処理ＲＣ４が終了するか、又は処理ＲＣ９が終了すると、ＣＰＵ４０は、側端決定フラグＳＤＦＧをオンにしてＲＡＭ４２に記憶する（ＲＣ１０）。処理ＲＣ１０が終了すると、最上流先端位置ＵＨＰ検出処理ＲＢ１が終了する。
【００６８】
（最上流側端位置ＵＳＰ検出処理ＲＢ３）
図９に示す最上流側端位置ＵＳＰ検出処理ＲＢ３が開始されると、ＣＰＵ４０は、対象位置ＴＭＤＰを設定する（ＲＤ１）。具体的には、ＣＰＵ４０は、設定されている対象位置ＴＭＤＰから主走査方向ＭＤに沿って上流へ所定画素数離れた位置を新たな対象位置ＴＭＤＰとして設定する。本実施形態では、設定されている対象位置ＴＭＤＰは、処理ＲＣ１において設定された対象位置ＴＭＤＰか、又は処理ＲＢ３において設定された対象位置ＴＭＤＰである。本実施形態では、所定画素数は、「１０画素」である。
【００６９】
ＣＰＵ４０は、対象位置ＴＭＤＰにおいてエッジが検出されたか否かを判断する（ＲＤ２）。具体的には、ＣＰＵ４０は、対象位置ＴＭＤＰにおけるエッジデータＥＤが無エッジＮＥであることを示す「０」である場合（ＲＤ２：Ｎｏ）に、対象位置ＴＭＤＰにおいてエッジが検出されなかったと判断し、処理ＲＤ７に進む。ＣＰＵ４０は、対象位置ＴＭＤＰにおけるエッジデータＥＤが無エッジＮＥであることを示す「０」でない場合（ＲＤ２：Ｙｅｓ）に、対象位置ＴＭＤＰにおいてエッジが検出されたと判断し、処理ＲＤ３に進む。
【００７０】
ＣＰＵ４０は、連続カウント値ＣＣＴに「１」を加算する（ＲＤ３）。
【００７１】
ＣＰＵ４０は、連続カウント値ＣＣＴが閾値以上であるか否かを判断する（ＲＤ４）。ＣＰＵ４０は、連続カウント値ＣＣＴが閾値以上である場合（ＲＤ４：Ｙｅｓ）に、処理ＲＤ５に進み、連続カウント値ＣＣＴが閾値未満である場合（ＲＤ４：Ｎｏ）に、処理ＲＤ８に進む。本実施形態では、連続カウント値ＣＣＴが閾値以上であるか否かで、最上流側端位置ＵＳＰを記憶するか否かを判断している。紙粉などの異物等によりエッジを誤検出し、さらにノイズ等によりエッジを誤検出した場合でも、２回連続してエッジを誤検出することはあるが、３回連続してエッジを誤検出することは無い。よって、本実施形態では、閾値を「３」に設定している。
【００７２】
ＣＰＵ４０は、最上流側端位置ＵＳＰを記憶する（ＲＤ５）。具体的には、ＣＰＵ４０は、主走査方向ＭＤにおける対象位置ＴＭＤＰと、対象位置ＴＭＤＰにおける搬送方向ＦＤのエッジ位置ＥＰとを、最上流側端位置ＵＳＰとしてＲＡＭ４２に記憶する。
【００７３】
ＣＰＵ４０は、側端決定フラグＳＤＦＧをオンにしてＲＡＭ４２に記憶する（ＲＤ６）。
【００７４】
処理ＲＤ２においてＮｏと判断されると、ＣＰＵ４０は、連続カウント値ＣＣＴに「０」を設定する（ＲＤ７）。
【００７５】
処理ＲＤ４においてＮｏと判断されるか、処理ＲＤ６が終了するか、又は処理ＲＤ７が終了すると、ＣＰＵ４０は、対象位置ＴＭＤＰが先頭画素位置であるか否かを判断する（ＲＤ８）。ＣＰＵ４０は、対象位置ＴＭＤＰが先頭画素位置である場合（ＲＤ８：Ｙｅｓ）に、処理ＲＤ９に進み、対象位置ＴＭＤＰが先頭画素位置でない場合（ＲＤ８：Ｎｏ）に、処理ＲＤ１に進む。
【００７６】
ＣＰＵ４０は、側端決定フラグＳＤＦＧがオンであるか否かを判断する（ＲＤ９）。ＣＰＵ４０は、側端決定フラグＳＤＦＧがオンである場合（ＲＤ９：Ｙｅｓ）に、最上流側端位置ＵＳＰ検出処理（ＲＢ３）が終了し、側端決定フラグＳＤＦＧがオフである場合（ＲＤ９：Ｎｏ）に、処理ＲＤ１０に進む。
【００７７】
ＣＰＵ４０は、最上流先端位置ＵＨＰを最上流側端位置ＵＳＰとしてＲＡＭ４２に記憶する（ＲＤ１０）。
【００７８】
ＣＰＵ４０は、側端決定フラグＳＤＦＧをオンにしてＲＡＭ４２に記憶する（ＲＤ１１）。処理ＲＤ１１が終了すると、最上流側端位置ＵＳＰ検出処理（ＲＢ３）が終了する。
【００７９】
（下流位置検出処理ＲＡ３）
図１０に示す下流位置検出処理（ＲＡ３）が開始されると、ＣＰＵ４０は、図１３に示す処理の実行により、最下流先端位置ＤＨＰを検出する（ＲＥ１）。処理ＲＢ１が中央画素位置から主走査方向ＭＤに沿って上流へエッジを検出する処理であったのに対し、処理ＲＥ１は、中央画素位置から主走査方向ＭＤに沿って下流へエッジを検出する処理である。そのため、処理ＲＥ１について、処理ＲＢ１と同じ処理をしている部分は説明を省略し、異なる部分について説明する。具体的には、処理ＲＧ２、処理ＲＧ６、および処理ＲＧ１０は、処理ＲＣ２、処理ＲＣ６、および処理ＲＣ１０と同じ処理であるため、説明を省略する。その他の処理について説明する。
【００８０】
図１３に示す最下流先端位置ＤＨＰ検出処理（ＲＥ１）が開始されると、ＣＰＵ４０は、対象位置ＴＭＤＰを設定する（ＲＧ１）。具体的には、ＣＰＵ４０は、処理ＲＥ１において対象位置ＴＭＤＰが設定されていなければ、中央画素位置を対象位置ＴＭＤＰとして設定する。ＣＰＵ４０は、処理ＲＥ１において対象位置ＴＭＤＰが設定されていれば、設定されている対象位置ＴＭＤＰから主走査方向ＭＤに沿って下流へ所定画素数離れた位置を新たな対象位置ＴＭＤＰとして設定する。本実施形態では、所定画素数は、「１０画素」である。
【００８１】
処理ＲＧ２において、Ｙｅｓと判断されると、ＣＰＵ４０は、対象位置ＴＭＤＰが最終画素位置であるか否かを判断する（ＲＧ３）。ＣＰＵ４０は、対象位置ＴＭＤＰが最終画素位置である場合（ＲＧ３：Ｙｅｓ）に、処理ＲＧ４に進み、対象位置ＴＭＤＰが最終画素位置でない場合（ＲＧ３：Ｎｏ）に、処理ＲＧ１に進む。
【００８２】
ＣＰＵ４０は、最下流先端位置ＤＨＰおよび最下流側端位置ＤＳＰを記憶する（ＲＧ４）。具体的には、ＣＰＵ４０は、主走査方向ＭＤにおける最終画素位置と、最終画素位置における搬送方向ＦＤのエッジ位置ＥＰとを、最下流先端位置ＤＨＰおよび最下流側端位置ＤＳＰとしてＲＡＭ４２に記憶する。ＣＰＵ４０は、処理ＲＧ４が終了すると、処理ＲＧ１０に進む。
【００８３】
処理ＲＧ２において、Ｎｏと判断されると、ＣＰＵ４０は、探索位置ＤＭＤＰを設定する（ＲＧ５）。具体的には、ＣＰＵ４０は、探索位置ＤＭＤＰが設定されていなければ、設定されている対象位置ＴＭＤＰと主走査方向ＭＤに沿って上流に隣接する画素位置を探索位置ＤＭＤＰとして設定する。ＣＰＵ４０は、探索位置ＤＭＤＰが設定されていれば、設定されている探索位置ＤＭＤＰと主走査方向ＭＤに沿って上流へ隣接する画素位置を探索位置ＤＭＤＰとして設定する。
【００８４】
処理ＲＧ６において、Ｙｅｓと判断されると、ＣＰＵ４０は、最下流先端位置ＤＨＰを記憶する（ＲＧ７）。具体的には、ＣＰＵ４０は、主走査方向ＭＤにおける探索位置ＤＭＤＰと、探索位置ＤＭＤＰにおける搬送方向ＦＤのエッジ位置ＥＰとを、最下流先端位置ＤＨＰとしてＲＡＭ４２に記憶する。
【００８５】
ＣＰＵ４０は、対象位置ＴＭＤＰが最終画素位置であるか否かを判断する（ＲＧ８）。ＣＰＵ４０は、対象位置ＴＭＤＰが最終画素位置である場合（ＲＧ８：Ｙｅｓ）に、処理ＲＧ９に進み、対象位置ＴＭＤＰが最終画素位置でない場合（ＲＧ８：Ｎｏ）に、最下流先端位置ＤＨＰ検出処理（ＲＥ１）が終了する。
【００８６】
ＣＰＵ４０は、最下流先端位置ＤＨＰを最下流側端位置ＤＳＰとしてＲＡＭ４２に記憶する（ＲＧ９）。
【００８７】
処理ＲＧ４が終了するか、又は処理ＲＧ９が終了すると、ＣＰＵ４０は、側端決定フラグＳＤＦＧをオンにしてＲＡＭ４２に記憶する（ＲＧ１０）。処理ＲＧ１０が終了すると、最下流先端位置ＤＨＰ検出処理（ＲＥ１）が終了する。
【００８８】
処理ＲＥ１が終了すると、図１０に示すように、ＣＰＵ４０は、側端決定フラグＳＤＦＧがオンであるか否かを判断する（ＲＥ２）。ＣＰＵ４０は、側端決定フラグＳＤＦＧがオンである場合（ＲＥ２：Ｙｅｓ）に、下流位置検出処理（ＲＡ３）が終了し、側端決定フラグＳＤＦＧがオフである場合（ＲＥ２：Ｎｏ）に、処理ＲＥ３に進む。
【００８９】
処理ＲＥ２において、Ｎｏと判断されると、ＣＰＵ４０は、図１４に示す処理の実行により、最下流側端位置ＤＳＰを検出する（ＲＥ３）。処理ＲＢ３が処理ＲＢ１で設定した対象位置ＴＭＤＰから主走査方向ＭＤに沿って上流へエッジを検出する処理であったのに対し、処理ＲＥ３は、処理ＲＥ１で設定した対象位置ＴＭＤＰから主走査方向ＭＤに沿って下流へエッジを検出する処理である。そのため、処理ＲＥ３について、処理ＲＢ３と同じ処理をしている部分は説明を省略し、異なる部分について説明する。具体的には、処理ＲＨ２、処理ＲＨ３、処理ＲＨ４、処理ＲＨ６、処理ＲＨ７、処理ＲＨ９、および処理ＲＨ１１は、処理ＲＤ２、処理ＲＤ３、処理ＲＤ４、処理ＲＤ６、処理ＲＤ７、処理ＲＤ９、および処理ＲＤ１１と同じ処理であるため、説明を省略する。その他の処理について説明する。
【００９０】
図１４に示す最下流側端位置ＤＳＰ検出処理（ＲＥ３）が開始されると、ＣＰＵ４０は、対象位置ＴＭＤＰを設定する（ＲＨ１）。具体的には、ＣＰＵ４０は、設定されている対象位置ＴＭＤＰから主走査方向ＭＤに沿って下流へ所定画素数離れた位置を新たな対象位置ＴＭＤＰとして設定する。本実施形態では、設定されている対象位置ＴＭＤＰは、処理ＲＥ１において設定された対象位置ＴＭＤＰか、又は処理ＲＥ３において設定された対象位置ＴＭＤＰである。所定画素数は、「１０画素」である。
【００９１】
処理ＲＨ４において、Ｙｅｓと判断されると、ＣＰＵ４０は、最下流側端位置ＤＳＰを記憶する（ＲＨ５）。具体的には、ＣＰＵ４０は、主走査方向ＭＤにおける対象位置ＴＭＤＰと、対象位置ＴＭＤＰにおける搬送方向ＦＤのエッジ位置ＥＰとを、最下流側端位置ＤＳＰとしてＲＡＭ４２に記憶する。
【００９２】
処理ＲＨ４においてＮｏと判断されるか、処理ＲＨ６が終了するか、又は処理ＲＨ７が終了すると、ＣＰＵ４０は、対象位置ＴＭＤＰが最終画素位置であるか否かを判断する（ＲＨ８）。ＣＰＵ４０は、対象位置ＴＭＤＰが最終画素位置である場合（ＲＨ８：Ｙｅｓ）に、処理ＲＨ９に進み、対象位置ＴＭＤＰが最終画素位置でない場合（ＲＨ８：Ｎｏ）に、処理ＲＨ１に進む。
【００９３】
処理ＲＨ９において、Ｎｏと判断されると、最下流先端位置ＤＨＰを最下流側端位置ＤＳＰとしてＲＡＭ４２に記憶する（ＲＨ１０）。処理ＲＨ９でＹｅｓと判断されるか、又は処理ＲＨ１１が終了すると、最下流側端位置ＤＳＰ検出処理（ＲＥ３）が終了する。処理ＲＥ３が終了すると、下流位置検出処理（ＲＡ３）が終了する。
【００９４】
（先端直線ＨＥＬ算出処理ＲＡ４）
図１１に示す先端直線ＨＥＬ算出処理（ＲＡ４）が開始されると、ＣＰＵ４０は、対象エッジ群ＴＥＧを設定する（ＲＦ１）。具体的には、ＣＰＵ４０は、対象エッジ群ＴＥＧが設定されていなければ、最上流先端位置ＵＨＰから主走査方向ＭＤに沿って下流へ所定画素数離れた画素位置までの全ての画素位置における主走査位置ＭＤＰとエッジ位置ＥＰとを対象エッジ群ＴＥＧとして設定する。ＣＰＵ４０は、対象エッジ群ＴＥＧが設定されていれば、設定されている対象エッジ群ＴＥＧのうちの主走査方向ＭＤにおける最も下流の画素位置から主走査方向ＭＤに沿って下流へ所定画素数離れた画素位置までの全ての画素位置における主走査位置ＭＤＰとエッジ位置ＥＰとを対象エッジ群ＴＥＧとして設定する。本実施形態では、処理ＲＦ１における所定画素数は奇数である。よって、処理ＲＦ１における所定画素数は、「１０画素」と同程度の「１１画素」である。
【００９５】
ＣＰＵ４０は、直線エッジ位置ＬＥＰを抽出する（ＲＦ２）。具体的には、ＣＰＵ４０は、設定されている１１個の対象エッジ群ＴＥＧにおけるエッジ位置ＥＰを搬送方向ＦＤに沿って上流から下流へ順番に位置するように１１個の対象エッジ群ＴＥＧを並べた場合に、順番に並べた対象エッジ群ＴＥＧのうちで中央に位置する対象エッジ群ＴＥＧにおける主走査位置ＭＤＰとエッジ位置ＥＰとを直線エッジ位置ＬＥＰとして抽出する。本実施形態では、順番に並べた１１個の対象エッジ群ＴＥＧのうちで中央に位置する画素位置における主走査位置ＭＤＰとエッジ位置ＥＰとを直線エッジ位置ＬＥＰとして抽出する。そのため、ノイズ等によりエッジ位置ＥＰが誤った位置であった場合でも、中央の位置とすることで正確な主走査位置ＭＤＰとエッジ位置ＥＰとを直線エッジ位置ＬＥＰとして抽出することができる。
【００９６】
ＣＰＵ４０は、設定されている対象エッジ群ＴＥＧのうちの主走査方向ＭＤで最も下流に位置する画素位置から主走査方向ＭＤに沿って下流へ所定画素数離れた画素位置が最下流先端位置ＤＨＰよりも主走査方向ＭＤに沿って下流であるか否かを判断する（ＲＦ３）。ＣＰＵ４０は、所定画素数離れた画素位置が最下流先端位置ＤＨＰよりも主走査方向ＭＤに沿って下流である場合（ＲＦ３：Ｙｅｓ）に、処理ＲＦ４に進む。ＣＰＵ４０は、所定画素数離れた画素位置が最下流先端位置ＤＨＰよりも主走査方向ＭＤに沿って下流でない場合（ＲＦ３：Ｎｏ）に、処理ＲＦ１に進む。本実施形態では、処理ＲＦ３における所定画素数は、「１１画素」である。
【００９７】
ＣＰＵ４０は、直線エッジ位置ＬＥＰに基づき分散値ＨＬＤＶを算出する（ＲＦ４）。具体的には、ＣＰＵ４０は、処理ＲＦ１〜処理ＲＦ３を繰り返し実行して抽出した全ての直線エッジ位置ＬＥＰのうちで隣接する２つの画素位置を結んだ直線の全ての直線の傾きの標本分散値を分散値ＨＬＤＶとして算出する。
【００９８】
ＣＰＵ４０は、分散値ＨＬＤＶが所定分散値以下であるか否かを判断する（ＲＦ５）。ＣＰＵ４０は、算出した分散値ＨＬＤＶが所定分散値以下である場合（ＲＦ５：Ｙｅｓ）に、処理ＲＦ６に進み、算出した分散値ＨＬＤＶが所定分散値よりも大きい場合（ＲＦ６：Ｎｏ）に、処理ＲＦ７に進む。本実施形態では、所定分散値は、「０．００５」である。所定分散値を「０．００５」とすることで、原稿ＧＳの側端部におけるエッジ位置ＥＰが直線エッジ位置ＬＥＰに含まれていた場合でも、最上流先端位置ＵＨＰから中央画素位置までの直線エッジ位置ＬＥＰ、又は中央画素位置から最下流先端位置ＤＨＰまでの直線エッジ位置ＬＥＰを新たに設定して、先端直線ＨＥＬを算出するため、精度良く先端直線ＨＥＬを算出することができる。
【００９９】
ＣＰＵ４０は、直線エッジ位置ＬＥＰに基づき先端直線ＨＥＬを算出する（ＲＦ６）。具体的には、ＣＰＵ４０は、処理ＲＦ１〜処理ＲＦ３を繰り返し実行して抽出した全ての直線エッジ位置ＬＥＰに対して最小２乗法を適用して先端直線ＨＥＬを算出する。処理ＲＦ６が終了すると、先端直線ＨＥＬ算出処理（ＲＡ４）が終了する。
【０１００】
処理ＲＦ５においてＮｏと判断されると、ＣＰＵ４０は、先端直線ＨＥＬの傾きが右下であるか、又は左下であるかを判断する（ＲＦ７）。具体的には、ＣＰＵ４０は、先端直線ＨＥＬの傾きが主走査方向ＭＤに沿って上流となるにつれて、搬送方向ＦＤに沿って上流となる傾きである場合（ＲＦ７：右下）に、先端直線ＨＥＬの傾きが右下であると判断し、処理ＲＦ８に進む。ＣＰＵ４０は、先端直線ＨＥＬの傾きが主走査方向ＭＤに沿って下流となるにつれて、搬送方向に沿って上流となる傾きである場合（ＲＦ７：左下）に、先端直線ＨＥＬの傾きが左下であると判断し、処理ＲＦ９に進む。
【０１０１】
ＣＰＵ４０は、中央画素位置から最下流先端位置ＤＨＰまでの範囲に含まれる直線エッジ位置ＬＥＰを新たな直線エッジ位置ＬＥＰとして設定する（ＲＦ８）。ＣＰＵ４０は、処理ＲＦ８が終了すると、処理ＲＦ１０に進む。
【０１０２】
処理ＲＦ７において左下と判断されると、ＣＰＵ４０は、最上流先端位置ＵＨＰから中央画素位置までの範囲に含まれる直線エッジ位置ＬＥＰを新たな直線エッジ位置ＬＥＰとして設定する（ＲＦ９）。
【０１０３】
処理ＲＦ８が終了するか、又は処理ＲＦ９が終了すると、ＣＰＵ４０は、先端直線ＨＥＬを算出する（ＲＦ１０）。具体的には、ＣＰＵ４０は、処理ＲＦ８、又は処理ＲＦ９において新たに設定した全ての直線エッジＬＥＰに対して最小２乗法を適用して先端直線ＨＥＬを算出する。処理ＲＦ１０が終了すると、先端直線ＨＥＬ算出処理（ＲＡ４）が終了する。
【０１０４】
（具体例）
図１２（Ｂ）に示すように原稿ＧＳが傾いて搬送された場合に、画像読取装置１が最上流先端位置ＵＨＰ、最上流側端位置ＵＳＰ、最下流先端位置ＤＨＰ、および最下流側端位置ＤＳＰを検出する過程について、図１２（Ａ）、および図１２（Ｂ）を参照しながら、具体例を挙げて説明する。ここでは、主走査位置ＭＤＰが「Ｘ」であり、エッジ位置ＥＰが「Ｙ」であるときに、（Ｘ，Ｙ）と表示する。
【０１０５】
本具体例では、処理Ｒ２が実行されると、エッジ位置検出部４９は、図１２（Ａ）および図１２（Ｂ）に示すように、（１，０）、（２、０）、（３、１６０）、中略、（１２４１、１００）、中略、（２２３１、１）、（２２３２、０）、中略、（２４５１、０）、中略、（２４６１、４５）、中略、（２４７１、９０）、中略、（２４８１、１３５）をＲＡＭ４２に記憶する。
【０１０６】
最上流先端位置ＵＨＰ、および最上流側端位置ＵＳＰを検出する過程について説明する。本具体例では、図１２（Ｂ）に示すように、中央画素位置から主走査位置ＭＤＰが「３」である３画素目の画素位置までエッジ位置ＥＰが「０」でない。そのため、図８に示すように、ＣＰＵ４０は、処理ＲＣ１から処理ＲＣ３において、中央画素位置である１２４１画素目の画素位置から先頭画素位置までの範囲で、主走査方向ＭＤに沿って上流へ、中央画素位置から所定画素数ずつ離れた位置を対象位置ＴＭＤＰとして繰り返し設定する。ＣＰＵ４０は、対象位置ＴＭＤＰが先頭画素位置に設定されたときに、処理ＲＣ２において、エッジが検出されなかったと判断し、処理ＲＣ５に進む。ＣＰＵ４０は、処理ＲＣ５、および処理ＲＣ６において、先頭画素位置から３画素目の画素位置までの範囲で、主走査方向ＭＤに沿って下流へ、先頭画素位置から１画素ずつ離れた位置を探索位置ＤＭＤＰとして繰り返し設定する。ＣＰＵ４０は、探索位置ＤＭＤＰが３画素目の画素位置に設定されたときに、処理ＲＣ６において、エッジが検出されたと判断し、処理ＲＣ７に進む。ＣＰＵ４０は、処理ＲＣ７において、３画素目の画素位置である主走査位置ＭＤＰの「３」と、３画素目の画素位置における搬送方向ＦＤのエッジ位置ＥＰである「１６０」とを、最上流先端位置ＵＨＰとしてＲＡＭ４２に記憶する。ＣＰＵ４０は、処理ＲＣ８において、対象位置ＴＭＤＰが先頭画素位置である判断し、処理ＲＣ９に進む。ＣＰＵ４０は、処理ＲＣ９において、最上流先端位置ＵＨＰを最上流側端位置ＵＳＰとしてＲＡＭ４２に記憶する。
【０１０７】
最下流先端位置ＤＨＰを検出する過程について説明する。本具体例では、図１２（Ｂ）に示すように、中央画素位置から主走査位置ＭＦＰが「２２３１」である２２３１画素目の画素位置までエッジ位置ＥＰが「０」でない。そのため、図１３に示すように、ＣＰＵ４０は、処理ＲＧ１から処理ＲＧ３において、中央画素位置から２２４１画素目の画素位置までの範囲で、主走査方向ＭＤに沿って下流へ、中央画素位置から所定画素数ずつ離れた画素位置を対象位置ＴＭＤＰとして繰り返し設定する。ＣＰＵ４０は、対象位置ＴＭＤＰとして２２４１画素目の画素位置が設定されたときに、処理ＲＧ２において、エッジが検出されなかったと判断する。ＣＰＵ４０は、処理ＲＧ５、および処理ＲＧ６において、２２４１画素目の画素位置から２２３１画素目の画素位置までの範囲で、主走査方向ＭＤに沿って上流へ、２２４１画素目の画素位置から１画素ずつ離れた画素位置を探索位置ＤＭＤＰとして繰り返し設定する。ＣＰＵ４０は、探索位置ＤＭＤＰとして２２３１画素目の画素位置が設定されたときに、処理ＲＧ６において、エッジが検出されたと判断する。ＣＰＵ４０は、処理ＲＧ７において、２２３１画素目の画素位置である主走査位置ＭＤＰの「２２３１」と、２２３１画素目の画素位置における搬送方向ＦＤのエッジ位置ＥＰである「１」とを、最下流先端位置ＤＨＰとしてＲＡＭ４２に記憶する。
【０１０８】
最下流側端位置ＤＳＰを検出する過程について説明する。ＣＰＵ４０は、図１４に示すように、処理ＲＨ１から処理ＲＨ８において、対象位置ＴＭＤＰとして設定されている２２４１画素目の画素位置から２４６１画素目の画素位置までの範囲で、主走査方向ＭＤに沿って下流へ、２２４１画素目の画素位置から所定画素数ずつ離れた位置を対象位置ＴＭＤＰとして繰り返し設定する。ＣＰＵ４０は、対象位置ＴＭＤＰとして２４６１画素目の画素位置が設定されたときに、処理ＲＨ３において、連続カウント値ＣＣＴに「１」を加算し、連続カウント値ＣＣＴが「１」となる。ＣＰＵ４０は、対象位置ＴＭＤＰとして２４７１画素目の画素位置が設定されたときに、処理ＲＨ３において、連続カウント値ＣＣＴに「１」を加算し、連続カウント値ＣＣＴが「２」となる。ＣＰＵ４０は、対象位置ＴＭＤＰとして２４８１画素目の画素位置が設定されたときに、処理ＲＨ３において、連続カウント値ＣＣＴに「１」を加算する。ＣＰＵ４０は、処理ＲＨ４において、連続カウント値ＣＣＴが「３」以上であると判断する。ＣＰＵ４０は、２４８１画素目の画素位置である主走査位置ＭＤＰの「２４８１」と、２４８１画素目の画素位置における搬送方向ＦＤのエッジ位置ＥＰである「１３５」とを、最下流側端位置ＵＳＰとしてＲＡＭ４２に記憶する。
【０１０９】
＜実施形態の効果＞
本実施形態では、最上流先端位置ＵＨＰ検出処理ＲＢ１における処理ＲＣ１〜処理ＲＣ３は、対象位置ＴＭＤＰにおいてエッジが検出されなくなるまで、中央画素位置から先頭画素位置までの範囲で、主走査方向ＭＤに沿って上流へ、所定画素数ずつ離れた位置を対象位置ＴＭＤＰとして設定する。処理ＲＣ５、および処理ＲＣ６は、探索位置ＤＭＤＰにおいてエッジが検出されるまで、エッジが検出されなかった対象位置ＴＭＤＰからエッジが検出された対象位置ＴＭＤＰまでの範囲で、主走査方向ＭＤに沿って下流へ、１画素ずつ離れた画素位置を探索位置ＤＭＤＰとして設定する。処理ＲＣ７は、エッジを検出した探索位置ＤＭＤＰと、探索位置ＤＭＤＰにおける搬送方向ＦＤのエッジ位置ＥＰとを、最上流先端位置ＵＨＰとして記憶する。最下流先端位置ＤＨＰ検出処理ＲＥ１も同様に、最下流先端位置ＤＨＰを記憶する。よって、所定画素数間隔で対象位置ＴＭＤＰを設定した後に、１画素間隔で探索位置ＤＭＤＰを設定するため、速く、且つ精度良く最上流先端位置ＵＨＰ、および最下流先端位置ＤＨＰを検出することができる。そのため、原稿が斜行して原稿の先端部を途中の位置から読取開始した場合でも、原稿の主走査方向のサイズである原稿幅を精度良く決定することができる。
【０１１０】
最上流側端位置ＵＳＰ検出処理ＲＢ３における処理ＲＤ１から処理ＲＤ８は、処理ＲＢ１においてエッジが検出されなかった対象位置ＴＭＤＰから先頭画素位置までの範囲で、主走査方向ＭＤに沿って上流へ、所定画素数ずつ離れた位置を対象位置ＴＭＤＰとして設定する。処理ＲＤ２、処理ＲＤ３、および処理ＲＤ７は、対象位置ＴＭＤＰにおいてエッジが検出された場合に、連続カウント値ＣＣＴに「１」を加算し、対象位置ＴＭＤＰにおいてエッジが検出されなかった場合に、連続カウント値ＣＣＴに「０」を設定する。処理ＲＤ４、および処理ＲＤ５は、連続カウント値ＣＣＴが「３」以上である場合に、連続カウント値ＣＣＴが「３」以上となった対象位置ＴＭＤＰと、対象位置ＴＭＤＰにおける搬送方向ＦＤのエッジ位置ＥＰとを、最上流側端位置ＵＳＰとして記憶する。最下流側端位置ＤＳＰ検出処理ＲＥ３も同様に、最下流側端位置ＤＳＰを記憶する。よって、「３」以上となった対象位置ＴＭＤＰを最上流側端位置ＵＳＰ、および最下流側端位置ＤＳＰとして検出するため、ノイズや異物等によって誤ってエッジを検出した場合でも、精度良く最上流側端位置ＵＳＰ、および最下流側端位置ＤＳＰを検出することができる。
【０１１１】
先端直線ＨＥＬ算出処理ＲＡ４における処理ＲＦ５は、直線エッジ位置ＬＥＰのうちで隣接する２つの画素位置を結んだ直線の全ての直線の傾きの標本分散値を分散値ＨＬＤＶとして算出する。処理ＲＦ５、および処理ＲＦ６は、分散値ＨＬＤＶが所定分散値以下である場合に、全ての直線エッジ位置ＬＥＰに対して最小２乗法を適用して先端直線ＨＥＬを算出する。処理ＲＦ７、処理ＲＦ８、処理ＲＦ９、および処理ＲＦ１０は、先端直線ＨＥＬが右下である場合に、中央画素位置から最下流先端位置ＤＨＰまでの範囲に含まれる直線エッジ位置ＬＥＰに対して最小２乗法を適用して先端直線ＨＥＬを算出し、先端直線ＨＥＬが左下である場合に、中央画素位置から最上流先端位置ＵＨＰまでの範囲に含まれる直線エッジ位置ＬＥＰに対して最小２乗法を適用して先端直線ＨＥＬを算出する。よって、原稿が斜行して原稿の側端部を原稿の先端部と誤って検出した場合でも、精度良く先端直線ＨＥＬを算出することができる。
【０１１２】
［実施形態と発明との対応関係］
画像読取装置１、及び給紙トレイ２が、本発明の画像読取装置、及び原稿トレイの一例である。給紙ローラ２１、搬送ローラ２３、２６、駆動回路４７、及び駆動モータＭＴが、本発明の搬送部の一例である。読取部２４、及びＡＦＥ４５が、本発明の取得部の一例である。エッジ位置検出部４９が、本発明の決定部の一例である。ＲＡＭ４２、及びＣＰＵ４０が、本発明の記憶部、及び制御部の一例である。
【０１１３】
処理ＲＣ１〜処理ＲＣ３、処理ＲＤ１、処理ＲＤ２、及び処理ＲＤ８が、本発明の上流エッジ判断処理の一例である。処理ＲＢ１が、本発明の上流先端検出処理の一例である。処理ＲＧ１〜処理ＲＧ３、処理ＲＨ１、処理ＲＨ２、及び処理ＲＨ８が、本発明の下流エッジ判断処理の一例である。処理ＲＥ１が、本発明の下流先端検出処理の一例である。処理ＲＢ３が、本発明の上流連続エッジ検出処理、及び上流側端検出処理の一例である。処理ＲＥ３が、本発明の下流連続エッジ検出処理、及び下流側端検出処理の一例である。処理ＲＡ４が、本発明の上辺算出処理の一例である。処理ＲＡ５、及び処理ＲＡ６が、本発明の上流頂点位置算出処理、及び下流頂点位置算出処理の一例である。処理Ｒ５が、本発明の幅算出処理の一例である。
【０１１４】
処理ＲＣ５、及び処理ＲＣ６が、本発明の上流先端エッジ判断処理の一例である。処理ＲＧ５、及び処理ＲＧ６が、本発明の下流先端エッジ判断処理の一例である。処理ＲＤ３が、本発明の上流加算処理の一例である。処理ＲＤ７が、本発明の上流リセット処理の一例である。処理ＲＨ３が、本発明の下流加算処理の一例である。処理ＲＨ７が、本発明の下流リセット処理の一例である。処理ＲＦ４が、本発明の分散値算出処理の一例である。処理ＲＦ８が、本発明の下流上辺算出処理の一例である。処理ＲＦ９が、本発明の上流上辺算出処理の一例である。
【０１１５】
［変形例］
本発明は、本実施形態に限定されること無く、その趣旨を逸脱しない範囲において種々の変形が可能である。以下にその変形の一例を述べる。
【０１１６】
（１）本実施形態の画像読取装置１は、プリンタ部を備えた複合機に適用されても良い。また、本実施形態では、１つの読取部２４と、１つの白色基準板３４とが備えられる構成であるが、原稿ＧＳの両面を読み取るために、２つの読取部と、２つの白色基準板とが備えられる構成でも良い。
【０１１７】
（２）本実施形態では、連続カウント値ＣＣＴが閾値以上である場合に、最上流側端位置ＵＳＰを検出したが、異なる方法でも良い。例えば、中央画素位置から先頭画素位置まで主走査方向ＭＤに沿って所定範囲の画素位置を順に設定し、その設定した所定範囲に含まれる複数の画素位置が全てエッジを検出した場合に、最上流側端位置ＵＳＰとして順次検出しても良い。
【０１１８】
（３）本実施形態では、直線エッジ位置ＬＥＰの標本分散値を算出することで分散値ＨＬＤＶを算出したが、異なる方法でも良い。位置のバラツキを表す他の分散値や偏差などを用いて算出しても良い。
【０１１９】
（４）本実施形態では、直線エッジ位置ＬＥＰに対して最小２乗法を適用して先端直線ＨＥＬを算出したが、異なる方法でも良い。上流先端位置ＵＨＰと下流先端位置ＤＨＰとを結んで先端直線ＨＥＬを算出したり、上流先端位置ＵＨＰと中央画素位置における先端位置とを結んで先端直線ＨＥＬを算出したり、中央画素位置における先端位置と下流先端位置ＤＨＰとを結んで先端直線ＨＥＬを算出しても良い。
【０１２０】
（５）本実施形態では、所定画素数を「１０画素」としたが、異なる画素数でも良い。本実施形態では、紙粉等の異物の大きさを「０．８ｍｍ」未満と設定したため、「１０画素」としたが、使用する環境に合わせて所定画素数を変更することができる。例えば、異物の大きさを「０．４ｍｍ」未満となる環境の場合は、所定画素数は「５画素」であり、異物の大きさが「１．６ｍｍ」未満となる環境の場合は、所定画素数は「２０画素」となる。また、本実施形態では、主走査方向ＭＤの解像度は「３００ＤＰＩ」であったが、主走査方向ＭＤの解像度を「６００ＤＰＩ」としたときは、所定画素数が「２０画素」となる。
【符号の説明】
【０１２１】
１…画像読取装置、２…給紙トレイ、５…操作部、６…表示部、２４…読取部、３０…光源、３１…受光部、３３…光電変換素子、４０…ＣＰＵ、４２…ＲＡＭ、４３…フラッシュＲＯＭ、４４…デバイス制御部、４５…ＡＦＥ、４６…画像処理部、４７…駆動回路、４９…エッジ位置検出部、ＭＴ…駆動回路
【図１】
2019068178.tif 000003
【図２】
2019068178.tif 000004
【図３】
2019068178.tif 000005
【図４】
2019068178.tif 000006
【図５】
2019068178.tif 000007
【図６】
2019068178.tif 000008
【図７】
2019068178.tif 000009
【図８】
2019068178.tif 000010
【図９】
2019068178.tif 000011
【図１０】
2019068178.tif 000012
【図１１】
2019068178.tif 000013
【図１２】
2019068178.tif 000014
【図１３】
2019068178.tif 000015
【図１４】
2019068178.tif 000016