"原稿を読取位置に搬送する搬送部と、前記搬送部により副走査方向に搬送される前記原稿を前記読取位置において主走査方向に沿って読み取って読取データを生成する読取部と、前記読取データにおいて、前記副走査方向に沿った複数の検出ライン上で一端から他端に向けて前記原稿のエッジの候補であるエッジ候補点を検出し、検出された前記エッジ候補点の位置から第1のエッジを検出する検出部と、前記読取データにおける前記第1のエッジに対する前記一端側の領域から特徴点を抽出する抽出部と、前記一端側の領域における前記特徴点の密度を求め、当該密度を閾値と比較した結果に基づいて前記第1のエッジが前記原稿の先端か後端かを判断する判断処理を行う判断部と、を備える読取装置。請求項1に記載の読取装置において、前記抽出部は、前記検出部により検出される前記エッジ候補点を前記特徴点として抽出する、読取装置。請求項1または請求項2に記載の読取装置において、前記検出部は、前記第1のエッジが検出目標のエッジでない場合に、前記第1のエッジに対する前記他端側の領域において、前記エッジ候補点を再度検出し、検出された前記エッジ候補点の位置から第2のエッジを検出する、読取装置。請求項3に記載の読取装置において、前記検出部は、前記主走査方向において異なる2つのエッジが検出された場合に、前記2つのエッジのうち前記一端側を前記第1のエッジとして、前記他端側を前記第2のエッジの一部として検出する、読取装置。請求項3または請求項4に記載の読取装置において、前記抽出部は、前記第1のエッジと前記第2のエッジとの間の領域から特徴点を抽出し、前記判断部は、前記間の領域における前記特徴点の密度を求め、当該密度を前記閾値と比較した結果に基づいて前記第2のエッジが前記原稿の先端か後端かを判断する再判断処理を行う、読取装置。請求項1から請求項5のいずれか一項に記載の読取装置において、前記読取位置に前記原稿がない状態で前記読取部によって生成された読取データにおいて、前記抽出部により抽出される特徴点の密度を求め、当該密度に応じて前記閾値を設定する設定部を備える、読取装置。請求項1から請求項6のいずれか一項に記載の読取装置において、前記判断処理の結果をユーザに通知する通知部を備える、読取装置。請求項1から請求項7のいずれか一項に記載の読取装置において、前記搬送部により連続して搬送される原稿間の距離を前記原稿が前記読取位置に到達する前に取得する取得部を備え、前記判断部は、前記原稿間の距離が所定の基準より小さい場合に、前記判断処理を実行する、読取装置。副走査方向に搬送される原稿を主走査方向に沿って読み取って読取データを生成し出力する読取装置に接続された端末装置において実行されるプログラムであって、前記端末装置に、前記読取データにおいて、前記副走査方向に沿った複数の検出ライン上で一端から他端に向けて前記原稿のエッジの候補であるエッジ候補点を検出し、検出された前記エッジ候補点の位置から第1のエッジを検出する検出処理と、前記読取データにおける前記第1のエッジに対する前記一端側の領域から特徴点を抽出する抽出処理と、前記一端側の領域における前記特徴点の密度を求め、当該密度を閾値と比較した結果に基づいて前記第1のエッジが前記原稿の先端か後端かを判断する判断処理と、を実行させるプログラム。しかしながら、上記技術によれば、例えば、搬送される原稿間の距離が小さい場合などに、読取データからある原稿の先端のエッジを検出しようとしたときに、その前の原稿の後端のエッジを検出したり、逆に、ある原稿の後端のエッジを検出しようとしたときに、次の原稿の前端のエッジを検出したりするおそれがある。本発明は上記のような事情に基づいて完成されたものであって、検出されたエッジが原稿の先端か後端かを判断する技術を提供することを目的とする。本明細書によって開示される読取装置は、原稿を読取位置に搬送する搬送部と、前記搬送部により副走査方向に搬送される前記原稿を前記読取位置において主走査方向に沿って読み取って読取データを生成する読取部と、前記読取データにおいて、前記副走査方向に沿った複数の検出ライン上で一端から他端に向けて前記原稿のエッジの候補であるエッジ候補点を検出し、検出された前記エッジ候補点の位置から第1のエッジを検出する検出部と、前記読取データにおける前記第1のエッジに対する前記一端側の領域から特徴点を抽出する抽出部と、前記一端側の領域における前記特徴点の密度を求め、当該密度を閾値と比較した結果に基づいて前記第1のエッジが前記原稿の先端か後端かを判断する判断処理を行う判断部と、を備える。また、上記読取装置は、前記抽出部が、前記検出部により検出される前記エッジ候補点を前記特徴点として抽出する構成としてもよい。また、上記読取装置は、前記検出部が、前記第1のエッジが検出目標のエッジでない場合に、前記第1のエッジに対する前記他端側の領域において、前記エッジ候補点を再度検出し、検出された前記エッジ候補点の位置から第2のエッジを検出する構成としてもよい。また、上記読取装置は、前記検出部が、前記主走査方向において異なる2つのエッジが検出された場合に、前記2つのエッジのうち前記一端側を前記第1のエッジとして、前記他端側を前記第2のエッジの一部として検出する構成としてもよい。また、上記読取装置は、前記抽出部が、前記第1のエッジと前記第2のエッジとの間の領域から特徴点を抽出し、前記判断部が、前記間の領域における前記特徴点の密度を求め、当該密度を前記閾値と比較した結果に基づいて前記第2のエッジが前記原稿の先端か後端かを判断する再判断処理を行う構成としてもよい。また、上記読取装置は、前記読取位置に前記原稿がない状態で前記読取部によって生成された読取データにおいて、前記抽出部により抽出される特徴点の密度を求め、当該密度に応じて前記閾値を設定する設定部を備える構成としてもよい。また、上記読取装置は、前記判断処理の結果をユーザに通知する通知部を備える構成としてもよい。また、上記読取装置は、前記搬送部により連続して搬送される原稿間の距離を前記原稿が前記読取位置に到達する前に取得する取得部を備え、前記判断部は、前記原稿間の距離が所定の基準より小さい場合に、前記判断処理を実行する構成としてもよい。なお、この発明は、読取装置、端末装置、原稿のエッジ検出方法、これらの装置の機能または方法を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体等の種々の態様で実現することができる。本発明によれば、検出されたエッジが原稿の先端か後端かを判断することができる。次に本発明の一実施形態について図1から図9を参照して説明する。読取装置の構成図1は、読取装置10の電気的構成を概略的に示すブロック図であり、図2は、読取装置10の一部を拡大して示す断面図である。図1に示すように、読取装置10は、制御部11、通信部17、読取部18、ADF19、Fセンサ35、Rセンサ36、操作部37、表示部38を備えている。制御部11は、特定用途向け集積回路ASICなどにより構成されており、CPU12、ROM13、RAM14、NVRAM15などを有している。ROM13は、後述するADF読取処理など、読取装置10の各種動作を実行するための制御プログラムを記憶している。CPU12検出部、抽出部、判断部、設定部、取得部の一例は、ROM13から読み出したプログラムに従って各部の動作を制御する。RAM14は、CPU12の作業領域として用いられる揮発性のメモリであり、NVRAM15は、読取データや各種の設定値などを記憶する不揮発性のメモリである。通信部17は、例えばUSBUniversalSerialBusやLANLocalAreaNetworkなどのインターフェースであり、外部の機器と通信を行う。読取部18は、図2に示すように、原稿26を光学的に読み取るCISContactImageSensorなどのイメージセンサを有し、読取装置10の上部に設けられた一対のプラテンガラス27,28の下方に配置されている。ADF19自動原稿供給装置は、プラテンガラス27,28の上方に設けられており、複数の搬送ローラ29を図示しないステッピングモータの動力で回転させることによって、複数の原稿26が積載された原稿トレイ30から原稿26を一枚ずつ送り出し、読取位置Pを経て排出トレイ31に排出する。読取部18は、読取位置Pにおいて原稿26を主走査方向図2の紙面直交方向に1ラインずつ読み取り、読取データを生成して制御部11へ出力する。プラテンガラス27の上方には、背景部32が対面して設けられており、プラテンガラス27と背景部32との間が読取位置Pになっている。背景部32の下面は、読取位置Pに原稿26がない状態で読み取りを行ったときに読み取られる面であって、ほぼ均一な濃度の白色である。なお、背景部32の下面は、黒色やその他の色であってもよく、均一な濃度でなくてもよい。Fセンサ35は、原稿トレイ30に積載される原稿26の有無を検知し、その有無に応じた検知信号を出力する。Rセンサ36は、読取位置Pより若干上流側に配置され、原稿26の有無を検知し、その有無に応じた検知信号を出力する。Fセンサ35及びRセンサ36としては、光学式のセンサや、アクチュエータを用いた接触式のセンサを用いることができる。図1に示す操作部37は、複数のボタンを備え、ユーザによる各種の指示の入力を受け付ける。表示部38通知部の一例は、ディスプレイやランプ等を備え、各種のメッセージや設定画面等を表示する。ADF読取処理次にADF19によって供給される原稿26を読み取るADF読取処理の動作について説明する。図3及び図4は、ADF読取処理のメインルーチンのフローチャートであり、図5は、ADF読取処理のサブルーチンである閾値設定処理のフローチャート、図6は、ADF読取処理のサブルーチンであるエッジ検出処理のフローチャート、図7は、ADF読取処理のサブルーチンであるフラグ設定処理のフローチャートである。このADF読取処理は、ユーザが原稿トレイ30に原稿26をセットし、操作部37から読取開始の指示を入力することにより開始される。CPU12は、図3のADF読取処理を開始すると、後述する密度判断に用いられる閾値Dtを設定するための閾値設定処理を実行するS101。CPU12は、図5に示す閾値設定処理を開始すると、読取部18によって背景部32の読み取りを行うS201。このとき、読み取るライン数は、後述するエッジ検出処理で読み取る検出エリア40のライン数と同じであり、検出エリア40と同じ面積の画像を含む読取データが取得される。続いてCPU12は、背景部32の読み取りによって得られた読取データからエッジ候補点を抽出するS202。ここでいうエッジ候補点特徴点の一例とは、原稿26のエッジ26Aの候補となる画素の位置を示し、公知の手法によって抽出することができる。例えば、読取データに対し、注目画素とその周囲の画素との画素値の差を強調するフィルタを用いたエッジ強調処理を施し、次に画素値が所定の閾値以上なら1の値、閾値未満なら0の値とする2値化処理を施すことで、エッジ候補点1の値の画素が抽出される。なお、上述のように背景部32を読み取った読取データには、実際の原稿26のエッジ26Aは含まれないものの、プラテンガラス27または背景部32に付着したゴミや汚れ、その他のノイズの影響でエッジ候補点が抽出されることがある。抽出されるエッジ候補点の数は、ゴミや汚れ等の付着状態や、読取部18の読み取り特性の経年変化受光素子の劣化等の影響などにより変化する。続いてCPU12は、読取データにおけるエッジ候補点の密度、即ち単位面積当たりのエッジ候補点の数を算出するS203。そして、算出されたエッジ候補点の密度に基づいて閾値Dtを設定するS204。この閾値Dtは、後述の密度判断において、背景部32を読み取った領域のエッジ候補点の密度と、原稿26を読み取った領域のエッジ候補点の密度とを判別するために両密度の中間の値に設定される。より詳細には、例えば、閾値Dtは、S203にて算出されたエッジ候補点の密度に所定数を加えた値か、あるいは1以上の所定数例えば2を掛け合わせた値とされ、エッジ候補点の密度が大きいほど閾値Dtが大きくなるように設定される。CPU12は、閾値Dtを設定した後、この閾値設定処理を終了する。CPU12は、図3のS101にて閾値Dtを設定した後、ADF19により原稿トレイ30に積載されている原稿26の搬送を開始するS102。そして、密度判断を実行するか否かを定めるための密度判断実行フラグをオフに設定するS103。続いてCPU12は、Rセンサ36がオンであるかを判断しS104、オンでない場合S104:NOには、オンになるまで同じ処理を繰り返して待機する。そして、最初の原稿26の先端がRセンサ36の位置に到達してRセンサ36がオンになった場合S104:YESには、ADF19を駆動するステッピングモータに供給されるパルス信号のステップ数のカウントが、Rセンサ36がオンしてから所定の第1ステップ数に至ったかを判断するS105。そして、カウントが第1ステップ数に至らない場合S105:NOには、カウントが第1ステップ数に至るまで待機する。上記第1ステップ数は、読み取り開始のタイミングを決定するものであり、原稿26の先端が読取位置Pに到達するよりも所定長さ例えば3mm分前にカウントが第1ステップ数に至るように値が設定されている。CPU12は、カウントが第1ステップ数に至った場合S105:YESには、読取部18によって読み取りを開始するS106。そして、CPU12は、次に説明する検出エリア40の読み取りに相当する所定のライン数の読み取りが終了したかを判断しS107、終了していない場合S107:NOには終了するまで待機する。そして、検出エリア40の読み取りが終了した場合S107:YESには、原稿26のエッジ26Aを検出するためのエッジ検出処理を実行するS108。ここで、図8及び図9は、それぞれ検出エリア40と原稿26との位置関係を説明する図である。図8は検出エリア40に1枚の原稿26の先端が含まれている例を示しており、図9は検出エリア40に原稿26の先端と前の原稿26の後端とが含まれている例を示している。両図のように、検出エリア40は、少なくとも検出目標である原稿26の先端のエッジ26Aを含んでいる。なお、図8及び図9では、各原稿26が搬送方向である副走査方向に対して傾いた状態を示しているが、通常は、各原稿26が傾かない状態で読み取られる。CPU12は、図6に示すエッジ検出処理を開始すると、検出エリア40の読取データに対し、例えば既述のエッジ強調処理及び2値化処理を施すことにより、エッジ候補点を抽出するS301。なお、原稿26には、表面の凹凸などのために一般的には背景部32に比べてエッジ候補点が多く抽出される。続いてCPU12は、図8に示すように、検出エリア40において、主走査方向に互いに間隔を空け、副走査方向に沿った複数の直線をそれぞれ検出ライン41とし、各検出ライン41の読取開始側の端部図8,図9の上端に位置する画素を始点として読取終了側の端部図8,図9の下端側へ向けて、先に抽出されたエッジ候補点を探索する。そして、各検出ライン41上において最初に発見されたエッジ候補点を直線近似した直線を第1エッジとして検出するS302。既述のように、エッジ候補点は実際のエッジ26A付近のみならず、原稿26上や背景部32の画像からも抽出されるが、大多数のエッジ候補点はほぼ実際の原稿26のエッジ26Aに沿って並ぶため、第1エッジは、概ね原稿26のエッジ26Aに沿った直線になる。なお、検出ライン41上で他のエッジ候補点から大きく外れた位置にあるエッジ候補点が検出された場合にはノイズとして無視し、さらに別のエッジ候補点を探索してもよい。続いてCPU12は、既述の密度判断実行フラグがオンかを判断するS303。密度判断実行フラグがオフに設定されている場合S303:NOには、第1エッジを検出目標である原稿26の先端のエッジ26Aと判断しS304、検出結果を記憶してこのエッジ検出処理を終了する。なお、最初の原稿26の先端を検出する際には、密度判断実行フラグが図3のS103にてオフに設定されているため、上述のように、密度判断を行わずに、検出された第1エッジが検出目標のエッジ26Aであると判断される。CPU12は、図3のS108にてエッジ検出処理を終了すると、Rセンサ36がオフかを判断しS109、オフでない場合S109:NOには、オフになるまで待機する。原稿26の後端がRセンサ36の位置を通過すると、CPU12は、Rセンサ36がオフであると判断しS109:YES、Rセンサ36がオフしてから所定の第2ステップ数がカウントされたかを判断する図4のS110。上記第2ステップ数は、読み取り終了のタイミングを決定するものであり、原稿26の後端が読取位置Pを通過してから所定長さ例えば3mm分後にカウントが第2ステップ数に至るように値が設定されている。CPU12は、Rセンサ36がオフしてからカウントが第2ステップ数に至らない場合S110:NOには、次の原稿26がRセンサ36の位置に到達することによってRセンサ36がオンになったかを判断するS111。そして、CPU12は、Rセンサ36がオンになっていない場合S111:NOには、S110に戻り同様の処理を繰り返す。Rセンサ36がオフになってからカウントが第2ステップ数に至る前に、次の原稿26の先端がRセンサ36の位置に到達してRセンサ36がオンになった場合S111:YESには、さらにRセンサ36がオフしてからカウントが第2ステップ数に至ったかを判断しS112、カウントが第2ステップ数に至っていない場合に場合S112:NOには、第2ステップ数に至るまで待機する。CPU12は、カウントが第2ステップ数に至った場合S112:YESには、先の原稿26の1ページ分の読み取りを終了するS113。続いて、密度判断実行フラグの値を設定するためのフラグ設定処理を実行するS114。CPU12は、図7のフラグ設定処理を開始すると、続けて搬送される原稿26間の距離である原稿間距離を取得するS401。原稿間距離は、例えば、Rセンサ36がオフしてからオンになるまでの時間を計測し、その時間と原稿26の搬送速度とに基づいて算出することができる。また、原稿間距離は、ADF19による送り出しの構造によっては、原稿26の長さによって決まることがある。そのような構成では、Rセンサ36がオンしてからオフになるまでの時間を計測し、その時間から原稿26の長さを求め、その長さから原稿間距離を求めることができる。あるいは、ユーザが操作部37から原稿サイズを入力し、そのサイズに基づいて原稿間距離を求めてもよい。続いてCPU12は、原稿間距離が所定値より小さいかを判断するS402。原稿間距離が上記所定値より小さい場合S402:YESには、図9に示すように、検出エリア40内に前の原稿26の後端のエッジ26Bが含まれる可能性がある。このため、この場合には、密度判断実行フラグをオンに設定しS403、このフラグ設定処理を終了する。また、原稿間距離が上記所定値以上である場合S402:NOには、検出エリア40内に前の原稿26の後端のエッジ26Bが含まれないため、密度判断実行フラグをオフに設定しS404、このフラグ設定処理を終了する。CPU12は、図4のS114にてフラグ設定処理を終了した後、図3のS105に戻る。そして、次の原稿26の読み取りを開始しS106、検出エリア40のデータを取得した後S107:YES、エッジ検出処理を実行するS108。CPU12は、図6のエッジ検出処理において、既述のように、検出エリア40からエッジ候補点を抽出しS301、第1エッジを検出した後S302、密度判断実行フラグがオンかを判断するS303。ここで、前述のように原稿間距離が所定値より小さく、エッジ判断実行フラグがオンに設定されている場合S303:YESには、以下に示すように、エッジ候補点の密度に基づいて検出されたエッジが原稿26の先端か後端かを判断する密度判断を行うS305~S310,S304。エッジ判断実行フラグがオンである場合、CPU12は、まず検出エリア40における読取開始端から第1エッジまでの領域におけるエッジ候補点の密度De1を求めるS305。ここで、図8に示すように、検出エリア40に1枚の原稿26の先端が含まれている場合、第1エッジとして検出されるのは1本の直線である。この場合、検出エリア40における読取開始端から第1エッジまでの領域とは、検出ライン41を使ってエッジ候補点を探索した略台形状の領域原稿26が傾いていない場合には長方形状の領域に相当する。よって、S305ではこの領域の密度De1を算出する。一方、図9に示すように、検出エリア40に前の原稿26の後端が含まれかつ前の原稿26が傾いている場合には、前の原稿26の後端が検出エリア40の読取開始端と交点44にて交わることがある。このような場合には、検出ライン41上で検出されるエッジ候補点から2つのエッジが検出される。すなわち、この例では、前の原稿26の左端から交点44までの直線第1エッジ26Bと、交点44から副走査方向に沿った直線と次の原稿26の先端とが交わる点から次の原稿26の右端までの直線第1エッジ26Cとが第1エッジとして得られる。このような場合、CPU12は、読取開始端から第1エッジ26Bまでの交点44を1つの頂点とする三角形の領域を第1領域A1とし、読取開始端から第1エッジ26Cまでの領域であって交点44を1つの頂点とする略四角形の領域を第2領域A2として2つの領域に分ける。すなわち、CPU12は、第1エッジが2本の直線からなる場合には、それぞれの直線と検出エリア40の読取開始端との間に形成される領域の密度を算出する。そして、CPU12は、エッジ候補点の密度De1が、図5のS204にて設定された閾値Dtより小さいかを判断するS306。ここで、既述のように複数の領域に分けた場合は、それぞれの領域におけるエッジ候補点の密度De1と閾値Dtとを比較する。なお、既述のようにエッジ候補点の密度は、背景部32を読み取った画像と原稿26を読み取った画像とで異なっており、本実施形態では、原稿26を読み取った画像の方が大きい。そのため、CPU12は、エッジ候補点の密度De1が閾値Dtより小さい場合S306:YESには、図8のように、第1領域A1が原稿26でなく背景部32を読み取った画像であると判断できるため、S304に進み、第1エッジを検出目標とする原稿26の先端のエッジ26Aであると判断して、このエッジ検出処理を終了する。また、エッジ候補点の密度De1が閾値Dt以上である場合S306:NOには、第1エッジが前の原稿26の後端のエッジ26Bであると判断できる。例えば図9に示すように、第1領域A1が原稿26を読み取った画像であり、第1エッジが前の原稿26の後端のエッジ26Bであると判断できる。この場合、CPU12は、既述の各検出ライン41において、第1エッジ26Bよりも読取終了端側でエッジ候補点を探索し、発見されたエッジ候補点を直線近似して第2エッジを検出するS307。なお、図9のような場合には、第1エッジ26Bが検出された検出ラインのみで再度エッジ候補点を探索し、そこで発見されたエッジ候補点と、最初に発見されたエッジ候補点第1エッジ26Cを示す候補点とを合わせて直線近似して第2エッジを検出する。続いてCPU12は、第1エッジ26Bから第2エッジまでの間の第3領域A3のエッジ候補点の密度De2を算出するS308。そして、算出されたエッジ候補点の密度De2が閾値Dtより小さいかを判断しS309、閾値Dtより小さい場合S309:YESには、第2領域A2が背景部32を読み取った画像であると判断されるため、第2エッジが検出目標とする原稿26の先端のエッジ26Aであると判断しS310、エッジ検出処理を終了する。また、CPU12は、エッジ候補点の密度De2が閾値Dt以上である場合S309:NOには、何らかの事情でエッジ検出が正常に行われなかったと判断されるため、図4のS115にて、ユーザにエッジ検出が失敗した旨を伝えるメッセージなどを表示部38に表示するエラー通知を行い、その後、ADF19の搬送動作を停止しS116、このADF読取処理を修了する。また、CPU12は、図4のS110にて、Rセンサ36がオフになってからRセンサ36が再びオンになる前に第2ステップ数がカウントされた場合S110:YESには、原稿26の1ページ分の読み取りを終了しS117、既述のフラグ設定処理を行うS118。そして、CPU12は、Fセンサ35がオンであるかを判断しS119、Fセンサ35がオンである場合S119:YES、即ち後続の原稿26が存在する場合には、Rセンサ36がオンであるかを判断しS120、オンでない場合S120:NOにはオンになるまで待機する。後続の原稿26がRセンサ36の位置に達してRセンサ36がオンになった場合S120:YESには、図3のS105に戻り、以下同様の処理を繰り返す。また、CPU12は、Fセンサ35がオンでない場合S119:NO、即ち後続の原稿26が存在しない場合には、ADF19の搬送動作を停止しS116、このADF読取処理を終了する。上記ADF読取処理を終えた後、CPU12は、例えば、各原稿26について検出されたエッジの位置から原稿26の傾きを求め、読取データにおける原稿26の傾きを補正する。そして、補正後の読取データを、所定のファイル形式に変換し、NVRAM15等に保存する。本実施形態の効果以上のように本実施形態によれば、複数の検出ライン上でエッジ候補点を検出し、検出されたエッジ候補点の位置から第1エッジを検出するS302。そして、第1エッジの読取開始端側の第1領域A1から特徴点として抽出されるエッジ候補点の密度De1を求めS305、密度De1を閾値Dtと比較した結果に基づいてS306、第1エッジが原稿26の先端か後端かを判断するS304。また、エッジ候補点を検出する処理が特徴点を抽出する処理を兼ねるため、両者を別々に行う場合に比べて処理を短時間で行うことができる。また、第1エッジが検出目標のエッジでない場合S306:NOに、第1エッジの下端側の領域において、エッジ候補点を再度検出し、検出されたエッジ候補点の位置から第2のエッジを検出するS307。これにより、最初に検出したエッジが検出目標のエッジでない場合に、再度エッジを検出することができる。また、主走査方向において異なる2つのエッジが検出された場合に、2つのエッジのうち読取開始端側を第1エッジとし、読取終了端側を第2エッジの一部として検出するため、2つのエッジを効率的に検出することができる。また、第1エッジと第2エッジとの間の第2領域A2から特徴点として抽出されるエッジ候補点の密度De2を求めS308、この密度De2を閾値Dtと比較した結果に基づいてS309、第2エッジが原稿26の先端か後端かを判断するS310。これにより、第1エッジが検出目標のエッジでない場合に、検出目標のエッジをより確実に検出することができる。また、読取位置Pに原稿26がない状態で読取部18によって生成された読取データにおいて特徴点であるエッジ候補点を抽出しS202、そのエッジ候補点の密度を求めS203、当該密度に応じて閾値Dtを設定するS204。これにより、プラテンガラス27や背景部32に付着するゴミや汚れの度合、あるいは読取部18の経年変化の程度などに応じて適切な閾値を設定し、それにより判断の精度を確保することができる。また、特徴点の密度に基づいて検出されたエッジが原稿26の先端であるか後端であるかを判断した結果をユーザに通知するためS115、例えば、目標のエッジが検出されない場合には、ユーザが読み取りをやり直すなどの対応をすることができる。また、原稿間距離を取得しS401、その原稿間距離が所定の基準より小さい場合S402:YESに、検出されたエッジが原稿26の先端であるか後端であるかの判断を行うS303:YES。原稿間距離が小さい場合には、読取データに複数の原稿26のエッジが含まれる可能性が高まるため、そのような場合に上記判断を行うと効果的である。<他の実施形態>本発明は上記記述及び図面によって説明した実施形態に限定されるものではなく、例えば次のような実施形態も本発明の技術的範囲に含まれる。1上記実施形態では、本発明を読取装置に適用したものを示したが、本発明は、例えば、読取機能に加えて印刷機能やFAX通信機能を備えた複合機にも適用でき、また、端末装置などにも適用できる。例えば図10は、既述の読取装置10と接続される端末装置50の電気的構成を示すブロック図である。端末装置50は、汎用的なコンピュータであって、CPU51、ROM52、RAM53、HDD54、操作部55、表示部56、通信部57などを備えている。HDD54には、OSや、スキャナドライバやエッジ検出処理を行うプログラムなどが記憶されている。通信部57は、USBやLANなどのインターフェースであって読取装置10と接続されている。ユーザが読取装置10に複数の原稿26をADF19にセットした後、操作部55で読み取りの実行を選択すると、端末装置50のCPU51は、通信部57を介して読取装置10に読み取りの実行指示を送信する。読取装置10のCPU12は、読み取りの実行指示を受信すると、読取部18により各原稿26を読み取って得られた読取データを端末装置50に送信する。端末装置50のCPU51は、読取データを受信すると、図6のエッジ検出処理に概ね相当する処理を実行して各原稿26の傾きを検出し、読取データを補正する。2上記実施形態では、特徴点としてエッジ候補点を抽出するものを示したが、本発明によれば、エッジ候補点とは別の特徴点を抽出してもよい。例えば、画素値が所定の閾値以上の画素の位置を特徴点として抽出してもよく、その特徴点の密度を比較することにより、エッジが原稿の先端か後端かを判断することができる。3上記ADF読取処理は一例に過ぎず、処理内容を適宜変更して実施することができる。例えば、図5の閾値設定処理を省略して閾値を固定値としてもよい。また、図7のフラグ設定処理を省略して、密度判断実行フラグを常にオンとし、密度判断を常に実行するようにしてもよい。また、第2エッジを検出する処理S307~S310を省略してもよい。例えば、第1領域A1のエッジ候補点の密度De1が閾値Dt以上の場合S360:NOには、そのとき検出目標である原稿26のページ番号をRAM14に記憶する。そして、ADF読取処理の終了時に、RAM14に記憶された未検出のページ番号がある場合には、それらのページ番号を表示部38に表示させ、ユーザに通知してもよい。また、図6では、S308,S309の処理を省略して、S307にて第2エッジが検出された場合に、S310にてその第2エッジを検出目標のエッジと判断してもよい。4上記実施形態では、原稿26の先端のエッジを検出目標として検出するものを示したが、原稿26の後端を検出目標として検知してもよい。5エッジの検出が成功した場合に、その旨をユーザに通知してもよい。6上記実施形態では、検出部、抽出部、判断部、設定部、取得部をいずれも同じCPUによって実現する例を示したが、本発明によれば、これらは、互いに別のCPU、若しくはASICやその他の回路によって構成することができる。"