(57)【要約】【課題】センサ特性補正後のデータをＤＲＡＭへ一旦保存することなく、傾き補正を行うことができる画像処理装置を提供すること。【解決手段】本発明は、原稿の画像データを補正して出力する画像処理装置であって、入力された画像データを記憶する記憶手段（図３、２０４）と、前記記憶手段から、ブロック単位で画像データを読み出すデータ転送手段（図３、２０５）と、前記データ転送手段により読み出した画像データに対する回転処理を実行する傾き補正手段（図３、３０１）とを備え、前記傾き補正手段は、前記原稿の傾き角度と、前記傾き補正手段からデータを転送する際のバースト長とに基づき、ブロック間で重複する部分の長さを算出することを特徴とする。【選択図】図３
2015198425.tif 000002
【特許請求の範囲】
【請求項１】
原稿の画像データを補正して出力する画像処理装置であって、
入力された画像データを記憶する記憶手段と、
前記記憶手段から、ブロック単位で画像データを読み出すデータ転送手段と、
前記データ転送手段により読み出した画像データに対する回転処理を実行する傾き補正手段と
を備え、
前記傾き補正手段は、前記原稿の傾き角度と、前記傾き補正手段からデータを転送する際のバースト長とに基づき、ブロック間で重複する部分の長さを算出することを特徴とする画像処理装置。
【請求項２】
前記回転処理を実行した後の画像データを記憶する記憶手段を更に備えることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記データ転送手段は、前記算出したブロック間で重複する部分の長さに基づき、前記ブロック内で処理を開始する画素位置を決定する読み出しアドレスを生成することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記傾き補正手段は、画像の拡大又は縮小の倍率に基づき、前記ブロック間で重複する部分の長さを算出することを特徴とする請求項１乃至３の何れか一項に記載の画像処理装置。
【請求項５】
前記傾き補正手段の後段に空間フィルタ処理を行うフィルタ処理手段を更に備え、
前記傾き補正手段は、前記フィルタ処理手段のフィルタタップ数に基づき、前記ブロック間で重複する部分の長さを算出することを特徴とする請求項１乃至４の何れか一項に記載の画像処理装置。
【請求項６】
前記傾き補正手段は、出力する画像データを構成する画素の位置が、前記ブロックの範囲内にあるか否かを判定することにより、前記回転処理を実行した後の画像データを記憶する記憶手段へ渡す書き込みアドレスを生成することを特徴とする請求項５に記載の画像処理装置。
【請求項７】
原稿の画像データを補正して出力する画像処理方法であって、
入力された画像データを記憶手段に記憶する記憶ステップと、
前記記憶手段から、ブロック単位で画像データを読み出すデータ転送ステップと、
前記データ転送ステップにおいて読み出した画像データに対する回転処理を実行する傾き補正ステップと
を備え、
前記傾き補正ステップにおいて、前記原稿の傾き角度と、前記傾き補正ステップにおいてデータを転送する際のバースト長とに基づき、ブロック間で重複する部分の長さを算出することを特徴とする画像処理方法。
【請求項８】
コンピュータを、請求項１乃至６の何れか一項に記載の画像処理装置として機能させるための、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法、及びプログラムに関する。具体的には、本発明は、画像を任意角回転する画像処理装置、画像処理方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、スキャナや複写機、プリンタ等の画像処理装置において、傾いて読み取った入力画像を補正するといった目的で、任意角の回転処理を行うことが知られている。
【０００３】
例えば、原稿が主走査方向に対して傾いていた場合に任意角の回転処理を行う技術がある。具体的には、原稿の画像データをセンサで読み取り、センサ特性補正後に画像データをＤＲＡＭへ保存する。そして、傾き補正回路が、読み出しアドレスを生成してそのアドレスに従ってＤＲＡＭから保存された画像データを読み出すことで、傾き補正を行い、傾き補正済みの画像データを出力する。
【０００４】
図２は、この従来技術に係る回転処理を実行する画像処理部２００の概略構成を示すブロック図である。
【０００５】
センサ部２０１は、原稿の画像データを読み取り、読み取った画像データをＡＤ変換部２０２へ出力する。また、センサ部２０１は、原稿の画像データを読み取った際に、主走査方向に対する原稿の傾き角度を検出し、検出した情報を傾き補正部２１１へ出力する。
【０００６】
ＡＤ変換部２０２は、センサ部２０１から入力されたデータをＡＤ変換（アナログ−デジタル変換）し、ＡＤ変換後のデータをＤＭＡＣ（direct memory access controller）２０３を介してＤＲＡＭ２０４へ保存する。
【０００７】
センサ特性補正部２０６は、ＤＭＡＣ２０５を介してＤＲＡＭ２０４から画像データを読み込み、予め検出したセンサ特性に従って入力画像データを補正する。そして、センサ特性補正後の画像データを、ＤＭＡＣ２０８を介してＤＲＡＭ２０９へ保存する。
【０００８】
傾き補正部２１１は、ＤＭＡＣ２１０を介してＤＲＡＭ２０９からセンサ特性補正後の画像データを読み込み、センサ部２０１から入力された情報を用いて原稿の傾き角度に基づく傾き補正を行い、傾き補正後の画像データを出力データバッファ２１３に出力する。
【０００９】
このように従来技術では、原稿がずれた状態でスキャンされた場合においても、画像処理部が、画像を任意角回転することで、スキャン時の原稿の傾きを補正している。
【００１０】
また、特許文献１には、回転処理の技術として、画像をブロック単位で領域分割し、入力画像の傾きに応じた角度に従って斜め方向にブロック単位でメモリから画像データを読み出す技術が開示されている。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００５−３５２７０３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかし、図２に示した従来技術では、センサ特性補正と、傾き補正との夫々に対してバッファを設けているため（即ち、ＤＲＡＭ２０９、出力データバッファ２１３）、バッファとして必要となるメモリ量が大きくなるという課題が存在する。また、構成によっては、バッファにおいて、所定の単位未満でのデータ転送における転送効率が低下するという課題も存在する。
【００１３】
本発明は上記のような課題を鑑みてなされたものであり、バッファとして必要となるメモリ量を低減し、所定の単位未満でのテータ転送単位における転送効率が低下しない画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明は、原稿の画像データを補正して出力する画像処理装置であって、入力された画像データを記憶する記憶手段と、前記記憶手段から、ブロック単位で画像データを読み出すデータ転送手段と、前記データ転送手段により読み出した画像データに対する回転処理を実行する傾き補正手段とを備え、前記傾き補正手段は、前記原稿の傾き角度と、前記傾き補正手段からデータを転送する際のバースト長とに基づき、ブロック間で重複する部分の長さを算出することを特徴とする。
【発明の効果】
【００１５】
本発明では、センサ特性補正部と、傾き補正部とにおける処理単位（分割画像領域）を統一する。これにより、センサ特性補正後のデータをＤＲＡＭへ一旦保存することなく、傾き補正を行うことができる。
【００１６】
また、本発明では、当該処理単位を、原稿の傾きと、記憶手段における所定の読み出し単位とに基づく分割画像領域とする。これにより、前記記憶手段からの読み出し効率を向上してデータ転送することができる。従って、ＤＲＡＭへのアクセス回数を減らして必要となるメモリ容量を低減でき、従来よりも小さなメモリサイズで任意角回転を実現できる。
【図面の簡単な説明】
【００１７】
【図１】読取装置のセンサ部と、原稿との位置関係を説明する図である。
【図２】従来技術に係る画像処理部の概略構成を示すブロック図である。
【図３】実施例１に係る画像処理部の概略構成を示すブロック図である。
【図４】実施例１に係る傾き補正部３０１へ画像データが入力される際の画素の順序と、傾き補正部３０１が傾き補正した後で画像データを出力する際の画素の順序とを示した図である。
【図５】実施例１に係る入力画像データから出力画像データを得る処理を説明する図である。
【図６】実施例１に係る入力ブロック間の重複部分を説明する拡大図である。
【図７】実施例１に係るブロック状のバースト転送単位について説明する図である。
【図８】実施例１に係るブロック状のバースト転送単位毎のバースト転送の際の、のりしろ幅及びのりしろ高さの計算について説明する図である。
【図９】実施例３に係る画像処理部の概略構成を示すブロック図である。
【図１０】実施例３に係るのりしろ幅及びのりしろ高さの条件式について説明する図である。
【図１１】実施例３に係る境界算出処理について説明する流れ図である。
【発明を実施するための形態】
【００１８】
［実施例１］
（センサ部と、原稿との位置関係）
図１（ａ）は、読取装置のセンサ部１０１と、原稿１０２との位置関係を説明する図である。読取装置は、センサ部１０１と、原稿１０２との副走査方向（Ｙ軸方向）の相対位置を変化させることにより、原稿を読み取る。
【００１９】
本実施例では、図１（ａ）に示すように、センサ部１０１を固定し、不図示の搬送機構によって原稿１０２を原稿搬送方向に搬送しながら読み取っており、直線状のセンサユニットを用いて平面状の画像を描写する画像データを取得するものとして説明する。但し、本発明は、原稿台に原稿を固定して、センサユニットの位置を変えながら画像データを読み取る構成に対しても同様に適用可能である。
【００２０】
図１（ａ）には、原稿１０２を基準とする第１の座標系であるｘｙ座標系と、読取装置（センサ部１０１）を基準とする第２の座標系であるＸＹ座標系とが示されている。以下、第１の座標系と、第２の座標系との関係について説明する。
【００２１】
理想的には、原稿１０２は、何れかの辺が副走査方向（Ｙ軸方向）に沿うように配置されるのが望ましいが、現実には、理想と異なる位置及び角度で配置される場合が多い。このとき、原稿位置ずれ（ｘ０，ｙ０）及び原稿傾き角（θ）が生じ、第１の座標系と、第２の座標系とは一致せず、特に大型の原稿で顕著であるが、微小な角度のずれであっても、原稿の両端を比較すると大きなずれとなる恐れがある。第１の座標系の座標値（ｘ，ｙ）は、図１（ｂ）に示す関係式に従って、第２の座標系の座標値（Ｘ，Ｙ）に変換可能である。
【００２２】
（画像処理部）
図３は、本実施例に係る読取装置が備える画像処理部３００の概略構成を示すブロック図である。
【００２３】
画像処理部３００は、以下に説明するように、図１に示した第１の座標系（ｘｙ座標系）の各画素位置における画素値を求めることで、原稿の傾き補正を実行する。
【００２４】
画像処理部３００は、ＡＤ変換部２０２と、ＤＭＡＣ２０３と、ＤＲＡＭ２０４と、ＤＭＡＣ２０５と、センサ特性補正部２０６と、傾き補正部３０１とから構成される。以下、これらの構成における処理を説明する。
【００２５】
センサ部２０１は、原稿の読取データのほか、原稿位置ずれや原稿傾き角度といった原稿配置情報を取得する。
【００２６】
ＡＤ変換部２０２は、センサ部２０１で取得した原稿の読取データをＡＤ変換し、ＡＤ変換後の画像データを構成する画素毎の画素値をＤＭＡＣ２０３によってＤＲＡＭ２０４へ保存する。
【００２７】
ＤＲＡＭ２０４は、センサ部２０１で取得した原稿の画像データを構成する画素毎の画素値を一時的に格納する。
【００２８】
センサ特性補正部２０６は、例えば、センサ部２０１内のどの素子で読み取った画素値か、あるいは、ＡＤ変換部２０２内のどのアンプで処理したかに応じて異なる特性を補正して画素値を正規化する。センサ特性補正部２０６による補正パラメータは、読取装置基準の第２の座標系（ＸＹ座標系）、特に主走査方向（Ｘ軸方向）に応じて決まる。従って、センサ特性補正を座標変換前に実行するため、センサ特性補正部２０６は、後述の傾き補正部３０１の前段に配置している。
【００２９】
傾き補正部３０１は、センサ部２０１から取得した原稿配置情報に基づき画像の傾きを補正し、原稿１０２を基準とする第１の座標系（ｘｙ座標系）における各座標値に対応する画素値を求める。傾き補正部３０１によって、第１の座標系における各画素位置に対応する画素値が得られる。傾き補正部３０１については、（傾き補正部）の項目で詳細に説明する。
【００３０】
出力データバッファ２１３は、傾き補正部３０１によって得られた傾き補正済みの画像データを格納する。尚、出力データバッファ２１３は、ＤＲＡＭ２０４と異なるオフセットアドレスを設定して共通のメモリデバイスを使用するように実装することも可能である。
【００３１】
（傾き補正部）
次に、傾き補正部３０１の詳細を説明する。図４（ａ）は、傾き補正部３０１へ画像データが入力される際の画素の順序を示した図であり、図４（ｂ）は、傾き補正部３０１が傾き補正した後で画像データを出力する際の画素の順序を示した図である。以下、説明を簡単にするため、入力ブロック４０２における処理に注目して説明する。尚、他の入力ブロック４０１、４０３における処理についても、入力ブロック４０２における処理と同様である。
【００３２】
図４（ａ）には、傾き補正部３０１へ入力される入力ブロックの入力順序（即ち、入力１ブロック目、入力２ブロック目、入力３ブロック目・・・）と、入力ブロック内の画素の入力順序とが示されている。各入力ブロックの辺は、Ｘ軸方向又はＹ軸方向に平行であり、入力ブロックの大きさ（面積）は、傾き補正部３０１の内部バッファの大きさに応じて決まる。入力ブロックの幅を、ＤＲＡＭ２０４におけるバースト転送の単位（本明細書では「バースト転送単位」と表記する）の整数倍とすることで、データ転送効率が高まる。
【００３３】
原稿１０２は、センサ部の主走査方向（Ｘ軸方向）に対して、角度θだけ傾いて配置されている。傾き補正部３０１は、ブロック単位でＤＭＡＣ２０５と同期した処理を行う。具体的には、傾き補正部３０１は、ブロック単位で画像データが入力されるように読み出しアドレス３０２を生成し、生成した読み出しアドレス３０２をＤＭＡＣ２０５に渡して設定する。ＤＭＡＣ２０５は、設定された読み出しアドレス３０２に従ってＤＲＡＭ２０４から画像データを読み出してセンサ特性補正部２０６へ出力する。そして、センサ特性補正部２０６は、画像データを構成する各画素についてセンサ特性の補正を行い、センサ特性補正済みの画素値を傾き補正部３０１に渡す。
【００３４】
図４（ａ）中の符号４０４は、傾き補正部３０１へ入力されるブロック４０２の先頭の画素を示している。ＤＭＡＣ２０５は、画素４０４を先頭に、矢印４０５で示す順で入力ブロック４０２内の各画素値をＤＲＡＭ２０４から読み出す。
【００３５】
互いに隣接する入力ブロック間には、重複して画像データを読み出す領域がある。例えば、入力ブロック４０１及び入力ブロック４０２に対しては、のりしろ幅４０６に相当する重複領域がある。のりしろ幅４０６に関しては、（のりしろ幅）の項目で詳細に説明する。
【００３６】
図４（ｂ）には、傾き補正部３０１が傾き補正した後で画像データを出力する際の画素の順序が示されている。
【００３７】
図４（ｂ）中の符号４０７は、入力ブロック４０２に対する処理結果として、傾き補正部３０１が出力する先頭の画素を示している。傾き補正部３０１は、画素４０７を出力した後は、矢印４０８に示す方向に１ライン分の画素を出力していく。このときの矢印４０８で示すライン方向は、原稿１０２を基準とする第１の座標系（ｘｙ座標系）におけるｘ軸方向である。
【００３８】
このように、傾き補正部３０１は、原稿１０２を基準とする第１の座標系（ｘｙ座標系）における画素位置と、処理順の画素値とを、読取装置を基準とする第２の座標系（ＸＹ座標系）における画素位置と、画素値とから求めている。この座標変換では、既知の画像補間法を用いれば良い。一般的に広く利用されている方法としてバイリニア法、バイキュービック法等が挙げられる。また、補間せずに最近傍に位置する画素の画素値を選択しても良い。
【００３９】
図４（ｂ）において、二点鎖線４０９及び二点鎖線４１０は、各入力ブロックに対応して出力すべき傾き補正後の画像データを構成する画素群を含んだ領域の境界を示している。二点鎖線４０９と、二点鎖線４１０との間の領域が、入力ブロック４０２に対応して求めるべき出力画像データを構成する画素群を含んだ領域である。詳細は、（出力画像データ取得処理）の項目で別途説明する。
【００４０】
（出力画像データ取得処理）
図５は、入力画像データから出力画像データを得る処理を説明する図である。図５を用いて、入力画像データから出力画像データを得る処理と、のりしろ幅の概要とについて、説明する。
【００４１】
図５は、図４の入力ブロック４０１と、入力ブロック４０２との重複部分（のりしろ幅４０６）を拡大した図である。尚、図５では、図面を明瞭にするために図４よりも原稿の傾き角度θを大きく示している。
【００４２】
読取装置基準の第２の座標系（ＸＹ座標系）で定義される、入力グリッド５０１の各格子点に位置する三角記号（△）は、傾き補正部３０１へ入力される画像データを構成する画素を示している。
【００４３】
原稿１０２を基準とする第１の座標系（ｘｙ座標系）で定義される、出力グリッド５０２は、傾き補正部３０１が出力する画像データを構成する画素毎の位置を示している。出力グリッド５０２の各格子点に位置する丸記号（●，○すべて）は、傾き補正部３０１が出力する画像データを構成する画素を示している。
【００４４】
出力グリッド５０２の各格子点位置に対応する出力画素値が計算できれば、回転後の出力画素値が得られる。より具体的には、出力座標グリッドの各格子点位置を計算すること、及び、当該格子点位置に対応する出力画素値を、入力画素値を用いた補間等の計算により求めることで、任意角回転処理が可能となる。各格子点位置における計算については、別途説明する。
【００４５】
符号５０３は、入力グリッド５０１におけるバースト長（本明細書では、「入力バースト長」と略記される）を示しており、本実施例では、バースト転送単位４［画素／バースト］の場合を低に挙げて説明する。即ち、ＤＭＡＣ２０５は、画像データをＤＲＡＭ２０４からバースト転送で読み込む際に、１バースト（４画素に相当）毎に読み込む。このとき、入力グリッド５０１におけるバースト転送単位の距離を示す入力バースト長は、入力グリッド５０１における３画素分の距離に相当する。
【００４６】
符号５０４及び符号５０５は、出力グリッド５０２におけるバースト長（本明細書では、「出力バースト長」と略記される）を示しており、本実施例では、バースト転送単位４［画素／バースト］の場合を例に挙げて説明する。即ち、傾き補正部３０１は、傾き補正後の画像データをバースト転送で出力データバッファ２１３へ書き込む際に、１バースト（４画素に相当）毎に書きこむ。このとき、出力グリッド５０２におけるバースト転送単位の距離を示す出力バースト長は、出力グリッド５０２における３画素分の距離に相当する。
【００４７】
（出力画像データ取得処理−傾き補正部への画像データ入力）
以下、傾き補正部３０１への画像データ入力について説明する。上で説明したように、入力ブロック４０１内の画素が、Ｘ軸方向に沿って１ラインずつ傾き補正部３０１へ入力される。
【００４８】
このとき、入力される画素は、図５の三角記号（△）によって示されており、入力ブロック４０１において、傾き補正部３０１へ入力される１ライン目の最後の１バースト（４画素）は、図５の画素５０６から開始しＸ軸方向に沿って進む４画素となる。
【００４９】
以降、入力ブロック４０１において最後のラインまで入力されると、傾き補正部３０１は、入力ブロック４０１に対応する出力画素値を求める。このとき、ダブルバッファ構成として、傾き補正部３０１が入力ブロック４０１に対する処理を実行する間に、次の入力ブロック４０２内の画像データを準備しておいても良い。
【００５０】
（出力画像データ取得処理−傾き補正部からの画像データ出力）
次に、傾き補正部３０１からのデータ出力について説明する。図５において、出力グリッド５０２の各格子点に位置する丸記号のうち、黒丸（●）が入力ブロック４０１に対応するものであり、白丸（○）が入力ブロック４０２に対応するものである。
【００５１】
入力ブロック４０１における最初のラインに対して、傾き補正部３０１が出力する最後の１バースト（４画素）は、画素５０７から開始しｘ軸方向に沿って進む４画素となる。
【００５２】
入力ブロック４０１に対して、傾き補正部３０１が出力する２ライン目の最後の１バースト（４画素）は、画素５０８から開始しｘ軸方向に沿って進む４画素となる。以降、ｙ軸方向へ１ラインずつ進みながら、同様のｘ軸方向に進む出力処理を順次行っていく。
【００５３】
ここで出力画素５０９に注目すると、出力画素５０９は、入力ブロック４０１内に位置しているが、入力ブロック４０２に対応する出力画素である。これは、出力画素５０９が出力される１バーストは、矢印５０５で示した長さに相当し、出力画素５０９を含む１バーストの４画素目の出力画素５１０が、入力ブロック４０１の範囲を超えて、入力ブロック４０２内に位置しているためである。従って、出力画素５０９を含む１バーストの出力は、入力ブロック４０２に対する処理結果となる。
【００５４】
一方で、出力画素５１３に注目すると、出力画素５１３は、入力ブロック４０１に対応する出力画素である。これは、出力画素５１３を含む１バーストの４画素目の出力画素５１４が、入力ブロック４０１の範囲内であり、入力ブロック４０１に対する計算結果として求めることが可能なためである。より正確には、出力画素５１４を出力する際に補間演算で必要となる、出力画素５１４の周囲の入力４画素が、入力ブロック４０１の範囲内であるためである。この詳細は、図６を用いて別途説明する。
【００５５】
出力画素５１１は、出力画素５０９と同様に、入力ブロック４０２に対する処理結果として出力される。但し、出力画素５１１の次のラインの出力画素５１３は、入力ブロック４０１に対する処理結果として出力される。
【００５６】
よって、のりしろ幅４０６は、入力ブロック４０１に対する処理結果として出力画素５１３及び出力画素５１４を求め、入力ブロック４０２に対する処理結果として出力画素５１１及び出力画素５１２を求めることが可能なように設定する必要がある。
【００５７】
（のりしろ幅）
図６を用いてのりしろ幅についてより詳細に説明する。図６は、図５の出力画素５１１近傍を拡大した拡大図である。以下、説明を簡単にするために、出力画素値を求めるために最近傍法を用いる場合を例に挙げて説明する。
【００５８】
出力画素５１２の画素値は、入力グリッド５０１上に位置する入力画素５１８〜５２１のうちの、出力画素５１２の最近傍に位置する入力画素５１８の画素値である。入力画素５１８は、入力ブロック４０１に含まれているが、出力画素５１２の画素位置が入力ブロック４０１の範囲を超えているため、出力画素５１１から出力画素５１２にかけての１バーストは、入力ブロック４０２に対する処理結果として出力されるものとする。
【００５９】
一方、出力画素５１４の画素値は、入力グリッド５０１上に位置する入力画素５１５〜５１８のうちの、出力画素５１４の最近傍に位置する入力画素５１７の画素値である。出力画素５１４の画素位置は、入力ブロック４０１の範囲内であるため、出力画素５１３から出力画素５１４にかけての１バーストは、入力ブロック４０２に先行する入力ブロック４０１に対する処理結果として出力されるものとする。
【００６０】
尚、出力画素５１３から出力画素５１４までの１バーストのように、１バーストの先頭画素と、末尾画素とがのりしろ幅４０６内に収まる場合は、当該１バーストは、入力ブロック４０１と、入力ブロック４０２との何れに対する処理結果として出力可能である。従って、出力画素５１３から出力画素５１４までの１バーストを、入力ブロック４０１に後続する入力ブロック４０２に対する処理結果として出力する構成としても良い。
【００６１】
出力画素５１３と、出力画素５１４とを結ぶ線分は、出力グリッド５０２における出力バースト長５０５分の長さを有する線分である。この線分は、座標変換すると、入力グリッド５０１における、線分５２６に対応する。従って、出力バースト長５０５に対する、入力グリッド５０１における長さ（入力バースト長）は、出力バースト長×ｃｏｓθに等しい。
【００６２】
従って、のりしろ幅は、入力グリッド５０１（ＸＹ座標系）において以下の（式１）を満たすようにすれば、不足することはない。尚、のりしろ幅は、画素間距離を１としたとき、画素数の整数倍と等しい値である必要があるため、端数が出た場合には条件を満たす整数値に切り上げてのりしろ幅を算出する。また、画像データ入力側においてバースト読み出しアクセスを実行する場合は、データ転送効率向上のために、のりしろ幅を、入力バースト長の単位に切り上げる必要がある。  
のりしろ幅≧出力バースト長×ｃｏｓθ・・・（式１）
但し、出力グリッド５０２の入力グリッド５０１に対する位置や、入力ブロックの大きさによっては、全ての場合において上記（式１）を満たすのりしろ幅が必要とは限らない。のりしろ幅に関して必要最小限の値が必要であれば、ブロック境界付近の各画素位置を座標変換することにより、のりしろ幅を求めることは可能である。
【００６３】
別の実装形態として、補間処理を伴う補間法により出力画素値を求める場合は、以下のバイリニア補間による例のように、のりしろ幅を補間処理で使用する空間フィルタの（Ｘ軸方向の）タップ数に応じて増やす必要がある。ここで、タップ数とは、出力画素値を算出するために、注目する出力画素を中心として参照される周辺入力画素の数を表している。
【００６４】
出力画素５１１の画素値は、入力グリッド５０１上かつ出力画素５１１周辺に位置する入力画素５２２〜５２５から求める。また、出力画素５１２の画素値は、入力グリッド５０１上かつ出力画素５１２周辺に位置する入力画素５１８〜５２１から求める。このように、補間法では、前述の最近傍法の場合と比較して、入力グリッド５０１において１画素分大きな範囲にわたって入力画素を参照することになる。このとき、参照する各入力画素は最初から入力グリッド５０１上に配置されているため、のりしろ幅の補間フィルタのタップ数に対応する増分は座標変換の対象とはならない。よって、のりしろ幅が満たすべき条件は以下の（式２）で表現できる。
のりしろ幅≧出力バースト長×ｃｏｓθ＋（フィルタタップ数−１）・・・（式２）
また、のりしろ高さについても同様に、以下の（式３）に従って求めることが可能である。但し、（式３）で使用するフィルタタップ数は高さ方向（Ｙ軸方向）のものとなる。
のりしろ高さ≧出力バースト長×ｓｉｎθ＋（フィルタタップ数−１）・・・（式３）
さらに別の実装形態として、図７に示すようにアクセスに有利なブロック状の画素群と、メモリアドレスとの対応で、バースト転送単位を幅２画素、高さ２画素のように２次元の構造とする場合がある。図７（ｂ）において、同一の記号で示した画素が、１回のバースト転送でアクセス可能な画素である。
【００６５】
図７の例では、１画素当たりの情報量を３２ビットとしているため、画素位置（ｘ，ｙ）からバイトアドレスとしてメモリアドレスａを算出する際に、図７（ａ）に示すように、メモリアドレスａの下位２ビットは使用せず、画素位置によらずに０としている。
【００６６】
図８（ａ）に、バースト転送単位がブロック状であり、１回のバースト転送に対応する入力画像データにおける領域の幅及び高さが共に１より大きい場合の、のりしろ幅８０１及びのりしろ高さ８０２を示す。のりしろ幅８０１及びのりしろ高さ８０２は、図８（ａ）に示すように、バースト転送領域の幅ｂｘ及び高さｂｙ並びに原稿傾き角度θを用いて計算可能である。尚、図８（ａ）に示す式では、補間のための空間フィルタを考慮していないが、補間処理の場合には、前述のように補間フィルタのタップ数に応じた画素数を加算すれば良い。また、図８内に示した式の角度θは、反時計回りを正とする。即ち、図８に示したθは負の値とする。
【００６７】
上で説明した通り、さらに別の実施形態によれば、傾き補正部３０１は、原稿傾き角度θと、出力バースト長と、補間フィルタのタップ数とに基づいてのりしろ幅及びのりしろ高さを求める。特に、読取動作の都度、原稿傾き角度θに応じてのりしろ幅及びのりしろ高さを算出する。そして、算出したのりしろ幅及びのりしろ高さを有するのりしろを考慮した分割領域に基づいてＤＲＡＭ２０４からデータを読み出してデータ転送を行う。
【００６８】
上述した本実施例によるデータ転送を行うことで、センサ特性補正後のデータをＤＲＡＭへ一旦保存することなく、傾き補正を行うことができ、センサ特性補正及び傾き補正を一括処理することができる。また、出力画素値がバースト単位でまとめてアクセスされることで、出力データバッファ２１３のデータ転送効率の向上が可能である。
【００６９】
よって、バッファメモリを集約し、ＤＲＡＭへのアクセス回数を減らして、必要となるメモリ容量を削減できる。
【００７０】
以上、本実施例では、傾き補正部３０１がバースト転送単位毎に出力データバッファ２１３に画像データを出力する場合を例に挙げて説明したが、出力データの書き込み先は、ＤＲＡＭに限定されるものではない。例えば、ハードディクス装置に書き込む場合の論理セクタ若しくはクラスタ、又は、フラッシュメモリデバイスに書き込む場合に、ブロック毎に書き込む場合でも同様である。つまり、所定単位の画素数をまとめて書き込むと好適である場合に共通して、本発明を適用可能である。
【００７１】
［実施例２］
実施例１において用いる座標変換のパラメータを変更することで、傾き補正時に併せて、変倍処理が実行可能となる。具体的には、実施例１で説明した図１（ｂ）に示す座標変換式に代えて、図１（ｃ）に示す式を使用することで、ｘ軸方向にａ倍、ｙ軸方向にｂ倍とする変倍処理を実行ことができる。但し、図１（ｃ）の式において、拡大・縮小のパラメータａ，ｂはいずれも０ではないものとする。パラメータａ，ｂのいずれかでも０となった場合は、画像データが縮退してしまうので実用性に乏しい。
【００７２】
図８（ｂ）に、実施例１で説明した図８（ａ）の場合に対して、ａ＝１．５, ｂ＝１の拡大率を適用して、ｘ軸方向に１．５倍拡大した例を示す。但し、便宜上、出力画素についてｘ軸だけ縮尺を変えて、１．５倍の画素密度で示している。この場合の、のりしろ幅８０３及びのりしろ高さ８０４は、図８（ｂ）に示すように、バースト転送領域の幅ｂｘ及び高さｂｙ並びに回転角θに加えて、拡大・縮小の倍率ａ，ｂを加味することによって計算可能である。
【００７３】
以上のように、のりしろ幅及びのりしろ高さを設定することで、本発明は、傾き補正と同時に拡大処理、若しくは、縮小処理を行う場合にも対応可能である。
【００７４】
［実施例３］
本実施例では、図９に示すように、画像処理部９００において、傾き補正部３０１の後段に、空間フィルタ処理を行うフィルタ処理部９０１を設けている。また、本実施例では、実施例１で使用した出力データバッファ２１３（図３を参照）に代えて、ＤＲＡＭ２０４の所定領域を出力画像データの格納に割り当てる。
【００７５】
本実施例では、傾き補正部３０１は、出力座標系の各ラインについて、図４（ｂ）において二点鎖線４０９及び二点鎖線４１０で示されるような境界を算出し、当該算出した境界に基づいてＤＭＡＣ９０２に対して書き込みアドレスを指示する。境界算出処理の詳細については後述する。
【００７６】
図１０に、本実施例に係るのりしろ幅及びのりしろ高さの条件式を示す。本実施例では、フィルタ処理部９０１では原稿基準の第１の座標系（ｘｙ座標系）に基づいて画像処理を行う。従って、フィルタ処理部９０１の後段で使用する、読取装置基準の第２の座標系（ＸＹ座標系）における隣接する入力ブロック間ののりしろ幅及びのりしろ高さを求めるためには座標変換が必要である。
【００７７】
（境界算出処理）
図１１は、傾き補正部３０１によって実行される境界算出処理の内容を示す流れ図である。当該処理では、出力の座標系における、ある出力予定位置が、入力ブロック内にあるか否かを判定することにより、境界位置を決定する。図４（ｂ）に示したように、同一の入力ブロック内であっても、出力のラインが変わることで境界位置がずれる場合がある（二点鎖線４０９及び二点鎖線４１０を参照）。このことを考慮して、本実施例による境界算出処理では、ライン毎に境界位置を求める。傾き補正部３０１は１ブロック分の処理にあたって、図１１に示す境界算出処理を必要数だけ（具体的には出力のライン数だけ）繰り返す。
【００７８】
ステップＳ１１０１において、処理対象ブロックの注目ラインにおけるライン開始位置を取得する。ライン開始位置は、原稿基準の第１の座標系（ｘｙ座標系）における座標値である。先頭のブロックにおいては、所定の座標位置をライン開始位置とする。また、他のブロックにおいては、先行するブロックの処理の際に、後述のステップＳ１１０７で保存したライン終了位置の次の位置をライン開始位置とする。
【００７９】
ステップＳ１１０２において、出力予定位置及び暫定終了位置を初期値に設定する。このとき、出力予定位置及び暫定終了位置を共に、ステップＳ１１０１で取得したライン開始位置と同じ値に設定する。
【００８０】
ステップＳ１１０３において、座標変換処理を実行する。具体的には、原稿基準の第１の座標系（ｘｙ座標系）における出力予定位置を、図１（ａ）又は図１（ｂ）に示すような座標変換式を用いて、読取装置基準の第２の座標系（ＸＹ座標系）における値に変換する。このとき、出力の基準となる位置の他、フィルタ処理部９０１において参照する画素があれば、当該参照する画素全ての位置についても座標変換し、後続ステップＳ１１０４において、当該座標変換により取得した位置に基づき、全ての画素について判定すれば良い。
【００８１】
ステップＳ１１０４において、入力位置判定処理を実行する。具体的には、第２の座標系（ＸＹ座標系）に変換した出力予定位置が、入力ブロックの範囲内であるか否かを判定する。判定の結果、第２の座標系（ＸＹ座標系）に変換した出力予定位置が入力ブロックの範囲内である場合には、ステップＳ１１０５に進み、そうでない場合には、ステップＳ１１０６に進む。但し、傾き補正部３０１で補間処理により出力画素値を決定する場合には、補間処理で参照する画素が全て入力ブロックの範囲内にあるか否かを判定することにより入力位置判定処理を実行する。
【００８２】
ステップＳ１１０５において、暫定終了位置及び出力予定位置を更新する。具体的には、入力ブロックの範囲内であると判定した出力予定位置を、新たな暫定終了位置とする。また、出力予定位置は、注目ライン内において次の出力バースト長だけ進んだ位置に設定する。ステップＳ１１０５に続いて、ステップＳ１１０３へと戻り、ステップＳ１１０４において出力予定位置が入力ブロックの範囲外と判定されるまで、ステップＳ１１０３からステップＳ１１０５までの処理を繰り返す。
【００８３】
ステップＳ１１０６において、暫定終了位置をライン終了位置として設定し、また、後続のブロックの処理において参照するために、注目ラインにおけるライン終了位置として保存する。
【００８４】
ステップＳ１１０７において、ステップＳ１１０１で取得したライン開始位置と、ステップＳ１１０６で設定したライン終了位置とに基づいて、ＤＭＡＣ９０２に対してＤＲＡＭ２０４への書き込みアドレスを設定する。
【００８５】
以上のように、のりしろ幅及びのりしろ高さを計算し、また、境界位置を決定することにより、傾き補正部３０１の後段にフィルタ処理部９０１を配置する場合にも、途中に大きな画像バッファを設けることなく一括で処理可能である。
【００８６】
［その他の実施例］
本発明の目的は、前述した実施例の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体を、システム又は装置に供給し、システム又は装置（具体的にはＣＰＵやＭＰＵ）がプログラムコードを読み出し実行することによっても、達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することとなり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００８７】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ等を用いることができる。
【００８８】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施例の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳが実際の処理の一部又は全部を行っても良い。ＯＳの処理によって前述した実施例の機能が実現される場合も、本発明の範囲に含まれる。
【００８９】
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、処理が実行されても良い。また、機能拡張ボードや機能拡張ユニットに備わるＣＰＵが実際の処理の一部又は全部を実行しても良く、機能拡張ボードや機能拡張ユニットに備わるＣＰＵの実行処理によって前述した実施例の機能が実現される場合も、本発明の範囲に含まれる。
【００９０】
また、前述の実施例の機能を実現するためのプログラムコードを、１つのコンピュータ（ＣＰＵ、ＭＰＵ）で実行しても良いし、複数のコンピュータが協働することによって実行しても良い。更に、プログラムコードをコンピュータが実行しても良いし、プログラムコードの機能を実現するための回路等のハードウエアを設けても良い。または、プログラムコードの一部をハードウエアで実現し、残りの部分をコンピュータが実行しても良い。
【図１】
2015198425.tif 000003
【図２】
2015198425.tif 000004
【図３】
2015198425.tif 000005
【図４】
2015198425.tif 000006
【図５】
2015198425.tif 000007
【図６】
2015198425.tif 000008
【図７】
2015198425.tif 000009
【図８】
2015198425.tif 000010
【図９】
2015198425.tif 000011
【図１０】
2015198425.tif 000012
【図１１】
2015198425.tif 000013