(57)【特許請求の範囲】
【請求項１】
上位装置とプリンタとの間に介在するプリンタ制御専用ハードウェア回路であって、
コマンド解析回路と、イメージデータ処理回路と、メモリコントロール回路と、コマンドバッファメモリと、データバッファメモリと、コマンド生成回路と、前記メモリコントロール回路と前記コマンド生成回路とに接続された位置制御回路とを備え、
前記コマンド解析回路は、前記上位装置から制御回路コマンドを受信し、受信した制御回路コマンドが、前記プリンタの初期設定に必要なバックエンドパラメータを転送するためのバックエンドパラメータ設定コマンドであるか、上位形式のラスタイメージデータを転送するための上位形式ラスタイメージ転送コマンドであるか、前記下位形式のラスタイメージデータを転送するための下位形式ラスタイメージコマンドであるかを識別し、前記バックエンドパラメータ及び前記下位形式ラスタイメージは前記メモリコントロール回路へ転送し、前記上位形式のラスタイメージは前記イメージデータ処理回路へ転送し、
前記イメージデータ処理回路は、前記コマンド解析回路から受け取った前記上位形式のラスタイメージデータを、前記プリンタの印刷機構が必要とする下位形式のイメージデータに変換して、前記下位形式のイメージデータを前記メモリコントロール回路へ転送し、
前記メモリコントロール回路は、前記コマンド解析回路から受け取った前記バックエンドパラメータを前記コマンドバッファメモリに一時格納し、同一画素に係る前記イメージデータ処理回路から受け取った前記下位形式のラスタイメージデータと前記コマンド解析回路から受け取った前記下位形式のラスタイメージデータとを、重ね合わせて前記データバッファメモリに一時格納し、
また、前記メモリコントロール回路は、前記コマンドバッファメモリから前記バックエンドパラメータを読み出して前記コマンド生成回路へ転送し、次に、前記データバッファメモリから、前記イメージデータ処理回路から受け取った前記下位形式のラスタイメージデータと前記コマンド解析回路から受け取った前記下位形式のラスタイメージデータとが重ね合わせられた下位形式のラスタイメージデータを読み出して前記コマンド生成回路または前記位置制御回路へ転送し、
前記コマンド生成回路は、前記メモリコントロール回路から受け取った前記バックエンドパラメータに基づいて、前記プリンタの状態を初期設定するためのプリンタコマンドを生成して前記プリンタへ送信すると共に、前記位置制御回路が必要とするバックエンドパラメータを前記位置制御回路に供給し、前記メモリコントロール回路から受け取った前記下位形式のラスタイメージに基づいて、前記プリンタへ前記下位形式のラスタイメージを転送するためのプリンタコマンドを生成してプリンタへ送信し、
前記位置制御回路は、前記コマンド生成回路から受け取った前記バックエンドパラメータに基づいて、インタレース印刷又はオーバラップ印刷の仕様を決定し、この決定した仕様に従って前記プリンタの印刷ヘッドが各パス毎に打つべき画素を選択し、これら選択した画素にかかる前記下位形式のラスタデータを前記メモリコントロール回路に要求し、
前記メモリコントロール回路は、前記位置制御回路から要求された前記選択した画素にかかる下位形式のラスタデータを前記データバッファメモリから読み出して前記位置制御回路へ転送し、
前記位置制御回路は、前記メモリコントロール回路から受け取った前記選択した画素にかかる下位形式のラスタデータを前記コマンド生成回路へ送り、
前記コマンド生成回路は、前記位置制御回路から受け取った前記選択した画素にかかる下位形式のラスタデータに基づいて、前記プリンタへ前記選択した画素にかかる下位形式のラスタイメージを転送するためのプリンタコマンドを生成して前記プリンタへ送信する、プリンタ制御回路。
【請求項２】
前記上位形式のラスタイメージデータが高値分解能のラスタイメージデータであり、前記下位形式のラスタイメージデータが低値分解能のラスタイメージデータであり、
前記イメージデータ処理回路が、前記高値分解能のラスタイメージデータを前記低値分解能のラスタイメージに変換するためのハーフトーニング回路を有する、請求項１記載のプリンタ制御回路。
【請求項３】
前記上位形式のラスタイメージデータが上位装置側表色系のラスタイメージデータであり、前記下位形式のラスタイメージデータがプリンタ側表色系のラスタイメージデータであり、
前記イメージデータ処理回路が、前記上位装置側表色系のラスタイメージデータを前記下位形式のラスタイメージデータへ変換するための色変換回路を有する、請求項１又は２記載のプリンタ制御回路。
【請求項４】
前記コマンド解析回路が、前記受信した制御回路コマンドが、前記イメージデータ処理回路の初期設定に必要なイメージ変換パラメータを転送するためのイメージ変換パラメータ転送コマンドであるかも識別し、そして、前記イメージ変換パラメータを前記イメージデータ処理回路へ転送し、前記イメージデータ処理回路は、前記コマンド解析回路から受け取った前記イメージ変換パラメータに基づいて前記イメージデータ処理回路自身の初期設定を行う、請求項１記載のプリンタ制御回路。
【請求項５】
上位装置から制御回路コマンドを受信してプリンタコマンドを生成するプリンタ制御専用ハードウェア回路と、
このプリンタ制御専用ハードウェア回路が生成したプリンタコマンドに基づいて印刷を行うプリンタ本体とを備え、
プリンタ制御専用ハードウェア回路が、コマンド解析回路と、イメージデータ処理回路と、メモリコントロール回路と、コマンドバッファメモリと、データバッファメモリと、コマンド生成回路と、前記メモリコントロール回路と前記コマンド生成回路とに接続された位置制御回路とを備え、
前記コマンド解析回路は、前記上位装置から制御回路コマンドを受信し、受信した制御回路コマンドが、前記プリンタ本体の初期設定に必要なバックエンドパラメータを転送するためのバックエンドパラメータ設定コマンドであるか、上位形式のラスタイメージデータを転送するための上位形式ラスタイメージ転送コマンドであるか、前記下位形式のラスタイメージデータを転送するための下位形式ラスタイメージコマンドであるかを識別し、前記バックエンドパラメータ及び前記下位形式ラスタイメージは前記メモリコントロール回路へ転送し、前記上位形式のラスタイメージは前記イメージデータ処理回路へ転送し、
前記イメージデータ処理回路は、前記コマンド解析回路から受け取った前記上位形式のラスタイメージデータを、前記プリンタ本体の印刷機構が必要とする下位形式のイメージデータに変換して、前記下位形式のイメージデータを前記メモリコントロール回路へ転送し、
前記メモリコントロール回路は、前記コマンド解析回路から受け取った前記バックエンドパラメータを前記コマンドバッファメモリに一時格納し、同一画素に係る前記イメージデータ処理回路から受け取った前記下位形式のラスタイメージデータと前記コマンド解析回路から受け取った前記下位形式のラスタイメージデータとを、重ね合わせて前記データバッファメモリに一時格納し、
また、前記メモリコントロール回路は、前記コマンドバッファメモリから前記バックエンドパラメータを読み出して前記コマンド生成回路へ転送し、次に、前記データバッファメモリから、前記イメージデータ処理回路から受け取った前記下位形式のラスタイメージデータと前記コマンド解析回路から受け取った前記下位形式のラスタイメージデータとが重ね合わせられた下位形式のラスタイメージデータを読み出して前記コマンド生成回路または前記位置制御回路へ転送し、
前記コマンド生成回路は、前記メモリコントロール回路から受け取った前記バックエンドパラメータに基づいて、前記プリンタの状態を初期設定するためのプリンタコマンドを生成して前記プリンタへ送信すると共に、前記位置制御回路が必要とするバックエンドパラメータを前記位置制御回路に供給し、前記メモリコントロール回路から受け取った前記下位形式のラスタイメージに基づいて、前記プリンタへ前記下位形式のラスタイメージを転送するためのプリンタコマンドを生成してプリンタへ送信し、
前記位置制御回路は、前記コマンド生成回路から受け取った前記バックエンドパラメータに基づいて、インタレース印刷又はオーバラップ印刷の仕様を決定し、この決定した仕様に従って前記プリンタ本体の印刷ヘッドが各パス毎に打つべき画素を選択し、これら選択した画素にかかる前記下位形式のラスタデータを前記メモリコントロール回路に要求し、
前記メモリコントロール回路は、前記位置制御回路から要求された前記選択した画素にかかる下位形式のラスタデータを前記データバッファメモリから読み出して前記位置制御回路へ転送し、
前記位置制御回路は、前記メモリコントロール回路から受け取った前記選択した画素にかかる下位形式のラスタデータを前記コマンド生成回路へ送り、
前記コマンド生成回路は、前記位置制御回路から受け取った前記選択した画素にかかる下位形式のラスタデータに基づいて、前記プリンタ本体へ前記選択した画素にかかる下位形式のラスタイメージを転送するためのプリンタコマンドを生成して前記プリンタ本体へ送信する、プリンタ。
【請求項６】
前記上位形式のラスタイメージデータが高値分解能のラスタイメージデータであり、前記下位形式のラスタイメージデータが低値分解能のラスタイメージデータであり、前記イメージデータ処理回路が、前記高値分解能のラスタイメージデータを前記低値分解能のラスタイメージに変換するためのハーフトーニング回路を有する、請求項５記載のプリンタ。
【請求項７】
前記上位形式のラスタイメージデータが上位装置側表色系のラスタイメージデータであり、前記下位形式のラスタイメージデータがプリンタ側表色系のラスタイメージデータであり、前記イメージデータ処理回路が、前記上位装置側表色系のラスタイメージデータを前記下位形式のラスタイメージデータへ変換するための色変換回路を有する、請求項８又は６記載のプリンタ。
【請求項８】
前記プリンタ制御専用ハードウェア回路の上流側に配置されたデータフローコントローラを更に備え、
前記データフローコントローラは、
前記制御回路コマンドを生成する機能をもった第１の上位装置と、前記制御回路コマンドを生成する機能は持たないが前記上位形式のラスタイメージデータを出力する機能はもつ第２の上位装置とに接続可能であり、
前記第１の上位装置を用いるときは、前記第１の上位装置から前記制御回路コマンドを受けて前記プリンタ制御専用ハードウェア回路へ転送し、
前記第２の上位装置を用いるときは、前記第２の上位装置から前記上位形式のラスタイメージデータを受け、このラスタイメージデータを印刷するのに必要な制御回路コマンドを生成して前記プリンタ制御専用ハードウェア回路へ送る、請求項５記載のプリンタ。
【請求項９】
制御回路コマンドを生成する上位装置と、
前記上位装置から制御回路コマンドを受信しプリンタコマンドを生成するプリンタ制御専用ハードウェア回路と、
前記プリンタ制御専用ハードウェア回路からプリンタコマンドを受信して印刷を行うプリンタとを備え、
前記プリンタ制御専用ハードウェア回路が、コマンド解析回路と、イメージデータ処理回路と、メモリコントロール回路と、コマンドバッファメモリと、データバッファメモリと、コマンド生成回路と、前記メモリコントロール回路と前記コマンド生成回路とに接続された位置制御回路とを備え、
前記コマンド解析回路は、前記上位装置から制御回路コマンドを受信し、受信した制御回路コマンドが、前記プリンタの初期設定に必要なバックエンドパラメータを転送するためのバックエンドパラメータ設定コマンドであるか、上位形式のラスタイメージデータを転送するための上位形式ラスタイメージ転送コマンドであるか、前記下位形式のラスタイメージデータを転送するための下位形式ラスタイメージコマンドであるかを識別し、前記バックエンドパラメータ及び前記下位形式ラスタイメージは前記メモリコントロール回路へ転送し、前記上位形式のラスタイメージは前記イメージデータ処理回路へ転送し、
前記イメージデータ処理回路は、前記コマンド解析回路から受け取った前記上位形式のラスタイメージデータを、前記プリンタの印刷機構が必要とする下位形式のイメージデータに変換して、前記下位形式のイメージデータを前記メモリコントロール回路へ転送し、
前記メモリコントロール回路は、前記コマンド解析回路から受け取った前記バックエンドパラメータを前記コマンドバッファメモリに一時格納し、同一画素に係る前記イメージデータ処理回路から受け取った前記下位形式のラスタイメージデータと前記コマンド解析回路から受け取った前記下位形式のラスタイメージデータとを、重ね合わせて前記データバッファメモリに一時格納し、
また、前記メモリコントロール回路は、前記コマンドバッファメモリから前記バックエンドパラメータを読み出して前記コマンド生成回路へ転送し、次に、前記データバッファメモリから、前記イメージデータ処理回路から受け取った前記下位形式のラスタイメージデータと前記コマンド解析回路から受け取った前記下位形式のラスタイメージデータとが重ね合わせられた下位形式のラスタイメージデータを読み出して前記コマンド生成回路または前記位置制御回路へ転送し、
前記コマンド生成回路は、前記メモリコントロール回路から受け取った前記バックエンドパラメータに基づいて、前記プリンタの状態を初期設定するためのプリンタコマンドを生成して前記プリンタへ送信すると共に、前記位置制御回路が必要とするバックエンドパラメータを前記位置制御回路に供給し、前記メモリコントロール回路から受け取った前記下位形式のラスタイメージに基づいて、前記プリンタへ前記下位形式のラスタイメージを転送するためのプリンタコマンドを生成してプリンタへ送信し、
前記位置制御回路は、前記コマンド生成回路から受け取った前記バックエンドパラメータに基づいて、インタレース印刷又はオーバラップ印刷の仕様を決定し、この決定した仕様に従って前記プリンタの印刷ヘッドが各パス毎に打つべき画素を選択し、これら選択した画素にかかる前記下位形式のラスタデータを前記メモリコントロール回路に要求し、
前記メモリコントロール回路は、前記位置制御回路から要求された前記選択した画素にかかる下位形式のラスタデータを前記データバッファメモリから読み出して前記位置制御回路へ転送し、
前記位置制御回路は、前記メモリコントロール回路から受け取った前記選択した画素にかかる下位形式のラスタデータを前記コマンド生成回路へ送り、
前記コマンド生成回路は、前記位置制御回路から受け取った前記選択した画素にかかる下位形式のラスタデータに基づいて、前記プリンタへ前記選択した画素にかかる下位形式のラスタイメージを転送するためのプリンタコマンドを生成して前記プリンタへ送信する、プリントシステム。
【請求項１０】
前記上位形式のラスタイメージデータが高値分解能のラスタイメージデータであり、前記下位形式のラスタイメージデータが低値分解能のラスタイメージデータであり、前記イメージデータ処理回路が、前記高値分解能のラスタイメージデータを前記低値分解能のラスタイメージに変換するためのハーフトーニング回路を有する、請求項９記載のプリントシステム。
【請求項１１】
前記上位形式のラスタイメージデータが上位装置側表色系のラスタイメージデータであり、前記下位形式のラスタイメージデータがプリンタ側表色系のラスタイメージデータであり、
前記イメージデータ処理回路が、前記上位装置側表色系のラスタイメージデータを前記下位形式のラスタイメージデータへ変換するための色変換回路を有する、請求項９又は１０記載のプリントシステム。
【請求項１２】
前記上位装置が、印刷すべきイメージが自然画像と文字・図形とを含む場合、前記自然画像のイメージは前記上位形式のラスタイメージデータで、前記文字・図形は前記下位形式のラスタイメージでぞれぞれ前記プリンタ制御専用ハードウェア回路へ送る、請求項９記載のプリントシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、高速印刷のためのプリンタ制御技術に関する。
【０００２】
【従来の技術】
コンピュータシステムなどで用いられるプリンタは、通常、ＣＭＹ又はＣＭＹＫのような限定された色数の着色剤を用いて、各色の着色剤の小さな点（ドット）を用紙上の各画素位置に打ったり打たなかったりすることにより（機種によっては、更にドットのサイズを複数段階に変化させることにより）、人の目には連続的な階調に見える擬似連続階調画像を形成する。従って、プリンタが最終的に必要とする画像データは、通常、各画素位置にＣＭＹＫ各色の着色剤のドットを打つか打たないかを示した（機種によっては、更に複数段階のドットサイズの何れかを指定した）ＣＭＹＫラスタデータである。なお、このようなＣＭＹＫラスタデータは、各色成分値の値分解能がせいぜい２段階又はあまり多くはない複数段階に過ぎないため、本明細書ではこれを「低値分解能」のＣＭＹＫラスタデータと呼ぶことにする。
【０００３】
これに対し、プリンタに印刷命令を与えるホストコンピュータにてアプリケーションにより生成されたり外部入力されたりした原画像データは、通常、プリンタ側表色系とは異なるホスト側表色系、典型的にはＲＧＢ表色系、で表現され、かつ、各色成分値が例えば２５６段階のような高い値分解能をもった「高値分解能」のＲＧＢデータである。また、この原画像データは、画素値の集合として表現された低レベルデータ（ラスタデータ）である場合もあれば、図形関数やキャラクタコードで表現された高レベルデータである場合もある。
【０００４】
従来のプリントシステムでは、原画像の高値分解能ＲＧＢデータを最終的な低値分解能ＣＭＹＫデータまで変換する処理は、ホストコンピュータ内のソフトウェアであるプリンタドライバ、又はプリンタ内のイメージングソフトウェアが行っている。この処理には、原画像データが高レベルデータである場合はこれをラスタデータに変換する「ラスタライズ」、ルックアップテーブルなどを用いてＲＧＢ系の画素値をＣＭＹ系又はＣＭＹＫ系の画素値に変換する「色変換」、誤差拡散やディザなどの手法を用いて高値分解能の画素値を低値分解能の画素値に変換する「ハーフトーニング」などが含まれる。また、インクジェットプリンタなどでは、画質を高めるために、画素位置の配列順序とは異なる順序でドットを打つ、いわゆる「インタレース」印刷手法や「オーバラップ」印刷手法が行われるが、これを行うための画素値の順序替えなども上記変換処理で行われる。
【０００５】
【発明が解決しようとする課題】
上述した変換処理は、これをプリンタドライバで行う場合はホストコンピュータの、またプリンタで行う場合はプリンタの、それぞれのＣＰＵの大きな負担である。そのため、この処理に多くの時間が費やされ、それは印刷速度を左右する主要な要因である。そこで、レーザプリンタなどでは、高速印刷を実現するために高速・高性能ＣＰＵを搭載して、上記変換処理をプリンタ側で高速に行うようにしている。しかし、レーザプリンタの価格はかなり高くなってしまう。一方、インクジェットプリンタなどでは、プリンタの低価格化のために上記変換処理を全てホストコンピュータのプリンタドライバに任せている。その結果、インクジェットプリンタの印刷速度はかなり遅いし、また、ホストコンピュータの解放時間も長くその間ホストの他の仕事が圧迫される。
【０００６】
従って、本発明の目的は、高速な印刷を低価格な設備で実現することにある。
【０００７】
本発明の別の目的は、従来のインクジェットプリンタのような低速プリンタを使用する環境で、ホストのＣＰＵに大きな負担をかけずに高速な印刷を実現することにある。
【０００８】
本発明の更に別の目的は、高速印刷ができる低価格なプリンタを提供することにある。
【０００９】
【課題を解決するための手段】
本発明によれば、ホストコンピュータのような上位装置とプリンタとの間に、プリンタ制御専用ハードウェア回路が設けられる。この専用ハードウェア回路は、上位装置に内蔵してもよいし、プリンタに内蔵してもよいし、或は両者に対して外付けとしてもよい。
【００１０】
この専用ハードウェア回路は、コマンド解析回路と、イメージデータ処理回路と、メモリコントロール回路と、コマンドバッファメモリと、データバッファメモリと、コマンド生成回路とを備える。
【００１１】
コマンド解析回路は、上位装置から制御回路コマンドを受信し、受信した制御回路コマンドが、プリンタの初期設定に必要なバックエンドパラメータを転送するためのバックエンドパラメータ設定コマンドであるか、上位形式のラスタイメージデータ（例えば、高値分解能のＲＧＢラスタデータ）を転送するための上位形式ラスタイメージ転送コマンドであるかを識別し、そして、バックエンドパラメータはメモリコントロール回路へ、また、上位形式のラスタイメージはイメージデータ処理回路へ転送する。
【００１２】
イメージデータ処理回路は、コマンド解析回路から受け取った上位形式のラスタイメージデータを、プリンタの印刷機構が必要とする下位形式のイメージデータ（例えば、低値分解能のＣＭＹＫラスタデータ）に変換して、その下位形式のイメージデータをメモリコントロール回路へ転送する。例えば、好適な実施形態では、イメージデータ処理回路はフルカラーＲＧＢラスタデータを２値ＣＭＹＫラスタデータに変換するための色変換回路とハーフトーニング回路とを有する。
【００１３】
メモリコントロール回路は、コマンド解析回路から受け取ったバックエンドパラメータをコマンドバッファメモリに一時格納し、また、イメージデータ処理回路から受け取った下位形式のラスタイメージデータをデータバッファメモリに一時格納する。そして、メモリコントロール回路は、まずコマンドバッファメモリからバックエンドパラメータを読み出してコマンド生成回路へ転送し、次に、データバッファメモリから下位形式のラスタイメージデータを読み出してコマンド生成回路へ転送する。
【００１４】
コマンド生成回路は、受け取ったバックエンドパラメータに基づいて、プリンタの状態を初期設定するためのプリンタコマンドを生成してプリンタへ送信し、次に、受け取った下位形式のラスタイメージに基づいて、プリンタへその下位形式のラスタイメージを転送するためのプリンタコマンドを生成してプリンタへ送信する。
【００１５】
このようなプリンタ制御専用ハードウェア回路を導入することにより、従来上位装置のＣＰＵ又はプリンタのＣＰＵが行っていたデータ処理の少なくとも一部を、専用ハードウェア回路が肩代わりしてくれるので、ＣＰＵの負担が軽減し、よって、特にプリンタのＣＰＵを低性能の安価なものとすることいができる。好適な実施形態では色変換やハーフトーニングという大負荷の処理を専用ハードウェア回路が肩代わりするので、上位装置やプリンタの負担が大幅に軽減する。また、専用ハードウェア回路の処理速度はソフトウェアで処理するＣＰＵに比較して当然に高速であるから、高速印刷が可能となる。加えて、この専用ハードウェア回路は、ＡＳＩＣ（Application Specified IC）などで作れるので、高速ＣＰＵを搭載した従来の高速印刷システムより安価である。
【００１６】
また、この専用ハードウェア回路は、上位装置からの制御回路コマンドを、プリンタの初期設定に必要なバックエンドパラメータを転送してくるバックエンドパラメータ設定コマンドと、ラスタイメージデータを転送してくるラスタイメージ転送コマンドとに識別して、バックエンドパラメータとラスタイメージデータとをそれぞれ別のバッファメモリに格納した上で、まずバックエンドパラメータをバッファメモリから読み出してプリンタに対する初期設定コマンドに仕立ててプリンタへ送り、次に、ラスタイメージデータをバッファメモリから読み出してプリンタに対するラスタイメージ転送コマンドに仕立ててプリンタへ送る。これにより、上位装置からまずバックエンドパラメータ設定コマンドが、次にラスタイメージ転送コマンドが送られてきた場合、バックエンドパラメータを、ラスタイメージの処理の影響を受けることなく、ラスタイメージより確実に先に処理して、プリンタ初期設定コマンドをラスタイメージより先にプリンタへ送ることが出来る。要するに、上位装置からの制御回路コマンドの順次性を保ったまま、そのコマンドをプリンタコマンドに変換してプリンタに送ることができる。このように制御回路コマンドとプリンタコマンドとの間でコマンドの順次性が保てることにより、制御回路コマンド体系を新たに設計する際、既存のプリンタコマンド体系の資産を大幅に利用できることになり、設計作業の手間が省ける。また、コマンドの順次性を保つ上記の方法は、比較的に簡単な回路構成で実現できるので、このことも低価格化に寄与する。
【００１７】
好適な実施形態では、プリンタ制御専用ハードウェア回路は、メモリコントロール回路とコマンド生成回路とに接続された位置制御回路を更に有している。そして、コマンド生成回路は、メモリコントロール回路から受け取ったバックエンドパラメータを位置制御回路にも供給し、位置制御回路は、そのバックエンドパラメータに基づいて、プリンタに行わせるべきインタレース印刷又はオーバラップ印刷の仕様を決定する。そして、位置制御回路は、その決定した仕様に従ってプリンタの印刷ヘッドが各パス毎に打つべき画素を選択し、それら選択した画素にかかかる下位形式のラスタデータをメモリコントロール回路に要求する。すると、メモリコントロール回路は、その要求された画素にかかる下位形式のラスタデータをデータバッファメモリから読み出して位置制御回路へ転送する。位置制御回路は、メモリコントロール回路から受け取った下位形式のラスタデータをコマンド生成回路へ送り、コマンド生成回路は、その下位形式のラスタデータをプリンタに対するラスタイメージ転送コマンドに仕立ててプリンタへ送信する。このように、プリンタ制御専用ハードウェア回路において、インタレース印刷やオーバラップ印刷の仕様を決定して、各パス毎に印刷ヘッドに与えるべきラスタデータを作成することにより、プリンタのＣＰＵはインタレース印刷やオーバラップ印刷のための面倒な処理から解放される。なお、インタレース印刷やオーバラップ印刷の仕様を決定する処理は、専用ハードウェア回路ではなく、極めて安価な別のＣＰＵを用いて行っても良い。
【００１８】
また、好適な実施形態では、上位装置は、印刷すべきイメージが自然画像と文字・図形とを含む場合、自然画像のイメージは上位形式のラスタイメージデータで、文字・図形は下位形式のラスタイメージでプリンタ制御専用ハードウェア回路へ送る。プリンタ制御専用ハードウェア回路では、自然画像の上位形式のラスタイメージデータを下位形式のラスタイメージに変換した上で、その自然画像の下位形式のラスタイメージと、文字図形の下位形式のラスタイメージとを、同じ画素同士で重ね合わせて、完全な印刷イメージの下位形式のラスタイメージを作る。
【００１９】
文字・図形の色変換やハーフトーニングは一般に軽くＣＰＵにとり大した負担にならないのに対し、自然画像の色変換やハーフトーニングは重くＣＰＵにとり大きな負担になるため、この重い処理を専用ハードウェアに行わせることで、上位装置やプリンタのＣＰＵをその重い処理から解放することができ、効果的に高速化を図ることができる。また、文字・図形は、その輪郭を鮮明に印刷する必要から高解像度である必要があるが、高解像度の上位形式（例えば、フルカラー）のラスタデータはデータ量が膨大であるのに対し、下位形式（例えば２値）のラスタデータは高解像度であってもそれほどデータ量は多くないので、高解像度の文字・図形イメージは下位形式ラスタデータの形式で上位装置からプリンタ制御専用ハードウェア回路を転送すれば、データ伝送時間が短くてすむ。
【００２０】
上位装置としてホストコンピュータが典型であるが、これに限られるわけでえはない。好適な実施形態では、ホストコンピュータだけでなく、イメージスキャナやデジタルカメラのように上位形式ラスタデータを出力するだけで制御回路コマンドを生成する機能をもたない装置も上位装置として利用できるよう、データフローコントローラがプリンタ制御専用ハードウェア回路の上流に設けられている。データフローコントローラには、ホストコンピュータ、イメージスキャナ及びデジタルカメラなどが常時又は随時に接続される。データフローコントローラは、コントロールパネルを備えている（又は、プリンタに内蔵される場合にはプリンタのコントロールパネルに接続されている）。データフローコントローラは、ホストコンピュータのプリンタドライバから制御回路コマンドを受けた場合には、それをそのままプリンタ制御専用ハードウェア回路へ転送する。一方、データフローコントローラは、コントロールパネルからイメージスキャナ又はデジタルカメラからのイメージを印刷するというモードの指定を受けると、イメージスキャナ又はデジタルカメラからラスタイメージデータ（例えばフルカラーＲＧＢラスタイメージデータ）を読み込み、そして、コントロールパネルからユーザ指定された印刷条件でそのラスタイメージを印刷するための一連の制御回路コマンドを生成して、プリンタ制御専用ハードウェア回路へ送る。
【００２１】
【発明の実施の形態】
図1は、本発明の一実施形態の全体的な構成を示す。
【００２２】
ホストコンピュータ内のソフトウェアであるプリンタドライバ１とプリンタ９との間に、プリンタ制御専用ハードウェア回路（以下、制御回路と略称する）５が存在する。制御回路５は、例えばＡＳＩＣ（Application Specified IC）と半導体メモリチップのセットのようなハードウェアロジック回路であって、ソフトウェアをＣＰＵで実行するようなコンピュータではない。この制御回路５は、プリンタドライバ１から同回路５用の制御回路コマンド３を受け、プリンタ９用のプリンタコマンド７を作成してプリンタ９へ送る機能を有している。
【００２３】
制御回路５の配置形態には大体、図２に示すような３種類のバリーションがある。すなわち、図２でブロック３３に示すようにホストコンピュータ３１に内蔵する方式と、ブロック３７に示すようにプリンタ９に内蔵する方式と、ブロック３５に示すようにホストコンピュータ３１及びプリンタ９に外付けする方式である。ホスト内蔵式では、制御回路５はホストコンピュータ用オプションボードのような形態で提供され、ホストコンピュータ３１のＣＰＵバスに直接接続され、プリンタ９に対しては例えばパラレルインタフェースケーブル（又は通信ネットワーク）などで接続される。これは複数台のプリンタに対応できる利点がある。一方、プリンタ内蔵式では、制御回路５はプリンタタ用オプションボードのような形態で提供され、プリンタ９のＣＰＵバスに直接接続され、ホストコンピュータ３１とは例えばパラレルインタフェースケーブル（又は通信ネットワーク）などで接続される。これは複数台のホストに対応できる利点がある。また、外付け式では、制御回路５はホストコンピュータ３１及びプリンタ９の双方に対し例えばパラレルインタフェースケーブル（又は通信ネットワーク）などで接続される。
【００２４】
さて、図１に示すように、制御回路５はイメージデータ処理回路１５を備えており、このイメージデータ処理回路１５は、ホスト表色系の高値分解能ラスタデータ（この実施形態では、各画素の各色成分値が２５６階調表現可能な８ビットワードで構成される「フルカラーＲＧＢラスタデータ」である）を受けて、「色変換」及び「ハーフトーニング」の処理を行うことにより、このフルカラーＲＧＢラスタデータをプリンタ表色系の低値分解能ラスタデータ（この実施形態では、各画素位置にＣＭＹＫのドットを打つか否かを示した「２値ＣＭＹＫラスタデータ」である）に変換する機能を有している。そのため、プリンタドライバ１では、ホストコンピュータのＯＳから与えられる印刷対象の原画像データに対し、原則として「色変換」及び「ハーフトーニング」の処理を施す必要が無くなり、ホストコンピュータのＣＰＵの負担は大幅に軽減する。同様に、プリンタ９でも「色変換」及び「ハーフトーニング」を行う必要が無くなり、プリンタＣＰＵの処理負担も軽いものとなる。一方、制御回路５のイメージデータ処理回路１５は、「色変換」及び「ハーフトーニング」の専用ハードウェアであるから、その処理速度は高速である。故に、印刷速度は向上する。加えて、制御回路５はＡＳＩＣで作られていて高性能ＣＰＵに比較すればかなり安価であるから、従来の高速プリンタを用いたシステムに比較してシステム価格は安い。
【００２５】
ところで、上述したようにプリンタドライバ１は原則として「色変換」及び「ハーフトーニング」の処理を行う必要は無いのであるが、本実施形態では、この処理をプリンタドライバ１が完全に放棄するのではなく、次のように画像の種類に応じた選択を行う。すなわち、プリンタドライバ１は、ホストコンピュータのＯＳから原画像データを受け取ると、まず、その原画像データから文字・図形のデータと自然画像のデータとを分離して抽出する。文字・図形データは元々、文字は文字コード及び文字属性（サイズや修飾）コードで表現され、図形は関数コール又はベクタデータで表現されている。この文字・図形データについて、プリンタドライバ１は「ラスタライズ」、「色変換」及び「ハーフトーニング」を行って２値ＣＭＹＫラスタデータに変換し、これを圧縮してから制御回路コマンド３に組み込んで制御回路５に送る。一方、自然画像データは元々、典型的にフルカラーＲＧＢラスタデータで表現されている。この自然画像データについては、プリンタドライバ1は「色変換」も「ハーフトーニング」も行わずにフルカラーＲＧＢラスタデータの形式のまま、これを圧縮してから制御回路コマンド３に組み込んで制御回路５に送る。従って、制御回路５のイメージデータ処理回路１５は、自然画像のＲＧＢデータに対してのみ「色変換」及び「ハーフトーニング」を行なうことになる。
【００２６】
このように文字・図形の「色変換」及び「ハーフトーニング」処理はプリンタドライバ１で行ない、一方、自然画像のそれは制御回路５で行うようにした主たる理由は次の２つである。第１に、文字・図形の上記処理は一般に軽くＣＰＵにとり大した負担にならないのに対し、自然画像の上記処理は重くＣＰＵにとり大きな負担になるため、この重い処理を専用ハードウェアである制御回路５に行わせてＣＰＵをその処理から解放することが、高速化を図る上で最も有効だからである。第２に、文字・図形は、その輪郭を鮮明に印刷する必要から高解像度である必要があるが、高解像度のフルカラーＲＧＢラスタデータはデータ量が膨大であるのに対し、２値ＣＭＹＫラスタデータは高解像度であってもそれほどデータ量は多くないので、２値ＣＭＹＫラスタデータの形式でプリンタドライバ１から制御回路５へデータを送れば、データ伝送時間が短くてすむからである。
【００２７】
以下、制御回路５の構成及び動作を詳細に説明する。
【００２８】
図１に示すように、制御回路５はホストインタフェース回路１１、コマンドフィルタ１２、コマンド解析回路１３、イメージデータ処理回路１５、メモリコントロール回路１９、メモリ２１、コマンド生成回路２３、位置制御回路２４及びプリンタインタフェース回路２５を有している。
【００２９】
ホストインタフェース回路１１は、ホスト装置（図示省略）のプリンタドライバ１から後述する制御回路コマンドを受信する。コマンドフィルタ１２は、受信したコマンドのうちコマンド解析回路１３が理解するコマンドだけをコマンド解析回路１３へ送る。コマンド解析回路１３は、受信した制御回路コマンドを解析してコマンドの種類を識別し、そのコマンドに含まれているデータをコマンド種類に応じた転送先（メモリコントロール回路１９又はイメージデータ処理回路１３）へ転送する。イメージデータ処理回路１５は、コマンド解析回路１３から自然画像のフルカラーＲＧＢラスタデータを受けて、これに色変換及びハーフトーニングの処理を施して、２値ＣＭＹＫラスタデータを生成する。
【００３０】
メモリコントロール回路１９は、後述するバックエンドパラメータ（２値ＣＭＹＫラスタデータに基づいてを印刷を実行する必要なパラメータ）をコマンド解析回路１３から受けて、メモリ２１のコマンドバッファ６１に格納する。また、メモリコントロール回路１９は、文字・図形の２値ＣＭＹＫラスタデータをコマンド解析回路１３から受け、また、自然画像の２値ＣＭＹＫラスタデータをイメージデータ処理回路１３から受け、それらをメモリ２１のデータバッファ６３に格納する。さらに、イメージデータ処理回路１５は、バックエンドパラメータをコマンドバッファ６１から読み出してコマンド生成回路２３へ送り、その後に、２値ＣＭＹＫラスタデータをデータバッファ６３から読み出して位置制御回路２４へ送る。
【００３１】
位置制御回路２４は、メモリコントロール回路１９から受け取った２値ＣＭＹＫラスタデータを、インタレース印刷やオーバーラップ印刷の仕様に適合した形式のデータ（これを、「インタレースＣＭＹＫラスタデータ」という）に仕立てて、コマンド生成回路２３へ送る。コマンド生成回路２３は、メモリコントロール回路１９からのバックエンドパラメータに基づいて、プリンタ９の状態を初期設定するためのプリンタコマンドを生成し、その後に、位置制御回路２４からのインタレースＣＭＹＫラスタデータに基づいて、プリンタ９へインタレースＣＭＹＫラスタデータを転送するためのプリンタコマンドを生成する。プリンタプリンタインタフェース回路２５は、コマンド生成部２３が生成したプリンタコマンドをプリンタ９へ転送する。
【００３２】
以下、制御回路５の各部の機能をより詳細に説明する。
【００３３】
ホストインタフェース回路１１は、ホスト装置のプリンタドライバ１から一連の制御回路コマンド３を受け取り、その一連のコマンドをコマンド解析回路１３へ送る。
【００３４】
制御回路コマンドのフォーマットは例えば以下のようなものである。
【００３５】
［コマンドコード］［パラメータ］［データ］
コマンドコードには、例えば次のようなものがある。
【００３６】
(1)ＥＳＣ（Ｇ
これは、後述するＲＧＢラスタグラフィックモード開始コマンドを示す。
【００３７】
(2)＜ｘｆｅｒＪ＞
これは、データ転送コマンドを示す。このコマンドコードをもつデータ転送コマンドには、後述するイメージ変換パラメータ設定コマンド、バックエンドパラメータ設定コマンド、及びＲＧＢデータ転送コマンドの３種類がある。
【００３８】
(3)＜ｘｆｅｒＣ＞
これも、データ転送コマンドであるが、特に、後述するＣＭＹＫデータ転送コマンドを示す。
【００３９】
(4)＜ｅｏｒ＞
これは、後述するラスタ終了コマンドを示す。
【００４０】
(5)＜ＦＦ＞
これは、後述するページ終了コマンドを示す。
【００４１】
(6)＜ｅｘｉｔ＞
これは、後述するＲＧＢラスタグラフィックモード終了コマンドを示す。
【００４２】
上述したコマンドコードのうち、＜ｅｏｒ＞、＜ＦＦ＞、及び＜ｅｘｉｔ＞には、パラメータもデータもつかない。
【００４３】
＜ｘｆｅｒＪ＞というコマンドコードをもつデータ転送コマンドには、イメージ変換パラメータ設定コマンド、バックエンドパラメータ設定コマンド、及びＲＧＢデータ転送コマンドの３種類がある。これらのデータ転送コマンドにはパラメータとデータがつく。いずれのコマンドのパラメータにも、データの有効ビット幅、データの圧縮方法、データの転送先を示すデバイス選択、デバイス内のデータを格納すべきレジスタアドレス、データ数などの指定が含まれる。デバイス選択によって、上記３種類のうちのどのコマンドかが識別できる。イメージ変換パラメータ設定コマンド、バックエンドパラメータ設定コマンド、及びＲＧＢデータ転送コマンドのデータの中身は、それぞれ、後述するイメージ変換パラメータ、バックエンドパラメータ及び自然画像のフルカラーＲＧＢラスタデータである。
【００４４】
＜ｘｆｅｒＣ＞というコマンドコードをもつＣＭＹＫデータ転送コマンドも、パラメータとデータをもつ。このコマンドのデータの中身は、プリンタドライバ1側で生成した文字・図形の２値ＣＭＹＫラスタデータである。
【００４５】
上記のように４種類のデータ転送コマンドがある。このうち、イメージ変換パラメータ設定コマンドとバックエンドパラメータ設定コマンドを「パラメータ設定コマンド」と、また、ＲＧＢデータ転送コマンドとＣＭＹＫデータ転送コマンドを「ラスタイメージ転送コマンド」と、この明細書では総称することにする。
【００４６】
コマンド解析回路１３は、ホスト装置のプリンタドライバ１からの制御回路コマンドをコマンド解析回路１３内のＦＩＦＯメモリ（図示せず）に入れてから受信順に読み出して解釈し、コマンドの種類を識別する。制御回路コマンドの種類を、プリンタドライバ１から送られてくる順序に従って列挙すると、例えば次のようになる。
【００４７】
(1)ＲＧＢラスタグラフィックモード開始コマンド
このコマンドは、「ＥＳＣ（Ｇ  パラメータ」という形式をもつ。このコマンドは、ＲＧＢラスタグラフィックモードに入ることを制御回路５に命じる。ここで、「ＲＧＢラスタグラフィックモード」とは、ホスト装置から送られてくるフルカラーＲＧＢラスタデータを２値ＣＭＹＫラスタデータへ変換してプリンタへ出力するという動作を行うモードである。ＲＧＢラスタグラフィックモードにある時のみ、コマンド解析回路１３は以下のコマンドを受け入れる。
【００４８】
(2)イメージ変換パラメータ設定コマンド
このコマンドは、「＜ｘｆｅｒＪ＞  パラメータ  データ」という形式をもつ。このコマンドは、イメージデータ処理回路１５に色変換及びハーフトーニングに必要なパラメータ（「イメージ変換パラメータ」という）を設定することを、制御回路５に命じる。このコマンドのパラメータ内のデバイス選択はイメージデータ処理回路１５を指定しており、このコマンドのデータは上記イメージ変換パラメータである。イメージ変換パラメータの代表は、例えば、色変換ためのＲＧＢ／ＣＭＹＫ変換テーブルや、ディザ処理で用いるディザ閾値マトリックスや、γ補正で用いるγ補正テーブルなどの各種ルックアップテーブルである。
【００４９】
(3)バックエンドパラメータ設定コマンド
このコマンドは、「＜ｘｆｅｒＪ＞  パラメータ  データ」という形式をもつ。このコマンドは、プリンタの印刷機構（例えば、インクジェットプリンタの印刷ヘッドやキャリッジや紙送り装置）を正しく制御して用紙上に印刷を行うために必要な各種のパラメータを、制御回路５内の関連部（典型的には、後述する位置制御回路２４）に設定したりプリンタに設定したりすることを、制御回路５に命じる。このパラメータは、イメージデータ処理回路１５より下流の処理モジュール及びプリンタ９（バックエンド）が必要とするものであり、その意味で「バックエンドパラメータ」と呼ぶ。このコマンドのパラメータのデバイス選択は、バックエンドを指定しており、このコマンドのデータは、バックエンドパラメータである。バックエンドパラメータには、例えば、ＣＭＹＫラスタイメージの水平・垂直解像度、１ラスタ（１水平行）のドット数、ページ内の垂直ドット数、ページ長、上・下・左マージン、基本的紙送り量、ドットサイズ指定、単方向・双方向印刷指定、インタレース印刷を行うときのパス数（又はノズル間隔）や使用ノズル数や変則紙送り量、などがある。
【００５０】
(4)ＲＧＢデータ転送コマンド
このコマンドは、「＜ｘｆｅｒＪ＞  パラメータ  データ」という形式をもつ。このコマンドは、ページ内の１ラスタ（１水平ライン）毎の自然画像のフルカラーＲＧＢラスタデータを制御回路５に供給して、その色変換及びハーフトーニング処理を命じる。このコマンドのパラメータのデバイス選択はイメージデータ処理回路１５を指定しており、このコマンドのデータは１ラスタ分（又は１ラスタを分割した個々のセグメント分の）のフルカラーＲＧＢラスタデータである。
【００５１】
(5)ＣＭＹＫデータ転送コマンド
このコマンドは「＜ｘｆｅｒＣ＞  パラメータ  データ」という形式をもつ。このコマンドは、ページ内の１ラスタ（１水平ライン）毎の文字・図形の２値ＣＭＹＫラスタデータを制御回路５に供給する。このコマンドのデータは１ラスタ分（又は１ラスタを分割した個々のセグメント分の）の２値ＣＭＹＫラスタデータである。
【００５２】
自然画像と文字・図形の双方を含むラスタについては、ＲＧＢデータ転送コマンドとＣＭＹＫデータ転送コマンドの双方が送られてくる。自然画像のみのラスタについては、ＲＧＢデータ転送コマンドのみが送られてくる。文字・図形のみのラスタについては、ＣＭＹＫデータ転送コマンドのみが送られてくる。
【００５３】
(6)ラスタ終了コマンド
このコマンドは、「＜ｅｏｒ＞」という形式をもち、１ラスタの終了を知らせる。
【００５４】
(7)  (4)〜(6)の繰り返し
ページ内の最終ラスタまでＲＧＢデータ転送コマンドとラスタ終了コマンドが繰り返し送られてくる。
【００５５】
(8)ページ終了コマンド
このコマンドは、「＜ＦＦ＞」という形式をもち、改ページを知らせる。
【００５６】
(9)  (2)〜(8)の繰り返し
印刷ジョブの最終ページまで、上記(2)〜(7)が繰り返される。なお、上記(2)及び(3)のコマンドは、印刷ジョブの最初に１回だけ送られてくるようにしてもよい。
【００５７】
(10)ＲＧＢラスタグラフィックモード終了コマンド
このコマンドは、「＜ｅｘｉｔ＞」という形式をもち、ＲＧＢラスタグラフィックモードの終了を知らせる。ＲＧＢラスタグラフィックモードが終了すると、次にＲＧＢラスタグラフィックモード開始コマンドを受けるまで、コマンド解析回路１３は他のいずれのコマンドも受け入れない。
【００５８】
コマンド解析回路１３は、受信した制御回路コマンドのコマンドコードから、又はコマンドコードとパラメータから、コマンドの種類を識別する。すなわち、コマンドコードから、ＲＧＢラスタグラフィックモード開始コマンドか、「＜ｘｆｅｒＪ＞」コマンドか、ＣＭＹＫデータ転送コマンドか、ラスタ終了コマンドか、改ページコマンドか、ＲＧＢラスタグラフィックモード終了コマンドかが判断される。「＜ｘｆｅｒＪ＞」コマンドの場合には、更に、そのパラメータ内のデバイス選択から、バックエンドパラメータ設定コマンドか、他のコマンド（イメージ変換パラメータ設定コマンド又はＲＧＢデータ転送コマンド）かが識別される。
【００５９】
コマンド解析回路１３は、コマンドの識別結果に応じて異なる動作を行う。コマンドの受信順序に従って、以下にその動作を説明する。
【００６０】
(1)まず、「ＥＳＣ（Ｇ」というコマンドコードをもったＲＧＢラスタグラフィックモード開始コマンドが受信される。すると、コマンド解析回路１３は、ＲＧＢラスタグラフィックモードに入り、後続のコマンドを受け入れる状態となる。
【００６１】
(2)次に、「＜ｘｆｅｒＪ＞」というコマンドコードの付いたコマンドが入って来る。すると、コマンド解析回路１３は、そのコマンドのパラメータを解釈する。パラメータ内のデバイス選択から、そのコマンドのデータの送り先のデバイスが識別される。上述した３種類の「＜ｘｆｅｒＪ＞」コマンドのうち、最初に入ってくるのはイメージ変換パラメータ設定コマンドであり、そのデバイス選択はイメージデータ処理回路１５を指定している。このイメージ変換パラメータ設定コマンドを受けると、コマンド解析回路１３は、このコマンドのパラメータ内のレジスタアドレスと、このコマンドのデータ（つまり、イメージ変換パラメータ）とを、矢印４３に示すようにイメージデータ処理回路１５へ送る。その際、イメージ変換パラメータが圧縮されていれば、コマンド解析回路１３は、そのイメージ変換パラメータを伸張してからイメージデータ処理回路１５に送る。イメージデータ処理回路１５では、指定されたレジスタアドレスに、そのイメージ変換パラメータが設定される。それにより、後から受信するフルカラーＲＧＢラスタデータを正しく色変換及びハーフトーニング処理することができるように、イメージデータ処理回路１５のコンフィグレーションが設定される。
【００６２】
(3)全てのイメージ変換パラメータ設定コマンドの受信が終わると、次に、「＜ｘｆｅｒＪ＞」というコマンドコードの付いたバックエンドパラメータ設定コマンドが入ってくる。このコマンドのデバイス選択はバックエンドを指定している。このコマンドを受けると、コマンド解析回路１３は、このコマンドのパラメータ内のレジスタアドレスと、データ（つまり、バックエンドパラメータ）とを、矢印４１で示すようにメモリコントロール回路１９へ送る。
【００６３】
(4)全てのイメージ変換パラメータ設定コマンドの受信が終わると、次に、各ラスタのラスタイメージ転送コマンドが入ってくる。自然画像と文字・図形の双方を含むラスタについては、まず自然画像のＲＧＢデータ転送コマンドが、続いて文字・図形のＣＭＹＫデータ転送コマンドが入ってくる。自然画像のみのラスタについては、ＲＧＢデータ転送コマンドのみが入ってくる。文字・図形のみのラスタについては、ＣＭＹＫデータ転送コマンドのみが入ってくる。ＲＧＢデータ転送コマンドは＜ｘｆｅｒＪ＞というコマンドコードを有し、そのデバイス選択はイメージ処理回路１５を指定している。コマンド解析回路１３は、ＲＧＢデータ転送コマンドのパラメータ内のレジスタアドレスと、このコマンドのデータ（つまり、自然画像のフルカラーＲＧＢラスタデータ）とを、矢印４３で示すようにイメージデータ処理回路１５へ送る。その際、コマンド解析回路１３は、コマンド内のフルカラーＲＧＢラスタデータが圧縮されていれば、コマンド解析回路１３はそのデータを伸張してからイメージデータ処理回路１５へ送る。また、コマンド解析回路１３は、ＣＭＹＫデータ転送コマンドのデータ（つまり、文字・図形の２値ＣＭＹＫラスタデータ）を、矢印４１で示すようにメモリコントロール回路１９へ送る。
【００６４】
(5)１ラスタのラスタイメージ転送コマンドに続いて、「＜ｅｏｒ＞」のコマンドコード、つまりラスタ終了コマンドが入ってくる。すると、コマンド解析回路１３は、そのラスタ終了コマンドを矢印４１で示すようにメモリコントロール回路１９へ送る。１ページ内の全ラスタについてラスタイメージ転送コマンドとラスタ終了コマンドが繰り返し入ってくるので、コマンド解析回路１３は、上記(4)、(5)の動作を繰り返し行う。
【００６５】
(6)１ページの最後のラスタのラスタ終了コマンドが入ると、次に、「＜ＦＦ＞」のコマンドコードつまりページ終了コマンドが入ってくる。すると、コマンド解析回路１３は、前ページの全データをプリンタへ転送し終った旨の通知をコマンド生成回路２３から受けるまで、ホスト装置からの新たなコマンドの受信を控える。上記通知を受けると、コマンド解析回路１３は、次のページのコマンドの受信を開始する。
【００６６】
(7)印刷ジョブの最後のページのページ終了コマンドに続いて、「＜ｅｘｉｔ＞」のコマンドコードつまりＲＧＢラスタグラフィックモード終了コマンドが入ってくる。すると、コマンド解析回路１３は、ＲＧＢラスタグラフィックモードを終了し、以後は「ＥＳＣ（Ｇ」つまりＲＧＢラスタグラフィックモード開始コマンド以外のコマンドは一切受け入れず、それらのコマンドは矢印４２で示すようにプリンタへ直接送る。
【００６７】
イメージデータ処理回路１５は、上の説明から分かるように、まず各種のイメージ変換パラメータとそのパラメータのレジスタアドレスとをコマンド解析回路１３から受ける。イメージデータ処理回路１５は、受けたイメージ変換パラメータを指定されたレジスタアドレスに格納し、それにより、正しく色変換及びハーフトーニングが行えるように自己のコンフィグレーションが整う。その後に、イメージデータ処理回路１５は、各ラスタの自然画像のフルカラーＲＧＢデータとそのデータのレジスタアドレスとをコマンド解析回路１３から受ける。すると、イメージデータ処理回路１５は、色変換及びハーフトーニング処理を行って、受けた各ラスタのフルカラーＲＧＢラスタデータを２値ＣＭＹＫラスタデータに変換し、この２値ＣＭＹＫラスタデータを矢印４５で示すようにメモリコントロール回路１９へ送る。
【００６８】
メモリコントロール回路１９は、上の説明から分かるように、まずバックエンドパラメータとそのパラメータのレジスタアドレスとをコマンド解析回路１３から受ける。メモリコントロール回路１９は、受けたバックエンドパラメータとそのレジスタアドレスとをメモリ２１内のコマンドバッファ６１に蓄積する。その後、メモリコントロール回路１９は、各ラスタの自然画像の２値ＣＭＹＫラスタデータをイメージデータ処理回路１５から受け、また、各ラスタの文字・図形の２値ＣＭＹＫラスタデータをコマンド解析回路１３から受ける。メモリコントロール回路１９は、受けた各ラスタの２値ＣＭＹＫラスタデータを、メモリ２１内のデータバッファ６３に蓄積する。その際、メモリコントロール回路１９は、同じラスタについて自然画像のＣＭＹＫラスタデータと文字・図形のＣＭＹＫラスタデータの双方を受けた場合には、自然画像ＣＭＹＫラスタデータと文字・図形のＣＭＹＫラスタデータとを重ね合わせて（ＯＲ演算して）データバッファ６３に書き込む。各ラスタの２値ＣＭＹＫラスタデータが終わる都度、メモリコントロール回路１９はラスタ終了コマンドをコマンド解析回路１３から受け、各ラスタの終了を認識する。
【００６９】
また、ＲＧＢラスタグラフィックモードに入るとすぐに、メモリコントロール回路１９は後述するコマンド生成回路２３から「コマンドを送れ」というコマンド要求を受ける。メモリコントロール回路１９は、バックエンドパラメータとそのレジスタアドレスをコマンドバッファ６１に書き込むと、上記要求に応答して、そのバックエンドパラメータとそのレジスタアドレスとをコマンドバッファ６１から書き込み順に読み出して、矢印４７で示すようにコマンド生成回路２３に転送する。そして、全部のバックエンドパラメータの転送が終わると、メモリコントロール回路１９は、次に位置制御回路２４から「指定したラスタのデータを送れ」というデータ要求を受けることになる。すると、メモリコントロール回路１９は、上記データ要求で指定されたラスタの２値ＣＭＹＫラスタデータをデータバッファ６３から読み出して、やじるぢ４９で示すように位置制御回路２４へ転送する。
【００７０】
コマンド生成回路２３は、ＲＧＢラスタグラフィックモードに入るとすぐに上述のコマンド要求をメモリコントロール回路１９に発し、そして、メモリコントロール回路１９からバックエンドパラメータとそのレジスタアドレスを受け取ると、そのバックエンドパラメータを自己内の指定されたレジスタアドレスに格納する。全てのバックエンドパラメータを自己のレジスタに格納し終わると、コマンド生成回路２３は、次に、バックエンドパラメータのうち、後述する位置制御回路２４が必要とするパラメータ（実際には、バックエンドパラメータの殆ど全て）を、矢印５１で示すように位置制御回路２４に送る。これにより、位置制御回路２４は、そのコンフィグレーションが整う、つまり、後述するようにバックエンドパラメータに基づいてインターレース印刷やオーバーラップ印刷の仕様が決定できる状態になる。
【００７１】
続いて、コマンド生成回路２３は、一連のプリンタコマンドの生成を開始し、逐次に生成したプリンタコマンドをパラレルインタフェース部４９を通じてプリンタ９へ送信する。この過程で、コマンド生成回路２３は、まず、ジョブ開始宣言のような最初のコマンドを作成してプリンタ９へ送り、続いて、バックエンドパラメータのうちプリンタが必要とするパラメータを用いて、プリンタの状態を初期設定する初期設定コマンドを作成してプリンタ９に送る。その後に、コマンド生成回路２３は、位置制御回路２４に対し、ＣＭＹＫラスタデータを要求し、そして、位置制御回路２４からインタレースＣＭＹＫラスタデータを受け取り、これをＣＭＹＫデータ送信用のプリンタコマンドに仕立ててプリンタ９へ送る。後述するように、位置制御回路２４からは、プリンタ３の印刷ヘッドの各パス（各水平走行）毎に、印刷ヘッドが必要とするインタレースＣＭＹＫラスタデータが送られてくるので、コマンド生成回路２３は、その各パス毎のＣＭＹＫラスタデータをプリンタ９へ送信し、また、その各パスのＣＭＹＫデータの送信が終わる都度、次のパス位置へ用紙を送るための紙送りコマンドをプリンタ９へ送る。
【００７２】
位置制御回路２４は、コマンド生成回路２３からの上記要求に応答して、メモリコントロール回路１９に前述したデータ要求を送り、そして、メモリコントロール回路１９から２値ＣＭＹＫラスタデータを受け取って、それをインタレースＣＭＹＫデータに仕立てて矢印５３５を通じてコマンド生成回路２３へ送る。この過程において、位置制御回路２４は、最初に設定されたバックエンドパラメータに基づいて、印刷すべきイメージに最適なインタレース印刷及びオーバーラップ印刷の仕様、すなわち具体的には、プリンタ９の印刷ヘッドの各ドット形成素子（例えば、インクジェットノズル）に何番目のラスタのドット（画素）を何ドット（何画素）置きに打たせるべきか、を印刷ヘッドの各パス（各水平走行）毎に決定する。そして、位置制御回路２４は、上記のように決定した各ドット形成素子に打たせるべきドット（画素）のＣＭＹＫラスタデータをメモリコントロール回路１９に要求してこれを受け取り、そして、その受け取ったＣＭＹＫデータに、打たないドットに対応するヌルデータを加えることにより、各ドット形成素子に各パス毎に与えるべきインタレースＣＭＹＫデータを作成してコマンド生成回路２３へ送る。このように、位置制御回路２４は、バックエンドパラメータに基づいて最適なインタレース印刷及びオーバラップ印刷の仕様を決定し、そして、その仕様に従って印刷を行う際に印刷ヘッドが必要とするインターレースＣＭＹＫラスタデータを作成して、コマンド生成回路２３へ送る。
【００７３】
プリンタフェース回路２５は、コマンド生成回路２３から受け取ったプリンタコマンドをプリンタ９へ送る。
【００７４】
図３及び図４は、以上の構成の下での、ホスト装置から送られてくるパラメータとラスタイメージの処理の処理経路を示している。
【００７５】
(1)パラメータの処理経路（図３参照）
プリンタドライバ１から送られてきたバックエンドパラメータ設定コマンドはコマンド解析回路１３によって解析され、そのコマンドのデータであるバックエンドパラメータはコマンド解析回路１３から直接にメモリコントロール回路１９に送られる。メモリコントロール回路１９は、受け取ったバックエンドパラメータをメモリ２１内のコマンドバッファ６１に一時的に格納し、そして、コマンド生成回路２３からのコマンド要求に応答して、そのバックエンドパラメータをコマンドバッファ６１から読み出してコマンド生成回路２３に送る。コマンド生成回路２３は、受け取ったバックエンドパラメータを内部レジスタに設定した後、インタレース印刷及びオーバーラップ印刷の仕様を決めるのに必要なバックエンドパラメータを位置制御回路２４へ送り、また、プリンタ９の初期設定に必要なバックエンドパラメータをプリンタ初期設定コマンドに仕立ててプリンタ９へ送る。初期設定コマンドは１ページに１度だけ（又は、１ジョブに一度だけ）送信する。
【００７６】
バックエンドパラメータ設定コマンドの後にイメージ変換パラメータ設定コマンドがプリンタドライバ１から送られてくる。イメージ変換パラメータ設定コマンドはコマンド解析回路１３によって解析され、そのコマンドのデータであるイメージ変換パラメータパラメータはコマンド解析回路１３からイメージデータ処理回路１５に転送される。イメージデータデータ処理回路１５は、そのイメージ変換パラメータを内部レジスタに設定し、それにより、正しくいり変換及びハーフトーニングが行えるようにイメージデータデータ処理回路１５のコンフィグレーションが整う。
【００７７】
(2)ラスタイメージの処理経路（図４参照）
上述したパラメータ設定コマンドに続いて、プリンタドライバ１からは各ラスタ単位でラスタイメージ転送コマンドが送られてくる。ラスタイメージ転送コマンドには、ＲＧＢデータ転送コマンドとＣＭＹＫデータ転送コマンドとがある。ＲＧＢデータ転送コマンドはコマンド解析回路１３で解析され、そのデータである自然画像のフルカラーＲＧＢラスタデータはイメージデータ処理回路１５へ送られる。イメージデータ処理回路１５は、受け取ったフルカラーＲＧＢラスタデータを２値ＣＭＹＫラスタデータに変換してメモリコントロール回路１９へ送る。また、ＣＭＹＫデータ転送コマンドはコマンド解析回路１３で解析され、そのデータである文字・図形の２値ＣＭＹＫラスタデータはコマンド解析回路１３から直接的にメモリコントロール回路１９へ転送される。メモリコントロール回路１９は、受け取った自然画像と文字・図形の２値ＣＭＹＫラスタデータをエンコーダ１９１で圧縮した上でメモリ２１内のデータバッファ６３に一時的に格納する。ここで、２値ＣＭＹＫラスタデータを圧縮してデータバッファ６３に格納することにより、必要なデータバッファ６３の容量を小さくすることができる。また、メモリコントロール回路１９は、位置制御回路２４からのデータ要求に応答して、各パスで印刷ヘッドに打たせるべきドット（画素）の２値ＣＭＹＫラスタデータをデータバッファ６３から選択的に読み出しデコーダ１９３で圧縮前の元のデータに復元して位置制御回路２４に送る。位置制御回路２４は、受け取った２値ＣＭＹＫラスタデータに基づいて、各パスで印刷ヘッドが必要とするインタレース２値ＣＭＹＫラスタデータを作成してコマンド生成回路２３に送る。コマンド生成回路２３は、受け取った各パス毎のインタレース２値ＣＭＹＫラスタデータを、プリンタ９へのＣＭＹＫラスタデータ転送コマンドに仕立ててプリンタ９に送信する。また、コマンド生成回路２３は、各パスのＣＭＹＫラスタデータ転送コマンドの後に、紙送りコマンドを生成してプリンタ９に送信する。
【００７８】
以上説明した制御回路５において、プリンタコマンドの生成だけでなく、それを正しく行なうための制御回路５のコンフィグレーションの初期設定も、ホスト装置からのコマンドに基づいて行われる点は、注目すべきである。すなわち、イメージ変換パラメータ設定コマンドによってイメージデータ処理回路１５の初期設定が行われ、また、バックエンドパラメータ設定コマンドによって位置制御回路２４の初期設定が行われる。このように、ホスト装置からのパラメータ設定コマンドで制御回路５のコンフィグレーション設定が行えるために、制御回路５で行う色変換処理及びハーフトーニング処理の具体的内容、並びにインターレース印刷とオーバラップ印刷の具体的仕様を、プリンタドライバが制御することができる。例えば、プリンタの機種に応じて、或いは、印刷するイメージに応じて、制御回路５のコンフィグレーションを最適なものに、プリンタドライバからのコマンドで設定することがでる。従って、同じハードウェア構成の制御回路５を異なる機種のプリンタに適用でき、異なる特性のイメージの印刷に適用できる。つまり、この制御回路５は汎用的である。
【００７９】
更に、上述した制御回路５は、プリンタコマンドのみを発生する従来のプリンタドライバがホストコンピュータで使用された場合にも適用し得るように構成されている。すなわち、制御回路５のコマンド解析回路１３は、ＲＧＢラスタグラフィックモードから一旦出た後は、ＲＧＢラスタグラフィックモード開始コマンド「ＥＳＣ（Ｇ」を再び受けない限り、コマンドの解釈を行わない。そこで、コマンド解析回路１３の前段において、コマンドフィルタ１２が、ＲＧＢラスタグラフィックモードのときにホストから送られてくる上述したコマンド以外のコマンドを捕らえて、これをコマンド解析部１３へ送らずにスルーパス４２を通じてプリンタインタフェース回路２５へ送り、プリンタインタフェース回路２５は、そのコマンドをそのままプリンタ９へ送る。従って、従来のプリンタドライバが発するプリンタコマンドは、、制御回路５をバイパスしてプリンタ９へ送られることになるので、従来と同様にプリンタ９を駆動することができる。
【００８０】
また、上述した制御回路５は、ホスト装置から入ってきたバックエンドパラメータを、ＲＧＢラスタデータの処理経路からは独立した別の経路を通じてコマンド生成回路２３に送っているので、このバックエンドパラメータに基づく制御回路５及びプリンタの初期設定を、ＣＭＹＫラスタデータの生成に先だって確実に完了しておくことができるので、印刷処理が効率的である。
【００８１】
以上の構成によれば、印刷処理の中で自然画像のイメージデータの色変換及びハーフトーニングという最も重い処理を専用ハードウェアである制御回路５が行うようにしているので、安価に高速印刷が実現できる。
【００８２】
図５は、イメージデータ処理回路１５の内部構成を示す。
【００８３】
フルカラーＲＧＢラスタデータは入力インタフェース部２０１を通じて、まず、色変換部２０３に入力される。色変換部２０３の内部メモリ領域２０５には、予め、ＲＧＢ表色系からＣＭＹＫ表色系への値の変換関係を示した色変換テーブル２０７が、前述したイメージ変換パラメータ設定コマンドによって設定されている。色変換部２０３は、色変換テーブル２０７を参照して、入力されたフルカラーＲＧＢラスタデータをフルカラー（又は、より少ない色数）の多値ＣＭＹＫラスタデータに変換する。この多値ＣＭＹＫラスタデータはハーフトーニング部２０７に入力される。ハーフトーニング部２０７の内部メモリ領域２１１には、予め、ディザ法を行うためのディザテーブル２１３やγ補正を行うためのガンマテーブル２１７が、前述したイメージ変換パラメータ設定コマンドによって設定されており、また、誤差拡散法を行う場合には拡散された誤差を記憶するための誤差メモリ２１５が確保される。ハーフトーニング部２０９は、ガンマテーブル２１７を参照して多値ＣＭＹＫラスタデータのガンマ補正を行い、そして、ディザテーブル２１３を参照して又は誤差メモリ２１５を使用して、ガンマ補正された多値ＣＭＹＫラスタデータを２値ＣＭＹＫラスタデータに変換する。この２値ＣＭＹＫラスタデータは出力インタフェース部２１９を通じて出力される。
【００８４】
図６は、更に別の実施形態にかかる制御回路のブロック図である。なお、図１に示した要素と実質的に同じ機能をもつ要素には同じ参照番号を付して、重複した説明を省略する。
【００８５】
図７に示す制御回路３００は、その全部が専用ハードウェア回路で構成されているのではなく、ワンチップマイクロコンピュータ３０３を具備している。このマイクロコンピュータ３０３の役目は、主に、位置制御回路３０１を助けることである。すなわち、図１に示した位置制御回路２４が行っている処理のうち、特に、各パスで各ドット形成素子に打たせるべきドット（画素）をバックエンドパラメータに基づいて決定する（つまり、インタレース印刷及びオーバラップ印刷の最適な仕様を決定する）という処理をマイクロコンピュータ３０３が受け持ち、その他の処理を位置制御回路３０１が受け持つ。インタレース印刷及びオーバラップ印刷の仕様を決定するアルゴリズムはかなり複雑であるため、これを専用ハードウェアで実現するよりも、マイクロコンピュータでソフト的に行ったほうが、最適な仕様を容易に決定できるからである。しかも、この仕様決定の処理量は大きいものではないから、マイクロコンピュータ３０３には極めて安価なワンチップマイククロコンピュータで十分であり、顕著なコスト高は生じない。
【００８６】
マイクロコンピュータ３０３と位置制御回路３０１が行う処理の手順は次の通りである。
【００８７】
(1)位置制御回路３０１が、コマンド生成回路２３から、インタレース印刷及びオーバラップ印刷の仕様決定に必要なバックエンドパラメータを受け取り、マイクロコンピュータ３０３に渡す。
【００８８】
(2)位置制御回路３０１が、コマンド生成回路２３から、ページ内で最初の仕様作成要求を受け取り、これに応答して、マイクロコンピュータ３０３に割り込み要求を発する。マイクロコンピュータ３０３は、割り込み処理で、バックエンドパラメータに基づき１パス分の仕様を決定する。この仕様は、その１パスのページ内での垂直位置（そのパスまでの紙送り量）と、その１パスで印刷ヘッドの各ドット形成素子に何番目のラスタのどのドット（例えば、奇数ドットのみ、或いは偶数ドットのみなど）を打たせるかを指定したテーブル（以下、「インタレーステーブル」という）とから構成される。
【００８９】
(3)位置制御回路３０１は、マイクロコンピュータ３０３から上記の垂直位置とインタレーステーブルとを受け取り、垂直位置はコマンド生成回路２３からの要求に応じてコマンド生成回路２３へ渡し、インタレーステーブルはメモリコントロール回路１９へ渡す。メモリコントロール回路１９は、インタレーステーブルをメモリ２１に保存する。
【００９０】
(4)位置制御回路３０１は、メモリコントロール回路１９から各ドット形成素子に対するインタレーステーブルの情報を受け取る。そして、位置制御回路３０１は、コマンド生成回路２３からのラスタデータ要求に応答して、上記情報が指定するドットのＣＭＹＫラスタデータをメモリコントロール回路１９に要求してそのドットのラスタデータを受け取り、これに打たないドットのヌルデータを加えた上でコマンド生成回路２３に転送する。
【００９１】
(5)２パス目以降は、位置制御回路３０１が自発的にマイクロコンピュータ３０３に対する割り込み要求１１１を発生して、上記の(3)、(4)を繰返す。
【００９２】
図７は、本発明の更に別の実施形態のシステム構成を示す。
【００９３】
プリンタ制御専用回路（制御回路）４１１の上流側にデータフローコントローラ４０７が設けられる。データフローコントローラ４０７は、ホストコンピュータ４０１、デジタルカメラ４０３及びイメージスキャナ４０５という３種類のホスト装置と接続することができる。この実施形態では、イメージスキャナ４０５とデータフローコントローラ４０７と制御回路４１１とプリンタ本体４１３とが、１つの筐体に収められて全体として１台のプリンタ４１５として構成されている。データフローコントローラ４０７は、プリンタ４１５のコントロールパネル４０９にも接続されている。デジタルカメラ４０５は必要なときだけプリンタ４１５に接続される。
【００９４】
ホストコンピュータ４０１を用いて印刷を行う場合、ホストコンピュータ４０１は内部のプリンタドライバで上述した一連の制御回路コマンドを生成して、その制御回路コマンドを矢印４１７で示すようにデータフローコントローラ４０７に送り込む。データフローコントローラ４０７はその制御回路コマンドをそのまま矢印４２５６で示すように制御回路４１１へ転送する。制御回路４１１は、その制御回路コマンドから上述したようにプリンタコマンドを生成して、矢印４２７で示すようにプリンタ本体４１３へ送る。
【００９５】
一方、イメージスキャナ４０３及びデジタルカメラ４０５は、原則的に、フルカラーＲＧＢデータを出力するだけで、制御回路コマンドを生成する機能はもたない。データフローコントローラ４０７は、コントロールパネル４０９からイメージスキャナ４０５又はデジタルカメラ４０３を使って印刷を行うモードの指定を受けると、イメージスキャナ４０５又はデジタルカメラ４０３から矢印４２１又は４１９に示すようにフルカラーＲＧＢラスタイメージデータを読み込む。そして、データフローコントローラ４０７は、コントロールパネルからユーザ指定された印刷条件に従って、そのＲＧＢラスタイメージを印刷するための一連の制御回路コマンドを生成して、矢印４２５で示すように制御回路回路４１１へ送る。制御回路４１１は、その制御回路コマンドから上述したようにプリンタコマンドを生成して、矢印４２７で示すようにプリンタ本体４１３へ送る。
【００９６】
このようにして、ホストコンピュータ４０１、デジタルカメラ４０３及びイメージスキャナ４０５のいずれを用いても印刷を行うことが出来る。
【００９７】
以上、本発明のいくつかの実施形態を説明したが、本発明はこれらの実施形態のみに限られるわけではなく、その要旨を逸脱することなく他の種々の形態でも実施することが可能である。例えば、上記実施形態では、制御回路は自然画像の画像データの色変換とハーフトーニング、及びインタレース印刷やオーバラップ印刷のための処理というデータ操作を行っているが、必ずしもそうでなければならないわけではなく、ホストで発生する原画像データからプリンタが印刷に使用する最終的画像データまでの過程における何らかのデータ操作を、制御回路がプリンタドライバやプリンタに肩代わりして行いさえすれば、それなりの高速化が図れることになる。例えば、制御回路において、自然画像のハーフトーニングだけを行うようにしてもよいし、或いは、自然画像も文字・図形も含む全画像のラスタライズ、色変換及びハーフトーニングを行うようにしてもよい。
【図面の簡単な説明】
【図１】本発明の一実施形態におけるの全体構成を示すブロック図。
【図２】プリンタ制御専用回路（制御回路）５の配置のバリエーションを示す図。
【図３】制御回路５内のパラメータの処理経路を示すブロック図。
【図４】制御回路５内のデータの処理経路を示すブロック図。
【図５】イメージデータ処理回路１５の内部構成を示すブロック図。
【図６】本発明の別の実施形態の構成を示すブロック図。
【図７】本発明の更に別の実施形態のシステム構成を示すブロック図。
【符号の説明】
１  プリンタドライバ
３  制御回路コマンド
５、３００  プリンタ制御専用回路（制御回路）
７  プリンタコマンド
９  プリンタ
１３  コマンド解析回路
１５  イメージデータ処理回路
１９  メモリコントロール回路
２１  メモリ
２３  コマンド生成回路
【図１】
0003827049.tif 000002
【図２】
0003827049.tif 000003
【図３】
0003827049.tif 000004
【図４】
0003827049.tif 000005
【図５】
0003827049.tif 000006
【図６】
0003827049.tif 000007
【図７】
0003827049.tif 000008