(57)【特許請求の範囲】
【請求項１】
原稿を搬送する搬送部と，
前記搬送部によって搬送される原稿を読み取る読取部と，
制御部と，
を備え，
前記制御部は，
前記読取部での読取画像から原稿のエッジを抽出する抽出処理と，
前記抽出処理にて抽出されたエッジに基づいて，原稿の搬送方向に直交する方向に対する角度と向きとを含む原稿の端辺の傾きであって，原稿の先端辺の傾きと後端辺の傾きとを取得する取得処理と，
前記先端辺の傾きと前記後端辺の傾きとの差が回転斜行閾値よりも大きい場合に，原稿の搬送に伴って原稿の傾きが変化する回転斜行が発生したと判断する判断処理と，
前記読取部の読取画像から出力画像を取り出し，当該出力画像を回転させる回転補正処理と，
を実行し，
前記判断処理にて前記回転斜行が発生したと判断された場合に，前記回転補正処理では，前記先端辺の傾きと前記後端辺の傾きとを比較し，傾きの角度が小さい方の傾きに基づいて，取り出し範囲の決定と回転量の決定との少なくとも一方を実行することを特徴とする読取装置。
【請求項２】
請求項１に記載する読取装置において，
前記制御部は，
前記判断処理にて前記回転斜行が発生したと判断された場合に，前記回転補正処理では，前記先端辺の傾きと前記後端辺の傾きとを用いて，前記読取部の読取画像から前記出力画像として取り出される矩形の範囲である出力範囲を決定することを特徴とする読取装置。
【請求項３】
請求項２に記載する読取装置において，
前記制御部は，
前記回転補正処理では，前記抽出処理にて抽出されたエッジによって囲まれた領域内に収まる範囲を，前記出力範囲に決定することを特徴とする読取装置。
【請求項４】
請求項２または請求項３に記載する読取装置において，
前記制御部は，
前記回転補正処理では，前記抽出処理にて抽出されたエッジに基づいて，原稿の搬送方向における原稿の側端辺の湾曲量が湾曲閾値よりも大きいか否かの判断と，原稿の搬送方向の長さが閾値より長い長尺原稿であるか否かの判断とを行い，湾曲量が前記湾曲閾値より大きく，かつ，前記長尺原稿ではないと判断した場合，湾曲量が前記湾曲閾値より大きくないと判断した場合と比較して，前記出力範囲のサイズを大きくすることを特徴とする読取装置。
【請求項５】
請求項２から請求項４のいずれか１つに記載する読取装置において，
前記制御部は，
前記回転補正処理では，原稿の搬送方向における原稿の長さが長さ閾値よりも長いか否かを判断し，原稿の長さが前記長さ閾値より長いと判断した場合，原稿の長さが前記長さ閾値より長くないと判断した場合と比較して，前記出力範囲のうち原稿の搬送方向に直交する方向のサイズを大きくすることを特徴とする読取装置。
【請求項６】
請求項２から請求項５のいずれか１つに記載する読取装置において，
前記制御部は，
前記回転補正処理では，前記先端辺の傾きと前記後端辺の傾きとの差が傾き差閾値よりも大きいか否かの判断と，原稿の搬送方向の長さが閾値より長い長尺原稿であるか否かの判断とを行い，当該差が前記傾き差閾値より大きく，かつ，前記長尺原稿ではないと判断した場合，当該差が前記傾き差閾値より大きくないと判断した場合と比較して，前記出力範囲のサイズを大きくすることを特徴とする読取装置。
【請求項７】
請求項２から請求項６のいずれか１つに記載する読取装置において，
前記制御部は，
前記出力範囲のうち前記抽出処理にて抽出されたエッジによって囲まれた領域外の領域であるエッジ外領域を，原稿の下地色に加工する加工処理を実行することを特徴とする読取装置。
【請求項８】
請求項７に記載する読取装置において，
前記制御部は，
前記抽出処理にて抽出されたエッジに基づいて，原稿の搬送方向における原稿の側端辺の湾曲量が加工閾値よりも大きいか否かを判断し，湾曲量が前記加工閾値より大きいと判断した場合，前記加工処理を実行し，湾曲量が前記加工閾値より大きくないと判断した場合，前記加工処理を実行しないことを特徴とする読取装置。
【請求項９】
請求項１から請求項８のいずれか１つに記載する読取装置において，
前記制御部は，
前記回転補正処理では，前記抽出処理にて抽出されたエッジに基づいて，前記先端辺と前記後端辺との各々について，原稿の搬送方向における原稿の側端辺のうち内側に湾曲する側端辺である内曲側端辺の最内箇所までの距離を算出し，算出された距離が遠い方の辺の傾きに基づいて，取り出し範囲の決定と回転量の決定との少なくとも一方を実行することを特徴とする読取装置。
【請求項１０】
請求項１に記載する読取装置において，
前記制御部は，
前記回転補正処理では，前記出力画像を原稿の搬送方向に３つの領域に分割し，分割された領域である分割領域のうち，前記先端辺を含む分割領域については前記先端辺の傾きに基づいて，前記後端辺を含む分割領域については前記後端辺の傾きに基づいて，各々の画像の回転量を決定し，前記先端辺も前記後端辺も含まない中間の分割領域については，前記先端辺の傾きと前記後端辺の傾きとのうち傾きの角度が小さい方の傾きに基づいて回転量を決定し，回転後の全ての分割領域の画像を１つの画像に結合する分割結合処理を行うことを特徴とする読取装置。
【請求項１１】
請求項１０に記載する読取装置において，
前記制御部は，
原稿の搬送方向における原稿の長さが分割閾値より長いか否かを判断し，原稿の長さが前記分割閾値より長いと判断した場合，前記回転補正処理にて前記分割結合処理を行い，原稿の長さが前記分割閾値より長くないと判断した場合，前記回転補正処理にて前記分割結合処理を行わないことを特徴とする読取装置。
【請求項１２】
請求項１から請求項１１のいずれか１つに記載する読取装置において，
前記制御部は，
前記判断処理では，前記先端辺の傾きと前記後端辺の傾きとの差が前記回転斜行閾値よりも大きい場合であっても，前記抽出処理にて抽出されたエッジに基づいて，原稿の少なくとも一方の側端辺が直線と判断すれば，回転斜行が発生したと判断しないことを特徴とする読取装置。
【請求項１３】
請求項１から請求項１２のいずれか１つに記載する読取装置において，
前記制御部は，
前記判断処理では，前記先端辺の傾きと前記後端辺の傾きとの差が前記回転斜行閾値よりも大きい場合であっても，原稿のサイズが所定サイズよりも小さいと判断すれば，回転斜行が発生したと判断しないことを特徴とする読取装置。
【請求項１４】
読取装置にて読み取られた読取画像から原稿のエッジを抽出する抽出処理と，
前記抽出処理にて抽出されたエッジに基づいて，原稿の搬送方向における原稿の先端辺の傾きと後端辺の傾きとを取得する取得処理と，
前記先端辺の傾きと前記後端辺の傾きとの差が閾値よりも大きい場合に，原稿の搬送に伴って原稿の傾きが変化する斜行である回転斜行が発生したと判断する判断処理と，
前記読取画像から出力画像を取り出し，当該出力画像を回転させる回転補正処理と，
を情報処理装置に実行させ，
前記判断処理にて前記回転斜行が発生したと判断された場合に，前記回転補正処理では，前記先端辺の傾きと前記後端辺の傾きとを比較し，傾きの角度が小さい方の傾きに基づいて，取り出し範囲の決定と回転量の決定との少なくとも一方を情報処理装置に実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，原稿の画像を読み取る読取装置およびプログラムに関する。さらに詳細には，原稿を搬送させながら原稿の画像を読み取る読取装置にて読み取った読取画像から，原稿の搬送状態を判断する技術に関するものである。
【背景技術】
【０００２】
従来から，原稿を搬送させながら画像を読み取る読取装置では，読取画像から原稿の搬送状態の１つである原稿の傾きを判断する技術が知られている。例えば，特許文献１には，読取画像から原稿のエッジを抽出し，当該エッジから原稿のサイズや傾きを算出し，算出結果に基づいて倍率変換や回転補正等を行う技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−１７１２１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら，前記した従来の技術には，次のような問題があった。すなわち，原稿を搬送させながら画像を読み取る場合，原稿の搬送に伴って原稿の傾きが変化する，いわゆる回転斜行が生じることがある。回転斜行が生じた場合，読取画像における原稿のエッジは湾曲しており，この読取画像から，直線で囲った領域を取り出すと，取り出した画像にエッジの画像が残ったり，原稿の画像の一部が欠落したりする不具合が懸念される。
【０００５】
本発明は，前記した従来の技術が有する問題点を解決するためになされたものである。すなわちその課題とするところは，原稿を搬送させながら読み取る読取装置およびプログラムであって，原稿の搬送状態に応じて好適な処理が期待できる技術を提供することにある。
【課題を解決するための手段】
【０００６】
この課題の解決を目的としてなされた読取装置は，原稿を搬送する搬送部と，前記搬送部によって搬送される原稿を読み取る読取部と，制御部とを備え，前記制御部は，前記読取部での読取画像から原稿のエッジを抽出する抽出処理と，前記抽出処理にて抽出されたエッジに基づいて，原稿の搬送方向に直交する方向に対する角度と向きとを含む原稿の端辺の傾きであって，原稿の先端辺の傾きと後端辺の傾きとを取得する取得処理と，前記先端辺の傾きと前記後端辺の傾きとの差が回転斜行閾値よりも大きい場合に，原稿の搬送に伴って原稿の傾きが変化する回転斜行が発生したと判断する判断処理とを実行することを特徴としている。
【０００７】
本明細書に開示される読取装置は，搬送部によって搬送される原稿を読み取って，読取画像を取得し，その読取画像から原稿のエッジを抽出する。さらに，読取装置は，抽出されたエッジに基づいて，原稿の先端辺の傾きと原稿の後端辺の傾きとを取得する。そして，原稿の先端辺の傾きと原稿の後端辺の傾きとの差が回転斜行閾値よりも大きい場合に，回転斜行が発生したと判断する。
【０００８】
すなわち，原稿の先端辺の傾きと後端辺の傾きとの差が大きい場合，読取位置を原稿の先端辺が通過してから後端辺が通過するまでの間に生じた原稿の搬送方向に対する傾きの変化が大きいことを意味する。そのため，回転斜行が発生したと見做すことができる。そこで，本明細書に開示される読取装置は，原稿の先端辺の傾きと後端辺の傾きとの差が大きい場合に，回転斜行が発生したと判断する。その結果として，回転斜行に適した補正や回転斜行に関する報知等，回転斜行の有無に対する好適な処理が期待できる。
【０００９】
上記読取装置の機能を実現するための制御方法，コンピュータプログラム，および当該コンピュータプログラムを格納するコンピュータ読取可能な記憶媒体も，新規で有用である。
【発明の効果】
【００１０】
本発明によれば，原稿を搬送させながら読み取る読取装置およびプログラムであって，原稿の搬送状態に応じて好適な処理が期待できる技術が実現される。
【図面の簡単な説明】
【００１１】
【図１】実施の形態にかかるスキャナの概略構成を示す断面図である。
【図２】スキャナの原稿搬送構成を示す説明図である。
【図３】スキャナの電気的構成を示すブロック図である。
【図４】画像データの例を示す説明図である。
【図５】画像データの例を示す説明図である。
【図６】出力データ生成処理の手順を示すフローチャートである。
【図７】回転斜行処理の手順を示すフローチャートである。
【図８】出力範囲を示す説明図である。
【図９】出力範囲を示す説明図である。
【図１０】分割結合処理の手順を示すフローチャートである。
【図１１】分割の例を示す説明図である。
【発明を実施するための形態】
【００１２】
以下，本発明にかかる読取装置を具体化した実施の形態について，添付図面を参照しつつ詳細に説明する。本形態は，画像読取機能を備えたスキャナに本発明を適用したものである。
【００１３】
本形態のスキャナ１００は，その断面の概略を図１に示すように，読取ヘッド２１と原稿を搬送するための搬送部２２とを有し，搬送部２２にて搬送される原稿の画像を，読取ヘッド２１にて読み取る。読取ヘッド２１は，対向する箇所に光を照射し，受光量に基づく信号を出力する。そして，スキャナ１００は，読取ヘッド２１の出力信号に基づいて，画像データを取得する。本形態のスキャナ１００の読取方式は，ＣＩＳ方式でもよいし，ＣＣＤ方式でもよい。読取ヘッド２１は，読取部の一例である。
【００１４】
本形態のスキャナ１００は，原稿の搬送経路を挟んで読取ヘッド２１に対向する箇所に，グレー単色の板状部材であるグレー板２３を有している。そのため，スキャナ１００は，原稿が読取位置に無い状態で画像を読み取ると，グレー板２３を読み取る。
【００１５】
スキャナ１００は，図１に示すように，原稿が載置される原稿トレイ２５と，それぞれの位置での原稿の有無に応じた信号を出力する２つのセンサ（センサ２７とセンサ２８）を有している。そして，センサ２７は，原稿トレイ２５に載置された原稿の有無に応じた信号を出力する。センサ２８は，原稿の搬送方向について，センサ２７より下流側で読取ヘッド２１より上流側の位置での原稿の有無に応じた信号を出力する。
【００１６】
スキャナ１００は，搬送部２２にて，図１中に一点鎖線で示す搬送経路に沿って，図中の右から左向きに原稿を搬送させる。スキャナ１００の搬送部２２は，図１に示すように，原稿の搬送方向について上流側から順に，給紙ローラ４１と，読取ヘッド２１より上流側に位置する搬送ローラ組４２と，読取ヘッド２１より下流側に位置する搬送ローラ組４３とを有している。さらに，スキャナ１００は，給紙ローラ４１に対向する位置に分離パッド４４を有している。給紙ローラ４１は，分離パッド４４との協働により，原稿トレイ２５に載置された複数枚の原稿のうちの１枚を搬送経路へ搬送する。
【００１７】
次に，本形態のスキャナ１００の搬送ローラ組４２と搬送ローラ組４３との構成について，説明する。搬送ローラ組４２は，図１中で上下に示すローラ対を，図２に示すように，ローラ軸の軸方向に複数個備えている。つまり，搬送ローラ組４２は，複数個のローラを互いに間隔を空けて配置したローラ軸を２本備え，ローラ同士が対となるように２本のローラ軸を相対させたものである。搬送ローラ組４３も，搬送ローラ組４２と同様の構成である。図２は，図１の上方から見た各ローラの配置であり，図１中の左方は，図２中の下方である。
【００１８】
原稿は，図２中の上から下向きに搬送される。そして，搬送ローラ組４２と搬送ローラ組４３とは，それぞれ軸方向に３つのローラ対を有しており，各ローラ対にて原稿を挟んで搬送する。具体的に，搬送ローラ組４２は，ローラ対４２１と，ローラ対４２２と，ローラ対４２３とを有する。搬送ローラ組４３は，ローラ対４３１と，ローラ対４３２と，ローラ対４３３とを有する。
【００１９】
各ローラ対はそれぞれ，駆動ローラとその駆動ローラに対向して設けられる従動ローラとの組である。そして，スキャナ１００の各駆動ローラは，搬送ローラ組４２，４３の組ごとに同軸に配置された同径のローラであり，一斉に駆動される。また，搬送ローラ組４２における各ローラ対の配置と，搬送ローラ組４３における各ローラ対の配置とは，軸方向について同じ配置である。なお，各従動ローラは，同軸に設けられていてもよいし，同軸でなくてもよい。
【００２０】
本形態のスキャナ１００は，小サイズの原稿であるカード原稿を，前述した原稿トレイ２５とは異なる箇所から受け入れ可能である。カード原稿とは，例えば，名刺，免許証，会員証等のカードサイズの原稿である。スキャナ１００は，図１または図２中に「カード原稿」と示した矢印の方向に，専用の挿入口からカード原稿を１枚ずつ受け入れる。
【００２１】
カード原稿の搬送経路は，図２中に範囲Ｗｃで示すように，原稿の搬送方向に直交する方向について，一方の端部に設けられている。そして，カード原稿の搬送経路には，搬送ローラ組４２のローラ対４２３と，搬送ローラ組４３のローラ対４３３とが配置されている。つまり，専用の挿入口から挿入されたカード原稿は，給紙ローラ４１を介さず，搬送ローラ組４２のローラ対４２３に直接挿入され，ローラ対４２３とローラ対４３３とによって搬送される。
【００２２】
一方，小サイズではない原稿であるシート原稿は，例えば，複数枚がまとめて原稿トレイ２５に載置される。スキャナ１００は，シート原稿を，図１または図２中に「シート原稿」と示した方向に，給紙ローラ４１によって原稿トレイ２５から１枚ずつ給紙する。
【００２３】
シート原稿の搬送経路は，中央揃えに設けられている。つまり，シート原稿は，スキャナ１００の原稿の搬送方向に直交する方向について，読取ヘッド２１の読取可能範囲である範囲Ｗｘの中央を搬送される。例えば，Ａ６サイズの短辺程度までの幅のシート原稿は，４つのローラ対４２１，４２２，４３１，４３２によって，図２中に示す範囲Ｗｓ内を搬送される。
【００２４】
なお，給紙ローラ４１は，範囲Ｗｘの中央に配置されており，ローラ対４２１と４２２，ローラ対４３１と４３２は，それぞれ，範囲Ｗｘの中央について対称の位置に配置されている。つまり，ローラ対４２１とローラ対４２２は，範囲Ｗｘの中央から等距離の位置に設けられている。また，ローラ対４３１とローラ対４３２も同様である。つまり，４つのローラ対４２１，４２２，４３１，４３２によって範囲Ｗｘの中央を搬送されるシート原稿では，搬送速度の左右差は生じ難い。
【００２５】
しかし，例えば，Ａ４サイズ以上の原稿のように，範囲Ｗｓよりも幅の広いシート原稿では，ローラ対４２３やローラ対４３３も使用して搬送される。そのため，原稿を搬送する搬送部材が，左右でアンバランスとなり，原稿の搬送速度に左右差が生じる可能性がある。そして，搬送速度に左右差が生じた場合には，原稿の搬送中に原稿の傾きが変化し易くなる。以下では，原稿の搬送および読み取りの実行中に原稿の傾きが変化することを，「回転斜行」という。
【００２６】
続いて，スキャナ１００の電気的構成について説明する。スキャナ１００は，図３に示すように，ＣＰＵ３１と，ＲＯＭ３２と，ＲＡＭ３３と，ＮＶＲＡＭ（不揮発性ＲＡＭ）３４と，ＡＳＩＣ３５とを含むコントローラ３０を備えている。また，スキャナ１００は，読取ヘッド２１と，搬送部２２と，ネットワークインターフェース（ＩＦ）３７と，ＵＳＢインターフェース（ＩＦ）３８と，操作パネル４０とを備え，これらがコントローラ３０に電気的に接続されている。
【００２７】
ＲＯＭ３２には，スキャナ１００を制御するための各種制御プログラムや各種設定，初期値等が記憶されている。ＲＡＭ３３は，各種制御プログラムが読み出される作業領域として，あるいは，データを一時的に記憶する記憶領域として利用される。ＣＰＵ３１は，ＲＯＭ３２から読み出した制御プログラムに従って，その処理結果をＲＡＭ３３またはＮＶＲＡＭ３４に記憶させながら，スキャナ１００の各構成要素を制御する。
【００２８】
ＣＰＵ３１は，制御部の一例である。なお，コントローラ３０が制御部であってもよいし，ＡＳＩＣ３５が制御部であってもよい。なお，図３中のコントローラ３０は，ＣＰＵ３１等，スキャナ１００の制御に利用されるハードウェアを纏めた総称であって，実際にスキャナ１００に存在する単一のハードウェアを表すとは限らない。
【００２９】
ネットワークインターフェース３７は，ＬＡＮケーブル等を用いてネットワークを介して接続された装置と通信を行うためのハードウェアである。ＵＳＢインターフェース３８は，ＵＳＢケーブル等を介して接続された装置と通信を行うためのハードウェアである。操作パネル４０は，ディスプレイと入力ボタン等を有し，ユーザへの告知を表示し，ユーザによる入力操作を受け付ける。
【００３０】
続いて，本形態のスキャナ１００におけるシート原稿の読取動作について説明する。本形態のスキャナ１００は，シート原稿の読取動作として，シート原稿を搬送してその画像を読み取ることにより画像データを取得し，取得した画像データに基づいて出力データを生成し，生成した出力データを指示された出力先に出力する手順を実行する。なお，出力データは，一般的な画像フォーマットであればよく，例えば，ＪＰＥＧ，ＧＩＦ，ビットマップが該当する。
【００３１】
具体的に，本形態のスキャナ１００は，シート原稿が原稿トレイ２５にセットされた状態で，原稿の読み取り指示を受け付けると，まず，原稿トレイ２５から搬送部２２にてシート原稿を搬送させつつ，読取ヘッド２１にてその原稿の画像を読み取らせる。
【００３２】
スキャナ１００は，例えば，センサ２８の出力信号に基づいて，原稿の先端が読取ヘッド２１の位置に到達するより前に，読取ヘッド２１による読み取りを開始する。そして，スキャナ１００は，原稿の後端が読取ヘッド２１の位置を通過した後に，読取ヘッド２１による読み取りを停止させる。スキャナ１００は，例えば，図４に示すように，読取ヘッド２１の読取可能な範囲Ｗｘで，図４中の上方から下方へ向かって画像データ５０を取得する。
【００３３】
その結果，取得される画像データ５０には，図４にドットハッチングで示すように，原稿の画像による原稿領域５１の周囲に，グレー領域５２が含まれる。グレー領域５２は，原稿の範囲外を読み取った，背景色の画像データ５０であり，具体的には，読取ヘッド２１の対向位置に配置されているグレー板２３を読み取った結果の画像データ５０である。
【００３４】
次に，スキャナ１００は，取得した画像データ５０に基づいて，出力用のデータである出力データを生成し，生成された出力データを，読取動作の指示にて指定された出力先に出力する。そのために，スキャナ１００では，出力データの生成手順として，画像データ５０から出力画像を取り出すトリミングと，取り出した出力画像の傾きを補正する回転とを実行する。
【００３５】
具体的に，画像データ５０から原稿領域５１と推定される範囲を決定して出力範囲とし，画像データ５０のうち出力範囲以外の領域を削除することにより出力範囲の画像である出力画像を取り出す。さらに，出力画像に基づいて，原稿が搬送方向に対して傾いて搬送されたと推定される場合には，その傾きを補正するための回転量を決定し，出力画像に対して，決定した回転量の回転を実行する。ここで，回転量は，大きさと方向とを有する値である。回転量の大きさは，原稿の搬送方向に対する傾きの大きさと同じ大きさであり，回転の方向は，原稿の傾きの方向とは逆の方向である。
【００３６】
以下では，画像データ５０内の各点の位置や各直線を，図４に示すように，便宜的にＸ−Ｙ平面内の座標を用いて表記する。つまり，画像データ５０を，読取ヘッド２１にて読み取った１ライン分の画像データを横に，読取ヘッド２１に直交する方向のうち先に読み取った側を上にして表示する。そして，画像データ５０の最終取得ラインの左端を原点として，その平面内にＸ軸とＹ軸とを配置する。Ｘ軸は，読取ヘッド２１の方向であり，原稿の搬送方向に直交する方向である。Ｙ軸は，読み取りの進行方向と逆方向であり，最終取得ラインから１ライン目へ向かってＹ座標の値は大きくなる。なお，Ｙ軸の向きは逆でもよい。
【００３７】
まず，出力範囲の決定のために，スキャナ１００は，図４中に黒丸で示すように，取得した画像データ５０から原稿のエッジを抽出する。エッジは，画像データ５０の各点の値（例えば，輝度値，ＲＧＢのいずれかの値）が所定の閾値を超える位置である。スキャナ１００は，例えば，画像データ５０中の各点の輝度値を所定の閾値で二値化し，二値化した値を画像データ５０の外側から内側に向かって見ていき，グレー領域５２と原稿領域５１との境界の位置の座標を取得する。なお，スキャナ１００は，原稿の画像の読み取りと並行して，読み取り済みの部分からエッジの抽出を実行してもよい。
【００３８】
さらに，スキャナ１００は，抽出されたエッジに基づいて，原稿の先端辺Ｅｔと，原稿の後端辺Ｅｂと，それらの両端に相当する角部４点（図４中の点Ａ，Ｂ，Ｃ，Ｄ）との位置を取得する。なお，原稿の先端辺Ｅｔは，原稿の搬送方向について先端側の辺であり，原稿のうち最初に読み取られた箇所である。原稿の後端辺Ｅｂは，原稿の搬送方向について後端側の辺であり，原稿のうち最後に読み取られた箇所である。
【００３９】
スキャナ１００は，例えば，原稿の先端側にて抽出された複数のエッジによる近似直線を算出して先端辺Ｅｔとし，その両端位置から原稿の先端側の角部（図４中の点Ａ，Ｂ）を取得する。あるいは，スキャナ１００は，例えば，抽出されたエッジに基づいて，エッジの並び方向の変化する位置として角部を取得し，それらを結ぶ直線を先端辺Ｅｔとする。後端辺Ｅｂについても同様に取得する。
【００４０】
そして，本形態のスキャナ１００は，先端辺Ｅｔの傾きと後端辺Ｅｂの傾きとを取得する。この傾きは，各端辺がＸ軸となす角度とその向きとを含む。例えば，先端辺Ｅｔが，Ｘ−Ｙ面内で式Ｙ＝αＸ＋ｐで表される直線であれば，先端辺Ｅｔの傾きは，式中の「α」である。また，後端辺Ｅｂが，式Ｙ＝βＸ＋ｑで表される直線であれば，後端辺Ｅｂの傾きは，式中の「β」である。
【００４１】
さらに，本形態のスキャナ１００は，先端辺Ｅｔの傾きと後端辺Ｅｂの傾きとの差を，予め決めた回転斜行閾値と比較する。回転斜行閾値は，例えば，３度である。具体的に，スキャナ１００は，δ＝α−βを求め，δの絶対値が３度より大きい場合には，その原稿の読み取り時に回転斜行が発生したと判断する。一方，スキャナ１００は，δの絶対値が３度より大きくない場合は，回転斜行は発生しなかったと判断する。
【００４２】
例えば，図４に示すように，先端辺Ｅｔの傾きαと後端辺Ｅｂの傾きβとの差が小さい場合には，δの絶対値は小さい。この場合には，スキャナ１００は，搬送中に原稿の傾きはほとんど変化しなかったと判断する。つまり，原稿の回転斜行は発生しなかったと判断する。
【００４３】
そして，スキャナ１００は，回転斜行が発生しなかったと判断した場合には，例えば，全周のエッジに囲まれる範囲を原稿の画像の範囲であると推定して，出力範囲に決定する。あるいは，先端辺Ｅｔと後端辺Ｅｂと，それらの両端をそれぞれ繋いだ直線とで囲まれる範囲を出力範囲としてもよい。図４の例での出力範囲は，原稿領域５１とほぼ重なる矩形の領域となる。そして，画像データ５０のうち，この範囲外のデータをトリミングによって削除し，画像データ５０から出力範囲の出力画像を取り出す。
【００４４】
なお，回転斜行が発生しなかったと判断した場合であっても，図４に示すように，傾きαまたは傾きβが一定以上の角度を有している場合には，画像データ５０から取り出した出力画像に，傾き補正を実行する。例えば，先端辺Ｅｔの傾きαの絶対値が１度を超えている場合には，取り出した出力画像の傾き量を傾きαとして回転量を決定し，傾き補正を実行する。つまり，回転量は，大きさが傾きαの絶対値であり，回転方向が傾きαの逆向きの量である。なお，回転量は，後端辺Ｅｂの傾きβ，あるいは，傾きαと傾きβとの平均値に基づいて決定してもよい。そして，スキャナ１００は，補正後の出力画像から出力データを生成し，生成された出力データを出力先に出力する。
【００４５】
一方，例えば，図５に示すように，傾きαと傾きβとの差が大きい場合には，スキャナ１００は，原稿の搬送に伴って原稿の傾きが変化した，すなわち，回転斜行が発生したと判断する。特に，図５に示したように，傾きαと傾きβとが，逆向きであった場合には，スキャナ１００は，回転斜行が発生したと判断する。
【００４６】
そして，回転斜行が発生した場合には，原稿が矩形であっても，画像データ５０の原稿領域５１は直線で囲まれた形状とはならない。そこで，スキャナ１００は，原稿領域５１とは異なる範囲を，画像データ５０から出力画像として取り出す出力範囲と決定する。例えば，図５に破線で示したように，画像データ５０のうち原稿の画像の領域と推定される矩形の範囲を出力範囲５５と決定する。出力範囲５５の決定方法については，後述する。さらに，画像データ５０から出力範囲５５の出力画像を取り出し，取り出した出力画像を必要に応じて回転して出力データを生成する。
【００４７】
続いて，前述した読取動作を本形態のスキャナ１００において実現するための処理として，シート原稿の読み取り時に実行され，出力データを生成する処理である出力データ生成処理について，図６のフローチャートを参照して説明する。スキャナ１００は，シート原稿の読取開始の指示入力を受け付けると，シート原稿の搬送と読み取りを開始し，例えば，図４や図５に示したような画像データ５０を取得する。そして，出力データ生成処理は，読取開始による画像データ５０の取得開始を契機に，ＣＰＵ３１にて実行される。
【００４８】
本形態のスキャナ１００は，出力データ生成処理を開始すると，まず，原稿１枚分の画像データ５０を取得する（Ｓ１０１）。そして，スキャナ１００は，画像データ５０から原稿のエッジを抽出する（Ｓ１０２）。Ｓ１０２では，スキャナ１００は，少なくとも先端側のエッジと後端側のエッジとを抽出する。その他のエッジについては，Ｓ１０２にて抽出してもよいし，後で必要に応じて抽出してもよい。Ｓ１０２の処理は，抽出処理の一例である。
【００４９】
次に，スキャナ１００は，Ｓ１０２にて抽出したエッジに基づいて，先端辺Ｅｔの傾きαと後端辺Ｅｂの傾きβとを取得する（Ｓ１０４）。具体的に，各エッジから近似直線の式を求め，その式の傾きの値を取得する。Ｓ１０４の処理は，取得処理の一例である。
【００５０】
次に，スキャナ１００は，取得した傾きαと傾きβとの差の絶対値が予め決めた回転斜行閾値よりも大きいか否かを判断する（Ｓ１０５）。Ｓ１０５の処理は，判断処理の一例である。
【００５１】
そして，スキャナ１００は，傾きαと傾きβとの差の絶対値が予め決めた回転斜行閾値より大きくないと判断した場合には（Ｓ１０５：ＮＯ），搬送開始時と搬送終了時で，原稿の傾きはほとんど変わっていないので，回転斜行は発生していないと判断する。そして，スキャナ１００は，傾きαの絶対値が所定の値よりも小さいか否かを判断する（Ｓ１０６）。
【００５２】
スキャナ１００は，傾きαの絶対値が所定の値より小さいと判断した場合には（Ｓ１０６：ＹＥＳ），Ｓ１０２にて抽出した原稿のエッジに基づいてトリミングを実行して，出力画像を取り出す（Ｓ１０８）。例えば，傾きαの絶対値が１度未満であれば，原稿領域５１はほとんど傾いていない。そこで，画像データ５０からエッジで囲まれる原稿領域５１を出力範囲５５として，出力範囲５５の画像を取り出して出力画像とする。さらに，出力画像から出力データを生成し（Ｓ１０９），出力データ生成処理を終了する。なお，全周のエッジにてトリミングを実行する代わりに，先端辺Ｅｔと後端辺Ｅｂとの両端を繋ぐことで決定される範囲を，出力画像として取り出してもよい。
【００５３】
また，スキャナ１００は，傾きαの絶対値が所定の値より小さくないと判断した場合には（Ｓ１０６：ＮＯ），Ｓ１０８と同様にエッジにてトリミングを実行して画像データ５０から出力画像を取り出した後，傾きαを傾き量に決定して，傾き補正のための回転を実行する（Ｓ１１０）。そして，スキャナ１００は，補正後の画像から出力データを生成して（Ｓ１０９），出力データ生成処理を終了する。なお，Ｓ１０６の判断やＳ１１０の回転は，後端辺Ｅｂの傾きβに基づいて行ってもよい。
【００５４】
一方，先端辺Ｅｔの傾きαと後端辺Ｅｂの傾きβとの差が回転斜行閾値より大きいと判断した場合には（Ｓ１０５：ＹＥＳ），スキャナ１００は，回転斜行の可能性があると判断する。しかし，まだ，原稿の形状がもともと矩形ではない可能性も残っている。例えば，ページの角折れや端部の破損等によりもともと矩形ではない原稿の場合，読み取った画像データ５０の原稿領域５１が矩形とはならない。このような例では，回転斜行が発生しなくても，傾きαと傾きβとの差が大きい可能性がある。
【００５５】
そこで，スキャナ１００は，原稿のサイズが小さいか否かを判断する（Ｓ１１２）。例えば，スキャナ１００は，先端辺ＥｔのＸ軸方向の長さに基づいて，原稿の搬送方向に直交する方向の幅が，所定の幅より小さいか否かを判断する。所定の幅は，搬送中の原稿が，前述した搬送部２２のローラ対４２３やローラ対４３３（図２参照）に接触する可能性が高い幅である。また，スキャナ１００は，先端辺Ｅｔと後端辺ＥｂとのＹ軸方向の距離に基づいて，原稿の搬送方向の長さが，所定の長さより短いか否かを判断する。所定の長さは，原稿の傾きが小さくても，原稿搬送時に原稿の側端が，搬送路を規制するガイド等に接触する可能性がある長さである。
【００５６】
原稿の幅が所定の幅よりも小さい場合には，原稿がローラ対４２３やローラ対４３３に接触する可能性は低く，回転斜行が発生する可能性は低い。原稿の長さが所定の長さよりも短い場合は，原稿がガイドに接触する可能性は低く，回転斜行が発生する可能性は低い。このような場合，回転斜行の可能性が低いにもかかわらず傾きの差が大きいことから，原稿の形状がもともと矩形ではない可能性が高い。
【００５７】
そこで，スキャナ１００は，原稿のサイズが小さいと判断した場合には（Ｓ１１２：ＹＥＳ），画像データ５０を原稿のエッジに基づいてトリミングを実行して（Ｓ１０８），出力データを生成し（Ｓ１０９），出力データ生成処理を終了する。つまり，スキャナ１００は，先端辺Ｅｔの傾きαと後端辺Ｅｂの傾きβとの差が回転斜行閾値より大きい場合であっても，原稿のサイズが所定サイズよりも小さい場合には，回転斜行は発生していないと判断する。
【００５８】
一方，原稿のサイズが小さくないと判断した場合には（Ｓ１１２：ＮＯ），スキャナ１００は，少なくとも一方の側端辺が直線的であるか否かを判断する（Ｓ１１３）。側端辺は，先端辺Ｅｔと後端辺Ｅｂ以外の端辺である。スキャナ１００は，画像データ５０のＸ軸方向への値の変化から，側端辺に基づくエッジを抽出し，抽出したエッジに基づいて，側端辺に直線性が有るか否かを判断する。スキャナ１００は，例えば，近似直線または側端辺の両端の角部を結んだ直線（例えば，直線ＡＣ）と最遠のエッジとが，所定の距離を超えて離れている場合に，直線性が無いと判断する。また，例えば，側端辺のエッジを直線近似した場合の相関係数に基づいて，直線性の有無を判断してもよい。
【００５９】
回転斜行が発生している場合は，両側の側端辺が曲線的となるため，少なくとも一方の側端辺が直線的であれば，原稿の形状がもともと矩形ではない可能性が高い。例えば不定形の原稿や，破損や折り曲げがある原稿の可能性が高い。そこで，スキャナ１００は，側端辺の少なくとも一方が直線的であると判断した場合には（Ｓ１１３：ＹＥＳ），画像データ５０を原稿のエッジにてトリミングを実行して（Ｓ１０８），出力データを生成し（Ｓ１０９），出力データ生成処理を終了する。つまり，スキャナ１００は，先端辺Ｅｔの傾きαと後端辺Ｅｂの傾きβとの差が回転斜行閾値より大きい場合であっても，少なくとも一方の側端辺のエッジが直線的であれば，回転斜行は発生していないと判断する。
【００６０】
いずれの側端辺も直線的ではないと判断した場合には（Ｓ１１３：ＮＯ），スキャナ１００は，回転斜行が発生したと判断する。そして，スキャナ１００は，回転斜行が発生したと判断される画像データ５０について，出力画像を取り出す出力範囲５５の決定と傾き補正の回転量の決定とを行う回転斜行処理を実行する（Ｓ１１５）。
【００６１】
次に，回転斜行処理の動作について，図７のフローチャートを参照して説明する。回転斜行処理を開始すると，スキャナ１００は，傾きαと傾きβとの差の絶対値が傾き差閾値より大きいか，または，側端辺の湾曲量が湾曲閾値より大きいかの少なくとも一方を満たすか否かを判断する（Ｓ２０１）。
【００６２】
なお，傾き差閾値は，出力データ生成処理のＳ１０５にて判断した回転斜行閾値よりも大きい値であり，回転斜行の程度が大きいか否かを判断する閾値である。また，湾曲量は，例えば，先端辺Ｅｔの一端と後端辺Ｅｂの一端とを結ぶ直線と側端辺の最も遠い箇所との距離である。そして，湾曲閾値は，湾曲の程度が大きいか否かを判断する閾値である。
【００６３】
スキャナ１００は，傾きαと傾きβとの差の絶対値が傾き差閾値より大きくなく，かつ，側端辺の湾曲量が湾曲閾値より大きくないと判断した場合には（Ｓ２０１：ＮＯ），長尺原稿であるか否かを判断する（Ｓ２０３）。スキャナ１００は，例えば，Ｙ軸方向における先端辺Ｅｔと後端辺Ｅｂとの距離に基づいて，原稿の搬送方向の長さが所定の長さ閾値よりも長いか否かを判断する。あるいは，スキャナ１００は，センサ２８の出力信号や操作パネル４０等を介してユーザから受け付けた原稿に関する読取設定に基づいて，原稿の読み取り時に原稿の長さを取得しておき，取得しておいた原稿の長さに基づいてＳ２０３の判断を実行してもよい。
【００６４】
そして，スキャナ１００は，原稿が長尺原稿ではないと判断した場合（Ｓ２０３：ＮＯ），画像データ５０のうちエッジで囲まれる領域である原稿領域５１内に収まる矩形の範囲を出力範囲５５とする。これにより，出力画像にエッジ画像が残留し難いので，見栄えがよくなる。なお，情報の欠落を抑制する上では，原稿領域５１内に収まる最大の矩形領域を出力範囲５５に決定することが好ましい。出力範囲５５の決定方法について，具体的に，図５に示した画像データ５０の例を参照して説明する。
【００６５】
スキャナ１００は，まず，内側に湾曲している側端辺である内曲側端辺の最内箇所を取得する（Ｓ２０５）。スキャナ１００は，画像データ５０から抽出したエッジに基づいて，図５に示すように，原稿領域５１の各辺を取得している。この例では，両側の側端辺のうち，内側に湾曲している内曲側端辺は，左側の辺ＡＣである。そして，最内箇所である点Ｆは，例えば，辺ＡＣのうち，Ｘ座標が最も大きい点である。また，例えば，点Ｆは，点Ａと点Ｃとを結ぶ直線に平行な直線と辺ＡＣとが接する点としてもよい。
【００６６】
次に，スキャナ１００は，先端辺Ｅｔと後端辺Ｅｂとのうち，傾きの絶対値が小さい方（この例では，先端辺Ｅｔ）と，最内箇所（点Ｆ）とを含む矩形領域を出力範囲５５に決定する（Ｓ２０６）。例えば，傾きαと傾きβとの絶対値を比較し，先端辺Ｅｔと後端辺ＥｂとのうちＸ軸となす角度が小さい方の傾きに基づいて，出力範囲５５を決定する。
【００６７】
具体的には，先端辺Ｅｔに直交して点Ｆを通る直線を引き，その直線と先端辺Ｅｔとの交点を点Ａ１，その直線と後端辺Ｅｂとの交点を点Ｃ１とする。さらに，先端辺Ｅｔの内曲側ではない側の端である点Ｂを含む，点Ａ１，点Ｃ１，点Ｂを３つの頂点とする矩形を出力範囲５５とする。つまり，点Ｂを通って直線Ａ１−Ｃ１に平行な直線と，点Ｃ１を通って先端辺Ｅｔに平行な直線との交点を点Ｄ１とすると，出力範囲５５は，矩形領域Ａ１−Ｃ１−Ｄ１−Ｂである。
【００６８】
そして，スキャナ１００は，画像データ５０に対してトリミングを実行することにより，Ｓ２０６にて決定した出力範囲５５の画像を取り出して出力画像とし，取り出した出力画像を出力範囲５５の一辺となった側の端辺の傾き（この例では，先端辺Ｅｔの傾きα）を傾き量として回転を実行する（Ｓ２０８）。つまり，スキャナ１００は，先端辺Ｅｔが出力データのＸ軸方向となるように補正する。
【００６９】
なお，後端辺Ｅｂの傾きβの方が先端辺Ｅｔの傾きαよりも絶対値が小さい場合には，スキャナ１００は，Ｓ２０６にて，後端辺Ｅｂを出力範囲５５の一辺とするとよい。その場合には，スキャナ１００は，Ｓ２０８にて，傾き量を後端辺Ｅｂの傾きβに決定して，回転を実行する。
【００７０】
Ｓ２０６およびＳ２０８にて，スキャナ１００は，出力範囲５５と回転量とを，傾きαと傾きβとの両方を参照してその一方を選択することで，決定している。つまり，本形態のスキャナ１００は，出力範囲５５の決定と回転量の決定との少なくとも一方において，傾きαと傾きβとの両方を用いる。ここで，先端辺Ｅｔの傾きαと後端辺Ｅｂの傾きβとを比較してその一方を選択し，その選択された傾きを用いて取り出し範囲や回転量を決定することも，両方を用いて決定する一例である。例えば，傾きの絶対値が小さい方を基準にすることで，情報の欠落を抑制できるとともに，元々の原稿の画像からの歪みが小さい出力画像が得られる可能性が高い。
【００７１】
さらに，エッジによって囲まれた領域内に収まるように出力範囲５５を決定することにより，出力画像にエッジ画像が残留し難く，出力画像の見栄えの悪化を抑制できる。なお，スキャナ１００は，出力範囲５５の一辺とする端辺と傾き補正の回転量とを，例えば，先端辺Ｅｔと後端辺Ｅｂとのうち，Ｓ２０６にて取得した最内箇所との距離が，遠い方の端辺の傾きに基づいて決定するとしてもよい。そのように決定すると，原稿領域５１のうち出力範囲５５から外れる部分が小さくなる可能性が高く，また，回転量が小さくなる可能性が高い。
【００７２】
一方，スキャナ１００は，原稿が長尺原稿であると判断した場合（Ｓ２０３：ＹＥＳ），幅が同じであって長尺原稿ではない原稿の場合に比較して，出力範囲５５のうち，原稿の搬送方向に直交する方向のサイズを大きくする。例えば，スキャナ１００は，画像データ５０のうち側端辺のエッジで囲まれる範囲を全て含む矩形の範囲を出力範囲５５とする。さらに，スキャナ１００は，傾きαと傾きβとのうち絶対値が小さい方に基づいて，出力範囲５５と回転量とを決定する。スキャナ１００は，画像データ５０に対してトリミングを実行して出力範囲５５の出力画像を取り出し，決定した回転量にて回転して出力データとする（Ｓ２１０）。Ｓ２０８やＳ２１０の処理は，回転補正処理の一例である。
【００７３】
例えば，図８に示すように，読取ヘッド２１の読み取り可能範囲Ｗｘに比較して，２倍以上の長さのある長尺原稿では，Ｓ２０６にて実行したようなエッジの内側に出力範囲を決定すると，原稿領域５１のうちトリミングによって削られる部分が大きくなりすぎる可能性がある。スキャナ１００は，長尺原稿の場合には，少なくとも出力範囲５５の幅方向のサイズを大きくし，側端辺より外側で囲まれる範囲を出力範囲５５に決定する。
【００７４】
この場合でも，スキャナ１００は，傾きαと傾きβとの絶対値を比較して，出力範囲５５の一辺とする端辺と傾き補正の回転量とを決定している。具体的に，スキャナ１００は，傾きαの絶対値の方が小さい場合には，先端辺Ｅｔに直交し，両側の側端辺に外側から接する２直線で囲まれる矩形の領域を出力範囲５５とする。そして，スキャナ１００は，出力範囲５５を取り出した出力画像を，傾きαを傾き量として傾き補正を実行する。これにより，原稿領域５１のうち，情報の欠落の抑制が期待できる。さらに，原稿の長さが長いほど，出力範囲５５を大きくすることにより，情報の欠落をより抑制する。また，スキャナ１００は，例えば，画像データ５０のうち先端辺Ｅｔと後端辺Ｅｂと両側の側端辺とで囲まれる範囲の全てを含むように，出力範囲５５を決定してもよい。
【００７５】
また，傾きαと傾きβとの差が傾き差閾値より大きいか，または，側端辺の湾曲量が湾曲閾値より大きいかの少なくとも一方を満たすと判断した場合は（Ｓ２０１：ＹＥＳ），スキャナ１００は，長尺原稿であるか否かを判断する（Ｓ２１２）。Ｓ２１２では，スキャナ１００は，原稿の搬送方向の長さが，分割閾値より長いか否かを判断する。分割閾値は，Ｓ２０３にて用いる長さ閾値とは別に設けられる閾値であるが，長さ閾値と同じ値であってもよい。
【００７６】
そして，スキャナ１００は，長尺原稿ではないと判断した場合には（Ｓ２１２：ＮＯ），トリミングと回転とを行い，出力データを生成する（Ｓ２１０）。例えば，スキャナ１００は，画像データ５０のうちエッジで囲まれる範囲を含む矩形の領域を取り出して出力画像とし，傾きαと傾きβとのうち絶対値が小さい方を傾き量として回転を行う。
【００７７】
例えば，図９に示すように，傾きαと傾きβとの差が大きい場合には，スキャナ１００は，大きい回転斜行が発生したと推定する。このような画像データ５０にて，エッジで囲まれる範囲の内側を矩形となるようにトリミングを実行すると，原稿領域５１のうち出力範囲５５に含まれない部分が大きくなり，情報が欠落する可能性が高くなる。そこで，スキャナ１００は，先端と後端の傾き差が大きい場合には，同等のサイズの原稿で傾き差が大きくない場合に比較して，出力範囲５５のサイズを大きくする。つまり，画像データ５０の側端辺の湾曲量が大きいほど出力範囲５５のサイズを大きくするので，情報の欠落を抑制できる。また，画像データ５０の傾きαと傾きβとの差が大きいほど出力範囲５５のサイズを大きくするので，情報の欠落を抑制できる。
【００７８】
スキャナ１００は，例えば，画像データ５０のうちエッジで囲まれる範囲を含む矩形の範囲を出力範囲５５に決定する。つまり，スキャナ１００は，傾きαと傾きβとの両方を比較して，出力範囲５５の一辺とする端辺と傾き補正の回転量とを決定する。そして，スキャナ１００は，その一辺以外の辺は，エッジに外側から接するように，出力範囲５５を決定する。これにより，情報の欠落の抑制が期待できる。なお，側端辺の湾曲量が大きい場合も，スキャナ１００は，同様の処理を実行する。
【００７９】
なお，傾き差大で長尺の原稿（Ｓ２０３でＹＥＳ）の場合のＳ２１０の処理と，傾き差小で短尺（Ｓ２１２でＮＯ）の場合のＳ２１０の処理とでは，多少異なる処理としてもよい。例えば，長尺原稿では，図８に示したように，後端辺Ｅｂの一部を出力範囲５５外とし，短尺原稿では，図９に示したように，後端辺Ｅｂが全て含まれるように出力範囲５５を決定するとしてもよい。また，いずれの場合でも，Ｓ２１０では，後端辺Ｅｂが全て含まれるように出力範囲５５を決定するとしてもよい。
【００８０】
さらに，Ｓ２０８の後，または，Ｓ２１０の後，スキャナ１００は，側端辺の湾曲量が加工閾値よりも大きいか否かを判断する（Ｓ２１５）。加工閾値は，Ｓ２０１で用いる湾曲閾値よりも小さい。そして，スキャナ１００は，側端辺の湾曲量が加工閾値よりも大きいと判断した場合（Ｓ２１５：ＹＥＳ），回転後の出力画像のうちエッジ外の領域，すなわち，グレー板２３を読み取ったグレー領域５２であった箇所を原稿の下地色に加工して（Ｓ２１６），回転斜行処理を終了する。このとき，グレー領域５２は，エッジ外領域の一例である。
【００８１】
原稿の下地色は，原稿領域５１のうち最も大きい面積を占める色，または，原稿領域５１の先端部分の所定領域を占める色である。下地色に加工することにより，出力画像の見栄えの悪化を抑制することができる。なお，下地色に加工する処理には時間がかかることから，湾曲量が大きく，エッジによって囲まれた領域外の領域が大きくなる可能性が高い場合には加工処理を実行して見栄えを優先し，湾曲量が小さく，エッジによって囲まれた領域外の領域が小さくなる可能性が高い場合には，加工処理を実行せず，出力の遅延を抑制する方が好ましい。
【００８２】
なお，スキャナ１００は，原稿の下地色とグレー領域５２の色とがほぼ等しい場合には，Ｓ２１５およびＳ２１６をスキップしてもよい。また，このＳ２１６の処理は，回転より先に実行してもよい。Ｓ２１６の処理は，加工処理の一例である。
【００８３】
一方，側端辺の湾曲量が加工閾値よりも大きくないと判断した場合（Ｓ２１５：ＮＯ），スキャナ１００は，Ｓ２１６をスキップして，回転斜行処理を終了する。湾曲量が小さい場合には，出力範囲５５にグレー領域５２が含まれる可能性は低いので，加工の必要性は小さい。スキャナ１００は，回転斜行処理を終了したら，図６に戻って，出力データを生成し（Ｓ１０９），出力データ生成処理を終了する。
【００８４】
また，スキャナ１００は，傾きαと傾きβとの差が傾き差閾値より大きいか，または，側端辺の湾曲量が湾曲閾値より大きいかの少なくとも一方を満たし，かつ，長尺原稿であると判断した場合には（Ｓ２１２：ＹＥＳ），分割結合処理を実行する（Ｓ２１８）。分割結合処理は，画像データ５０の原稿領域５１を複数に分割し，それぞれにトリミングや回転を行ってから結合する処理である。
【００８５】
次に，Ｓ２１８の分割結合処理の動作について，図１０のフローチャートを参照して説明する。この分割結合処理は，例えば，図１１に示すように，大きく湾曲して読み取られた長尺原稿の画像データ５０から出力データを生成するための処理である。
【００８６】
分割結合処理では，スキャナ１００は，まず，画像データ５０の原稿領域５１を，先端辺Ｅｔを含む先端部分と，後端辺Ｅｂを含む後端部分と，それらの中間の中間部分とに分割する（Ｓ３０１）。スキャナ１００は，例えば，図１１に示すように，先端辺Ｅｔと平行で先端辺Ｅｔから所定の分割距離だけ離れた分割線５７で分割した先端側を先端部分とする。スキャナ１００は，同様に分割線５８で分割した後端側を後端部分とし，両側の分割線５７，５８の間の部分を中間部分とする。なお，先端側の分割距離と，後端側の分割距離とは，異なる距離であってもよい。先端部分，後端部分，中間部分は，いずれも，分割領域の一例である。
【００８７】
分割距離は，例えば，搬送ローラ組４２と搬送ローラ組４３（図１参照）との距離に相当する距離である。原稿の先端が，搬送ローラ組４２の位置に到達してから，搬送ローラ組４３の位置に到達するまでの間は，原稿は，搬送ローラ組４２のみによって搬送される。一方，原稿の先端が搬送ローラ組４３の位置に到達してから，原稿の後端が搬送ローラ組４２の位置に到達するまでの間は，原稿は，搬送ローラ組４２と４３との両方によって搬送される。そのため，両端部分と中央部分とでは搬送状況が異なり，その間で原稿の搬送方向が変化する可能性がある。
【００８８】
そして，スキャナ１００は，先端部分，後端部分，中間部分について，それぞれに出力データを生成する。具体的に，スキャナ１００は，まず，画像データ５０から先端部分を抽出する（Ｓ３０２）。そして，抽出した先端部分について，先端辺Ｅｔを用いてトリミングと回転とを実行し（Ｓ３０３），先端部分の出力データを生成する。
【００８９】
また，スキャナ１００は，画像データ５０から後端部分を抽出する（Ｓ３０４）。そして，抽出した後端部分について，後端辺Ｅｂを用いてトリミングと回転とを実行し（Ｓ３０５），後端部分の出力データを生成する。
【００９０】
さらに，スキャナ１００は，画像データ５０から中間部分を抽出する（Ｓ３０６）。そして，抽出した中間部分について，先端部分との分割線５７を先端辺とし，後端部分との分割線５８を後端辺として，図７に示した回転斜行処理を実行する（Ｓ３０７）。スキャナ１００は，中間部分について，例えば，先端辺と後端辺との傾き差が大で，長尺ではないと判断した場合には，図７のＳ２１０を実行する。つまり，スキャナ１００は，両側の側端辺を含む範囲にてトリミングを実行し，先端辺と後端辺のうち傾きの絶対値が小さい方に基づいて，傾き補正のための回転を実行することにより，中間部分の出力データを生成する。
【００９１】
なお，スキャナ１００は，先端部分の処理（Ｓ３０２とＳ３０３），後端部分の処理（Ｓ３０４とＳ３０５），中間部分の処理（Ｓ３０６とＳ３０７）を，どの順に実行してもよいし，並行して実行してもよい。また，分割は，原稿の搬送方向に均等に分割してもよい。なお，中間部分の回転量は，例えば，先端辺と後端辺とのいずれか一方（例えば傾きが小さい方）に基づいて決定すればよい。
【００９２】
そして，スキャナ１００は，分割した各部分から生成した出力データを全て結合し（Ｓ３１０），分割結合処理を終了する。そして，図７に戻り，スキャナ１００は，Ｓ２１８の分割結合処理の後，回転斜行処理を終了する。さらに，図６に戻り，スキャナ１００は，Ｓ１１５の回転斜行処理の後，出力データを生成し（Ｓ１０９），出力データ生成処理を終了する。
【００９３】
分割結合処理でも，スキャナ１００は，出力範囲５５の決定と，傾き補正の回転量の決定とにおいて，傾きαと傾きβとの両方を参照する。つまり，先端辺Ｅｔを含む先端部分は先端辺Ｅｔの傾きαに基づいてトリミングと回転とを実行し，後端辺Ｅｂを含む後端部分は後端辺Ｅｂの傾きβに基づいてトリミングと回転とを実行する。従って，各部分から生成した出力データを結合するので，全体を一方の端辺を用いてトリミングと回転とを実行するより，情報の欠落の抑制が期待できる。
【００９４】
なお，中間部分がまだ長尺であって湾曲量が大きい場合は，スキャナ１００は，回転斜行処理にて再び分割結合処理を実行する。つまり，スキャナ１００は，中間部分からさらにその先端部分と後端部分とを分割し，それぞれトリミングと回転とを実行する。分割後の中間部分が長尺ではなくなれば，スキャナ１００は，回転斜行処理にて中間部分の出力データを生成するので，生成された全ての出力データを結合して，１つの出力データとすることができる。
【００９５】
以上，詳細に説明したように，本形態のスキャナ１００は，読み取った画像データ５０から原稿のエッジを抽出し，抽出されたエッジに基づいて，先端辺Ｅｔの傾きαと後端辺Ｅｂの傾きβとを取得する。そして，スキャナ１００は，傾きαと傾きβとの差が予め決めた回転斜行閾値より大きい場合に，原稿の搬送に伴って原稿の傾きが変化する回転斜行が発生したと判断する。本形態のスキャナ１００は，回転斜行が発生したか否かを判断するので，その搬送状態に適した処理を選択することができる。その結果として，原稿を搬送させながら読み取るスキャナ１００において，原稿の搬送状態に応じた好適な処理が期待できる。
【００９６】
なお，本実施の形態は単なる例示にすぎず，本発明を何ら限定するものではない。したがって本発明は当然に，その要旨を逸脱しない範囲内で種々の改良，変形が可能である。例えば，スキャナに限らず，複写機，複合機，ＦＡＸ装置等，原稿を搬送しつつ読み取る画像読取機能を備えるものであれば適用可能である。
【００９７】
また，例えば，グレー板２３に代えて白板を備えていてもよい。その場合，下地色の白い原稿であれば，加工処理はなくてもよい。ただし，グレー板２３とした方が，原稿の下地が白い場合に，的確にエッジを抽出できる可能性が高い。
【００９８】
また，例えば，出力データ生成処理にて，Ｓ１０５でＹＥＳであれば回転斜行が発生したと判断してもよい。つまり，Ｓ１１２の判断とＳ１１３の判断は，無くてもよい。ただし，小サイズの原稿の場合や，側端辺が直線的であった場合には，回転斜行が発生している可能性は低い。つまり，Ｓ１１２やＳ１１３を加えることで，より適切な判断が期待できる。
【００９９】
また，例えば，スキャナ１００は，各種の閾値について，ユーザによる設定を受け付けてもよい。つまり，各閾値は，ＲＯＭ３２に記憶されている固定値であってもよいし，ＮＶＲＡＭ３４に記憶される可変値であってもよい。
【０１００】
また，例えば，出力データ生成処理のＳ１０６の判断は無くてもよい。つまり，回転斜行が発生していないと判断した場合は，傾き角度に関わらず，トリミングと回転とを行うとしてもよい。
【０１０１】
また，実施の形態では，Ｓ２１６にて，湾曲量が加工閾値よりも大きい場合にエッジ外の領域を下地色に加工するとしたが，湾曲量にかかわらず，加工してもよい。つまり，出力データ中に含まれるグレー領域５２は，全て下地色に加工してもよい。また，湾曲量にかかわらず，加工しないとしてもよい。加工すれば出力データの見栄えがよくなると期待できる。一方，加工しないとすれば，処理時間の短縮が期待できる。
【０１０２】
また，実施の形態では，分割結合処理のＳ３０１にて，原稿領域５１を３つの部分に分割するとしたが，２以上に分割すればよく，３に限らない。２分割とする場合は，スキャナ１００は，先端側の部分については，先端辺Ｅｔに基づいて出力データを生成し，後端側の部分については，後端辺Ｅｂに基づいて出力データを生成すればよい。また，４以上に分割してもよい。また，実施の形態では，Ｓ３０７にて，中間部分についてさらに回転斜行処理を行うとしたが，これに限らない。例えば，Ｓ３０７に代えて，いずれかの分割線に基づく一律な処理を行うとしてもよい。
【０１０３】
また，実施の形態では，回転斜行が発生したと判断した場合，Ｓ１１５にて回転斜行処理を実行し，補正した出力データを生成して出力するとしたが，これに限らない。例えば，回転斜行が発生したと判断した場合には，Ｓ１１５に代えて，エラー報知を行い，原稿をセットし直すように促すとしてもよい。
【０１０４】
また，実施の形態では，スキャナ１００が回転斜行の発生を判断しているが，スキャナと接続するＰＣ等で判断してもよい。この場合，例えば，ＰＣは，スキャナに対して，画像の読み取りと読み取った画像データの送信とを指示し，スキャナから画像データを取得する。そして，ＰＣは，画像データの取得を契機に，取得した画像データに基づいて，エッジの抽出，端辺の傾きの取得，および，回転斜行発生の判断を実行する。
【０１０５】
具体的には，ＰＣは，例えば，図６に示した出力データ生成処理のうち，Ｓ１０１の画像データの取得をスキャナとの通信によるデータ受信に変更した処理を実行する。なお，指示された出力先がＰＣ自身であれば，ＰＣは，生成した出力データを出力せず，自身のハードディスク等に記憶する。
【０１０６】
また，実施の形態に開示されている処理は，単一のＣＰＵ，複数のＣＰＵ，ＡＳＩＣなどのハードウェア，またはそれらの組み合わせで実行されてもよい。また，実施の形態に開示されている処理は，その処理を実行するためのプログラムを記録した記録媒体，または方法等の種々の態様で実現することができる。
【符号の説明】
【０１０７】
２１  読取ヘッド
２２  搬送部
３１  ＣＰＵ
１００  スキャナ
【図１】
0006471423.tif 000002
【図２】
0006471423.tif 000003
【図３】
0006471423.tif 000004
【図４】
0006471423.tif 000005
【図５】
0006471423.tif 000006
【図６】
0006471423.tif 000007
【図７】
0006471423.tif 000008
【図８】
0006471423.tif 000009
【図９】
0006471423.tif 000010
【図１０】
0006471423.tif 000011
【図１１】
0006471423.tif 000012