(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、読取画像を画像メモリなどの記憶部に読み込んで斜行補正を行う装置では、記憶部に記憶される読取画像の容量の増大が問題となることがあった。例えば、原稿の読み取り中に読取画像の斜行補正を行う場合、斜行補正後の出力画像を構成するのに必要な所定量の読取画像が記憶部に記憶されるまで、斜行補正を開始することができない。さらに、当該所定量の読取画像が記憶された場合であっても、当該所定量の読取画像を用いて読取画像の傾き角度を算出するまでは、斜行補正を開始することができない。その結果、斜行補正の開始時において記憶部に記憶される読取画像の容量が増大してしまい、これに応じて斜行補正を行う場合において斜行補正のために割り振られる容量が増大してしまうと、他の処理を行う為に割り振ることができる容量を確保するために、記憶部の容量を増大させなければならない問題が生じていた。
【0005】
本明細書では、斜行補正に用いる記憶部の容量を抑制する技術を開示する。
【課題を解決するための手段】
【0006】
本明細書によって開示される画像読取装置は、画像読取部と、前記画像読取部が主走査方向に読み取った読取画像を、前記主走査方向に沿った出力画像に斜行補正する制御部と、記憶部と、を備え、前記記憶部は、前記読取画像が記憶される入力領域を含み、前記制御部は、前記斜行補正において、前記入力領域に記憶された前記読取画像から、前記斜行補正に必要な前記入力領域の容量である必要容量を設定する設定処理と、前記入力領域に記憶された前記読取画像を読み出して前記出力画像として選出する読出処理と、前記入力領域の容量が前記必要容量よりも大きい場合、前記記憶部に対して、前記読出処理において読み出された前記読取画像が記憶されていた領域を前記入力領域から解放するように指示する解放指示処理と、を実行する構成を備える。
【0007】
この画像読取装置では、読取画像を斜行補正する際に、読取画像が記憶された入力領域の容量を必要容量と比較する。そして、入力領域の容量が必要容量よりも大きい場合には、入力領域のうち、斜行補正が終了した、つまり、読取画像を読み出した領域を、入力領域から解放するように記憶部に指示する。これによって、例え斜行補正の開始時において一時的に入力領域のために割り振られる容量が増大した場合でも、その後、入力領域の一部を解放することで、入力領域の容量を減少させることができるとともに、解放された領域を他の処理を行う為に割り振ることができ、記憶部の容量が増大してしまうのを抑制することができる。
【0008】
上記画像読取装置では、前記記憶部は、前記出力画像が記憶される出力領域を更に備え、前記制御部は、更に、前記記憶部に対して、前記解放指示処理において解放を指示した前記領域を、前記出力領域として割り当てるように指示する割当指示処理、を実行する構成としても良い。
【0009】
読取画像から出力画像への斜行補正が進むにつれて、出力領域に必要とされる容量は増大する。この画像読取装置では、記憶部のうち、入力領域から解放された領域を出力領域として割り当てるので、出力領域の容量の増大を入力容量の容量の減少で補うことができ、入力領域と出力領域とを合計した容量を、斜行補正の間において略一定とすることができる。
【0010】
上記画像読取装置では、前記読取画像は、画像読取部が原稿を読み取ったものであり、前記必要容量は、前記原稿の少なくとも一辺を含む領域を読み取った読取画像を記憶可能な容量である構成としても良い。
【0011】
入力領域に原稿の少なくとも一辺を含む領域の読取画像が記憶されれば、当該一辺の出力画像を選出することができる。そして、当該入力領域に記憶される読取画像を更新することで、当該一辺に平行な出力画像を順次選出することができ、この結果、読取画像の全域を出力画像として選出することができる。この画像読取装置によれば、入力領域の容量を抑制して、読取画像を出力画像に斜行補正することができる。
【0012】
上記画像読取装置では、前記画像読取部は、前記主走査方向への読み取りを前記主走査方向と直交する副走査方向に複数回繰り返して前記読取画像を読み取り、前記制御部は、前記解放指示処理において、前記主走査方向への1回の読み取りにより読み取られるライン読取画像毎に読み出されたか否かを確認し、前記ライン読取画像毎に、当該ライン読取画像が記憶されていた領域を前記入力領域から解放するように指示する構成としても良い。
【0013】
この画像読取装置によれば、画像読取部が読み取りを行う単位であるライン読取画像毎に、入力領域の一部の領域を解放することができる。
【0014】
上記画像読取装置では、前記読取画像は、画像読取部が原稿を読み取ったものであり、前記制御部は、更に、前記入力領域の初期容量を設定する初期設定処理、を実行し、前記初期容量は、前記必要容量、及び、1枚分の原稿を読み取った読取画像を記憶可能な容量から設定される構成としても良い。
【0015】
この画像読取装置では、斜行補正の開始時において、入力領域の容量を、1枚分の原稿を読み取った読取画像が記憶可能な程度に広く設定しておくので、読取画像が入力領域の容量を超えて記憶できない問題が生じることはない。その上で、この画像読取装置では、読取画像を斜行補正する際に、入力領域の一部の領域を解放するように指示するので、記憶部の容量が増大してしまうのを抑制することができる。
【0016】
上記画像読取装置では、前記制御部は、前記入力領域の容量が前記必要容量と一致するまで、前記読出処理と前記解放指示処理を繰り返し、前記解放指示処理により前記入力領域の容量が前記必要容量と等しいと判断された場合、前記入力領域をリングバッファとして使用する構成としても良い。
【0017】
この画像読取装置では、解放指示処理を繰り返し実行した結果、入力領域の容量が必要容量と等しくなった場合に、入力領域をリングバッファとして使用することで、必要な記憶部の容量を削減しつつ、読取画像を出力画像に斜行補正することができる。
【0018】
上記画像読取装置では、前記制御部は、前記画像読取部の読み取り中に前記斜行補正を開始し、更に、前記入力領域の初期容量を設定する初期設定処理、を実行し、前記初期容量は、前記必要容量、及び、前記制御部の処理速度と前記画像読取部とから決定される補助容量から設定される構成としても良い。
【0019】
この画像読取装置では、斜行補正の処理時間の短縮のため、画像読取部の読み取り中に斜行補正を開始し、制御部は、斜行補正の開始時に、入力領域の初期容量を設定する。斜行補正中の設定処理により必要容量が設定された場合、初期容量は必要容量と同一の容量に設定してもよいように思える。しかし、斜行補正の開始時では、例えば読取画像の読み出しを開始する際に、初期設定をしなければならない等、制御部の処理速度が低下することがある。その結果、画像読取部が読み取った読取画像の容量が必要容量を超える事象が生じることがあり、この場合、斜行補正中に画像読取部の読み取りを中断しなければならず、斜行補正の処理時間を短縮することができないことがあった。
【0020】
この画像読取装置では、必要容量に加えて、制御部の算出速度、及び、画像読取部の読取速度から設定される補助容量を加えておく。そのため、斜行補正の開始時において、斜行補正中に画像読取部の読み取りを中断しなければならない事象の発生を抑制することができ、斜行補正の処理時間を短縮することができる。また、補助容量は、斜行補正において解放されることから、補助容量を用いて初期容量を設定しても、記憶部の容量が増大してしまうのを抑制することができる。
【発明の効果】
【0021】
本明細書によって開示される画像読取装置では、斜行補正に用いる記憶部の容量を抑制することができる。
【発明を実施するための形態】
【0023】
<実施形態1>
実施形態1を、
図1から
図8を用いて説明する。
【0024】
1.画像読取装置の構成
画像読取装置1は、図示しない原稿を読み取り、取得された読取画像に含まれる原稿画像を、基準方向に沿った原稿画像に補正する斜行補正を行う機能を有する。以下、斜行補正を行う前の原稿画像を、補正前画像Giと称し、斜行補正を行った後の原稿画像を、補正後画像Goと称す。補正前画像Giは、読取画像の一例であり、補正後画像Goは、出力画像の一例である。なお、基準方向は、任意の方向を設定することができ、例えば原稿シートの読取方向である主走査方向に設定することができる。
【0025】
図1に示すように、画像読取装置1は、画像読取装置1の各部を制御するASIC(特定用途向け集積回路)2、及び、ASIC2の外部に設けられたROM3、DRAM4、搬送部6、駆動回路7、読取部8、デバイス制御部9、アナログフロントエンド(以下、AFE)10等を含む。DRAM4は、記憶部の一例であり、読取部8は、画像読取部の一例である。また、
図1に点線5で示すように、ASIC2と、ROM3と、DRAM4とを含めたものが、制御部の一例である。
【0026】
ASIC2は、中央処理装置(以下、CPU)13を含む他、読取補正回路14、斜行補正回路15等の専用のハード回路を含む。ROM3には、画像読取装置1の動作を制御するための各種の制御プログラムが記憶されており、CPU13は、ROM3から読み出したプログラムに従って各部の制御を行うとともに、ハード回路を用いて後述する画像読取処理等の処理を実行する。
【0027】
駆動回路7は、搬送部6に接続されており、CPU13からの命令に基づいて図示しないモータを駆動する。搬送部6は、図示しないローラを含み、上記モータにより当該ローラが回転駆動されると、原稿を搬送する。
【0028】
デバイス制御部9は、読取部8に接続されており、CPU13からの命令に基づいて読取制御信号を読取部8に送信する。読取部8は、デバイス制御部9からの読取制御信号に基づいて、搬送部6により搬送される原稿を読み取る。
【0029】
読取部8には、図示されない複数の受光素子が一列に配置されており、読取部8は、1回の読み取りで、当該受光素子に沿った主走査方向に1ライン読み取り、ライン読取画像LB(
図5参照)を取得する。読取部8は、原稿を読み取る際に、搬送部6により主走査方向と直交する方向に搬送される原稿を、複数回に亘って繰り返し読み取り、主走査方向と直交する副走査方向に複数のライン読取画像LBが集まって構成される読取画像B(
図5参照)を取得する。
【0030】
AFE10は、読取部8に接続されており、読取部8が取得した読取画像BをAD変換し、ASIC2に送信する。読取補正回路14は、AD変換された読取画像Bに対して、各ライン読取画像LB毎にシェーディング補正を実行し、シェーディング補正した読取画像BをDRAM4に記憶する。読取補正回路14は、各ライン読取画像LBをDRAM4に記憶する毎に、CPU13に対して割り込み信号を送信する。
【0031】
図2に示すように、DRAM4には、上記補正前画像Giを含む読取画像Bが記憶される入力用ラインバッファ4Aと、上記補正後画像Goが記憶される出力用ラインバッファ4Bとが確保されている。読取補正回路14は、シェーディング補正した読取画像Bを、入力用ラインバッファ4Aに記憶する。斜行補正回路15は、入力用ラインバッファ4Aに記憶された読取画像Bに対して斜行補正を行い、補正後画像Goを出力用ラインバッファ4Bに記憶する。入力用ラインバッファ4Aは、入力領域の一例であり、出力用ラインバッファ4Bは、出力領域の一例である。
【0032】
また、画像読取装置1には、この他に、LEDや液晶ディスプレイからなり画像読取装置1の状況を表示する表示部11や、各種設定ボタンからなり、使用者からの各種命令を受け付ける操作部12が設けられている。
【0033】
2.斜行補正回路の構成
次に、斜行補正回路15の構成について説明する。
図2に示すように、斜行補正回路15は、ステートマシン21、演算処理部22、リードDMA処理部25、及び、ライトDMA処理部26を含む。
【0034】
ステートマシン21は、
図3の左図に示すように、補正後画像Goの各画素を配置すべき補正後座標系の補正後座標(Xo,Yo)を指定する。ステートマシン21は、
図3に矢印Z1に示すように、補正後画像Goに含まれる各画素の補正後座標を、X座標が増加する方向に順々に指定する1ラインの指定を実行する。ステートマシン21は、更に、
図3に矢印Z2に示すように、Y座標が増加する方向に1ラインの指定を繰り返し、補正後画像Goに含まれる各画素の補正後座標を順々に指定する。ステートマシン21は、指定された補正後座標を演算処理部22に送信する。ステートマシン21は、補正後画像Goに含まれる各画素の補正後座標の指定が終了すると、CPU13に対して割り込み信号を送信する。
【0035】
演算処理部22は、ステートマシン21から補正後座標を受け取ると、主走査方向に対する補正前画像Giの傾き角度θを用いて、当該補正後座標に対応する補正前座標(Xi,Yi)を演算する。演算の方法については、後述して詳細に説明する。演算処理部22は、補正前座標を演算すると、補正後座標と補正前座標とを関連付けてリードDMA処理部25に送信する。
【0036】
リードDMA処理部25は、演算処理部22から補正後座標と補正前座標とを受け取ると、DRAM4の入力用ラインバッファ4Aに補正前座標を送信する。そして、
図3の中図に示すように、当該入力用ラインバッファ4Aから補正前画像Giの補正前座標における画素データを読み出す(矢印Z3参照)。リードDMA処理部25は、読み出した画素データを、補正後座標に関連付けてライトDMA処理部26に送信する。
【0037】
ライトDMA処理部26は、リードDMA処理部25から画素データを受け取ると、
図3の右図に示すように、その画素データを、当該画素データに関連付けて送信された補正後座標の画素データとして、DRAM4の出力用ラインバッファ4Bに記憶する(矢印Z4参照)。出力用ラインバッファ4Bには、ステートマシン21が補正後画像Goに含まれる各画素の補正後座標を指定することで、各補正後座標における画素データが記憶され、この結果、出力用ラインバッファ4Bに補正後画像Goが記憶される。
【0038】
上述したように、斜行補正回路15では、補正前画像Giにおいて補正前座標に関連付けられて記憶されていた画素データが、補正後画像Goにおいて補正後座標に関連付けられることで、補正前画像Giが補正後画像Goへと変換される。この際、斜行補正回路15において、補正前座標が、主走査方向に対する補正前画像Giの傾き角度θを用いて演算されるので、主走査方向に対する補正前画像Giの傾きが抑制されるように変換され、この結果、補正前画像Giが補正後画像Goへと斜行補正される。
【0039】
また、演算処理部22は、サイズ管理部23を有しており、DRAM4の入力用ラインバッファ4A及び出力用ラインバッファ4Bの容量を管理するための管理処理を実行する。管理処理は、補正前画像Giから補正後画像Goへの斜行補正において実行され、その詳細については、後述して詳細に説明する。
【0040】
3.画像読取処理
次に、
図4から
図8を参照して、画像読取処理について説明する。画像読取処理には、取得された読取画像Bに含まれる補正前画像Giを補正後画像Goに斜行補正する処理が含まれる。画像読取処理は、斜行補正の一例である。CPU13は、操作部12を介して使用者から原稿の読取指示が入力されると、画像読取処理を実行する。
【0041】
図4に示すように、CPU13は、まず、搬送部6に対して原稿の搬送を指示し、原稿の搬送を開始させる(S2)。続いて、CPU13は、読取部8に対して原稿の読み取りを指示する(S4)。これにより、読取部8は、原稿を含む所定の読取範囲に対して、主走査方向への1ライン読み取りを開始する。
【0042】
CPU13は、DRAM4の入力用ラインバッファ4Aに記憶されたライン読取画像LBの数を示すライン数Nを初期化し(S6)、読取補正回路14から割り込み信号が送信されるのを待機する。そして、DRAM4の入力用ラインバッファ4Aにライン読取画像LBが記憶され、読取補正回路14から割り込み信号が受信されると(S8)、CPU13は、ライン数Nを1増加させ(S10)、当該ライン数NをROM3に記憶された初期格納ライン数SNと比較する(S12)。
【0043】
ここで、初期格納ライン数SNとは、主走査方向に対する補正前画像Giの傾き角度θを検出するのに必要なライン読取画像LBの数を意味し、具体的には、
図5に示すように、補正前画像Giの外周の4辺の線画像L1〜L4のうち、線画像L3の全域が含まれるのに必要なライン読取画像LBの数を意味する。
【0044】
読取部8には、画像を読取可能な原稿の最大サイズが予め設定されており、当該最大サイズの原稿が主走査方向に対して傾いた場合でも、搬送部6を用いて搬送可能な最大傾き角度θmaxが予め設定されている。初期格納ライン数SNは、最大サイズの原稿が最大傾き角度θmax傾いた場合に、少なくとも1つの線画像Lの全域が含まれるのに必要なライン読取画像LBの数を意味する。
【0045】
CPU13は、ライン数Nが初期格納ライン数SNよりも小さい場合(S12:YES)、入力用ラインバッファ4Aに記憶された読取画像Bからでは、傾き角度θを検出することができない虞があることから、S8からの処理を繰り返す。一方、ライン数Nが初期格納ライン数SN以上である場合(S12:NO)、CPU13は、入力用ラインバッファ4Aに記憶された読取画像Bから、主走査方向に対する補正前画像Giの傾き角度θを検出する傾き検出処理を実行する(S14)。
【0046】
図5には、補正前画像Giを含んだ読取画像Bの全域の画像が示されており、CPU13が傾き検出処理を実行する際、入力用ラインバッファ4Aには、境界線LLよりも下側に記載された初期格納ライン数SNのライン読取画像LBが記憶されている。つまり、入力用ラインバッファ4Aには、補正前画像Giの外周の4辺の線画像L1〜L4のうち、線画像L3の全域を含む読取画像Bが記憶されている。なお、読取画像Bでは、補正前画像Giが、主走査方向に対して傾き角度θだけ傾いている。また、読取画像Bでは、補正前画像Giの左下の角P1が、補正前座標系(Xi,Yi)の原点(0,0)からX方向にxpmだけ、Y方向にypmだけずれた位置にある。
【0047】
CPU13は、傾き検出処理を実行する際に、種々の公知技術により、入力用ラインバッファ4Aに記憶された読取画像Bから線画像L3を抽出し、その抽出結果から、補正前画像Giのxpm、ypm、傾き角度θ、及び、原稿サイズを求める。具体的には、CPU13は、抽出した線画像L3の右端の座標から、xpm及びypmを検出する。また、抽出した線画像L3に沿った方向と主走査方向との角度を、傾き角度θとして検出する。
【0048】
更に、抽出した線画像L3の長さXmaxを検出し、ROM3に記憶されたA4、B5などの規格化された原稿サイズと比較する。CPU13は、長さXmaxと当該規格化された原稿サイズとの比較結果から、線画像L4の長さYmaxを推定し、原稿サイズを推定する。
【0049】
次に、CPU13は、求められた傾き角度θ及び原稿サイズから、線画像L3の全域が記憶されるのに必要なライン読取画像LBの数である最小限格納ライン数MNを設定する設定処理を実行する(S16)。つまり、最小限格納ライン数MNとは、線画像L3に相当する原稿の外周辺側の端部領域を読み取った端部画像RB(
図5斜線部参照)が記憶されるのに必要なライン読取画像LBの数である。詳細には、線画像L3の長さXmaxの傾き角度θにおける正弦値と、ライン読取画像LBの副走査方向の幅との比に基づいて設定する。そのため、最小限格納ライン数MNは、通常、初期格納ライン数SNよりも小さい値となる。最小限格納ライン数MNは、必要容量の一例である。
【0050】
また、CPU13は、求められた原稿サイズから、補正後画像Goの全域が記憶されるのに必要なライン読取画像LBの数である全域格納ライン数ANを設定する(S18)。具体的には、線画像L4の長さYmaxとライン読取画像LBの副走査方向の幅との比に基づいて全域格納ライン数ANを設定する。全域格納ライン数ANは、1枚分の原稿を読み取った読取画像Bを記憶可能な容量の一例である。
【0051】
CPU13は、上記の値が設定されると、傾き検出処理により求められた傾き角度θ、xpm、ypm、原稿サイズ(Xmax、Ymax)、及び、最小限格納ライン数MN、全域格納ライン数ANを斜行補正回路15に送信し、斜行補正回路15に対して斜行補正を指示する(S20)。
【0052】
CPU13は、斜行補正を指示した後、図示しない各種センサを用いて読取部8により読み取られる原稿の有無を検出する(S22:NO)。CPU13は、読取部8により読み取られる原稿が無くなると(S22:YES)、読取部8に対して原稿の読取停止を指示する(S24)とともに、搬送部6に対して原稿の搬送停止を指示する(S26)。そして、CPU13は、斜行補正回路15から割り込み信号が送信されるのを待機し(S28:NO)、斜行補正回路15から割り込み信号を受信すると(S28:YES)、画像読取処理を終了する。
【0053】
(管理処理)
斜行補正回路15は、CPU13からの指示に従って斜行補正を実行し、斜行補正回路15に含まれる各部が上記の各処理を実行する。斜行補正は、CPU13の画像読取処理中に実行され、更には、読取部8による原稿の読み取り中に実行される。そして、斜行補正回路15に含まれる演算処理部22は、斜行補正において管理処理を実行する。
【0054】
図6に示すように、演算処理部22は、CPU13から斜行補正の指示が入力されるのを待機する(S32:NO)。CPU13は、入力用ラインバッファ4Aに初期格納ライン数SNのライン読取画像LBが記憶されるまでは、傾き角度θ、原稿サイズ等の値を求めず、演算処理部22に対して斜行補正の指示を送信しない。この間、
図7の左図に示すように、斜行補正回路15は、斜行補正を行っていないオフ状態であり、出力用ラインバッファ4Bには、補正後画像Goが記憶されない。
図7、8において、斜線を付した入力用ラインバッファ4A及び出力用ラインバッファ4Bの領域は、画像が記憶されていない領域を示すものとする。
【0055】
図7の中図に示すように、入力用ラインバッファ4Aに最小限格納ライン数MNのライン読取画像LBが記憶されると、補正前画像Giのうち、線画像L3の全域が入力用ラインバッファ4Aに記憶される。しかし、最小限格納ライン数MNは、初期格納ライン数SNよりも小さい値であるため、この場合でも、斜行補正回路15はオフ状態に維持され、出力用ラインバッファ4Bには補正後画像Goが記憶されない。
【0056】
そして、
図7の右図に示すように、入力用ラインバッファ4Aに初期格納ライン数SNのライン読取画像LBが記憶されると、CPU13は、演算処理部22に対して斜行補正の指示を送信し、演算処理部22に最小限格納ライン数MN、全域格納ライン数AN等の値を送信する。これにより、斜行補正回路15は、斜行補正を行っているオン状態に切り替わる。演算処理部22は、CPU13からこれらの値が入力されると(S32:YES)、入力用ラインバッファ4Aに記憶可能なライン読取画像LBの数を示す入力用格納ライン数NNの初期値、及び、出力用ラインバッファ4Bに記憶可能なライン読取画像LBの数を示す出力用格納ライン数TNの初期値を設定する初期設定処理を実行する(S34)。
【0057】
演算処理部22は、DRAM4の記憶領域のうち、既にライン読取画像LBが記憶されている領域を含めて、入力用格納ライン数NN分の記憶領域を確保し、当該記憶領域を入力用ラインバッファ4Aとして使用し、他の用途では使用しないように割り当てる。また、演算処理部22は、DRAM4の記憶領域のうち、出力用格納ライン数TN分の記憶領域を確保し、当該記憶領域を出力用ラインバッファ4Bとして使用し、他の用途では使用しないように割り当てる。
【0058】
本実施形態では、出力用格納ライン数TNの初期値を1に設定するとともに、入力用格納ライン数NNの初期値と出力用格納ライン数TNの初期値の合計値が、最小限格納ライン数MNと全域格納ライン数ANとを加算したライン数となるように設定する。
【0059】
次に、演算処理部22は、ステートマシン21から補正後座標が入力されるのを待機し(S36:NO)、補正後座標が入力されると(S36:YES)、補正前座標を演算する(S38)。具体的には、補正後座標を傾き角度θだけ回転させ、更に、X方向にxpmだけ、Y方向にypmだけずらして補正前座標を演算する。補正前座標(Xi,Yi)は、補正後座標(Xo,Yo)、傾き角度θ、xpm、ypmを用いて、以下のように表される。
Xi=cosθ*Xo−sinθ*Yo+xpm
Yi=sinθ*Xo+cosθ*Yo+ypm
【0060】
演算処理部22は、補正前座標を演算すると、補正後座標と補正前座標とを関連付けてリードDMA処理部25に送信する(S40)。これにより、リードDMA処理部25及びライトDMA処理部は、入力用ラインバッファ4Aに記憶された補正前画像Giから、補正前座標における画素データを読み出し、補正後画像Goの補正後座標における画像データとして出力用ラインバッファ4Bに記憶する読出処理を実行する。
【0061】
演算処理部22は、
図3に矢印Z1に示すように、ステートマシン21の1ラインの指定に伴って1ラインの補正後画像Goが記憶されるまで(S42:NO)、S36からの処理を繰り返す。そして、
図7の右下図に示すように、1ラインの補正後画像Goが記憶されると、入力用ラインバッファ4Aの一部の記憶領域を解放するか否かを判断する判断処理(S44、S46)を実行する。
【0062】
判断処理において、演算処理部22は、入力用格納ライン数NNと最小限格納ライン数MNとを比較し、入力用格納ライン数NNから1を引いたライン数が最小限格納ライン数MNよりも大きいか否かを確認する(S44)。演算処理部22は、入力用格納ライン数NNから1を引いたライン数が最小限格納ライン数MNよりも大きい場合(S44:YES)、更に、入力用ラインバッファ4Aに記憶される各ライン読取画像LB毎に、当該ライン読取画像LBが不要か否かを判断する(S46)。
【0063】
ライン読取画像LBの要不要の判断において、演算処理部22は、入力用ラインバッファ4Aに記憶される各ライン読取画像LB毎に、当該ライン読取画像LBに含まれる補正後画像Goの範囲を抽出する。そして、演算処理部22は、各ライン読取画像LBに抽出した範囲が存在する場合には、更に、抽出した範囲内の補正後画像Goの全てが読み出されたか否かを確認する。
【0064】
演算処理部22は、各ライン読取画像LBにおいて、抽出した範囲内に読み出されていない補正後画像Goが含まれている場合には(S46:NO)、当該ライン読取画像LBが必要と判断し、S36からの処理を繰り返す。一方、抽出した範囲が存在しない場合、或いは、抽出した範囲内の補正後画像Goの全てが読み出された場合(S46:YES)、当該ライン読取画像LBは、以後の処理において読み出されることがないことから、当該ライン読取画像LBが不要と判断する。
【0065】
この場合、演算処理部22は、
図7の右上図に黒色で示すように、不要と判断されたライン読取画像LBが記憶されていた記憶領域を入力用ラインバッファ4Aから解放するようにDRAMに指示する解放指示処理を実行する(S48)。
【0066】
更に、演算処理部22は、
図7の右下図に中下図と比較して示すように、入力用ラインバッファ4Aから解放したDRAM4の記憶領域を、出力用ラインバッファ4Bとして割り当てるようにDRAMに指示する割当指示処理を実行する(S50)。これにより、入力用格納ライン数NNは1だけ減少し、出力用格納ライン数TNは1だけ増加する(S52)。演算処理部22は、割当指示処理を実行すると、S36からの処理を繰り返す。
【0067】
演算処理部22は、入力用格納ライン数NNから1を引いたライン数が最小限格納ライン数MNよりも大きい間(S44:YES)、S36からS52までの処理を繰り返し、読出処理と判断処理と解放指示処理と割当指示処理とを繰り返す。これにより、
図8の左図に示すように、入力用ラインバッファ4Aから補正前画像Giが読み出されるのに従って、入力用ラインバッファ4Aが減少し、出力用ラインバッファ4Bに補正後画像Goが記憶されるのに従って、出力用ラインバッファ4Bが増加する。
【0068】
そして、
図9の中図に示すように、入力用格納ライン数NNから1を引いたライン数が最小限格納ライン数MN以下となると(S44:NO)、演算処理部22は、S36からS52の処理のうち、S36からS44までの処理を繰り返し、S46からS52までの処理を繰り返さない。演算処理部22は、入力用ラインバッファ4A及び出力用ラインバッファ4Bの記憶容量を変化させることなく、
図9の中下図に斜線を付して示す出力用ラインバッファ4Bの画像が記憶されていない領域への補正後画像Goの記憶を繰り返す。
【0069】
そして、
図9の右図に示すように、出力用ラインバッファ4Bへの補正後画像Goの記憶が終了し、斜行補正が完了すると、ステートマシン21からCPU13に割り込み信号が入力され、演算処理部22における管理処理を含む、斜行補正回路15の斜行補正を終了する。
【0070】
4.本実施形態の効果
(1)本実施形態の画像読取装置1では、斜行補正中に、入力用ラインバッファ4Aに記憶されたライン読取画像LBの要不要を判断する。そして、不要と判断される、つまり、以後の処理において読み出されることがないと判断されるライン読取画像LBに対しては、当該ライン読取画像LBが記憶されていた記憶領域を入力用ラインバッファ4Aから解放するようにDRAM4に指示する。
【0071】
従来技術の画像読取装置では、斜行補正中に、入力用ラインバッファ4Aの記憶領域が解放されることが無かった。そのため、例えば、入力用格納ライン数NNの初期値が全域格納ライン数ANと略等しく設定されるなど、斜行補正の開始時において入力用ラインバッファ4Aの記憶領域として比較的大きい領域が確保される場合に問題が生じていた。すなわち、従来技術の画像読取装置では、上記の場合に、斜行補正を通して入力用ラインバッファ4A以外の用途に使用できるDRAM4の記憶容量が減少し、DRAM4の容量を増大させる必要がある問題が生じていた。
【0072】
これに対して、本実施形態の画像読取装置1では、斜行補正の開始時において入力用ラインバッファ4Aの記憶領域として比較的大きい領域が確保された場合でも、その後、入力用ラインバッファ4Aの一部の記憶領域が解放される。そのため、斜行補正の開始時に入力用ラインバッファ4A以外の用途に使用できるDRAM4の記憶容量が減少していても、その後、当該記憶容量を増大させることができ、DRAM4の容量が増大してしまうのを抑制することができる。
【0073】
(2)本実施形態の画像読取装置1では、入力用ラインバッファ4Aから解放される記憶領域を、出力用ラインバッファ4Bとして割り当てる。DRAM4では、補正前画像Giから補正後画像Goへの斜行補正が進むにつれて、入力用ラインバッファ4Aとして必要とされる入力用格納ライン数NNが減少する一方、出力用ラインバッファ4Bに必要とされる出力用格納ライン数TNが増大する。この画像読取装置1では、出力用ラインバッファ4Bに必要とされる出力用格納ライン数TNの増大を、入力用ラインバッファ4Aに必要とされる入力用格納ライン数NNの減少により補う。つまり、斜行補正を通して入力用格納ライン数NNと出力用格納ライン数TNとの合計のライン数を一定とすることができる。従って、斜行補正の開始時などに、一時的に入力用ラインバッファ4Aと出力用ラインバッファ4B以外の用途に使用できるDRAM4の記憶容量が減少してしまうことが無く、DRAM4の容量が増大してしまうのを抑制することができる。
【0074】
(3)本実施形態の画像読取装置1では、入力用ラインバッファ4Aの一部の記憶領域を解放するか否かを判断する際に、入力用格納ライン数NNと最小限格納ライン数MNとを比較する。入力用格納ライン数NNとして最小限格納ライン数MN以上のライン数が確保されていれば、入力用ラインバッファ4Aから1ラインの補正後画像Goに対応する補正前画像Giの画素データを読み出すことができ、入力用ラインバッファ4Aの記憶領域の不足により、斜行補正が途中で中断してしまうことを抑制することができる。
【0075】
(4)本実施形態の画像読取装置1では、入力用ラインバッファ4Aの一部の記憶領域を解放するか否かを判断する際に、入力用ラインバッファ4Aに記憶された各ライン読取画像LB毎に要不要を判断する。そして、不要と判断される場合には、各ライン読取画像LB毎に、当該各ライン読取画像LBが記憶されていた記憶領域を入力用ラインバッファ4Aから解放する。読取部8が読み取りを行うライン読取画像LB単位で解放を行うことで、入力用ラインバッファ4Aへの記憶と解放を、同じライン読取画像LB単位で行うことができる。
【0076】
(5)本実施形態の画像読取装置1では、読取部8による原稿の読み取り中に斜行補正が実行される。この画像読取装置1では、入力用格納ライン数NNの初期値が全域格納ライン数ANと略等しく設定され、斜行補正の開始時において入力用ラインバッファ4Aの記憶領域として比較的大きい領域が確保される。そのため、斜行補正中に入力用ラインバッファ4Aの記憶領域が不足し、読取部8による原稿の読み取りが中断することで、斜行補正に必要な時間が長期化することを抑制することができる。
【0077】
<実施形態2>
実施形態2を、
図9から
図11を用いて説明する。本実施形態は、入力用格納ライン数NNの初期値を設定する方法が実施形態1と異なる(
図9のS62参照)。また、入力用ラインバッファ4Aから解放されたDRAM4の記憶領域を、出力用ラインバッファ4Bとして割り当てない(
図9でS52無し)点で実施形態1と異なる。以下の説明では、実施形態1と同一の内容については重複した記載を省略する。
【0078】
1.管理処理
図9に示す管理処理において、演算処理部22は、CPU13から最小限格納ライン数MN、全域格納ライン数AN等の値が入力されると(S32:YES)、入力用格納ライン数NNの初期値、及び、出力用格納ライン数TNの初期値を設定する(S62)。
【0079】
本実施形態では、
図10に示すように、出力用格納ライン数TNの初期値を、全域格納ライン数ANに設定する。また、入力用格納ライン数NNの初期値が、最小限格納ライン数MNと補助ライン数HNとを加算したライン数となるように設定する。ここで、補助ライン数HNとは、斜行補正回路15に含まれる各部の処理速度と、読取部8の読取速度から決定されるライン数であり、予め決定されてROM3に記憶されている。
【0080】
斜行補正回路15に含まれる各部の処理速度が読取部8の読取速度よりも速い場合、入力用格納ライン数NNの初期値を最小限格納ライン数MNと等しく設定したとしても、斜行補正回路15における処理の遅れにより、ライン読取画像LBを記憶する記憶容量を入力用ラインバッファ4Aに確保することができず、読取部8の読み取りが停止する事態が生じ難い。そのため、補助ライン数HNは比較的小さい値に決定される。
【0081】
一方、斜行補正回路15に含まれる各部の処理速度が読取部8の読取速度よりも遅い場合、入力用格納ライン数NNの初期値を最小限格納ライン数MNと等しく設定した場合、斜行補正回路15における処理の遅れにより、ライン読取画像LBを記憶する記憶容量を入力用ラインバッファ4Aに確保することができず、読取部8の読み取りが停止する事態が生じ易い。そのため、補助ライン数HNは比較的大きい値に決定される。
【0082】
この結果、本実施形態では、入力用格納ライン数NNの初期値が、全域格納ライン数ANよりも小さい値に設定される。そのため、入力用ラインバッファ4Aでは、
図11の中上図に示すように、管理処理における解放指示処理(S48)により入力用格納ライン数NNと最小限格納ライン数MNとが等しくなり、且つ、入力用ラインバッファ4Aに画像が記憶されていない領域が存在しない状態が実現される。
【0083】
この場合、演算処理部22は、
図11の右上図に中上図と比較して示すように、新たに入力用ラインバッファ4Aに記憶されるライン読取画像LBを、入力用ラインバッファ4Aに記憶された最小限格納ライン数MNのライン読取画像LBのうち、最も早く記憶されたライン読取画像LBが記憶された記憶領域に上書きして記憶する。
【0084】
つまり、演算処理部22は、入力用格納ライン数NNから1を引いたライン数が最小限格納ライン数MN以下となった場合(S44:NO)、それ以降の処理において、入力用ラインバッファ4Aを、最小限格納ライン数MNを有するリングバッファとして使用する。演算処理部22は、これ以降、出力用ラインバッファ4Bへの補正後画像Goの記憶が終了するまで、
図11に矢印Z5、6に示すように、入力用ラインバッファ4Aをリングバッファとして使用し、出力用ラインバッファ4Bへの補正後画像Goの記憶が終了すると、管理処理を含む斜行補正回路15の斜行補正を終了する。
【0085】
2.本実施形態の効果
(1)本実施形態の画像読取装置1では、入力用格納ライン数NNの初期値を、最小限格納ライン数MNと補助ライン数HNとを加算したライン数に設定する。上述したように、斜行補正回路15では、読取部8の読取速度との関係において、ライン読取画像LBを記憶する記憶容量を入力用ラインバッファ4Aに確保することができず、読取部8の読み取りが停止する事態が生じることがある。
【0086】
特に、斜行補正の開始時には、CPU13が最小限格納ライン数MNを算出し、演算処理部22が当該最小限格納ライン数MNを受け取って出力用格納ライン数TNの初期値を設定する等、斜行補正回路15における処理速度が低下する事態が生じやすい。
【0087】
これに対して、本実施形態の画像読取装置1では、最小限格納ライン数MNに補助ライン数HNを加えたライン数を、入力用格納ライン数NNの初期値に設定する。そのため、斜行補正の開始時において、斜行補正中に読取部8の読み取りを中断しなければならない事象の発生を抑制することができ、斜行補正の処理時間を短縮することができる。また、補助ライン数HNは、斜行補正における解放指示処理において、入力用ラインバッファ4Aから解放されることから、補助ライン数HNを用いて入力用格納ライン数NNを設定しても、DRAM4の容量が増大してしまうのを抑制することができる。
【0088】
(2)本実施形態の画像読取装置1では、入力用格納ライン数NNの初期値が全域格納ライン数ANよりも小さい値に設定され、斜行補正の開始時において入力用ラインバッファ4Aの記憶領域が比較的小さい領域に抑制される。更に、斜行補正の開始後において、入力用格納ライン数NNと最小限格納ライン数MNとが等しくなった場合に、入力用ラインバッファ4Aをリングバッファとして使用し、斜行補正の開始後において入力用ラインバッファ4Aの記憶領域が比較的小さい領域に抑制される。つまり、斜行補正を通して入力用ラインバッファ4Aの記憶領域を抑制することができ、DRAM4の容量が増大してしまうのを抑制することができる。
【0089】
<他の実施形態>
本明細書で開示される技術は上記記述及び図面によって説明した実施形態に限定されるものではなく、例えば次のような種々の態様も含まれる。
(1)上記実施形態では、スキャン機能のみ有する画像読取装置1を挙げて説明を行った。しかし、これに限らず、スキャン機能および印刷機能を有するコピー機や、ファクシミリ機能を有するファクシミリ装置、スキャナ機能、印刷機能およびファクシミリ機能など複数の機能を有する複合機などでもよい。
【0090】
(2)上記実施形態では、画像読取装置1がCPU13を有する及びASIC2を有し、このCPU13が必要に応じてASIC2内の斜行補正回路15等のハード回路を用いて画像読取処理を実行する制御部が構成される例を用いて説明を行ったが、本発明はこれに限られない。例えば、CPUがASICとは別体として存在し、このCPUにより制御部が実行する処理が実行されてもよければ、ASIC内にCPUが存在せず、ASICに設けられたハード回路により制御部が実行する処理が実行されてもよい。さらには、単数又は複数のCPU及びASICによって、制御部が実行する処理を実行していても良い。
【0091】
(3)また、CPU13が実行するプログラムは必ずしもROM3に記憶されている必要はなく、ASIC2内に記憶されていてもよければ、他の記憶装置に記憶されていても良い。
【0092】
(4)上記実施形態では、出力用ラインバッファ4BがDRAM4に確保されている例を用いて説明を行ったが、本発明はこれに限られない。例えば、画像読取装置1が更にUSBや外部PCなどの外部装置に接続されている場合には、これらの有する記憶部に出力用ラインバッファ4Bが確保されても良い。
【0093】
(5)上記実施形態1では、入力用ラインバッファ4Aから解放したDRAM4の記憶領域を、出力用ラインバッファ4Bとして割り当てる例を用いて説明を行ったが、本発明はこれに限られない。入力用ラインバッファ4Aから解放したDRAM4の記憶領域は、出力用ラインバッファ4B以外の用途に割り当てられても良い。