JP4613984B2 - 画像読取装置、及び記憶領域割り当て方法 - Google Patents

画像読取装置、及び記憶領域割り当て方法 Download PDF

Info

Publication number
JP4613984B2
JP4613984B2 JP2008174935A JP2008174935A JP4613984B2 JP 4613984 B2 JP4613984 B2 JP 4613984B2 JP 2008174935 A JP2008174935 A JP 2008174935A JP 2008174935 A JP2008174935 A JP 2008174935A JP 4613984 B2 JP4613984 B2 JP 4613984B2
Authority
JP
Japan
Prior art keywords
buffer
full
allocation
cpu
reading
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2008174935A
Other languages
English (en)
Other versions
JP2010016646A (ja
Inventor
伸彦 鈴木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Brother Industries Ltd
Original Assignee
Brother Industries Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Brother Industries Ltd filed Critical Brother Industries Ltd
Priority to JP2008174935A priority Critical patent/JP4613984B2/ja
Priority to US12/496,098 priority patent/US8498023B2/en
Publication of JP2010016646A publication Critical patent/JP2010016646A/ja
Application granted granted Critical
Publication of JP4613984B2 publication Critical patent/JP4613984B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/40Picture signal circuits
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/32Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
    • H04N1/32358Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device using picture signal storage, e.g. at transmitter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/0077Types of the still picture apparatus
    • H04N2201/0081Image reader
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/0077Types of the still picture apparatus
    • H04N2201/0086Image transceiver
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/32Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
    • H04N2201/3285Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device using picture signal storage, e.g. at transmitter
    • H04N2201/3297Simultaneous use of a single memory for different image storage purposes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/32Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
    • H04N2201/3285Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device using picture signal storage, e.g. at transmitter
    • H04N2201/3298Checking or indicating the storage space

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Facsimiles In General (AREA)
  • Storing Facsimile Image Data (AREA)
  • Processing Or Creating Images (AREA)

Description

本発明は、画像読取装置、及び記憶領域割り当て方法に関する。
従来、上位の処理部から受け取った印刷データを記憶手段にバッファリングして下位の処理部に受け渡すバッファリング機構を備え、当該記憶手段のうちバッファリングに使用できる容量の上限値をユーザが設定できる印刷装置が知られている(例えば特許文献1参照)。
特開2002−11906公報
しかしながら、複数の手段毎に異なるバッファ領域に画像データを記憶させる画像読取装置の場合は、ユーザがそれら複数のバッファ領域に記憶領域を適切に割り当てることは容易ではない。
本発明は上記のような事情に基づいて完成されたものであって、複数のバッファ領域への記憶領域の割り当てが容易な画像読取装置、及び記憶領域割り当て方法を提供することを目的とする。
第1の発明は、画像読取装置であって、ADFによって読取位置上を搬送されている原稿、又は、原稿台に平行な方向に移動して当該原稿台上に載置されている原稿を読み取って画像データを生成する読取手段と、前記読取手段から出力される画像データを順次処理する1つ以上の処理手段と、前記処理手段から出力される画像データを送信する送信手段と、前記読取手段、1つ以上の前記処理手段、及び前記送信手段の間で画像データを受け渡すための複数のバッファ領域が割り当てられる記憶手段と、前記原稿の所定範囲を読み取って当該所定範囲分の画像データを送信するまでの間の各前記バッファ領域の使用状況を取得する取得手段と、前記取得手段によって前記所定範囲についての使用状況が取得された後、前記読取手段によって当該所定範囲より後の範囲の読み取りが開始される前に、当該取得された使用状況に基づいて、バッファフルが発生し難くなるように少なくとも2つの前記バッファ領域の間で記憶領域の割り当てを変更する変更手段と、を備え、前記原稿は前記ADFによって前記原稿が移動する方向又は前記読取手段が前記原稿台に対して移動する方向に互いに離間して複数の前記所定範囲が設定され、前記取得手段は前記所定範囲毎に使用状況を取得し、前記変更手段は前記取得手段によって使用状況が取得される毎に記憶領域の割り当てを変更する
この発明によると、変更手段が各バッファ領域の使用状況に基づいて少なくとも2つのバッファ領域の間で記憶領域の割り当てを変更するので、ユーザは自ら割り当てを変更する作業を行う必要がない。
よってこの発明によると、複数のバッファ領域への記憶領域の割り当てが容易である。
更に、この発明によると、複数のバッファ領域の間で適切に記憶領域の割り当てが変更された状態で原稿の所定範囲以降の範囲の読み取りを実行でき、所定範囲以降の範囲を読み取る際のパフォーマンスを好適に向上できる。
更に、この発明によると、1つの原稿を読み取っている間に原稿内容の変化に応じてよりきめ細かく記憶領域の割り当てを変更できるので、より適切に変更できる。
の発明は、第の発明の画像読取装置であって、画像データが前回と同じ送信先に前回と同じ前記送信手段で送信される場合、前記取得手段は使用状況の取得を行わず、前記変更手段は記憶領域の割り当てを変更しない。
一般に送信手段の送信能力はバッファ領域の使用状況に大きく影響する。逆にいうと、送信能力が前回と同じであれば、送信手段以外の処理手段による影響はあるものの、画像読取装置は概ね前回と同程度のパフォーマンスを維持できる可能性がある。
ところで、送信能力は送信手段にのみ依存するのではなく、送信先の機器の受信能力にも依存する。したがって、送信先及び送信手段が前回と同じである場合は、前回と概ね同程度の処理能力を維持できるものとして使用状況の取得や割り当ての変更を省略することにより、効率よく処理を実行できる。
の発明は、第1又は第2の発明の画像読取装置であって、前記取得手段は、前記使用状況としてバッファ領域を使い切るバッファフルが発生した順番を取得し、前記変更手段は、バッファフルが発生した順番が相対的に遅い前記バッファ領域への記憶領域の割り当てを減らし、バッファフルが発生した順番が相対的に早い前記バッファ領域への記憶領域の割り当てを増やす。
バッファフルが発生した順番が相対的に早いバッファ領域は今後もバッファフルが発生する可能性が高いバッファ領域であり、逆にバッファフルが発生した順番が相対的に遅いバッファ領域は今後もバッファフルが発生する可能性が低いバッファ領域であるといえる。したがって、バッファフルが発生した順番が相対的に遅いバッファ領域への記憶領域の割り当てを減らしてバッファフルが発生した順番が相対的に早いバッファ領域への記憶領域の割り当てを増やすことにより、バッファフルが発生する可能性を低減でき、パフォーマンスを好適に向上できる。
の発明は、第1又は第2の発明の画像読取装置であって、前記取得手段は、前記使用状況としてバッファ領域を使い切るバッファフルが発生した回数を前記バッファ領域毎に取得し、前記変更手段は、バッファフルになった回数が相対的に少ない前記バッファ領域への記憶領域の割り当てを減らし、バッファフルになった回数が相対的に多い前記バッファ領域への記憶領域の割り当てを増やす。
バッファフルになった回数が相対的に多いバッファ領域は今後もバッファフルが発生する可能性が高いバッファ領域であり、逆にバッファフルになった回数が相対的に少ないバッファ領域は今後もバッファフルが発生する可能性が低いバッファ領域であるといえる。したがって、バッファフルになった回数が相対的に少ないバッファ領域への記憶領域の割り当てを減らし、バッファフルになった回数が相対的に多いバッファ領域への記憶領域の割り当てを増やすことにより、バッファフルが発生する可能性を低減でき、パフォーマンスを好適に向上できる。
の発明は、第1又は第2の発明の画像読取装置であって、前記取得手段は、前記使用状況としてバッファ領域を使い切るバッファフルの継続時間を前記バッファ領域毎に取得し、前記変更手段は、バッファフルの継続時間が相対的に短い前記バッファ領域への記憶領域の割り当てを減らし、バッファフルの継続時間が相対的に長い前記バッファ領域への記憶領域の割り当てを増やす。
バッファフルの継続時間が相対的に長いバッファ領域は今後もバッファフルが発生する可能性が高いバッファ領域であり、逆にバッファフルの継続時間が相対的に短いバッファ領域は今後もバッファフルが発生する可能性が低いバッファ領域であるといえる。したがって、バッファフルの継続時間が相対的に短いバッファ領域への記憶領域の割り当てを減らしてバッファフルの継続時間が相対的に長いバッファ領域への記憶領域の割り当てを増やすことにより、バッファフルが発生する可能性を低減でき、パフォーマンスを好適に向上できる。
の発明は、第〜第のいずれかの発明の画像読取装置であって、前記取得手段は、前記使用状況として各前記バッファ領域の最小空き容量を更に取得し、前記変更手段は、バッファ領域を使い切るバッファフルが発生しなかった前記バッファ領域への記憶領域の割り当てを減らす場合、当該バッファ領域の最小空き容量分を減らし、その分だけ他の前記バッファ領域への記憶領域の割り当てを増やす請求項5乃至請求項7のいずれか一項に記載の画像読取装置。
この発明によると、減らされる側のバッファ領域について記憶領域を減らし過ぎてしまうことを低減でき、記憶領域をより適切に割り当てることができる。
の発明は、第1〜第のいずれかの発明の画像読取装置であって、前記変更手段は、前記読取手段から出力される画像データを記憶する前記バッファ領域への記憶領域の割り当てを優先的に増やす。
読取手段から出力される画像データを記憶するバッファ領域がバッファフルになると読み取りが途中で中断することにより画像品質が低下する可能性がある。読取手段から出力される画像データを記憶するバッファ領域への記憶領域の割り当てを優先的に増やすと、そうした画像品質の低下を低減できる。
の発明は、ADFによって読取位置上を搬送されている原稿、又は、原稿台に平行な方向に移動して当該原稿台上に載置されている原稿を読み取って画像データを生成する読取手段と、前記読取手段から出力される画像データを順次処理する1つ以上の処理手段と、前記処理手段から出力される画像データを送信する送信手段と、前記読取手段、1つ以上の前記処理手段、及び前記送信手段の間で画像データを受け渡すための複数のバッファ領域が割り当てられる記憶手段とを備える画像読み取り装置の各前記バッファ領域に記憶領域を割り当てる記憶領域割り当て方法であって、前記原稿の所定範囲を読み取って当該所定範囲分の画像データを送信するまでの間の各前記バッファ領域の使用状況を取得する取得段階と、前記取得段階において前記所定範囲についての使用状況が取得された後、前記読取手段によって当該所定範囲より後の範囲の読み取りが開始される前に、当該取得された使用状況に基づいて、バッファフルが発生し難くなるように少なくとも2つの前記バッファ領域の間で記憶領域の割り当てを変更する変更段階と、を含み、前記原稿は前記ADFによって前記原稿が移動する方向又は前記読取手段が前記原稿台に対して移動する方向に互いに離間して複数の前記所定範囲が設定され、前記取得段階において前記所定範囲毎に使用状況を取得し、前記変更段階において、前記取得段階において使用状況が取得される毎に記憶領域の割り当てを変更する
本発明によれば、複数のバッファ領域への記憶領域の割り当てが容易である。
<実施形態1>
本発明の実施形態1を図1ないし図11によって説明する。
(1−1)複合機の構成
図1は、スキャナ機能、プリンタ機能、コピー機能、ファクシミリ機能等を有する複合機1(画像読取装置の一例)の模式図である。複合機1は、スキャナ部11、プリンタ部12、操作部13、インタフェース部14、制御部15などを備えている。
スキャナ部11は、所謂フラットベッド方式のイメージスキャナであって、原稿が載置される透明な板状の第1原稿台16、原稿カバー17、第2原稿台22上の原稿を読取位置Rに搬送するADF(Auto Document Feeder)19、第1原稿台16上に載置されている原稿Mを検知する第1の原稿検知センサ18、第2原稿台22上に載置されている原稿Nを検知する第2の原稿検知センサ20、第1原稿台16上の原稿M又はADF19によって読取位置Rに搬送されてきた原稿Nを読み取って画像データを生成する読取部21などで構成されている。
ADF19は、原稿Nが載置される第2原稿台22、図示しない複数のローラ、これら複数のローラを回転駆動する図示しない駆動モータなどで構成されており、第2原稿台22に載置されている原稿Nを1枚ずつ分離して読取位置Rに搬送する。原稿Nは読取位置R上を搬送されている間に読取部21によって読み取られ、原稿カバー17の上に排出される。
第1の原稿検知センサ18は、例えば第1原稿台16の下方に設けられた光電センサである。光電センサには原稿M又は原稿カバー17のいずれかで反射した光が入射し、制御部15は光電センサから出力されるセンサ出力に基づいて第1原稿台16上の原稿Mの有無を判定する。
第2の原稿検知センサ20は、例えば検知位置Dまで挿し込まれるように第2原稿台22上に原稿Nが載置されるとオンになり、検知位置Dに原稿Nが無いとオフになるスイッチである。制御部15は第2の原稿検知センサ20から出力されるセンサ出力に基づいて第2原稿台22上の原稿Nの有無を判定する。
読取部21は、CIS(密着型イメージセンサ)やCCDなどのイメージセンサ23(読取手段の一例)、原稿を照射する図示しない光源、原稿で反射された反射光をイメージセンサ23に入射させる光学系24、イメージセンサ23や光源などが搭載されるキャリッジ25、図2に示すイメージセンサ制御回路26(読取手段の一例)、図2に示す画像処理回路27(処理手段の一例)などで構成されている。
プリンタ部12は、紙などの被記録媒体を搬送する搬送機構などを有し、レーザー方式やインクジェット方式などを用いて、スキャナ部11で生成された画像データや後述のインタフェース部14で受信した画像データ等に基づいて画像を印刷する。
操作部13は、操作者が各種の設定や動作の指示を行うための操作ボタンや液晶ディスプレイなどの表示装置などで構成されている。
インタフェース部14は、図2に示すように、USBケーブルを介してパーソナルコンピュータ(PC)に接続するためのUSBインタフェース37(送信手段の一例)、及びLANなどの電気通信回線を介してPCやネットワークサーバなどの外部の機器と通信するためのネットワークインタフェース38(送信手段の一例)を有している。また、インタフェース部14には公衆電話回線を介して画像をファクシミリ通信するためのモデムなどのインタフェースも設けられている。なお、図示しないが、インタフェース部14は、パラレルケーブルを介してPCに接続するためのパラレルインタフェース、USBメモリやメモリカード等の外部記憶装置を接続するためのインタフェースを有していてもよい。
制御部15は、図2に示すCPU28(読取手段、処理手段、送信手段、記憶手段、取得手段、及び変更手段の一例)、ROM(図示せず)、RAM30(記憶手段の一例)などで構成されており、ROMに記憶されている各種のプログラムを実行することにより複合機1の各部を制御する。
(1−2)データ転送の概略
図2は、複合機1が原稿を読み取って外部の機器に送信するまでの画像データの流れを示すブロック図である。図示するように本実施形態ではRAM30に4つのバッファ領域(ラインバッファ32、画像処理後バッファ33、圧縮バッファ34、I/F転送バッファ35)が割り当てられる。画像データは、原稿を読み取って外部の機器に送信するまでの間にイメージセンサ制御回路26、画像処理回路27、CPU28、及びインタフェース部14の間でこれら4つのバッファ領域(以下、単に「バッファ」という)を介して受け渡される。本実施形態ではこれらのバッファはいずれもリングバッファとして用いられる。
また、図示するようにRAM30には各バッファについて全容量、空き容量、バッファフルが発生しているか否かなどを管理するための各種の変数やフラグが記憶されるバッファ容量管理記憶領域31、及び各バッファの使用状況を記憶するためのパフォーマンス測定結果記憶領域36も割り当てられる。
(1−2−1)イメージセンサ制御回路からラインバッファへのDMA転送
イメージセンサ23は1ライン分の原稿を読み取ると、当該1ライン分の原稿を表す画像信号を図示しないA/D変換回路に出力する。A/D変換回路に出力された画像信号はA/D変換回路でA/D変換され、1ライン分の画像データとしてイメージセンサ制御回路26に出力される。
イメージセンサ制御回路26に出力された1ライン分の画像データはイメージセンサ制御回路26によってシェーディング補正やγ補正などの所定の処理が施され、DMA(Direct Memory Access)調停・SDRAMコントローラ29(以下、単に「DMAコントローラ」という)によってラインバッファ32にDMA転送される。
このDMA転送はイメージセンサ制御回路26による制御の元で実行される。イメージセンサ制御回路26は1ライン分の画像データに所定の処理を施すと、その画像データを直ちにラインバッファ32にDMA転送させる。つまり、イメージセンサ制御回路26はラインバッファ32の空き容量を確認することなくDMA転送を実行させる。したがって仮にラインバッファ32がバッファフルであった場合、ラインバッファ32に記憶されている画像データ(ラインバッファデータ)が上書きされてしまうことになる。これを避けるため、本実施形態ではCPU28がラインバッファ32の空き容量を監視し、ラインバッファ32に空き容量がない場合はイメージセンサ制御回路26を制御して原稿の読み取りを中断させる。原稿の読み取りが中断するとイメージセンサ23からの画像信号の出力が停止し、ラインバッファデータの上書きが防止される。
ラインバッファ32に記憶されている有効なラインバッファデータのライン数は、画像処理回路27によってカウントされる。図示するように画像処理回路27には「ラインバッファ有効ライン数カウンタ」が設けられており、イメージセンサ制御回路26からラインバッファ32に1ライン分の画像データがDMA転送されると、画像処理回路27は「ラインバッファ有効ライン数カウンタ」に1を加算する。
(1−2−2)ラインバッファから画像処理回路へのDMA転送
ラインバッファ32に記憶されているラインバッファデータは、画像処理回路27にDMA転送される。
このDMA転送は画像処理回路27による制御の元で実行される。画像処理回路27は「ラインバッファ有効ライン数カウンタ」が所定の値に達すると、すなわちラインバッファ32に記憶されているラインバッファデータのライン数が所定のライン数に達すると、DMAコントローラ29を制御して当該所定のライン数分のラインバッファデータを画像処理回路27にDMA転送させる。DMA転送後、画像処理回路27は「ラインバッファ有効ライン数カウンタ」からDMA転送したライン数分の値を減じる。
(1−2−3)画像処理回路から画像処理後バッファへのDMA転送
ラインバッファ32から画像処理回路27にDMA転送された画像データは画像処理回路27によって色空間変換や先鋭化処理などの各種の画像処理が施される。画像処理が施された後の画像データ(画像処理後データ)は、画像処理後バッファ33にDMA転送される。
このDMA転送は前述した「イメージセンサ制御回路からラインバッファへのDMA転送」や「ラインバッファから画像処理回路へのDMA転送」の場合とは異なり、CPU28による制御の元で実行される。具体的には、先ずCPU28は画像処理後バッファ33の空き容量に基づいて、画像処理回路27から画像処理後バッファ33にDMA転送する画像処理後データのライン数である「画像処理後DMA転送ライン数」を設定する。次に、CPU28はDMAコントローラ29に画像処理回路27から画像処理後バッファ33へのDMA転送(画像処理後DMA転送)を指示する。以降の説明ではDMAコントローラ29に画像処理後DMA転送を指示することを「画像処理後DMA転送を起動する」というものとする。
図示するように画像処理回路27には画像処理後DMA転送が起動中であるか否かを示す「画像処理後DMA転送中フラグ」が設けられている。CPU28は画像処理後DMA転送を起動すると「画像処理後DMA転送中フラグ」にONをセットする。
画像処理後DMA転送を起動すると、画像処理回路27内において転送可能な画像処理後データを随時転送する。転送した画像処理後データのライン数が「画像処理後DMA転送ライン数」に達した時点で、画像処理回路27はそのDMA転送を終了させ、「画像処理後DMA転送中フラグ」にOFFをセットする。
(1−2−4)画像処理後バッファから圧縮バッファへの転送
画像処理後バッファ33に記憶されている画像処理後データはCPU28によって読み出され、JPEG圧縮などの所定の圧縮処理が施されて圧縮バッファ34に書き込まれる。すなわち、画像処理後バッファ33からCPU28への読み込み、及びCPU28から圧縮バッファ34への書き込みはDMAコントローラ29ではなくCPU28によって実行される。
(1−2−5)圧縮バッファからI/F転送バッファへの転送
圧縮バッファ34に記憶されている圧縮後の画像処理後データ(圧縮データ)はCPU28によって読み出され、インタフェースに応じた形式のI/F転送データに変換されてI/F転送バッファ35に書き込まれる。すなわち、圧縮バッファ34からCPU28への読み込み、及びCPU28からI/F転送バッファ35への書き込みは、DMAコントローラ29ではなくCPU28によって実行される。
(1−2−6)I/F転送バッファからインタフェースへのDMA転送
I/F転送バッファ35に記憶されているI/F転送データは、USBインタフェース37やネットワークインタフェース38(以下、単に「インタフェース」という)にDMA転送される。
このDMA転送はCPU28による制御の元で実行される。具体的には、CPU28はI/F転送バッファ35に書き込んだI/F転送データのデータ量を「I/F転送DMA転送容量」に設定し、DMAコントローラにDMA転送を指示する。以降の説明ではDMAコントローラにI/F転送DMA転送を指示することを「I/F転送DMA転送を起動する」というものとする。
図示するようにインタフェースにはI/F転送DMA転送が起動中であるか否かを示す「I/F転送DMA転送中フラグ」が設けられている。CPU28はI/F転送DMA転送を起動すると「I/F転送DMA転送中フラグ」にONをセットする。
I/F転送DMA転送を起動すると、DMAコントローラによってI/F転送バッファ35からインタフェースにI/F転送データがDMA転送される。そして、インタフェースはそのDMA転送が終了すると「インタフェースDMA転送中フラグ」にOFFをセットする。
(1−3)原稿の読み取りと各バッファの記憶領域の割り当ての変更
図3は、原稿の読み取りと各バッファの記憶領域の割り当てを変更する処理のフローチャートである。本実施形態では原稿が1ページのみのときは各バッファの使用状況の取得は行わず、したがってその場合には割り当ての変更も行わず、原稿が複数ページに亘るときのみ使用状況を取得して割り当てを変更する。
複数ページの原稿を読み取るとき、CPU28は最初の1ページ目(所定範囲の一例)を読み取って1ページ目分の画像データを外部の機器に送信するまでの間の各バッファの使用状況を取得する。そして、CPU28は取得した使用状況に基づいて少なくとも2つのバッファの間で記憶領域の割り当てを変更し、変更後に2ページ目以降の読み取りを開始する。
また、実施形態1では、最後にバッファフルが発生したバッファ(バッファフルが発生しなかったバッファがある場合はそれらのいずれか)への記憶領域の割り当てを減らし、最初にバッファフルが発生したバッファへの記憶領域の割り当てを増やす場合を例に説明する。
なお、上述した「イメージセンサ制御回路26からラインバッファ32へのDMA転送」及び「ラインバッファ32から画像処理回路27へのDMA転送」はCPU28が関与しない転送であるため、本フローチャート中には表れない。
S105では、CPU28はPC(外部の機器)から原稿の読み取りに関する各種の設定情報の入力を受け付ける。本実施形態では設定情報はUSBインタフェース37あるいはネットワークインタフェース38を介して入力され、CPU28は原稿を読み取って画像データを生成すると当該インタフェースを介して上記PCに画像データを送信するものとする。
S110では、CPU28はPCからスキャン開始指示の入力を受け付ける。
S115では、CPU28は「各バッファ容量決定処理」を実行する。「各バッファ容量決定処理」は各バッファの初期容量を決定する処理であり、詳細については後述する。
S120では、CPU28は複数ページをスキャンする(読み取る)か否かを判定する。CPU28は、例えば第1原稿台16上に原稿Mがある場合は1ページをスキャンすると判定し、第2原稿台22上に原稿Nがある場合は複数ページをスキャンすると判定する。CPU28は複数ページをスキャンする場合はS120に進み、1ぺージをスキャンする場合はS140に進む。
なお、第1原稿台16上に複数ページの原稿を1ページずつ順に載置して読み取らせる場合もあるので、そのような場合は例えば原稿が1ページであるか複数ページであるかをユーザが操作部13を操作して入力するようにしてもよい。
S125では、CPU28は「パフォーマンス測定開始処理」を実行する。「パフォーマンス測定開始処理」は各バッファの使用状況を取得するための準備処理であり、詳細については後述する。
S130では、CPU28は「パフォーマンス測定スキャン処理」を実行する。「パフォーマンス測定スキャン処理」は1ページ目をスキャンする処理であるとともに1ページ目を読み取って1ページ目分の画像データを送信するまでの間の各バッファの使用状況を取得する処理であり、詳細については後述する。
S135では、CPU28は「パフォーマンス測定結果に基づいた各バッファ容量変更処理」を実行する。「パフォーマンス測定結果に基づいた各バッファ容量変更処理」は「パフォーマンス測定スキャン処理」で取得された使用状況に基づいて少なくとも2つのバッファの間で記憶領域の割り当てを変更する処理であり、詳細については後述する。
S140では、CPU28は原稿が複数ページである場合は2ページ目以降をスキャンし、原稿が1ページである場合は1ページ目をスキャンする。
S145では、CPU28は全ページのスキャンを終了したかを判定する。終了していない場合はS140に戻って全ページのスキャンが終了するまで処理を繰り返す。
(1−3−1)各バッファ容量決定処理
図4は、各バッファ容量決定処理のフローチャートである。
S205では、CPU28は各バッファに割り当てる記憶領域の合計容量を取得する。この合計容量は例えばROMに固定で記憶されており、CPU28はROMからその合計容量を読み込みことによって取得する。
S210では、CPU28は各バッファの容量を決定する。例えば取得した合計容量が10メガバイト(MB)であったとする。この場合、3:5:1:1の比で記憶領域を割り当てるとすると、各バッファの容量は以下のように決定される。
ラインバッファ容量=3MB
画像処理後バッファ容量=5MB
圧縮バッファ容量=1MB
I/F転送バッファ容量=1MB
(1−3−2)パフォーマンス測定開始処理
図5は、パフォーマンス測定開始処理のフローチャートである。
S305では、CPU28は各バッファのバッファフル発生順を記憶する変数「第1のバッファ種別」、「第2のバッファ種別」、「第3のバッファ種別」、及び「第4のバッファ種別」を初期化する。各バッファには固有のバッファ種別番号が付与されており、初期化すると各変数にはいずれのバッファに付与されているバッファ種別番号とも異なる値(例えば0)が設定される。
(1−3−3)パフォーマンス測定スキャン処理
図6〜図9は、パフォーマンス測定スキャン処理のフローチャートである。
図6〜図9に示すフローチャートは実施形態1〜実施形態5を一つのフローチャートで説明するためのものであり、フローチャート中の「×××のパフォーマンス測定処理2」及び「×××のパフォーマンス測定処理3」は一部の実施形態では実行されない。ここで「×××」は各バッファの名前である。これらの処理が実行されるか否かは各実施形態においてその都度説明する。
S401では、CPU28は各バッファがバッファフルの状態であるか否かを示す変数「ラインバッファフル停止中フラグ」、「画像処理後バッファフル停止中フラグ」、「圧縮バッファフル停止中フラグ」、及び「I/F転送バッファフル停止中フラグ」を初期化する。初期化すると各フラグにはバッファフルの状態ではないことを示すOFFが設定される。
S402では、CPU28は各バッファの空き容量を記憶する変数「画像処理後バッファ空き容量」、「圧縮バッファ空き容量」、及び「I/F転送バッファ空き容量」にS210で決定された容量をセットする。
S403では、CPU28はイメージセンサ制御回路26を制御してスキャンを開始させる。これにより、イメージセンサ23による原稿のスキャンが開始される。
S404では、CPU28は変数「画像処理後バッファ空き容量」に基づいて「画像処理後DMA転送ライン数」を設定する。具体的には、CPU28は「画像処理後バッファ空き容量」を画像処理後データの1ライン当たりのデータ量で除算することにより画像処理後バッファ33に転送できるライン数を算出し、算出したライン数を「画像処理後DMA転送ライン数」に設定する。次に、CPU28は画像処理後DMA転送を起動する。
S405では、先ずCPU28は画像処理後DMA転送が起動中であるか否かを示すフラグ「画像処理後DMA転送中フラグ」に起動中であることを示すONをセットする。
次に、CPU28は「I/F転送DMA転送容量」に初期値として0(零)をセットする。「I/F転送DMA転送容量」に0をセットする理由は後述するS435で説明する。
次に、CPU28はI/F転送DMA転送が起動中であるか否かを示すフラグ「I/F転送DMA転送中フラグ」に起動中でないことを示すOFFをセットする。「I/F転送DMA転送中フラグ」にOFFをセットする理由は後述するS434で説明する。
S406では、CPU28は「ラインバッファ有効ライン数カウンタ」からラインバッファデータのライン数を読み出し、ラインバッファ容量から当該読み出したライン数分のデータ量を減算することにより、「ラインバッファ空き容量」を算出する。
S407の「ラインバッファのパフォーマンス測定3」は実施形態1では実行しない。
S408では、CPU28は「ラインバッファ空き容量」が所定容量以上であるか否かを判定する。この所定容量はバッファフルの判定基準となる値である。CPU28は「ラインバッファ空き容量」が所定容量以上のときはバッファフルは発生していないと判定してS411に進み、所定容量未満のときはバッファフルが発生したと判定してS409に進む。
S409では、CPU28は「ラインバッファのパフォーマンス測定処理1」を実行する。「ラインバッファのパフォーマンス測定処理1」については後述する。
S410では、CPU28はイメージセンサ制御回路26を制御しスキャンを中断させる。これによりイメージセンサ23からの画像信号の出力が停止し、未処理のラインバッファデータの上書きが防止される。
次に、CPU28は「ラインバッファフル停止中フラグ」にONをセットし、S414に進む。
S411では、CPU28は「ラインバッファフル停止中フラグ」がOFFであるか否かを判定する。CPU28は「ラインバッファフル停止中フラグ」がOFFのときはS414に進み、ONのときはS412に進む。
S412の「ラインバッファのパフォーマンス測定2」は実施形態1では実行しない。
S413では、CPU28はイメージセンサ制御回路26を制御してスキャンを再開させるとともに、「ラインバッファフル停止中フラグ」にOFFをセットする。
S414では、CPU28は「画像処理後DMA転送中フラグ」がOFFであるか否かを判定する。S405からS413までの間に画像処理後DMA転送が終了していれば、この時点で「画像処理後DMA転送中フラグ」はOFFになっている。逆に、未だDMA転送が終了していなければこの時点で「画像処理後DMA転送中フラグ」はONのままになっている。CPU28は「画像処理後DMA転送中フラグ」がOFF、すなわち画像処理後DMA転送が終了している場合はS415に進み、ON、すなわち画像処理後DMA転送が未だ終了していない場合はS424に進む。
S415では、CPU28は「画像処理後バッファ空き容量」から前回の画像処理後DMA転送の起動時に設定した「画像処理後DMA転送ライン数」分のデータ量を減算することにより、「画像処理後バッファ空き容量」を更新する。
ここでS415を初めて実行するときはS404が「前回の画像処理後DMA転送の起動時」となり、S415の実行が2回目以降の場合は後述するS423が「前回の画像処理後DMA転送の起動時」となる。
S416の「画像処理後バッファのパフォーマンス測定処理3」は実施形態1では実行しない。
S417では、CPU28は更新した「画像処理後バッファ空き容量」が所定容量以上であるか否かを判定する。この所定容量はバッファフルの判定基準となる値である。CPU28は「画像処理後バッファ空き容量」が所定容量以上のときはバッファフルは発生していないと判定してS420に進み、所定容量未満のときはバッファフルが発生したと判定してS418に進む。
S418では、CPU28は「画像処理後バッファのパフォーマンス測定処理1」を実行する。「画像処理後バッファのパフォーマンス測定処理1」については後述する。
S419では、CPU28は「画像処理後バッファフル停止中フラグ」をONにする。
S420では、CPU28は「画像処理後バッファフル停止中フラグ」がOFFであるか否かを判定する。CPU28は「画像処理後バッファフル停止中フラグ」がOFFのときはS423に進み、ONのときはS421に進む。
S421の「画像処理後バッファのパフォーマンス測定処理2」は実施形態1では実行しない。
S422では、CPU28は「画像処理後バッファフル停止中フラグ」をOFFにする。
S423では、CPU28はS415で更新した「画像処理後バッファ空き容量」に基づいて「画像処理後DMA転送ライン数」を再設定し、画像処理後DMA転送を再び起動する。
これとともにCPU28は「画像処理後バッファDMA転送中フラグ」をONにする。
S424では、CPU28は画像処理後バッファ容量から「画像処理後バッファ空き容量」を減算することにより、画像処理後バッファ33に記憶されている画像処理後データのデータ量である「画像処理後バッファ有効データ容量」を算出する。
S425では、CPU28は「画像処理後バッファ有効データ容量」が所定容量以上であるか否かを判定する。例えば画像処理後データを16ライン単位で圧縮するとした場合は、16ライン分のデータ量が所定容量に相当する。「画像処理後バッファ有効データ容量」が所定容量未満(16ライン未満)のときは圧縮を実行できないので、CPU28は圧縮処理をスキップしてS434に進む。
S426では、CPU28は「圧縮バッファ空き容量」が所定容量以上であるか否かを判定する。この所定容量はバッファフルの判定基準となる値である。CPU28は「圧縮バッファ空き容量」が所定容量以上のときはバッファフルは発生していないと判定してS429に進み、所定容量未満のときはバッファフルが発生したと判定してS427に進む。
S427では、CPU28は「圧縮バッファのパフォーマンス測定処理1」を実行する。「圧縮バッファのパフォーマンス測定処理1」については後述する。
S428では、CPU28は「圧縮バッファフル停止中フラグ」をONにする。
S429では、CPU28は「圧縮バッファフル停止中フラグ」がOFFであるか否かを判定する。CPU28は「圧縮バッファフル停止中フラグ」がOFFのときはS432に進み、ONのときはS430に進む。
S430の「圧縮バッファのパフォーマンス測定処理2」は実施形態1では実行しない。
S431では、CPU28は「圧縮バッファフル停止中フラグ」をOFFにする。
S432では、先ずCPU28は画像処理後バッファ33から例えば16ライン分の画像処理後データを読み出し、JPEGなどの所定の圧縮処理を施して圧縮バッファ34に書き込む。
次に、CPU28は圧縮前の画像処理後データのデータ量の分だけ「画像処理後バッファ空き容量」を増やす。
次に、CPU28は圧縮バッファ34に書き込んだ圧縮後の画像処理後データ(圧縮データ)のデータ量の分だけ「圧縮バッファ空き容量」を減らす。
S433の「圧縮バッファのパフォーマンス測定処理3」は実施形態1では実行しない。
S434では、CPU28は「I/F転送DMA転送中フラグ」がOFFであるか否かを判定する。CPU28は「I/F転送DMA転送中フラグ」がOFFであるときはS435に進み、ONであるときはS406に戻る。
前述したようにCPU28はS405において「I/F転送DMA転送中フラグ」にOFFをセットしているので、最初にS434を実行するときは「I/F転送DMA転送中フラグ」はOFFであると判定されることになる。つまり前述したS405で「I/F転送DMA転送中フラグ」にOFFを設定した理由は、最初にS434を実行したときにOFFであると判定されてS435に進むようにするためである。
S435では、CPU28は前回のI/F転送DMA転送の起動時に設定した「I/F転送DMA転送容量」の分だけ「I/F転送バッファ空き容量」を増やす。
最初にS435を実行するときは未だI/F転送DMA転送は起動されておらず、この場合は前述したS405で「I/F転送DMA転送容量」に0(零)をセットしているので「I/F転送バッファ空き容量」は増えないことになる。つまり前述したS405で「I/F転送DMA転送容量」に0を設定した理由は、最初にS435を実行したときに「I/F転送バッファ空き容量」が増えてしまわないようにするためである。S435の実行が2回目以降である場合は、「前回のI/F転送DMA転送の起動時」とは後述するS444のことをいう。
S436では、CPU28は圧縮バッファ容量から「圧縮バッファ空き容量」を減算することにより、圧縮バッファ34に記憶されている圧縮データのデータ量である「圧縮バッファ有効データ容量」を算出する。
S437では、CPU28は「圧縮バッファ有効データ容量」が所定容量以上であるか否かを判定する。圧縮バッファ34に圧縮データがなければ転送できないので、CPU28は「圧縮バッファ有効データ容量」が所定容量未満のときはI/F転送バッファ35への転送をスキップしてS406に戻る。
S438では、CPU28は「I/F転送バッファ空き容量」は所定容量以上であるか否かを判定する。この所定容量はバッファフルの判定基準となる値である。CPU28は「I/F転送バッファ空き容量」が所定容量以上のときはバッファフルは発生していないと判定してS441に進み、所定容量未満のときはバッファフルが発生したと判定してS439に進む。
S439では、CPU28は「I/F転送バッファのパフォーマンス測定処理1」を実行する。「I/F転送バッファのパフォーマンス測定処理1」については後述する。
S440では、CPU28は「I/F転送バッファフル停止中フラグ」をONにする。
S441では、CPU28は「I/F転送バッファフル停止中フラグ」がOFFであるか否かを判定する。CPU28は「I/F転送バッファフル停止中フラグ」がOFFのときはS444に進み、ONのときはS442に進む。
S442の「I/F転送バッファのパフォーマンス測定処理2」は実施形態1では実行しない。
S443では、CPU28は「I/F転送バッファフル停止中フラグ」をOFFにする。
S444では、先ずCPU28は圧縮バッファ34から圧縮データを読み出し、インタフェースに応じた形式のI/F転送データに変換してI/F転送バッファ35に書き込む。
次に、CPU28は読み出した圧縮データのデータ量の分だけ「圧縮バッファ空き容量」を増やす。
次に、CPU28はI/F転送バッファ35に書き込んだI/F転送データのデータ量の分だけ「I/F転送バッファ空き容量」を減らす。
次に、CPU28はI/F転送バッファ35に書き込んだI/F転送データのデータ量を「I/F転送DMA転送容量」に設定し、I/F転送DMA転送を起動する。
次に、CPU28はI/F転送DMA転送中フラグをONにする。
S445の「I/F転送バッファのパフォーマンス測定処理3」は実施形態1では実行しない。
S445の後、CPU28はS406に戻って処理を繰り返す。
(1−3−4)パフォーマンス測定1
実施形態1では、「ラインバッファのパフォーマンス測定処理1」、「画像処理後バッファのパフォーマンス測定処理1」、「圧縮バッファのパフォーマンス測定処理1」、及び「I/F転送バッファのパフォーマンス測定処理1」は同一の処理である。
図10は、パフォーマンス測定1の処理の流れを示すフローチャートである。
S501では、CPU28は変数「第1のバッファ種別」の値がS305で設定した初期値のままであるか否かを判定する。CPU28は「第1のバッファ種別」の値が初期値のままであるときはS502に進み、初期値でなければS503に進む。
S502では、CPU28は変数「第1のバッファ種別」に、バッファフルが発生したバッファに付与されているバッファ種別番号をセットする。例えば「パフォーマンス測定1」が「ラインバッファのパフォーマンス測定処理1」として起動された場合は、バッファフルが発生したバッファはラインバッファ32であることになり、この場合はラインバッファ32に割り当てられているバッファ種別番号を「第1のバッファ種別」にセットする。CPU28は変数「第1のバッファ種別」にバッファ種別番号をセットすると、処理を終了する。
S503〜S508までの処理は上記S501〜S502までの処理と実質的に同一であるため説明は省略する。
パフォーマンス測定1によると、最初にバッファフルが発生したバッファのバッファ種別番号が「第1のバッファ種別」にセットされ、次にバッファフルが発生したバッファのバッファ種別番号が「第2のバッファ種別」にセットされることになる。同様にして、最後にバッファフルが発生したバッファのバッファ種別番号が「第4のバッファ種別」にセットされることになる。
(1−3−5)各バッファ容量変更処理
図11は、パフォーマンス測定結果に基づいた各バッファ容量変更処理の流れを示すフローチャートである。
S601では、CPU28は変数「第1のバッファ種別」の値がS305で設定した初期値のままであるか否かを判定する。「第1のバッファ種別」の値が初期値であるということは、いずれのバッファにおいてもバッファフルが発生しなかったことを意味する。いずれのバッファにおいてもバッファフルが発生していなければ、各バッファの記憶容量は概ね適切であり、バッファ間での記憶領域の割り当ての変更は不要であるといえる。そのため、CPU28は「第1のバッファ種別」の値が初期値である場合は処理を終了する。CPU28は「第1のバッファ種別」の値が初期値でない場合はS602に進む。
S602では、CPU28は変数「増やすバッファ種別」に「第1のバッファ種別」にセットされているバッファ種別番号をセットする。
S603では、CPU28は変数「第4のバッファ種別」の値がS305で設定した初期値のままであるか否かを判定する。「第4のバッファ種別」が初期値のままであるということは、少なくとも一つのバッファについてはバッファフルが発生していないことを意味する。CPU28は「第4のバッファ種別」の値が初期値のままである場合はS604に進み、初期値ではない場合はS605に進む。
S604では、CPU28は変数「減らすバッファ種別」にいずれかバッファフルが発生していないバッファのバッファ種別番号をセットする。バッファフルが発生していないバッファが複数ある場合は、いずれのバッファのバッファ種別番号を「減らすバッファ種別」にセットするかは適宜選択可能である。
S605では、CPU28は変数「減らすバッファ種別」に「第4のバッファ種別」の値をセットする。
S606では、CPU28は「減らすバッファ種別」にバッファ種別番号がセットされているバッファの記憶領域の半分を、「増やすバッファ種別」にバッファ種別番号がセットされているバッファに割り当てる。
例えば減らすバッファがI/F転送バッファ35であり、増やすバッファが画像処理後バッファ33であるとする。この場合、これら2つのバッファの間で以下のように記憶領域の割り当てを変更する。
I/F転送バッファ容量=1MB÷2=0.5MB
画像処理後バッファ容量=5MB+0.5MB=5.5MB
バッファフルが発生した順番が相対的に早いバッファ領域は今後もバッファフルが発生する可能性が高いバッファ領域であり、逆にバッファフルが発生した順番が相対的に遅いバッファ領域(バッファフルが発生しなかったバッファあるいは最後にバッファフルが発生したバッファ)は今後もバッファフルが発生する可能性が低いバッファ領域であるといえる。したがって、バッファフルが発生した順番が相対的に遅いバッファ領域への記憶領域の割り当てを減らしてバッファフルが発生した順番が相対的に早いバッファ領域への記憶領域の割り当てを増やすことにより、バッファフルが発生する可能性を低減でき、パフォーマンスを好適に向上できる。
以上説明した本発明の実施形態1に係る複合機1によると、CPU28が各バッファの使用状況に基づいて少なくとも2つのバッファの間で記憶領域の割り当てを変更するので、ユーザは自ら割り当てを変更する作業を行う必要がない。よってこの発明によると、複数のバッファへの記憶領域の割り当てが容易である。
更に、複合機1によると、原稿全体を読み取って画像データを送信するまでの間の各バッファの使用状況を取得するのではなく、原稿の1ページ目を読み取って送信するまでの間の使用状況を取得する。これにより、複数のバッファの間で適切に記憶領域の割り当てが変更された状態で原稿の2ページ目以降の読み取りを実行でき、2ページ目以降を読み取る際のパフォーマンスを好適に向上できる。
<実施形態2>
次に、本発明の実施形態2を図12ないし図14によって説明する。
実施形態2では、バッファフルになった回数が少ないバッファへの記憶領域の割り当てを減らし、バッファフルになった回数が多いバッファへの記憶領域の割り当てを増やす。
(2−1)パフォーマンス測定開始処理
図12は、実施形態2に係るパフォーマンス測定開始処理のフローチャートである。
S701では、CPU28はバッファフルが発生した回数をバッファ毎にカウントする変数「ラインバッファフル回数カウンタ」、「画像処理後バッファフル回数カウンタ」、「圧縮バッファフル回数カウンタ」、及び「I/F転送バッファフル回数カウンタ」を初期化する。初期化すると各変数にはバッファフルが発生していないことを示す値である0(零)がセットされる。
(2−2)パフォーマンス測定スキャン処理
実施形態2のパフォーマンス測定スキャン処理でも、実施形態1と同じく、いずれのバッファについても「パフォーマンス測定2」及び「パフォーマンス測定3」は実行しない。
(2−3)パフォーマンス測定1
実施形態2のパフォーマンス測定1は、バッファ毎にそれぞれ異なる処理が実行される。ただし、処理内容は実質的に同一であるので、ここでは代表して「ラインバッファのパフォーマンス測定1」について説明する。
図13は、「ラインバッファのパフォーマンス測定1」の処理の流れを示すフローチャートである。
S801では、CPU28は「ラインバッファフル停止中フラグ」がOFFであるか否かを判定する。CPU28は「ラインバッファフル停止中フラグ」がOFFの場合はS802に進み、OFFでない場合、すなわちONの場合は処理を終了する。
「ラインバッファフル停止中フラグ」がONの場合は処理を終了する理由は、1回のバッファフルの発生を多重にカウントしないようにするためである。S409でラインバッファのパフォーマンス測定1が実行されるとその後のS410において「ラインバッファフル停止中フラグ」にONがセットされるので、「ラインバッファフル停止中フラグ」がONであるということは既に前回「ラインバッファのパフォーマンス測定1」が実行されて回数がカウントされていることになるからである。なお、多重にカウントしたからといって必ずしも問題があるわけではなく、多重のカウントも一つの方法として採用し得る。
S802では、CPU28は「ラインバッファフル回数カウンタ」に1を加算する。
(2−4)パフォーマンス測定結果に基づいた各バッファ容量変更処理
図14は、パフォーマンス測定結果に基づいた各バッファ容量変更処理の流れを示すフローチャートである。
S901では、CPU28は各バッファのバッファフル回数カウンタが全て初期値(0回)のままであるか否かを判定する。各バッファのバッファフル回数カウンタが全て初期値であるということは、いずれのバッファにおいてもバッファフルが発生しなかったことを意味する。いずれのバッファにおいてもバッファフルが発生していなければ、各バッファの容量は概ね適切であり、バッファ間での記憶領域の割り当ての変更は不要であるといえる。そのため、CPU28は各バッファのバッファフル回数カウンタが全て初期値である場合は処理を終了する。CPU28はいずれかのバッファフル回数カウンタが初期値でない場合はS902に進む。
S902では、CPU28は変数「増やすバッファ種別」にバッファフル回数カウンタの値が最大のバッファのバッファ種別番号をセットする。
S903では、CPU28は変数「減らすバッファ種別」にバッファフル回数カウンタの値が最小のバッファのバッファ種別番号をセットする。
S904では、CPU28は「減らすバッファ種別」にバッファ種別番号がセットされているバッファの記憶領域の半分を、「増やすバッファ種別」にバッファ種別番号がセットされているバッファに割り当てる。
例えば減らすバッファが圧縮バッファ34であり、増やすバッファが画像処理後バッファ33であるとする。この場合、これら2つのバッファの間で以下のように記憶領域の割り当てを変更する。
圧縮バッファ容量=1MB÷2=0.5MB
画像処理後バッファ容量=5MB+0.5MB=5.5MB
バッファフルになった回数が多いバッファは今後もバッファフルが発生する可能性が高いバッファであり、逆にバッファフルになった回数が少ないバッファは今後もバッファフルが発生する可能性が低いバッファであるといえる。したがって、バッファフルになった回数が少ないバッファへの記憶領域の割り当てを減らし、バッファフルになった回数が多いバッファへの記憶領域の割り当てを増やすことにより、バッファフルが発生する可能性を低減でき、パフォーマンスを好適に向上できる。
<実施形態3>
次に、本発明の実施形態3を図15ないし図18によって説明する。
実施形態3では、バッファフルの継続時間が短いバッファへの記憶領域の割り当てを減らし、バッファフルの継続時間が長いバッファへの記憶領域の割り当てを増やす。
(3−1)パフォーマンス測定開始処理
図15は、実施形態3に係るパフォーマンス測定開始処理のフローチャートである。
S1001では、CPU28はバッファフルが継続していた時間のうち最も長く継続していた時間である最長継続時間を記憶するための変数「ラインバッファフル最長継続時間」、「画像処理後バッファフル最長継続時間」、「圧縮バッファフル最長継続時間」、及び「I/F転送バッファフル最長継続時間」を初期化する。初期化すると各変数には初期値として0ミリ秒がセットされる。
(3−2)パフォーマンス測定スキャン処理
実施形態3のパフォーマンス測定スキャン処理では、いずれのバッファについても「パフォーマンス測定1」及び「パフォーマンス測定2」を実行し、「パフォーマンス測定3」は実行しない。
(3−3)パフォーマンス測定1
実施形態3のパフォーマンス測定1もバッファ毎にそれぞれ異なる処理が実行される。ただし、処理内容は実質的に同一であるので、ここでは代表して「ラインバッファのパフォーマンス測定1」について説明する。
図16は、「ラインバッファのパフォーマンス測定1」の処理の流れを示すフローチャートである。
S1101では、CPU28は「ラインバッファフル停止中フラグ」がOFFであるか否かを判定する。CPU28は「ラインバッファフル停止中フラグ」がOFFのときはS1102に進み、OFFでないとき、すなわちONのときは処理を終了する。
S1102では、CPU28はラインバッファフルが発生した時刻を記憶する変数「ラインバッファフル発生時刻」に現在の時刻をセットする。
(3−4)パフォーマンス測定2
パフォーマンス測定2についても処理内容は実質的に同一であるので、ここでは代表して「ラインバッファのパフォーマンス測定2」について説明する。
図17は、「ラインバッファのパフォーマンス測定2」の処理の流れを示すフローチャートである。
S1201では、CPU28は変数「ラインバッファフル発生時刻」に記憶されている時刻と現在の時刻との時間差を算出し、算出した時間差を今回のラインバッファフル継続時間とする。
S1202では、CPU28は今回のラインバッファフル継続時間が変数「ラインバッファフル最長継続時間」よりも長いか否かを判定する。CPU28は今回のラインバッファフル継続時間の方が「ラインバッファフル最長継続時間」よりも長いときはS1203に進み、「ラインバッファフル最長継続時間」と同じかそれより短い場合は処理を終了する。
S1203では、CPU28は「ラインバッファフル最長継続時間」に今回のラインバッファフル継続時間をセットする。
(3−5)パフォーマンス測定結果に基づいた各バッファ容量変更処理
図18は、パフォーマンス測定結果に基づいた各バッファ容量変更処理の流れを示すフローチャートである。
S1301では、CPU28は各バッファのバッファフル最長継続時間が全て初期値(0ミリ秒)のままであるか否かを判定する。各バッファのバッファフル最長継続時間が全て初期値であるということは、いずれのバッファにおいてもバッファフルが発生しなかったことを意味する。CPU28はいずれかのバッファフル最長継続時間が初期値でない場合はS1302に進み、全て初期値である場合は処理を終了する。
S1302では、CPU28は変数「増やすバッファ種別」にバッファフル最長継続時間が最も長いバッファのバッファ種別番号をセットする。
S1303では、CPU28は変数「減らすバッファ種別」にバッファフル最長継続時間が最も短いバッファのバッファ種別番号をセットする。
S1304では、CPU28は「減らすバッファ種別」にバッファ種別番号がセットされているバッファのバッファ容量の半分を、「増やすバッファ種別」にバッファ種別番号がセットされているバッファに割り当てる。
例えば減らすバッファが圧縮バッファ34であり、増やすバッファがI/F転送バッファ35であるとする。この場合、これら2つのバッファの間で以下のように記憶領域の割り当てを変更する。
圧縮バッファ容量=1MB÷2=0.5MB
I/F転送バッファ容量=1MB+0.5MB=1.5MB
バッファフル最長継続時間が長いバッファは今後もバッファフルが発生する可能性が高いバッファであり、逆にバッファフル最長継続時間が短いバッファは今後もバッファフルが発生する可能性が低いバッファであるといえる。したがって、バッファフル最長継続時間が短いバッファへの記憶領域の割り当てを減らしてバッファフル最長継続時間が長いバッファへの記憶領域の割り当てを増やすことにより、バッファフルが発生する可能性を低減でき、パフォーマンスを好適に向上できる。
<実施形態4>
次に、本発明の実施形態4を図19ないし図21によって説明する。
実施形態4では、バッファフルが発生しなかったバッファへの記憶領域の割り当てを減らす場合に、バッファフルが発生しなかったバッファの最小空き容量分を減らし、その分だけ他のバッファへの記憶領域の割り当てを増やす。
(4−1)パフォーマンス測定開始処理
図19は、実施形態4に係るパフォーマンス測定開始処理のフローチャートである。
S1401では、CPU28は各バッファのバッファフル発生順を記憶する変数「第1のバッファ種別」、「第2のバッファ種別」、「第3のバッファ種別」及び「第4のバッファ種別」を初期化する。
S1402では、バッファの最小空き容量をバッファ毎にカウントする変数である「ラインバッファ最小空き容量」、「画像処理後バッファ最小空き容量」、「圧縮バッファ最小空き容量」、「I/F転送バッファ最小空き容量」を初期化する。初期化すると各変数には「ラインバッファ容量」、「画像処理後バッファ容量」、「圧縮バッファ容量」、「I/F転送バッファ容量」がそれぞれ初期値としてセットされる。
(4−2)パフォーマンス測定スキャン処理
実施形態4のパフォーマンス測定スキャン処理では、いずれのバッファについても「パフォーマンス測定1」及び「パフォーマンス測定3」を実行し、「パフォーマンス測定2」は実行しない。
(4−3)パフォーマンス測定1
実施形態4のパフォーマンス測定1は実施形態1のパフォーマンス測定1と同じ処理であり、各バッファについて同一の処理が呼び出される。処理内容は実施形態1のパフォーマンス測定1と同一であるため説明は省略する。
(4−4)パフォーマンス測定3
パフォーマンス測定3はバッファ毎にそれぞれ異なる処理が実行される。ただし、処理内容は実質的に同一であるため、ここでは代表して「ラインバッファのパフォーマンス測定3」について説明する。
図20は、「ラインバッファのパフォーマンス測定3」の処理の流れを示すフローチャートである。
S1501では、CPU28はラインバッファ32の現在の空き容量を取得し、「ラインバッファ最小空き容量」と現在の空き容量とを比較する。CPU28は「ラインバッファ最小空き容量」よりも現在の空き容量の方が少ないときはS1502に進み、「ラインバッファ最小空き容量」が現在の空き容量と同じかそれよりも少ないときは処理を終了する。
S1502では、CPU28は「ラインバッファ最小空き容量」に現在の空き容量をセットする。
(4−5)パフォーマンス測定結果に基づいた各バッファ容量変更処理
図21は、パフォーマンス測定結果に基づいた各バッファ容量変更処理の流れを示すフローチャートである。
S1601では、CPU28は変数「第1のバッファ種別」の値がS1402で設定した初期値のままであるか否かを判定する。「第1のバッファ種別」の値が初期値である場合はいずれのバッファもバッファフルが発生していないということであるため、CPU28は記憶領域の割り当てを変更しないで処理を終了する。
S1602では、CPU28は変数「増やすバッファ種別」に、「第1のバッファ種別」にセットされているバッファ種別番号をセットする。これにより、最初にバッファフルが発生したバッファが記憶容量の増量の対象となる。
S1603では、CPU28は変数「減らすバッファ種別」に、いずれかバッファフルが発生していないバッファのバッファ種別番号をセットする。例えばバッファフルが発生していないバッファが複数ある場合は、それら複数のバッファのバッファ種別番号をセットする。
S1604では、CPU28は「減らすバッファ種別」にバッファ種別番号がセットされているバッファの最小空き容量を、「増やすバッファ種別」にバッファ種別番号がセットされているバッファに割り当てる。
具体的には例えば、減らすバッファが圧縮バッファ34とI/F転送バッファ35であり、増やすバッファが画像処理後バッファ33であるとする。そして、圧縮バッファ34及びI/F転送バッファ35の最小空き容量はそれぞれ0.8MB、0.3MBであったとする。この場合、これら3つのバッファの間で以下のように記憶領域の割り当てを変更する。
圧縮バッファ容量=1MB−0.8MB=0.2MB
I/F転送バッファ容量=1MB−0.3MB=0.7MB
画像処理後バッファ容量=5MB+0.8MB+0.3MB=6.1MB
なお、全てのバッファでバッファフルが発生した場合は実施形態1と同様にして最後にバッファフルが発生したバッファの記憶領域を減らすようにすればよい。
以上説明したように、バッファフルが発生しなかったバッファへの記憶領域の割り当てを減らす場合、当該バッファの最小空き容量分を減らし、その分だけ他のバッファへの記憶領域の割り当てを増やすようにすると、減らすバッファについて記憶領域を減らし過ぎてしまうことを低減でき、より適切に割り当てることができる。
<実施形態5>
次に、本発明の実施形態5を図22ないし図25によって説明する。
実施形態5では、最初にバッファフルが発生したバッファ以外のバッファのうちバッファフルの継続時間が最も短かったバッファの記憶領域を減らし、その分だけ最初にバッファフルが発生したバッファの記憶領域を増やす。
(5−1)パフォーマンス測定開始処理
図22は、実施形態5に係るパフォーマンス測定開始処理のフローチャートである。
S1701では、CPU28は各バッファのバッファフル発生順を記憶する変数「第1のバッファ種別」、「第2のバッファ種別」、「第3のバッファ種別」及び「第4のバッファ種別」を初期化する。
S1702では、CPU28はバッファフルが継続していた時間のうち最も長く継続していた時間である最長継続時間をバッファ毎に記憶する変数「ラインバッファフル最長継続時間」、「画像処理後バッファフル最長継続時間」、「圧縮バッファフル最長継続時間」、及び「I/F転送バッファフル最長継続時間」を初期化する。初期化すると各変数に初期値として0ミリ秒がセットされる。
(5−2)パフォーマンス測定スキャン処理
実施形態5のパフォーマンス測定スキャン処理では、いずれのバッファについても「パフォーマンス測定1」及び「パフォーマンス測定2」を実行し、「パフォーマンス測定3」は実行しない。
(5−3)パフォーマンス測定1
実施形態5のパフォーマンス測定1もバッファ毎にそれぞれ異なる処理が実行される。ただし、処理内容は実質的に同一であるので、ここでは代表して「ラインバッファのパフォーマンス測定1」について説明する。
図23は、「ラインバッファのパフォーマンス測定1」の処理の流れを示すフローチャートである。なお、実施形態5では変数「第1のバッファ種別」〜「第4のバッファ種別」はグローバル変数であり、他のバッファのパフォーマンス測定1からも共通にアクセスされる。
S1801では、CPU28は変数「第1のバッファ種別」の値がS1701で設定した初期値のままであるか否かを判定する。CPU28は「第1のバッファ種別」の値が初期値のままであるときはS1802に進み、初期値でなければS1803に進む。
S1802では、CPU28は変数「第1のバッファ種別」に、バッファフルが発生したバッファに割り当てられているバッファ種別番号をセットする。「ラインバッファのパフォーマンス測定処理1」の場合はバッファフルが発生したバッファはラインバッファ32であるので、ラインバッファ32に割り当てられているバッファ種別番号を「第1のバッファ種別」にセットする。CPU28は変数「第1のバッファ種別」にバッファ種別番号をセットするとS1809に進む。
S1803〜S1808までの処理はS1801〜S1802までの処理と実質的に同一であるため説明は省略する。
S1809では、CPU28は「ラインバッファフル停止中フラグ」がOFFであるか否かを判定する。CPU28は「ラインバッファフル停止中フラグ」がOFFのときはS1810に進み、OFFでないとき、すなわちONのときは処理を終了する。
S1810では、CPU28は「ラインバッファフル発生時刻」に現在の時刻をセットする。
(5−4)パフォーマンス測定2
パフォーマンス測定2についても処理内容は実質的に同一であるので、ここでは代表して「ラインバッファのパフォーマンス測定2」について説明する。
図24は、ラインバッファのパフォーマンス測定2の処理の流れを示すフローチャートである。
S1901では、CPU28は変数「ラインバッファフル発生時刻」に記憶されている時刻と現在の時刻との時間差を算出し、算出した時間差を今回のラインバッファフル継続時間とする。
S1902では、CPU28は今回のラインバッファフル継続時間が変数「ラインバッファフル最長継続時間」よりも長いか否かを判定する。CPU28は今回のラインバッファフル継続時間が「ラインバッファフル最長継続時間」よりも長いときはS1903に進み、今回のラインバッファフル継続時間が「ラインバッファフル最長継続時間」と同じかそれより短い場合は処理を終了する。
S1903では、CPU28は「ラインバッファフル最長継続時間」に今回のラインバッファフル継続時間をセットする。
(5−5)パフォーマンス測定結果に基づいた各バッファ容量変更処理
図25は、パフォーマンス測定結果に基づいた各バッファ容量変更処理の流れを示すフローチャートである。
S2001では、CPU28は変数「第1のバッファ種別」の値がS1701で設定した初期値のままであるか否かを判定し、「第1のバッファ種別」の値が初期値である場合は処理を終了する。
S2002では、CPU28は変数「増やすバッファ種別」に、変数「第1のバッファ種別」にセットされているバッファ種別番号をセットする。これにより、最初にバッファフルが発生したバッファが記憶容量の増量の対象となる。
S2003では、CPU28は変数「減らすバッファ種別」に、「第1のバッファ種別」にバッファ種別番号がセットされているバッファ以外のバッファのうちバッファフル最長継続時間が最小のバッファのバッファ種別番号をセットする。
S2004では、CPU28は「減らすバッファ種別」にバッファ種別番号がセットされているバッファのバッファ容量の半分を、「増やすバッファ種別」にバッファ種別番号がセットされているバッファに割り当てる。
例えば減らすバッファが圧縮バッファ34であり、増やすバッファがI/F転送バッファ35であるとする。この場合、これら2つのバッファの間で以下のように記憶領域の割り当てを変更する。
圧縮バッファ容量=1MB÷2=0.5MB
I/F転送バッファ容量=5MB+0.5MB=5.5MB
以上説明したように、最初にバッファフルが発生したバッファの記憶領域を増やす場合、最初にバッファフルが発生したバッファ以外のバッファのうちバッファフルの継続時間が最も短かったバッファの記憶領域を減らしてもよい。
<他の実施形態>
本発明は上記記述及び図面によって説明した実施形態に限定されるものではなく、例えば次のような実施形態も本発明の技術的範囲に含まれる。
(1)上記実施形態では原稿が1ページのみのときは各バッファの使用状況の取得は行わず、原稿が複数ページに亘るときのみ使用状況を取得する場合を例に説明したが、1ページのみのときであっても使用状況を取得するようにしてもよい。
(2)上記実施形態では所定範囲として原稿が複数ページからなる場合の1ページ目を例に説明したが、所定範囲は原稿全体が読み取られる間に取得される使用状況に基づいて割り当てを変更する場合と比べて変更結果に大差がないと予想される程度の広さの範囲であればよく、1ページ目に限定されない。例えば、原稿の先頭から半ページが読み取られる間の使用状況を取得してもよいし、最初の2ページが読み取られる間の使用状況を取得してもよい。
また、原稿の所定範囲が読み取られる間の使用状況を取得する場合、原稿の互いに離間した複数の所定範囲について当該所定範囲を読み取って送信するまでの間の各バッファの使用状況をそれぞれ取得し、各所定範囲について使用状況が取得される毎に当該取得された使用状況に基づいて2つ以上のバッファの間で記憶領域の割り当てを変更するようにしてもよい。例えば、原稿が6ページからなる場合、1ページ目、3ページ目、5ページ目についてそれぞれ使用状況を取得するようにしてもよい。あるいは原稿が1ページである場合は、原稿を読み取り方向に複数の範囲に分割し、1範囲おきに使用状況を取得してもよい。これにより、1つの原稿を読み取っている間に原稿内容の変化に応じてよりきめ細かく割り当てを変更できるので、より適切に変更できる。
また、所定範囲は原稿を基準に決定される場合に限定されず、読取部21の読み取り動作を基準に決定してもよい。例えば読取部21がある範囲を読み取る間の使用状況を取得するようにしてもよい。この場合、原稿サイズによっては読み取られた範囲が半ページに相当する場合もあれば、1/4ページに相当する場合もあることになる。
(3)上記実施形態では例えば最初にバッファフルが発生したバッファの記憶容量を増やすといったように、バッファの間に割り当ての優先順位がない場合を例に説明したが、バッファの間に割り当ての優先順位をつけ、例えば優先順位が最も高いバッファのバッファフル発生順が2番目であったとした場合、1番目にバッファフルが発生したバッファではなく、当該優先順位が最も高いバッファの記憶領域を増やすように割り当てを変更してもよい。
例えば、前述したようにラインバッファ32にバッファフルが発生すると読み取りが停止する。つまりADF19による原稿の搬送、あるいはキャリッジ25によるCISの搬送が停止し、その後に搬送が再開することになる。このような停止と再開とを繰り返すと画像品質が低下する虞がある。この場合、ラインバッファ32の優先順位を高くして優先的に記憶領域を割り当てるようにしてもよい。
(4)上記実施形態では原稿が複数ページに亘るときは常に使用状況を取得して割り当てを変更するが、前回と同じ送信先に前回と同じインタフェースで送信するときは、使用状況の取得および割り当ての変更は行わないようにしてもよい。
一般にインタフェースの送信能力はバッファの使用状況に大きく影響する。逆にいうと、送信能力が前回と同じであれば、インタフェース以外の処理手段による影響はあるものの、概ね前回と同程度のパフォーマンスを維持できる可能性がある。ところで、送信能力はインタフェースにのみ依存するのではなく、送信先の機器の受信能力にも依存する。したがって、送信先及びインタフェースが前回と同じである場合は、前回と概ね同程度の処理能力を維持できるものとして使用状況の取得や割り当ての変更を省略することにより、効率よく処理を実行できる。
(5)上記実施形態ではバッファ領域として4つのバッファ(ラインバッファ32、画像処理後バッファ33、圧縮バッファ34、I/F転送バッファ35)を例に説明したが、バッファの種類や数はこれに限定されるものではない。
(6)上記実施形態では使用状況として、バッファフル発生順、バッファフル発生回数、バッファフル最長継続時間、バッファ最小空き容量を例に説明したが、使用状況はこれらに限られるものではない。また、これらを適宜に組み合わせて使用状況として用いてもよい。
(7)上記実施形態では「減らすバッファ種別」のバッファ容量の半分を減らす場合を例に説明したが、例えば1/3などと係数を変えたり、バッファ容量の比などに応じて減らす記憶領域を算出してもよい。
(8)上記実施形態では1種のバッファを増やし、1〜2種のバッファの容量を減らす場合を例に説明したが、2種のバッファの記憶領域を増やし、1種のバッファの記憶領域を減らすなど、増減するバッファ種別の数の組み合わせは適宜変更可能である。
本発明の一実施形態に係る画像読取装置の模式図。 本発明の一実施形態に係る画像データの流れを示すブロック図。 本発明の一実施形態に係るフローチャート。 本発明の一実施形態に係るフローチャート。 本発明の一実施形態に係るフローチャート。 本発明の一実施形態に係るフローチャート。 本発明の一実施形態に係るフローチャート。 本発明の一実施形態に係るフローチャート。 本発明の一実施形態に係るフローチャート。 本発明の一実施形態に係るフローチャート。 本発明の一実施形態に係るフローチャート。 本発明の一実施形態に係るフローチャート。 本発明の一実施形態に係るフローチャート。 本発明の一実施形態に係るフローチャート。 本発明の一実施形態に係るフローチャート。 本発明の一実施形態に係るフローチャート。 本発明の一実施形態に係るフローチャート。 本発明の一実施形態に係るフローチャート。 本発明の一実施形態に係るフローチャート。 本発明の一実施形態に係るフローチャート。 本発明の一実施形態に係るフローチャート。 本発明の一実施形態に係るフローチャート。 本発明の一実施形態に係るフローチャート。 本発明の一実施形態に係るフローチャート。 本発明の一実施形態に係るフローチャート。
1…複合機(画像読取装置)
23…イメージセンサ(読取手段)
26…イメージセンサ制御回路(読取手段)
27…画像処理回路(処理手段)
28…CPU(読取手段、処理手段、送信手段、記憶手段、取得手段、変更手段)
30…RAM(記憶手段)
37…USBインタフェース(送信手段)
38…ネットワークインタフェース(送信手段)

Claims (8)

  1. ADFによって読取位置上を搬送されている原稿、又は、原稿台に平行な方向に移動して当該原稿台上に載置されている原稿を読み取って画像データを生成する読取手段と、
    前記読取手段から出力される画像データを順次処理する1つ以上の処理手段と、
    前記処理手段から出力される画像データを送信する送信手段と、
    前記読取手段、1つ以上の前記処理手段、及び前記送信手段の間で画像データを受け渡すための複数のバッファ領域が割り当てられる記憶手段と、
    前記原稿の所定範囲を読み取って当該所定範囲分の画像データを送信するまでの間の各前記バッファ領域の使用状況を取得する取得手段と、
    前記取得手段によって前記所定範囲についての使用状況が取得された後、前記読取手段によって当該所定範囲より後の範囲の読み取りが開始される前に、当該取得された使用状況に基づいて、バッファフルが発生し難くなるように少なくとも2つの前記バッファ領域の間で記憶領域の割り当てを変更する変更手段と、
    を備え、
    前記原稿は前記ADFによって前記原稿が移動する方向又は前記読取手段が前記原稿台に対して移動する方向に互いに離間して複数の前記所定範囲が設定され、
    前記取得手段は前記所定範囲毎に使用状況を取得し、
    前記変更手段は前記取得手段によって使用状況が取得される毎に記憶領域の割り当てを変更する、画像読取装置。
  2. 画像データが前回と同じ送信先に前回と同じ前記送信手段で送信される場合、前記取得手段は使用状況の取得を行わず、前記変更手段は記憶領域の割り当てを変更しない請求項に記載の画像読取装置。
  3. 前記取得手段は、前記使用状況としてバッファ領域を使い切るバッファフルが発生した順番を取得し、
    前記変更手段は、バッファフルが発生した順番が相対的に遅い前記バッファ領域への記憶領域の割り当てを減らし、バッファフルが発生した順番が相対的に早い前記バッファ領域への記憶領域の割り当てを増やす請求項1又は請求項のいずれか一項に記載の画像読取装置。
  4. 前記取得手段は、前記使用状況としてバッファ領域を使い切るバッファフルが発生した回数を前記バッファ領域毎に取得し、
    前記変更手段は、バッファフルになった回数が相対的に少ない前記バッファ領域への記憶領域の割り当てを減らし、バッファフルになった回数が相対的に多い前記バッファ領域への記憶領域の割り当てを増やす請求項1又は請求項のいずれか一項に記載の画像読取装置。
  5. 前記取得手段は、前記使用状況としてバッファ領域を使い切るバッファフルの継続時間を前記バッファ領域毎に取得し、
    前記変更手段は、バッファフルの継続時間が相対的に短い前記バッファ領域への記憶領域の割り当てを減らし、バッファフルの継続時間が相対的に長い前記バッファ領域への記憶領域の割り当てを増やす請求項1又は請求項のいずれか一項に記載の画像読取装置。
  6. 前記取得手段は、前記使用状況として各前記バッファ領域の最小空き容量を更に取得し、
    前記変更手段は、バッファ領域を使い切るバッファフルが発生しなかった前記バッファ領域への記憶領域の割り当てを減らす場合、当該バッファ領域の最小空き容量分を減らし、その分だけ他の前記バッファ領域への記憶領域の割り当てを増やす請求項乃至請求項のいずれか一項に記載の画像読取装置。
  7. 前記変更手段は、前記読取手段から出力される画像データを記憶する前記バッファ領域への記憶領域の割り当てを優先的に増やす請求項1乃至請求項のいずれか一項に記載の画像読取装置。
  8. ADFによって読取位置上を搬送されている原稿、又は、原稿台に平行な方向に移動して当該原稿台上に載置されている原稿を読み取って画像データを生成する読取手段と、
    前記読取手段から出力される画像データを順次処理する1つ以上の処理手段と、
    前記処理手段から出力される画像データを送信する送信手段と、
    前記読取手段、1つ以上の前記処理手段、及び前記送信手段の間で画像データを受け渡すための複数のバッファ領域が割り当てられる記憶手段とを備える画像読み取り装置の各前記バッファ領域に記憶領域を割り当てる記憶領域割り当て方法であって、
    前記原稿の所定範囲を読み取って当該所定範囲分の画像データを送信するまでの間の各前記バッファ領域の使用状況を取得する取得段階と、
    前記取得段階において前記所定範囲についての使用状況が取得された後、前記読取手段によって当該所定範囲より後の範囲の読み取りが開始される前に、当該取得された使用状況に基づいて、バッファフルが発生し難くなるように少なくとも2つの前記バッファ領域の間で記憶領域の割り当てを変更する変更段階と、
    を含み、
    前記原稿は前記ADFによって前記原稿が移動する方向又は前記読取手段が前記原稿台に対して移動する方向に互いに離間して複数の前記所定範囲が設定され、
    前記取得段階において前記所定範囲毎に使用状況を取得し、
    前記変更段階において、前記取得段階において使用状況が取得される毎に記憶領域の割り当てを変更する、記憶領域割り当て方法。
JP2008174935A 2008-07-03 2008-07-03 画像読取装置、及び記憶領域割り当て方法 Active JP4613984B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008174935A JP4613984B2 (ja) 2008-07-03 2008-07-03 画像読取装置、及び記憶領域割り当て方法
US12/496,098 US8498023B2 (en) 2008-07-03 2009-07-01 Image scanning device and computer-readable record medium storing program for storage area allocation in the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008174935A JP4613984B2 (ja) 2008-07-03 2008-07-03 画像読取装置、及び記憶領域割り当て方法

Publications (2)

Publication Number Publication Date
JP2010016646A JP2010016646A (ja) 2010-01-21
JP4613984B2 true JP4613984B2 (ja) 2011-01-19

Family

ID=41464142

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008174935A Active JP4613984B2 (ja) 2008-07-03 2008-07-03 画像読取装置、及び記憶領域割り当て方法

Country Status (2)

Country Link
US (1) US8498023B2 (ja)
JP (1) JP4613984B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5422640B2 (ja) * 2011-12-28 2014-02-19 京セラドキュメントソリューションズ株式会社 画像読取装置
JP5949529B2 (ja) * 2012-12-21 2016-07-06 富士ゼロックス株式会社 画像処理装置及びプログラム
JP6171629B2 (ja) * 2013-06-28 2017-08-02 ブラザー工業株式会社 画像読み取り装置
US10322881B1 (en) 2013-12-17 2019-06-18 Amazon Technologies, Inc. Notifying users to provide picked items to a drop off location for processing
CN106610796A (zh) * 2015-10-26 2017-05-03 中国华冶科工集团有限公司 多功能扫描辅助工具
JP6922250B2 (ja) * 2017-02-24 2021-08-18 セイコーエプソン株式会社 読取装置、読取装置の制御方法、制御装置、及び、プログラム
US10810415B1 (en) * 2018-01-22 2020-10-20 Apple Inc. Low bandwidth transmission of event data
JP2022168547A (ja) * 2021-04-26 2022-11-08 キヤノン株式会社 画像読取装置、画像読取装置システム、画像読取装置の制御方法およびプログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003008797A (ja) * 2001-06-22 2003-01-10 Sharp Corp 画像形成装置
JP2005110020A (ja) * 2003-09-30 2005-04-21 Canon Inc 画像入出力装置およびメモリ管理方法およびプログラムおよび画像形成装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63292747A (ja) * 1987-05-25 1988-11-30 Hitachi Ltd バツフア管理方式
JPH04142867A (ja) * 1990-10-03 1992-05-15 Canon Inc ファクシミリ装置
JP2922664B2 (ja) 1991-04-12 1999-07-26 キヤノン株式会社 画像処理装置
JPH07273957A (ja) * 1994-03-31 1995-10-20 Toshiba Corp 画像形成記憶装置
JP3539781B2 (ja) * 1995-02-14 2004-07-07 東芝テック株式会社 複合型画像形成装置
JPH09222986A (ja) * 1996-02-16 1997-08-26 Fuji Xerox Co Ltd 画像処理装置及び情報処理装置
JP2002011906A (ja) 2000-06-27 2002-01-15 Canon Inc 印刷装置およびバッファリング方法
US6877048B2 (en) * 2002-03-12 2005-04-05 International Business Machines Corporation Dynamic memory allocation between inbound and outbound buffers in a protocol handler
US7330943B2 (en) * 2004-08-03 2008-02-12 Hewlett-Packard Development Company, L.P. Storage device flow control

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003008797A (ja) * 2001-06-22 2003-01-10 Sharp Corp 画像形成装置
JP2005110020A (ja) * 2003-09-30 2005-04-21 Canon Inc 画像入出力装置およびメモリ管理方法およびプログラムおよび画像形成装置

Also Published As

Publication number Publication date
JP2010016646A (ja) 2010-01-21
US8498023B2 (en) 2013-07-30
US20100002270A1 (en) 2010-01-07

Similar Documents

Publication Publication Date Title
JP4613984B2 (ja) 画像読取装置、及び記憶領域割り当て方法
US6154286A (en) Image forming apparatus
US9088679B2 (en) Image forming apparatus, and control method and program for the same
JPH04261274A (ja) 画像処理装置
JP2010130111A (ja) 画像読取装置
JP5247588B2 (ja) 画像処理装置、その制御方法及びプログラム
US6816273B1 (en) Image forming method
EP1071273A2 (en) Data flow control and storage facility for an image reproduction system
JP3882356B2 (ja) デジタル画像出力装置
JP2015080104A (ja) 画像読取装置、画像読取装置の制御方法、プログラム、及び記憶媒体
US7911647B2 (en) Reader apparatus
JPH10123881A (ja) 画像処理装置
JP5168044B2 (ja) 画像読取装置および画像形成装置
JP3486503B2 (ja) デジタル複写機
JP7433881B2 (ja) 画像読取装置、その制御方法、及びプログラム
US20170180602A1 (en) Image processing apparatus with memory storing pre-processed image data
JPH11122475A (ja) 画像読取装置及び画像読取方法
JP2005014247A (ja) 画像形成装置
JP2021111883A (ja) モノクロ画像形成装置及びモノクロ画像形成方法
JPH09168070A (ja) ファクシミリ装置
CN113037940A (zh) 图像处理装置、图像处理方法和存储介质
JP2006080876A (ja) 画像入出力装置、画像入出力方法、コンピュータプログラム及び記録媒体
JP5552782B2 (ja) 画像読み取り装置及び画像形成装置
JP2021190844A (ja) 画像形成装置
JP3666197B2 (ja) 画像形成装置

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20091016

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20091016

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100624

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100629

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100830

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100921

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101004

R150 Certificate of patent or registration of utility model

Ref document number: 4613984

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131029

Year of fee payment: 3