以下、本発明の実施形態を添付図面にしたがって説明する。
[第1実施形態]
第1実施形態の画像処理システムの全体構成図を図1に示す。
<画像処理装置>
図1において、コントローラユニット2000は画像入力装置であるスキャナ2070や画像出力装置であるプリンタ2095と接続し、一方ではLAN2011や公衆回線(WAN)2051接続することで、画像情報やデバイス情報の入出力を行う為のコントローラである。CPU2001はシステム全体を制御するコントローラである。RAM2002はCPU2001が動作するためのシステムワークメモリであり、画像データを一時記憶するための画像メモリでもある。ROM2003はブートROMであり、システムのブートプログラムが格納されている。HDD2004はハードディスクドライブで、システムソフトウェア、画像データの他、後述する画像処理プログラムなどを格納する。操作部I/F2006は操作部(UI)2012とインターフェース部で、操作部2012に表示する画像データを操作部2012に対して出力する。また、操作部2012から本システム使用者が入力した情報を、CPU2001に伝える役割をする。ネットワークIF2010はLAN2011に接続し、情報の入出力を行う。モデム2050は公衆回線2051に接続し、情報の入出力を行う。以上のデバイスがシステムバス2007上に配置される。
画像バスIF2005は、システムバス2007と画像データを高速で転送する画像バス2008を接続し、データ構造を変換するバスブリッジである。画像バス2008は、PCIバスまたはIEEE1394で構成される。画像バス2008上には以下のデバイスが配置される。ラスタイメージプロセッサ(RIP)2060はPDLコードをビットマップイメージに展開する。デバイスI/F部2020は、画像入出力デバイスであるスキャナ2070やプリンタ2095とコントローラ2000を接続し、画像データの同期系/非同期系の変換を行う。画像処理部2083は、後述する入力画像処理プログラムや出力画像処理プログラムを実行することで、入力画像データ及び出力画像データに対する補正を行うほか、画像の加工や編集等のソフトウェア画像処理を行う。画像回転部2030は画像データの回転を行う。画像圧縮部2040は、多値画像データはJPEG,2値画像データはJBIG,MMR,MHの圧縮伸張処理を行う。
また、スキャナ2070及びプリンタ2095は、それぞれ、最適な画像処理プログラム2070P及び2095Pを保持している。これらプログラムは、後述するように、それぞれの装置から画像処理装置2000へとロードされる。
<画像入出力部>
次に画像入出力部の説明をする。画像入出力デバイスを図2に示す。画像入力デバイスであるスキャナ部2070は、原稿となる紙上の画像を照明し、CCDラインセンサ(図示せず)を走査することで、ラスターイメージデータ2071として電気信号に変換する。原稿用紙は原稿フィーダ2072のトレイ2073にセットし、装置使用者が操作部2012から読み取り起動指示することにより、コントローラCPU2001がスキャナ2070に指示を与え(2071)、フィーダ2072は原稿用紙を1枚ずつフィードし原稿画像の読み取り動作を行う。
画像出力デバイスであるプリンタ部2095は、ラスターイメージデータ2096を用紙上の画像に変換する部分であり、その方式は感光体ドラムや感光体ベルトを用いた電子写真方式、微少ノズルアレイからインクを吐出して用紙上に直接画像を印字するインクジェット方式等があるが、どの方式でも構わない。プリント動作の起動は、コントローラCPU2001からの指示2096によって開始する。プリンタ部2095には、異なる用紙サイズまたは異なる用紙向きを選択できるように複数の給紙段を持ち、それに対応した用紙カセット2101、2102、2103、2104がある。また、排紙トレイ2111は印字し終わった用紙を受けるものである。
次に操作部の説明をする。操作部2012の構成を図3に示す。LCD表示部2013は、LCD上にタッチパネルシートが貼られており、システムの操作画面を表示するとともに、表示してあるキーが押されるとその位置情報をコントローラCPU2001に伝える。スタートキー2014は原稿画像の読み取り動作を開始する時などに用いる。スタートキー2014中央部には、緑と赤の2色LED2018があり、その色によってスタートキー2014が使える状態にあるかどうかを示す。ストップキー2015は稼働中の動作を止める働きをする。IDキー2016は、使用者のユーザIDを入力する時に用いる。リセットキー2017は操作部からの設定を初期化する時に用いる。
<画像処理部>
次に画像処理部の説明をする。画像処理部2083の構成を図4に示す。画像バスI/Fコントローラ2081は、画像バス2008と接続し、そのバスアクセスシーケンスを制御する働きと、画像処理コントローラ2084内のデバイスの制御及びタイミングを発生させる。この画像処理部では、例えば、フィルタ処理、編集処理、変倍処理、テーブル変換処理、2値化処理、解像度変換、スムージング処理等の画像処理を行う。なお、ここでの画像処理には画像処理用の汎用プロセッサを用い、ソフトウェアで画像処理を行うが、実際の処理手順については後述する。また、ここでのフィルタ処理とは、空間フィルタでコンボリューション演算を行うことで、編集処理とは、入力画像データからマーカーペンで囲まれた閉領域を認識して、その閉領域内の画像データに対して、フィルタ処理、影つけ、網掛け、ネガポジ反転等の画像加工処理を行うことを示す。また、変倍処理とは、読み取り画像の解像度を変える場合にラスターイメージの主走査方向について補間演算を行い拡大、縮小を行うことを示す。なお副走査方向の変倍については、画像読み取りラインセンサ(図示せず)を走査する速度を変えることで行う。また、テーブル変換処理とは、読み取った輝度データである画像データを濃度データに変換するために行うテーブル変換のことであり、2値化処理とは、多値のグレースケール画像データを、誤差拡散処理やスクリーン処理によって2値化する処理を示す。また解像度変換とは、Network2011あるいは公衆回線2051から来た画像データを、プリンタ2095やNetwork2011を介して出力する配信先の解像度に変換する処理であり、スムージング処理とは、解像度変換後の画像データのジャギー(斜め線等の白黒境界部に現れる画像のがさつき)を滑らかにする処理を示す。
処理が終了した画像データは、再び画像バスコントローラ2081を介して、画像バス2008上に転送される。
画像処理コントローラ2084内部の構成を図6に示す。画像バスI/Fコントローラ2081から出力された画像データは汎用プロセッサ20831およびデータ記憶装置20832に入力される。また、汎用プロセッサ20831の要求により、データ記憶装置20832に記憶されているデータの出力と、データの記憶ができる構成をとっている。
汎用プロセッサの処理内容はプログラム記憶装置20833に記憶されており、汎用プロセッサが逐次読み出して、プログラムされた処理の実行をする。プログラム記憶装置には、処理内容をあらかじめプログラムしておくか、CPU2001から画像バス2008、画像バスI/Fコントローラ、汎用プロセッサ経由でプログラムの実行前に書き込んでもよい構成をとっている。汎用プロセッサはCPUからこの信号を画像バス、画像バスコントローラ経由で受信して、動作モードを切り替えるプログラムとし、実行開始信号を受けてから実行する。画像処理の種類に関しても、CPUからの信号で切り替えることのできる構成である。そして、汎用プロセッサは、実行開始信号をCPUから受信したときにプログラムの実行を開始して、その後はプログラム記憶装置に記憶されている処理内容にしたがって動作する。基本的には、画像バスI/Fコントローラ2081とデータ記憶装置から出力された画像データを処理して、画像バスI/Fコントローラ2081へ出力するという動作である。汎用プロセッサには、様々な画像処理がプログラム可能である。
<画像圧縮部>
次に画像圧縮部の説明をする。画像圧縮部2040の構成を図5に示す。画像バスI/Fコントローラ2041は、画像バス2008と接続し、そのバスアクセスシーケンスを制御する働き、入力バッファ2042・出力バッファ2045とのデータのやりとりを行うためのタイミング制御及び、画像圧縮部2043に対するモード設定などの制御を行う。以下に画像圧縮処理部の処理手順を示す。
画像バス2008を介して、CPU2001から画像バスI/Fコントローラ2041に画像圧縮制御のための設定を行う。この設定により画像バスI/Fコントローラ2041は画像圧縮コントローラ2043に対して画像圧縮に必要な設定(たとえばMMR圧縮・JBIG伸長等の)を行う。必要な設定を行った後に、再度CPU2001から画像バスI/Fコントローラ2041に対して画像データ転送の許可を行う。この許可にしたがい、画像バスI/Fコントローラ2041はRAM2002もしくは画像バス2008上の各デバイスから画像データの転送を開始する。受け取った画像データは入力バッファ2042に一時格納され、画像圧縮部2043の画像データ要求に応じて一定のスピードで画像を転送する。この際、入力バッファは画像バスI/Fコントローラ2041と、画像圧縮コントローラ2043両者の間で、画像データを転送できるかどうかを判断し、画像バス2008からの画像データの読み込み及び、画像圧縮コントローラ2043への画像の書き込みが不可能である場合は、データの転送を行わないような制御を行う(以後このような制御をハンドシェークと呼称する)。
画像圧縮コントローラ2043は受け取った画像データを、一旦RAM2044に格納する。これは画像圧縮を行う際には行う画像圧縮処理の種類によって、数ライン分のデータを要するためであり、最初の1ライン分の圧縮を行うためには数ライン分の画像データを用意してからでないと画像圧縮が行えないためである。画像圧縮を施された画像データは直ちに出力バッファ2045に送られる。出力バッファ2045では、画像バスI/Fコントローラ2041及び画像圧縮コントローラ2043とのハンドシェークを行い、画像データを画像バスI/Fコントローラ2041に転送する。画像バスI/Fコントローラ2041では転送された圧縮(もしくは伸長)された画像データをRAM2002もしくは画像バス2008上の各デバイスにデータを転送する。こうした一連の処理は、CPU2001からの処理要求が無くなるまで(必要なページ数の処理が終わったとき)、もしくはこの画像圧縮部から停止要求が出るまで(圧縮及び伸長時のエラー発生時等)繰り返される。
<画像回転部>
次に画像回転部の説明をする。画像回転部2030の構成を図7に示す。画像バスI/Fコントローラ2031は、画像バス2008と接続し、そのバスシーケンスを制御する働き、画像回転コントローラ2032にモード等を設定する制御及び、画像回転コントローラ2032に画像データを転送するためのタイミング制御を行う。以下に画像回転コントローラの処理手順を示す。
画像バス2008を介して、CPU2001から画像バスI/Fコントローラ2031に画像回転制御のための設定を行う。この設定により画像バスI/Fコントローラ2041は画像回転コントローラ2032に対して画像回転に必要な設定(たとえば画像サイズや回転方向・角度等)を行う。必要な設定を行った後に、再度CPU2001から画像バスI/Fコントローラ2041に対して画像データ転送の許可を行う。この許可にしたがい、画像バスI/Fコントローラ2031はRAM2002もしくは画像バス2008上の各デバイスから画像データの転送を開始する。尚、ここでは32bitをそのサイズとし回転を行う画像サイズを32×32(bit)とし、又、画像バス2008上に画像データを転送させる際に32bitを単位とする画像転送を行うものとする(扱う画像は2値を想定する)。
上述のように、32×32(bit)の画像を得るためには、上述の単位データ転送を32回行う必要があり、且つ不連続なアドレスから画像データを転送する必要がある(図8参照)。
不連続アドレッシングにより転送された画像データは、読み出し時に所望の角度に回転されているように、RAM2033に書き込まれる。例えば、90度反時計方向珂転であれば、最初に転送された32bitの画像データを、図9のようにY方向に書き込んでいく。読み出し時にX方向に読み出すことで、画像が回転される。
32×32(bit)の画像回転(RAM2033への書き込み)が完了した後、画像回転コントローラ2032はRAM2033から上述した読み出し方法で画像データを読み出し、画像バスI/Fコントローラ2031に画像を転送する。
回転処理された画像データを受け取った画像バスI/Fコントローラ2031は、連続アドレッシングを以て、RAM2002もしくは画像バス2008上の各デバイスにデータを転送する。
こうした一連の処理は、CPU2001からの処理要求が無くなるまで(必要なページ数の処理が終わったとき)繰り返される。
次にデバイスI/F部の説明をする。デバイスI/F部2020の構成を図10に示す。画像バスI/Fコントローラ2021は、画像バス2008と接続し、そのバスアクセスシーケンスを制御する働きと、デバイスI/F部2020内の各デバイスの制御及びタイミングを発生させる。また、外部のスキャナ2070及びプリンタ2095への制御信号を発生させ、スキャナとプリンタからの情報を受信する。スキャンバッファ2022は、スキャナ2070から送られてくる画像データを一時保存し、画像バス2008に同期させて画像データを出力する。シリアルパラレル・パラレルシリアル変換2023は、スキャンバッファ2022に保存された画像データを順番に並べて、あるいは分解して、画像バス2008に転送できる画像データのデータ幅に変換する。パラレルシリアル・シリアルパラレル変換2024は、画像バス2008から転送された画像データを分解して、あるいは順番に並べて、プリントバッファ2025に保存できる画像データのデータ幅に変換する。プリントバッファ2025は、画像バス2008から送られてくる画像データを一時保存し、プリンタ2095に同期させて画像データを出力する。
画像スキャン時の処理手順を以下に示す。スキャナ2070から送られてくる画像データをスキャナ2070から送られてくるタイミング信号に同期させて、スキャンバッファ2022に保存する。そして、画像バス2008がPCIバスの場合には、バッファ内に画像データが32ビット以上入ったときに、画像データを先入れ先出しで32ビット分、バッファからシリアルパラレル・パラレルシリアル変換2023に送り、32ビットの画像データに変換し、画像バスI/Fコントローラ2021を通して画像バス2008上に転送する。また、画像バス2008がIEEE1394の場合には、バッファ内の画像データを先入れ先出しで、バッファからシリアルパラレル・パラレルシリアル変換2023に送り、シリアル画像データに変換し、画像バスI/Fコントローラ2021を通して画像バス2008上に転送する。
画像プリント時の処理手順を以下に示す。画像バス2008がPCIバスの場合には、画像バスから送られてくる32ビットの画像データを画像バスI/Fコントローラで受け取り、パラレルシリアル・シリアルパラレル変換2024に送り、プリンタ2095の入力データビット数の画像データに分解し、プリントバッファ2025に保存する。また、画像バス2008がIEEE1394の場合には、画像バスからおくられてくるシリアル画像データを画像バスI/Fコントローラで受け取り、パラレルシリアル・シリアルパラレル変換2024に送り、プリンタ2095の入力データビット数の画像データに変換し、プリントバッファ2025に保存する。そして、プリンタ2095から送られてくるタイミング信号に同期させて、バッファ内の画像データを先入れ先出しで、プリンタ2095に送る。
<画像処理の詳細>
以下に、本発明における汎用プロセッサによる画像処理の手順について説明をする。
ここで、スキャナ2070を初めとし、LAN2011を介して接続された画像入力装置や画像記憶装置、それから公衆回線2051を介して接続された画像入力装置や画像記憶装置等の入力画像の発信元をまとめて画像入力装置と呼び、プリンタ2095を初めとし、LAN2011を介して接続された画像出力装置や画像記憶装置、それから公衆回線2051を介して接続された画像出力装置や画像記憶装置等の出力画像の行き先をまとめて画像出力装置と呼ぶことにする。
画像入力装置の画質特性を補正して使用する画像形式を変換する画像処理プログラムは、あらかじめ画像入力装置によって保持され、画像出力装置の画質特性を補正して使用する画像形式に変換する画像処理プログラムは、あらかじめ画像出力装置によって保持されている。最適な画像処理プログラムを画像入出力装置が持っていない場合には、画像処理装置内のHDD2004に記憶させてある標準の画像処理を使用する。
操作部2012の操作で、コピー動作等、動作の開始が指示されると、操作部I/F2006を通じてCPU2001に動作開始の信号が送られる。また、LAN2011からネットワークIF2010を通じて、または公衆回線2051からモデム2050を通じて、コピー動作等、動作の開始要求信号がCPU2001に送られる場合もある。このときに、使用する画像入力装置と画像出力装置は決定される。どの装置を使用するかは、操作部によるユーザの指示か、または、LANや公衆回線での接続先の指示によるものである。例えば、ユーザが操作部を使いコピー動作を指示した場合には、スキャナ2070とプリンタ2095をそれぞれ画像入力装置と画像出力装置として使用することになる。
そして、使用される画像入力装置と画像出力装置とから画像処理プログラムを受信するために、CPU2001はプログラム要求信号をネットワークI/F2010を通じて送信する。そして、画像入出力装置から送信された画像処理プログラムをネットワークI/F2010を介し、システムバス2007を通じて一旦RAM2002に記憶し、その後、画像バスI/F2005、画像バス2008、画像バスI/Fコントローラ2081、汎用プロセッサ20831経由でプログラム記憶装置20833に記憶させる。このとき、HDD2004にも画像処理プログラムを記録しておき、画像入出力装置がなんらかの理由により画像処理プログラムを送信できない場合には、その画像入出力装置の構成に最も適する画像処理プログラムを選択して、それを画像処理部2083に記憶する構成である。なお、コピー動作の場合画像入力装置はスキャナ2070であり、画像出力装置はプリンタ2095であるので、画像処理プログラム2070P,2095Pを、ネットワークI/F2010経由ではなく、プログラムを記録してあるスキャナやプリンタからデバイスI/F2020、画像バスI/F2005、システムバス2007を経由してRAM2002に一旦記憶し、その後、画像バスI/F2005、画像バス2008、画像バスI/Fコントローラ2081、汎用プロセッサ20831経由でプログラム記憶装置20833に記憶させる。また、モデム2050を経由して画像の入出力を行う場合には、モデムが画像入出力装置となる。この場合にはHDD2004に記録しておいたモデム用の画像処理プログラムを画像処理部2083に記憶させる。
以下は、コピー動作を例にとって、図11を参照して説明する。CPU2001が操作部2012から操作部I/F2006を通じてコピー開始命令を受信すると図11の手順が開始される。
コピー動作の場合、前記の通り、まず、画像入力装置及び画像出力装置として、それぞれスキャナ2070とプリンタ2095を利用するものと決定する(ステップS1101)。それらに対して、CPU2001はプログラム要求信号を送信する(ステップS1102)。そして、スキャナ2070から送信された画像処理プログラム2070P、及び、プリンタ2095から送られてくる画像処理プログラム2095Pを、ネットワークI/F2010及びシステムバス2007を通じて一旦RAM2002に記憶し、その後、画像バスIF2005、画像バス2008、画像バスI/Fコントローラ2081、汎用プロセッサ20831経由で、画像処理コントローラ2084のプログラム記憶装置20833に記憶する(ステップS1103)。なお、いずれか一方の画像処理プログラムしかない場合には、その画像処理プログラムのみを受信し、記憶するものとする。
次に、CPU2001は、デバイスI/F2020を通してスキャナ2070に起動要求信号を送る。前記起動要求信号を受信したスキャナ2070は前記した画像スキャン時の処理手順にしたがってスキャン動作を行う(ステップS1104)。
画像バス2008に転送された前記シリアル画像データは、画像処理部2083に転送され、前記の通りあらかじめプログラム記憶装置20833に記憶させた画像処理プログラムを使用して、前記画像処理の手順にしたがって画像処理が施される。そして前記画像処理の施された画像データは画像バス2008上を経由して、RAM2002内の連続領域に記憶される。
また、スキャナ2070から送られてくるタイミング信号に同期させて、CPU2001はデバイスI/F2020を通してプリンタ2095に起動要求信号を送り、プリント動作が開始される(ステップS1105)。このときRAM2002内の連続領域に記憶された前記シリアル画像データは画像バス2008上を経由してデバイスI/F2020に渡り、前記プリント時の処理手順にしたがってプリント出力される。
コピー動作以外における画像処理に関しても、画像処理プログラムをネットワークI/F2010経由またはHDD2004から受信すること、画像入出力装置に対する起動要求信号と画像信号の送信、および、画像入出力装置からの画像信号や情報の受信をネットワークI/F2010経由で行うこと以外は、前記のコピー動作の手順と共通である。
以上のようにして、画像入力装置あるいは画像出力装置に、それらに適した画像処理プログラムを格納しておき、画像処理装置がそれら画像入力装置及び画像出力装置を利用する際には、それらに格納された画像処理プログラムをロードして画像処理を行うことで、利用者が介在することなく画像入力装置及び画像出力装置に適した画像処理を行うことが可能となる。
また、画像入力装置及び画像出力装置それぞれに画像処理プログラムを格納しておくために、膨大な数の画像処理プログラムを装置内にあらかじめ記録しておく必要なく、接続された画像入力装置と画像出力装置に対して正確に対応した画像処理を実現することができる。
なお、本実施形態において、画像圧縮・展開部、および、画像回転部に関しては、画像処理と切り離して別個に用意してあるが、当然ながら、これらの処理も画像処理の一つであり、ソフトウェア化することができる。したがって、これらの圧縮伸張回転処理を含むその他の画像処理に関しても、前述したように管理することもできる。
[第2実施形態]
第2の実施形態の画像処理装置は、第1の実施形態のそれとほぼ同じ構成を有している。ただし、本実施形態では、画像処理プログラムを画像入力装置あるいは画像出力装置から獲得するのではなく、あらかじめ画像処理装置に用意しておく。
すなわち、あらかじめ、画像入力装置と画像出力装置の種々の組み合わせに対して、高品質な画像出力となるような画像処理プログラムをそれぞれ設計・作成しておき、それら画像処理プログラムをHDD2004に記憶しておく。「画像入力装置と画像出力装置の組み合わせ」と「画像処理プログラム」との関連付け情報もHDD2004に記憶しておく。なおこの関連付け情報は完全な一対一の対応情報である必要はなく、実際の処理時に、画像入力装置や画像出力装置とCPU2001が通信を行うことで、使用する画像処理プログラムを決定できるだけの情報があればよい。また、第1の実施形態では、画像入力装置と画像出力装置それぞれに対して画像処理プログラムを格納していたが、本実施形態では画像入力装置と画像出力装置の各組み合わせについて1つの画像処理プログラムを用意しておいても良い。
図12は本実施形態の画像処理装置の構成を示すブロック図である。図1と異なる点は、画像入力装置と画像出力装置とに画像処理プログラムが格納されていなくともかまわないことと、HDD2004に、「画像入力装置と画像出力装置の組み合わせ」と「画像処理プログラム」との関連付け情報2004Tが格納されていることである。図2〜図10の構成は第1実施形態と同様である。
図12において、操作部2012の操作で、コピー動作等、動作の開始が指示されると、操作部I/F2006を通じてCPU2001に動作開始の信号が送られる。また、LAN2011からネットワークI/F2010を通じて、または公衆回線2051からモデム2050を通じて、コピー動作等、動作の開始要求信号がCPU2001に送られる場合もある。このときに、使用する画像入力装置と画像出力装置は決定される。どの装置を使用するかは、操作部によるユーザの指示か、または、LANや公衆回線での接続先の指示によるものである。例えば、ユーザが操作部を使いコピー動作を指示した場合には、スキャナ2070とプリンタ2095をそれぞれ画像入力装置と画像出力装置として使用することになる。
そして、使用される画像入力装置と画像出力装置の組み合わせと、HDD2004に記憶されている「画像入力装置と画像出力装置の組み合わせ」と「画像処理プログラム」との関連付け情報2004Tとを用いて、CPU2001はHDDに記憶されている画像処理プログラムの中から実際に使用するものを選択し、選択したプログラムを画像バス2008、画像バスI/Fコントローラ2081、汎用プロセッサ20831経由でプログラム記憶装置20833に記憶させる。なお、このときに必要があれば、CPU2001が画像入出力装置と通信を行い使用するプログラムやパラメータを選択することになる。その通信内容は、装置名、装置の画像解像度、装置がカラーか白黒か、といったことから、画像処理部がフィルタ処理に用いるべき最適な係数等が挙げられる。
<画像処理の詳細>
以下は、コピー動作を例にとって、図13のフローチャートを参照して説明する。
CPU2001は操作部2012から操作部I/F2006を通じてコピー開始命令を受信すると、使用する画像入力装置と画像出力装置とを決定してコピー動作に入り(ステップS1301)、決定された画像入力装置と画像出力装置の組み合わせと、「画像入力装置と画像出力装置の組み合わせ」と「画像処理プログラム」との関連付け情報2004Tとを参照して、HDD2004に格納されている画像処理プログラムのなかから最適な画像処理プログラムを選択し、画像処理コントローラ2084のプログラム記憶装置20833にロードする(ステップS1302)。
次にデバイスI/F2020を通してスキャナ2070に起動要求信号を送る(ステップS1303)。前記起動要求信号を受信したスキャナ2070は前記した画像スキャン時の処理手順にしたがってスキャン動作を行う。画像バス2008に転送された前記シリアル画像データは、画像処理部2080に転送され、あらかじめプログラム記憶装置20833に記憶させた画像処理プログラムを使用して、前記画像処理の手順にしたがって画像処理が施される。そして前記画像処理の施された画像データは画像バス2008上を経由して、RAM2002内の連続領域に記憶される。
また、スキャナ2070から送られてくるタイミング信号に同期させて、CPU2001はデバイスI/F2020を通してプリンタ2095に起動要求信号を送り、プリント動作が開始される(ステップS1304)。このときRAM2002内の連続領域に記憶された前記シリアル画像データは画像バス2008上を経由してデバイスI/F2020に渡り、前記プリント時の処理手順にしたがってプリント出力される。
コピー動作以外における画像処理に関しても同様に、画像入出力と連携させて画像処理部で画像処理を行う。
なお、常に高品質な画像処理を行うためには、HDD2004に記憶しておく画像処理プログラムは、入力装置と出力装置とのあらゆる考え得る組み合わせに対してあらかじめ用意しておく必要がある。あらかじめ用意していない接続先に対する画像処理は、その品質が保証できないものとなるからである。しかし、このHDDに新たな画像処理プログラムを追加していくことで、新規の接続先に対しても高品質な画像処理を実現することができるようになる。この画像処理プログラムを追加するタイミングとしては、LANに接続するネットワークスキャナやネットワークプリンタを新設したとき、また、画像処理で対応できる画像の規格(JPEG圧縮方式等)を増やしたい場合、等が考えられ、画像処理プログラムを置き換えるタイミングとしては、さらに高品質な画像処理プログラムにする場合等が考えられる。
以上のように、本実施形態の画像処理装置によれば、画像入力装置と画像出力装置の実際の組み合わせに対して最適な画像処理プログラムを、利用者の介在成しに選択し、画像処理を実行することができる。このため、利用者の労力を軽減できるとともに、様々な画像入力装置と画像出力装置との組み合わせに対して高品質な画像処理を実現することができる。また、新規の画像処理に対しても、システムの構成を変えることなく、必要に応じて新規の画像処理ソフトウェアだけを前記ソフトウェア記憶手段に追加あるいは置き換えすることにより低コスト短設計時間で容易に対応できる。
[第3の実施の形態]
第3の実施形態の画像処理装置は、第1の実施形態のそれとほぼ同じ構成を有している。ただし、本実施形態では、画像処理プログラムをソフトウェアサーバから獲得する。
すなわち、あらかじめ、画像入力装置と画像出力装置のそれぞれあるいはそれらの組み合わせに対して、高品質な画像出力となるような画像処理プログラムを設計・作成しておき、それら画像処理プログラムをソフトウェアサーバ2100に記憶しておく。
図13は本実施形態の画像処理装置の構成を示すブロック図である。図1と異なる点は、画像入力装置と画像出力装置とに画像処理プログラムが格納されていなくともかまわないことと、ソフトウェアサーバ2100に画像処理プログラムが格納されていることである。図2〜図10の構成は第1実施形態と同様である。ソフトウェアサーバ2100は、モデム2050を経由してWANに接続されてもよい。
本実施形態においては、画像入力装置および画像出力装置の画質特性を補正して使用する画像形式を変換する画像処理プログラムを、LAN2011で構成されるネットワーク上のソフトウェアサーバにあらかじめ持たせておく。
操作部2012の操作で、コピー動作等、動作の開始が指示されると、操作部I/F2006を通じてCPU2001に動作開始の信号が送られる。また、LAN2011からネットワークI/F2010を通じて、または公衆回線2051からモデム2050を通じて、コピー動作等、動作の開始要求信号がCPU2001に送られる場合もある。このときに、使用する画像入力装置と画像出力装置は決定される。どの装置を使用するかは、操作部によるユーザの指示か、または、LANや公衆回線での接続先の指示によるものである。例えば、ユーザが操作部を使いコピー動作を指示した場合には、スキャナ2070とプリンタ2095をそれぞれ画像入力装置と画像出力装置として使用することになる。
そして、使用される画像入力装置と画像出力装置に対応する画像処理プログラムを受信するために、CPU2001はプログラム要求信号をネットワークI/F2010を通じてLAN2011上の図示しないソフトウェアサーバに送信する。そして、ソフトウェアサーバから送信された画像処理プログラムをネットワークI/F2010を介し、システムバス2007を通じて一旦RAM2002に記憶し、その後、画像バスI/F2005、画像バス2008、画像バスI/Fコントローラ2081、汎用プロセッサ20831経由でプログラム記憶装置20833に記憶させる。例えば、コピー動作の場合画像入力装置はスキャナ2070であり、画像出力装置はプリンタ2095であるので、前述のようにCPU2001はソフトウェアサーバ2100に対してスキャナ2070とプリンタ2095の識別番号を通知すると共に、対応する画像処理プログラムのプログラム要求信号を送信し、ネットワークI/F2010経由で画像処理プログラムを受信することになる。また、モデム2050を経由して画像の入力を行う場合には、モデムが画像入力装置となる。また同様に、モデム2050を経由して画像の出力を行う場合には、モデムが画像出力装置となる。これら場合にも同様に、ソフトウェアサーバにモデム2050の識別番号を通知して画像処理プログラム要求信号を送信する。
<画像処理の詳細>
以下は、コピー動作を例にとって、図15のフローチャートを参照して説明する。
CPU2001は操作部2012から操作部I/F2006を通じてコピー開始命令を受信すると、スキャナ2070及びプリンタ2095を使用する画像入力装置及び画像出力装置として決定し(ステップS1501)、コピー動作に入る。
前記の通り、CPU2001はソフトウェアサーバ2100に対してネットワークI/F2010経由でプログラム要求信号を送信し(ステップS1502)、画像処理プログラムをネットワークI/F2010経由で受信し、それを画像処理部2083内のプログラム記憶装置20833に記憶させ、画像処理実行の準備をする(ステップS1503)。
次に、CPU2001は、デバイスI/F2020を通してスキャナ2070に起動要求信号を送る(ステップS1504)。前記起動要求信号を受信したスキャナ2070は前記した画像スキャン時の処理手順にしたがってスキャン動作を行う。
画像バス2008に転送された前記シリアル画像データは、画像処理部2083に転送され、前記の通りあらかじめプログラム記憶装置20833に記憶させた画像処理プログラムを使用して、前記画像処理の手順にしたがって画像処理が施される。そして前記画像処理の施された画像データは画像バス2008上を経由して、RAM2002内の連続領域に記憶される。
また、スキャナ2070から送られてくるタイミング信号に同期させて、CPU2001はデバイスI/F2020を通してプリンタ2095に起動要求信号を送り、プリント動作が開始される(ステップS1505)。このときRAM2002内の連続領域に記憶された前記シリアル画像データは画像バス2008上を経由してデバイスI/F2020に渡り、前記プリント時の処理手順にしたがってプリント出力される。
コピー動作以外における画像処理の場合、画像入力装置および画像出力装置は、モデム2050であるか、ネットワークI/F2010を介して接続される図示しないネットワーク機器かのどちらかとなる。このときも、プログラム要求信号を図示しないソフトウェアサーバに対して送信するときの付随情報、画像入力装置の識別番号と画像出力装置の識別番号、が実際の画像入力装置と画像出力装置に応じて変わることと、起動要求信号をスキャナ2070とプリンタ2095の代わりに実際の画像入力装置と画像出力装置に対して送信すること、また、画像の入力元と出力先がスキャナ2070とプリンタ2095ではなく実際の画像入力装置と画像出力装置になること以外の手順は、前記のコピー動作の手順と共通である。
このような構成により、ソフトウェアサーバに画像処理プログラムを格納し、画像処理装置に接続された画像入力装置と画像出力装置に対して正確に対応した画像処理プログラムをそこからロードすることで、膨大な数の画像処理ソフトウェアを装置内にあらかじめ記録しておく必要なしに、さらに、画像処理ソフトウェアのバージョンアップ等変更の際に各装置個別に書き換え作業をする必要なしに、画像処理ソフトウェアをソフトウェアサーバで集中管理させることができる。
なお、本実施例において、画像圧縮・展開部、および、画像回転部に関しては、画像処理と切り離して別個に用意してあるが、当然ながら、これらの処理も画像処理の一つであり、ソフトウェア化することができる。したがって、これらの圧縮伸張回転処理を含むその他の画像処理に関しても、前述したように管理することもできる。
[第4実施形態]
第4の実施形態の画像処理装置は、第4の実施形態のそれと同じ構成を有している。ただし、本実施形態では、画像処理プログラムをソフトウェアサーバからダウンロードする際の手順が異なっている。
すなわち、あらかじめ、画像入力装置と画像出力装置のそれぞれあるいはそれらの組み合わせに対して、高品質な画像出力となるような画像処理プログラムを設計・作成しておき、それら画像処理プログラムをソフトウェアサーバ2100に記憶しておく。それをダウンロードする際に、画像処理装置に既に保持された画像処理プログラムと比較し、より適したプログラムを選択して利用する。
本実施形態では、あらかじめ、画像入力装置および画像出力装置の画質特性を補正して使用する画像形式を変換する画像処理プログラムを、LAN2011で構成されるネットワーク上のソフトウェアサーバ2100に持たせておく。
操作部2012の操作で、コピー動作等、動作の開始が指示されると、操作部I/F2006を通じてCPU2001に動作開始の信号が送られる。また、LAN2011からネットワークI/F2010を通じて、または公衆回線2051からモデム2050を通じて、コピー動作等、動作の開始要求信号がCPU2001に送られる場合もある。このときに、使用する画像入力装置と画像出力装置は決定される。どの装置を使用するかは、操作部によるユーザの指示か、または、LANや公衆回線での接続先の指示によるものである。例えば、ユーザが操作部を使いコピー動作を指示した場合には、スキャナ2070とプリンタ2095をそれぞれ画像入力装置と画像出力装置として使用することになる。
そして、使用される画像入力装置と画像出力装置に対応する画像処理プログラムを受信するために、CPU2001はプログラム要求信号をネットワークI/F2010を通じてLAN2011上のソフトウェアサーバ2100に送信する。このときCPU2001は同時に、HDD2004に記録されている、使用される画像入力装置と画像出力装置に対応する画像処理プログラムを検索し、そのバージョン番号を把握する。そして、それと、ソフトウェアサーバから受信した画像処理プログラムのバージョン番号とを比較し、ソフトウェアサーバの持つ画像処理プログラムのバージョンが、HDDに格納された画像処理プログラムのバージョンに対して同じかまたは古いバージョンであるときに、プログラム非要求信号をソフトウェアサーバに送信して画像処理ソフトウェアのダウンロード処理を停止させる。また、ソフトウェアサーバ2100の稼働状態を検知して、サーバ2100が停止している場合、および、稼働率から計算したダウンロードに要する時間が、規定時間よりも長い場合にも同様に画像処理プログラムのダウンロード処理を停止させる。なお、このときの規定時間は、操作部の操作でユーザによってあらかじめ設定することができる構成をとっている。
このようにしてCPU2001は、画像処理に使用する画像処理プログラムを選択する。なお、ダウンロード時間が規定時間に収まらないと判断されたときには、HDD2004に記録されている画像処理プログラムを選択することになる。
使用する画像処理プログラムをソフトウェアサーバからダウンロードする場合には、受信した画像処理プログラムをネットワークI/F2010を介し、システムバス2007を通じて一旦RAM2002に記憶し、その後、画像バスI/F2005、画像バス2008、画像バスI/Fコントローラ2081、汎用プロセッサ20831経由でプログラム記憶装置20833に記憶させる。また、使用する画像処理プログラムをHDD2004から読み出す場合には、システムバス2007を通じて、画像バスI/F2005、画像バス2008、画像バスI/Fコントローラ2081、汎用プロセッサ20831経由でプログラム記憶装置20833に記憶させる。例えば、コピー動作の場合画像入力装置はスキャナ2070であり、画像出力装置はプリンタ2095であるので、前述のようにCPU2001はソフトウェアサーバに対してスキャナ2070とプリンタ2095の識別番号を通知すると共に、対応する画像処理プログラムのプログラム要求信号を送信、かつ、ソフトウェアサーバの稼働状態情報を読み出す。そして前記の通り、ソフトウェアサーバの稼働状態により、ネットワークI/F2010経由またはHDD2004から画像処理プログラムを受信または読み出しすることになる。なお、モデム2050を経由して画像の入力を行う場合には、モデムが画像入力装置となる。また同様に、モデム2050を経由して画像の出力を行う場合には、モデムが画像出力装置となる。これら場合にも同様に、ソフトウェアサーバにモデム2050の識別番号を通知して画像処理プログラム要求信号を送信する。
ソフトウェアサーバから画像処理プログラムをダウンロードした場合には、その画像処理プログラムをHDD2004に記録する処理を行う。このとき、その画像処理プログラムのバージョン番号と、対応する画像入力装置と画像出力装置といった付随情報も記録する。このとき古いバージョンの画像処理ソフトウェアがすでに記録されている場合には、それを消去する。このようにして、HDD2004にはソフトウェアサーバの持つ最新のバージョンの画像処理ソフトウェアが常に記録されることになる。しかし、HDD2004にダウンロードしたすべての最新画像処理プログラムを記録するだけの充分な容量がない場合には、画像処理プログラムに対して優先順位を付けて、優先順位の低いものを消去する制御を行い、HDD2004の容量が小さい場合にも対応させている。このときの優先順位の付け方は、操作部からユーザによって指定することができ、最近使用した画像処理プログラムを優先する、最も多くの回数使用した画像処理プログラムを優先する、指定した画像処理プログラムは常に記録しておく、等が選択できる。また、この、常に記録しておく画像処理プログラムとしては、コピー動作に使用する画像処理プログラム、モデム2050を使用するときの画像処理プログラム等を指定することで、LANを介さない画像処理の高速化を実現することができる。
<画像処理の詳細>
以下、コピー動作を例にとって画像処理装置の動作について、図16のフローチャートを参照して説明する。
CPU2001は操作部2012から操作部I/F2006を通じてコピー開始命令を受信すると、スキャナ2070とプリンタ2095をそれぞれ使用する画像入力装置及び画像出力装置として決定し(ステップS1601)、コピー動作に入る。
前記の通り、CPU2001はソフトウェアサーバ2100に対してネットワークI/F2010経由でプログラム要求信号を送信し(ステップS1602)、画像処理プログラムをネットワークI/F2010経由で受信し、それを画像処理部2083内のプログラム記憶装置20833に記憶させ、画像処理実行の準備をする(ステップS1603)。
このときCPU2001は同時に、HDD2004に記録されている、スキャナ2070及びプリンタ2095(あるいはそれらの組み合わせ)に対応する画像処理プログラムを検索し、そのバージョン番号を把握する。そして、それと、ソフトウェアサーバ2100から受信した画像処理プログラムのバージョン番号とを比較し、ソフトウェアサーバ2100の持つ画像処理プログラムのバージョンが、HDDに格納された画像処理プログラムのバージョンに対して同じかまたは古いバージョンであるかを判定する(ステップS1604)。判定の結果がYESであれば、プログラム非要求信号をソフトウェアサーバに送信して画像処理ソフトウェアのダウンロード処理を停止させる(ステップS1608)。
また、フローチャートには記載していないが、ソフトウェアサーバ2100の稼働状態を検知して、サーバ2100が停止している場合、および、稼働率から計算したダウンロードに要する時間が規定時間よりも長い場合には、同様に画像処理プログラムのダウンロード処理を停止させる。なお、このときの規定時間は、操作部の操作でユーザによってあらかじめ設定することができる構成をとっている。このように、ソフトウェアサーバからダウンロードする画像処理プログラムが古い場合や、サーバが正常動作していない場合、あるいは、ダウンロード時間が規定時間に収まらないと判断されたときには、HDD2004に記録されている画像処理プログラムを選択して画像処理コントローラ2084にロードする(ステップS1609)。
使用する画像処理プログラムをソフトウェアサーバからダウンロードする場合には、受信した画像処理プログラムをネットワークI/F2010を介し、システムバス2007を通じて一旦RAM2002に記憶し、その後、画像バスI/F2005、画像バス2008、画像バスI/Fコントローラ2081、汎用プロセッサ20831経由でプログラム記憶装置20833に記憶させる。一方、ソフトウェアサーバ2100からの画像処理プログラムが画像処理装置2000が保持するそれよりも新しく、かつ、ダウンロードが順調に進めば、ダウンロードは続行される(ステップS1606)。
使用する画像処理プログラムをHDD2004から読み出す場合には、システムバス2007を通じて、画像バスI/F2005、画像バス2008、画像バスI/Fコントローラ2081、汎用プロセッサ20831経由でプログラム記憶装置20833に記憶させる。
次に、CPU2001は、デバイスI/F2020を通してスキャナ2070に起動要求信号を送る(ステップS1606)。前記起動要求信号を受信したスキャナ2070は前記した画像スキャン時の処理手順にしたがってスキャン動作を行う。
画像バス2008に転送された前記シリアル画像データは、画像処理部2083に転送され、前記の通りあらかじめプログラム記憶装置20833に記憶させた画像処理プログラムを使用して、前記画像処理の手順にしたがって画像処理が施される。そして前記画像処理の施された画像データは画像バス2008上を経由して、RAM2002内の連続領域に記憶される。
また、スキャナ2070から送られてくるタイミング信号に同期させて、CPU2001はデバイスI/F2020を通してプリンタ2095に起動要求信号を送り、プリント動作が開始される(ステップS1607)。このときRAM2002内の連続領域に記憶された前記シリアル画像データは画像バス2008上を経由してデバイスI/F2020に渡り、前記プリント時の処理手順にしたがってプリント出力される。
コピー動作以外における画像処理の場合、画像入力装置および画像出力装置は、モデム2050であるか、ネットワークI/F2010を介して接続される図示しないネットワーク機器かのどちらかとなる。このときも、プログラム要求信号を図示しないソフトウェアサーバに対して送信するときの付随情報、画像入力装置の識別番号と画像出力装置の識別番号、が実際の画像入力装置と画像出力装置に応じて変わることと、起動要求信号をスキャナ2070とプリンタ2095の代わりに実際の画像入力装置と画像出力装置に対して送信すること、また、画像の入力元と出力先がスキャナ2070とプリンタ2095ではなく実際の画像入力装置と画像出力装置になること以外の手順は、前記のコピー動作の手順と共通である。
このように、本実施形態によれば、第3の実施形態の効果に加えて、無条件にソフトウェアサーバから画像処理プログラムをダウンロードせず、最新のプログラムに限ってロードするために、無用な負荷をサーバにかけずに済む。
また、ソフトウェアサーバに処理が集中して稼働状態が悪くなっているときでも、画像処理装置内に保存してある画像処理プログラムを使用することにより、不必要なソフトウェアの転送時間を省いて高速に画像処理動作を開始することが可能である。
また、万が一、ソフトウェアサーバに障害が発生してその機能を停止しているような場合にも、同時に画像処理装置の機能が停止してしまうという危険を回避することができる。
なお、本実施例において、画像圧縮・展開部、および、画像回転部に関しては、画像処理と切り離して別個に用意してあるが、当然ながら、これらの処理も画像処理の一つであり、ソフトウェア化することができる。したがって、これらの圧縮伸張回転処理を含むその他の画像処理に関しても、前述したように管理することもできる。
[他の実施形態]
なお、本発明は、複数の機器(例えばホストコンピュータ、インターフェース機器、リーダ、プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機、ファクシミリ装置など)に適用してもよい。
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体(または記録媒体)を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明した(図11または図13または図15または図16に示す)フローチャートに対応するプログラムコードが格納されることになる。