以下、本発明の実施の形態を図面を参照して詳細に説明する。
[第1の実施形態]
図1は、本発明の第1の実施形態に係る画像処理装置の全体構成を示すブロック図である。
図1において、画像処理装置100は、画像入力デバイスである101と、画像出力デバイスであるプリンタエンジン102に接続し、これらに対して画像読み取りやプリント出力のための制御を行う。また、画像処理装置100は、LAN10や公衆回線104と接続し、これらを介して画像情報やデバイス情報を入出力するための制御を行う。また、画像処理装置100は、画像データ等を表示可能な表示画面を有する操作部110と接続する。本実施形態では、画像処理装置100、スキャナ101、プリンタエンジン102、及び操作部110により画像形成装置を構成する。
画像処理装置100において、CPU105は、画像処理装置100を含む画像形成装置全体を制御するための中央処理装置である。RAM106は、CPU105が動作するためのワークメモリであり、入力された画像データを一時記憶するための画像メモリでもある。ROM107は、ブートROMであり、システムのブートプログラムが格納されている。HDD108は、ハードディスクドライブであり、各種処理のためのシステムソフトウェア及び入力された画像データ等を格納する。
操作部I/F109は、操作部110に接続されたインタフェース部であり、操作部110に対して操作画面を表示するためのデータ等を出力する。また、操作部I/F109は、操作部110から操作者が入力した情報をCPU105に伝える役割をする。
ネットワークI/F111は、LAN10等のネットワークに接続された通信インタフェース部であり、例えばLANカード等で構成される。また、ネットワークI/F111は、LAN10上のパーソナルコンピュータ(PC)や他の画像形成装置、画像処理装置等の外部装置との間で情報の入出力を行う。モデム112は、公衆回線104に接続し、外部装置との間で情報の入出力を行う。
CPU105、RAM106、ROM107、HDD108、操作部I/F109、ネットワークI/F111、モデム112、及びイメージバスI/F114は、システムバス113上に配置されている。
イメージバスI/F114は、システムバス113と画像データを高速で転送する画像バス115とを接続するためのインタフェースであり、データ構造を変換するバスブリッジである。画像バス115には、ラスタイメージプロセッサ(RIP)部116、デバイスI/F117、スキャナ画像処理部118、画像編集用画像処理部120、画像圧縮部103、画像伸長部121、及びカラーマネージメントモジュール(CMM)130が接続される。
ラスタイメージプロセッサ(RIP)部116は、ページ記述言語(PDL)コードをイメージデータに展開し、それをページ順に並んでいるページデータとしてRIP用パケット生成部131に出力する。RIP用パケット生成部131は、RIP部116から入力されたページデータを内部のバッファ(不図示)で逐次格納する。バッファに格納されたページデータを任意の画素ブロック単位の矩形データ(画素データ)に分割して読出し、分割された各画素データに後述する情報をヘッダデータとして付加する。そして、各画素データの属性を示す属性データを各画素データに付加して、データパケットを生成する。
デバイスI/F117は、スキャン用パケット生成部132やプリンタ画像処理部119を介して、スキャナ101やプリンタエンジン102に接続し、画像データの同期系/非同期系の変換を行う。スキャン用パケット生成部132は、スキャナ101より入力された、スキャンの走査順に並んでいるページデータを内部のバッファ(不図示)で逐次格納する。バッファに格納されたページデータを任意の画素ブロック単位の矩形データ(画素データ)に分割して読出し、分割された各画素データに後述する情報をヘッダデータとして付加する。そして、各画素データの属性を示す属性データを各画素データに付加して、データパケットを生成する。
スキャナ画像処理部118は、スキャナ101からスキャン用パケット生成部132を介して入力された画像データに対して、補正、加工、編集等の各種処理を行う。画像編集用画像処理部120は、画像データの回転や解像度変倍、色処理、トリミング、マスキング、2値変換、多値変換、白紙判定等の各種画像処理を行う。画像圧縮部103は、RIP部116やスキャナ画像処理部118、画像編集用画像処理部120で処理された画像データを所定の圧縮方式で符号化する。圧縮された画像データは、HDD108で一度格納される。
画像伸長部121は、HDD108に格納されている圧縮された画像データを必要に応じて復号化して伸長する。伸長された画像データは、画像編集用画像処理部120で処理されたり、プリンタ画像処理部119で画像処理されたり、プリンタエンジン102に出力される。
プリンタ画像処理部119は、プリント出力する画像データに対して、プリンタエンジンに応じた画像処理補正等の処理を行う。CMM130は、画像データに対して、プロファイルやキャリブレーションデータに基づいた色変換処理(色空間変換処理ともいう)を施す専用ハードウェアモジュールである。プロファイルとは、機器に依存した色空間で表現したカラー画像データを機器に依存しない色空間(例えばLabなど)に変換するための関数のような情報である。キャリブレーションデータは、スキャナ101やプリンタエンジン102の色再現特性を修正するためのデータである。
図2は、図1のCPU105上で動作するソフトウェアモジュールのブロック図である。
ジョブコントロール処理モジュール201は、CPU105上で動作する図示(及び不図示)の各ソフトウェアモジュールを統括・制御することで、コピー、プリント、スキャン、FAX送受信などの画像形成装置内で処理されるあらゆるジョブの制御を行う。ネットワーク処理モジュール202は、主にネットワークI/F111を介して行われる外部装置との通信を制御するモジュールであり、LAN10上の各機器との通信制御を行う。例えば、ネットワーク処理モジュール202は、LAN10上の機器からの制御コマンドやデータを受信すると、その内容をジョブコントロール処理モジュール201へ通知する。また、ジョブコントロール処理モジュール201からの指示に基づき、LAN10上の所定の機器へ制御コマンドやデータの送信を行う。
UI処理モジュール203は、主に操作部110、操作部I/F109に係る制御を行う。UI処理モジュール203は、操作者が操作部110を操作した内容をジョブコントロール処理モジュール201へ通知すると共に、ジョブコントロール処理モジュール201からの指示に基づいて、操作部110上の表示画面の表示内容を制御する。
FAX処理モジュール204は、FAX機能の制御を行う。例えば、FAX処理モジュール204は、モデム112を介してFAX受信を行い、受信したFAX画像に画像処理を施した後、画像処理後の画像データをジョブコントロール処理モジュール201へ通知する。また、ジョブコントロール処理モジュール201により指定された画像を指定通知先へFAX送信を行う。
プリント処理モジュール207は、ジョブコントロール処理モジュール201からの指示に基づいて、画像編集用画像処理部120、プリンタ画像処理部119、及びプリンタエンジン102を制御し、指定された画像データの印刷処理を行う。例えば、プリント処理モジュール207は、ジョブコントロール処理モジュール201から、画像データ、画像情報(画像データのサイズ、カラーモード、解像度など)、レイアウト情報(オフセット、拡大縮小、面つけなど)を受け付ける。さらに、出力用紙情報(サイズ、印字方向など)等を受け付ける。そして、画像圧縮部103、画像伸長部121、画像編集用画像処理部120、及びプリンタ画像処理部119を制御して、画像データに対して適切な画像処理を施し、プリンタエンジン102を制御して指定用紙への印刷を行わせる。
スキャン処理モジュール210は、ジョブコントロール処理モジュール201からの指示に基づいて、スキャナ101、スキャン用パケット生成部132、及びスキャナ画像処理部118を制御する。そして、スキャナ101の原稿台にある原稿のスキャンを実行し、画像データの入力を行う。例えば、スキャン処理モジュール210は、ジョブコントロール処理モジュール201からの指示に含まれるカラーモードに応じて処理を行う。すなわち、カラーモードがカラーであれば、原稿をカラー画像データとして入力し、カラーモードがモノクロであれば、原稿をモノクロ画像データとして入力する。また、カラーモードがAutoである場合には、プレスキャンなどにより原稿画像のカラー/モノクロ判定を行い、その判定結果に基づいて再度原稿をスキャンしてカラー画像データ又はモノクロ画像データを入力する。入力された画像データのカラー情報は、ジョブコントロール処理モジュール201へ通知される。
また、スキャン処理モジュール210は、入力された画像データに対して、スキャナ画像処理部118を制御して画像の圧縮等の画像処理を施した後、ジョブコントロール処理モジュール201へ画像処理済みの画像データを通知する。
色変換処理モジュール209は、ジョブコントロール処理モジュール201からの指示に基づいて、画像データに対して色変換処理を行い、色変換処理後の画像データをジョブコントロール処理モジュール201へ通知する。ジョブコントロール処理モジュール201は、色変換処理モジュール209に対して、入力色空間情報、出力色空間情報、及び色変換を適用する画像データを通知する。色変換処理モジュール209に通知された出力色空間が、入力機器に依存しない色空間(例えばLab空間)である場合には、入力機器に依存する入力色空間(例えば、RGB)からLabに変換するための情報である入力プロファイル情報が併せて通知される。この場合、色変換処理モジュール209は、入力プロファイルにより、入力色空間からLab空間へマッピングするルックアップテーブル(LUT)を作成し、このLUTを利用して入力画像の色変換を行う。
また、色変換処理モジュール209に通知された入力色空間が、Lab空間である場合には、Lab空間から出力機器に依存する出力色空間に変換するための出力プロファイル情報が併せて通知される。この場合、色変換処理モジュール209は、出力プロファイルにより、Lab色空間から出力色空間へマッピングするLUTを作成し、このLUTを利用して入力画像の色変換を行う。
また、色変換処理モジュール209に通知された入力色空間、出力色空間の双方が、デバイスに依存する色空間である場合には、入力プロファイルと出力プロファイルの双方が通知される。この場合、色変換処理モジュール209は、入力プロファイル及び出力プロファイルにより、入力色空間から出力色空間へダイレクトにマッピングするLUTを作成し、このLUTを利用して入力画像の色変換を行う。色変換処理モジュール209では、CMM130が装置内にあれば、CMM130へ生成したLUTを設定することより、CMM130を利用して色変換を行う。一方、CMM130がない場合にはCPU105がソフト的に色変換処理を行う。
RIP処理モジュール211は、ジョブコントロール処理モジュール201からの指示に基づいて、PDL(ページ記述言語)コードの解釈(インタプリット)を行い、RIP部116を制御してレンダリングすることで、ビットマップイメージへの展開を行う。さらにRIP用パケット生成部131にてパケットデータ生成のための設定・制御を行う。
図3(a)は、図1の画像処理装置100で扱うデータパケットの構成例を示す図であり、図3(b)は、図3(a)に示すデータパケット内のプロセスインストラクションの詳細な構成例を示す図である。本実施の形態で扱うデータパケットのサイズは32×32の画素ブロックを1単位としているが、これに限定されるものではない。
図3(a)に示すデータパケットは、スキャン用パケット生成部132またはRIP用パケット生成部131で生成されるデータパケット(Data Packet)である。また、データパケットは、所定サイズのイメージデータ(Image Data)302にヘッダ(Header)301と属性データ(Z Data)303とを付加したものである。属性データ(Z Data)303は、イメージデータ302の属性を示す属性データである。
まず、ヘッダ(Header)301の情報の詳細について説明する。
イメージタイプ(Image Type)304は、データパケット内のイメージデータ(Image Data)302のデータフォーマットや解像度を示すものである。イメージタイプ304には、例えば、RGB、CMYK、YUVや300dpi、600dpi、1200dpiなどを識別するための情報が含まれる。ページID(Page ID)305には、イメージデータ302が対応するページに割り当てられたページIDコードが格納される。ジョブID(Job ID)306には、ジョブコントロール処理モジュール201などでジョブを管理するためにジョブごとに割り当てられたジョブIDコードが格納される。
パケットID(Y方向)(Packet ID Y-coordinate)307とパケットID(X方向)(Packet ID X-coordinate)308は、ページデータ上の座標を示すパケットIDコードが格納される。プロセスインストラクション(Process Instruction)309は、データパケットに対して実行するように設定された処理内容を示すものである。複数の処理が設定される場合には複数の処理のそれぞれを識別する処理情報が左詰めで順にプロセスインストラクション309に設定される。図10に示す画像編集用画像処理部120内の各処理ユニットは、それぞれがプロセスインストラクション309で示された処理を実行した後に、プロセスインストラクション309内の処理情報の格納位置を図示の左側に6ビットシフトする(図3(b)参照)。
プロセスインストラクション309には、イメージデータ302を処理すべき処理ユニットに対して個別に割り当てられたユニットIDコードと該当する処理ユニットにおける処理モードを示すモードコードを1組として、8組の処理情報が格納されている。ここでいう処理ユニットは、図10に示す色処理部402、回転処理部403、トリミング・マスキング処理部404、解像度変倍処理部405、2値多値変換部406、及び白紙判定部407を含む複数の画像処理手段を意味する。プロセスインストラクション309内の処理情報は、ジョブコントロール処理モジュール201からの指示に基づき、各ジョブ、ページ情報に応じてプリント処理モジュール207により設定される。
図3(b)に示すユニットID(Unit ID)コード1〜8(317,319,321,323,325,327,329,331)は、4ビットのコード長を持ち、処理ユニットを指定するための情報である。モード(Mode)コード1〜8(318,320,322,324,326,328,330,332)は、2ビットのコード長をもち、処理ユニットでの処理モードを指定するための情報である。実行すべき処理がユニットIDコードのみで特定可能である場合には、モードコードは特に必要なく、その旨を示す値(例えば、“00”)がモードコードとして設定される。本実施形態では、プロセスインストラクション309内のユニットIDに“1111”を格納することで全ての処理が終了したことを識別することが可能となっている。そのため、1つのデータパケットに対して、最大で7つの処理ユニットによる処理を実行するように設定することができる。
図3(a)において、パケット長(Packet Byte Length)310は、データパケットのトータルのバイト数を示す。画像データオフセット(Image Data Offset)311及び属性データオフセット(Z Data Offset)312は、それぞれデータパケットの先頭アドレスからのデータのバイト単位のオフセット量を示す。画像データ長(Image Data Byte Length)313は画像データのバイト数を表し、属性データ長(Z Data Byte Length)314は属性データのバイト数を表す。
圧縮フラグ(Compress Flag)315は、データパケット内のイメージデータの圧縮状態を示すフラグである。サムネイルデータ(Thumbnail Data)316は、データパケットを簡易的にサムネイル表示するためのサンプリングデータが格納されている部分である。
次に、画像処理装置100がLAN10を介して外部装置から印刷ジョブを受信して、プリンタエンジン102にて印刷ジョブに基づく印刷を行う動作処理について説明する。
画像処理装置100は、LAN10を介して外部装置から送信されてきたPDL(ページ記述言語)コードをネットワークI/F111にて受信する。受信したPDLコードは、システムバス113、イメージパスI/F114、及び画像バス115を介してRIP部116へ入力される。
RIP部116は、入力されたPDLコードに対してPDL解釈(インタプリット)を行い、PDLコードを当該RIP部116にて処理できるコードデータへ変換し、それに基づいてレンダリングを実行する。RIP部116でレンダリングされたページデータは、RIP用パケット生成部131内のバッファ(不図示)に逐次格納される。そして、RIP用パケット生成部131は、バッファに格納されたページデータを任意の画素ブロック単位(例えば32×32)の矩形データに分割して読出し、各矩形データに図3(b)に示すプロセスインストラクションを含むヘッダ301を付加する。この矩形データはイメージデータ302に相当する。さらに、RIP用パケット生成部131は、RIP部116から矩形データと併せて出力された属性データ303を各矩形データに付加して、図3(a)に示すデータパケットを生成する。生成されたデータパケットは、HDD108に一時的に格納されるべく、画像圧縮部103にて圧縮される。
ここで、本実施の形態で実行される圧縮の圧縮方式と、その圧縮方式に基づいて圧縮を行う画像圧縮部103の構成について説明する。
図4(a)は、画像圧縮部103の内部構成を示すブロック図であり、図4(b)は、画像圧縮部103を構成する第1解像度圧縮部の内部構成を示すブロック図である。
図4(a)において、画像圧縮部103は、符号化制御部501と、第1解像度圧縮部502と、第2解像度圧縮部503と、データ符号化部504とを備える。
データパケットが画像バス115を介して画像圧縮部103に入力されると、まず、符号化制御部501は上述したデータパケット内のヘッダ301を解読する。符号化制御部501は、ヘッダ301内の圧縮フラグ315を参照して、当該データパケット内のイメージデータが圧縮されていないRAWデータであることを確認し、圧縮動作の実行を決定して、当該データパケットを第1解像度圧縮部502に出力する。そして、第1解像度圧縮部502は、データパケットに対して、低解像度データへの圧縮を施す。
図4(b)において、第1解像度圧縮部502は、RAWデータ書き込み制御部701と、RAWデータ書き込みバッファ702と、コード生成部703と、処理データバッファ704と、圧縮データ読出し制御部705とを備える。
RAMデータ書き込み制御部701は、第1解像度圧縮部502に入力されたデータパケットを、順次RAWデータ書き込みバッファ702へ書き込んでいく。コード生成部703は、RAWデータ書き込みバッファ702に書き込まれたデータパケットのイメージデータ302の部分をさらに2×2のブロックデータに分割して順次読み出す。次に、コード生成部703は、読み出した2×2のブロックデータの画素データの配置を解析する。そして、コード生成部703は、2×2のブロックデータから、後述する配置パターンのコードデータ(4bit)と低解像度代表データ(1画素:8bit)を取り出す。併せて、低解像度データから元の解像度データへ復元する際に必要な補間データ(8〜24bit)を生成する。ここで、コード生成部703が行う低解像度データへの圧縮について図5を参照して説明する。
まず図5に示す15種類の2×2の配置コードパターン(4bit)を利用し、2×2のブロックデータのそれぞれに対して、配置コード“0000”〜“1110”が割り当てられる(コード化)。例えば、2×2のブロックデータの全ての画素データが同じ場合には“0000”のコードが割り当てられ、左上の画素データのみ異なる場合には“0001”のコードが割り当てられ、全ての画素データが異なる場合には“1110”のコードが割り当てられる。また、低解像度代表データが2×2のブロックデータよりサンプリングされ(本実施の形態では右下の1画素)、右下の1画素の色情報が1stColor(第1色情報)として割り当てられる。
図5に示す15種類の2×2の配置コードパターンのうち、2段目の配置コードパターン群(“0001”、“0010”、“0011”、“0100”、“0101”、“0110”、“0111”)は2色の画素で構成されるブロックである。2×2のブロックデータの右下に配置された画素以外の1画素の色情報は、図示のように、補間データの2ndColor(第2色情報)として割り当てられる。次に、3段目の配置コードパターン群(“1000”、“1001”、“1010”、“1011”、“1100”、“1101”)は3色の画素で構成されるブロックである。上記と同様に、右下に配置された画素以外の2画素の色情報はそれぞれ、2ndColor、3rdColor(第3色情報)として割り当てられる。最後に、図示の4段目の配置コードパターン(“1110”)は、ブロック内の全ての画素データが異なる場合であり、右上の画素以外の3画素の色情報はそれぞれ2ndColor、3rdColor、4thColor(第4色情報)として割り当てられる。
このようにして、2×2のブロックデータから割り当てられた配置コードパターン、低解像度代表データ、補間データはそれぞれ、処理データバッファ704内の所定の領域に書き込まれていく。
また、データパケットの属性データ303も同様の圧縮方式を用いて圧縮され、同じく処理データバッファ704へ書き込まれる。さらに、コード生成部703はRAMデータ書き込みバッファからヘッダ301を読み出し、それを処理データバッファ704に書き込み。このとき、データパケットに付加されているヘッダ301では、ヘッダ内の圧縮フラグ315が、低解像度の圧縮状態を示すフラグへ変更される。さらに、データパケットのバイト長やオフセット量を表す各情報(パケット長310、画像データオフセット311、属性データオフセット312、画像データ長313、属性データ長314)も低解像度に圧縮されたデータ量に基づいて書き換える。
上記のように、データパケット(32×32)内の全ての画素が2×2のブロックデータとして読み出されてコード化された後のデータパケットの構成例を図6(a)に示す。図示例は、1200dpiのイメージデータを600dpiのイメージデータへ低解像度化したものである。
処理データバッファ704に格納されたデータパケットでは、図6(a)のように、ヘッダ(Header)301以外のイメージデータ(Image Data)302内が、次の3つに分割されている。すなわち、コード1_1001と、600dpiのイメージデータ(600dpi Image Data)1002と、1200dpi−600dpiの補間データ1003である。
さらに、属性データ(Z Data)303が600dpiの属性データ(600dpi Z Data)1004、1200dpi−600dpiの属性データの補間データ(1200dpi-600dpi Z補間データ)1005の2つに分割されている。
処理データバッファ704へ格納されたデータパケットは、図4(b)に示す圧縮データ読出し制御部705により順次読み出され、図4(a)に示す第2解像度圧縮部へ出力される。なお、本実施の形態では、第1解像度圧縮部502から出力されたデータパケットは、第2解像度圧縮部503へ入力され、再度低解像度の圧縮を行う構成とした。この場合、第1解像度圧縮部502にて1200dpiデータから600dpiデータへ低解像度化された後、さらに600dpiデータから300dpiデータへ圧縮を行うものとするが、これに限定されるものではない。
図4(a)に示す第1解像度圧縮部502と第2解像度圧縮部503により300dpiまで低解像度化されたデータパケットの構成例を図6(b)に示す。図示例は、600dpiのイメージデータ1002と600dpiの属性データ1004をそれぞれ第2解像度圧縮部503にて、第1解像度圧縮部502で行われたものと同様の圧縮方式にて300dpiのデータにしたものである。
600dpiから300dpiに変換された際に、イメージデータ302が、図6(b)に示すように、次の5つに分割される。すなわち、コード1_1001と、コード2_1006と、300dpiのイメージデータ(300dpi Image Data)1007と、1200dpi−600dpiの補間データ1003と、600dpi−300dpiの補間データ1008である。一方、属性データ303が、図6(b)に示すように、次の3つに分割される。300dpiの属性データ(300dpi Z Data)1009、1200dpi−600dpiの属性データの補間データ(1200dpi-600dpi Z補間データ)1005である。さらに、600dpi−300dpiの属性データの補間データ(600dpi-300dpi Z補間データ)1010である。
このようにして、1200dpiから300dpiまで低解像度化されたイメージデータは、図4(a)の第2解像度圧縮部503の次段に設けられているデータ符号化部504へ入力される。そして、300dpiのイメージデータ1007がJPEG方式(Joint Photographic Experts Group)で符号化圧縮され、画像圧縮部103から圧縮データパケットとして出力される。画像圧縮部103から出力された圧縮データパケットは、画像バス115、イメージバスI/F114を介してRAM106へ送られ、さらにRAM106からHDD108へ順次格納される。
次に、本実施の形態における圧縮データパケットの伸長処理と、その伸長処理を行う画像伸長部121の構成について詳細に説明する。
図7(a)は、画像伸長部121の内部構成を示すブロック図、図7(b)は、画像伸長部121を構成する第1解像度伸長部の内部構成を示すブロック図である。
図7(a)において、画像伸長部121は、伸長化制御部601と、データ伸長部602と、第1解像度伸長部603と、第2解像度伸長部604とを備える。図7(b)において、第1解像度伸長部603は、符号化データ書き込み制御部801と、符号化データ書き込みバッファ802と、コードデータ読み取り部803と、データ結合部804と、伸長データバッファ805と、伸長データ読出し制御部806とを備える。
図7(a)及び図7(b)の各部の説明は、図8のフローチャートの説明を含めて行う。
ジョブコントロール処理モジュール201からのプリント指示に基づいて、プリント処理モジュール207はHDD108に格納された圧縮データパケットをRAM106に順次読み出す。その後に、圧縮データパケットをイメージバスI/F114、画像バス115を介して画像伸長部121へ入力する。そして、画像伸長部121にて圧縮データパケットの伸長が行われる。
次に、本実施の形態の画像伸長部121による圧縮データパケットの伸長処理について図8及び図9を参照して説明する。
図8は、画像伸長部121の解像度伸長処理を示すフローチャートである。図9は、伸長レベルとユニットIDコード・モードコードとの関係を示す伸長レベル決定テーブルの一例を示す図である。
図8において、伸長化制御部601は、圧縮データパケットが入力されると、圧縮データパケットに付加されているヘッダ301内のプロセスインストラクション309のN番目のユニットIDコードとモードコードを読み込んで解析する(ステップS2001)。Nは変数であり、初期値は1とする。すなわち、N=1の場合には、ユニットIDコードとモードコードは、ユニットID1_317とモード1_318となる。
次に、伸長化制御部601は、プロセスインストラクション309のN番目のユニットIDコードが処理終了を示すコード“1111”であるか否かを判断する(ステップS2002)。その結果、コード“1111”であると判断した場合は、ステップS2008へ進む。一方、コード“1111”でないと判断した場合、ステップS2003へ進み、伸長化制御部601は、図9に示す伸長レベル決定テーブルを参照して伸長レベルを決定する。
図9において、伸長レベルが解像度毎に3段階(1:300dpi、2:600dpi、3:1200dpi)に分けられており、各伸長レベルでユニットIDコード及びモードコードが対応づけられている。例えば、伸長レベル1(解像度300dpi)では、色処理、回転処理、白紙判定に対応するユニットIDコードが対応付けられている。色処理は色処理部402で、回転処理は回転処理部403で、白紙判定は白紙判定部407でそれぞれ実行させる。また、単純間引き及び変倍は解像度変倍処理部405で、マスキング及びトリミングはトリミング・マスキング処理部404で、2値処理及び多値処理は2値多値変換部406でそれぞれ実行される。
図8のステップS2003において、例えば、N番目のユニットIDコードが“0001”であった場合、伸長化制御部601は“回転処理”を行うと判断し、図9の伸長レベル決定テーブルを参照して伸長レベルを“1”を決定する。そして、不図示の内部のレジスタに格納されているカレントレベル値Lcに決定した伸長レベルを代入する(例ではLc=1)(ステップS2004)。
次に、伸長化制御部601は、カレントレベル値Lcと最終レベル値Lfとを比較する(ステップS2005)。最終レベル値Lfの初期値は0である。カレントレベル値Lcが最終レベル値Lfより大きい場合、最終レベル値Lfを更新(Lf=Lc)する(ステップS2006)。1組目の“回転処理”の伸長レベルは“伸長レベル1”であったので、最終レベル値Lf=1が代入される。
このようにして、プロセスインストラクション309に設定された複数のユニットIDコードとモードコードのうち先頭から順に1組目のユニットIDコードとモードコードを読み込んで、伸長レベルの判断を行う。
次に、伸長化制御部601は、プロセスインストラクション309に設定されたユニットIDコードとモードコードの次の2組目の伸長レベルを判断するために、変数Nを1だけインクリメントする(N=N+1)(ステップS2007)。つづいて、ステップS2001に戻り、伸長化制御部601は、N(次はN=2)組目のユニットIDコードとモードコードを読み込んで解析する。
ステップS2001での解析の結果、例えば、N=2番目のユニットIDコードが“0011”、モードコードが“01”であった場合、ステップS2002からステップS2003へ進む。ステップS2003では、N=2番目のユニットIDコードが“0011”であることから、伸長化制御部601は“単純間引き”を行うと判断し、図9の伸長レベル決定テーブルを参照して伸長レベルを“2”と決定する。そして、内部レジスタのカレントレベル値Lcに決定した伸長レベルを代入する(例ではLc=2)(ステップS2004)。
次に、伸長化制御部601は、カレントレベル値Lcと最終レベル値Lfとを比較し(ステップS2005)、カレントレベル値Lcが最終レベル値Lfより大きい場合、最終レベル値Lfを更新する(ステップS2006)。2組目の“単純間引き”の伸長レベルは“伸長レベル2”であったので、最終レベル値Lf=2が代入される。
このようにして、ステップS2002において、プロセスインストラクション309から処理終了を示すコード“1111”が検知されるまで伸長レベルの決定、最終レベル値の更新を繰り返す。ステップS2002にて終了コードが“1111”が検知された場合、伸長化制御部601は、最終レベル値Lfを最終的な伸長レベルと決定し、さらに最終的な伸長レベルが伸長レベル1〜3のいずれであるかを判断する(ステップS2008)。
最終的な伸長レベルを決定すると、伸長化制御部601は、第1解像度伸長部603と第2解像度伸長部604へ伸長実行の可否を決めるためのEXE1、EXE2の各信号を出力する。伸長化制御部601で最終的な伸長レベルが決定された後、データ伸長部602は、JPEG等の圧縮技術で符号化された300dpiのイメージデータ1007の伸長を行う。伸長化された300dpiのデータパケットは、次段の第1解像度伸長部603、第2解像度伸長部604で元の解像度へ復元することが可能であるが、先ほどのEXE1、EXE2信号により解像度伸長の実行の可否が決定される。
データ伸長部602より第1解像度伸長部603に入力された300dpiのデータパケットは、符号化データ書き込み制御部801により符号化データ書き込みバッファ802へ書き込まれる。コードデータ読み取り部803は、符号化データ書き込みバッファ802から、2×2のブロック単位でコード化されていた、図6(b)に示すコード2_1006を順次読出してデータ結合部804に渡す。
さらに、コードデータ読み取り部803は300dpiのイメージデータ1007、300dpiの属性データ1009を読み出してデータ結合部804に渡す。それと共に、コードデータ読み取り部803は、必要に応じて600dpiの高解像度へ復元するための600dpi−300dpiの補間データ1008や600dpi−300dpiのZ補間データ1010を読み出す命令をデータ結合部804へ伝える。
データ結合部804は、EXE1信号の有無を確認し、EXE1信号を受信した場合には、これらの情報を元に2×2のブロック単位で300dpiのデータを600dpiのデータに順次復元し、伸長データバッファ805へ順次書き込んでいく。また、データ結合部はヘッダ301を符号化データ書き込みバッファ802から読み出し、それを伸長データバッファ805に書き込む。このとき、ヘッダ301内の圧縮フラグ315を、600dpiの解像度であることを示すフラグに変更する。さらに、パケットのバイト長やオフセット量を表す各情報(パケット長310、画像データオフセット311、属性データオフセット312、画像データ長313、属性データ長314)も高解像度に伸長されたデータ量に基づいて書き換える。
一方、EXE1信号を受信していない場合には、データ結合部804は、データの復元を行わず、符号化データ書き込みバッファ802に書き込まれたままのデータパケットを伸長データバッファ805へそのまま書き込む。この場合、ヘッダ301内の圧縮フラグ及び各パケット長も変更しない。
伸長データバッファ805に600dpiに復元されたデータパケット(そのままの場合は300dpiのデータパケット)が書き込まれた後、伸長データ読出し制御部806が、該データパケットを読出して出力することで高解像度への伸長動作を行う。なお、第2解像度伸長部604も第1解像度伸長部603と同様の構成である。
図8のステップS2008において最終的な伸長レベルが伸長レベル1であると判断された場合、伸長化制御部601は、EXE1、EXE2の各信号を出力しない。この場合は、第1解像度伸長部603、第2解像度伸長部604において、ともに伸長動作が実行されず、データパケットはそのままスルーされる。一方、最終的な伸長レベルが伸長レベル2であると判断された場合は、伸長化制御部601がEXE1信号のみを出力し、第1解像度伸長部603が300dpiから600dpiに解像度を伸長する(ステップS2009)。
そして、第1解像度伸長部603は、ステップS2010の伸長動作に基づいて、ヘッダ301内の圧縮フラグ315を書き換え、パケットのバイト長やオフセット量を表す各情報も高解像度に伸長されたデータ量に基づいて書き換える(ステップS2012)。各情報には、パケット長310、画像データオフセット311、属性データオフセット312、画像データ長313、属性データ長314が含まれる。なお、ステップS2012の後は、EXE2信号は出力されていないので、第2解像度伸長部604は伸長動作を行わない。
ステップS2008において最終的な伸長レベルが伸長レベル3であると判断された場合、伸長化制御部601がEXE1、EXE2信号をともに出力し、第1解像度伸長部603が300dpiから600dpiに解像度を伸長する(ステップS2009)。続いて、第1解像度伸長部603がヘッダ301の圧縮フラグ315を書き換え、高解像度に伸長されたデータ量に基づいてパケットのバイト長やオフセット量などを書き換える(ステップS2011)。
次に、第2解像度伸長部604が600dpiから1200dpiに解像度を伸長し(ステップS2013)、同様にヘッダ301内の書き換えも行う(ステップS2014)。
このように、プロセスインストラクション309に基づいて決定された伸長レベルに応じて、所定の解像度伸長処理が実行される。
画像伸長部121で伸長されたデータパケットは、画像編集用画像処理部120へ入力され、ヘッダ301内のプロセスインストラクション309に基づいて所定の処理ユニットにより処理される。
図10は、画像編集用画像処理部120の内部構成を示すブロック図である。
画像編集用画像処理部120は、バススイッチ401と、色処理部402と、回転処理部403と、トリミング・マスキング処理部404と、解像度変倍処理部405と、2値多値変換部406と、白紙判定部407とを備える。画像バス115に接続されたバススイッチ401には、色処理部402、回転処理部403、トリミング・マスキング処理部404、解像度変倍処理部405、2値多値変換部406、及び白紙判定部407が接続されている。
バススイッチ401は、画像編集用画像処理部120に入力されたデータパケットのヘッダ301内のプロセスインストラクション309の先頭を確認する。そして、バススイッチ401は、プロセスインストラクション309内の先頭に格納されているユニットIDとモードに応じてバスを切り替え(スイッチし)て、該当する処理ユニットへデータパケットを入力する。例えば、1組目のユニットID1に色処理を示すコード“0000”が格納され、2組目のユニットID2に変倍処理を示すコード“0011”が格納されている場合、まずは、データパケットを色処理部402へ入力するようにバス経路を切り替える。
色処理部402は、色処理を終了した後、プロセスインストラクション309を6bit分、左側にシフトする。色処理部402で処理されたデータパケットは、再度バススイッチ401へ入力され、バススイッチ401は再度、データパケットのプロセスインストラクション309を確認する。既に色処理部402でプロセスインストラクション309がシフトされ、1組目のユニットIDが変倍処理を示すコード“0011”に変更されているため、バススイッチ401はデータパケットを解像度変倍処理部405へ入力するようにバス経路を切り替える。
解像度変倍処理部405は、変倍処理を処理した後、色処理部402と同様にプロセスインストラクション309を6bit分左へシフトする。解像度変倍処理部405で処理されたデータパケットは、再度バススイッチ401へ入力され、バススイッチ401は再度、データパケットのプロセスインストラクション309を確認する。回転処理部403、トリミング・マスキング処理部404、2値多値変換部406、及び白紙判定部407についても、プロセスインストラクション309の内容に応じて、上記と略同様の処理が実行される。
プロセスインストラクション309に応じた全ての処理を終了させる場合、プロセスインストラクション309に処理の終了を意味するコード“1111”を格納しておく。バススイッチ401は、コード“1111”を認識すると、データパケットを画像バス115へ戻すようにバス経路を切り替える。画像編集用画像処理部120における全ての処理が施された処理後のデータパケットが、バススイッチ401から画像バス115に出力される。
なお、画像編集用画像処理部120は、データパケットの単位であれば、ヘッダ301に含まれるプロセスインストラクション309内のユニットIDコードとモードコードの情報により、自動的にパス経路の切り替えと処理モードの変更ができる。そのため、画像編集用画像処理部120は、ジョブやページが異なるデータパケット、すなわちヘッダ301内のジョブID306やページID305が異なるデータパケットも同時に入力することが可能である。そして、各処理モジュールを並列に動作させ、画像処理装置全体のスループット効率を高めることが可能な構成となっている。
本実施の形態のように、伸長レベルの判断において、データパケットのプロセスインストラクション309を参照して、データパケットの伸長方法を適切に選択することで各処理モジュールの高速動作可能となる。例えば、色処理のみを実行するデータパケットに対して伸長レベル1(解像度300dpi)で色処理が行われる場合には、以下の処理を行えばよい。すなわち、300dpiのイメージデータ1007、1200−600dpiの補間データ1003、600−300dpiの補間データ1008の色情報に関わる部分のみの色処理を行えばよく、低解像度化されたまま処理が可能であり、処理の高速化が図れる。
画像編集用画像処理部120で所定の処理が行われたデータパケットは、画像バス115、デバイスI/F117を介してプリンタ画像処理部119に入力される。プリンタ画像処理部119は、入力されたデータパケットに基づいて画像処理を実行し、記録媒体に所定の印字を行うようにプリンタエンジン102を駆動制御する。
以上説明したように、データパケットに付加されたヘッダ301内のプロセスインストラクション309を参照し、圧縮されたデータパケットの伸長方法を適切に切り替える。これにより、圧縮されたデータパケットに対して適切な処理フローが実行される。また、各ジョブや各ページのデータパケットが混在する処理においても、プロセスインストラクションを参照することにより画像伸長部で適切な伸長方法を決定することが可能となり、CPUに負荷をかけずに処理を実行することができる。
上記実施形態によれば、各ジョブが必要とする画像処理の処理手順を示す処理手順コード(ユニットIDコードとモードコードの組み合わせ)が各データパケット内のヘッダに順番に格納される。そして、画像処理が行われる際にデータパケット内のヘッダに付加された処理手順コードが参照され、当該処理手順に応じて、圧縮されたデータパケットが伸長されることにより、処理の簡略化、高速化が行え、逐次デコードモードを切り替えることができる。
上記実施形態では、画像処理装置100がLAN10を介して外部装置から印刷ジョブを受信してプリント動作を行わせる場合について説明したが、印刷ジョブの入力方法はこれに限定されるものではない。例えば、スキャナ101で原稿から画像データを読み取ってプリント動作を行う場合についても同様である。この場合、スキャン用パケット生成部132がRIP用パケット生成部131の代わりに動作し、スキャナ画像処理部118がRIP部116の代わりに動作する。
画像編集用画像処理部120内の色処理部402等により処理されるべき処理手順を示すユニットIDコードとモードコードがプロセスインストラクション309に複数組含まれている場合は、上記処理により伸長レベルが決定される。
画像伸長部121で伸長されたデータパケットは、上記第1の実施形態と同様に、画像編集用画像処理部120へ入力され、ヘッダ301内のプロセスインストラクション309の情報に基づいてデータパケット毎に処理が行われる。
本実施の形態では、例えば、回転処理と単純間引き処理を実行する場合、データパケットが伸長レベル2(解像度600dpi)となる。その結果、伸長レベル2のデータパケットのまま回転処理部403にて回転処理を行った後、解像度変倍処理部405にて単純間引き処理が行われる。この場合、図6(a)に示す伸長レベル2(解像度600dpi)のデータパケットから、イメージデータ1002と、600dpiの属性データ1004、ヘッダ301の部分以外を削除することにより600dpiの単純間引き処理を実行することが可能である。その結果、処理の高速化を図ることができる。
画像編集用画像処理部120で所定の処理が行われたデータパケットは、画像バス115、デバイスI/F117を介してプリンタ画像処理部119に入力される。プリンタ画像処理部119は、入力されたデータパケットに基づいて画像処理を実行し、記録媒体に所定の印字を行うようにプリンタエンジン102を駆動制御する。
以上説明したように、データパケットの画像処理において、複数の処理が要求されている場合、プロセスインストラクションを参照し、複数の処理の内容を読み込み、要求されている全ての画像処理で処理できる伸長レベルを判断して伸長する。これにより、各データパケットに対して適切な処理フローを実行することができる。また、各ジョブや各ページのデータパケットが混在する処理においても、プロセスインストラクションを参照することにより画像伸長部が適切な伸長方法を決定することが可能となり、CPUに負荷をかけずに処理を実行することができる。
上記実施形態では、図1に示すように、画像処理装置100と、スキャナ101と、プリンタエンジン102と、操作部110とが別体で構成されているが、一体で構成されていてもよい。
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。