以下、図面を参照して本発明に係る実施の形態を詳細に説明する。ただし、発明の範囲は、図示例に限定されない。
先ず、図1〜図4を参照して、本実施の形態のデジタル複写機1の装置構成を説明する。図1に、本実施の形態のデジタル複写機1の機械的構成を示す。
デジタル複写機1は、複写機本体1Aと、原稿搬送部20と、を備えて構成される。複写機本体1Aに対して、原稿搬送部20は、複写機本体1Aとは別ユニットとして形成されて取り付けられるものとする。
複写機本体1Aは、画像読取装置としてのスキャナ10を備える。スキャナ10は、原稿載置台11と、原稿光源12と、ミラー13と、結像レンズ14と、ラインセンサ15と、を備えて構成される。また、複写機本体1Aは、後述するように、本体制御部60、操作部70、プリンタ部50等を備えて構成される。
原稿載置台11は、画像読み取り対象の原稿が載置され、また、移動する原稿を読み取る場合に、原稿の通路及び原稿の照明位置を形成している。原稿光源12は、原稿載置台11に沿って移動自在に光を出力する。ミラー13は、原稿光源12とともに移動自在である。結像レンズ14は、入射光をラインセンサ15に結像する。ラインセンサ15は、CCD(Charge Coupled Devices)等で構成され、入射された光信号を電気信号に変換して出力する。
原稿光源12から出力された光は、原稿で反射されて、ミラー13及び結像レンズ14を経てラインセンサ15上に入射される。
原稿搬送部20は、給紙トレイ21と、給紙ローラ22と、ローラ23と、排紙ローラ24と、排紙トレイ25と、センサ26a,26bと、を備える。
給紙トレイ21は、画像読み取り対象の原稿を載置する。給紙ローラ22は、給紙トレイ21上に載置された原稿を1枚づつ搬送する。ローラ23は、給紙ローラ22により搬送された原稿を読取位置に搬送し、読取位置において一定方向に搬送する。排紙ローラ24は、ローラ23により搬送された原稿を排出する。排紙トレイ25は、排出された原稿を載置させる。
センサ26a,26bは、それぞれ、投光器と受光器とから構成され、原稿の通過を検知する。センサ26a,26bは、給紙ローラ22の直後に、原稿搬送路を挟んで原稿搬送方向に直角に設けられている。
給紙トレイ21上の原稿は給紙ローラ22により一枚づつ分離されて、ローラ23、排紙ローラ24を通過して排紙トレイ25に送信される。
原稿載置台11とローラ23で形成される読取位置を通過する原稿をラインセンサ15がそのラインの方向である主走査方向、及び原稿の移動方向である副走査方向に走査して、原稿移動方式による画像読取が行われる。
デジタル複写機1は、原稿静止方式による画像読取も行うことができる。即ち、原稿載置台11に載置された原稿を原稿光源12及びミラー13を移動しつつ画像読取を行うこともできる。
センサ26a,26bは、原稿搬送路を搬送される原稿の先端の角度、即ち、原稿が原稿搬送部20内における原稿の走行中の傾きを検知する。なお、原稿の傾きを検知するセンサとしては、周知の任意のものを使用することができる。
図2に、画像読取装置2の電気的構成を示す。図2に示すように、画像読取装置2は、原稿画像を読み取る装置であり、デジタル複写機1に設けられる。
図2に示すように、画像読取装置2は、スキャナ10と、原稿搬送部20と、画像処理部30と、傾き検出ROM(Read Only Memory)40と、を備えて構成される。また、デジタル複写機1は、画像読取装置2とは別に、プリンタ部50と、本体制御部60と、操作部70と、を備えて構成される。
スキャナ10は、原稿の画像を読み取りその画像データを出力する。スキャナ10は、ラインセンサ15等の他に、アンプ16と、A/Dコンバータ17と、備えて構成される。アンプ16は、ラインセンサ15から出力される電気信号を増幅する。A/Dコンバータ17は、アンプ16から出力されるアナログの電気信号をデジタルの画像データに変換して出力する。
原稿搬送部20は、センサ26a,26b等の他に、アンプ27a,27bと、コンパレータ28a,28bと、時間差計測部29と、を備えて構成される。アンプ27a,27bは、センサ26a,26bの出力を増幅する。コンパレータ28a,28bは、アンプ27a,27bの出力を閾値と比較し、原稿の先端の通過時間に対応した信号を出力する。時間差計測部29は、コンパレータ28a,28bの出力間の時間差を算出して出力する。
原稿搬送部20において、搬送される原稿の主走査方向の傾き角度θの情報は、センサ26a,26bにより検知され、時間差計測部29において、時間差sが計算される。センサ26a,26b間の距離をd、原稿の搬送速度をvとすれば、傾き角度θは、次式(1)で表される。
θ=tan−1(s・v/d) …(1)
傾き検出ROM40には、時間差sと、傾き角度θと、次式(2),(3)で表されるstairH及びstairVとの関係が蓄えられている。
stairH=(int)(1/tanθ) …(2)
stairV=(int)(1/tanδ) …(3)
式(1),(2)において、(int)は小数点以下を切り捨てる整数化を意味し、δは後に説明する主走査シフト処理によって、原稿の傾き角度θが変換された角度であり、次式(4)で表される。
δ=tan−1{1/(tanθ+1/tanθ)} …(4)
stairHは、ある画素を原点としたとき、画像の傾きをなくするために、該原点から副走査方向に何画素離れた画素を主走査方向に1画素シフトする必要があるかを表す画素数である。stairVは、ある画素を原点としたとき、画像の傾きをなくするために、該原点から主走査方向に何画素離れた画素を副走査方向に1画素シフトする必要があるかを表す画素数である。
画像処理部30は、スキャナ10から出力された画像データに各種画像処理を施す。画像処理部30は、画像処理実行部31と、傾き補正処理部32と、画像処理制御部33と、を備えて構成される。画像処理実行部31は、画像処理制御部33の制御に基づいて、スキャナ10から、画素毎に主走査1ライン分のデータを副走査方向に連ねてシリアルに出力される画像データに対して、フィルタ処理、変倍処理などを行う。傾き補正処理部32は、画像処理制御部33の制御に基づいて、画像処理実行部31から出力された画像処理後の画像データに、主走査方向及び副走査方向の傾き補正処理及び補間処理を施して出力する。
画像処理制御部33は、CPU(Central Processing Unit)、RAM(Random Access Memory)、ROMを備える。画像処理制御部33において、ROMから読み出された各種プログラムがRAMに展開され、RAM上のプログラムとCPUとの協働で各種処理が実行される。
画像処理制御部33は、本体制御部60の制御に基づいて、画像処理実行部31、傾き補正処理部32を制御する。また、画像処理制御部33は、原稿搬送部20から出力される時間差s及び角度θと、傾き検出ROM40に記憶された情報と、に基づいて、stairH,stairVを算出する。画像処理制御部33は、stairH,stairVを用いて、傾き補正処理部32を制御する。
プリンタ部50は、画像処理部30から出力される画像データに基づいて、記録用紙等の記録媒体にプリント(画像形成)する。プリンタ部50のプリント方式は、電子写真方式、インクジェット方式、熱転写方式等である。
操作部70は、各種キーを備えて、ユーザの操作入力を受け付け、その入力情報を本体制御部60に出力する。また、操作部70は、LCD(Liquid Crystal Display)等の表示部を備え、本体制御部60から入力される表示情報に基づいて表示を行う。操作部70は、表示部と一体にタッチパネルを構成することとしてもよい。操作部70は、画像データの変倍、画質等のプリント条件の設定入力が受け付けられる。
本体制御部60は、CPU、RAM、ROMを備える。本体制御部60において、ROMから読み出されてRAMに展開された各種プログラムとCPUとの協働で各種処理が実行される。本体制御部60は、画像処理制御部33等のデジタル複写機1内部の各部を中央制御する。特に、本体制御部60は、複写プログラムに基づいて後述する複写処理を行う。
図3に、傾き補正処理部32の内部構成を示す。図3に示すように、傾き補正処理部32は、主走査補間処理部321と、主走査シフト処理部322と、副走査補間処理部323と、副走査シフト処理部324と、を備えて構成される。
主走査補間処理部321は、画像処理実行部31から出力される画像データに主走査補間処理を施して出力する。主走査シフト処理部322は、主走査補間処理部321から出力される画像データに主走査シフト処理を施して出力する。主走査シフト処理部322は、図示しないラインメモリを備え、画像データの各ラインデータをラインメモリに格納し、そのラインメモリ内のラインデータの位置調整により、各ラインの主走査方向のシフトを行う。
副走査補間処理部323は、主走査シフト処理部322から出力される画像データに副走査補間処理を施して出力する。副走査シフト処理部324は、副走査補間処理部323から出力される画像データに副走査シフト処理を施して出力する。
図4に、副走査シフト処理部324の内部構成を示す。本実施の形態では、副走査シフト処理部324が副走査シフト処理において副走査方向に最大6画素分のシフトが可能な構成を考えるものとする。しかし、このシフト量の構成に限定されるものではない。
図4に示すように、副走査シフト処理部324は、制御部3240と、比較器3253と、記憶部3254と、第2セレクタとしてのセレクタ3255と、を備えて構成される。制御部3240は、副走査シフト制御部3241と、カウンタ3242〜3247と、第1セレクタとしてのセレクタ3248と、反転部3249と、セレクタ3250と、アドレス変更部324Aと、を備えて構成される。アドレス変更部324Aは、減算部3251と、セレクタ3252と、を備えて構成される。
また、図4には示していないが、副走査シフト処理部324は、画像処理制御部33の制御により、後述する主走査有効信号HVI、副走査有効信号VVI、主走査同期信号INDIを出力する信号発生部を有する。
副走査シフト制御部3241は、クロック信号(図示せず)に基づいて動作し、上記信号発生部から入力される主走査有効信号HVI及び画像処理制御部33から入力される係数stairVに基づいて、選択信号sel及びアドレス信号adrを生成し、選択信号selをセレクタ3248及び比較器3253に出力し、アドレス信号adrを反転部3249及びセレクタ3250に出力する。
主走査有効信号HVIは、正論理の2値信号であり、画像処理実行部31から出力されるデータ信号DIが有効であるか否かを示す信号である。選択信号selは、セレクタ3248の入力切替の制御信号である。アドレス信号adrは、記憶部3254のアドレスを指定する信号である。アドレス信号adrの最上位ビット(Most Significant Bit)は、後述するメモリ領域を2分割するための信号MSBとしてセレクタ3250,3252に入力される。メモリ領域の2分割については、後述する。アドレス信号adrは、反転部3249及びセレクタ3250に入力される。反転部3249により反転されたアドレス信号adrは、セレクタ3250に入力される。
セレクタ3250は、信号MSBに基づいて、アドレス信号adrと、反転部3249により反転されたアドレス信号adrとのいずれか一つを選択して、記憶部3254のX方向のアドレスを示すアドレス信号Xとして記憶部3254に出力する。具体的には、信号MSB=1のときにアドレス信号adrの反転信号が選択され、信号MSB=0のときにアドレス信号adrが選択される。アドレス信号adrの上位ビットは、記憶部3254の選択信号CSとして記憶部3254に入力される。
カウンタ3242〜3247は、それぞれ、副走査有効信号VVI及び主走査同期信号INDIが入力され、信号CNT2〜CNT7が出力される。副走査有効信号VVIは、正論理で副走査シフトが有効であるか否かを示す副走査有効信号である。主走査同期信号INDIは、主走査ラインの1ラインごとに所定時間ハイとなる信号である。カウンタ信号CNT2〜CNT7は、2分割前のメモリ領域のY方向のアドレスを示す信号であり、2分割前のメモリ領域において副走査方向のシフト量の範囲内で循環するカウント値となる。つまり、カウンタ3242〜3247は、それぞれ、主走査同期信号INDIのハイの回数をカウントし、副走査方向のシフト量の範囲内で循環してカウンタ信号CNT2〜CNT7として出力する。
セレクタ3248は、選択信号selに基づいて、カウンタ3242〜3247から入力されるカウンタ信号CNT2〜CNT7のいずれか一つを選択し、2分割前のメモリ領域のY方向のアドレスを示すアドレス信号Y1として減算部3251及びセレクタ3252に出力する。
減算部3251は、値6−アドレス信号Y1を算出してセレクタ3252に出力する。セレクタ3252は、信号MSBに基づいて、減算部3251から入力される(値6−アドレス信号Y1)の信号と、アドレス信号Y1とのいずれか一つを選択して、記憶部3254のY方向のアドレスを示すアドレス信号Yとして記憶部3254に出力する。アドレス信号Yは、2分割、反転及び重ね合わせ後のメモリ領域のアドレスYとなる。具体的には、信号MSB=1のときに(値6−アドレス信号Y1)の信号が選択され、信号MSB=0のときにアドレス信号Y1が選択される。
比較器3253は、選択信号selと、値0と、を比較し、選択信号sel≠0である場合に0となり、選択信号sel=0である場合に1となる選択信号を出力する。記憶部3254は、複数のメモリモジュールを有し、駆動するメモリモジュールを指定できるメモリであり、例えばRAMにより構成される。記憶部3254は、セレクタ3250から入力されるアドレス信号X及び選択信号CSと、セレクタ3252から入力されるアドレス信号Yと、クロック信号CLKと、データ信号DIと、に基づいて、アドレス信号X、選択信号CS及びアドレス信号Yで指定される位置のメモリモジュールから、データを読み出しデータ信号DOとして出力するとともに、そのメモリモジュールにデータ信号DIの値を書き込む。
セレクタ3255は、比較器3253から入力される選択信号に基づいて、記憶部3254から入力されるデータ信号DOと、データ信号DIとのいずれか一つを選択し、最終的なデータ信号DOとして出力する。具体的には、セレクタ3255は、選択信号=0の場合に記憶部3254からのデータ信号DOを出力し、選択信号=1の場合にデータ信号DIを最終的なデータ信号DOとして出力する。また、データ信号DOは、傾き補正処理部32から出力されるデータ信号である。
次に、デジタル複写機1の動作を説明する。先ず、主走査シフト処理、副走査シフト処理の概略を説明する。図5に、主走査シフト処理及び副走査シフト処理の概念を示す。図5(a)に、画像読み取り後の画像データ100を示す。図5(b)に、主走査シフト処理後の画像データ200を示す。図5(c)に、副走査シフト処理後の画像データ300を示す。
図5(a)に示すように、スキャナ10において、傾いた原稿が読み取られ、横線状のデータの集まりとしての画像データ100が取得される。以下、主走査方向にx軸を取り、副走査方向にy軸をとるものとする。画像データ100と、x軸との間の角度を角度θとする。
主走査シフト処理は、画像データ100の画素を行毎に主走査方向にシフトする処理であり、画像データ100の縦線の傾きをなくする補正処理である。そのシフト量は、y軸上の位置によって異なる。図5(b)に示すように、矩形の画像データ100は、主走査シフト処理部322により主走査処理が施されて、平行四辺形の画像データ200に変換される。画像データ200と、x軸との間の角度を角度δとする。
副走査シフト処理は、主走査シフト処理において画素をシフトさせた方向(主走査方向)に直角な方向(副走査方向)に画像データ200の画素をシフトさせる処理であり、x軸に対して角度δ傾いた画像データの角度δを0にする補正処理である。図5(c)に示すように、画像データ200は、副走査シフト処理部324により副走査処理が施されて、角度δ=0の画像データ300に変換される。
次いで、主走査補間処理、主走査シフト処理、副走査補間処理、副走査シフト処理を順に詳細に説明する。
主走査補間処理は、主走査補間処理部321によって、スキャナ10により読み出されて画像処理実行部31から出力された画像データに施される処理である。主走査シフト処理が施された画像データの縦線は、巨視的には、縦に一本の線が繋がっているように見える。しかし、画素単位では、2画素にまたがって傾いた線が、シフト量が異なった箇所で途切れている。このような不連続が原因して、画像全体において、輪郭がギザギザに見えるものとなる。これは上述のように、主走査シフトが整数単位で行われることに原因がある。
主走査補間処理は、このような画質の劣化を補正する処理である。主走査補間処理は、例えば、主走査シフト処理で切り捨てられた小数点以下のシフト量に応じた重みづけをもって注目画素の画素値と隣接画素の画素値とを重みづけ平均して、注目画素の画素値を補正する処理とする。主走査補間処理では、stairHを用いて主走査補間量が算出され、その主走査補間量に基づいて補間処理が実行される。
主走査シフト処理は、主走査シフト処理部322によって、主走査シフト処理部322から出力された画像データに施される処理である。図6(a)に、画像データ100の構成を示す。図6(b)に、画像データ200の構成を示す。図6(a),(b)に示すように、画像データ100に主走査シフト処理を施して画像データ200にする場合を考える。
主走査シフト処理では、主走査シフト処理部322によりラインメモリ上に画像データ100の各ラインが格納されるとともに主走査方向にシフトされて読み出されることが繰り返される。図6(a)の矢印に示すように、画像データ100の画素の集まりをshxで示すように主走査方向へシフトするために、主走査シフト処理部322内のラインメモリ上で画素値を主走査方向にシフトすることが行われる。
原稿の傾きをθとしたとき、yライン目を主走査方向に何画素分シフトすればよいかと言う値をshxとすれば、shxは次式(5)で表される。
shx=y・tanθ …(5)
ちなみにシフトの右か左かは符号で区別する。
実際に、シフトは画素単位でしかできないので端数が切り捨てられた次式(6)のように定義した画素単位表示の主走査シフト量ishxと言う形で使われる。
ishx=(int)shx …(6)
ここで(int)は整数化することを意味する。
図2における画像処理制御部33(傾き検出ROM40)から供給される係数stairHを使うと、式(6)は次式(7)のように表される。
ishx=(int)(y/stairH) …(7)
式(7)に従って、ラインメモリ上で画素値をシフトすることによって、図6(a)に示す画像データ100は、図6(b)に示す画像データ200に変化して、主走査方向の傾きが補正され、例えば、縦線の傾きがなくなる。
副走査補間処理は、副走査シフト処理によって連続性が切断された画像データの画素値を補正する処理であり、重みづけ係数を使って注目画素の画素値と隣接画素の画素値とを重みづけ平均して、注目画素の画素値を補正する処理である。副走査補間処理では、stairVを用いて副走査補間量が算出され、その副走査補間量に基づいて補間処理が実行される。
副走査シフト処理は、画像データ200の画素を副走査方向にシフトさせ、y軸に対して角度δ傾いた画像データ200を角度δ=0にする補正である。副走査シフト処理のシフト量はx軸上の位置によって異なる値となる。
副走査シフト処理のためのデータ処理は、複数ライン分の矩形領域内のメモリ領域の画像データを記憶部3254に蓄えておき、x軸上の位置に応じた遅延を以て、画像データを出力して、1ライン分の画像データを得るものである。
図7(a)に、副走査シフト処理における矩形領域201を示す。図7(b)に、矩形領域201内の読み出し領域202を示す。図7(c)に、読み出し領域202における読み出し手順を示す。図7(d)に、読み出しデータ301を示す。なお、図7の例では、矩形領域201を3ラインとして表している。
例えば、図7(a)に示すように、画像データ200に矩形領域201が設定される。そして、図7(b)に示すように、3ラインの矩形領域201内から、副走査方向の傾きに対応する読み出し領域202が特定される。そして、読み出し領域202の各ラインは、x軸の値が小さいほど遅延量を大きくして読み出される。すると、図7(d)に示すように、傾きのない1ラインの読み出しデータ301として読み出される。矩形領域201は、読み出し領域202(読み出しデータ301)の読み出しごとに、1画素ずつ下方向に移動する。このため、全ラインの読み出しデータ301が集められて、図5(c)に示す画像データ300が構成される。
画像データ200のx軸に対する傾きを角度δとするとき、xカラム目の画素については、注目ラインからshyライン上にある画素の画素値を出力する。注目ラインとは、読み出し領域211の一番下の主走査ラインとする。shyは副走査方向のシフト量である。座標値xとシフト量shyの関係は次式(8)で表される。
shy=(x0−x)・tanδ(δ:正)
=x・tan(−δ)(δ:負) …(8)
但し、x0:画像データ200の主走査ラインの長さである。ここでも処理は整数単位で行われる。従って、シフト量にはshyを整数化したishyが使われ、ishyは次式(9)で表される。副走査シフト量ishyは、正の値をとる。
ishy=(int)((x0−x)/stairV)(δ:正)
=(int)(x/stairV)(δ:負) …(9)
この副走査シフト処理によって、図5(c)に示すように原稿の傾きが補正されて、正しい画像が再現される。
図8(a)〜(c)に、メモリ領域210の移動の様子を示す。図8(a)〜(c)に示すように、矩形領域203は、読み出し領域211の読み出しごとに、1画素ずつ下方向に移動される。矩形領域203は、読み出し領域211と、遅延領域212と、読み出し済領域204と、を有する。本実施の形態では、読み出し領域211及びこれより下側の遅延領域212のみを記憶部3254に記憶する。読み出し領域211及び遅延領域212を、メモリ領域210とする。但し、後述するように、正確には、傾き角度δが正の場合、画像データ200の一番右の係数stairV分の領域は、記憶部3254に記憶されない。
読み出し済領域204の画像データは、読み出し後に不要のデータとなるためである。よって、矩形領域203の画像データ全てを記憶する場合に比べて、メモリ領域210の画像データを記憶する場合の記憶部3254に必要な記憶容量は、約半分になる。このようにメモリモジュールの記憶容量は実用的な装置に組み込むのに適したものに抑えることが可能となる。
また、メモリ領域210が小さいため、副走査シフト処理の前工程で、画像データのビット数を減らすための多値化処理は実行されない。多値化処理は、例えば、8ビット画像データを2又は4ビット画像データに変換するように、画素値のビット数を減らす処理であり、誤差拡散法、ディザ法など周知の処理法により行う。このため、多値化処理を施すことによる画像データの劣化を防ぐことができる。
また、特開平10−336425号公報に記載されているように、主走査シフト処理及び副走査シフト処理によって、画像は主走査方向と副走査方向とに、異なった倍率の変倍を受ける。原稿の像を、角度のみならず形状に関しても忠実に再現するには、理論的には変倍補正を行う必要がある。しかしながら、実際上は読取において生ずる原稿の傾きは小さいので、前記のシフト処理において受ける変倍は極めて僅かであり、この補正をしなくてもよい。
次に、図9及び図10を参照して、画像データ200の傾き角度δで場合分けしたメモリ領域でのメモリモジュールの配置を説明する。図9(a)に、傾き角度δが正の場合のメモリ領域210を示す。図9(b)に、メモリ領域210に直接対応するメモリモジュールの配置を示す。図10(a)に、傾き角度δが負の場合のメモリ領域220を示す。図10(b)に、メモリ領域220に直接対応するメモリモジュールの配置を示す。
先ず、角度δが正の場合を考える。図9(a)に示すように、矩形領域203内に、傾き角度δが正の場合の読み出し領域211及び遅延領域212を含むメモリ領域210を有する。図9(a)のメモリ領域210を記憶するためには、図9(b)に示すようにメモリモジュールを配置すればよい。図9(b)に示すメモリモジュールの配置は、メモリ領域210の形状に対応し、副走査シフト量が大きいほどメモリモジュールの数が多く、従って合計記憶容量が大きく設定される。
次いで、角度δが負の場合を考える。図10(a)に示すように、矩形領域203内に、傾き角度δが負の場合の読み出し領域221及び遅延領域222を含むメモリ領域220を有する。図10(a)のメモリ領域220を記憶するには、図10(b)に示すようにメモリモジュールを配置すればよい。図10(b)に示すメモリモジュールの配置は、メモリ領域220の形状に対応し、副走査シフト量が大きいほどメモリモジュールの数が多く、従って合計記憶容量が大きく設定される。
次いで、図9及び図10のメモリモジュールにおけるデータの読み出し及び書き込みの遷移を説明する。図11(a)〜(h)に、傾き角度δが負で係数stairV=2の場合のメモリモジュールのデータ読み出し及び書き込みの遷移を示す。また、メモリモジュールは、画像データ200の入力ごとにリセットされるものとする。
図11(a)では図示しないが、主走査ラインの一番左では、入力されるデータ信号DIがそのままデータ信号DOとして出力される。このため、傾き角度δが負の場合、画像データ200の一番左の係数stairVの領域(2画素分)は、メモリに記憶されない構成となる。また、傾き角度δが正の場合、画像データ200の一番右の係数stairV分の領域は、メモリに記憶されない構成となる。
先ず、図11(a)に示すように、メモリ領域中のグレーのメモリモジュールに対して、データが読み出されてデータ信号DOとして出力されるとともに、現在の主走査ラインのデータ信号DIが書き込まれる。そして、主走査ラインが一ラインに下に移動する。図11(b)に示すように、メモリ領域中のグレーのメモリモジュールに対して、データが読み出されてデータ信号DOとして出力されるとともに、現在の主走査ライン(図11(a)から一ライン下の主走査ライン)のデータ信号DIが書き込まれる。
同様にして、図11(c)〜(h)に示すように、データの読み出し及びデータの書き込みが行われるグレーのメモリモジュールが遷移されていく。メモリ領域中のグレーのメモリモジュールは、X方向のStairVの各メモリ部分について、メモリY方向のメモリモジュールのうち、最も前に読み出し及び書き込みが行われたメモリモジュールにシフトされていく。このような遷移により、StairVの各メモリ部分について、X軸の値が大きくなるほど副走査シフト量が大きくなり、データ信号DOは図7の読み出しデータ301として出力されることとなる。
図12(a)〜(f)に、傾き角度δが負で係数stairV=3の場合のメモリモジュールのデータ読み出し及び書き込みの遷移を示す。図11の場合と同様に、傾き角度δが負で係数stairV=3の場合を考える。副走査シフト処理では、図12(a)〜(f)に示すように、データの読み出し及びデータの書き込みが行われるグレーのメモリモジュールが遷移されていく。このような遷移により、StairVの各メモリ部分(3画素分)について、X軸の値が大きくなるほど副走査シフト量も小さくなり、データ信号DOは図7の読み出しデータ301として出力されることとなる。
図13に、メモリ領域400の構成を示す。上記説明では、副走査方向に1画素、主走査方向に2画素のメモリモジュールの選択を行う実装をした場合を示しているが、実際は駆動するメモリモジュールをある程度の大きさ以下にすることは現実的でない。ASICにメモリを内蔵する場合でも、メモリの駆動指定可能なメモリモジュールごとに制御部領域や電源部領域が必要となるので、各駆動単位のメモリモジュールはできるだけ大きくして数を少なくする方が、ASIC内の領域が少なくて済むからである。
従って、例えば、図13に示すように、メモリ領域400において、駆動単位としての大きなメモリモジュール401をメモリに実装すると、図13にグレーで示した多少のメモリ未使用領域402が発生する。
そこで、本実施の形態の副走査シフト処理部324では、図14に示すように、第1メモリ領域としてのメモリ領域400Aを分割、反転及び重ね合わせしたメモリ領域が記憶部3254に記憶される構成とする。図14(a)〜(d)に、メモリ領域400Aの2分割、反転及び重ね合わせの手順を示す。
メモリ領域400Aは、メモリ領域400に対応する形状の領域であるが、その形状をそのまま記憶するメモリ領域400とは区別して考える。先ず、図14(a),(b)に示すように、メモリ領域400AをX方向に中央位置で2分割し、メモリ領域410,420とする。本実施の形態では、メモリ領域400AのX方向の画素数が偶数であるものとする。メモリ領域410は、図4における信号MSB=0に対応する。メモリ領域420は、図4における信号MSB=1に対応する。
そして、図14(b),(c)に示すように、メモリ領域420を半時計方向に180°回転(反転)させるとともに、メモリ領域420のメモリ未使用領域402Aを、メモリ領域410のメモリ未使用領域402Aに重ね合わせて、メモリ未使用領域402Aを打ち消すように配置する。こうすれば、メモリ領域402の大部分を削減できる。
さらに、図14(d)に示すように、メモリ領域410,420が重ね合わされたメモリ領域を上下に圧縮して重ね合わせすることにより、残っていた斜めラインのメモリ未使用領域402Aを完全に削除して第2メモリ領域としての矩形構造のメモリ領域440とする。このメモリ未使用領域が完全に削除されたメモリ領域440を記憶する記憶容量を有する記憶部3254が、副走査シフト処理部324に実装される。
次いで、図15を参照して記憶部3254内のメモリモジュールの配置及びその選択について説明する。ここでは、副走査シフト量が最大6画素である構成を説明する。図15に、記憶部3254内のメモリモジュールの配置及びその選択を示す。
図15に示すように、記憶部3254の各メモリモジュールにアドレスX及びアドレスYがとられる。また、図15で正方形で示した各メモリ単位は、一画素に対応するものとする。各メモリモジュールは、図15で実線で示され、主走査方向の2画素を一組としたメモリ領域である。図15の記憶部3254の各メモリモジュールは、傾き角度δが負である場合のものである。また、図15に示すメモリ領域は、アドレスX及びアドレスYに対応して配列したものであり、記憶部3254の物理的なメモリ配置に限定されるものではない。このため、図15に示される全ての正方形のメモリ単位が、記憶部3254のメモリとなる。
記憶部3254は、主走査方向に選択信号CS単位でメモリ駆動可能である。副走査方向に1画素単位で分割されたメモリモジュール群を有し、選択信号CSに対応するメモリモジュールのみが駆動される。つまり、同時に駆動するメモリモジュールは、主走査方向に選択信号CS単位で分割されたメモリモジュール群のうちの一つである。例えば、図15に示すように、選択信号CS=2の場合に、記憶部3254の各メモリのうち、CS=2に対応するメモリモジュール(グレーで示したメモリモジュール)のみが駆動される。このため、記憶部3254の全メモリモジュールを駆動する場合に比べて、消費電力を低減でき、その発熱量も低減できる。図15において、消費電力は、全メモリモジュールを駆動する場合に比べて1/4となる。
次いで、図16及び図17を参照して、画像データ200の傾き角度δが負で、係数stairVに応じた記憶部3254のメモリモジュールの配置とカウンタ信号CNT2〜CNT7との関係を説明する。図16に、傾き角度δが負で係数stairV=2の場合の記憶部3254のメモリモジュール及びカウンタ信号の関係を示す。図17に、傾き角度δが負で係数stairV=3の場合の記憶部3254のメモリモジュール及びカウンタ信号の関係を示す。
先ず、角度δが負で係数stairV=2の場合の記憶部3254のメモリモジュールを考える。図16に示すように、係数stairV=2の場合に、アドレスXの各メモリモジュールが選択信号selの値(0〜7)に対応付けられている。選択信号selに対応付けられるメモリモジュールは、主走査方向に2画素ずつのブロック単位である。つまり、選択信号CSのメモリモジュール単位と、選択信号selのメモリモジュール単位とが一致する例である。選択信号selの値は、画像データの副走査方向へのシフト量(カウンタ3242〜3247のカウント値)に対応する。
具体的には、選択信号sel=0に対応するメモリモジュールは無く、副走査シフト処理部324においては、データ信号DIがそのままデータ信号DOとして出力される。選択信号sel=1に対応するメモリモジュールでは、常に0となるアドレスY(=Y1)が記憶部3254へ入力され、主走査ラインの画像データ読み込みごとに、画像データの読み出し及び書き込みが行われる。
選択信号sel=2に対応するメモリモジュールでは、カウンタ信号CNT2に対応するアドレスY(=Y1)が記憶部3254へ入力され、主走査ラインの移動ごとに、カウンタ信号CNT2に対応するカウント値(0〜1の循環)に対応するメモリモジュールで画像データの読み出し及び書き込みが行われる。同様に、選択信号sel=3に対応するメモリモジュールでは、カウンタ信号CNT3に対応するアドレスY(=Y1)が記憶部3254に入力され、主走査ラインの移動ごとに、カウンタ信号CNT3に対応するカウント値(0〜2の循環)に対応するメモリモジュールにおいて、画像データの読み出し及び書き込みが行われる。
選択信号sel=4に対応するメモリモジュールでは、カウンタ信号CNT4に対応するアドレスY(=(6−Y1):減算部3251の減算信号)が記憶部3254に入力され、主走査ラインの移動ごとに、カウンタ信号CNT4に対応するカウント値(0〜3の循環)に対応するメモリモジュールにおいて、画像データの読み出し及び書き込みが行われる。同様に、選択信号sel=5,6,7に対応するメモリモジュールでは、カウンタ信号CNT5,CNT6,CNT7に対応するアドレスY(=(6−Y1))が記憶部3254に入力され、主走査ラインの移動ごとに、カウンタ信号CNT5,CNT6,CNT7に対応するカウント値(0〜4、0〜5、0〜6の循環)に対応するメモリモジュールにおいて、画像データの読み出し及び書き込みが行われる。
角度δが負で係数stairV=3の場合の記憶部3254のメモリ領域を考える。図17に示すように、係数stairV=3の場合に、アドレスXの各メモリモジュールが選択信号selの値(0〜5)に対応付けられている。選択信号selに対応付けられるメモリモジュールは、主走査方向に3画素ずつのブロック単位である。つまり、選択信号CSのメモリモジュール単位と、選択信号selのメモリモジュール単位とが一致しない例である。選択信号selの値は、画像データの副走査方向へのシフト量(カウンタ3242〜3247のカウント値)に対応する。
具体的には、選択信号sel=0に対応するメモリモジュールは無く、副走査シフト処理部324においては、データ信号DIがそのままデータ信号DOとして出力される。選択信号sel=1に対応するメモリモジュールでは、常に0となるアドレスY(=Y1)の記憶部3254への入力に応じて、主走査ラインの移動ごとに、画像データの読み出し及び書き込みが行われる。選択信号sel=2に対応するメモリモジュールでは、カウンタ信号CNT2に対応するアドレスY(=Y1,6−Y1)が記憶部3254に入力され、主走査ラインの移動ごとに、カウンタ信号CNT2に対応するカウント値(0〜1の循環)に対応するメモリモジュールにおいて、画像データの読み出し及び書き込みが行われる。
同様に、選択信号sel=3,4,5に対応するメモリモジュールでは、カウンタ信号CNT3,CNT4,CNT5に対応するアドレスY(=6−Y1)が記憶部3254に入力され、主走査ラインの移動ごとに、カウンタ信号CNT3,CNT4,CNT5に対応するカウント値(0〜2,0〜3,0〜4の循環)に対応するメモリモジュールにおいて、画像データの読み出し及び書き込みが行われる。
角度δが正の場合も同様に、係数stairVに応じて、記憶部3254のメモリモジュールが設定される。
次に、図18を参照して、デジタル複写機1で実行される複写処理を説明する。図18に、複写処理の流れを示す。
予め、原稿が原稿搬送部20にセットされる。また、操作部70を介してユーザからの変倍等の設定入力が受け付けられるものとする。例えば、ユーザから操作部70を介して複写指示が入力されたことをトリガとして、本体制御部60により複写処理が実行される。本体制御部60において、ROMから読み出されてRAMに展開された複写プログラムと、CPUとの協働で複写処理が実行される。
先ず、本体制御部60によりスキャナ10が制御される。この制御でスキャナ10により原稿が読み取られて画像データが取得される(ステップS11)。このとき、同様に本体制御部60により原稿搬送部20が制御され、時間差計測部29により時間差sが算出される。
そして、本体制御部60により画像処理制御部33が制御される。画像処理制御部33により画像処理実行部31が制御される。この制御で画像処理実行部31によりスキャナ10から出力された画像データに、フィルタリング、変倍等の画像処理が施される(ステップS12)。
ステップS12と並行して、画像処理制御部33により、上記式(1)と原稿搬送部20から出力された時間差sとに基づいて、原稿の傾き角度θが検出される(ステップS13)。
そして、画像処理制御部33により、傾き検出ROM40から上記式(2)〜(4)のデータが読み出され、この関係式のデータと角度θとに基づいて、主走査シフト後の傾き角度δ、stairH,stairVが算出される。そして、主走査補間処理部321により、画像処理実行部31から出力された画像データに、stairHを用いて主走査補間処理が施される(ステップS14)。
そして、主走査シフト処理部322により、上記式(5)〜(7)に基づいて主走査シフト量ishxが算出され、主走査補間処理部321から出力された画像データに、主走査シフト量ishxを用いて主走査シフト処理が施される(ステップS15)。
そして、副走査補間処理部323により、主走査シフト処理部322から出力された画像データに、stairVを用いて副走査補間処理が施される(ステップS16)。そして、副走査シフト処理部324により、副走査補間処理部323から出力された画像データに、係数stairVを用いて副走査シフト量ishyの副走査シフト処理が施される(ステップS17)。
そして、本体制御部60によりプリンタ部50が制御される。プリンタ部50により、副走査シフト処理部324から出力された画像データの画像が、記録用紙に記録される(ステップS18)。そして、複写処理が終了する。
次に、図19を参照して、複写処理におけるステップS17の副走査シフト処理を具体的に説明する。図19に、傾き角度δが負で係数stairV=2の場合の副走査シフト処理部324で用いる信号のタイミングの流れを示す。
先ず、傾き角度δが負で係数stairV=2の場合を考える。副走査シフト処理では、図19に示すように、主走査有効信号HVIのハイの入力ごとに、係数stairV(=2)に対応するアドレス信号adr及び選択信号selが出力される。また、カウンタ3242〜3247に、副走査有効信号VVI及び主走査同期信号INDIが入力され、現在の読み出し領域に応じたカウント値が出力される。
そして、図11(a)のメモリ領域に対応して、主走査ラインがデータ信号DOとして入力開始され、信号MSB=0となっている。主走査ラインの一番左では、選択信号selが0であり、データ信号DIがセレクタ3255を介してそのままデータ信号DOとして出力される。
そして、選択信号selが1となり、セレクタ3248から“0”がアドレス信号Y1として出力される。このアドレス信号Y1は、セレクタ3252を介してアドレス信号Yとして記憶部3254に入力される。記憶部3254では、アドレス信号X及び選択信号CSと、アドレス信号Yと、が入力され、アドレスX、Yに基づき、左から2番目でアドレスYが0のメモリモジュールに対し、記憶されているデータが読み出されてデータ信号DOとしてセレクタ3255を介して出力されるとともに、そのメモリ領域にデータ信号DIが書き込まれる。
そして、選択信号selが2となり、セレクタ3248からカウンタ信号CNT2がアドレス信号Y1として出力される。このアドレス信号Y1は、セレクタ3252を介してアドレス信号Yとして記憶部3254に入力される。記憶部3254では、アドレス信号X及び選択信号CSと、アドレス信号Y=CNT2と、が入力され、アドレスX、Yに基づき、左から3番目でアドレスYが0のメモリモジュールに対し、記憶されているデータが読み出されてデータ信号DOとしてセレクタ3255を介して出力されるとともに、そのメモリ領域にデータ信号DIが書き込まれる。
そして、選択信号selが3となり、同様にして、記憶部3254では、アドレス信号X及び選択信号CSと、アドレス信号Y=CNT3と、が入力され、アドレスX、Yに基づき、左から4番目でアドレスYが0のメモリモジュールに対し、記憶されているデータが読み出されてデータ信号DOとしてセレクタ3255を介して出力されるとともに、そのメモリ領域にデータ信号DIが書き込まれる。
そして、信号MSB=1となる。選択信号selが4となり、セレクタ3248からカウンタ信号CNT4がアドレス信号Y1として出力される。このアドレス信号Y1は、減算部3251、セレクタ3252を介して、(6−Y1)のアドレス信号Yとして記憶部3254に入力される。記憶部3254では、アドレス信号X及び選択信号CSと、アドレス信号Y=(6−CNT4)と、が入力され、アドレスX、Yに基づき、右から1番目でアドレスYが6のメモリモジュールに対し、記憶されているデータが読み出されてデータ信号DOとしてセレクタ3255を介して出力されるとともに、そのメモリ領域にデータ信号DIが書き込まれる。
同様にして、順に、選択信号selが5,6,7となり、セレクタ3248からカウンタ信号CNT5,CNT6,CNT7がアドレス信号Y1として出力される。このアドレス信号Y1は、減算部3251、セレクタ3252を介して、(6−Y1)のアドレス信号Yとして記憶部3254に入力される。記憶部3254では、アドレス信号X及び選択信号CSと、アドレス信号Y=(6−CNT5),(6−CNT6),(6−CNT7)と、が入力され、アドレスX、Yに基づき、右から2,3,4番目でアドレスYが6のメモリモジュールに対し、記憶されているデータが読み出されてデータ信号DOとしてセレクタ3255を介して出力されるとともに、そのメモリ領域にデータ信号DIが書き込まれる。
次いで、図11(b)に対応して、次の主走査ラインに移行する。信号MSB=0となる。先ず、選択信号selが0であり、データ信号DIがセレクタ3255を介してそのままデータ信号DOとして出力される。
そして、選択信号selが1となり、セレクタ3248から“0”がアドレス信号Y1として出力される。このアドレス信号Y1は、減算部3251、セレクタ3252を介して、アドレス信号Yとして記憶部3254に入力される。記憶部3254では、アドレス信号X及び選択信号CSと、アドレス信号Yと、が入力され、アドレスX、Yに基づき、左から2番目でアドレスYが0のメモリモジュールに対し、記憶されているデータが読み出されてデータ信号DOとしてセレクタ3255を介してデータ信号DOとして読み出されるとともに、そのメモリ領域にデータ信号DIが書き込まれる。
そして、順に、選択信号selが2,3となり、セレクタ3248からカウンタ信号CNT2,CNT3がアドレス信号Y1として出力される。このアドレス信号Y1は、減算部3251、セレクタ3252を介して、アドレス信号Yとして記憶部3254に入力される。記憶部3254では、アドレス信号X及び選択信号CSと、アドレス信号Y=CNT2,CNT3と、が入力され、アドレスX、Yに基づき、左から3,4番目でアドレスYが1のメモリモジュールに対し、記憶されているデータが読み出されてデータ信号DOとしてセレクタ3255を介して出力されるとともに、そのメモリ領域にデータ信号DIが書き込まれる。
そして、信号MSB=1となる。順に、選択信号selが4,5,6,7となり、セレクタ3248からカウンタ信号CNT4,CNT5,CNT6,CNT7がアドレス信号Y1として出力される。このアドレス信号Y1は、減算部3251、セレクタ3252を介して、(6−Y1)のアドレス信号Yとして記憶部3254に入力される。記憶部3254では、アドレス信号X及び選択信号CSと、アドレス信号Y=(6−CNT4),(6−CNT5),(6−CNT6),(6−CNT7)と、が入力され、アドレスX、Yに基づき、右から1,2,3,4番目でアドレスYが5のメモリモジュールに対し、記憶されているデータが読み出されてデータ信号DOとしてセレクタ3255を介して出力されるとともに、そのメモリ領域にデータ信号DIが書き込まれる。
このようにして、図11(a)〜(h)に対応して、記憶部3254の各メモリモジュールについて、主走査ラインの移行ごとに、順次、読み出し領域221のデータが読み出しされ、主走査ラインのデータが書き込みされ、副走査シフト後の主走査ラインの読み出しデータ301として出力されていく。但し、副走査シフト後の主走査ラインの画像データが出力開始されるのは、主走査ラインの一番左に対応する部分に画像データ値が現れてから以後である。
ここでは、係数stairV=2の場合を説明したが、これに限定されるものではなく、係数stairVが他の値でも同様である。副走査シフト量は、画像データ200の角度δの傾きに応じて変更される。また、傾き角度δが負の場合を説明したが、これに限定されるものではなく、正の場合も同様な処理で実現される。
以上、本実施の形態によれば、画像データ200の矩形領域203でなくメモリ領域210,220に対応したメモリ領域400Aを、主走査方向中央位置で2分割して反転し、メモリ未使用領域を重ね合わせて、その矩形のメモリ領域440とし、メモリ領域440に応じて記憶部3254のメモリモジュールを選択して、副走査補完処理後の画像データを読み出し及び書き込みする。このため、メモリ未使用領域をなくして副走査シフトに用いる記憶部3254の記憶容量を大きく低減できるとともに、記憶部3254の消費電力及び発熱量を低減できる。
また、傾き補正処理部32(副走査シフト処理部324)を容易にASICに搭載でき、そのASICのパッケージを小さくでき、その端子数も削減できる。また、記憶部3254の発熱量を低減することで、基板や筐体の放熱対策も不要にできる。
また、スキャナ10により原稿から画像データを取得して、画像処理部30により主走査方向及び副走査方向のシフト処理及び補間処理を施すことができる。
また、記憶部3254の主走査方向の複数領域を選択信号CSに応じて一つずつ駆動するので、記憶部3254の消費電力及び発熱量を容易に低減できる。
また、副走査シフト制御部3241、カウンタ3242〜3247、セレクタ3248、反転部3249、セレクタ3250、3252、減算部3251により、記憶部3254のデータ読み出し及び書き込みを行うメモリモジュールのアドレスを容易に指定(選択)できる。また、カウンタ3242〜3247により、副走査シフト量に応じた循環量(カウント値)を容易に生成できる。また、減算部3251、セレクタ3252により、信号MSBに基づいて、メモリ領域を2分割して反転させたメモリ領域420のY方向を容易に指定できる。
また、比較器3253、セレクタ3255により、画像データ200の主走査ラインの副走査シフト量がない領域の画像データを記憶せずデータ信号DOとしてそのまま出力するので、副走査シフトに用いる記憶部3254の記憶容量をより低減できる。
なお、上記実施の形態における記述は、本発明に係る好適な画像処理装置及び画像読取装置の一例であり、これに限定されるものではない。
例えば、上記実施の形態における副走査シフト処理における記憶部3254のメモリモジュールの最大のカウント値が6となる場合を説明したが、これに限定されるものではなく、5以下又は7以上としてもよい。メモリモジュールの最大のカウント数を増大すると、最大の傾き角度δが大きい画像データに副走査シフト処理を施すことができる。メモリモジュールの最大のカウント数を低減すると、記憶部3254の記憶容量をさらに低減できる。
また、上記実施の形態において、スキャナ10を有する画像読取装置としてのデジタル複写機1を説明したが、これに限定されるものではない。画像読取装置としてのスキャナ装置、画像読取装置を有するファクシミリ装置、MFP(Multi Function Printer)等としてもよい。また、別体の画像読取装置で読み取られた画像データに副走査シフト処理を含む画像処理を施す機能のみを有する画像処理装置としてもよい。また、本発明は、LED(Light Emitting Diode)アレイ、PLZT光シャッタアレイ等の固体走査型プリンタヘッドを有するプリンタ装置における、プリンタヘッドの副走査方向に対する設置傾きの補正にも利用可能である。
また、以上の実施の形態におけるデジタル複写機1を構成する各部の細部構成及び細部動作に関して本発明の趣旨を逸脱することのない範囲で適宜変更可能である。