(57)【要約】【課題】  原稿読取機構や、原稿搬送機構に依存する固有の倍率誤差を考慮して、搬送される原稿を読み取る際の傾き誤差や倍率誤差を精度よく補正した原稿読取を行う。【解決手段】    読取手段を用いて、搬送手段が搬送する原稿の画像を読取り補正をする画像処理装置において、読取手段が読み取る画像データのエッジ情報を解析して前記搬送手段が搬送する原稿の主走査方向の傾き量を特定する。さらに、記憶手段に記憶された装置固有の倍率補正情報と、前記原稿サイズと傾き量とに従う第１の倍率誤差係数とから、前記読取手段が読み取る原稿の画像データの倍率誤差を補正するための第２の倍率誤差係数を算出する。そして、読取手段が読み取る原稿の画像データで特定される座標値を、算出した第２の倍率誤差係数と、傾き補正基準位置座標値と、前記傾き量とを用いて補正した画像データを出力することを特徴とする。【選択図】  図９
2018207380.tif 000002
【特許請求の範囲】
【請求項１】
原稿のサイズを検出し、搬送手段が搬送する原稿を読み取り、原稿の画像データを出力する原稿読取手段において、原稿搬送時に発生する倍率誤差を補正する倍率補正情報を原稿サイズに対応づけて記憶する記憶手段と、
前記原稿の画像データのエッジ情報を解析して、原稿の主走査方向の傾き量を特定する特定手段と、
前記記憶手段に記憶された倍率補正情報と、前記原稿サイズと前記傾き量に従う第１の倍率誤差係数とから、前記読取手段が読み取る原稿の画像データの倍率誤差を補正するための第２の倍率誤差係数を算出する算出手段と、
前記読取手段が読み取る原稿の画像データで特定される座標値を、前記算出手段が算出した前記第２の倍率誤差係数と、傾き補正基準位置座標値と、前記傾き量を用いて補正した画像データを出力する補正手段と、
を備えることを特徴とする画像処理装置。
【請求項２】
前記倍率誤差は、原稿読取手段に固有の値であることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記傾き補正基準位置座標値を演算する演算手段を備えることを特徴とする請求項１に記載の画像処理装置。
【請求項４】
原稿のサイズを検出し、搬送手段が搬送する原稿を読み取り、原稿の画像データを出力する原稿読取手段において、原稿搬送時に発生する倍率誤差を補正する倍率補正情報を原稿サイズに対応づけて記憶する記憶手段を有する情報処理装置の情報処理方法であって、
前記原稿の画像データのエッジ情報を解析して、原稿の主走査方向の傾き量を特定する特定ステップと、
前記記憶手段に記憶された倍率補正情報と、前記原稿サイズと前記傾き量に従う第１の倍率誤差係数とから、前記読取手段が読み取る原稿の画像データの倍率誤差を補正するための第２の倍率誤差係数を算出する算出ステップと、
前記読取手段が読み取る原稿の画像データで特定される座標値を、前記算出手段が算出した前記第２の倍率誤差係数と、傾き補正基準位置座標値と、前記傾き量を用いて補正した画像データを出力する補正ステップと、
を備えることを特徴とする情報処理方法。
【請求項５】
請求項4に記載の情報処理方法を、コンピュータに実行させるためのプログラム。
【請求項６】
読取手段を用いて、搬送手段が搬送する原稿の画像を読み取る原稿読取装置であって、
原稿のサイズを検出する検出手段と、
前記搬送手段が搬送することにより発生する倍率誤差を補正する倍率補正情報を原稿サイズに対応づけて記憶する記憶手段と、
前記読み取り手段が読み取る画像データのエッジ情報を解析して、原稿の主走査方向の傾き量を特定する特定手段と、
前記記憶手段に記憶された倍率補正情報と、前記原稿サイズと前記傾き量に従う第１の倍率誤差係数とから、前記読取手段が読み取る原稿の画像データの倍率誤差を補正するための第２の倍率誤差係数を算出する算出手段と、
前記読取手段が読み取る原稿の画像データで特定される座標値を、前記算出手段が算出した前記第２の倍率誤差係数と、傾き補正基準位置座標値と、前記傾き量を用いて補正した画像データを出力する補正手段と、
を備えることを特徴とする原稿読取装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、情報処理方法、原稿読取装置及びプログラムに関するものである。
【背景技術】
【０００２】
従来、複写機等に使用される原稿読取装置には、原稿搬送装置により原稿を１ページずつ原稿台ガラス上に搬送し、その搬送路に設けられた固定されたイメージセンサにて原稿の画像が読み取られる、いわゆる「流し読み」を行うものが知られている。
この流し読み時に傾いた状態で搬送された原稿を読み取ると、原稿画像が傾いて読み取られてしまうことが知られている。
このように原稿が傾いた状態で搬送される問題を解決するために、原稿の姿勢及び位置をあわせる、いわゆる原稿の幾何補正を行う幾何補正手段が設けられたものがある。
【０００３】
この幾何補正手段には、一般的な幾何補正手法であるアフィン変換が使用されている。但し、アフィン変換は演算に三角関数が多用されており、集積回路で実現すると回路規模が膨大になってしまう。そこで、回路規模縮小のため演算処理を簡易化する手法がとられている。しかし、この演算処理の簡易化により演算誤差が生じ、その結果、出力画像サイズが縮小してしまう現象が発生する。そこで、特許文献１では検出した原稿の傾き量に応じて、演算誤差を補正するための倍率補正処理を実施することで高い画像幾何品質を実現している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−２８５３７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
アフィン変換の演算処理簡易化による出力画像サイズの倍率縮小率は、原稿の傾き量のみに依存するものではなく、読取られる原稿サイズにも依存し、原稿サイズが大きいほど倍率縮小率も大きくなる傾向にある。
【０００６】
また、演算処理の簡易化以外にも倍率に誤差が生じる原因がある。図２に示すようなレンズ、ミラー、ＬＥＤ光源、ＣＣＤラインセンサで構成される原稿情報を読み取る原稿読み取りユニットの個体そのもののバラツキや、その取付け位置、読取原稿の搬送のバラツキによっても出力画像サイズの倍率に誤差が生じる。
このように、出力画像サイズの倍率誤差は、原稿読み取りユニットの固有の倍率誤差と、傾き補正の演算処理簡易化による倍率誤差を含む。
特許文献１では傾き補正の演算処理簡易化による原稿サイズによる倍率誤差と、原稿読み取りユニットの固有の倍率誤差を同時に補正しきれていないため、読取り画像の幾何品質の低下を招いている。
【０００７】
本発明は、上記の課題を解決するためになされたもので、本発明の目的は、原稿の読取り機構や、搬送機構の固有の倍率誤差を考慮して、搬送される原稿を読み取る際の傾き誤差や倍率誤差を精度よく補正することができる仕組みを提供することである。
【課題を解決するための手段】
【０００８】
上記目的を達成する本発明の画像処理装置は以下に示す構成を備える。
画像処理装置であって、原稿のサイズを検出し、搬送手段が搬送する原稿を読み取り、原稿の画像データを出力する原稿読取手段において、原稿搬送時に発生する倍率誤差を補正する倍率補正情報を原稿サイズに対応づけて記憶する記憶手段と、前記原稿の画像データのエッジ情報を解析して、原稿の主走査方向の傾き量を特定する特定手段と、前記記憶手段に記憶された倍率補正情報と、前記原稿サイズと前記傾き量に従う第１の倍率誤差係数とから、前記読取手段が読み取る原稿の画像データの倍率誤差を補正するための第２の倍率誤差係数を算出する算出手段と、前記読取手段が読み取る原稿の画像データで特定される座標値を、前記算出手段が算出した前記第２の倍率誤差係数と、傾き補正基準位置座標値と、前記傾き量を用いて補正した画像データを出力する補正手段と、を備えることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、原稿読取機構や、搬送機構の固有の倍率誤差を考慮して、搬送される原稿を読み取る際の傾き誤差や倍率誤差を精度よく補正を行うことができる。
【図面の簡単な説明】
【００１０】
【図１】原稿読取装置の構成を説明する図である。
【図２】原稿読取ユニットの詳細図である。
【図３】原稿読取装置の制御構成を示すブロック図である。
【図４】原稿読取装置の制御方法を説明するフローチャートである。
【図５Ａ】原稿読取装置の制御方法を説明するフローチャートである。
【図５Ｂ】ラプラシアンフィルタの係数を示す図である。
【図６】原稿のエッジ座標取得処理を説明する図である。
【図７】原稿読取装置の制御方法を説明するフローチャートである。
【図８】原稿読取装置の制御方法を説明するフローチャートである。
【図９】原稿読取装置の制御方法を説明するフローチャートである。
【図１０】主走査方向の演算誤差画素数を示す図である。
【図１１】副走査方向の演算誤差画素数を示す図である。
【図１２】主走査方向の演算誤差係数を示す図である。
【図１３】副走査方向の演算誤差係数を示す図である。
【図１４】原稿読取装置の制御方法を説明するフローチャートである。
【図１５】原稿読取装置の制御方法を説明するフローチャートである。
【図１６】倍率補正後の出力画像データの例を示す図である。
【図１７】原稿サイズ毎の主走査サイズ／副走査サイズを示す図である。
【発明を実施するための形態】
【００１１】
次に本発明を実施するための形態について図面を参照して説明する。
＜システム構成の説明＞
〔第１実施形態〕
【００１２】
図１は、本実施形態を示す原稿読取装置の構成を説明する図であり、図１の(a)は、自動原稿搬送機構を搭載した原稿読取装置の断面構成に対応し、図１の(b)は自動原稿搬送機構を搭載した原稿読取装置の平面構成に対応する。
図１の(a)において、原稿102は原稿トレイ101に積載されている。原稿トレイ101には原稿ガイド103と連動して動く図示しない原稿幅検出用ボリューム抵抗器104が設けられている。
原稿トレイ101には原稿102の長手方向（以後「副走査方向」という。）検出用の原稿副走査位置検知ユニット110が設けられている。原稿搬送モータ105によって原稿トレイ101上に載置された原稿102を給紙し原稿読取ユニット106と原稿背景板109間の原稿読取位置107上を通過する原稿102の画像情報を原稿読取ユニット106にて読み取る。原稿読取ユニット106で原稿102の原稿読取が終了すると原稿102を排紙トレイ108に排出する。
【００１３】
図１の（ｂ）において、ユーザは原稿102に合わせて原稿ガイド103をスライドする。後述するＣＰＵ301は、スライドされた原稿ガイド103の幅ａによって載置されている原稿102の幅（以後「主走査幅」という。）を検出する。CPU301は、原稿の副走査サイズを判定する原稿副走査位置検知ユニット110の検出結果と、原稿ガイド103のスライド位置に応じた原稿幅検出用ボリューム抵抗器104の抵抗値から算出する主走査方向のサイズとの組み合わせに基づき、原稿サイズを決定する。原稿検知センサ111は、原稿トレイ101に原稿が搭載されたか否かを検出する。
【００１４】
図２は、図１に示した原稿読取ユニット106の詳細図である。
図２において、原稿読取ユニット106は、原稿読取位置107を通過する原稿に対して光を照射するＬＥＤ光源201、及び原稿102からの反射光をレンズ202及びＣＣＤラインセンサ203に導くミラー204、205、206、207を有する。
ＣＣＤラインセンサ203は、レンズ202によって導かれた原稿102からの反射光を受光し、光電変換し、電気信号を出力する。
ＣＣＤラインセンサ203は、搬送されている原稿102を、原稿読取位置107で読み取る。
【００１５】
図３は、本実施形態を示す画像処理装置の制御構成を示すブロック図である。
ＣＰＵ301は画像処理装置を制御するためのメインＣＰＵであり、操作部312に入力されたユーザからの指示に基づき、ＬＥＤ光源201、ＣＣＤラインセンサ203、原稿搬送モータ105および他の構成を制御する。
【００１６】
ＣＣＤラインセンサ203は、原稿から反射された光量を受光し、受光した光量に応じた電気信号を出力する。Ａ/Ｄ変換部303は、入力したアナログの電気信号をデジタル画像信号に変換する。シェーディング補正部304はＬＥＤ光源201の光量の不均一性の影響やＣＣＤラインセンサ203の画素感度の影響を補正するためのシェーディング補正をデジタル画像信号に対して行う。
【００１７】
傾き量検知部305は、原稿読取ユニット106の読取りばらつきによるランダムノイズ除去機能や、原稿のエッジを検出し、その結果をＣＰＵ301に通知する機能を有する。
具体的に傾き量検知部305は、後述するようにエッジ連続性判断部306が検出する原稿のエッジ位置情報を、ＣＰＵ301経由で取得してメモリ307に格納する。
【００１８】
エッジ連続性判断部306は、後述する図６において説明するように、メモリ307からライン単位で読み出す画像データをＣＰＵ301から指示された画素まで左端部原稿エッジカウンタでカウントすることでエッジが連続しているかどうかを判断する。
そして、エッジ連続性判断部306は、読み出した画像データに対して実行したエッジ連続性の判断の結果として原稿の先端を示す画素候補を求める。
傾き式算出部308は、後述する原稿サイズ判定処理により決定した原稿サイズから有効な画像データの主走査範囲と、メモリ307に格納したエッジ位置座標から有効データ範囲のエッジ位置情報とを取得する。さらに、傾き式算出部308は、取得した各主走査範囲情報、エッジ位置座標から主走査方向の左端部位置と、右端部位置とを算出する。続いて傾き式算出部308は、該左端部位置から該右端部位置までの範囲のエッジ位置座標から、一般的な最小２乗法やハフ変換を用いて画像の傾きを表す１次式の傾きを算出する。
【００１９】
倍率誤差算出部314は、図１２，図１３に示すテーブルを保持しており、検知する原稿サイズと原稿傾き量の関係で主走査と副走査の倍率誤差係数〔em、es〕を選択する。倍率誤差算出部314は、後述するように幾何補正部310が読み取った画像データに対して、倍率誤差と原稿読み取りユニットの固有の倍率誤差とを同時に補正処理するための主走査および副走査方向の倍率誤差係数を算出する。
【００２０】
倍率誤差係数バックアップメモリ313は、２つの倍率誤差係数（後述するfm、fs）を予め記憶する。
これら2つの誤差係数は、原稿読取ユニット106の組立てバラツキ，原稿読取装置への組付けバラツキ及び原稿読取装置固有の搬送精度に起因する読取原稿の倍率変動を補正するための主走査方向と副走査方向の２つの倍率誤差係数である。
これらの倍率変動は原稿読取装置に固有のものであり、その倍率誤差係数〔fm、fs〕は固定値である。倍率誤差係数〔fm、fs〕は、原稿読取装置を組み立てた際に工場において以下の処理によって求められる。
まず、垂直・水平の直線が等間隔に印字されたマス目状および格子状の原稿を原稿読取装置で読取る。そして、この原稿の画像データから直線の間隔を判定する。そして、原稿における直線の間隔と、画像データから判定された直線の間隔とから、垂直方向（副走査方向）および水平方向（主走査方向）の倍率誤差係数〔fm、fs〕を求める。求められた倍率誤差係数〔fm、fs〕は、倍率誤差係数バックアップメモリ313に記憶される。さらに、倍率誤差係数は、操作部312からユーザの指示に基づき、例えば±10の21段階で設定でき、1段階で0.0001倍単位の倍率調整が可能である。つまり、ユーザは、工場において記憶された誤差係数を調整することが可能である。
【００２１】
幾何補正部310は、画像データに対して幾何補正を行う。幾何補正について以下、図１６を参照しながら説明する。
原稿先端から算出された傾き量θで傾く原稿の画素位置（主走査（Ｘ）、副走査（Ｙ））を[数１]に示すアフィン変換処理で算出する。ｘ0およびｙ0は傾き補正されたデータを平行移動させるための移動量である。画像の先端部および端部の出力位置を合わせることが可能となる。アフィン変換の一般式を[数１]に示す。
【数１】
2018207380.tif 000003
【００２２】
X:主走査方向の補正後の画素位置、Y:副走査方向の補正後の画素位置
x:補正前の主走査方向の画素位置、y:補正前の副走査方向の画素位置
x0:主走査方向の平行移動量（主走査傾き補正基準位置）
y0:副走査方向の平行移動量（副走査傾き補正基準位置）
θ：原稿先端から算出された傾きに基づく角度
上記で述べたアフィン変換は、一般式である。本実施形態では、集積回路の規模を小さくするために、cosθ＝1と近似し、上記一般式を下記演算式に変形する。つまり、[数１]の両辺をcosθで除することで、[数２]が得られる。
【数２】
2018207380.tif 000004
【００２３】
tanθ：原稿の傾き量
但し、簡易化によって演算誤差が生じてしまい、原稿傾き量と原稿サイズが大きくなるにつれて、図１０、図１１のテーブルに示すように演算誤差も大きくなり、補正後の画像データは結果として倍率が縮小したものとなってしまう。
【００２４】
〔倍率誤差の補正〕
本実施形態の原稿読取装置は、上記で述べた倍率誤差を補正する。
図４は、原稿読取装置が倍率誤差を補正する処理を説明するフローチャートである。
【００２５】
S400において、ＣＰＵ301は、原稿検出センサ111の検知結果に基づき、原稿トレイ101上の原稿102の有無を判断する。Ｓ400において、ＣＰＵ301は、原稿102が有ると判断されるまで、原稿102の有無の判断を繰り返す。
原稿トレイ上に原稿102が有ると判断された場合、S401において、原稿ガイド103の幅に応じて変化する原稿幅検出用ボリューム抵抗器104の抵抗値をＡ/Ｄ変換部311でＡ/Ｄ変換した値に基づき主走査サイズａを決定し、メモリ307に記憶する。図１７に示すように、本実施形態では、主走査サイズとして８種類（a=0〜7）のサイズを識別する。
S402において、ＣＰＵ301は、原稿副走査位置検知ユニット110の検知結果に基づき、原稿の副走査方向の長さを決定し、メモリ307に記憶する。原稿副走査位置検知ユニット110の検知結果が原稿有である場合、ＣＰＵ301は原稿が長いサイズの原稿であると決定し、副走査サイズｂ＝1とする。一方、原稿副走査位置検知ユニット110の検知結果が原稿無である場合、ＣＰＵ301は原稿が短いサイズの原稿であると決定し、副走査サイズｂ＝0とする。
【００２６】
S403において、ＣＰＵ301は、図１７に示すように、主走査サイズａと副走査サイズｂの組み合わせに基づき原稿サイズを決定する。なお、原稿サイズの検出は定型サイズとし、定型サイズ以外を検出した際は操作部312にユーザが原稿サイズを指定するように表示し、指定されることで原稿サイズが確定する。
S404において、ＣＰＵ301は、操作部312からの情報によりスタートボタンが押されたか否かを判断する。ここで、スタートボタンが押されていないとＣＰＵ301が判断した場合、処理は待機状態となり、スタートボタンが押されているとＣＰＵ301が判断した場合、ＣＰＵ301は、処理をS405に進める。
【００２７】
S405において、ＣＰＵ301は、原稿搬送モータ105を駆動させ、原稿102の搬送を開始する。その際、ＣＰＵ301は、ＬＥＤ光源201を点灯させ、駆動させたＣＣＤラインセンサ203に原稿102の画像情報を読み取らせる。
S406において、傾き量検知部305、傾き式算出部308および傾き補正基準位置算出部309は原稿傾き量・回転基準座標検出処理を実行する。
【００２８】
S407において、倍率誤差係数算出部314は原稿倍率誤差検出処理を行う。
S408において、幾何補正部310は幾何補正処理を実行する。
S409において、ＣＰＵ301は、原稿台である原稿トレイ101に搭載された原稿検知センサ111にて次の原稿102の有無を判断する。
ここで、原稿トレイ101に搭載された原稿検知センサ111にて原稿102を検出していると判断した場合、ＣＰＵ301は、処理をS406に戻す。一方、S411でＣＰＵ301は、原稿トレイ101に搭載された原稿検知センサ111にて原稿102を検出していないと判断した場合、一連の処理を終了する。
【００２９】
（原稿傾き量・回転基準座標検出処理）
図５Ａは、S406で行われる原稿傾き量・傾き補正基準位置座標検出処理の手順を説明するフローチャートである。該処理は、図３に示した傾き量検知部305、傾き式算出部308、傾き補正基準位置算出部309により実行される。
【００３０】
S600において、ＣＰＵ301は、シェーディング補正部304から出力された画像データをメモリ307に格納する。S601において、傾き量検知部305は、メモリ307から画像データを読み出し、エッジ情報を生成する。なお、本実施形態では、傾き量検知部305がエッジ情報の生成手法として広く知られているラプラシアンフィルタによるフィルタ演算によって、エッジ情報Ｅ(x、y)を生成する。本実施形態で用いるラプラシアンフィルタの係数を図５Ｂに示す。
図５Ｂにおいて、注目画素の主走査座標をｘ、副走査座標をｙとし、輝度値をＤ(x,y)とすると、傾き量検知部305は、エッジ情報Ｅ(x、y)を以下の処理によって求めることができる。
【数３】
2018207380.tif 000005
【００３１】
tmpE(x,y)=0の時・・・E(x,y)=0（非エッジ）
tmpE(x,y)≠0の時・・・E(x,y)=1（エッジ）
そして、傾き量検知部305は、生成されたエッジ情報E(x,y)をメモリ307へ格納する。
S602において、エッジ連続性判断部306は、メモリ307に格納されたエッジ情報E(x,y)から原稿先端のエッジの位置座標〔x,y〕を検出する。
S603において、傾き式算出部308は、S602にて取得した原稿先端のエッジの位置座標〔x,y〕から原稿の傾き量を含む近似直線式を算出する。なお、傾き式算出部308による傾き式算出処理の詳細は後述する。
S604において、傾き補正基準位置算出部309は、S603にて算出した近似直線式から傾き補正基準位置座標〔x0,y0〕を算出する。なお、傾き補正基準位置算出部309による傾き補正基準位置座標算出の詳細は後述する。
【００３２】
以下、図６を参照して、S602において傾き量検知部305が実行するエッジ座標取得処理の詳細を説明する。
S602において、傾き量検知部305は、S601で抽出されたエッジ情報から原稿102の先端座標値を検出する。具体的には、傾き量検知部305がエッジ連続性判断部306を用いて先端座標値を検出する処理である。
【００３３】
図６（ａ）は、原稿102を読み取った画像データの例である。本例では、主走査幅が36画素として説明する。また図６のエッジ検出範囲Ｈ及びエッジ検出範囲ＶがＣＰＵ301から指示されたエッジ検出範囲の例である。
【００３４】
図６（ｂ）は、図６（ａ）に示したエッジ検出範囲H、Vにおけるエッジ情報Ｅ(x、y)を示す。エッジ検出された画素は１、エッジ検出されなかった画素は０として示されている。
図６（ａ）に示したエッジ検出範囲H、Vでは、原稿の先端、原稿左端および右端においてエッジが検出される。一般的な原稿では原稿の先端領域は余白である。よって、原稿の端部によって生じる影がエッジを生成する。
ただし、原稿の読取位置に固着ゴミおよび浮遊ゴミが存在した場合、副走査方向にエッジが連続して生成される。
【００３５】
次に、傾き量検知部305は、図６（ｂ）に示したエッジ情報Ｅ(x、y)から、図６（ｃ）に示すエッジ検出結果を求める。主走査位置毎に１個以上エッジ検出された画素がある場合は１を、１個もエッジ検出された画素がなかった場合は０とする。
【００３６】
この際、上述した固着ゴミや、浮遊ゴミもエッジとして検出されるため、メモリ307に格納されたエッジ検出結果も固着ゴミや浮遊ゴミはエッジとして格納される。本例では、３画素目に固定ゴミがエッジとして検出され、３４画素目に浮遊ゴミがエッジとして検出されている例を示している。
【００３７】
次に、エッジ連続性判断部306が、図６（ｃ）に示すエッジ検出結果から、原稿の左端部および右端部を検出する。
まず、原稿の左端部の検出について説明する。エッジ連続性判断部306は、図６（ｃ）に示すエッジ検出結果を左端部からエッジとして検出された画素の連続数をカウントする。そして、初めて所定画素数（本実施形態では５画素）以上連続した画素群の開始位置を端部として原稿の左端部として決定する。
具体的には、エッジ連続性判断部306はエッジ検出結果を左端部から順次読み出す。エッジ検出結果が１である場合は、エッジ連続性判断部306はカウント値に1を追加する。一方、エッジ検出結果が０である場合はカウント値をリセットする（０にする）。
そして、エッジ連続性判断部306は、カウント値が１となった時のエッジ検出結果に対尾する主走査位置をラッチする。エッジ連続性判断部306は、カウント値がリセットされた場合はラッチされている主走査位置もリセットする。そして、エッジ連続性判断部306は、カウント値が初めて所定値に到達した際に、ラッチされている主走査位置を原稿の左端の位置として決定する。
【００３８】
図６に示す例の場合、図６（ｃ）に示すように、エッジ検出結果の左端部から３画素目にエッジが検出されているため、図６（ｄ）に示すように、エッジカウンタを１にカウントアップするとともに主走査位置として３をラッチする。しかしながら、左端部から４画素目にエッジが検出されていないため、４画素目にはエッジが検出されていないためエッジカウンタを０にクリアし、ラッチされている主走査位置も０にクリアする。その後、１０画素目にエッジが検出されているためエッジカウントを1にカウントアップするとともに、主走査位置として１０をラッチする。その後、所定値（図６の場合５画素）以上エッジが連続して検出されているため、エッジカウントが所定値５に到達し、その際にラッチされている主走査位置１０が、左端部として決定される。
次に、エッジ連続性判断部306は、左端部に対して行った処理を、右端部に対して行う。この場合は、エッジ連続性判断部306は、エッジ検出結果を右端部から順次読み出し、同様の処理を行う。
これらの処理により、原稿の先端領域の左右両端部を検出することができる。
【００３９】
エッジ連続性判断部306は、左端部及び右端部の原稿エッジカウンタがＣＰＵ301から指示された所定値までカウンタがカウントすると、その時にラッチされている主走査位置を端部位置と決定し、ＣＰＵ301へ通知する。
図６の例では、エッジ連続性判断部306は、左端部位置として１０画素目、右端部として２７画素目をＣＰＵ301に通知する。
【００４０】
図７は、図６の例を用いて説明したエッジ連続性判断部306が原稿の左端部の主走査位置を決定するための処理を説明するフローチャートである。
まず、S800において、エッジ連続性判断部306は、座標ｘを０とし、主走査の初期化を行う。
続いてS801において、エッジ連続性判断部306は、カウンタを０とし、カウンタのリセットを行う。このカウンタは、エッジが検出された座標ｘが連続する数をカウントするものである（以下「連続性カウンタ」という。）。
S802において、エッジ連続性判断部306は、主走査方向の現在の座標ｘがスキャン最大サイズつまり、原稿の幅以下であるか否かを判断する。ここで、エッジ連続性判断部306が、座標Ｘが読取られた画像サイズ以下でないと判断した場合、S809に進み、操作部312にエラー表示を行い、処理を終了する。
一方、エッジ連続性判断部306が、特定される主走査方向の長さが読取られた画像サイズ以下であると判断した場合、処理をS803に進める。
S803において、メモリ307から図５Ａに示したS602のエッジ検出結果を主走査方向に１つ読み出す。そして、座標ｘに1を加算する。
【００４１】
S804において、エッジ連続性判断部306は、座標xのエッジ検出結果がエッジ画素を示す１であるか判定する。ここで、エッジ連続性判断部306は、座標ｘのエッジ検出結果がエッジでないことを示す０であると判定した場合、処理をS801へ戻し、S801でエッジの連続量をカウントする連続性カウンタをリセットする（カウンタ＝０）。
一方、S804において、エッジ連続性判断部306が、座標ｘのエッジ検出結果がエッジであることを示す1であると判定した場合、処理をS805へ進める。
S805において、エッジ連続性判断部306は、連続性カウンタが０の場合に、座標ｘを原稿端部主走査位置座標ｘ0としてメモリ307にラッチする。
【００４２】
S806において、エッジ連続性判断部306は、連続性カウンタの値が指定値（所定値、図６の例では５）であるか否かを判定する。連続性カウンタの値が指定値と異なる場合は、連続性カウンタの値に1を追加し、Ｓ802へ進める。
一方、S806において、連続性カウンタの値が指定値と等しい場合、エッジ連続性判断部306は、処理をS808に進める。S808において、エッジ連続性判断部306は、S804で記憶した原稿端部主走査位置座標ｘ0が読み取った原稿102の原稿先端開始主走査位置であると最終的に判断して、エッジ連続性判断部306は処理を終了する。
なお、エッジ連続性判断部306が原稿の右端部の主走査位置を決定する場合は、S800においてｘを右端の画素位置の値を代入する。さらに、Ｓ802のスキャンサイズを0にする。Ｓ803において座標ｘから１減算する。その他の処理は図7と同一である。
【００４３】
図８は、エッジ連続性判断部306が実施する副走査方向の原稿先端位置座標を検出する処理を説明するフローチャートである。
S900において、エッジ連続性判断部306はすべてのメモリｍ[x][y]を０に初期化する。
続くS901において、エッジ連続性判断部306は副走査カウンタyを初期化する。S902において、エッジ連続性判断部306は、副走査カウンタｙをカウントアップする。
【００４４】
S903において、エッジ連続性判断部306は、主走査カウンタｘを初期化する。
S904において、エッジ連続性判断部306は、副走査位置座標検出処理を開始し、図５Ａに示したＳ601でエッジ抽出されたエッジ検出結果（E[x][y]）が入力される毎に主走査カウンタｘをカウントアップする。
S905において、エッジ連続性判断部306は、エッジ検出結果E[x][y]=1かつm[x][y-1]=0であるか否かを判定する。エッジ検出結果E[x][y]=1かつメモリm[x][y-1]=0でないと判定された場合、S908に進める。一方、エッジ検出結果E[x][y]=1かつメモリ値m[x][y-1]=0であると判定された場合、S906において、メモリm[x][y：0〜y-2]を参照し、1が格納されているか否かを判定する。つまり、同一の主走査位置において、副走査方向上流の画素においてS905においてＹＥＳと判定された画素があるか否かを判定する。S906において、メモリm[x][y：0〜y-2]を参照し、1が格納されていると判定された場合、S908に進める。一方、メモリm[x][y：0〜y-2]を参照し、1が格納されていないと判定された場合、S907に進める。S907において、エッジ連続性判断部306は、メモリ値307（ｍ[x][y]）に1を格納する。
【００４５】
S908において、ＣＰＵ301は、主走査カウンタｘのカウント値がスキャン最大サイズ以上か否か判断する。ここで、ＣＰＵ301は、主走査カウンタｘのカウント値がスキャン最大サイズ以上でないと判断した場合、処理をS904に戻す。一方、ＣＰＵ301は、主走査カウンタｘのカウント値がスキャン最大サイズ以上であると判断した場合、処理をS909に進める。
S909において、ＣＰＵ301は、副走査カウンタｙのカウント値がＣＰＵ301から指示したカウント値と一致するか否かにより、原稿の読取終了位置か否かを判断する。
ここで、ＣＰＵ301は、副走査カウンタｙのカウント値が指示したカウント値と一致しないと判断した場合は、処理をS902へ戻す。
一方、S909で、ＣＰＵ301は、副走査カウンタｙのカウント値が指示したカウント値と一致すると判断した場合、副走査位置座標処理を終了する。
以上の処理により、格納されたメモリ値ｍ[x][y]に１が格納された位置が、主走査位置ごとに最も早くエッジ画素を示す1が現れた位置である。
そして、図７の処理によって求められた原稿の左端部および右端部の主走査位置範囲内における図８の処理によって求められた1が格納されているメモリ値ｍ[x][y]が、原稿の先端を示す画素候補である。
【００４６】
〔傾き量算出の詳細処理〕
以下、図３に示した傾き式算出部308が図５Ａに示したS603で実行する傾き量算出の詳細処理を説明する。
傾き式算出部308は、エッジ連続性判断部306によって検出された原稿の先端を示す画素候補を使用する。つまり、傾き式算出部308は、図７の処理によって求められた原稿の左端部および右端部の主走査位置範囲内における図８の処理によって求められた1が格納されているメモリ値ｍ[x][y]を用いる。
ただし、原稿が傾いていた場合、また、原稿の先端の端部が折れていた場合、原稿の先端を示す画素候補における端部付近の値は信用できない。そこで、原稿の先端を示す画素候補における端部から所定範囲の値を削除した残りの値を使用する。
傾き式算出部308は、この値を用いて、一般的な最小２乗法やハフ変換を用いて、以下の１次式を算出する。
【数４】
2018207380.tif 000006
【００４７】
〔傾き補正基準位置算出処理〕
次に、傾き補正基準位置算出部309によるS604の傾き補正基準位置算出の詳細処理を説明する。
傾き補正基準位置算出部309は、傾き補正基準位置座標を、図５AのS602において算出した左端部の主走査座標ｘと、S603で求めた近似直線式（y=d×x+b）から算出する。傾き補正基準位置座標の主走査基準位置座標値はS602において算出されたx0であるため、傾き補正基準位置算出部309は、これらの値を近似直線式[数４]に代入することで副走査基準位置座標y0を求める。
傾き補正基準位置座標〔x0、y0〕=〔x0、d×x0+b〕
【００４８】
〔原稿倍率誤差検出処理〕
図９は、図３に示した倍率誤差係数算出部314が図４に示したS408で実行する原稿倍率誤差検出処理手順を説明するフローチャートである。なお、各ステップは、ＣＰＵ301が記憶された制御プログラムを実行することで実現される。
S1000において、倍率誤差係数算出部314は、S403で判定された原稿サイズをメモリ307から読み出す。
S1001において、倍率誤差係数算出部314は、S406で検出された原稿の傾き量をメモリ307から読み出す。
S1002において、倍率誤差係数算出部314は、S1000、Ｓ1001でメモリ307から読み出した値を基に演算誤差によって生じる主走査倍率誤差係数〔em〕、副走査原稿倍率誤差係数〔es〕を[数５]に基づいて算出する。なお、演算誤差の倍率誤差係数を確定する処理の詳細については後述する。
S1003において、倍率誤差係数算出部314は、倍率誤差係数バックアップメモリ313からバックアップされた原稿読み取りユニットの固有の倍率誤差である主走査方向の倍率誤差係数〔fm〕と副走査倍率誤差係数〔fs〕を読み出す。
【００４９】
S1004において、倍率誤差係数算出部314は、S1002で算出した演算誤差の倍率誤差係数〔em、es〕とS1003でバックアップされた倍率誤差係数〔fm、fs〕から最終的な倍率誤差係数〔gm、gs〕を[数６]に基づいて算出する。そして、倍率誤差係数〔gm、gs〕を倍率誤差係数算出部314に格納する。なお、最終倍率誤差係数を確定する処理の詳細については後述する。
【００５０】
〔倍率誤差係数決定処理〕
以下、倍率誤差係数算出部314がS1002で実行する倍率誤差係数決定の詳細処理を説明する。
はじめに図１０，図１１に示すテーブルを参照して、原稿サイズと原稿傾き量に依存して縮小してしまう演算誤差の画素数の関係を説明する。
主走査方向については、図１０のテーブルに示すように、原稿サイズが大きく（例えばA３）、原稿傾き量（角度）が急なほど、主走査方向の誤差画素数は、指数関数的に増大する。例えば、Ａ５Ｒサイズの原稿が、２°傾いた場合を想定すると、主走査の誤差画素数は、Ａ３サイズの原稿の主走査の誤差画素数を比較すると、Ａ３：Ａ５Ｒで、６８：３４となる。同様に、副走査方向も図１１に示す通り、副走査の誤差画素数も、指数関数的に増加する傾向を示す。
倍率誤差係数算出部314は、図１２，図１３に示すテーブルを保持しており、これらのテーブルに基づき検知した原稿サイズと原稿傾き量の関係で、主走査と副走査の倍率誤差係数〔em、es〕を選択して主走査および副走査方向の倍率誤差係数を算出する。
【００５１】
〔算出する主走査および副走査方向の倍率誤差係数例〕
原稿サイズ〔ｃ〕＝Ａ３、傾き量〔ｄ〕＝2度であった場合は、主走査画素の誤差＝9〔pixel〕、副走査画素の誤差＝13〔pixel〕となる。また、Ａ３原稿の画素数は、7016×9921〔pixel〕である。以上から、倍率誤差係数算出部314は、原稿サイズで特定される主走査および副走査方向の倍率誤差係数em、esを、[数５]に基づいて以下のように算出する。
【数５】
2018207380.tif 000007
【００５２】
〔最終倍率誤差係数確定処理〕
以下、倍率誤差係数算出部314がS1004で実行する最終倍率誤差係数確定処理の詳細について説明する。なお、倍率誤差係数算出部314は、最終倍率誤差係数gm、gsを[数６]に基づいて算出する。
【数６】
2018207380.tif 000008
【００５３】
例えば、倍率誤差係数バックアップメモリ313に格納された原稿読み取りユニットの固有の倍率誤差である主走査方向の倍率誤差係数〔fm〕と副走査倍率誤差係数〔fs〕が、それぞれfm=1.0021、fs=1.0012である場合について説明する。そして、演算誤差主走査倍率誤差係数〔em〕と演算誤差副走査倍率誤差係数〔es〕がS1002の例で示した値とする。そうすると、以下の[数７]の結果が得られる。
【数７】
2018207380.tif 000009
このように、原稿サイズによる倍率誤差と、原稿読み取りユニットの固有の倍率誤差を同時に補正する最終主走査倍率誤差係数：gmと、最終副走査倍率誤差係数：gsが算出される。
これら算出したgmとgsを用いて、後述する幾何補正部310は、読み取られる画像データに対して、原稿サイズによる倍率誤差と、原稿読み取りユニットの固有の倍率誤差を同時に補正した画像データを出力することが可能となる。
【００５４】
〔幾何補正処理〕
図１４は、幾何補正部310がS410で行われる幾何補正処理手順を説明するフローチャートである。なお、各ステップは、ＣＰＵ301が記憶された制御プログラムを実行することで実現される。
S1200において、幾何補正部310は、S1004の処理にて倍率誤差係数算出部314に格納されている最終倍率誤差係数〔gm、gs〕を読み出す。
S1201において、傾き式算出部308がS603の処理により算出して格納した傾き量〔d〕をメモリ307から読み出す。S1202において、傾き補正基準位置算出部309がS604の処理により格納した傾き補正基準位置座標〔x0、y0〕をメモリ307から読み出す。
【００５５】
S1203において、ＣＰＵ301は、ＣＣＤラインセンサ203で読取られ、メモリ307に格納された画像データをメモリ307からS1200〜Ｓ1202の処理にて読み出された値に応じて読み出す。
これにより、幾何補正〔傾き補正、出力画像位置補正、倍率補正〕が実施された出力画像データが得られる。なお、幾何補正処理の詳細については後述する。
【００５６】
図１５は、幾何補正部310がS1203で行われる幾何補正処理手順を説明するフローチャートである。なお、各ステップは、ＣＰＵ301が記憶された制御プログラムを実行することで実現される。
S1300及びS1301において、幾何補正部310は、不図示の主走査カウンタ〔j〕と副走査カウンタ〔i〕の値をそれぞれ１とする初期化を行う。
S1302において、幾何補正部310は、補正後の主走査画像位置座標を算出する。具体的には、幾何補正部310が[数８]に基づいて補正後の主走査画像位置座標値X[j][i]を算出する処理を行う。
【数８】
2018207380.tif 000010
【００５７】
同様に、S1303において，幾何補正部310が[数９]に基づいて補正後の副走査画像位置座標値Y[j][i]を算出する処理を実行する。
【数９】
2018207380.tif 000011
【００５８】
次に、S1305で幾何補正部310は、読取画像データが格納されているメモリ307からステップS1302〜S1303にて算出した座標値X[j][i]、Y[j][i]に対応するアドレスの画像データを読み出す処理を行う。
S1306において，幾何補正部310は、現在の主走査位置座標jが検出した原稿の幅Ｗを超えているかどうかを判断する。具体的には、幾何補正部310は、主走査カウント値jが主走査原稿読取り幅〔width〕より大きいか否か判断している。ここで、現在の主走査カウント値jが主走査原稿読取り幅〔width〕を超えていないと判断した場合は、幾何補正部310が処理をS1304に進め、幾何補正部310が主走査カウント値jを1つインクリメントし、処理をS1302に戻る。
現在の主走査カウント値ｊが主走査原稿読取り幅〔width〕を超えていると幾何補正部310が判断した場合は、幾何補正部310が処理をS1307に進める。
【００５９】
S1307において、幾何補正部310は、副走査カウント値ｉが副走査原稿読取り長〔height〕より大きいか否か判断する。ここで、副走査カウント値ｉが副走査原稿読取り長〔height〕より小さいと幾何補正部310が判断した場合は、S1308ヘ進み、幾何補正部310は、副走査カウント値ｉを１つインクリメントし、処理をS1301へ戻す。
一方、S1307において、幾何補正部310が、副走査カウント値ｉが副走査原稿読取り長〔height〕より大きいと判断した場合、幾何補正部310は、本幾何補正処理を終了する。
【００６０】
本処理によって、図１６に示すように傾いて読取られた原稿の傾きを補正しつつ演算誤差、固体バラツキによる倍率誤差を同時に補正できる。これにより、出力画像において高い幾何品質の画像処理装置を提供できる。
【００６１】
本実施例は、原稿読取装置とその読み取った画像を処理する画像処理装置からなるが、原稿読取装置と画像処理装置は、一体のものだけなく、別々の装置であり互いにネットワーク等により接続されてデータが共有できるものでも実現可能である。
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステムまたは装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えばＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００６２】
301  ＣＰＵ
305  傾き量検知部
306  エッジ連続性判断部
308  傾き量式算出部
309  幾何補正基準位置算出部
310  幾何補正部
314  倍率誤差係数算出部
【図１】
2018207380.tif 000012
【図２】
2018207380.tif 000013
【図３】
2018207380.tif 000014
【図４】
2018207380.tif 000015
【図５Ａ】
2018207380.tif 000016
【図５Ｂ】
2018207380.tif 000017
【図６】
2018207380.tif 000018
【図７】
2018207380.tif 000019
【図８】
2018207380.tif 000020
【図９】
2018207380.tif 000021
【図１０】
2018207380.tif 000022
【図１１】
2018207380.tif 000023
【図１２】
2018207380.tif 000024
【図１３】
2018207380.tif 000025
【図１４】
2018207380.tif 000026
【図１５】
2018207380.tif 000027
【図１６】
2018207380.tif 000028
【図１７】
2018207380.tif 000029