(57)【要約】【課題】  画像の繋ぎ目の発生を目立たなくして高品位な画像を表す画像データを得る。【解決手段】  バッファメモリのデータ蓄積量を監視する。バッファメモリのデータ蓄積量が所定の上限値まで増加した場合には、スキャン対象画像の主走査方向に沿った走査位置の、副走査方向への移動を停止し、画像データの生成を停止する。バッファメモリのデータ蓄積量が所定の下限値まで減少した場合には、移動を停止した走査停止位置から所定の移動量だけ戻った走査再開位置を先頭走査位置として、走査位置の移動を再開し、画像データの生成を再開する。走査再開位置から走査停止位置までの各走査位置については、イメージセンサから出力される電気信号に応じて生成される画像データと、バッファメモリに格納されている画像データと、に基づいて導き出されるデータを画像データとする。【選択図】        図７
2007053423.tif 000002
【特許請求の範囲】
【請求項１】
所定のスキャン対象画像を走査して画像データを生成し、生成した画像データを所定の外部機器へ転送する画像読取装置であって、
前記スキャン対象画像の主走査方向に沿った走査位置を、前記主走査方向に垂直な副走査方向に沿って順次移動させる走査位置制御部と、
前記走査位置ごとの画像を順次読み取り、読み取った画像に対応する電気信号を出力するイメージセンサと、
前記イメージセンサから順次出力される電気信号に応じた画像データを生成する画像処理部と、
前記画像処理部で順次生成される画像データを一時的に格納するバッファメモリと、
前記バッファメモリに格納された画像データを前記外部機器へ順次転送するインタフェース部と、
前記バッファメモリのデータ蓄積量を監視するデータ蓄積量監視部と、
を備え、
前記バッファメモリのデータ蓄積量が所定の上限値まで増加した場合には、前記走査位置制御部は前記走査位置の移動を停止するとともに、前記画像処理部は前記画像データの生成を停止し、
前記データ蓄積量が所定の下限値まで減少した場合には、前記走査位置制御部は、前記移動を停止した走査停止位置から所定の移動量だけ戻った走査再開位置を先頭の走査位置として、前記走査位置の移動を再開するとともに、前記画像処理部は、前記画像データの生成を再開し、
前記画像処理部は、再開した前記画像データの生成のうち、前記走査再開位置から前記走査停止位置までの各走査位置については、前記イメージセンサから出力される電気信号に応じて生成される画像データと、前記バッファメモリに格納されている画像データと、に基づいて導き出されるデータを前記画像データとする、
ことを特徴とする画像読取装置。
【請求項２】
請求項１記載の画像読取装置であって、
前記導き出されるデータは、前記イメージセンサから出力される電気信号に応じて生成される画像データと、前記バッファメモリに格納されている画像データとの平均値を表すデータであることを特徴とする画像読取装置。
【請求項３】
所定のスキャン対象画像を走査して画像データを生成し、生成した画像データを所定の外部機器へ転送する画像読取装置の制御方法であって、
前記画像読取装置は、
前記スキャン対象画像の主走査方向に沿い、前記主走査方向に垂直な副走査方向に沿って順次移動される走査位置ごとの画像を順次読み取り、読み取った画像に対応する電気信号を出力するイメージセンサと、
前記イメージセンサから順次出力される電気信号に応じて生成される画像データを一時的に格納するバッファメモリと、
前記バッファメモリに格納された画像データを前記外部機器へ順次転送するインタフェース部と、
を備え、
前記バッファメモリのデータ蓄積量を監視し、
前記バッファメモリのデータ蓄積量が所定の上限値まで増加した場合には、前記走査位置の移動を停止するとともに、前記画像データの生成を停止し、
前記データ蓄積量が所定の下限値まで減少した場合には、前記移動を停止した走査停止位置から所定の移動量だけ戻った走査再開位置を先頭として、前記走査位置の移動を再開するとともに、前記画像データの生成を再開し、
再開した前記画像データの生成のうち、前記走査再開位置から前記走査停止位置までの各走査位置については、前記イメージセンサから出力される電気信号に応じて生成される画像データと、前記バッファメモリに格納されている画像データと、に基づいて導き出されるデータを前記画像データとする、
ことを特徴とする画像読取装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スキャナや複写機等の画像読取装置に関するものである。
【背景技術】
【０００２】
近年、原稿、図面、写真等の画像（以下、「スキャン対象画像」と呼ぶ。）を走査して、コンピュータで処理可能な画像データを生成するスキャナが普及している。なお、画像データの表す画像を「電子化画像」と呼ぶ場合もある。
【０００３】
このスキャナは、スキャン対象画像の読み取りを指示したコンピュータ（以下、「ホストコンピュータ」とも呼ぶ。）に対して、生成した画像データを転送する。通常、スキャナがスキャン対象画像を走査して画像データを生成する速度（以下、「画像走査速度」とも呼ぶ。）は、スキャナからホストコンピュータへ画像データを転送する転送速度（以下、「画像転送速度」とも呼ぶ。）よりも速くなる。このため、スキャナは、生成した画像データを一時的に記憶するバッファメモリと呼ばれる記憶装置を備えており、バッファメモリに順次蓄積した画像データをホストコンピュータへ転送することとしている。具体的には、例えば、以下の手順で行われる。
【０００４】
スキャナは、スキャン対象画像の走査を開始すると、生成した画像データを順次バッファメモリに蓄積していく。バッファメモリが蓄積した画像データで一杯になってしまった時点で、その走査を一時停止する。そして、バッファメモリに蓄積された画像データがホストコンピュータへ順次転送されて、バッファメモリが空になるまで待機する。バッファメモリが空になったら、一時停止した走査位置から走査を再開する。このように、従来のスキャナは、スキャン対象画像を走査して画像データを生成し、ホストコンピュータへ転送していた。
【０００５】
しかしながら、上記のようにして、画像データを生成する場合、スキャン対象画像の走査の一時停止前と再開後との間で、走査位置に位置ずれが発生する場合があり、一時停止前に生成された画像データの表す画像と再開後に生成された画像データの表す画像との間で画像の繋ぎ目が発生してしまう場合があるため、高品位な画像を表す画像データを得ることができないという問題がある。
【０００６】
【特許文献１】特開平１１−２１５３２６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、上記問題点を解決するためになされたものであり、画像の繋ぎ目の発生を目立たなくして、高品位な画像を表す画像データを得ることが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的の少なくとも一部を達成するために、本発明は、
所定のスキャン対象画像を走査して画像データを生成し、生成した画像データを所定の外部機器へ転送する画像読取装置であって、
前記スキャン対象画像の主走査方向に沿った走査位置を、前記主走査方向に垂直な副走査方向に沿って順次移動させる走査位置制御部と、
前記走査位置ごとの画像を順次読み取り、読み取った画像に対応する電気信号を出力するイメージセンサと、
前記イメージセンサから順次出力される電気信号に応じた画像データを生成する画像処理部と、
前記画像処理部で順次生成される画像データを一時的に格納するバッファメモリと、
前記バッファメモリに格納された画像データを前記外部機器へ順次転送するインタフェース部と、
前記バッファメモリのデータ蓄積量を監視するデータ蓄積量監視部と、
を備え、
前記バッファメモリのデータ蓄積量が所定の上限値まで増加した場合には、前記走査位置制御部は前記走査位置の移動を停止するとともに、前記画像処理部は前記画像データの生成を停止し、
前記データ蓄積量が所定の下限値まで減少した場合には、前記走査位置制御部は、前記移動を停止した走査停止位置から所定の移動量だけ戻った走査再開位置を先頭として、前記走査位置の移動を再開するとともに、前記画像処理部は、前記画像データの生成を再開し、
前記画像処理部は、再開した前記画像データの生成のうち、前記走査再開位置から前記走査停止位置までの各走査位置については、前記イメージセンサから出力される電気信号に応じて生成される画像データと、前記バッファメモリに格納されている画像データと、に基づいて導き出されるデータを前記画像データとする、
ことを特徴とする。
【０００９】
上記構成の画像読取装置では、バッファメモリのデータ蓄積量が所定の上限値まで増加して走査位置の移動および画像データの生成を停止した後、バッファメモリのデータ蓄積量が所定の下限値まで減少して走査位置の移動および画像データの生成を再開した場合に、走査停止位置から所定の移動量だけ戻った走査再開位置から走査位置の移動および画像データの生成を再開している。そして、走査再開位置から走査停止位置までの各走査位置については、イメージセンサから出力される電気信号に応じて生成される画像データと、バッファメモリに格納されている画像データと、に基づいて導き出されるデータを画像データとしている。これにより、停止前に生成された画像データの表す画像と、再開後に生成された画像データの表す画像との間で発生する画像の繋ぎ目を目立たなくすることができ、高品位な画像を表す画像データを得ることが可能である。
【００１０】
ここで、前記導き出されるデータは、前記イメージセンサから出力される電気信号に応じて生成される画像データと、前記バッファメモリに格納されている画像データとの平均値を表すデータとすることができる。
【００１１】
こうすれば、停止前に生成された画像データの表す画像と、再開後に生成された画像データの表す画像との間で発生する画像の繋ぎ目を目立たなくするために、走査再開位置から走査停止位置までの各走査位置についての画像データを簡単に求めることができる。
【００１２】
なお、本発明は、上記した装置発明の態様に限ることなく、画像読取装置の制御方法などの方法発明としての態様で実現することも可能である。さらには、それら方法や装置を構築するためのコンピュータプログラムとしての態様や、そのようなコンピュータプログラムを記録した記録媒体としての態様や、上記コンピュータプログラムを含み搬送波内に具現化されたデータ信号など、種々の態様で実現することも可能である。
【００１３】
また、本発明をコンピュータプログラムまたはそのプログラムを記録した記録媒体等として構成する場合には、上記装置の動作を制御するプログラム全体として構成するものとしてもよいし、本発明の機能を果たす部分のみを構成するものとしてもよい。また、記録媒体としては、ＲＯＭカートリッジ、パンチカード、バーコードなどの符合が印刷された印刷物、コンピュータの内部記憶装置（ＲＡＭやＲＯＭなどのメモリ）および外部記憶装置などコンピュータが読み取り可能な種々の媒体を利用できる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態を実施例に基づいて以下の順序で説明する。
Ａ．実施例：
Ａ１．スキャナの構成：
Ａ２．画像読み取り動作：
Ａ３．具体例：
Ａ４．効果：
Ｂ．変形例：
【００１５】
Ａ．実施例：
Ａ１．スキャナの構成：
図１は、本実施例のスキャナの構成を示すブロック図である。このスキャナ１０は、パーソナルコンピュータ（以下、単に「パソコン」と呼ぶ。）ＰＣに接続されている。スキャナ１０は、ユーザによるパソコンＰＣからの指示に従って、図示しないスキャン対象画像を走査して画像データを生成し、生成した画像データをパソコンＰＣに転送する画像読取装置である。
【００１６】
このスキャナ１０は、イメージセンサ１２と、センサ搬送部１４と、制御回路１６と、を備えている。
【００１７】
イメージセンサ１２は、副走査方向に垂直な主走査方向に沿って複数のセンサがスキャン対象画像配列されたラインセンサである。このイメージセンサ１２は、後述する制御回路１６のセンサ位置制御部１９０からの指示に従って駆動されるセンサ搬送部１４により、副走査方向に沿って、スキャン対象画像を走査する各ラインに対応する位置（走査位置）に順次移動する。なお、このイメージセンサ１２の走査位置への移動は、イメージセンサ１２自身が移動するものと、スキャン対象画像が移動するものとがある。本例では、イメージセンサ１２自身が移動するものとして説明する。そして、イメージセンサ１２は、各走査位置からの画像を表す反射光を電気信号に変換し、後述する制御回路１６の画像処理部１７０に出力する。イメージセンサ１２から出力された電気信号は、画像処理部１７０によって画像データに変換される。
【００１８】
制御回路１６は、主として、ＣＰＵ１１０と、ＲＯＭ１２０と、ＲＡＭ１３０と、外部インタフェース１４０と、バッファメモリ（以下、単に「バッファ」と呼ぶ。）１５０と、バッファ制御部１６０と、画像処理部１７０と、センサ動作制御部１８０と、センサ位置制御部１９０と、を備える。
【００１９】
ＲＡＭ１３０は、所定のプログラムの展開作業やスキャナ１０の動作をコントロールするための種々の設定データの作成作業等を行うための作業領域として機能する。
【００２０】
ＣＰＵ１１０は、ＲＯＭ１２０に格納されている所定のプログラムをＲＡＭ１３０上で実行することにより、スキャナ１０全体をコントロールするための種々の制御を行う。また、ＣＰＵ１１０は、ユーザに指示され、パソコンＰＣから送信されてくる、スキャン対象画像の読み取り解像度（ｄｐｉ）を表す解像度情報や走査対象物において走査する領域（以下では、「走査領域」と呼ぶ。）を表す走査領域情報などを外部インタフェース１４０を介して受け取る。そして、受け取った解像度情報（主走査方向の解像度および副走査方向の解像度）およびスキャン対象画像の走査領域情報（主走査方向および副走査方向の長さ等）に基づいて、スキャン処理開始位置やスキャン処理終了位置、走査するライン数、走査するライン間隔等の情報を求める。求められたこれらの情報は、センサ位置制御部１９０やセンサ動作制御部１８０、画像処理部１７０の動作を制御する制御情報としてＲＡＭ１３０に保存するとともに、処理状況に応じてセンサ動作制御部１８０およびセンサ位置制御部１９０に受け渡される。
【００２１】
センサ動作制御部１８０は、与えられた解像度情報および走査領域情報に基づいて、イメージセンサ１２において、入射する反射光を電気信号に変換する動作と、画像処理部１７０においてイメージセンサ１２から出力される電気信号を画像データに変換する動作と、を制御する。
【００２２】
画像処理部１７０において生成された画像データは、スキャンデータとして順次バッファ１５０に格納される。バッファ１５０に格納された画像データは、外部インタフェース１４０を介してパソコンＰＣに転送される。なお、画像処理部１７０から出力される画像データのバッファ１５０への書き込みと、外部インタフェース１４０へ出力される画像データのバッファ１５０からの読み出しとは、ＣＰＵ１１０からの指示に従って動作するバッファ制御部１６０によって制御される。
【００２３】
外部インタフェース１４０は、バッファ１５０から出力される画像データを、ＣＰＵ１１０からの指示に従ってパソコンＰＣへ転送する。なお、パソコンＰＣとの間の画像データの転送に利用されるインタフェースとしては、ＵＳＢやＲＳ−２３２Ｃ、ＳＣＳＩ等の種々の通信インタフェースを利用可能である。
【００２４】
センサ位置制御部１９０は、センサ搬送部１４の動作を制御することにより、イメージセンサ１２を副走査方向に沿って移動させて、スキャン対象画像を走査する各ラインに対応する位置（走査位置）に順次移動するように制御する。
【００２５】
以上説明したように、スキャナ１０は、制御回路１６がイメージセンサ１２およびセンサ搬送部１４を駆動することにより、スキャン対象画像を読み取って画像データを生成し、生成した画像データのパソコンＰＣへの転送を実行する。
【００２６】
なお、センサ位置制御部１９０およびセンサ搬送部１４が本発明の走査位置制御部に相当する。また、ＣＰＵ１１０およびバッファ制御部１６０が本発明のデータ蓄積量監視部に相当する。
【００２７】
Ａ２．画像読み取り動作：
次に、制御回路１６によって実行されるスキャン対象画像の読み取り処理について、図２を用いて説明する。
【００２８】
図２は、制御回路１６によって実行されるスキャン対象画像の読み取り処理について示すフローチャートである。
【００２９】
まず、ＣＰＵ１１０は、センサ位置制御部１９０およびセンサ動作制御部１８０の動作を制御して、スキャン処理開始位置Ｌｓｔを先頭ラインとしてスキャン対象画像のスキャン処理を開始させる（ステップＳ１０）。
【００３０】
ここで、スキャン処理が開始されると、画像処理部１７０は、イメージセンサ１２から順次入力される電気信号に応じた画像データを生成し、バッファ１５０に向けて出力する。そして、バッファ１５０は、バッファ制御部１６０の制御に従って、画像処理部１７０から出力された画像データを、順次格納する。
【００３１】
図３および図４は、画像処理部１７０によって実行される画像処理について示すフローチャートである。
【００３２】
まず、走査するライン位置を示す処理位置Ｍｓを、先頭の走査位置であるスキャン処理開始ライン位置Ｌｓｔにセットする（ステップＳ１１０）。そして、イメージセンサ１２から順次入力される電気信号に応じた画像データを、走査したラインの主走査方向に沿った各画素のスキャンデータとして生成し（ステップＳ１２０）、バッファ制御部１６０に従ってバッファ１５０に書き込む（ステップＳ１３０）。そして、走査した１ライン分についての処理が終了したか否か判断する（ステップＳ１４０）。１ライン分の処理が終了していない場合には（ステップＳ１４０：ＮＯ）、１ライン分の処理が終了するまで、ステップＳ１２０およびＳ１３０の処理を繰り返す。１ライン分の処理が終了した場合には、さらに、スキャン処理を停止するか否か判断する（ステップＳ１５０）。このスキャン処理の停止は、後述するように、ＣＰＵ１１０からのスキャン処理停止指示の有無により実行される。
【００３３】
スキャン処理停止指示が無く、スキャン処理を停止しない場合には(ステップＳ１５０：ＮＯ)、処理位置ＭＳを１ライン変化させて（ステップＳ１６０）、処理位置ＭＳがスキャン処理終了ライン位置Ｌｅｎｄを超えたか否か判断する(ステップＳ１７０)。処理位置ＭＳがスキャン処理終了ライン位置Ｌｅｎｄを超えた場合には（ステップＳ１７０：ＹＥＳ）、画像処理を終了し、超えていない場合には(ステップＳ１７０：ＮＯ)、ステップＳ１２０に戻って、新たな処理位置Ｍｓに対応するラインのスキャンデータとして、画像データの生成およびバッファ１５０への書き込みを実行する。こうして、スキャン処理終了位置Ｌｅｎｄの走査を終了するまで、画像データの生成およびバッファ１５０への書き込みが繰り返し実行される。
【００３４】
一方、ステップＳ１５０において、スキャン処理停止指示が有り、スキャン処理を停止する場合には（ステップＳ１５０：ＹＥＳ）、スキャン処理を再開するまで待機する(ステップＳ２１０)。このスキャン処理の再開は、後述するように、ＣＰＵ１１０からのスキャン処理再開指示の有無により判断される。
【００３５】
ここで、ＣＰＵ１１０は、以下で示すようにして画像処理部１７０にスキャン処理停止指示および再開指示を与える。
【００３６】
図２に示すように、ＣＰＵ１１０は、ステップＳ１０においてスキャン処理を開始させると、次に、バッファ制御部１６０を介してバッファ１５０における画像データの蓄積量（以下、「データ蓄積量」と呼ぶ。）Ｍｕｓの監視を開始し、データ蓄積量Ｍｕｓが使用可能な上限値Ｍｕｐまで増加したか否か判断する（ステップＳ２０）。
【００３７】
データ蓄積量Ｍｕｓが上限値Ｍｕｐまで増加していない場合には（ステップＳ２０：ＮＯ）、さらに、スキャン処理を終了するか否かの判断を行い（ステップＳ６０）、スキャン処理を終了しないならば（ステップＳ６０：ＮＯ）、ステップＳ２０の処理に戻り、データ蓄積量Ｍｕｓの判断およびその後の処理を繰り返す。なお、スキャン処理の終了は、画像処理１７０から与えられる画像処理終了応答により判断される。
【００３８】
一方、データ蓄積量Ｍｕｓが上限値Ｍｕｐまで増加した場合には（ステップＳ２０：ＹＥＳ）、センサ位置制御部１９０やセンサ動作制御部１８０、画像処理部１７０に対してスキャン処理停止指示を与えて、スキャン処理を停止させ、スキャン停止位置Ｌｓｔｐを示す情報、および、停止直前に画像データを格納したバッファ蓄積位置Ｍｓｔｐを示す情報を、センサ位置制御部１９０およびバッファ制御部１６０から取得して、ＲＡＭ１３０に保存する。そして、データ蓄積量Ｍｕｓが所定の下限値Ｍｄｐ以下に減少するまで、データ蓄積量ＭＵｓの判断処理を繰り返す（ステップＳ４０）。
【００３９】
データ蓄積量Ｍｕｓが下限値Ｍｄｐ以下に減少した場合には（ステップＳ４０：ＹＥＳ）、スキャン処理再開位置Ｌｒｓｔを先頭に画像のスキャン処理を再開させる。そして、スキャン処理を終了するか否かの判断を行い（ステップＳ６０）、スキャン処理を終了しないならば（ステップＳ６０：ＮＯ）、ステップＳ２０の処理に戻り、データ蓄積量Ｍｕｓの判断およびその後の処理を繰り返す。
【００４０】
なお、スキャン処理再開位置Ｌｒｓｔは、スキャン停止位置Ｌｓｔｐおよび補正ライン数Ｌｃｐをパラメータとして、下式で表される。すなわち、スキャン処理再開位置Ｌｒｓｔは、スキャン停止位置Ｌｓｔｐから補正ライン数Ｌｃｐだけ戻ったライン位置とする。
Ｌｒｓｔ＝（Ｌｓｔｐ＋１）−Ｌｃｐ  ...（１）
【００４１】
ここで、スキャン処理が再開されると、画像処理部１７０は、イメージセンサ１２から順次入力される電気信号に応じた画像データの生成を再開する。そして、バッファ１５０は、バッファ制御部１６０の制御に従って、画像処理部１７０から出力された画像データを、順次格納する。
【００４２】
具体的には、図４に示すように、スキャン処理が再開されると（ステップＳ２１０：ＹＥＳ)、処理位置Ｍｓをスキャン処理再開位置Ｌｒｓｔにセットする（ステップＳ２２０）。そして、イメージセンサ１２から順次入力される電気信号に応じた画像データを、走査したラインの主走査方向に沿った各画素のスキャンデータ（以下、「再開後スキャンデータ」とも呼ぶ。）として生成する（ステップＳ２３０）。また、生成した画像データと同じ位置の画像データとして、停止前のスキャン処理においてバッファ１５０に既に書き込まれている画像データ（以下、「停止前スキャンデータ」とも呼ぶ。）をバッファ１５０から読み出して取得する（ステップＳ２４０）。そして、再開後スキャンデータと停止前スキャンデータとの平均値を求め（ステップＳ２５０）、求めた平均値の表す画像データをスキャンデータとしてバッファ１５０に書き戻す（ステップＳ２６０）。そして、走査した１ライン分についての処理が終了したか否か判断する(ステップＳ２７０)。１ライン分の処理が終了していない場合には(ステップＳ２７０：ＮＯ)、１ライン分の処理が終了するまで、ステップＳ２３０ないしＳ２６０の処理を繰り返す。一方走査した１ライン分についての処理が終了した場合には（ステップＳ２７０：ＹＥＳ）、処理位ＭＳを１ライン変化させて（ステップＳ２８０）、処理位置ＭＳがスキャン停止位置Ｌｓｔｐを超えたか否か判断する(ステップＳ２９０)。処理位置ＭＳがスキャン停止位置Ｌｓｔｐを超えていない場合には（ステップＳ２９０：ＮＯ）、ステップＳ２３０に戻って、ステップＳ２３０ないしＳ２８０の処理を繰り返して、新たな処理位置Ｍｓに対応するラインのスキャンデータを生成する。一方、処理位置ＭＳがスキャン停止位置Ｌｓｔｐを超えた場合には（ステップＳ２９０：ＹＥＳ）、図３のステップＳ１２０に戻って、スキャン処理停止前と同様に、ステップＳ１２０以降の通常のスキャン処理による画像処理を実行する。
【００４３】
以上のようにして、本実施例のスキャナ１０においては、制御回路１６によって査対象画像の読み取り処理が実行される。
【００４４】
Ａ３．具体例：
次に、図２〜図４を用いて説明したスキャン対象画像の読み取り処理について、図５に示すスキャン対象画像および図６に示すバッファを例に、図７を用いてさらに具体的に説明する。
【００４５】
図５は、読み取り処理について説明するためのスキャン対象画像の具体例を示す説明図である。このスキャン対象画像ＰＳは、説明を容易にするため、用紙の上下左右の端縁までを走査領域とし、解像度情報および走査領域情報によって決定される副走査方向のライン数が４０の画像であるとする。また、各ラインについて、先頭のライン（ＳＬ）から順に１，２，３，...，４０の番号で示すこととする。ここで、センサ位置制御部１９０によって制御される、実際の各ラインの位置は、スキャン処理開始位置Ｌｓｔに対応するスキャン対象画像上の実際の位置やライン間隔に基づいて決定されるが、上記図２〜図４を用いて説明したスキャン対象画像の読み取り処理では、実際のライン位置は問題ではなく、先頭ラインからの相対的な位置が問題となる。そこで、上記したように、各ライン位置を先頭からのライン番号で規定することとする。また、このスキャン対象画像は、後述する効果をより明確に示すため、左上から右下へ向う斜め線が引かれた図面であるとする。なお、図５中の破線はラインの区切りを示しており、実際の画像中に存在するものではない。
【００４６】
図６は、読み取り処理について説明するためのバッファ１５０の具体例を示す説明図である。このバッファ１５０としては、スキャン対象画像ＰＳの２０ライン分の画像データを記憶するメモリを用いることとする。ただし、説明を容易にするため、バッファ１５０は、図６に示すように、２０ライン分の画像データをライン単位で記憶するもの、例えば、スキャン対象画像ＰＳの１ライン分の画像データを記憶するラインバッファＭＬを２０ライン分備えるものとする。また、各ラインバッファＭＬについて、先頭のラインバッファから順に１，２，３，...，２０の番号で示すこととする。また、データ蓄積量Ｍｕｓ、その上限値Ｍｕｐおよび下限値Ｍｄｐを、ライン数で定義することとし、バッファ１５０に記憶可能な最大のライン数である２０を上限値Ｍｕｐとして設定し、上限値Ｍｕｐの半分のライン数である１０を下限値Ｍｄｐとして設定することとする。さらに、スキャン処理中において、バッファ１５０へのデータの格納速度は、バッファ１５０から読み出されて外部インタフェース１４０を介してパソコンＰＣへ送信する転送速度に比べて速く、１ライン分の画像データをパソコンＰＣへ送信するよりも、２０ライン分の画像データを格納する方が速いこととする。なお、図６の例は、図５のスキャン対象画像のラインＳＬ１〜ラインＳＬ２０までの画像が、ラインバッファＭＬ１〜ＭＬ２０に順に格納された状態を概念的に示しており、第１のラインバッファＭＬ１中のクロスハッチで示す部分は、パソコンＰＣへ転送済みのデータ領域を示している。
【００４７】
図７は、図５に示すスキャン対象画像の読み取り処理について、図６に示すバッファを例にして具体的に示す説明図である。スキャン対象画像ＰＳの１番目のラインＳＬ１をスキャン処理開始位置Ｌｓｔとして（Ｌｓｔ＝１）、スキャン処理を開始すると、１ラインごとにラインＳＬ１，ＳＬ２，ＳＬ３...の順に走査して、読み取った画像の画像データが生成される。そして、生成された画像データは、スキャンデータとしてバッファ１５０にラインバッファＭＬ１，ＭＬ２，ＭＬ３...の順に格納される。
【００４８】
上述したように、スキャン対象画像ＰＳの２０番目のラインＳＬ２０が走査されて、読み取られた画像の画像データがバッファ１５０の２０番目のラインバッファＭＬ２０に格納されても、１番目のラインＳＬ１の画像データのパソコンＰＣへの転送は終了していないことになるので、データ蓄積量ＭｕｓはＭｕｓ＝２０となる。この結果、データ蓄積量Ｍｕｓは、使用可能な上限値Ｍｕｐ（＝２０）まで増加したことになり、１回目のスキャン処理が停止されることになる。そして、スキャン処理が停止された２０番目のラインＳＬ２０の番号２０がスキャン停止位置Ｌｓｔｐとして記憶され、格納後停止した２０番目のラインバッファＭＬ２０の番号２０がバッファ蓄積位置Ｍｓｔｐとして記憶される。なお、図７のバッファ１５０の使用量を概念的に示しており、空白の部分が空き領域を示し、クロスハッチングの部分が使用領域を示している。
【００４９】
スキャン処理が停止されても、外部インタフェース１４０を介してパソコンＰＣへの画像データの転送は引き続き実行される。なお、データ蓄積量Ｍｕｓは、既に格納されているラインバッファの数から、画像データを転送済みのラインバッファの数を差し引いた数である。従って、ラインバッファＭＬ１，ＭＬ２，ＭＬ３...の順に格納されている画像データがラインバッファＭＬ１，ＭＬ２，ＭＬ３...の順に転送されると、これに応じてデータ蓄積量Ｍｕｓは減少していくことになる。
【００５０】
そして、ラインバッファＭＬ１〜ＭＬ１０に格納された画像データが転送されて、データ蓄積量ＭｕｓがＭｕｓ＝１０となると、データ蓄積量Ｍｕｓは下限値Ｍｄｐ（＝１０）まで減少したことになり、停止していたスキャン処理が再開される。スキャン処理の再開位置Ｌｒｓｔは、上式（１）により決定される。例えば、補正ライン数ＬｃｐをＬｃｐ＝４とすると、スキャン処理再開位置ＬｒｓｔはＬｒｓｔ＝１７に設定される。
【００５１】
ここで、スキャン処理が再開されると、２回目のスキャン処理の先頭のラインである１７番目のラインＳＬ１７から、１回目のスキャン処理の最後のラインである２０番目のラインＳＬ２０までの４本の各ラインは、１回目のスキャン処理において既に走査が実行されて、それぞれのラインに対応する画像データがラインバッファＭＬ１７からラインバッファＭＬ２０に格納されている重複ラインであるので、以下で説明するようにして生成された画像データが新たなスキャンデータとしてバッファ１５０に格納される。
【００５２】
図８は、重複ラインについての画像データの生成について示す説明図である。重複ラインであるラインＳＬ１７〜ラインＳＬ２０は、バッファ１５０のラインバッファＭＬ１７〜ラインバッファＭＬ２０に、それぞれ第１回目のスキャン処理において既に生成された画像データが格納されている。そこで、第２回目のスキャン処理において、１７番目のラインＳＬ１７の主走査方向の各画素について、新たに１７番目のラインＳＬ１７を走査して生成した画像データ（再開後スキャンデータ）と、既に１７番目のラインバッファＭＬ１７に格納されている画像データ（停止前スキャンデータ）との平均値が求められ、求められた平均値の表す画像データが１７番目のラインＳＬ１７のスキャンデータとして、ラインバッファＭＬ１７に書き戻される。他のラインＳＬ１８〜ラインＳＬ２０についても、同様である。
【００５３】
次に、図７において、２１番目のラインＳＬ２１以降のラインは、１回目のスキャン処理では走査されていない新たなラインであるので、１回目のスキャン処理と同様に、１ラインごとにラインＳＬ２１，ＳＬ２２，ＳＬ２３，...の順に走査して、読み取った画像の画像データが生成される。そして、生成された画像データはスキャンデータとしてバッファ１５０の空いている領域に順に格納される。具体的には、上述したように、データ蓄積量ＭｕｓがＭｕｓ＝２０となって第１回目のスキャン処理が停止した後、第２回目のスキャン処理が開始されるまでの間、１番目のラインバッファＭＬ１から順に画像データが転送される。そして、データ蓄積量Ｍｕｓが減少してＭｕｓ＝１０となって第２回目のスキャン処理が開始されるときには、ラインバッファＭＬ１〜ラインバッファＭＬ１０が空き領域となっている。従って、順に生成されたラインＳＬ２１〜ラインＳＬ３０のスキャンデータは、バッファ１５０にラインバッファＭＬ１，ＭＬ２，ＭＬ３...の順に格納される。
【００５４】
図９は、バッファ１５０のラインバッファＭＬ１７〜ＭＬ２０に停止前スキャンデータと再開後スキャンデータの平均値がスキャンデータとして書き込まれ、ラインバッファＭＬ１〜ラインバッファＭＬ１０に新たなラインＳＬ２１〜ＳＬ３０のスキャンデータが書き込まれた状態を示す説明図である。
【００５５】
ここで、第１回目のスキャン処理における２０番目のラインＳＬ２０と同様に、スキャン対象画像ＰＳの３０番目のラインＳＬ３０が走査されて、読み取られた画像の画像データがバッファ１５０の１０番目のラインバッファＭＬ１０に格納されても、上述したように、１１番目のラインバッファＭＬ１１に格納されたスキャン対象画像ＰＳの１１番目のラインＳＬ１１の画像データの転送は終了していないので(図中クロスハッチの部分のみが転送済み)、データ蓄積量ＭｕｓはＭｕｓ＝２０となる。この結果、データ蓄積量Ｍｕｓは、使用可能な上限値Ｍｕｐ（＝２０）まで増加したことになり、再開した２回目のスキャン処理が停止されることになる。そして、スキャン処理が停止された３０番目のラインＳＬ３０の番号３０がスキャン停止位置Ｌｓｔｐとして記憶され、スキャンデータを格納後停止した１０番目のラインバッファＭＬ１０の番号１０がバッファ蓄積位置Ｍｓｔｐとして記憶される。
【００５６】
図７において、２回目のスキャン処理が停止された後、バッファ１５０のラインバッファＭＬ１１〜ＭＬ２０に格納されていた画像データが転送されて、データ蓄積量ＭｕｓがＭｕｓ＝１０となると、データ蓄積量Ｍｕｓは下限値Ｍｄｐ（＝１０）まで減少したことになり、停止していたスキャン処理が再開される。スキャン処理の再開位置Ｌｒｓｔは、上式（１）により、Ｌｒｓｔ＝２７に設定される。
【００５７】
ここで、３回目のスキャン処理が開始されると、３回目のスキャン処理の先頭のラインである２７番目のラインＳＬ２７から、２回目のスキャン処理の最後のラインである３０番目のラインＳＬ３０までの４本の各ラインは、２回目のスキャン処理において既に走査が実行されて、それぞれのラインに対応する画像データがラインバッファＭＬ７からラインバッファＭＬ１０に格納されている重複ラインであるので、２回目のスキャン処理において説明したのと同様に、走査して読み取った画像の画像データ（再開後スキャンデータ）と、既にラインバッファに格納されている画像データ（停止前スキャンデータ）との平均値が求められ、求められた平均値の表す画像データが対応するラインのスキャンデータとして、対応するラインバッファに順に書き戻される。
【００５８】
そして、３１番目のラインＳＬ３１以降のラインは、２回目のスキャン処理では走査されていない新たなラインであるので、１回目および２回目のスキャン処理と同様に、１ラインごとにラインＳＬ３１，ＳＬ３２，ＳＬ３３，...の順に走査して、読み取った画像の画像データがスキャンデータとして生成される。そして、生成した画像データは、スキャンデータとしてバッファ１５０の空いている領域、すなわち、ラインバッファＭＬ１１〜ラインバッファＭＬ２０に、ラインバッファＭＬ１１，ＭＬ１２，ＭＬ１３...の順に格納される。
【００５９】
以上のようにして、図５に示したライン数４０のスキャン対象画像は、３回のスキャン処理により読み取られ、生成された画像データがパソコンＰＣへ転送される。
【００６０】
Ａ４．効果：
図１０は、実施例の効果を示す説明図である。従来のように、スキャン処理の途中でバッファが一杯になって、スキャン処理を停止した場合、スキャン処理を停止した次のラインからスキャン処理を再開していた。この場合、スキャン処理を一旦停止した後スキャン処理を再開する際に、スキャン処理の再開位置にずれが発生する場合があり、図１０（Ａ）に示すように、スキャン処理の停止前の画像とスキャン処理の再開後の画像との境界で繋ぎ目が発生してしまう場合がある。図１０（Ａ）は、２０番目のラインＳＬ２０でスキャン処理を一旦停止し、２１番目のラインＳＬ２１からスキャン処理を再開したために、２１番目のラインＳＬ２１以降の斜め線が２０番目のラインＳＬ２０までの斜め線に比べて右方向にずれた状態を示している。
【００６１】
しかしながら、上記実施例の場合には、上述したように、バッファが一杯になって、スキャン処理を停止した場合、停止前のラインの一部と重複したラインからスキャン処理を再開している。そして、重複ライン部分については、先のスキャン処理で生成した画像データと後のスキャン処理で生成した画像データとの平均値を求めることにより生成した画像データを、その重複ラインの画像データとしている。これにより、図１０（Ｂ）に示すように、画像の繋ぎ目を目立たなくすることができる。なお、図１０（Ｂ）は、２０番目のラインＳＬ２０でスキャン処理を一旦停止した場合に、１７番目のラインＳＬ１７からスキャン処理を再開して、ラインＳＬ１７〜ラインＳＬ２０までの画像データを、先のスキャン処理で生成した画像データと、後のスキャン処理で生成した画像データとの平均値とした場合を示しており、図１０（Ａ）の従来例に比べて、２１番目のラインＳＬ２１以降の斜め線の右方向へのずれを目立たなくするように補正した状態を示している。
【００６２】
Ｂ．変形例：
なお、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能である。
【００６３】
Ｂ１．変形例１：
上記実施例では、説明の便宜上、バッファ１５０を、２０ライン分の画像データを１ラインごとに記憶する２０ライン分のラインバッファで構成したメモリとして説明したが、ラインバッファではなく種々の一般的なメモリに構成することが可能である。また、記憶容量も２０ライン分に限定されるものではない。
【００６４】
Ｂ２．変形例２：
上記実施例では、説明の便宜上、バッファ１５０に記憶可能な画像データの上限値Ｍｕｐを２０ライン、下限値Ｍｄｐを１０ラインとして説明したが、これに限定されるものではない。上限値Ｍｕｐは、設定されるバッファの記憶容量によって決定され、下限値Ｍｄｐは、スキャン対象画像を走査する速度と、画像データをパソコンへ転送する速度との関係を考慮して、適切な値に設定されるべきものである。
【００６５】
Ｂ３．変形例３：
上記実施例では、説明の便宜上、スキャン処理の再開時に重複して走査する補正ライン数ＬｃｐをＬｃｐ＝４として説明したが、これに限定されるものではない。この補正ライン数Ｌｃｐは、画像の繋ぎ目を効果的に目立たなくするように設定されるべきものである。
【００６６】
Ｂ４．変形例４：
上記実施例では、スキャン処理の再開時において、重複ラインの部分については、先のスキャン処理で生成した画像データと後のスキャン処理で生成した画像データとの平均値を求めることにより生成した画像データを、その重複ラインの画像データとして、先のスキャン処理で生成した画像データが格納されている領域に格納する構成としている。しかしながら、これに限定されるものではなく、空き領域に格納し、先のスキャン処理で生成した画像データが格納されている領域を空き領域に変更するようにしてもよい。
【００６７】
Ｂ５．変形例５：
上記実施例では、重複ラインの部分については、先のスキャン処理で生成した画像データと後のスキャン処理で生成した画像データとの平均値を求めることにより生成した画像データを、その重複ラインの画像データとしているが、必ずしも平均値である必要はなく、先のスキャン処理で生成した画像データと、後のスキャン処理で生成した画像データと、に基づいて導きだされたデータを画像データとするようにすればよい。例えば、先のスキャン処理で生成した画像データと後のスキャン処理で生成した画像データとで重み付けを買えて平均値を求める等の種々の方法が考えられる。
【００６８】
Ｂ６．変形例６：
上記実施例において、スキャナ１０の各部は、ソフトウェア的に構成されているものを、ハードウェア的に構成するようにしてもよいし、ハードウェア的に構成されているものを、ソフトウェア的に構成するようにしてもよい。
【図面の簡単な説明】
【００６９】
【図１】本実施例のスキャナの構成を示すブロック図である。
【図２】制御回路１６によって実行されるスキャン対象画像の読み取り処理について示すフローチャートである。
【図３】画像処理部１７０によって実行される画像処理について示すフローチャートである。
【図４】画像処理部１７０によって実行される画像処理について示すフローチャートである。
【図５】読み取り処理について説明するためのスキャン対象画像の具体例を示す説明図である。
【図６】読み取り処理について説明するためのバッファ１５０の具体例を示す説明図である。
【図７】図５に示すスキャン対象画像の読み取り処理について図６に示すバッファを例にして具体的に示す説明図である。
【図８】重複ラインについての画像データの生成について示す説明図である。
【図９】バッファ１５０のラインバッファＭＬ１７〜ＭＬ２０に停止前スキャンデータと再開後スキャンデータの平均値がスキャンデータとして書き込まれ、ラインバッファＭＬ１〜ラインバッファＭＬ１０に新たなラインＳＬ２１〜ＳＬ３０のスキャンデータが書き込まれた状態を示す説明図である。
【図１０】実施例の効果を示す説明図である。
【符号の説明】
【００７０】
１０...スキャナ
１２...イメージセンサ
１４...モータ
１６...制御回路
１１０...ＣＰＵ
１２０...ＲＯＭ
１３０...ＲＡＭ
１４０...外部インタフェース
１５０...バッファ
１６０...バッファ制御部
１７０...画像処理部
１８０...センサ動作制御部
１９０...センサ位置制御部
ＰＣ...パーソナルコンピュータ（パソコン）
【図１】
2007053423.tif 000003
【図２】
2007053423.tif 000004
【図３】
2007053423.tif 000005
【図４】
2007053423.tif 000006
【図５】
2007053423.tif 000007
【図６】
2007053423.tif 000008
【図７】
2007053423.tif 000009
【図８】
2007053423.tif 000010
【図９】
2007053423.tif 000011
【図１０】
2007053423.tif 000012