(57)【要約】【課題】ブック原稿のエッジを精度良く検出できる画像読取装置、画像読取装置の制御方法、及びプログラムを提供すること。【解決手段】スキャナ１０は、ブック原稿５１の画像データ４３に対し、探索方向５５に沿った複数の画素５９に基づいてエッジ候補点６１を検出可能であるか否かを判断する。スキャナ１０は、エッジ候補点６１を検出可能であると判断した場合、検出したエッジ候補点６１の位置よりも探索方向５５において更に内側となる複数の画素５９に基づいて判断処理を再度実行し、探索継続条件を満たす間、エッジ候補点６１を更新する。スキャナ１０は、探索継続条件を満たさないと判断した場合に、最後に検出したエッジ候補点６１を最終エッジ候補点６１Ｂとして設定し、最終エッジ候補点６１Ｂに基づいて、ブック原稿５１のエッジ５３Ａを検出する。【選択図】図６
2020167515.tif 000002
【特許請求の範囲】
【請求項１】
原稿の画像を読み取る読取部と、
前記読取部を制御する制御部と、
を備え、
前記制御部は、
前記読取部に前記原稿の画像を読み取らせ画像データを生成する読取処理と、
前記画像データに含まれる複数の画素のうち、前記画像データが示す画像における外側から内側に向かう探索方向に沿った複数の対象画素に基づいて、前記原稿のエッジを検出するためのエッジ候補点を検出可能であるか否かを判断するエッジ候補点判断処理と、
前記エッジ候補点判断処理により前記エッジ候補点を検出可能であると判断した場合、検出した前記エッジ候補点の位置よりも前記探索方向において更に内側となる前記複数の対象画素について前記エッジ候補点判断処理を再度実行し、探索継続条件を満たすと判断する間、前記エッジ候補点判断処理を繰り返し実行して前記エッジ候補点を更新する更新処理と、
前記探索継続条件を満たさないと判断し前記更新処理を終了した場合に、最後に検出した前記エッジ候補点を最終エッジ候補点として設定し、前記最終エッジ候補点に基づいて、前記原稿のエッジを検出するエッジ検出処理と、
を実行する画像読取装置。
【請求項２】
前記制御部は、
前記更新処理において、前回検出した前記エッジ候補点の位置よりも前記探索方向において更に内側となる前記複数の対象画素のうち、前回検出した前記エッジ候補点の位置から所定画素数内に配置される前記複数の対象画素に基づいて、新たな前記エッジ候補点を検出可能であることを前記探索継続条件とする、請求項１に記載の画像読取装置。
【請求項３】
前記制御部は、
前記エッジ候補点判断処理において、前記複数の対象画素を含む画素領域を設定し、前記画素領域に含まれる有色画素の数に基づいて、前記エッジ候補点を検出可能であるか否かを判断し、
前記更新処理において、前回検出した前記エッジ候補点の位置よりも前記探索方向において更に内側となる前記複数の対象画素を含む前記画素領域を設定し、前記画素領域に含まれる前記有色画素の数に基づいて、新たな前記エッジ候補点を検出可能であることを前記探索継続条件とする、請求項１に記載の画像読取装置。
【請求項４】
前記読取部は、
主走査方向に沿って並ぶ複数の読取素子を有し、前記読取素子により前記原稿の画像を読み取り、
前記探索方向は、
前記主走査方向、又は前記主走査方向に直交する副走査方向である、請求項１乃至請求項３の何れか１項に記載の画像読取装置。
【請求項５】
前記制御部は、
前記画像データに含まれる前記複数の画素について、前記主走査方向に沿って所定の画素数ごとに分けた複数のグループを設定し、
前記主走査方向で異なる画素位置で、且つ前記副走査方向に沿った前記探索方向を設定し、
前記主走査方向で異なる画素位置ごとに、前記探索方向に沿って、前記エッジ候補点判断処理、前記更新処理を実行し、
前記エッジ検出処理において、複数の前記グループの各々で検出した前記最終エッジ候補点に基づいて、前記原稿のエッジを検出する、請求項４に記載の画像読取装置。
【請求項６】
前記制御部は、
前記読取部に前記原稿の読み取りを開始させた後から、読み取りを終了するまでの間に、前記読取処理により生成した前記原稿の一部の前記画像データに対し、前記エッジ候補点判断処理、前記更新処理、前記エッジ検出処理を実行して、前記原稿のエッジを検出し、
前記読取部により先に読み取った画像が存在する側を上流側、後に読み取った画像が存在する側を下流側とした場合に、前記原稿のエッジに基づいて、下流側の前記原稿の終端位置を推定し、
推定した前記原稿の終端位置に基づいて、前記読取部が読み取りを終了するタイミングを決定する、請求項１乃至請求項５の何れか１項に記載の画像読取装置。
【請求項７】
原稿の画像を読み取る読取部と、前記読取部を制御する制御部と、を備える画像読取装置の制御方法であって、
前記読取部に前記原稿の画像を読み取らせ画像データを生成する読取工程と、
前記画像データに含まれる複数の画素のうち、前記画像データが示す画像における外側から内側に向かう探索方向に沿った複数の対象画素に基づいて、前記原稿のエッジを検出するためのエッジ候補点を検出可能であるか否かを判断するエッジ候補点判断工程と、
前記エッジ候補点判断工程により前記エッジ候補点を検出可能であると判断した場合、検出した前記エッジ候補点の位置よりも前記探索方向において更に内側となる前記複数の対象画素について前記エッジ候補点判断工程を再度実行し、探索継続条件を満たすと判断する間、前記エッジ候補点判断工程を繰り返し実行して前記エッジ候補点を更新する更新工程と、
前記探索継続条件を満たさないと判断し前記更新工程を終了した場合に、最後に検出した前記エッジ候補点を最終エッジ候補点として設定し、前記最終エッジ候補点に基づいて、前記原稿のエッジを検出するエッジ検出工程と、
を含む画像読取装置の制御方法。
【請求項８】
原稿の画像を読み取る読取部と、前記読取部を制御する制御部と、を備える画像読取装置の制御をコンピュータに実行させるプログラムであって、
前記コンピュータに、
前記読取部に前記原稿の画像を読み取らせ画像データを生成する読取処理と、
前記画像データに含まれる複数の画素のうち、前記画像データが示す画像における外側から内側に向かう探索方向に沿った複数の対象画素に基づいて、前記原稿のエッジを検出するためのエッジ候補点を検出可能であるか否かを判断するエッジ候補点判断処理と、
前記エッジ候補点判断処理により前記エッジ候補点を検出可能であると判断した場合、検出した前記エッジ候補点の位置よりも前記探索方向において更に内側となる前記複数の対象画素について前記エッジ候補点判断処理を再度実行し、探索継続条件を満たすと判断する間、前記エッジ候補点判断処理を繰り返し実行して前記エッジ候補点を更新する更新処理と、
前記探索継続条件を満たさないと判断し前記更新処理を終了した場合に、最後に検出した前記エッジ候補点を最終エッジ候補点として設定し、前記最終エッジ候補点に基づいて、前記原稿のエッジを検出するエッジ検出処理と、
を実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、原稿の画像を読み取って、画像データを生成する画像読取装置、その画像読取装置の制御方法、及びプログラムに関するものである。
【背景技術】
【０００２】
従来、原稿を読み取った画像データから原稿のエッジを検出する技術が提案されている。例えば、特許文献１に記載された画像読取装置は、ＣＩＳ（Ｃｏｎｔａｃｔ  Ｉｍａｇｅ  Ｓｅｎｓｏｒ）等の読取部により原稿を読み取りつつ、生成した画像データから原稿のエッジを検出している。画像読取装置は、画像データの主走査方向に並ぶ複数の画素に対し、主走査方向の両端から探索を行なってエッジの候補となる点（以下、エッジ候補点という）を検出する。画像読取装置は、主走査方向の両側から探索した場合に、同じ位置でエッジ候補点を検出すると、その位置を１番目の頂点とする。また、画像読取装置は、副走査方向に並ぶラインごとに、主走査方向の両側から探索を実行して２つのエッジ候補点を検出する。画像読取装置は、２つのエッジ候補点間の距離が一定となる位置を検出し、その２つのエッジ候補点のうち、副走査方向における上流側（先に読み取られた側）となるエッジ候補点を２番目の頂点とする。画像読取装置は、１番目及び２番目の頂点から原稿のエッジを検出する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−２９９９７号公報（段落００２４、００２８、図５）
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、例えば、本や雑誌などの複数のシートを重ねた原稿（以下、ブック原稿という場合がある）は、所望のページを読み取る場合、開いた状態で原稿台に載置される。この際に、ブック原稿を広げた外側の端部は、複数ページのエッジが並ぶ状態となる。また、読み取りたい原稿のエッジは、例えば、並んだ複数のエッジの最も内側に配置される。このため、上記した主走査方向や副走査方向の外側から最初に検出したエッジ候補点を採用する方法では、ブック原稿のエッジを適切に検出できない虞があった。
【０００５】
本願は、上記の課題に鑑み提案されたものであって、ブック原稿のエッジを精度良く検出できる画像読取装置、画像読取装置の制御方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本願は、原稿の画像を読み取る読取部と、前記読取部を制御する制御部と、を備え、前記制御部は、前記読取部に前記原稿の画像を読み取らせ画像データを生成する読取処理と、前記画像データに含まれる複数の画素のうち、前記画像データが示す画像における外側から内側に向かう探索方向に沿った複数の対象画素に基づいて、前記原稿のエッジを検出するためのエッジ候補点を検出可能であるか否かを判断するエッジ候補点判断処理と、前記エッジ候補点判断処理により前記エッジ候補点を検出可能であると判断した場合、検出した前記エッジ候補点の位置よりも前記探索方向において更に内側となる前記複数の対象画素について前記エッジ候補点判断処理を再度実行し、探索継続条件を満たすと判断する間、前記エッジ候補点判断処理を繰り返し実行して前記エッジ候補点を更新する更新処理と、前記探索継続条件を満たさないと判断し前記更新処理を終了した場合に、最後に検出した前記エッジ候補点を最終エッジ候補点として設定し、前記最終エッジ候補点に基づいて、前記原稿のエッジを検出するエッジ検出処理と、を実行する画像読取装置を開示する。
【０００７】
また、本明細書に開示される技術は、種々の形態で実施可能である。例えば、上記した画像読取装置としての実施だけでなく、画像読取装置の制御方法、及びプログラムとして実施しても有益である。
【発明の効果】
【０００８】
本願に係る画像読取装置等によれば、画像データが示す画像の外側から内側に向かう探索方向に沿って、複数の対象画素に基づいてエッジ候補点の探索を行なう。画像読取装置等は、一度、エッジ候補点を検出した後も、探索継続条件を満たす間、探索方向に沿ってより内側へとエッジ候補点の探索を継続し、エッジ候補点を更新する。そして、画像読取装置等は、探索継続条件を満たさないと判断すると、最後に検出した最終エッジ候補点に基づいて原稿のエッジを検出する。従って、画像読取装置等は、探索方向に沿って複数のエッジ候補点が存在する場合に、継続条件を満たす、より内側の最終エッジ候補点を、原稿のエッジを検出するための点として用いる。これにより、ブック原稿の端部のように、複数のページのエッジが並んで配置される画像データから精度良くエッジを検出することができる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態のスキャナの電気的構成を示すブロック図である。
【図２】スキャナの平面図であり、ＦＢカバーを開いた状態を示す図である。
【図３】エッジ候補点処理の内容を示すフローチャートである。
【図４】画像データ出力処理の内容を示すフローチャートである。
【図５】ブック原稿の画像の一部を示す画像データの図と、その一部拡大図である。
【図６】１つの探索方向において画素領域をずらして探索を行なった状態を示す模式図である。
【図７】読取領域に配置されたブック原稿を示す図である。
【図８】読取領域に配置された傾いたブック原稿を示す図である。
【図９】１つのグループにおける中央位置を設定する状態を示す図である。
【図１０】各グループの中央位置と、エッジとの関係を示す図である。
【図１１】別例の探索方法を説明するための図であって、ブック原稿の画像の一部拡大図である。
【発明を実施するための形態】
【００１０】
以下、本願の画像読取装置を具体化した一実施形態であるスキャナ１０について図１を参照しつつ説明する。図１は、スキャナ１０の電気的構成を示すブロック図である。尚、本願の実施形態は、下記の実施形態に何ら限定されることはなく、本願の技術的範囲に属する限り種々の形態を採りうる。
【００１１】
（１．スキャナの構成）
図１に示すように、スキャナ１０は、ＣＰＵ１１、ＲＡＭ１３、メモリ１５、読取部１７、タッチパネル１９、通信部２１を備えている。これらのＣＰＵ１１等は、バス２３で互いに接続されている。また、スキャナ１０は、商用電源から電力を供給する電源２５を備えている。電源２５は、電源コードや電源回路（ブリッジダイオード、平滑化回路など）を備え、商用電源から直流電源を生成し、電源線にてスキャナ１０が備える各部へ電力を供給する。
【００１２】
メモリ１５は、例えば、ＮＶＲＡＭなどの不揮発性メモリである。なお、本願の画像読取装置が備える記憶部は、ＮＶＲＡＭに限らず、揮発性のＲＡＭ、ＲＯＭ、ＨＤＤ、スキャナ１０に接続される外部記憶装置（ＵＳＢメモリなど）、あるいはそれらを組み合わせた記憶部でも良い。また、記憶部は、通信部２１を介して接続されるファイルサーバ等でも良い。また、記憶部は、コンピュータが読み取り可能なストレージ媒体であってもよい。コンピュータが読み取り可能なストレージ媒体とは、ｎｏｎ−ｔｒａｎｓｉｔｏｒｙな媒体である。ｎｏｎ−ｔｒａｎｓｉｔｏｒｙな媒体には、上記の例の他に、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等の記録媒体も含まれる。また、ｎｏｎ−ｔｒａｎｓｉｔｏｒｙな媒体は、ｔａｎｇｉｂｌｅな媒体でもある。一方、インターネット上のサーバなどからダウンロードされるプログラムを搬送する電気信号は、コンピュータが読み取り可能な媒体の一種であるコンピュータが読み取り可能な信号媒体であるが、ｎｏｎ−ｔｒａｎｓｉｔｏｒｙなコンピュータが読み取り可能なストレージ媒体には含まれない。
【００１３】
メモリ１５は、制御プログラム２７などの各種プログラムを保存している。制御プログラム２７は、スキャナ１０の各部を統括的に制御するプログラムである。ＣＰＵ１１は、制御プログラム２７を実行し、実行した処理結果をＲＡＭ１３に一時的に記憶させながら、バス２３で接続された各部を制御する。なお、以下の説明では、ＣＰＵ１１で制御プログラム２７を実行するスキャナ１０のことを、単に装置名で記載する場合がある。例えば、「スキャナ１０が原稿の読み取りを実行する」という記載は、「スキャナ１０が、ＣＰＵ１１で制御プログラム２７を実行し読取部１７を制御することで、原稿の読み取りを実行する」ということを意味する場合がある。
【００１４】
図２は、スキャナ１０の平面図であり、ＦＢカバー３３を開いた状態を示している。図２に示すように、読取部１７は、プラテンガラス３１、ＦＢカバー３３、読取デバイス３５などを備えている。スキャナ１０は、原稿４１をプラテンガラス３１に載置して画像の読み取りを行なう、所謂、フラットベッド方式の画像読取装置である。なお、スキャナ１０は、原稿４１を自動で搬送する自動原稿送り装置（ＡＤＦ：Ａｕｔｏｍａｔｉｃ  Ｄｏｃｕｍｅｎｔ  Ｆｅｅｄｅｒ）を備えても良い。
【００１５】
プラテンガラス３１は、スキャナ１０の筐体３７の上部に取り付けられている。ＦＢカバー３３は、略板状をなし、筐体３７によって回転可能に保持されている。ＦＢカバー３３は、プラテンガラス３１を露出させる開位置と、プラテンガラス３１の上面を覆う閉位置とで変位可能となっている。
【００１６】
読取デバイス３５は、プラテンガラス３１の下方であって、筐体３７の内部に配置されている。読取デバイス３５は、読取素子３９を備えている。読取素子３９は、例えば、ＣＩＳ（Ｃｏｎｔａｃｔ  Ｉｍａｇｅ  Ｓｅｎｓｏｒ）である。なお、読取素子３９は、ＣＩＳに限らず、ＣＣＤ(Ｃｈａｒｇｅ-Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ)等の他のイメージセンサでも良い。また、読取素子３９は、図２に示す主走査方向に配列された受光素子、プラテンガラス３１に向けて光を出射する光源、光源から出射され原稿４１により反射された光線を結像させるロッドレンズアレイなどを備えている。読取部１７は、原稿４１の画像を、例えば、主走査方向に１ライン分読み取る。
【００１７】
また、読取部１７は、主走査方向と直交する副走査方向へ読取デバイス３５を移動させる移動機構（図示略）を備えている。移動機構は、例えば、正逆回転可能なモータや、モータによって駆動されるプーリ、プーリに架け渡されたエンドレスのベルトなどを備えている。読取デバイス３５は、ベルトに駆動連結されており、移動機構のモータの駆動に基づいて、副走査方向に移動する。ＣＰＵ１１は、読取部１７を制御して、読取素子３９に原稿４１を読み取らせ、原稿４１の画像データ４３（図１参照）を生成する。ＣＰＵ１１は、例えば、生成途中の画像データ４３や生成後の画像データ４３をＲＡＭ１３に記憶させる。
【００１８】
図１に戻り、タッチパネル１９は、例えば、液晶パネル、液晶パネルの背面側から光を照射するＬＥＤ等の光源、液晶パネルの表面に貼り合わされた接触感知膜等を備えている。タッチパネル１９は、ＣＰＵ１１の制御に基づいて、例えば各種の設定画面や装置の動作状態等を表示する。また、タッチパネル１９は、操作入力に応じた信号をＣＰＵ１１へ送信する。ＣＰＵ１１は、タッチパネル１９に対する操作入力に応じて読み取りの設定や実行を行なう。なお、本実施形態のスキャナ１０は、表示部と操作部とを兼ねたタッチパネル１９を備えているが、特にこれに限らず、タッチパネル１９の代わりに表示機能のみを有する液晶画面やハードキーを備えても良い。
【００１９】
通信部２１は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）インタフェースであり、ＬＡＮケーブル（図示略）を介してルータ等に接続されている。ユーザは、例えば、通信部２１に接続されたＰＣを操作することで、ＰＣからスキャナ１０へスキャン指令を実行し、スキャナ１０で生成した画像データを取得することができる。なお、通信部２１の通信方式は、有線通信方式に限らず、無線通信方式でも良い。
【００２０】
（２．エッジ候補点処理、画像データ出力処理）
次に、スキャナ１０が実行するエッジ候補点を検出するエッジ候補点処理と、読み取った画像データ４３を出力する画像データ出力処理について図３及び図４を参照しつつ説明する。ここでいうエッジ候補点とは、後述するように、画像データ４３に含まれる画素に基づいて検出する点であり、原稿４１のエッジを検出するための位置を示す点である。スキャナ１０のＣＰＵ１１は、例えば、タッチパネル１９に表示したスキャン開始キーのタッチ操作を検出すると、図３及び図４の処理を開始する。以下の説明では、読み取り対象の原稿４１としてブック原稿５１（図５参照）を用いる場合について説明する。ここでいうブック原稿５１とは、本や雑誌などの複数のシートを重ねた原稿である。なお、本願のブック原稿とは、本や雑誌に限定されるものではなく、例えば、複数のプリントをファイリングしたファイルでも良い。また、ブック原稿は、紙媒体のシートの集合体に限らず、例えば、有色のＯＨＰシートを集めたものでも良い。
【００２１】
図３は、エッジ候補点処理の内容を示すフローチャートである。なお、本明細書のフローチャートは、基本的に、プログラムに記述された命令に従ったＣＰＵ１１の処理を示す。即ち、以下の説明における「検出」、「判断」、「更新」等の処理は、ＣＰＵ１１の処理を表している。ＣＰＵ１１による処理は、ハードウェア制御も含む。
【００２２】
ＣＰＵ１１は、図３の処理を開始すると、ステップ（以下、単に「Ｓ」と記載する）１１において、画像の読み取りを開始する。ＣＰＵ１１は、読取素子３９にブック原稿５１の画像を読み取らせつつ、読取デバイス３５を副走査方向に移動させる。ＣＰＵ１１は、読取素子３９の出力信号に基づいて画像データ４３の生成を開始する。ＣＰＵ１１は、画像データ４３の生成と並行して、次のＳ１３以降の処理を実行する。従って、本実施形態のＣＰＵ１１は、ブック原稿５１の画像の一部を示す画像データ４３に対して、エッジの検出処理を実行する。なお、ＣＰＵ１１は、ブック原稿５１の画像の全体を示す画像データ４３を生成した後に、後述するエッジ候補点やエッジの検出を実行しても良い。
【００２３】
図５は、ブック原稿５１の画像の一部を示す画像データ４３を示している。なお、以下の説明では、図５に示すように、副走査方向において、先に読み取られた画像が存在する側を上側、後に読み取られた画像が存在する側を下側と称して説明する。また、読取素子３９の読み取り開始位置、例えば、図２の主走査方向におけるプラテンガラス３１の右側端部に、ブック原稿５１の端部（ページを閉じる背面部分から遠い端部）を合わせた場合について説明する。
【００２４】
図５の拡大図に示すように、画像データ４３の上側端部には、複数のページの端部を読み取った複数のエッジ５３が形成されている。この複数のエッジ５３は、見開いてプラテンガラス３１に押しつけたページのエッジ５３と、見開いたページ以外のページのエッジ５３である。この場合、読み取る画像データ４３のエッジ５３としては、見開いたページのエッジ５３、即ち、複数のエッジ５３のうち、画像データ４３が示す画像における最も内側（図５であれば最も下側）のエッジ５３を検出することが好ましい。以下の説明では、この見開いたページの（検出すべき）エッジ５３を、他のエッジ５３と区別する場合、エッジ５３Ａと称して説明する。
【００２５】
また、図５に示すように、ＣＰＵ１１は、副走査方向に沿って、上側から下側に向かう複数の方向を、エッジ候補点を探索する探索方向５５として設定する。ＣＰＵ１１は、例えば、主走査方向に並ぶ１画素（ピクセル）ごとに副走査方向に沿った探索方向５５を設定し、探索方向５５に沿ってエッジ候補点を探索する。この場合、ＣＰＵ１１は、主走査方向に沿って並ぶ複数の画素について、１画素ずつずらした画素の位置（以下、画素位置という場合がある）で副走査方向へ探索を行なうこととなる。なお、ＣＰＵ１１は、主走査方向において、数画素ごとに画素位置をずらして探索方向５５に沿って探索を実行しても良い。
【００２６】
ＣＰＵ１１は、図５の拡大図に示すように、画素領域５７を設定し、画素領域５７に含まれる有色画素の数に基づいて、エッジ候補点を検出する。本実施形態のＣＰＵ１１は、有色画素の数の判断を簡素化するため、白と黒の２値化した画像データ４３を対象に、黒色の画素（有色画素）の数を判断する。例えば、ＣＰＵ１１は、図３のＳ１１において、タッチパネル１９で設定された読み取り設定に基づく画像データ４３を生成するとともに、２値化したモノクロの画像データ４３を、エッジ候補点を検出するための画像データとして生成する。
【００２７】
図５の拡大図で示すように、画像データ４３の上側の複数のエッジ５３が並ぶ画像は、上側から下側（画像データ４３が示す画像の外側から内側）に行くに従って、ブック原稿５１のページ端の距離が狭くなることで、色が濃くなる、即ち、黒色の画素の密度が増加する。換言すれば、ブック原稿５１をプラテンガラス３１に押しつけた場合、重なった２つのページのページ端の距離は、ブック原稿５１の内側から外側に行くに従って広がると考えられる。また、例えば、黒色の画素の密度は、外側から内側に行くに従って徐々に増加し、見開いた（読み取る）ページのエッジ５３、即ち、検出したいエッジ５３Ａの位置で最大となる可能性が高い。そこで、本実施形態のＣＰＵ１１は、画像データ４３に対し外側から内側へエッジ候補点の探索を行ない、黒色の画素の密度が最大となる位置を最終的なエッジ候補点（以下、最終エッジ候補点という場合がある）として決定する。
【００２８】
なお、上記したように、黒色の画素の密度は、読み取るページのエッジ５３Ａで最大値となることが好ましい。このため、ＣＰＵ１１は、例えば、Ｓ１１において、エッジ候補点を検出するための画像データ４３に対してエッジ５３Ａを強調する処理を実行しても良い。例えば、ＣＰＵ１１は、画像データ４３に対してソーベルフィルタ等をかけてエッジ５３Ａを強調する画像処理を実行しても良い。これにより、読み取るページ端の色の影響を低減し、エッジ５３Ａにおける黒色の画素の密度を最大値にできる、即ち、後述する処理を実行することで、エッジ５３Ａの検出精度を高めることができる。
【００２９】
図６は、１つの探索方向５５において画素領域５７をずらして探索を行なった状態を模式的に示している。図６では、一例として、画素領域５７として、副走査方向（探索方向５５）に７画素分、主走査方向に１画素分の大きさを有する領域を用いている。なお、図６に示す画素領域５７の形状は、一例である。例えば、画素領域５７は、主走査方向に２画素分以上の幅を有していても良く、副走査方向に１画素分の幅を有していても良い。また、画素領域５７が、主走査方向に２画素分以上の幅を有している場合、ＣＰＵ１１は、主走査方向において画素領域５７が重ならない画素位置ごとに探索方向５５へ探索を実行しても良く、画素領域５７の一部を重ねて探索を実行しても良い。より具体的には、例えば、主走査方向に５画素分の幅を有する画素領域５７を用いる場合、１つの探索方向５５で探索を実行した後、画素領域５７を主走査方向に４画素分ずらした（１画素分重複させた）画素位置で探索方向５５に探索を実行しても良い。
【００３０】
図３に戻り、ＣＰＵ１１は、Ｓ１１で画像データ４３の生成を開始すると、最初のエッジ候補点の検出を実行する（Ｓ１３）。図６に示す副走査方向に７画素分の幅を有する画素領域５７を用いる場合、ＣＰＵ１１は、例えば、Ｓ１１で画像データ４３の生成を開始した後、副走査方向において７画素分（７ライン分）の画像データ４３を生成すると、Ｓ１３の処理を開始する。ＣＰＵ１１は、図６の１回目に示すように、まず、画像データ４３の上端から７画素分の画素５９（対象画素の一例）を含むように、画素領域５７を設定する。ＣＰＵ１１は、例えば、画素領域５７に含まれる画素５９のうち、黒色の画素５９（以下、黒色画素５９Ａという場合がある）が一つでも含まれると最初のエッジ候補点６１を検出可能であると判断する。なお、最初のエッジ候補点６１を検出可能であるか否かを判断する条件は、画素領域５７内に黒色画素５９Ａが少なくとも１つ含まれる条件に限らず、例えば、黒色画素５９Ａの密度が所定値以上となる条件でも良い。
【００３１】
ＣＰＵ１１は、例えば、探索方向５５における画素領域５７の中央の画素５９の位置を、最初のエッジ候補点６１（以下、初期エッジ候補点６１Ａという場合がある）に設定する。なお、エッジ候補点６１は、画素領域５７の中央位置に限らず、上端や下端でも良い。また、例えば、画素領域５７が探索方向５５において偶数（例えば、４画素分）の領域である場合、上から２番目の画素５９と３番目の画素５９の中間地点をエッジ候補点６１に設定しても良い。従って、エッジ候補点６１は、画素領域５７に含まれる画素５９（対象画素の一例）に基づく位置であれば様々な位置を採用できる。
【００３２】
ＣＰＵ１１は、図６に示すように、例えば、読取素子３９によって読み取り可能な画像の読み取り領域内における上端（副走査方向の上端）且つ左端（図２の主走査方向の左端）を原点（０，０）に設定し、主走査方向に沿ったＸ座標と、副走査方向に沿ったＹ座標とを設定する。ＣＰＵ１１は、エッジ候補点６１（初期エッジ候補点６１Ａ）のＸＹ座標をＲＡＭ１３に記憶することで、エッジ候補点６１の位置をＸＹ座標で管理する。なお、ＣＰＵ１１は、例えば、１回目の画素領域５７に黒色画素５９Ａが含まれていなかった場合、即ち、１回目の探索でエッジ候補点６１を検出可能であると判断できない場合、後述するように画素領域５７を探索方向５５に沿って２画素分ずつ下側へずらしながら、画素領域５７に黒色画素５９Ａが含まれる位置を探索しても良い。即ち、ＣＰＵ１１は、初期エッジ候補点６１Ａを検出可能と判断するまで探索を継続しても良い。
【００３３】
ＣＰＵ１１は、Ｓ１３で初期エッジ候補点６１Ａを検出した後、探索継続条件を満たす次のエッジ候補点６１が検出可能であるか否かを判断する（Ｓ１５）。ここでいう探索継続条件とは、例えば、前回の検出に用いた画素領域５７の位置を基準に、探索方向５５に沿って２画素分だけ下側へ画素領域５７をずらし、ずらした後の画素領域５７内に含まれる黒色画素５９Ａの密度が、前回の画素領域５７の黒色画素５９Ａの密度より高い条件である。ここでいう黒色画素５９Ａの密度とは、図６に示す例では、画素領域５７に含まれる黒色画素５９Ａの数を、画素領域５７の画素数（７画素＝黒色画素５９Ａ＋白色画素５９Ｂ）で除算した値である。上記したように、探索方向５５に並ぶブック原稿５１のエッジ５３間の距離が、上側から下側に行くに従って短くなることで、黒色画素５９Ａの密度が増加すると考えられる。そこで、ＣＰＵ１１は、前回の探索における黒色画素５９Ａの密度に比べて、次の探索における黒色画素５９Ａの密度が高くなる間、エッジ候補点６１の探索を継続する。これにより、密度の最も高くなる画素領域５７の画素５９に基づいてエッジ候補点６１を検出、即ち、所望のエッジ５３Ａを検出可能なエッジ候補点６１を検出できる。なお、探索継続条件は、上記した密度が増加する条件に限らない。例えば、ＣＰＵ１１は、前回の探索における黒色画素５９Ａの数に比べて、次の探索における黒色画素５９Ａの数が多くなる間、エッジ候補点６１の探索を継続しても良い。
【００３４】
図６に示すように、２画素分だけずらした後の画素領域５７には、２つの黒色画素５９Ａが含まれている。従って、前回の密度に比べて今回の密度が高くなっているため、ＣＰＵ１１は、Ｓ１５において探索継続条件を満たす次のエッジ候補点６１を検出可能であると判断し（Ｓ１５：ＹＥＳ）、エッジ候補点６１の情報を更新する（Ｓ１７）。ＣＰＵ１１は、２回目の画素領域５７の中央となる画素５９のＸＹ座標の値で、ＲＡＭ１３に記憶しているエッジ候補点６１のＸＹ座標の値を更新する。これにより、エッジ候補点６１のＸＹ座標の値が、新たなエッジ候補点６１を検出するごとに更新される。
【００３５】
次に、ＣＰＵ１１は、新たに検出した２回目の画素領域５７の位置を基準に、探索方向５５に沿って２画素分だけ画素領域５７を下側へずらす（Ｓ１９）。ＣＰＵ１１は、画素領域５７をずらした後、Ｓ１５の判断処理を再度実行する。図６に示すように、３回目も、２回目と同様に、黒色画素５９Ａが一つ増え、黒色画素５９Ａの密度が増加している。ＣＰＵ１１は、Ｓ１５で肯定判断し（Ｓ１５：ＹＥＳ）、エッジ候補点６１のＸＹ座標を更新し（Ｓ１７）、画素領域５７の位置をさらにずらす（Ｓ１９）。
【００３６】
図６に示すように、４回目の画素領域５７は、白色画素５９Ｂが１つ増えている。このため、今回（４回目）の黒色画素５９Ａの密度が、前回（３回目）の密度に比べて低くなるため、ＣＰＵ１１は、Ｓ１５で否定判断し（Ｓ１５）、Ｓ２１を実行する。Ｓ２１において、ＣＰＵ１１は、最終的に見つかったエッジ候補点６１を、最終エッジ候補点６１Ｂとして設定する。図６に示す例では、ＣＰＵ１１は、３回目のエッジ候補点６１を、最終エッジ候補点６１Ｂとして設定し、最終エッジ候補点６１ＢのＸＹ座標の値を、ＲＡＭ１３に記憶する。ＣＰＵ１１は、図３に示すエッジ候補点を終了する。
【００３７】
また、ＣＰＵ１１は、図３に示す処理を、図５に示すように、主走査方向において異なる画素位置で探索方向５５に沿って実行する。ＣＰＵ１１は、副走査方向へ読取デバイス３５を移動させ画像データ４３を生成しつつ、各画素位置において、エッジ候補点６１を判断、更新する処理を繰り返し実行する。ＣＰＵ１１は、例えば、探索方向５５（副走査方向）に沿って次の探索の位置へ画素領域５７を移動させるだけの画像の読み取りが終了すると（図６の場合は２画素分（２ライン分）の読み取りが終了すると）、各画素位置について次の画素領域５７を設定し、エッジ候補点６１の判断等を行う。これにより、ＣＰＵ１１は、主走査方向における異なる画素位置ごとに最終エッジ候補点６１Ｂを検出する。ＣＰＵ１１は、各最終エッジ候補点６１ＢのＸＹ座標をＲＡＭ１３に記憶する。また、上記したように、Ｓ１３の初期エッジ候補点６１Ａを検出するための１回目の判断処理では、判断処理を開始する前に、副走査方向の上端の画素から画素領域５７の画素分（本実施例では７画素分）の読み取りを終了させる必要があった。しかしながら、１回目で検出できずに２回目の初期エッジ候補点６１Ａを検出する判断処理や、Ｓ１５の継続条件に基づく判断処理では、画素領域５７を移動させる（ずらす）だけの画素分（例えば、２画素分）の読み取りが終了すれば判断処理を開始できる。これにより、次の判断処理を最短時間で開始できる。
【００３８】
なお、ＣＰＵ１１は、探索方向５５に探索を実行して、初期エッジ候補点６１Ａを検出できない場合、即ち、１つもエッジ候補点６１を検出できない場合、Ｓ１５以降を実行できない。このため、ＣＰＵ１１は、例えば、ブック原稿５１のない読取領域などを探索してエッジ候補点６１を検出できない場合、所定の条件に従って、その探索方向５５における探索を打ち切っても良い。図７は、読取領域６３に配置したブック原稿５１の状態を示している。読取領域６３は、例えば、読取デバイス３５によって読取可能な最大領域を示している。
【００３９】
図７に示すように、主走査方向における読取領域６３の両側にブック原稿５１のない読取領域６３Ａが存在する場合、ＣＰＵ１１は、読取領域６３Ａにおいて探索方向５５に初期エッジ候補点６１Ａを探索しても発見することができない。そこで、ＣＰＵ１１は、例えば、所定の条件として、初期エッジ候補点６１Ａを検出できた全ての画素位置において最終エッジ候補点６１Ｂの検出を完了した時点で、未だに初期エッジ候補点６１Ａを検出できていない画素位置が存在する場合、その画素位置については探索を打ち切っても良い。これにより、ブック原稿５１のない読取領域６３Ａにおいて不要な探索を継続すること抑制できる。あるいは、図７に示すように、ＣＰＵ１１は、副走査方向の探索方向５５と直交する主走査方向に沿った探索方向５５Ａを設定し、主走査方向のエッジを検出しても良い。そして、ＣＰＵ１１は、例えば、探索方向５５、５５Ａの両方で探索を実行してブック原稿５１の頂点６５を検出した場合、その頂点６５よりも外側（図７に示す例では左右の両側）の探索を打ち切っても良い。
【００４０】
また、ブック原稿５１の端部に並ぶページ端間の距離（エッジ５３間の距離）は、ブック原稿５１をプラテンガラス３１に押し当てる力が増加するほど、広がる可能性がある。例えば、エッジ５３間の距離は、エッジ５３Ａ側（下側）から上側に行くに従って徐々に広がる可能性がある。そこで、例えば、ＣＰＵ１１は、探索方向５５に沿って上側から下側へ探索の回数を重ねるごとに、画素領域５７の副走査方向における長さを徐々に短くする調整を行なっても良い。これにより、上側のエッジ５３間の距離が長くなる場所では、より長い画素領域５７を用いることで、次のエッジ５３（黒色画素５９Ａ）を画素領域５７に含めることができる。また、下側のエッジ５３間の距離が短くなる場所では、より短い画素領域５７を用いることで、不要なエッジ５３（黒色画素５９Ａ）が画素領域５７に含まれることを抑制できる。また、ＣＰＵ１１は、ＦＢカバー３３の押圧力に応じて画素領域５７の大きさを変更しても良い。
【００４１】
一方、ＣＰＵ１１は、各探索方向５５について図３のエッジ候補点処理を実行しつつ、図４に示す画像データ出力処理を並行して実行する。ＣＰＵ１１は、図４の処理を開始すると、Ｓ２３において、探索を終了したか否かを判断する。探索の終了条件は、適宜変更可能である。例えば、探索の終了条件は、上記した図７に示すブック原稿５１のない読取領域６３Ａを除く読取領域６３（ブック原稿５１の存在する読取領域６３）内の全ての画素位置において最終エッジ候補点６１Ｂを検出できた条件である。なお、ＣＰＵ１１は、図３の処理と同時に図４の処理を開始しなくとも良い。例えば、ＣＰＵ１１は、いずれかの画素位置で最終エッジ候補点６１Ｂを検出できたタイミングで図４の処理を開始しても良い。
【００４２】
ＣＰＵ１１は、読取領域６３Ａを除く読取領域６３内の全ての画素位置で最終エッジ候補点６１Ｂを検出できていない場合、Ｓ２３で否定判断し（Ｓ２３：ＮＯ）、Ｓ２３の判断処理を繰り返し実行する。この場合、ＣＰＵ１１は、図３の処理を継続し、最終エッジ候補点６１Ｂの探索を継続する。また、ＣＰＵ１１は、Ｓ２３で肯定判断すると（Ｓ２３：ＹＥＳ）、グループごとの中央位置を検出する（Ｓ２５）。本実施形態のＣＰＵ１１は、主走査方向に沿って所定の画素数ごとに分けた複数のグループを設定し、複数のグループの各々で検出した最終エッジ候補点６１Ｂに基づいて、ブック原稿５１のエッジ５３Ａを検出する
【００４３】
ＣＰＵ１１は、例えば、図５及び図７に示すように、最終エッジ候補点６１Ｂを検出した領域（読取領域６３Ａを除く読取領域６３）において、主走査方向に沿った所定画素数ごとにグループ６７を設定する。グループ６７を分ける主走査方向に沿った画素数は、例えば、数画素から数十画素である。ＣＰＵ１１は、例えば、図５における左から右へ順に所定画素数ごとに、第１グループ、第２グループ、・・・最終グループとグループ６７を設定する。あるいは、ＣＰＵ１１は、主走査方向における両側から順番に左から１番目を第１グループ、右から１番目を第２グループ、左から２番目を第３グループ・・と設定しても良い。また、ＣＰＵ１１は、順番にグループを設定して、最終的に所定画素数に満たない領域（余った領域）を、最終グループとして設定してもよく、余った領域にグループを設定せずその領域内の最終エッジ候補点６１Ｂの情報を破棄しても良い。
【００４４】
また、ＣＰＵ１１は、主走査方向や副走査方向に対してブック原稿５１が傾いていた場合、グループ６７の設定方法を変更しても良い。図８は、傾いたブック原稿５１を配置した状態を示している。この場合、頂点６５の右側と左側とでは、ブック原稿５１における異なる端部のエッジ５３Ａが検出される。ＣＰＵ１１は、例えば、頂点６５の左側と右側のそれぞれで、副走査方向の下方に行くに従って主走査方向の両側へ広がるエッジ候補点６１（右肩下がり又は左肩下がりのエッジ候補点６１）を検出する。このような場合に、図８に示すように、ＣＰＵ１１は、例えば、頂点６５を中心として左側のグループ６７Ａと、右側のグループ６７Ｂの異なるグループを設定しても良い（図中のＡグループ、Ｂグループ参照）。
【００４５】
図９は、１つのグループ６７における中央位置６９を設定する状態を示している。図９に示すように、ＣＰＵ１１は、例えば、任意のグループにおいて検出した全ての最終エッジ候補点６１ＢのＹ座標（図中のＹ１〜Ｙ４など）の平均値（図中の平均Ｙ）を算出する。また、ＣＰＵ１１は、そのグループにおけるＸ座標の中央位置を算出する（図中の中央Ｘ）。そして、ＣＰＵ１１は、中央Ｘ、平均ＹのＸＹ座標を、中央位置６９のＸＹ座標として設定する。即ち、中央位置６９は、任意のグループ６７におけるＸ座標の中央位置で、且つグループ６７内の最終エッジ候補点６１ＢのＹ座標の平均値の位置となる。
【００４６】
ＣＰＵ１１は、Ｓ２５で全てのグループ６７について中央位置６９を検出すると、複数の中央位置６９に基づいてエッジ５３Ａを検出する（Ｓ２７）。図１０は、複数の中央位置６９と、検出されるエッジ５３Ａの関係を示している。図１０に示すように、ＣＰＵ１１は、例えば、Ｓ２５で検出した各グループ６７の中央位置６９のＸＹ座標を用いて、ＸＹ座標の平均的な位置を通る直線をエッジ５３Ａとして算出する。ＣＰＵ１１は、例えば、全ての中央位置６９のＸＹ座標の値を用いて最小２乗法の演算を実行し、エッジ５３Ａを示す直線（位置座標や関数）を算出する。これにより、ＣＰＵ１１は、エッジ候補点６１に基づいてブック原稿５１のエッジ５３Ａ（所望のエッジ５３）を検出することができる。
【００４７】
次に、ＣＰＵ１１は、Ｓ２７で検出したエッジ５３Ａに基づいてブック原稿５１の終端位置を推定する（Ｓ２９）。例えば、図７に示すように、ＣＰＵ１１は、ブック原稿５１の上端のエッジ５３Ａを検出する。ＣＰＵ１１は、例えば、エッジ５３Ａの長さが、文庫（Ａ６）、コミック（Ｂ５）などの定型サイズの長さと一致する場合（あるいは近似される場合）、その定型サイズの長さに基づいて、ブック原稿５１の副走査方向に沿った長さを設定する。そして、ＣＰＵ１１は、主走査方向におけるエッジ５３Ａの中央位置で、且つエッジ５３Ａからブック原稿５１の副走査方向に沿った長さだけ下方となる位置を、終端位置７１として推定する。ＣＰＵ１１は、推定した終端位置７１を、読み取りを終了する位置、即ち、読取デバイス３５を副走査方向へ移動させる最終地点として設定する（Ｓ２９）。これにより、ＣＰＵ１１は、ブック原稿５１の大きさに合った読み取りの終了タイミングを設定できる。
【００４８】
なお、、終端位置７１を決定する方法は、上記した方法に限らない。例えば、図７に示すように、副走査方向に沿った探索方向５５の探索と並行して、主走査方向に沿った探索方向５５Ａの探索を行ない、主走査方向に沿ったエッジ５３Ａと、副走査方向に沿ったエッジ５３Ａの長さに基づいて終端位置７１を推定しても良い。あるいは、図８に示すように、ブック原稿５１が傾いている場合、ＣＰＵ１１は、例えば、ブック原稿５１の上端のエッジ５３Ａの長さと、定型サイズの情報とに基づいて、ブック原稿５１のエッジ５３Ａと違う端部の長さ７５を設定する。そして、ＣＰＵ１１は、設定した端部の長さ７５、エッジ５３Ａと主走査方向とがなす角度７３（傾き）に基づき、エッジ５３Ａの端部（図８における右側端部）に直交する方向へ長さ７５を伸ばした位置を算出し、その位置を終端位置７１として推定しても良い。
【００４９】
ＣＰＵ１１は、Ｓ２９で終端位置７１を決定すると、決定した終端位置７１で読取デバイス３５による読み取りを終了させ、画像データ４３の出力などを行なう（Ｓ３１）。これにより、ＣＰＵ１１は、終端位置７１よりも下側の不要な領域の読取処理を省略し、より迅速に読取処理を終了して画像データ４３を出力等できる。ＣＰＵ１１は、Ｓ３１を実行すると、図４に示す画像データ出力処理を終了する。
【００５０】
（３．別の探索方法）
なお、上記したエッジ候補点処理では、ＣＰＵ１１は、矩形の画素領域５７を用いてエッジ候補点６１を検出したが、エッジ候補点６１を検出する方法は、これに限らない。例えば、ＣＰＵ１１は、図３の探索継続条件として、前回検出したエッジ候補点６１の位置よりも探索方向５５Ａにおいて更に下側となる画素５９のうち、前回検出したエッジ候補点６１の位置から所定画素数内に配置される画素５９の中から、新たなエッジ候補点６１を検出可能である条件を用いても良い。
【００５１】
図１１は、別例の探索方法を示している。エッジ候補点処理の内容としては、図３と同様であるため、以下の説明では、図３を用いて説明する。ＣＰＵ１１は、例えば、図３と同様に、まず初期エッジ候補点６１Ａを検出する（Ｓ１３）。例えば、ＣＰＵ１１は、画像データ４３の上端から探索方向５５に沿って下側へ順番に画素５９の色（画素値）を判断し、最初に見つけた黒色画素５９Ａの位置を、初期エッジ候補点６１Ａの位置とする。
【００５２】
次に、ＣＰＵ１１は、初期エッジ候補点６１Ａから探索方向５５に沿って下側に並ぶ所定画素数（例えば、１０画素）の画素５９内に黒色画素５９Ａが含まれているか否かを判断する（Ｓ１５）。例えば、ＣＰＵ１１は、初期エッジ候補点６１Ａの下側の１０個の画素に黒色画素５９Ａが含まれていた場合、その黒色画素５９Ａの位置を新たなエッジ候補点６１として検出する。ＣＰＵ１１は、新たに検出したエッジ候補点６１に基づいてＲＡＭ１３のエッジ候補点６１のＸＹ座標を更新する（Ｓ１７）。なお、ＣＰＵ１１は、例えば、１０画素中に複数の黒色画素５９Ａを検出した場合、最も上側の黒色画素５９Ａの位置をエッジ候補点６１に決定しても良い。
【００５３】
ＣＰＵ１１は、新たに検出したエッジ候補点６１を基準に、そのエッジ候補点６１の下側の１０画素に黒色画素５９Ａが含まれているか判断する（Ｓ１５）。ＣＰＵ１１は、このような処理を繰り返し、探索方向５５に沿って下方へエッジ候補点６１の探索を継続する。そして、ＣＰＵ１１は、１０画素以内に新たなエッジ候補点６１（黒色画素５９Ａ）を検出できない場合、最終的に見つかったエッジ候補点６１を最終エッジ候補点６１Ｂに設定する（Ｓ２１）。図１１に示す例では、ＣＰＵ１１は、例えば、初期エッジ候補点６１Ａを検出した後、３回新たにエッジ候補点６１を検出し、４回目で非検出となっている。この場合、ＣＰＵ１１は、非検出となる前のエッジ候補点６１を最終エッジ候補点６１Ｂに設定する。このような探索方法でも、ＣＰＵ１１は、１つ１つの画素を、数画素ずつ探索し最終エッジ候補点６１Ｂ（エッジ５３Ａ）を適切に検出できる。
【００５４】
因みに、スキャナ１０は、画像読取装置の一例である。ＣＰＵ１１は、制御部の一例である。ブック原稿５１は、原稿の一例である。黒色画素５９Ａは、有色画素の一例である。中央位置６９は、最終エッジ候補点の一例である。
【００５５】
（４．効果）
以上、上記した実施形態によれば、以下の効果を奏する。
（１）本実施形態のスキャナ１０のＣＰＵ１１は、読取部１７にブック原稿５１の画像を読み取らせて画像データ４３を生成するＳ１１の処理（読取処理の一例）と、画像データ４３に含まれる複数の画素５９のうち、画像データ４３が示す画像における外側から内側に向かう探索方向５５に沿った複数の画素５９（対象画素の一例）に基づいて、ブック原稿５１のエッジ５３Ａを検出するためのエッジ候補点６１を検出可能であるか否かを判断するＳ１５の処理（エッジ候補点判断処理の一例）を実行する。ＣＰＵ１１は、Ｓ１５の処理によりエッジ候補点６１を検出可能であると判断した場合（Ｓ１５：ＹＥＳ）、検出したエッジ候補点６１の位置よりも探索方向５５において更に内側となる複数の画素５９についてＳ１５の処理を再度実行し、探索継続条件を満たすと判断する間、Ｓ１５の処理を繰り返し実行してエッジ候補点６１を更新するＳ１７、Ｓ１９の処理（更新処理の一例）を実行する。ＣＰＵ１１は、探索継続条件を満たさないと判断した場合に（Ｓ１５：ＮＯ）、最後に検出したエッジ候補点６１を最終エッジ候補点６１Ｂとして設定する（Ｓ２１）。ＣＰＵ１１は、最終エッジ候補点６１Ｂに基づいて、ブック原稿５１のエッジ５３Ａを検出するＳ２５、Ｓ２７の処理（エッジ検出処理の一例）を実行する。
【００５６】
これによれば、ＣＰＵ１１は、画像データ４３が示す画像の外側から内側に向かう探索方向５５に沿って、複数の画素５９に基づいてエッジ候補点６１の探索を行なう。ＣＰＵ１１は、一度、エッジ候補点６１を検出した後も、探索継続条件を満たす間、探索方向５５に沿ってより内側へとエッジ候補点６１の探索を継続し、エッジ候補点６１を更新する。そして、ＣＰＵ１１は、探索継続条件を満たさないと判断すると、最後に検出した最終エッジ候補点６１Ｂに基づいてブック原稿５１のエッジ５３Ａを検出する。従って、ＣＰＵ１１は、探索方向５５に沿って複数のエッジ候補点６１が存在する場合に、継続条件を満たす、より内側の最終エッジ候補点６１Ｂを、ブック原稿５１のエッジ５３Ａを検出するための点として用いる。これにより、ブック原稿５１の端部のように、複数のページのエッジ５３が並んで配置される画像データ４３から精度良く所望のエッジ５３Ａを検出することができる。
【００５７】
（２）また、ＣＰＵ１１は、Ｓ１７において、前回検出したエッジ候補点６１の位置よりも探索方向５５において更に内側となる複数の画素５９のうち、前回検出したエッジ候補点６１の位置から所定画素数内に配置される複数の画素５９に基づいて、新たなエッジ候補点６１を検出可能であることを探索継続条件としても良い（図１１参照）。
これによれば、ＣＰＵ１１は、前回検出したエッジ候補点６１から探索方向５５に沿った所定画素数内の画素５９に基づいて、新たなエッジ候補点６１が検出される間、エッジ候補点６１の探索を継続する。これにより、所定画素数の値を調整することで、エッジ５３Ａの検出精度が調整可能となる。
【００５８】
（３）また、ＣＰＵ１１は、Ｓ１５の処理において、複数の画素５９（対象画素の一例）を含む画素領域５７を設定し、画素領域５７に含まれる黒色画素５９Ａ（有色画素の一例）の数に基づいて、エッジ候補点６１を検出可能であるか否かを判断する（図６参照）。ＣＰＵ１１は、Ｓ１９の処理において、前回検出したエッジ候補点６１の位置よりも探索方向５５において更に内側となる複数の画素５９を含む画素領域５７を設定し、画素領域５７に含まれる黒色画素５９Ａの数に基づいて、新たなエッジ候補点６１を検出可能であることを探索継続条件とする。
【００５９】
これによれば、ＣＰＵ１１は、画素領域５７に含まれる黒色画素５９Ａ（有色の対象画素）の数に基づいて、エッジ候補点６１を検出する。ＣＰＵ１１は、画素領域５７に含まれる黒色画素５９Ａの数に基づいて、新たなエッジ候補点６１を検出する間、エッジ候補点６１の探索を継続する。これにより、画素領域５７の大きさを調整することで、エッジ５３Ａの検出精度が調整可能となる。
【００６０】
（４）また、読取部１７は、主走査方向に沿って並ぶ複数の読取素子３９を有し、読取素子３９によりブック原稿５１の画像を読み取る。探索方向５５は、主走査方向、又は主走査方向に直交する副走査方向である。これによれば、主走査方向又は副走査方向を探索方向５５に設定することで、主走査方向等と所定の角度をなす方向を探索方向に設定する場合に比べて、ＣＰＵ１１の処理負荷を軽減することができる。
【００６１】
（５）また、ＣＰＵ１１は、画像データ４３に含まれる複数の画素５９について、主走査方向に沿って所定の画素数ごとに分けた複数のグループ６７を設定し、主走査方向で異なる画素位置で、且つ副走査方向に沿った探索方向５５を設定する（図５参照）。ＣＰＵ１１は、主走査方向で異なる画素位置ごとに、探索方向５５に沿って、Ｓ１５、Ｓ１７、Ｓ１９の処理を実行する。ＣＰＵ１１は、複数のグループ６７の各々で検出した中央位置６９（最終エッジ候補点の一例）に基づいて、ブック原稿５１のエッジ５３Ａを検出する。
【００６２】
これによれば、例えば、数百から数千の画素５９を複数のグループ６７に分けてグループ６７ごとに処理できる。ＣＰＵ１１は、主走査方向で異なる画素位置ごとに探索方向５５に沿って最終エッジ候補点６１Ｂを探索する。ＣＰＵ１１は、各グループ６７の最終エッジ候補点６１Ｂ（中央位置６９）に基づいて、ブック原稿５１のエッジ５３Ａを検出することで、ブック原稿５１のエッジ５３Ａを精度良く検出できる。
【００６３】
（６）また、ＣＰＵ１１は、読取部１７にブック原稿５１の読み取りを開始させた後から、読み取りを終了するまでの間に、読取処理により生成したブック原稿５１の一部の画像データ４３に対し、Ｓ１５、Ｓ１９、Ｓ２５、Ｓ２７等の処理を実行して、ブック原稿５１のエッジ５３Ａを検出する。ＣＰＵ１１は、ブック原稿５１のエッジ５３Ａに基づいて、下流側のブック原稿５１の終端位置７１を推定する（Ｓ２９）。ＣＰＵ１１は、推定した終端位置７１に基づいて、読取部１７が読み取りを終了するタイミングを決定する（Ｓ２９）。
【００６４】
これによれば、例えば、矩形のブック原稿５１が走査方向に対して傾いている場合に、原稿全体の読み取りを終了する前に、原稿の下流側の終端位置７１を予測できる。ＣＰＵ１１は、終端位置７１に基づいて、読み取りを終了するタイミングを決定できる。これにより、ブック原稿５１の終端位置７１に合わせて読取処理を終了することで、不要な位置までブック原稿５１の読み取りを実行することを抑制できる。
【００６５】
（５．変形例）
尚、本願は上記実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内での種々の改良、変更が可能であることは言うまでもない。
例えば、ＣＰＵ１１は、複数の画素５９をグループ６７に分けなくとも良い。ＣＰＵ１１は、グループ６７を設定せずに、主走査方向で異なる画素位置ごとに最終エッジ候補点６１Ｂを検出し、複数の最終エッジ候補点６１ＢのＸＹ座標に基づいて（最小２乗法などで）エッジ５３を検出しても良い。
また、ＣＰＵ１１は、終端位置７１を推定し、終端位置７１に基づいて読取部１７が読み取りを終了するタイミングを決定したが、終端位置７１の推定を実行しなくとも良い。また、ＣＰＵ１１は、読取デバイス３５で読み取り可能な最大位置まで読み取りを実行しても良い。
また、上記実施形態では、本願の制御部として、所定のプログラムを実行するＣＰＵ１１を採用したが、これに限らない。例えば、制御部を、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの専用のハードウェアで構成してもよい。また、制御部は、例えばソフトウェアによる処理と、ハードウェアによる処理とを併用して動作する構成でもよい。
また、上記実施形態では、本願の画像読取装置としてスキャン機能のみを備えるスキャナ１０を採用したが、これに限らない。本願の画像読取装置は、スキャン機能の他に、コピー機能やＦＡＸ機能を備えた複合機でも良い。
【符号の説明】
【００６６】
１０  スキャナ（画像読取装置）、１１  ＣＰＵ（制御部）、１７  読取部、３９  読取素子、４１  原稿、４３  画像データ、５１  ブック原稿（原稿）、５５、５５Ａ  探索方向、５７  画素領域、５９Ａ  黒色画素（有色画素）、６１  エッジ候補点、６１Ａ  初期エッジ候補点（エッジ候補点）、６１Ｂ  最終エッジ候補点、６９  中央位置（最終エッジ候補点）、７１  終端位置。
【図１】
2020167515.tif 000003
【図２】
2020167515.tif 000004
【図３】
2020167515.tif 000005
【図４】
2020167515.tif 000006
【図５】
2020167515.tif 000007
【図６】
2020167515.tif 000008
【図７】
2020167515.tif 000009
【図８】
2020167515.tif 000010
【図９】
2020167515.tif 000011
【図１０】
2020167515.tif 000012
【図１１】
2020167515.tif 000013