以下、本発明の実施の形態について図面を参照して詳しく説明する。なお、図中同一符号は同一または相当する部材を示す。
[第1の実施の形態]
図1は、この発明の第1の実施の形態におけるデータ処理装置の概略を示すブロック図である。図を参照して、第1の実施の形態におけるデータ処理装置は、画像データを入力する画像入力装置1と、入力された画像データを画素データごとに各種の処理を行なうMPU2〜6と、処理された画像データを紙などの記録媒体に出力する画像出力装置8と、画像入力装置1、MPU2〜6、画像出力装置8(以下「MPU等1〜8」と言う)の動作状態を監視する状態レジスタ10と、状態レジスタ10を参照してMPU等1〜8の動作を制御するデータフロー制御部9と、画像入力装置1で入力された画像データを一時記憶する入力バッファメモリ11と、画像出力装置から出力される画像データを一時記憶する出力バッファメモリ12とを含む。
MPU2〜6はマイクロプロセッシングユニットであり、それぞれのMPU2〜6で処理する内容は、データフロー制御部9からの指示により定められ、データフロー制御部9の内部に設けられたROMに記憶されている処理プログラムをロードすることにより、それぞれのMPU2〜6で実行する処理が決められる。初期状態、たとえばデータ処理装置の電源がオンされた状態や、1頁分の画像データが入力された場合などには、MPU2はSH補正処理を、MPU3はLog変換処理を、MPU4はMTF補正処理を、MPU5はガンマ補正処理を、MPU6は2値化処理を行なうようにデータフロー制御部9から指示を受け、それぞれのMPU2〜6で各プログラムがロードされる。なお、SH補正処理、Log変換処理、MTF補正処理、ガンマ補正処理、2値化処理の5つの処理の内容については、従来の技術の第1の従来技術で説明した処理と同じであるので、ここでの説明は繰返さない。
また、画像入力装置1と画像出力装置8についても同様に従来の技術で説明した画像入力装置71と画像出力装置77とそれぞれ同じであるのでここでの説明は繰返さない。
MPU等1〜8は、データフロー制御部9とシステムバス14で接続されおり、状態レジスタ10とシステムバス15で接続されている。また、MPU等1〜8は、画像データバス13でそれぞれ接続されており、MPU等1〜8の間で画素データの受渡し、および入力バッファメモリ11と出力バッファメモリ12への入出力が可能となっている。
図1に示すデータ処理装置は、原稿を画像入力装置1で読込むことにより、画像データが画素データごとに入力バッファメモリ11に記憶される。MPU2では、入力バッファメモリ11に記憶されている画素データを、画像入力装置1で記憶した順に読出し、SH補正処理を施す。MPU2でSH補正処理が施された画素データはMPU3に受渡される。MPU3ではMPU2より受取った画素データにLog変換処理を施しMPU4に画素データを受渡す。このように、画素データは、MPU2〜6に順に受渡されて、SH補正処理、Log変換処理、MTF補正処理、ガンマ補正処理、2値化処理が施され、MPU6で2値化処理が施された画素データは、出力バッファメモリ12に記憶される。画像出力装置8は、処理後の画素データを出力バッファメモリに記憶すると同時に、ディスプレイへの表示出力、または紙などの記録媒体への印刷出力をする。
図2は、前段の処理を実行するMPUと後段の処理を実行するMPUとの間でデータの受渡しの手順を説明するための図である。図2では、MPU3とMPU4との間のデータの受渡しの手順を例に示す。MPU3で処理が終了すると、MPU4に対して画素データDATAの引き渡しを要求するための信号REQを送信する。MPU4ではMPU3からの引き渡しを要求する信号REQを受信した後、MPU4で現在行なっている処理が終了した時点で、MPU3に対してデータの引き渡しに応じるための信号ACKをMPU3に送信する。MPU3でMPU4からのデータの引き渡しに応じる信号ACKを受信すると、MPU3はMPU4に対して画素データDATAを送信する。このようにして、MPU3とMPU4とでは、それぞれ非同期に処理を実行しつつ、画素データDATAの引き渡しが行なわれる。
MPU2〜6のそれぞれの間では、上述の手順により画素データDATAの引き渡しが行なわれ、それぞれのMPU2〜6で順次処理が行なわれる。しかし、画素データによっては、それぞれのMPU2〜6で処理に要する時間が等しくならない。たとえば、ある画素データについてはMTF補正処理に時間がかかり、MPU4の負荷が大きくなってしまい、その結果、MPU4がボトルネックとなり、データ処理装置全体としてのデータ処理速度が低下してしまうことになる。
この問題を避けるため、本実施の形態におけるデータ処理装置は、状態レジスタ10で、MPU2〜6の処理負荷を監視しており、データフロー制御部9で、処理負荷が大きくなったMPUの前段の処理を実行するMPUに対して負荷の大きくなったMPUで実行する処理を実行するように指示するようにしている。これについて詳細に説明する。
図3は、データフロー制御部9で行なわれる処理の流れを示すフロー図である。図を参照して、データフロー制御部9では、状態レジスタ10を参照して、各MPU2〜6の処理負荷の監視を行なう(ステップS01)。状態レジスタ10には、各MPU2〜6から送られてくる画素データの処理に要した処理時間や処理した画素データのアドレスが記憶されており、データフロー制御部は、状態レジスタ10の内容を見ることによりMPU2〜6それぞれの負荷を把握することができる。
その結果、処理負荷の大きいMPUがある場合には(ステップS02でYES)、負荷が大きいMPUの前段の処理を行なうMPUに対して、現在行なっている処理に加えて負荷が大きいMPUで実行する処理も引続き行なうよう制御信号ONを出力する(ステップS03)。たとえば、図1を参照して、MTF補正処理を行なうMPU4の負荷が大きくなった場合、データフロー制御部9は、状態レジスタ10の状況からMPU4の負荷が大きくなったことを検知し、MTF補正処理の前段の処理であるLog変換処理を実行するMPU3に対して、MPU3が現在行なっているLog変換処理に加えてMTF補正処理を続けて行なうように制御信号を出力する。これにより、MPU3は、Log変換処理に加えてMTF補正処理を行なうことになる。
処理負荷の大きいMPUがない場合には(ステップS02でNO)、各MPU2〜6に初期設定の処理を実行することを示す制御信号OFFを出力する(ステップS04)。
その後、すべての画素データについて処理が終了したか否かが判断され(ステップS05)、未処理の画素データがある場合には上述の処理を繰り返し、すべての画素データについて処理した場合には、処理を終了する。
このように、負荷の大きくなったMPUで実行する処理をその前段の処理を行なうMPUと並列して行なうようにすることで、負荷を分散することができ、データ処理装置全体としてデータ処理速度を高めることができる。
データフロー制御部9で、負荷が大きいMPUを判断する際には(図3におけるステップS02)、それぞれのMPU2〜6で処理するデータのアドレスを参照することにより行なわれる。
図4は、それぞれのMPUで実行する画素データのアドレス値の差を示す図である。画像入力装置1に入力される画像データは、画素データごとにアドレス値を持っており、このアドレス値は画像入力装置1に入力される順に付されるものである。これは、画像入力装置1に入力される画像データは、入力バッファメモリ11に記憶される時点で、入力バッファメモリ11のアドレス値として得られる。各MPU2〜6では、画素データの処理が終了するたびに、その画素データのアドレス値を状態レジスタ10に送信する。データフロー制御部9は、状態レジスタ10に記憶されている各MPUで実行している画素データのアドレス値から、それぞれのMPU2〜6で実行している画素データのアドレス差(dif_1,dif_2,dif_3,dif_4)を算出する。算出されたアドレス差が予め定められた設定値よりも小さくなった場合には、アドレス差が小さくなったMPUの前段のMPUの負荷が大きくなったと判断する。たとえば、ガンマ補正処理を行なうMPU5で実行するアドレス値とMTF補正処理を行なうMPU4で実行するアドレス値との差であるアドレス差dif_2が、予め設定されたしきい値reg_2よりも小さくなった場合には、前段の処理であるMTF補正処理を行なうMPU4の負荷が大きくなったと判断する。
アドレス差dif_1は、2値化処理を行なうMPU6とガンマ補正を行なうMPU5との間のアドレス差を示し、dif_2は、ガンマ補正処理を行なうMPU5とMTF補正処理を行なうMPU4との間のアドレス差を示し、dif_3は、MTF補正処理を行なうMPU4とLog変換処理を行なうMPU3との間のアドレス差を示し、dif_4は、Log変換処理を行なうMPU3とSH補正処理を行なうMPU2との間のアドレス差を示す。このアドレス差が小さいときには前段のMPUの負荷が大きいことを表わす。また、データフロー制御部9でこのアドレス差がしきい値よりも小さくなったときに、前段のMPUの負荷が大きくなったと判断する。このしきい値は、アドレス差(dif_1,dif_2,dif_3,dif_4)ごとに定められ、データフロー制御部内部のROMに予め記憶されている。
しきい値regを、MPU間同士で異ならせるのは次の理由による。たとえば、MTF補正処理においてラプラシアンフィルタを用いた処理のように複数画素からなるマトリックス演算を行なう場合には、相当分のアドレス差が必要となる。図5は、3×3のフィルタを用いてMTF補正処理を行なう場合の画素データを説明するための図である。図を参照して、MTF補正処理を3×3のフィルタを用いて行なう場合、処理の対象となる画素を中心とする3×3のマトリックスで囲まれた画素のすべてについてLog変換処理が終了している必要がある。したがって、MTF補正処理では、処理の対象となる画素の前後1ライン分のデータが必要となるため、MTF補正処理の前段の処理であるLog変換処理が、MTF補正処理の対象となる画素のアドレスと(1ライン分の画素数+1)のアドレス差が必要となる。このことを考慮して、MTF補正処理を行なうMPU4とLog変換処理を行なうMPU3との間のアドレス差に対するしきい値を設定する必要がある。
したがって、アドレス差dif_1に対するしきい値reg_1と、dif_2に対応しるしきい値reg_2と、dif_3に対応するしきい値reg_3と、dif_4に対応するしきい値reg_4は1以上、好ましくは1のしきい値とすればよく、dif_2に対応するしきい値reg_2は(1ライン分の画素数+1)以上、好ましくは(1ライン分の画素数+1)のしきい値とすればよい。
図6は、MPU2〜6のそれぞれで行なわれる処理の流れを示すフロー図である。図を参照して、MPU2〜6では、画素データの取込が行なわれる(ステップS11)。MPU2は、入力バッファメモリ11より画素データを取込み、MPU3〜6は、それぞれ前段の処理を行なうMPUより画素データを受取る。たとえば、MPU3はMPU2より画素データを受取る。
次に、データフロー制御部9より制御信号を受信したか否かの判断がなされる(ステップS12)。なお、ここで受信する制御信号は制御信号ONと制御信号OFFのいずれかである。受信した制御信号が制御信号ONの場合には(ステップS12でYES)、データフロー制御部9内部のROMより後段の処理のプログラムをロードし、現在行なっている処理(初期設定の処理)と後段の処理との2つの処理を実行する(ステップS14)。
制御信号ONを受信していない場合、すなわち制御信号OFFを受信した場合には(ステップS12でNO)、現在実行している処理(初期設定の処理)を実行する(ステップS13)。その後、処理した画素データを出力する(ステップS15)。MPU2〜5においては、後段の処理を実行するMPU3〜6に処理した画素データを引き渡す。たとえば、MPU2はMPU3に処理した画素データを引き渡す。MPU6は、処理した画素データを画像出力装置7に画素データを引き渡す。
その後状態レジスタ10に、画素データのアドレスとその画素データを処理した時間または処理速度を書込む(ステップS16)。
そして、すべての画素データの処理が終了したか否かの判断がなされ(ステップS17)、処理が終了していない場合にはステップS10からステップS16までの処理を繰返し、すべての画素データの処理が終了した場合には処理を終了する。
ここで言う初期設定処理と後段の処理とは、たとえばMPU3では、初期設定処理はLog変換処理であり、後段の処理はMTF補正処理である。
図7は、本実施の形態におけるデータ処理装置において、データフロー制御部9によりMPU4の負荷が大きいと判断されたとき、各MPU2〜6で行なわれる処理を示した図である。図7を参照して、MPU3においては、Log変換処理に加えてMTF補正処理が実行される。また、この状態での画素データの流れは、第1の流れとして、MPU2でSH補正処理が施された画素データは、MPU3でLog変換処理とMTF補正処理が施され、その後、MPU5に引き渡されてガンマ補正処理が施される。第2の流れとして、MPU2でSH補正処理が施された画素データは、MPU3でLog変換処理のみが施された後MPU4に引き渡されてMTF補正処理が施され、その後、MPU5に引き渡されてガンマ補正処理が施される。
以上説明したとおり、本実施の形態におけるデータ処理装置は、データフロー制御部9で各MPU2〜6の負荷が常に監視され、負荷が大きいと判断されたMPUの前段のMPUに対して現在行なっている処理に加えて負荷が大きいMPUで行なっている処理も並列して実行するようにしたので、MPU2〜6の間で負荷が分散され、その結果、データ処理装置全体としてデータ処理の速度を速めることができる。
また、本実施の形態においては、データフロー制御部9で各MPU2〜6の負荷を常に監視し、負荷が大きいと判断されたMPUで実行する処理の前段の処理を実行するMPUに対して現在行なっている処理に加えて負荷が大きいMPUで実行する処理も並列して実行するようにしたが、負荷が大きいと判断されたMPUで実行する処理の後段の処理を実行するMPUに対して現在行なっている処理に加えて負荷が大きいMPUで実行する処理も並列して実行するようにしてもよい。このように、データフロー制御部9でMPU2〜6で実行する処理を変更することによっても、MPU2〜6の間で負荷を分散することができ、データ処理装置全体としてデータ処理速度を高めることができる。
この場合には、データフロー制御部9の処理は、図3のステップS03において、負荷が大きいMPUの後段の処理を行なうMPUに対して、現在行なっている処理に加えて負荷が大きいMPUで実行する処理も引続き行なうよう制御信号ONを出力する(ステップS03)。たとえば、図1を参照して、MTF補正処理を行なうMPU4の負荷が大きくなった場合、データフロー制御部9は、状態レジスタ10の状況からMPU4の負荷が大きくなったことを検知し、MTF補正処理の後段の処理であるガンマ補正処理を実行するMPU5に対して、MPU5が現在行なっているガンマ補正処理に加えてMTF補正処理を行なうように制御信号を出力する。これにより、MPU3は、MTF補正処理とガンマ補正処理とを行なうことになる。
一方、MPU3〜6の処理は、図6のステップS13において、受信した制御信号が制御信号ONのときは、ステップ14でデータフロー制御部9内部のROMより前段の処理のプログラムをロードし、現在行なっている処理(初期設定の処理)と前段の処理との2つの処理を実行する(ステップS14)ことになる。
この場合におけるデータ処理装置で、データフロー制御部9によりMPU4の負荷が大きいと判断されたときのMPU2〜6で実行される処理の状態を図8に示す。図8を参照して、MPU5においては、MTF補正処理処理とガンマ補正処理が実行される。また、この状態での画素データの流れは、第1の流れとして、MPU3でLog変換処理が施された画素データは、MPU4でMTF補正処理が施され、その後、MPU5に引き渡されてガンマ補正処理が施される。第2の流れとして、MPU3でLog変換処理が施された画素データは、MPU5に引き渡されてMTF補正処理とガンマ補正処理が施される。
[第2の実施の形態]
図9は、第2の実施の形態におけるデータ処理装置の概略を示すブロック図である。図を参照して、第2の実施の形態におけるデータ処理装置は、画像データを入力する画像入力装置1と、入力された画像データを画素データごとに各種の処理を行なうMPU21〜26と、処理された画像データを紙などの記録媒体に出力する画像出力装置8と、画像入力装置1、MPU21〜26、画像出力装置8の動作状態を監視する状態レジスタ10と、状態レジスタ10を参照してMPU21〜26の動作を制御するデータフロー制御部20と、画像入力装置1で入力された画像データを一時記憶する入力バッファメモリ11と、画像出力装置から出力される画像データを一時記憶する出力バッファメモリ12とを含む。
MPU21〜25は、初期設定の状態ではそれぞれ、SH補正処理、Log変換処理、MTF補正処理、ガンマ補正処理、2値化処理を行なう。MPU26は、初期設定状態では処理を何も行なわない。
第2の実施の形態におけるデータ処理装置は、データフロー制御部20でMPU21〜25のうち負荷が大きいとされたMPUで実行する処理を、MPU26で並列して実行するようにしたものである。
図10は、第2の実施の形態におけるデータフロー制御部20で行なわれる処理の流れを示すフロー図である。図を参照して、データフロー制御部20は、状態レジスタ10に記憶されている各MPUで実行する画素データのアドレスを取得する(ステップS31)。状態レジスタから取得した各MPUで実行する画素データのアドレス値よりアドレス差を求め、求めたアドレス差から負荷が大きいMPUを検出する(ステップS32)。負荷が大きいMPUがあると判断された場合には(ステップS32でYES)、負荷が大きいと判断されたMPUで実行する処理を行なうよう制御信号をMPU26へ出力する(ステップS33)。
一方、負荷が大きいMPUがないと判断された場合には(ステップS32でNO)、リセットするよう制御信号をMPU26へ出力する(ステップS34)。
その後、全画素データを終了したか否かが判断され(ステップS35)、未処理の画素データがある場合には上述の処理が繰返され、すべての画素データを処理した場合には処理を終了する。
図11は、MPU26で行なわれる処理の流れを示すフロー図である。図を参照して、MPU26では、データフロー制御部から出力する制御信号を受信する(ステップS41)。ここで受信する制御信号は、負荷が大きい処理を行なうことを示す制御信号もしくはリセットすることを示す制御信号のうちいずれかである。
次に、受信した制御信号がリセット信号が否かの判断がなされ(ステップS42)、受信した制御信号がリセット信号の場合には、処理を何も行なわないようリセット処理がなされ(ステップS44)、ステップS47に進む。
一方、リセット信号でないと判断された場合、すなわち負荷が大きい処理を行なうことを示す制御信号を受信した場合には(ステップS42でNO)、負荷が大きいとされた処理のプログラムをデータフロー制御部20内のROMからロードし、その処理を実行する(ステップS43)。
そして、処理した画素データを出力する(ステップS45)。この場合、たとえば負荷が大きいとされた処理が2値化処理の場合には、処理した画素データを画像出力装置8に出力する。それ以外の処理である場合には、後段の処理を実行するMPUに対してデータを引き渡す。たとえば、負荷が大きいとされた処理がMTF補正処理である場合には、後段の処理であるガンマ補正処理を実行するMPU24に対してデータを引き渡す。
図12は、データフロー制御部20により、MTF補正処理を行なうMPU23の負荷が大きいとされた場合の各MPU21〜26で行なわれる処理を示す図である。図を参照して、MPU26では、データフロー制御部20が出力するMTF補正処理を行なうことを示す制御信号の受信により、データフロー制御部20内のROMからMTF補正処理プログラムがロードされ、MTF補正処理が実行される。この場合における画素データの流れは、MPU22でLog変換処理が施された画素データが、MPU23に引き渡される流れと、MPU26に引き渡される流れの2つある。MPU23またはMPU26に引き渡された画素データはMTF補正処理が施された後MPU24に引き渡される。
以上説明したとおり、第2の実施の形態におけるデータ処理装置は、初期設定状態で、処理を何も行なわないMPU26を設け、データフロー制御部20で負荷が大きいと判断されたMPUで実行する処理を処理を何も行なわないMPU26で並列して実行するようにしたので、MPU21〜25における負荷をMPU21〜26で分散することができるので、データ処理装置全体としてデータ処理の高速化を図ることができる。
[第3の実施の形態]
図13は、第3の実施の形態におけるデータ処理装置の概略を示すブロック図である。第3の実施の形態におけるデータ処理装置は、画像データを入力する画像入力装置1と、入力された画像データを画素データごとに各種の処理を行なうMPU31〜35と、処理された画像データを紙などの記録媒体に出力する画像出力装置8と、画像入力装置1、MPU31〜35、画像出力装置8の動作状態を監視する状態レジスタ10と、状態レジスタ10を参照してMPU31〜35の動作を制御するデータフロー制御部30と、画像入力装置1で入力された画像データを一時記憶する入力バッファメモリ11と、画像出力装置から出力される画像データを一時記憶する出力バッファメモリ12と、各MPU31で処理した画素データを記憶する中間バッファメモリ13〜17とを含む。
第3の実施の形態におけるデータ処理装置は、MPU31〜35で処理した画素データを、それぞれに対応する中間バッファメモリ13〜17に一時記憶することができる。初期設定の状態では、MPU31はSH補正処理を、MPU32はLog変換処理を、MPU33はMTF補正処理を、MPU34はガンマ補正処理を、MPU35は2値化処理をそれぞれ行なうように設定される。中間バッファメモリ13にはSH補正処理がなされた画素データが、中間バッファメモリ14にはLog変換処理がなされた画素データが、中間バッファメモリ15にはMTF補正処理がなされた画素データが、中間バッファメモリ16にはガンマ補正処理がなされた画素データが、中間バッファメモリ17には2値化処理がなされた画素データがそれぞれ記憶される。
図14は、第3の実施の形態におけるデータフロー制御部30で行なわれる処理の流れを示すフロー図である。図を参照して、データフロー制御部30では、状態レジスタ10に記憶された各MPU31〜35で処理が施される画素データのアドレス値より、各MPU31〜35の負荷が監視される(ステップS51)。取得された各MPU31〜35で実行する画素データのアドレス値より、負荷が大きいMPUがあるか否かが判断される(ステップS52)。
負荷が大きいMPUがあると判断された場合には、負荷が大きいとされた処理の後段の処理を実行するMPUに対して、負荷が大きいとされた処理を行なうよう制御信号が出力される(ステップS53)。一方、負荷が大きいMPUがないと判断された場合には(ステップS52でNO)、すべてのMPUに対してリセットするよう制御信号が出力される(ステップS54)。
そして、すべての画素データに対して処理が終了したか否かが判断され(ステップS55)、未処理の画素データがある場合には上述の処理が繰返され、すべての画素データの処理が終了した場合には処理を終了する。
図15は、第3の実施の形態におけるMPU31〜35で行なわれる処理の流れを示すフロー図である。図を参照して、MPU31〜35は、データフロー制御部30が出力する制御信号を受信する(ステップS61)。ここで受信する制御信号は、負荷が大きいとされた処理を行なうことを示す制御信号もしくはリセットを示す制御信号のいずれかである。
ステップS70で受信した制御信号が、リセットを指示する制御信号か否かが判断される(ステップS62)。リセットを指示する制御信号でない場合には、負荷が大きい処理の実行を指示する制御信号であるので、負荷が大きい処理のプログラムをデータフロー制御部30内のROMからロードし、ロードしたプログラムを実行する(ステップS64)。
受信した制御信号がリセットを指示する制御信号である場合には(ステップS62でYES)、初期設定の処理を実行する(ステップS63)。ここで、一度負荷大の処理の実行を指示する制御信号を受信して既に負荷大の処理を実行している場合に、リセットを示す制御信号を受信したときは、負荷大の処理の実行を中止し、初期設定の処理を実行を再開する。たとえば、MTF補正処理を行なうMPU33の負荷が大きいと判断されてMPU34に対してMTF補正処理を行なうよう制御信号が出力された場合には、MPU34は初期設定処理であるガンマ補正処理の実行を中止してMTF補正処理を実行する。その後、MPU33の負荷が小さくなったときは、データフロー制御部30はMPU34に対してリセットを指示する制御信号を出力する。MPU34は、リセットを指示する制御信号の受信により、MTF補正処理を中止して初期設定処理であるガンマ補正処理を再開することとなる。
次に、処理した画素データの出力が行なわれる(ステップS65)。画素データの出力は、中間バッファメモリ13〜17に対して行なわれる。中間バッファメモリ13〜17のそれぞれでは、記憶する画素データが定められているので、たとえば、MPU34でMTF補正処理を行なう場合には、MTF補正処理を施した画素データは、中間バッファメモリ15に出力される。
次に、MPU31〜35で処理を実行した画素データのアドレスとその画素データの処理に要した処理時間もしくは処理速度が状態レジスタ10に書込される(ステップS66)。その後、すべての画素データについて処理が終了したか否かの判断がなされ(ステップS67)、未処理の画素データがある場合には上述の処理が繰り返され、すべての画素データに対して処理が終了した場合には処理を終了する。
図16は、データフロー制御部30でMPU33の負荷が大きいとされたときのMPU31〜35で実行される処理の状態を示す図である。図16を参照して、MPU34では、データフロー制御部30が出力する前段の処理の実行を指示する制御信号の受信により、データフロー制御部30内のROMからMTF補正処理プログラムをロードし、MTF補正処理が実行される。同様に、MPU35では、データフロー制御部が出力する前段の処理の実行を指示する制御信号の受信により、データフロー制御部9内のROMよりガンマ補正処理プログラムをロードし、ガンマ補正処理が実行される。このとき、MPU34では、中間バッファメモリ14からLog変換処理が施された画素データを読込んでMTF補正処理を施し、MTF補正処理後の画素データを中間バッファメモリ15に書き込む。また、MPU35では、中間バッファメモリ15からMTF補正処理が施された画素データを読込んでガンマ補正処理を施し、ガンマ補正処理後の画素データを中間バッファメモリ16に書き込む。
以上説明したとおり、第3の実施の形態におけるデータ処理装置は、MPU31〜35のそれぞれに処理後の画素データを記憶する中間バッファメモリ13〜17を設けて、データフロー制御部20で負荷が大きいMPUがあると判断された場合に、負荷大の処理の後段の処理を実行するMPUでその前段の処理を実行するようにしたので、前段の処理ほど速く処理を終了することができ、データ処理装置全体としてデータ処理の速度を速めることができる。また、前段の処理ほど速く処理を終了することができるので、新たな画像データ、たとえば次の頁の画像データを速く入力することができる。
さらに、各MPUで処理を実行した結果を記憶する中間バッファメモリ13〜18を設けたので、非同期で処理を実行するMPU31〜35の間で異なる処理速度の差を吸収することができ、かつ、MPU31〜35で実行する処理の内容に変更が生じたとしても、中間バッファメモリ13〜18に記憶される画素データの種類は変わらないので、MPU31〜35で実行する処理の内容を容易に変更することができる。
[第4の実施の形態]
図17は、第4の実施の形態におけるデータ処理装置の概略を示すブロック図である。図を参照して、第4の実施の形態におけるデータ処理装置は、画像データを入力する画像入力装置1と、入力された画像データを画素データごとに各種の処理を行なうMPU41〜46と、処理された画像データを紙などの記録媒体に出力する画像出力装置8と、画像入力装置1、MPU41〜46、画像出力装置8の動作状態を監視する状態レジスタ10と、状態レジスタ10を参照してMPU41〜46の動作を制御するデータフロー制御部40と、画像入力装置1で入力された画像データを一時記憶する入力バッファメモリ11と、画像出力装置から出力される画像データを一時記憶する出力バッファメモリ12とを含む。
MPU41〜45は、初期設定の状態ではそれぞれ、SH補正処理、領域判別処理、色変換処理、MTF補正処理、ガンマ補正処理を行なう。MPU46は、初期設定状態では処理を何も行なわない。
第4の実施の形態におけるデータ処理装置は、データフロー制御部40でMPU41〜45のうち負荷が大きいとされたMPUで実行する処理を、MPU46で並列して実行するようにしたものである。なお、第4の実施の形態におけるデータ処理装置は、カラー画像データを取扱う点と、画素データに対して行なう処理に領域判別処理を加えた点でこれまで述べた実施の形態におけるデータ処理装置と異なる。
領域判別処理とは、処理対象となる画像データを含む所定の領域に含まれる複数の画素データに所定の処理を施すことにより、所定の領域の属性を判別し、処理対象となる画素データが属する領域の属性を判別する処理である。所定の領域の属性とは、たとえば、文字領域、線画領域、下地領域等がある。この領域判別処理は、公知の方法により、たとえば、3×3のマトリックスを用いて、そのマトリックス内に存在する画素データを比較することにより判別される。
そして、領域判別処理により、属性が判別された画素データは、その後の処理たとえばMTF補正処理に要する時間が変わってくる。たとえば、領域判別処理により画素データの属性が文字属性もしくは線画属性と判断された場合には、下地属性と判断された場合に比べてMTF補正処理に要する時間が長くなる。その結果、MTF補正処理を実行するMPUの負荷が大きくなる。したがって、領域判別処理の結果により、その後の処理(Log変換、MTF補正、ガンマ補正、2値化)を実行するMPUの負荷を予測することができる。
第4の実施の形態におけるデータ処理装置は、画素データが領域判別処理により判別された属性によりMPU41〜46で実行する処理を変更するようにしたものである。
図18は、第4の実施の形態におけるデータフロー制御部40で行なわれる処理の流れを示すフロー図である。図を参照して、データフロー制御部40は、MPU42で実行する領域判別処理の結果を取得する(ステップS71)。取得した画素データの領域判別処理の結果から、画素データが文字属性または線画属性であるか否かを判断する(ステップS72)。文字属性または線画属性と判断した場合には、MPU46に対してMTF補正処理を行なうよう制御信号を出力する(ステップS73)。一方、文字属性または線画属性と判断されない場合には(ステップS72でNO)、MPU46に対してリセットするよう制御信号を出力する(ステップS74)。その後、すべての画素データの処理が終了したか否かが判断され(ステップS75)、未処理の画素データがある場合には上述の処理が繰返され、すべての画素データに対して処理が終了した場合には処理を終了する。
図19は、第4の実施の形態におけるMPU46で行なわれる処理の流れを示すフロー図である。図を参照して、MPU46では、データフロー制御部40から出力する制御信号を受信する(ステップS81)。ここで受信する制御信号は、MTF補正処理の実行を示す制御信号もしくはリセットすることを示す制御信号のうちいずれかである。
次に、受信した制御信号がリセット信号か否かの判断がなされ(ステップS82)、受信した制御信号がリセット信号の場合には、処理を何も行なわないようリセット処理がなされ(ステップS84)、ステップS87に進む。
一方、リセット信号でないと判断された場合、すなわち負荷が大きい処理を行なうことを示す制御信号を受信した場合には(ステップS82でNO)、MTF補正処理のプログラムをデータフロー制御部40内のROMからロードし、その処理を実行する(ステップS83)。そして、処理した画素データを出力する(ステップS85)。この場合、MTF補正処理の後段の処理を実行するMPU45に画素データを引き渡す。次に、MPU46で処理を実行した画素データのアドレスとその画素データの処理に要した処理時間もしくは処理速度が状態レジスタ10に書込まれる(ステップS86)。
その後、すべての画素データについて処理が終了したかい否かの判断がなされ(ステップS87)、未処理の画素データがある場合には上述の処理が繰り返され、すべての画素データに対して処理が終了した場合には処理を終了する。
図20は、領域判別処理を行なうMPU42で処理する画素データが文字属性または線画属性であると判別された場合に、MPU46で行なわれる処理を示す図である。図を参照して、MPU46では、データフロー制御部40が出力するMTF補正処理の実行を示す制御信号を受信して、MTF補正処理が実行される。この場合における画素データの流れは、MPU43で色変換が施された画素データが、MPU44に引き渡される流れと、MPU46に引き渡される流れの2つある。MPU44またはMPU46に引き渡された画素データはMTF補正処理が施された後、ガンマ補正処理を実行するMPU45に引き渡される。
なお、領域判別処理で画素データが文字属性または線画属性と判別された場合には、その画素データの近傍の画素データも同じ属性であるのが通常である。したがって、図20に示すMPU41〜46で実行する処理は、領域判別処理を実行するMPU42で処理する画素データが文字属性もしくは線画属性と判別されている間継続する。そして、領域判別処理により画素データが文字属性もしくは線画属性でないと判断された場合には、MPU41〜46は初期設定の処理を実行する。つまり、MPU46は処理を何も行なわない状態となる。
以上説明したとおり、第4の実施の形態におけるデータ処理装置は、領域判別処理を実行するMPU42で、画素データが文字属性もしくは線画属性と判断された場合に、初期設定状態では処理を行なわないMPU46で、負荷が大きいと予測されるMTF補正処理を行なうようにしたので、MPU41〜45における負荷をMPU41〜46で分散することができる。その結果、データ処理装置に入力されるデータの属性により、MPU41〜46で実行する処理を動的に変えることで、データ処理を高速に行なうことができる。
[第5の実施の形態]
図21は、第5の実施の形態におけるデータ処理装置の概略を示すブロック図である。図を参照して、第5の実施の形態におけるデータ処理装置は、画像データを入力する画像入力装置1と、入力された画像データを画素データごとに各種の処理を行なうMPU51〜56と、処理された画像データを紙などの記録媒体に出力する画像出力装置8と、画像入力装置1、MPU51〜56、画像出力装置8の動作状態を監視する状態レジスタ10と、状態レジスタ10を参照してMPU51〜56の動作を制御するデータフロー制御部50と、画像入力装置1で入力された画像データを一時記憶する入力バッファメモリ11と、画像出力装置から出力される画像データを一時記憶する出力バッファメモリ12と、各MPU51〜56で処理した画素データを記憶する中間バッファメモリ13〜18とを含む。
第5の実施の形態におけるデータ処理装置は、MPU51〜56で処理した画素データを、それぞれに対応する中間バッファメモリ13〜18に一時記憶することができる。初期設定の状態では、MPU51はSH補正処理を、MPU52は領域判別処理を、MPU53はLog変換処理を、MPU54はMTF補正処理を、MPU55はガンマ補正処理を、MPU56は2値化処理をそれぞれ行なうように設定される。
中間バッファメモリ13にはSH補正処理がなされた画素データが、中間バッファメモリ14には領域判別処理がなされた画素データが、中間バッファメモリ15にはLog変換処理がなされた画素データが、中間バッファメモリ16にはMTF補正処理がなされた画素データが、中間バッファメモリ17にはガンマ補正処理がなされた画素データが、中間バッファメモリ18には2値化処理がなされた画素データがそれぞれ記憶される。
領域判別処理については、第4の実施の形態において説明したのでここでの説明は繰り返さない。第5の実施の形態におけるデータ処理装置は、領域判別処理の結果により、その後の処理(Log変換、MTF補正、ガンマ補正、2値化)を実行するMPUの負荷を予測することにより、MPU51〜56で実行する処理を動的に変更するようにしたものである。
図22は、第5の実施の形態におけるデータフロー制御部50で行なう処理の流れを示すフロー図である。図を参照して、データフロー制御部9は、MPU52で実行する領域判別処理の結果を取得する(ステップS90)。ステップS90で取得した領域判別処理の結果、処理された画素データが文字属性もしくは線画属性であるか否かが判断される(ステップS91)。画素データが文字属性もしくは線画属性と判断された場合には(ステップS91でYES)、MTF補正処理の後段の処理(ガンマ補正処理、2値化処理)を実行するMPU55,56に対し、前段の処理を実行するよう制御信号を出力する。すなわち、ガンマ補正処理を実行するMPU55に対しては、ガンマ補正処理の前段の処理であるMTF補正処理を実行するよう制御信号が出力され、2値化処理を実行するMPU56に対しては2値化処理の前段の処理であるガンマ補正処理を行なうよう制御信号が出力される。
一方、画素データが文字属性もしくは線画属性と判断されない場合には(ステップS91でNO)、MPU55,56に対しリセットするよう制御信号が出力される(ステップS93)。
その後、すべての画素データの処理が終了したか否かが判断され(ステップS94)、未処理の画素データがある場合には上述の処理が繰返され、すべての画素データについて処理が終了した場合には、処理を終了する。
図23は、第5の実施の形態におけるMPU51〜56で行なわれる処理の流れを示すフロー図である。図を参照して、MPU55,56では、データフロー制御部40が出力する制御信号が受信される(ステップS101)。ここで受信する制御信号は、前段の処理の実行を示す制御信号もしくはリセットを示す制御信号のいずれかである。
受信した制御信号がリセットを示す制御信号でない場合には(ステップS102でNO)、受信した制御信号は前段の処理の実行を示す制御信号であるので、MPU55,56はデータフロー制御部50内のROMから前段の処理プログラムをロードし、MTF補正処理を実行する(ステップS84)。MPU55はMTF補正処理プログラムをロードし、MPU56はガンマ補正処理プログラムをロードする。一方、受信した制御信号がリセットを示す制御信号の場合には(ステップS102でYES)、初期設定の処理を実行するようリセット処理をする(ステップS103)。
処理が終了すると、処理済みの画素データを出力する(ステップS106)。MPU55、56は、MTF補正処理を実行している場合は画素データを中間バッファメモリ16に書き込み、ガンマ補正処理を実行している場合は画素データを中間バッファメモリ17に書き込み、2値化処理を実行している場合は画素データを中間バッファメモリ18に書き込む。
次に、MPU55,56で処理を実行した画素データのアドレスとその画素データの処理に要した処理時間もしくは処理速度が状態レジスタ10に書込される(ステップS106)。その後、すべての画素データについて処理が終了したかい否かの判断がなされ(ステップS107)、未処理の画素データがある場合には上述の処理が繰り返され、すべての画素データに対して処理が終了した場合には処理を終了する。
本実施の形態におけるデータ処理装置は、MPU51〜56で初期設定の処理プログラムがロードされて、画素データごとに処理が実行される。MPU55とMPU56については、初めは初期設定の処理プログラムがデータフロー制御部50内のROMよりロードされて実行されるが、データフロー制御部50より前段の処理の実行を指示する制御信号を受信した場合には、前段の処理のプログラムがデータフロー制御部50内のROMよりロードされて、そのプログラムが実行される。
図24は、データフロー制御部50でMPU52より画素データが文字属性もしくは線画属性と判断された場合に、MPU51〜56で行なう処理を示す図である。図を参照して、MPU55ではMTF補正処理が実行され、MPU56ではガンマ補正処理が実行される。このとき、MPU55では、処理対象となる画素データは中間バッファメモリ15より読出され、MTF補正処理後のデータは中間バッファメモリ16に書込まれる。MPU56では、処理対象の画素データは中間バッファメモリ16より読出され、ガンマ補正処理後の画素データは中間バッファメモリ17に書込まれる。
このように、第5の実施の形態におけるデータ処理装置は、領域判別処理を行なうMPU52より画素データが文字属性もしくは線画属性か否かの判断がなされその判別結果がデータフロー制御部50に送られる。データフロー制御部50では、MPU52より送られた判別結果をもとに、画素データが文字もしくは線画属性と判断された場合には、MPU55でMTF補正処理を、MPU56でガンマ補正処理を実行するようにMPU55およびMPU56に対して制御信号を出力する。画素データが文字属性もしくは線画属性でないと判断された場合には、MPU55とMPU56に対してリセットを示す信号が出力され、MPU55ではガンマ補正処理が、MPU56では2値化処理がそれぞれ行なわれる。
以上説明したとおり、第5の実施の形態におけるデータ処理装置は、処理対象となる画素データの属性を判断することにより、その後の処理を実行するMPUの負荷を予測し、予測された負荷に応じて各MPUで実行する処理を動的に変化するようにしたので、データ処理装置全体としてデータ処理速度を向上させることができる。
また、各MPUで処理を実行した結果を記憶する中間バッファメモリ13〜18を設けたので、非同期で処理を実行するMPU51〜56の間で異なる処理速度の差を吸収することができ、かつ、MPU51〜56で実行する処理の内容に変更が生じたとしても、中間バッファメモリ13〜18に記憶される画素データの種類は変わらないので、MPU51〜56で実行する処理の内容を容易に変更することができる。
[第6の実施の形態]
図25は、第6の実施の形態におけるデータ処理装置の概略を示すブロック図である。図を参照して、第6の実施の形態におけるデータ処理装置は、画像データを入力する画像入力装置1と、入力された画像データを画素データごとに各種の処理を行なうMPU61〜65と、処理された画像データを紙などの記録媒体に出力する画像出力装置8と、画像入力装置1、MPU61〜65、画像出力装置8の動作状態を監視する状態レジスタ10と、状態レジスタ10を参照してMPU61〜65の動作を制御するデータフロー制御部60と、画像入力装置1で入力された画像データを一時記憶する入力バッファメモリ11と、画像出力装置から出力される画像データを一時記憶する出力バッファメモリ12と、各MPU61〜65で処理した画素データを記憶する中間バッファメモリ13〜17とを含む。
第6の実施の形態におけるデータ処理装置は、MPU61〜65で処理した画素データを、それぞれに対応する中間バッファメモリ13〜17に一時記憶することができる。初期設定の状態では、MPU61はSH補正処理を、MPU62はLog変換処理を、MPU63はMTF補正処理を、MPU64はガンマ補正処理を、MPU65は2値化処理をそれぞれ行なうように設定される。
中間バッファメモリ13にはSH補正処理がなされた画素データが、中間バッファメモリ14にはLog変換処理がなされた画素データが、中間バッファメモリ15にはMTF補正処理がなされた画素データが、中間バッファメモリ16にはガンマ補正処理がなされた画素データが、中間バッファメモリ17には2値化処理がなされた画素データがそれぞれ記憶される。
図26は、第6の実施の形態におけるMPU61〜65で行なわれる処理の流れを示すフロー図である。説明を簡単にするためデータを受渡しするMPU61とMPU62における処理を同時に説明する形で示してある。実際には、MPU61とMPU62とは非同期で処理を実行する。
図26を参照して、MPU61は、SH補正処理(処理A)を画素データごとに実行する(ステップS111)。このとき、データフロー制御部60では、MPU61とMPU62との負荷を監視しており、MPU61で行なうSH補正処理の負荷と、MPU62で行なうLog変換処理(処理B)の負荷を比較し(ステップS112)、SH補正処理の負荷がLog変換処理の負荷より小さいときは、中間バッファメモリ13に残された記憶容量があるか否かが判断される(ステップS113)。中間バッファメモリ13にメモリ容量が残されている場合には(ステップS113でYES)、MPU61で実行したSH補正処理済の画素データが中間バッファメモリ13に書込まれる(ステップS114)。中間バッファメモリ13に記憶された画素データは、次の処理Log変換処理を行なうMPU62で読込まれ(ステップS115)、MPU62でLog変換処理が行なわれる(ステップS116)。
一方、SH補正処理の負荷がLog変換処理の負荷より小さくない場合(ステップS112でNO)には、MPU61で実行したSH補正処理後の画素データはMPU62に直接引き渡され、MPU62でLog変換処理が施される(ステップS116)。
次に、1頁分のすべての画素データが処理されたか否かの判断がなされ(ステップS117)、未処理の画素データがある場合は上述の処理が繰返され、すべての画素データの処理が終了した場合には、中間バッファメモリ13にMPU61で実行したSH補正処理済の画素データが記憶されているか否かが判断される(ステップS118)。中間バッファメモリ13に、SH補正処理済の画素データが記憶されている場合は(ステップS118でNO)、データフロー制御部60は、MPU61に対してLog変換処理の実行を指示する制御信号を出力し、MPU61はこの制御信号の受信に応答してデータフロー制御部60内のROMよりLog変換処理プログラムをロードしてLog変換処理を実行する(ステップS119とステップS120)。このとき、MPU61とMPU62とで同じLog変換処理が並列して行なわれることになる。
MPU61では、中間バッファメモリ13より画素データを読出し(ステップS119)、Log変換処理を実行した後(ステップS120)、中間バッファメモリ14にLog変換処理後の画素データを記憶する(ステップS121)。
MPU61で行なうLog変換処理と並行して、MPU62で中間バッファメモリ13より画素データが読込まれ(ステップS122)、Log変換処理を行なった後(ステップS123)、Log変換処理後の画素データが中間バッファメモリ14に書込まれる(ステップS124)。
このようにMPU61とMPU62で同じLog変換処理が並列して実行され、この並列処理は中間バッファメモリ13に記憶されている画素データがなくなるまで繰返される。
図27は、MPU61の負荷がMPU62の負荷と等しいかまたは大きい場合のMPU61とMPU62との間のデータの受渡しを説明するための図である。図を参照して、MPU61でSH補正処理を施した画素データは中間バッファメモリ13に記憶されることなく直接MPU62に引き渡される。これは、MPU61の方が負荷が大きいためMPU61で1つの画素データについて処理を終了した時には、MPU62では処理を終了して待ちの状態にあるからである。
図28は、MPU61の負荷がMPU62の負荷より小さい場合にMPU1とMPU2の間でデータの引き渡しを説明するための図である。MPU1でSH補正処理が施された画素データはMPU62に直接引き渡されることなく、中間バッファメモリ13に記憶される。このようにすることで、負荷の小さいSH補正処理を行なうMPU61は、MPU62の処理と同期をとることなくSH補正処理を実行することができる。
図29は、MPU61でSH補正処理が終了し、中間バッファメモリ13にSH補正処理後の画素データが記憶されている場合の、MPU61とMPU62で実行する処理と画素データの流れを説明するための図である。図を参照して、上述のごとく、MPU61でSH補正処理が終了し、中間バッファメモリ13にSH補正処理後の画素データが記憶されている場合には、MPU61とMPU62では同じLog変換処理が並列して実行される。MPU61では、中間バッファメモリ13よりデータが読出され、Log変換処理が施された後、処理後の画素データが中間バッファメモリ14に書込まれる。MPU2では中間バッファメモリ13よりデータが読出され、Log変換処理が施された後、処理後のデータは次のMPUへ引き渡される。
以上説明したとおり、第6の実施の形態におけるデータ処理装置では、MPU61〜65ごとに処理済の画素データを記憶する中間バッファメモリ13〜17を設け、後段の処理を実行するMPUの負荷が大きい場合は、処理済の画素データを後段の処理に直接引き渡すことなく、中間バッファメモリ13〜17に記憶するようにした。そして、前段の処理がすべての画素データに対して終了してもなお画素データが中間バッファメモリ13〜17にある場合には、中間バッファメモリ13〜17に記憶されている画素データに対して2つのMPUで後段の処理を並列して実行するようにしたので、前段の処理ほど速く処理を終了することができ、データ処理装置全体としてデータ処理の速度を速めることができる。また、前段の処理ほど速く処理を終了することができるので、新たな画像データ、たとえば次の頁の画像データを速く入力することができる。
さらに、各MPUで処理を実行した結果を記憶する中間バッファメモリ13〜17を設けたので、非同期で処理を実行するMPU61〜65の間で異なる処理速度の差を吸収することができ、かつ、MPU61〜65で実行する処理の内容に変更が生じたとしても、中間バッファメモリ13〜17に記憶される画素データの種類は変わらないので、MPU61〜65で実行する処理の内容を容易に変更することができる。
なお、上述したMPUを複数の装置に置換えた構成としてもよい。また、上述したデータフロー制御部、状態レジスタおよび各MPUで行なわれる処理、たとえば、データフロー制御部については図3、図10、図14、図18、図22に示した処理手順、MPUについては図6、図11、図15、図19、図23、図26に示した処理手順をコンピュータに実行させるためのプログラムで記述することが可能である。データフロー制御部、状態レジスタおよび各MPUで行なわれる処理をコンピュータに実行させるためのプログラムで記述した場合には、そのプログラムが記録されたコンピュータで読取り可能な記録媒体としても発明を捉えることができる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1 画像入力装置、2〜6 MPU、8 画像出力装置、9 データフロー制御部、10 状態レジスタ、11 入力バッファメモリ、12 出力バッファメモリ、13 画像データバス、14,15 システムバス。