===開示の概要===
本明細書及び添付図面の記載により、少なくとも以下の事項が明らかとなる。
(A)画像データに基づき、前記画像データにより表される画像を構成する各画素の階調値をそれぞれ、出力画像の解像度に応じて多値化処理して多値階調値データを生成する多値化処理部と、
(B)前記多値階調値データをそれぞれドットの個数を表すドット個数データに変換して、このドット個数データに基づき、1以上の画素について個別にドット形成の有無を決定して、ドット形成の有無が決定された前記1以上の画素のうちの少なくとも一部の画素を、前記出力画像を構成する画素として前記解像度の前記出力画像のドット形成用データを生成するドット形成用データ生成部と、
(C)メモリと、
を備え、
前記出力画像の前記解像度が第1解像度である場合に、
前記多値化処理部は、生成した前記多値階調値データを前記メモリに格納し、
前記ドット形成用データ生成部は、前記メモリから取得した前記多値化階調データにより前記ドット形成用データを生成し、
前記出力画像の前記解像度が前記第1解像度よりも低い第2解像度である場合に、
前記多値化処理部は、生成した前記多値階調値データを前記ドット形成用データ生成部に向けて送出し、
前記ドット形成用データ生成部は、前記多値化処理部から送られてきた前記多値化階調データにより前記ドット形成用データを生成する、
ことを特徴とする画像処理装置。
このような画像処理装置にあっては、画像データにより表される画像を構成する各画素の階調値をそれぞれ、出力画像の解像度に応じて多値化処理して多値化処理部により多値階調値データを生成し、この多値階調値データを、ドット形成用データ生成部によりドットの個数を表すドット個数データに変換して、このドット個数データに基づき、1以上の画素について個別にドット形成の有無を決定して、ドット形成の有無が決定された前記1以上の画素のうちの少なくとも一部の画素を、前記出力画像を構成する画素として、前記解像度の前記出力画像のドット形成用データを生成するから、ドット形成用データを効率よく生成することができる。また、出力画像の解像度が第1解像度よりも低い第2解像度の場合に、生成された多値階調値データをメモリに格納せずにそのままドット形成用データ生成部に向けて送出してドット形成用データに変換することで、メモリの節約を図ることができる。
かかる画像処理装置にあっては、前記出力画像の前記解像度が前記第2解像度である場合に、前記ドット形成用データ生成部により生成された前記ドット形成用データが前記メモリに格納されてもよい。このように出力画像の解像度が第2解像度である場合に、ドット形成用データが前記メモリに格納することで、処理をスムーズに行うことができる。
また、かかる画像処理装置にあっては、前記階調値と前記多値階調値データとが対応付けられた多値化テーブルを備え、前記多値化処理部は、前記多値化テーブルを参照することにより前記多値階調値データを生成しても良い。このような多値化テーブルを備えれば、階調値から多値階調値データを簡単に取得することができる。
また、かかる画像処理装置にあっては、前記多値化処理部は、前記画像データにより表される画像を構成する各画素の色別の階調値をそれぞれ、出力画像の解像度に応じて多値化処理して前記多値階調値データを生成しても良い。このように各画素の色別の階調値をそれぞれ、出力画像の解像度に応じて多値化処理して多値階調値データを生成することで、画像データが複数の色により表現されていた場合でも、ドット形成用データの生成処理をスムーズに行うことができる。
また、かかる画像処理装置にあっては、前記多値化処理部は、前記階調値を当該階調値に対応する画素の位置に応じて多値化処理して前記多値階調値データを生成してもよい。このように階調値に対応する画素の位置に応じて多値化処理部により多値化処理することで、より高精細なドット形成用データを生成することができ、出力画像の画質向上を図ることができる。
また、かかる画像処理装置にあっては、前記多値階調値データは、所定のビット数のデータとして前記多値化処理部により生成されても良い。このように多値階調値データが所定のビット数のデータとして生成されることで、多値化処理部により生成される多値階調値データのデータ量を出力画像の解像度に関わりなく一定にすることができる。
また、かかる画像処理装置にあっては、前記多値階調値データと前記ドット個数データとが対応付けられたドット個数データ変換テーブルを備え、前記ドット形成用データ生成部は、前記ドット個数データ変換テーブルを参照することにより、前記多値階調値データを前記ドット個数データに変換してもよい。このようなドット個数データ変換テーブルを備えることで、多値階調値データからドット個数データを簡単に取得することができる。
また、かかる画像処理装置にあっては、前記ドット形成用データ生成部は、前記ドット個数データに基づき、所定の個数の画素について個別にドット形成の有無を決定しても良い。このように所定の個数の画素についてドット形成の有無を決定すれば、処理をスムーズに行うことができる。
また、かかる画像処理装置にあっては、前記ドット個数データには、ドットの個数の他に、ドットのサイズに関するデータが含まれていても良い。このようにドットのサイズに関するデータが含まれていれば、サイズの異なるドットについて形成の有無を決定することができる。
また、かかる画像処理装置にあっては、前記ドット形成用データ生成部は、前記ドット個数データの他に、ドット形成の順序を示すドット形成順序データに基づき、前記1以上の画素について個別にドット形成の有無を決定してもよい。このようにドット形成順序データに基づき、1以上の画素について個別にドット形成の有無を決定すれば、処理をスムーズに行うことができる。
また、かかる画像処理装置にあっては、前記ドット形成用データ生成部により、前記ドット形成の有無が決定された前記1以上の画素の中から前記出力画像を構成する画素として使用される画素の数が、前記出力画像の前記解像度に応じて異なってもよい。このように1以上の画素の中から前記出力画像を構成する画素として使用される画素の数が、前記出力画像の前記解像度に応じて異なることで、解像度の異なる出力画像のドット形成用データを簡単に生成することができる。
また、かかる画像処理装置にあっては、前記ドット形成用データ生成部により、前記ドット形成の有無が決定された前記1以上の画素の中から前記出力画像を構成する画素として使用される画素の位置が、前記多値階調値データを生成する際に多値化処理した階調値に対応する画素の位置に応じて異なってもよい。このように1以上の画素の中から前記出力画像を構成する画素として使用される画素の位置が、多値階調値データを生成する際に多値化処理した階調値に対応する画素の位置に応じて異なることで、出力画像のドット形成用データをスムーズに生成することができる。
(A)画像データに基づき、前記画像データにより表される画像を構成する各画素の階調値をそれぞれ、出力画像の解像度に応じて多値化処理して多値階調値データを生成する多値化処理部と、
(B)前記多値階調値データをそれぞれドットの個数を表すドット個数データに変換して、このドット個数データに基づき、1以上の画素について個別にドット形成の有無を決定して、ドット形成の有無が決定された前記1以上の画素のうちの少なくとも一部の画素を、前記出力画像を構成する画素として前記解像度の前記出力画像のドット形成用データを生成するドット形成用データ生成部と、
(C)メモリと、
を備え、
前記出力画像の前記解像度が第1解像度である場合に、
前記多値化処理部は、生成した前記多値階調値データを前記メモリに格納し、
前記ドット形成用データ生成部は、前記メモリから取得した前記多値化階調データにより前記ドット形成用データを生成し、
前記出力画像の前記解像度が前記第1解像度よりも低い第2解像度である場合に、
前記多値化処理部は、生成した前記多値階調値データを前記ドット形成用データ生成部に向けて送出し、
前記ドット形成用データ生成部は、前記多値化処理部から送られてきた前記多値化階調データにより前記ドット形成用データを生成し、
(D)前記出力画像の前記解像度が前記第2解像度である場合に、前記ドット形成用データ生成部により生成された前記ドット形成用データが前記メモリに格納され、
(E)前記階調値と前記多値階調値データとが対応付けられた多値化テーブルを備え、前記多値化処理部は、前記多値化テーブルを参照することにより前記多値階調値データを生成し、
(F)前記多値化処理部は、前記画像データにより表される画像を構成する各画素の色別の階調値をそれぞれ、出力画像の解像度に応じて多値化処理して前記多値階調値データを生成し、
(G)前記多値化処理部は、前記階調値を当該階調値に対応する画素の位置に応じて多値化処理して前記多値階調値データを生成し、
(H)前記多値階調値データは、所定のビット数のデータとして前記多値化処理部により生成され、
(I)前記多値階調値データと前記ドット個数データとが対応付けられたドット個数データ変換テーブルを備え、前記ドット形成用データ生成部は、前記ドット個数データ変換テーブルを参照することにより、前記多値階調値データを前記ドット個数データに変換し、
(J)前記ドット形成用データ生成部は、前記ドット個数データに基づき、所定の個数の画素について個別にドット形成の有無を決定し、
(K)前記ドット個数データには、ドットの個数の他に、ドットのサイズに関するデータが含まれ、
(L)前記ドット形成用データ生成部は、前記ドット個数データの他に、ドット形成の順序を示すドット形成順序データに基づき、前記1以上の画素について個別にドット形成の有無を決定し、
(M)前記ドット形成用データ生成部により、前記ドット形成の有無が決定された前記1以上の画素の中から前記出力画像を構成する画素として使用される画素の数が、前記出力画像の前記解像度に応じて異なり、
(N)前記ドット形成用データ生成部により、前記ドット形成の有無が決定された前記1以上の画素の中から前記出力画像を構成する画素として使用される画素の位置が、前記多値階調値データを生成する際に多値化処理した階調値に対応する画素の位置に応じて異なることを特徴とする画像処理装置。
画像データに基づき、前記画像データにより表される画像を構成する各画素の階調値をそれぞれ、出力画像の解像度に応じて多値化処理して多値階調値データを生成するステップと、
前記出力画像の前記解像度が第1解像度である場合に、生成された前記多値階調値データをメモリに格納し、前記出力画像の前記解像度が前記第1解像度よりも低い第2解像度である場合に、生成された前記多値階調値データをドット形成用データ生成部に送るステップと、
前記出力画像の前記解像度が第1解像度である場合に、前記メモリに格納された前記多値階調値データを前記ドット形成用データ生成部にて取得するステップと、
前記ドット形成用データ生成部にて、取得した前記多値階調値データをそれぞれドットの個数を表すドット個数データに変換して、このドット個数データに基づき、1以上の画素について個別にドット形成の有無を決定して、ドット形成の有無が決定された前記1以上の画素のうちの少なくとも一部の画素を、前記出力画像を構成する画素として前記解像度の前記出力画像のドット形成用データを生成するステップと、
を有することを特徴とする画像処理方法。
(A)画像データに基づき、前記画像データにより表される画像を構成する各画素の階調値をそれぞれ、出力画像の解像度に応じて多値化処理して多値階調値データを生成する多値化処理部と、
(B)前記多値階調値データをそれぞれドットの個数を表すドット個数データに変換して、このドット個数データに基づき、1以上の画素について個別にドット形成の有無を決定して、ドット形成の有無が決定された前記1以上の画素のうちの少なくとも一部の画素を、前記出力画像を構成する画素として前記解像度の前記出力画像のドット形成用データを生成するドット形成用データ生成部と、
(C)メモリと、
を備えた画像処理装置において実行されるプログラムであって、
前記出力画像の前記解像度が第1解像度である場合に、
前記多値化処理部にて生成された前記多値階調値データを前記メモリに格納するステップと、
前記メモリから前記多値化階調データを取得して当該多値階調値データに基づき前記ドット形成用データ生成部にて前記ドット形成用データを生成するステップと、
を実行し、
前記出力画像の前記解像度が前記第1解像度よりも低い第2解像度である場合に、
前記多値化処理部にて生成された前記多値階調値データを前記ドット形成用データ生成部に向けて送出するステップと、
前記多値化処理部から送られてきた前記多値化階調データに基づき、前記ドット形成用データ処理部により前記ドット形成用データを生成するステップと、
を実行することを特徴とするプログラム。
(A)画像データに基づき、前記画像データにより表される画像を構成する各画素の階調値をそれぞれ、出力画像の解像度に応じて多値化処理して多値階調値データを生成する多値化処理部と、
(B)前記多値階調値データをそれぞれドットの個数を表すドット個数データに変換して、このドット個数データに基づき、1以上の画素について個別にドット形成の有無を決定して、ドット形成の有無が決定された前記1以上の画素のうちの少なくとも一部の画素を、前記出力画像を構成する画素として前記解像度の前記出力画像のドット形成用データを生成するドット形成用データ生成部と、
(C)メモリと、
(D)前記ドット形成用データ生成部により生成された前記ドット形成用データに基づき、媒体に対して印刷を施す印刷部と、
を備え、
前記出力画像の前記解像度が第1解像度である場合に、
前記多値化処理部は、生成した前記多値階調値データを前記メモリに格納し、
前記ドット形成用データ生成部は、前記メモリから取得した前記多値化階調データにより前記ドット形成用データを生成し、
前記出力画像の前記解像度が前記第1解像度よりも低い第2解像度である場合に、
前記多値化処理部は、生成した前記多値階調値データを前記ドット形成用データ生成部に向けて送出し、
前記ドット形成用データ生成部は、前記多値化処理部から送られてきた前記多値化階調データにより前記ドット形成用データを生成する、
ことを特徴とする印刷装置。
かかる印刷装置にあっては、原稿から画像を読み取ってその画像のデータを生成する画像読み取り部を備え、 前記画像読み取り部により生成された前記データが前記画像データとして前記多値化処理部により多値化処理されても良い。このような画像読み取り部を備え、この画像読み取り部により生成されたデータが前記画像データとして多値化処理されれば、読み取った画像のデータをスムーズにドット形成用データに変換して、画像を印刷することができる。
===画像処理装置の概要===
本発明に係る画像処理装置等の実施の形態について説明する。ここでは、本発明に係る画像処理装置の実施の形態として印刷装置に適用した場合を例にして説明する。さらに、ここでは、本発明に係る印刷装置の実施の形態として、スキャナを搭載したインクジェットプリンタ1に適用した場合を例にして説明する。
図1〜図6は、このインクジェットプリンタ1の概要を説明したものである。図1は、このインクジェットプリンタ1の外観を説明する斜視図である。図2は、このインクジェットプリンタ1のスキャナ部10の概要を説明する斜視図である。図3は、このインクジェットプリンタ1のプリンタ部30の概要を説明する斜視図である。図4は、このインクジェットプリンタ1の内部構成を概略的に説明する説明図である。図5は、このインクジェットプリンタ1のプリンタ部30の搬送機構を説明する断面図である。図6は、このインクジェットプリンタ1の操作パネル2を説明する平面図である。
このスキャナ付きインクジェットプリンタ1は、原稿から画像を読み取って画像データを生成するスキャナ機能と、ホストコンピュータ(図示外)から送られてきた印刷データに基づき印刷用紙等の各種媒体に印刷をするプリンタ機能と、原稿から読み取った画像を媒体に印刷して複写するローカルコピー機能とを備えたスキャナ・プリンタ・コピー複合装置(以下、SPC複合装置ともいう)である。このSPC複合装置1は、図1に示すように、その上部に原稿5から画像を読み取るためのスキャナ部10を備え、また、このSPC複合装置1の下部に、印刷用紙等の媒体Sに印刷をするためのプリンタ部30を備えている。また、このSPC複合装置1の前面部には、操作パネル2が設けられている。
スキャナ部10は、図2に示すように、原稿5がセットされるガラス板が設けられた原稿台11と、当該原稿台11を上方から覆う原稿台カバー12とを備えている。原稿台カバー12は、SPC複合装置1の後端部に回動可能に取付けられ、原稿台11の上面部を開閉するように設けられている。なお、スキャナ部10は、「画像読み取り部」に相当する。
一方、プリンタ部30は、図3に示すように、スキャナ部10を上方に持ち上げることによって、その内部が開口部32を通じて外部に開放されるように構成されている。つまり、スキャナ部10は、SPC複合装置1の後部にヒンジ部34を介して回動自在に装着されている。スキャナ部10が上方へと持ち上げられると、プリンタ部30の内部に通じる開口部32が開放される。プリンタ部30の内部には、インクカートリッジを搭載するキャリッジ41などが配置されている。このようにプリンタ部30の内部が開放されることにより、その開口部32を通じてインクカートリッジの交換等のメンテナンス作業や、紙詰まり等のエラー対処等を容易に行うことができるようになっている。
また、プリンタ部30は、SPC複合装置1の背部に、印刷用紙等の媒体Sがセットされて当該媒体Sを順次供給する給紙部4を備えている。また、プリンタ部30は、SPC複合装置1の前部に、印刷された媒体Sが排出される排紙部3を備えている。給紙部4は、給紙トレイ8を備えている。給紙トレイ8には、印刷用紙等の媒体がセットされるようになっている。また、排紙部3は、排紙トレイ7を備え、印刷されて排出された媒体Sを受ける。なお、給紙部4にセットされる媒体Sとしては、カット紙などの単票状印刷用紙のみならず、ロール紙などの連続した印刷用紙でも構わず、給紙部4がこれらの媒体Sに対応した構造を備えていても良い。
===スキャナ部10・プリンタ部30の内部機構===
図4は、スキャナ部10およびプリンタ部30の内部機構を示したものである。
<スキャナ部>
スキャナ部10は、同図の上部に示すように、原稿台11の下側に、スキャナ用キャリッジ60と、このスキャナ用キャリッジ60を原稿台11に対して所定の間隔を保ちつつ図中矢印A方向に沿って平行に移動させる駆動機構62と、このスキャナ用キャリッジ60を支持しつつその移動を案内するガイド64とを備えている。
スキャナ用キャリッジ60には、原稿台11を介して原稿5に対し光を照射する光源としての露光ランプ66と、原稿5から反射された反射光を案内する複数枚のミラー68と、ミラー68により案内された反射光を集光するレンズ70と、このレンズ70により集光された反射光を受光するCCDセンサ72とが搭載されている。
CCDセンサ72は、光信号を電気信号に変換するフォトダイオードが列状に配置されて構成された3本のリニアセンサ(図示外)を備えている。これら3本のリニアセンサは、相互に間隔をあけて平行に配置され、それぞれR(レッド)、G(グリーン)およびB(ブルー)の3色の異なるフィルタが設けられている。各リニアセンサは、各フィルタの色に対応した成分の光をそれぞれ反射光から検出し、その検出結果を制御部50に出力する。
また、駆動機構62は、スキャナ用キャリッジ60に接続されたタイミングベルト74と、このタイミングベルト74が掛け渡された一対のプーリ75、76と、一方のプーリ75を回転駆動する駆動モータ77とを備えている。駆動モータ77は、制御部50からの制御信号によって駆動制御される。
<プリンタ部>
一方、プリンタ部30は、図4の下部に示すように、プリンタ用キャリッジ41と、このプリンタ用キャリッジ41に搭載されたヘッド21と、プリンタ用キャリッジ41を媒体Sに対して所定の間隔を保持しつつ相対的に平行に移動させる駆動機構24と、媒体Sをプリンタ用キャリッジ41の移動方向と直交する方向に沿って搬送する搬送機構36とを備えている。
プリンタ用キャリッジ41には、カートリッジ装着部が設けられ、このカートリッジ装着部には、黒(K)、シアン(C)、マゼンタ(M)、イエロ(Y)等のインクが収容されたインクカートリッジが装着される。
ヘッド21は、インクカートリッジから供給された各色のインクを媒体Sに向けて吐出して当該媒体S上にドットを形成して、媒体Sに画像を形成して印刷を施す。ヘッド21のインク吐出機構については後に詳しく説明する。
駆動機構24は、プリンタ用キャリッジ41に接続されたタイミングベルト45と、このタイミングベルト45に噛合されたプーリ44と、このプーリ44を回転駆動するキャリッジモータ42(以下、CRモータともいう)と、プリンタ用キャリッジ41の移動を案内するガイドレール46と、プリンタ用キャリッジ41の位置を検出するリニア式エンコーダとしてリニア式エンコーダ符号板51およびこのリニア式エンコーダ符号板51を読み取る検出部52とを備えている。この駆動機構24は、キャリッジモータ42を駆動してプーリ44を介してタイミングベルト45を回転させる。これにより、プリンタ用キャリッジ41は、媒体Sに対してガイドレール46に沿って相対的に移動する。キャリッジモータ42は、制御部50からの制御信号により駆動制御される。
搬送機構36は、プラテン14と、搬送ローラ17Aと、当該搬送ローラ17Aを回転駆動する搬送モータ15(以下、PFモータともいう)と、媒体Sが所定位置に到達したか否かを検出する紙検知センサ53と、搬送ローラ17Aの回転量を検出するロータリ式エンコーダ56とを備えている。プラテン14は、ヘッド21に対向して配置されている。搬送モータ15が駆動すると、搬送ローラ17Aが回転して、媒体Sがプラテン14上を搬送される。搬送モータ15は、制御部50からの制御信号により駆動制御される。
印刷時には、媒体Sが搬送ローラ17Aにより間欠的に所定の搬送量で搬送され、その間欠的な搬送の合間にプリンタ用キャリッジ41が、搬送ローラ17Aによる搬送方向に対して交差する方向に沿って移動しながら、ヘッド21から媒体Sに向けてインクを吐出して印刷が施される。
<搬送機構>
プリンタ部30の搬送機構について説明する。この搬送機構は、図5に示すように、給紙ローラ13と、紙検知センサ53と、搬送ローラ17Aと、排紙ローラ17Bと、プラテン14と、フリーローラ18A、18Bとを備えている。
印刷される媒体Sは、給紙部4の給紙トレイ8にセットされる。給紙トレイ8にセットされた媒体Sは、断面略D形状に成形された給紙ローラ13により、図中矢印A方向に沿って搬送されて、インクジェットプリンタ1の内部へと送られる。インクジェットプリンタ1の内部に送られてきた媒体Sは、紙検知センサ53と接触する。この紙検知センサ53は、給紙ローラ13と、搬送ローラ17Aとの間に設置されたもので、給紙ローラ13により給紙された媒体Sを検知する。
紙検知センサ53により検知された媒体Sは、搬送ローラ17Aによって、印刷が実施されるプラテン14へと順次搬送される。搬送ローラ17Aの対向位置には、フリーローラ18Aが設けられている。このフリーローラ18Aと搬送ローラ17Aとの間に、媒体Sを挟み込むことによって、媒体Sをスムーズに搬送する。
プラテン14へと送り込まれた媒体Sは、ヘッド21から吐出されたインクによって順次印刷される。プラテン14は、ヘッド21と対向して設けられ、印刷される媒体Sを下側から支持する。
印刷が施された媒体Sは、排紙ローラ17Bにより順次、プリンタ部30の外部へと排出される。排紙ローラ17Bは、搬送モータ15と同期に駆動されていて、当該排紙ローラ17Bに対向して設けられたフリーローラ18Bとの間に媒体Sを挟み込んで、媒体Sをプリンタ部30の外部へと排出する。
===操作パネル===
図6は、このSPC複合装置1の操作パネル2を示したものである。
操作パネル2は、そのほぼ中央部に液晶ディスプレイ80を備えている。液晶ディスプレイ80は、文字や画像の表示が可能である。液晶ディスプレイ80の表示内容は、設定項目や設定状態、動作状態等に応じて変化する。
液晶ディスプレイ80の左側には、報知ランプ81と、電源ボタン82と、各種設定ボタン83と、モードボタン84、85、86、87と、給排紙ボタン88とが設けられている。報知ランプ81は、赤色LEDであり、エラー発生時に点灯してユーザーにエラー発生を報知する。電源ボタン82は、SPC複合装置1の電源をオン、オフするためのボタンである。各種設定ボタン83は、SPC複合装置1の各種設定を行うための画面を液晶ディスプレイ80に表示するためのボタンである。モードボタン84、85、86、87は、それぞれSPC複合装置1のモードを設定するためのボタンである。ここでは、モードボタンとして、コピーモードボタン84と、メモリカード印刷モードボタン85と、フィルム印刷モードボタン86と、スキャンモードボタン87とが設けられている。ここで、例えば、コピーモードボタン84が押されると、コピー枚数、倍率、用紙タイプ、用紙サイズ、コピー品質、コピーモード等の設定条件を入力するための画面が液晶ディスプレイ80に表示される。給排紙ボタン88は、SPC複合装置1に媒体Sを給紙したり、SPC複合装置1内の媒体Sを排紙したりするときに押される。
液晶ディスプレイ80の右側には、OKボタン89Aと、キャンセルボタン89Bと、保存ボタン89Cと、カラーコピーボタン89Dと、モノクロコピーボタン89Eと、ストップボタン89Fと、十字ボタン89Gと、メニューボタン89Hとが設けられている。OKボタン89Aが押されると、液晶ディスプレイ80に表示されている内容にて設定条件が決定される。キャンセルボタン89Bが押されると、設定条件がクリアされ、各設定項目がデフォルト値に変更される。保存ボタン89Cが3秒間以上押し続けられると、設定値が記憶される。そして、保存ボタン89Cが3秒以下で押されると、記憶された設定値が読み出され、その設定条件が液晶ディスプレイ80に表示される。カラーコピーボタン89Dは、カラーコピーを開始させるためのボタンである。モノクロコピーボタン89Eは、モノクロコピーを開始させるためのボタンである。ストップボタン89Fは、一旦開始したコピー動作を中止させるためのボタンである。十字ボタン89Gは、その上下左右の4箇所を選択的に押すことが可能であり、1つのボタンで4つの機能(上ボタン、下ボタン、左ボタン及び右ボタンの機能)を果たす。メニューボタン89Hは、液晶ディスプレイ80に表示される設定項目を切り替える。
===ヘッド===
<ヘッドの構成>
図7Aは、ヘッド21の下面部に設けられたインクのノズルの配列を示した図である。ヘッド21の下面部には、同図に示すように、イエロ(Y)、マゼンタ(M)、シアン(C)、ブラック(K)の各色ごとにそれぞれ複数のノズル♯1〜♯180からなるノズル列、即ちシアンノズル列211C、マゼンダノズル列211M、イエロノズル列211Y、ブラックノズル列211Kが設けられている。
各ノズル列211C、211M、211Y、211Kの各ノズル♯1〜♯180(「液体吐出ノズル」に相当)は、所定の方向(ここでは、媒体Sの搬送方向)に沿って相互に間隔をあけて直線状に1列に配列されている。各ノズル♯1〜♯180の間隔(ノズル間隔)は、それぞれ「k・D」に設定されている。ここで、『D』とは、搬送方向における最小のドットピッチ(つまり、媒体Sに形成されるドットの最高解像度での間隔)である。また、『k』は、1以上の整数である。例えば、ノズルピッチが120dpi(1/120インチ)であって、搬送方向のドットピッチが360dpi(1/360インチ)である場合、k=3である。各ノズル列211C、211M、211Y、211Kは、ヘッド21の移動方向(走査方向)に沿って相互に間隔をあけて平行に配置されている。各ノズル♯1〜♯180には、インク滴を吐出するための駆動素子としてピエゾ素子(図示外)が設けられている。
ピエゾ素子は、その両端に設けられた電極間に所定時間幅の電圧を印加すると、電圧の印加時間に応じて伸張し、インクの流路の側壁を変形させる。これによって、インクの流路の体積がピエゾ素子の伸縮に応じて収縮し、この収縮分に相当するインクが、インク滴となって各色のノズル列211C、211M、211Y、211Kの各ノズル♯1〜♯180から吐出される。
<駆動回路>
図7Bは、各ノズル♯1〜♯180の駆動回路220を示したものである。この駆動回路220は、同図に示すように、原駆動信号発生部221と、複数のマスク回路222とを備えている。原駆動信号発生部221は、各ノズル♯1〜♯180に共通して用いられる原駆動信号ODRVを生成する。この原駆動信号ODRVは、一画素分の主走査期間内(キャリッジ41が一画素の間隔を横切る時間内)において、図中下部に示すように、第1パルスW1と第2パルスW2の2つのパルスを含む信号である。原駆動信号発生部221で生成された原駆動信号ODRVは、各マスク回路222に出力される。
マスク回路222は、ヘッド21のノズル♯1〜♯180をそれぞれ駆動する複数のピエゾ素子に対応して設けられている。各マスク回路222には、原駆動信号発生部221から原駆動信号ODRVが入力されるとともに、印刷信号PRT(i)が入力される。この印刷信号PRT(i)は、画素に対応する画素データであり、一画素に対して2ビットの情報を有する2値信号である。その各ビットは、それぞれ第1パルスW1と第2パルスW2とに対応している。マスク回路222は、印刷信号PRT(i)のレベルに応じて、原駆動信号ODRVを遮断したり通過させたりするためのゲートである。すなわち、印刷信号PRT(i)がレベル『0』のときには、原駆動信号ODRVのパルスを遮断する一方、印刷信号PRT(i)がレベル『1』のときには、原駆動信号ODRVの対応するパルスをそのまま通過させて実駆動信号DRVとして、各ノズル♯1〜♯180のピエゾ素子に向けて出力する。各ノズル♯1〜♯180のピエゾ素子は、マスク回路222からの実駆動信号DRVに基づき駆動してインクの吐出を行う。
<各信号波形>
図7Cは、原駆動信号発生部221の動作を示す原駆動信号ODRV、印刷信号PRT(i)、実駆動信号DRV(i)のタイミングチャートである。同図に示すように、原駆動信号ODRVは、各画素区間T1、T2、T3、T4において、第1パルスW1と第2パルスW2とを順に発生する。なお、画素区間とは、一画素分のキャリッジ41の移動区間と同じ意味である。
ここで、印刷信号PRT(i)が2ビットの画素データ『10』に対応しているとき、第1パルスW1のみが一画素区間の前半で出力される。これにより、ノズル♯1〜♯180から小さいインク滴が吐出され、媒体Sには小さいドット(小ドット)が形成される。また、印刷信号PRT(i)が2ビットの画素データ『01』に対応しているとき、第2パルスW2のみが一画素区間の後半で出力される。これにより、ノズル♯1〜♯180から中サイズのインク滴が吐出され、媒体Sには、中サイズのドット(中ドット)が形成される。また、印刷信号PRT(i)が2ビットの画素データ『11』に対応しているとき、第1パルスW1と第2パルスW2とが一画素区間で出力される。これにより、ノズル♯1〜♯180から大きいサイズのインク滴が吐出され、媒体Sには、大きいサイズのドット(大ドット)が形成される。以上説明したとおり、一画素区間における実駆動信号DRV(i)は、印刷信号PRT(i)の3つの異なる値に応じて互いに異なる3種類の波形を有するように整形され、これらの信号に基づいてヘッド21は、3種類のサイズのドットを形成し、また画素区間内にて吐出するインク量を調整することが可能である。また、画素区間T4のように、印刷信号PRT(i)が2ビットの画素データ『00』に対応しているときには、ノズル♯1〜♯180からインク滴が吐出されず、媒体には、ドットが形成されないことになる。
本実施形態に係るインクジェットプリンタ1では、このようなノズル♯1〜♯180の駆動回路220が、各ノズル列211C、211M、211Y、211Kごと、即ち、イエロ(Y)、マゼンタ(M)、シアン(C)、ブラック(K)の各色ごとに各々個別に設けられ、各ノズル列211C、211M、211Y、211Kの各ノズル♯1〜180ごとに個別にピエゾ素子の駆動が行われるようになっている。
===印刷動作===
次に前述したインクジェットプリンタ1の印刷動作について説明する。ここでは、「双方向印刷」を例にして説明する。図8は、SPC複合装置1の印刷動作の処理手順の一例を示したフローチャートである。ここでは、印刷動作は、制御部50がプログラムに従って、リニア式エンコーダ(リニア式エンコーダ符号板51および検出部52)やロータリー式エンコーダ56、紙検知センサ53などのセンサからの情報に基づき、搬送モータ15やキャリッジモータ42、ヘッド21の駆動回路220などを各々制御することにより実行される。
制御部50は、印刷処理を実行する際に、まず、給紙処理を行う(S102)。給紙処理は、印刷しようとする媒体Sをインクジェットプリンタ1内に供給し、印刷開始位置(頭出し位置とも言う)まで搬送する処理である。制御部50は、給紙ローラ13を回転させて、印刷しようとする媒体Sを搬送ローラ17Aまで送る。制御部50は、搬送ローラ17Aを回転させて、給紙ローラ13から送られてきた媒体Sを印刷開始位置(プラテン14の上方付近)に位置決めする。
次に、制御部50は、キャリッジモータ42を駆動して、キャリッジ41を媒体Sに対して相対的に移動させて媒体Sに対して印刷を施す印刷処理を実行する。ここでは、まず、キャリッジ41をガイドレール46に沿って一の方向に向かって移動させながら、ヘッド21からインクを吐出する往路印刷を実行する(S104)。制御部50は、キャリッジモータ42を駆動してキャリッジ41を移動させるとともに、ヘッド21の駆動回路220を駆動してヘッド21の各ノズル列211C、211M、211Y、211Kの各ノズル♯1〜♯180からインクを吐出する。ヘッド21から吐出されたインクは、媒体Sに到達して媒体S上にドットとして形成される。
このようにして印刷を行った後、次に、制御部50は、媒体Sを所定量だけ搬送する搬送処理を実行する(S106)。ここでは、制御部50は、搬送モータ15を駆動して搬送ローラ17Aを回転させて、媒体Sをヘッド21に対して相対的に搬送方向に所定量だけ搬送する。この搬送処理により、ヘッド21は、先ほどの印刷した領域とは異なる領域に印刷をすることが可能になる。
このようにして搬送処理を行った後、制御部50は、排紙すべきか否か排紙判断を実行する(S108)。ここで、制御部50は、印刷中の媒体Sに印刷すべき他のデータがなければ、排紙処理を実行する(S116)。一方、制御部50は、印刷中の媒体Sに印刷すべき他のデータがあれば、排紙処理は行わずに、復路印刷を実行する(S110)。この復路印刷は、キャリッジ41をガイドレール46に沿って先ほどの往路印刷とは反対の方向に移動させて印刷を行う。ここでも、制御部50は、キャリッジモータ42を先ほどとは逆に回転駆動させてキャリッジ41を移動させるとともに、ヘッド21の駆動回路220を駆動してヘッドの各ノズル列211C、211M、211Y、211Kの各ノズル♯1〜♯180からインクを吐出して印刷をする。
復路印刷を実行した後、搬送処理を実行し(S112)、その後、排紙判断を行う(S114)。ここで、印刷中の媒体Sに印刷すべき他のデータがあれば、排紙処理は行わずに、ステップS104に戻って、再度往路印刷を実行する(S104)。一方、印刷中の媒体Sに印刷すべき他のデータがなければ、排紙処理を実行する(S116)。
排紙処理を行った後、次に、印刷終了か否かを判断する印刷終了判断を実行する(S118)。ここでは、次に印刷すべき媒体Sがないかどうかチェックする。ここで、次に印刷すべき媒体Sがある場合には、ステップS102に戻り、再び給紙処理を実行して、印刷を開始する。一方、次に印刷すべき媒体Sがない場合には、印刷処理を終了する。
===制御部50の構成および処理===
以下に制御部50の構成および処理について説明する。ここでは、本実施形態の制御部50について、従来の制御部49の構成および処理と対比しながら説明する。まず、従来の制御部49の構成および処理について説明する。
<従来の構成>
(A)構成の概要
図9は、従来の制御部49の構成を示したブロック構成図である。従来の制御部49は、SPC複合装置1全体の制御を司るCPU90と、制御のためのプログラムを記憶したメモリ92と、スキャナ機能、プリント機能、ローカルコピー機能の各制御を司るASIC94と、CPU90から直接データを読み書き可能なSDRAM96と、入力手段としての操作パネル2とがCPUバス98によって繋がっている。ASIC94には、スキャナ部10、ヘッドユニット100、およびASIC94からデータの読み書きが可能なASIC用SDRAM102と、このASIC用SDRAM102をコントロールするSDRAMコントローラ103とが設けられている。この制御部49は、SPC複合装置1の各種制御を行うための制御部(コントローラ)となる。
ASIC94は、スキャナコントロールユニット104と、リサイズユニット106と、2値化処理ユニット108と、インターレース処理ユニット110と、イメージバッファユニット112と、バスコントローラ114と、ヘッドコントロールユニット116と、外部のホストコンピュータ140との入出力手段としてのUSBインターフェイス118と、スキャナ部10及びプリンタ部30が備える各モータやランプ等のドライバ(図示外)とを備えている。
また、ASIC用SDRAM102には、ラインバッファ120、リサイズバッファ122、インターレースバッファ124、イメージバッファ126、127がそれぞれ設けられている。ASIC94とSDRAMコントローラ103(ASIC用SDRAM102)との間では、データ転送の高速化を図るためにデータの転送単位を64ビットとする、いわゆるバースト転送が行われる。ASIC94内の各ユニット104、106、108、110、112、114およびSDRAMコントローラ103は、ローカルバス128を介して接続されている。
スキャナコントロールユニット104は、スキャナ部10が備える露光ランプ66、CCDセンサ72、スキャナ用キャリッジ60の駆動モータ77等を制御する。スキャナコントロールユニット104は、CCDセンサ72を介して読み込んだ画像データを送出する機能を有する。ここでは、R(レッド)、G(グリーン)、B(ブルー)の3色からなるRGB画像を送出する。スキャナコントロールユニット104は、原稿5から読み取った画像のデータをASIC用SDRAM102に割り振られたラインバッファ120に一旦格納する。そして、ラインバッファ120に格納された画像データには、ライン間補正処理が施される。このライン間補正処理とは、スキャナ部10に構造上発生するR、G、Bの各リニアセンサ間の読み取り位置のズレを補正する処理である。つまり、スキャナ部10が有するCCDセンサ72は、カラーセンサでありR(レッド)、G(グリーン)、B(ブルー)の3色に対し色毎に1ラインずつのリニアセンサを有している。これら3本のリニアセンサは、スキャナ用キャリッジ60の移動方向に平行に並べられているため、原稿5の同一ラインに照射された反射光を同時に受光することができない。すなわち、原稿5の同一ラインに照射された反射光が各リニアセンサに受光される際には、時間的なズレが生じることになる。このため、リニアセンサの配列に伴う遅延時間分だけ遅れて送られてくるデータを同期させるための処理である。スキャナコントロールユニット104は、このようなライン間補正処理が施された画像データを、多階調のRGB画像データ(例えば、256階調のRGB画像データ)として出力する。なお、ここでスキャナコントロールユニット104からは、スキャナ部10の読み取り解像度等に応じた所定の解像度、例えば、360dpi(横)×360dpi(縦)等の画像データが出力される。
リサイズユニット106は、所定のサイズの画像データを受け取り、その画像データのサイズを変更し、サイズ変更された画像データを送出する機能を有する。ここで、画像データのサイズとは、その画像の縦横の画素の数である。縦横の画素の数が多ければ画像は大きく、縦横の画素の数が少なければ画像は小さい。但し、実際に印刷される画像は、画素の数が多くても、印刷解像度に応じて大きさが異なる。例えば、同じ画素数であっても、200dpi×200dpiの画像データは、1440dpi×720dpiの画像データよりも大きい画像データである。すなわち、画像データのサイズの変更とは、解像度を変更することでもある。
2値化処理ユニット108は、送出された多階調のRGB画像データをCMYKの2値データ(又は2ビットデータ)に変換する、いわゆるハーフトーン処理を実行する。このとき、2値化処理ユニット108は、ASIC用SDRAM102内に格納されているルックアップテーブル136(LUT)に基づいて、多階調のRGB画像データをCMYKの2値データ(又は2ビットデータ)に変換する。このようにして2値化処理ユニット108により変換されて生成されたCMYKの2値データ(又は2ビットデータ)は、インターレース処理ユニット110へと送信される。
インターレース処理ユニット110は、2値化処理ユニットから送られてきたCMYKの2値データ(又は2ビットデータ)を、ASIC側SDRAM102に設けられたインターレースバッファ124に格納する。そして、インターレース処理ユニット110は、インターレースバッファ124に格納されたCMYKの2値データ(又は2ビットデータ)を、インターレース処理ユニット110内のSRAM130に所定のサイズ毎に読み出して、SRAM130上で、ノズル配列に対応させるべく並び替えてイメージバッファユニット112に送出する。
イメージバッファユニット112では、インターレース処理ユニット110から送出されたデータから、プリンタ用のキャリッジ41の移動毎の各ノズルにインクを吐出させるためのヘッド駆動データを生成する機能を有する。ここでイメージバッファユニット112は、SDRAM102上に設けられたイメージバッファ126、127にヘッド駆動データを格納する。イメージバッファ126、127には、それぞれプリンタ用のキャリッジ41が1回移動する毎のヘッド駆動データが格納される。
バスコントローラ114は、ASIC94に接続されたASIC用SDRAM102へのCPU90からのアクセスを可能とする機能を有している。制御部49においては、イメージバッファ126、127により生成されたヘッド駆動データに基づいてヘッドコントロールユニット116を駆動する場合等に利用されている。
ヘッドコントロールユニット116は、CPU90の制御によりヘッド駆動データに基づいてヘッド21を駆動し、ヘッド21の各ノズル♯1〜♯180からインクを吐出させる機能を有する。
(B)制御部内でのデータの流れ
《1》スキャナ機能時のデータの流れ
ASIC94のUSBインターフェイス118に接続されたホストコンピュータ140から、スキャナ部10による画像読み取り指令信号と、読み取り解像度、読み取り領域等の読み取り情報データとが制御部49に送信される。制御部49では、画像読み取り指令信号と読み取り情報データとに基づいて、スキャナコントロールユニット104が制御され、スキャナ部10による原稿5の読み取りが開始される。このとき、スキャナコントロールユニット104では、ランプ駆動ユニット、CCD駆動ユニット、スキャナ用キャリッジ移動駆動ユニット等が駆動され、所定の周期にてCCDセンサ72からRGBデータが読み込まれる。読み込まれたRGBデータは、ASIC用SDRAM102に設けられたラインバッファ120に一旦蓄えられ、R、G、Bの各データのライン間補正処理が施される。これにより、RGB画像データが生成される。生成されたRGB画像データは、USBインターフェース118を介してホストコンピュータ140に送出される。
《2》プリンタ機能時のデータの流れ
プリンタ機能時には、ホストコンピュータ140のプリンタドライバが画像データをヘッド駆動データに変換し、ヘッド駆動データがUSBインターフェース118から入力される。このヘッド駆動データは、例えば、インターレース方式の印刷をする場合には、印刷する画像の解像度とプリンタ用のキャリッジ41のノズル列211C、211M、211Y、211Kが有するノズル♯1〜♯180のピッチ及び数に対応させたラスタデータを抽出し、プリンタ用のキャリッジ41の移動毎に印刷する順に並び換え、ヘッドユニット100を駆動するための信号となるデータである。
ヘッド駆動データは、CPUバス98に接続されたSDRAM96に割り付けられたイメージバッファ132に記憶される。イメージバッファ132は、2つに分けられたメモリ領域(イメージバッファ133、134)を備えている。各イメージバッファ133、134は、プリンタ用のキャリッジ41の1回の移動により印刷するためのヘッド駆動データを記憶することができる容量を有する。そして、一方のイメージバッファ133に1回の移動分のデータが書き込まれると、ヘッドコントロールユニット116に転送される。このとき、一方のイメージバッファ133のイメージデータがヘッドコントロールユニット116に転送されると、他方のイメージバッファ134には次の移動の際に印刷するためのヘッド駆動データが記憶される。そして他方のイメージバッファ134に1回の移動分のデータが書き込まれると、ヘッドコントロールユニット116に転送され、前記一方のイメージバッファ133にイメージデータが書き込まれる。このように、2つのイメージバッファ133,134を用いて、ヘッド駆動データの書き込み、読み出しを交互に行いながらヘッドコントロールユニット116にてヘッド21が駆動されて印刷が実行される。
《3》コピー機能時のデータの流れ
次に、コピー機能時におけるデータの流れを説明する。コピー機能時には、原稿台にセットされた原稿が、スキャナ部10により読み込まれる。スキャナ部10により読み込まれた画像のデータは、スキャナコントロールユニット104を介してラインバッファ120に取り込まれる。ラインバッファ120に取り込まれたRGBデータは、前述したRGBのライン間補正処理が順次施されて、RGB画像データとしてスキャナコントロールユニット104から2値化処理ユニット108へと順次送り込まれる。
2値化処理ユニット108は、送られてきたRGB画像データをハーフトーン処理する。ここで、2値化処理ユニット108は、SDRAM102内のルックアップテーブル136(LUT)に基づいて、RGB画像データをCMYKの色毎の2値データに変換する。2値化処理ユニットにより変換されたCMYKの2値データは、インターレース処理ユニット110へと送られる。
インターレース処理ユニット110に送り込まれたCMYKの2値データは、ASIC側SDRAM102に設けられたインターレースバッファ124に格納される。インターレースバッファ124に格納されたCMYKの2値データは、インターレース処理ユニット110内のSRAM130に所定のサイズ毎に読み出されて、SRAM130上にてノズル配列に対応させるべく並び替えられて、インターレース処理ユニット110からイメージバッファユニット112へと送出される。
イメージバッファユニット112では、SRAM130の容量により細かくブロック化された画像データをイメージバッファ126、127にバースト転送する。ここで、イメージバッファユニット112は、プリンタ用のキャリッジ41の移動毎の各ノズル♯1〜♯180にインクを吐出させるためのヘッド駆動データを生成する。
イメージバッファ126、127のヘッド駆動データは、CPU90に制御されてバスコントローラ114を介してCPU90に読み込まれ、CPU90によりヘッドコントロールユニット116に転送される。ヘッドコントロールユニット116によりヘッド駆動データに基づいてヘッドユニット100が駆動されて、媒体Sに画像が印刷される。
通常のコピー動作時には、RGBの画像データがスキャナコントロールユニット104によって読み込まれてからCMYKのヘッド駆動データがイメージバッファ126、127に書き込まれるまでの間、CPU90による演算を必要とするレイアウト処理は行われていない。つまり、RGB画像データをCMYKのヘッド駆動データへ変換する処理は、CPU90を必要とせず、ASIC94を中心に処理されている。そのため、この処理の間、ASIC用SDRAM102とCPU用のSDRAM96との間でデータを受け渡さなくても良い。すなわち、ローカルバス128のみを用いてASIC94とASIC用SDRAM102との間でデータが送出されるので、CPUバス98はほとんど用いられない。このため、処理が早くなり、コピー速度を高めることができる。
<本実施形態の制御部>
(A)構成の概要
図10は、本実施形態の制御部50の構成を示したブロック構成図である。従来の制御部50は、従来の場合と同様に、SPC複合装置1全体の制御を司るCPU90と、制御のためのプログラムを記憶したメモリ92と、スキャナ機能、プリント機能、ローカルコピー機能の各制御を司るASIC95と、CPU90から直接データを読み書き可能なSDRAM96と、入力手段としての操作パネル2とがCPUバス98によって接続されている。ASIC95には、スキャナ部10、ヘッドユニット100、およびASIC95がデータの読み書きが可能なASIC用SDRAM102と、このASIC用SDRAM102をコントロールするSDRAMコントローラ103とが設けられている。つまり、この制御部50は、SPC複合装置1の各種制御を行うための制御部(コントローラ)となっている。ただし、ここで搭載されるASIC95は、従来のASIC94と構成が異なっている。このASIC95の構成について詳しく説明する。
ASIC95は、同図に示すように、従来と同様、スキャナコントロールユニット104と、イメージバッファユニット112と、バスコントローラ114と、ヘッドコントロールユニット116と、USBインターフェイス118とを備えている。この他に、ASIC95は、従来のリサイズユニット106、2値化処理ユニット108およびインターレースユニット110に代えて、色変換処理ユニット180と、多値化処理ユニット182と、ドット形成用データ生成ユニット184とを備えている。これら色変換処理ユニット180、多値化処理ユニット182およびドット形成用データ生成ユニット184は、従来のリサイズユニット106、2値化処理ユニット108およびインターレースユニット110とは異なる処理を行う。一方、スキャナコントロールユニット104、バスコントローラ114、ヘッドコントロールユニット116およびUSBインターフェイス118については、従来の場合と同様の処理を行う。
なお、ASIC95に設けられた各ユニット、即ちスキャナコントロールユニット104やイメージバッファユニット112と、バスコントローラ114、ヘッドコントロールユニット116、USBインターフェイス118、色変換処理ユニット180、多値化処理ユニット182、ドット形成用データ生成ユニット184は、それぞれ各種処理回路により構成されたもので、ハードウェアにより実現されたものである。
また、多値化処理ユニット182は、「多値化処理部」に相当し、ドット形成用データ生成ユニット184は、「ドット形成用データ生成部」に相当する。
また、ASIC用SDRAM102には、従来と同様、ラインバッファ120と、ルックアップテーブル136(LUT)と、イメージバッファ126、127とが設けられている。この他に、ASIC用SDRAM102には、従来のリサイズバッファ122およびインターレースバッファ124に代えて、多値階調値データバッファ188と、ドット形成用データバッファ190とが設けられている。以下に、色変換処理ユニット180、多値化処理ユニット182およびドット形成用データ生成ユニット184について詳しく説明する。
色変換処理ユニット180は、スキャナコントロールユニット104から出力された所定の解像度(例えば、360dpi(横)×360dpi(縦))のRGB画像データを、プリンタ部30が有するインクの色に対応したCMYK色空間により表されるCMYK画像データに変換する処理を行う。ここで、色変換処理ユニット180は、RGB画像データの各画素の各色(ここでは、R(レッド)、G(グリーン)およびB(ブルー)の3色)の階調値と、CMYK画像データの各画素の各色(ここでは、例えば、C(シアン)、M(マゼンダ)、Y(イエロ)およびK(ブラック)の4色)の階調値とを対応づけた色変換テーブルLUTを使用して色変換処理を行う。この色変換処理によって、C(シアン)、M(マゼンダ)、Y(イエロ)およびK(ブラック)の各色256階調のCMYK画像データが生成される。色変換処理ユニット180は、スキャナコントロールユニットから送られてきたRGB画像データに対して1画素ずつ順次色変換処理を行って、1画素ずつCMYK画像データを多値化処理ユニット182へと送出する。
多値化処理ユニット182は、色変換処理ユニット180により生成されたCMYK画像データの各画素の各色の階調値をそれぞれ多値化処理して多値階調値データに変換する。この変換にあって、多値化処理ユニット182は、CMYK画像データの各画素の各色の階調値を各画素の各色毎にそれぞれ、媒体Sに印刷する際の解像度(出力解像度)に応じて多値階調値データに変換する。ここで行われる多値化処理については、後で詳しく説明する。この多値化処理によって生成された多値階調値データは、多値化処理ユニット182によって、ASIC用SDRAM102に設けられた多値階調値データバッファ188に格納されるか、あるいは、多値化処理ユニット182からドット形成用データ生成ユニット184へと直接出力される。なお、このように多値化処理ユニット182によって生成された多値階調値データが、ASIC用SDRAM102の多値階調値データバッファ188に格納される場合と、多値化処理ユニット182からドット形成用データ生成ユニット184へと直接出力される場合とがある点については、後で詳しく説明する。
ドット形成用データ生成ユニット184は、多値化処理ユニット182により生成された多値階調値データを多値階調値データバッファ188または多値化処理ユニット182から取得する。そして、ドット形成用データ生成ユニット184は、その取得した多値階調値データに基づき、媒体Sに印刷される画像(出力画像)のドット形成用データを生成する。ここで行われるドット形成用データの生成処理については、後で詳しく説明する。ドット形成用データ生成ユニット184は、生成したドット形成用データを、ASIC用SDRAM102に設けられたドット形成用データバッファ190に格納する。
ドット形成用データバッファ190に格納されたドット形成用データは、イメージバッファユニット112により読み取られる。イメージバッファユニット112は、ドット形成用データバッファ190から取得したドット形成用データを、イメージバッファ126、127に転送して、プリンタ用のキャリッジ41の移動毎の各ノズルにインクを吐出させるためのヘッド駆動データを生成する。イメージバッファ126、127には、それぞれプリンタ用のキャリッジ41が1回移動する毎のヘッド駆動データが格納される。
これらイメージバッファ126、127に格納されたヘッド駆動データは、従来の場合と同様に、バスコントローラ114を介してCPU90に読み込まれ、CPU90によりヘッドコントロールユニット116に転送される。
(B)制御部内でのデータの流れ
《1》スキャナ機能時のデータの流れ
スキャナ機能時のデータの流れについては、従来と同様である。すなわち、ホストコンピュータ140から、スキャナ部10による画像読み取り指令信号と、読み取り解像度、読み取り領域等の読み取り情報データとが制御部49に送信されると、制御部50は、画像読み取り指令信号と読み取り情報データとに基づき、スキャナ部10により原稿5の読み取りを開始する。このとき、スキャナコントロールユニット104では、CCDセンサ72からRGBデータが読み込まれる。読み込まれたRGBデータは、ASIC用SDRAM102に設けられたラインバッファ120に一旦蓄えられ、R、G、Bの各データのライン間補正処理が施され、その後、RGB画像データとして、USBインターフェース118を介してホストコンピュータ140に送出される。
《2》プリンタ機能時のデータの流れ
プリンタ機能時のデータの流れについては、従来と同様である。すなわち、ホストコンピュータから送られてきたヘッド駆動データは、CPUバス98に接続されたSDRAM96に割り付けられたイメージバッファ132に記憶される。各イメージバッファ133、134は、プリンタ用のキャリッジ41の1回の移動により印刷するためのヘッド駆動データを記憶することができる容量を有し、各イメージバッファ133、134に格納されたヘッド駆動データは、ヘッドコントロールユニット116に転送される。ヘッドコントロールユニット116は、転送されてきたヘッド駆動データに基づき、ヘッド21を駆動して印刷処理を実行する。
《3》コピー機能時のデータの流れ
コピー機能時においては、次のようなデータの流れとなる。コピー機能時には、スキャナ部10により原稿台11に置かれた原稿5の画像が読み取られる。スキャナコントロールユニット10は、スキャナ部10により読み取られた画像データに対して、ライン間補正処理等を施してRGB画像データとして色変換処理ユニット180へと送出する。
色変換処理ユニット180へと送られてきたRGB画像データは、色変換処理ユニット180により色変換テーブルLUTの参照によりCMYK画像データに変換される。色変換処理ユニット180により生成されたCMYK画像データは、多値化処理ユニット182へと送られる。
多値化処理ユニット182に送られてきたCMYK画像データは、多値化処理ユニット182におり多値化処理されて多値階調値データに変換される。この変換により生成された多値階調値データは、多値化処理ユニット182によりASIC用SDRAM102上の多値階調値データバッファ188に格納されるか、あるいは、多値化処理ユニット182からドット形成用データ生成ユニット184へと直接送信される。
ドット形成用データ生成ユニット184は、多値階調値データバッファ188または多値化処理ユニット182から多値階調値データを取得する。ドット形成用データ生成ユニット184により取得された多値階調値データは、順次、媒体Sに印刷される画像(出力画像)のドット形成用データに変換される。この変換により生成されたドット形成用データは、ASIC用SDRAM102上のドット形成用データバッファ190に格納される。
ドット形成用データバッファ190に格納されたドット形成用データは、イメージバッファユニット112により順次読み取られ、イメージバッファユニット112によりイメージバッファ126、127にヘッド駆動データとして格納される。イメージバッファ126、127に格納されたヘッド駆動データは、バスコントローラ114を介してCPU90に読み込まれる。CPU90により読み込まれたヘッド駆動データは、ヘッドコントロールユニット116へと転送される。ヘッドコントロールユニット116へと転送されたヘッド駆動データは、順次ヘッド21へと送出されて、印刷処理が実行される。
===多値化処理ユニット===
以下に多値化処理ユニット182により実行される多値化処理について説明する。
<多値化処理>
多値化処理ユニット182は、色変換処理ユニット180により生成されたCMYK画像データの各画素の各色の階調値をそれぞれ多値化処理して多値階調値データに変換する。この変換にあっては、多値化処理ユニット182は、CMYK画像データの各画素の各色の階調値を各画素の各色毎にそれぞれ、媒体Sに印刷する際の解像度(出力解像度)に応じて多値階調値データに変換する。
図11は、このときの多値化処理ユニット182の処理手順の一例を説明したものである。多値化処理ユニット182は、同図にて説明するように、まず、CMYK画像データの各画素の階調値と、各画素の分類番号とを取得する(S150)。ここで、分類番号については、後で詳しく説明する。次に、多値化処理ユニット182は、ステップS152へと進み、取得した階調値と分類番号とに基づき、多値階調値データを取得する。ここで、多値化処理ユニット182は、多値階調値データが分類番号別に各階調値にそれぞれ対応付けられた多値化テーブルを用いて、多値階調値データを取得する。多値化テーブルについては、後で詳しく説明する。そして、多値化処理ユニット182は、取得した多値階調値データを、CMYK画像データの画素の階調値に対応する多値階調値データとして出力する(S154)。このようにして変換処理を終了した後、多値化処理ユニット182は、次に変換すべき画素がないかどうかチェックする(S156)。ここで、次に変換すべき画素がある場合には、多値化処理ユニット182は、ステップS150へと戻り、再度、変換対象となる画素の階調値について、多値階調値データに変換する処理を実行する。このような処理を多値化処理ユニット182は、変換すべき画素がなくなるまで実行する。次に変換すべき画素がない場合には、多値化処理ユニット182は、処理を速やかに終了する。
<多値化テーブル>
図12Aは、画素の階調値と分類番号とに基づき、多値階調値データを取得する際に使用される多値化テーブルの一例を概念的に示した説明図である。多値化テーブルは、同図に示すように、多値階調値データが画素の分類番号毎にそれぞれ画素の階調値別に各々対応付けられて設定されたテーブルである。多値化テーブルは、例えば、同図に示すように、縦方向に『画素の分類番号』が、横方向に『画素の階調値』が設定され、『分類番号』と『階調値』とからそれぞれ対応する多値階調値データを導き出せるようになっている。ここで、『階調値』は、『0』〜『255』までの256階調にて表されている。また、『分類番号』は、CMYK画像データの各画素ごとにそれぞれ割り振られる番号であり、ここでは、『1』〜『1024』の番号が割り振られている。多値階調値データは、これら『0』〜『255』の各階調値と、『1』〜『1024』の各分類番号とに応じて、『0』〜『31』の値を取るようになっている。多値階調値データは、画素の階調値が増加するに従って段階的に増加するようになっている。
本実施形態では、このような多値化テーブルに関するデータがASIC95側のSDRAM102に格納されている。多値化処理ユニット182は、色変換処理ユニット180から送られてきたCMYK画像データの各画素の各色の階調値を多値化処理する際に、ASIC95側のSDRAM102に格納された多値化テーブルを参照して、多値階調値データを生成する。
なお、ASIC95側のSDRAM102に格納される多値化テーブルに関するデータは、例えば、SPC複合装置1に搭載されたROM92等の不揮発性メモリに格納されていて、多値化処理ユニット182が多値化処理を実行する際に、ROM92等の不揮発性メモリから読み出されて、ASIC95側のSDRAM102に格納される。
<多値化段数>
図12Bは、画素の階調値が増加するに従って多値階調値データが段階的に増加していく様子を例示した説明図である。ここでは、同図に示すように、横軸に画素の階調値を取り、縦軸に多値階調値データを取った折れ線グラフにて、画素の階調値に対する多値階調値データを示している。分類番号N1〜N5は、それぞれ異なる分類番号を表す。これら分類番号N1〜N5に対応する5つの画素についての多値化結果を示している。なお、ここで、各分類番号N1〜N5の折れ線が重なって判別し難くなることを避けるために、多値階調値データの原点位置を縦軸方向に少しずつ、ずらして表示している。
図中、太い実線で示した分類番号N1について説明する。画素の階調値が『0』〜『4』の範囲では、多値階調値データは、「0」であるが、画素の階調値が『5』〜『20』の範囲では、多値階調値データは、「1」に増加する。また、画素の階調値が『21』〜『42』の範囲では、多値階調値データは「2」に増加する。また、画素の階調値が『43』〜『69』の範囲では、多値階調値データは「3」に増加する。このように、画素の階調値が増加するに従って、多値階調値データも段階的に増加する。そして、最終的には、多値階調値データは「15」まで増加する。すなわち、分類番号N1については、階調値『0』〜『255』の範囲を取り得る画素の階調値を、階調値『0』〜『15』までの16段階に多値化(言わば、16値化)していることになる。
同様に、図中で太い破線で示した分類番号N2や、太い一点鎖線で示した分類番号N3については、階調値『0』〜『255』の範囲を取り得る画素の階調値を、階調値『0』〜『17』までの18段階に多値化(言わば、18値化)している。更に、細い実線で示した分類番号N4および細い一点鎖線で示した分類番号N5については、画素の階調値を階調値『0』〜『20』までの21段階に多値化(言わば、21値化)していることになる。このように、多値化処理ユニット182では、各画素の多値化の段数(多値化の結果として取り得る状態数)が同じではなく、画素の分類番号に応じて固有の段数で多値化されている。この結果、同じ画素の階調値を多値化した場合でも、画素の分類番号が異なれば、多値化の段数が異なる。このため、画素の階調値が同じであっても、異なる多値階調値データに変換されることになる。
また、多値化段数が同じであったとしても、同じ多値階調値データが得られるわけではない。例えば、図12Bに示した分類番号N2と、分類番号N3とを比較すれば明らかなように、これら画素についての多値化段数は、いずれも18段であるが、多値階調値データが切り換わる画素の階調値は多くの場合、一致していない。分類番号N4と分類番号N5とについても同様に、これらの画素の多値化段数は、いずれも21段であるが、多値階調値データが切り換わる画素の階調値は一致していないことが多い。このことから、例え画素の多値化段数が同じでも、分類番号が異なれば、異なる多値階調値データが得られることになる。
このように多値階調値データは、分類番号によってそれぞれ異なるものの、多値化の段数は15〜21程度となっている。つまり、多値化の段数は、多く見積もっても30を越えることはないと考えられる。従って、多値階調値データは、5ビットのデータ量があれば十分に表現することが可能である。
<分類番号の設定>
ここで、CMYK画像データの各画素への分類番号の設定方法について説明する。CMYK画像データの各画素に対する分類番号の設定方法は、媒体Sに画像を印刷する際の解像度(出力解像度)に応じて異なる。つまり、媒体Sに画像を印刷する際の解像度(出力解像度)が異なると、CMYK画像データの各画素への分類番号の割り付け方が異なる。
本実施形態では、媒体Sに画像を印刷する際の解像度(出力解像度)として、7種類の解像度がある。つまり、『1×1モード』と、『2×1モード』と、『1×2モード』と、『2×2モード』と、『4×2モード』と、『2×4モード』と、『4×4モード』との7種類である。
(1)出力解像度
ここで、『1×1モード』とは、CMYK画像データの解像度と同じ解像度にて媒体Sに画像を印刷するモードである。つまり、例えば、360dpi(横)×360dpi(縦)の解像度のCMYK画像データに基づいて画像を印刷する場合、印刷される画像の解像度は、360dpi(横)×360dpi(縦)の解像度となる。また、『2×1モード』とは、CMYK画像データの横方向の解像度を2倍にして媒体Sに画像を印刷するモードである。つまり、例えば、360dpi(横)×360dpi(縦)の解像度のCMYK画像データに基づいて画像を印刷する場合、印刷される画像の解像度は、720dpi(横)×360dpi(縦)の解像度となる。なお、縦方向の解像度については、CMYK画像データと等しい解像度にて画像を印刷する。
また、『1×2モード』とは、CMYK画像データの縦方向の解像度を2倍にして媒体Sに画像を印刷するモードである。つまり、例えば、360dpi(横)×360dpi(縦)の解像度のCMYK画像データに基づき画像を印刷する場合、印刷される画像の解像度は、360dpi(横)×720dpi(縦)の解像度となる。なお、横方向の解像度については、CMYK画像データと等しい解像度にて画像を印刷する。
また、『2×2モード』とは、CMYK画像データの横方向および縦方向の解像度を2倍にして媒体Sに画像を印刷するモードである。つまり、例えば、360dpi(横)×360dpi(縦)の解像度のCMYK画像データに基づき画像を印刷する場合、印刷される画像の解像度は、720dpi(横)×720dpi(縦)の解像度となる。また、『4×2モード』とは、CMYK画像データの横方向の解像度を4倍に、またCMYK画像データの縦方向の解像度を2倍にして媒体Sに画像を印刷するモードである。つまり、例えば、360dpi(横)×360dpi(縦)の解像度のCMYK画像データに基づき画像を印刷する場合、印刷される画像の解像度は、1440dpi(横)×720dpi(縦)の解像度となる。
また、『2×4モード』とは、CMYK画像データの横方向の解像度を2倍に、またCMYK画像データの縦方向の解像度を4倍にして媒体Sに画像を印刷するモードである。つまり、例えば、360dpi(横)×360dpi(縦)の解像度のCMYK画像データに基づき画像を印刷する場合、印刷される画像の解像度は、720dpi(横)×1440dpi(縦)の解像度となる。また、『4×4モード』とは、CMYK画像データの横方向および縦方向の解像度を4倍にして媒体Sに画像を印刷するモードである。つまり、例えば、360dpi(横)×360dpi(縦)の解像度のCMYK画像データに基づき画像を印刷する場合、印刷される画像の解像度は、1440dpi(横)×1440dpi(縦)の解像度となる。
(2)解像度別分類番号設定
図13A〜図13Eは、各出力解像度に応じた分類番号の設定方法についてそれぞれ説明したものである。図13Aは、『1×1モード』、即ち、ここでは、360dpi(横)×360dpi(縦)の解像度にて媒体Sに画像を印刷する場合を示す。図13Bは、『2×1モード』、即ち、ここでは、720dpi(横)×360dpi(縦)の解像度にて媒体Sに画像を印刷する場合を示す。図13Cは、『1×2モード』、即ち、ここでは、360dpi(横)×720dpi(縦)の解像度にて媒体Sに画像を印刷する場合を示す。図13Dは、『2×2モード』、即ち、ここでは、720dpi(横)×720dpi(縦)の解像度にて媒体Sに画像を印刷する場合を示す。図13Eは、『4×2モード』、即ち、ここでは、1440dpi(横)×720dpi(縦)の解像度にて媒体Sに画像を印刷する場合を示す。なお、ここで、『2×4モード』および『4×4モード』については、『4×2モード』の場合と同様の設定処理を行うものとする。
『1×1モード』の場合には、図13Aに示すように、CMYK画像データを構成する画素のうち、相隣接する8つの画素を1つの単位としてそれぞれ分類番号を設定する。つまり、CMYK画像データを構成する画素のうちの相隣接する8つの画素が、全て同じ分類番号に設定される。ここでは、横方向に4画素、縦方向に2画素、計8画素を1つの単位としてこれら8つの画素についてそれぞれ同じ分類番号を割り当てる。つまり、ここでは、同図に示すように、CMYK画像データの左上隅角部に位置する8つの画素は、例えば、分類番号『1』に設定される。
一方、これら分類番号『1』が設定された8つの画素の図中右隣りの8つの画素(横方向4画素、縦方向2画素)については、例えば、分類番号『2』が設定される。また、分類番号『1』が設定された8つの画素の図中下側に隣接する8つの画素(横方向4画素、縦方向2画素)については、例えば、分類番号『33』が設定される。また、分類番号『1』が設定された8つの画素の図中右下の8つの画素(横方向4画素、縦方向2画素)については、例えば、分類番号『34』が設定される。
また、『2×1モード』の場合には、図13Bに示すように、CMYK画像データを構成する画素のうち、相隣接する4つの画素を1つの単位としてそれぞれ分類番号を設定する。つまり、CMYK画像データを構成する画素のうちの相隣接する4つの画素が、全て同じ分類番号に設定される。ここでは、横方向に2画素、縦方向に2画素、計4画素を1つの単位としてこれら4つの画素についてそれぞれ同じ分類番号を設定する。つまり、ここでは、同図に示すように、CMYK画像データの左上隅角部に位置する4つの画素は、例えば、分類番号『1』に設定される。
一方、これら分類番号『1』が設定された4つの画素の図中右隣りの4つの画素(横方向2画素、縦方向2画素)については、例えば、分類番号『2』が設定される。さらに、図中右隣りの4つの画素(横方向2画素、縦方向2画素)には、例えば、分類番号『3』が設定される。また、分類番号『1』が設定された4つの画素の図中下側に隣接する4つの画素(横方向2画素、縦方向2画素)については、例えば、分類番号『33』が設定される。このようにして、CMYK画像データを構成する他の画素についても同様に、相隣接する4つの画素を1つの単位としてそれぞれ分類番号が設定される。
また、『1×2モード』の場合には、図13Cに示すように、CMYK画像データを構成する画素のうち、相隣接する4つの画素を1つの単位としてそれぞれ分類番号を設定する。つまり、CMYK画像データを構成する画素のうちの相隣接する4つの画素が、全て同じ分類番号に設定される。ここでは、横方向に4画素、縦方向に1画素、計4画素を1つの単位としてこれら4つの画素について各々同じ分類番号を設定する。つまり、ここでは、同図に示すように、CMYK画像データの左上隅角部に位置する4つの画素は、例えば、分類番号『1』に設定される。
一方、これら分類番号『1』が設定された4つの画素の図中右隣りの4つの画素(横方向4画素、縦方向1画素)については、例えば、分類番号『2』が設定される。また、分類番号『1』が設定された4つの画素の図中下側に隣接する4つの画素(横方向4画素、縦方向1画素)については、例えば、分類番号『33』が設定される。さらに、分類番号『33』が設定された4つの画素の図中下側に隣接する4つの画素(横方向4画素、縦方向1画素)は、例えば、分類番号『5』に設定される。さらに、図中下側に隣接する4つの画素(横方向4画素、縦方向1画素)については、例えば、分類番号『97』に設定される。このようにして、CMYK画像データを構成する他の画素についても同様に、相隣接する4つの画素を1つの単位としてそれぞれ分類番号が設定される。
また、『2×2モード』の場合には、図13Dに示すように、CMYK画像データを構成する画素のうち、相隣接する2つの画素を1つの単位としてそれぞれ分類番号を設定する。つまり、CMYK画像データを構成する画素のうち、相隣接する2つの画素が、全て同じ分類番号に設定される。ここでは、横方向に2画素、縦方向に1画素、計2画素を1つの単位としてこれら2つの画素について各々同じ分類番号を設定する。つまり、ここでは、同図に示すように、CMYK画像データの左上隅角部に位置する2つの画素は、例えば、例えば、分類番号『1』に設定される。
一方、これら分類番号『1』が設定された2つの画素の図中右隣りの2つの画素(横方向2画素、縦方向1画素)については、例えば、分類番号『2』が設定される。さらに、これら分類番号『2』が設定された2つの画素の図中右隣りの2つの画素(横方向2画素、縦方向1画素)には、例えば、分類番号『3』が設定される。さらに、その図中右隣りの2つの画素(横方向2画素、縦方向1画素)には、例えば、分類番号『4』が設定される。また、分類番号『1』が設定された2つの画素の図中下側に隣接する2つの画素(横方向2画素、縦方向1画素)については、例えば、分類番号『33』が設定される。さらに、分類番号『33』が設定された2つの画素の図中下側に隣接する2つの画素(横方向2画素、縦方向1画素)には、例えば、分類番号『5』が設定される。さらに、図中下側に隣接する2つの画素(横方向2画素、縦方向1画素)については、例えば、分類番号『97』が設定される。このようにして、CMYK画像データを構成する他の画素についても同様に、相隣接する2つの画素を1つの単位としてそれぞれ分類番号が設定される。
また、『4×2モード』の場合には、図13Eに示すように、CMYK画像データを構成する画素ごとにそれぞれ異なる分類番号を設定する。つまり、ここでは、同図に示すように、CMYK画像データの左上隅角部に位置する画素には、例えば、分類番号『1』が設定される。また、この画素に隣接する他の画素には、別の分類番号が設定される。つまり、例えば、分類番号『1』が設定された画素の図中右隣りの画素には、例えば、分類番号『2』が設定される。また、分類番号『2』が設定された画素の図中右隣りの画素には、例えば、分類番号『3』が設定される。またさらに、分類番号『3』が設定された画素の図中右隣りの画素には、例えば、分類番号『4』が設定される。
一方、分類番号『1』が設定された画素の図中下側に隣接した画素には、例えば、分類番号『33』が設定される。また、分類番号『33』が設定された画素の図中下側に隣接した画素には、例えば、分類番号『65』が設定される。またさらに、分類番号『65』が設定された画素の図中下側に隣接した画素には、例えば、分類番号『97』が設定される。
なお、『2×4モード』および『4×4モード』の場合には、『4×2モード』の場合と同様に分類番号の設定を行う。
以上のように、CMYK画像データの各画素の分類番号の設定は、媒体Sに画像を印刷する際の解像度(出力解像度)に応じてそれぞれ異なる方法により実施する。このようにして設定された分類番号に基づき、多値化処理ユニット182は、色変換処理ユニット180により生成されたCMYK画像データの各画素の各色の階調値をそれぞれ多値化処理して多値階調値データを生成する。
<実際に実行される処理>
多値化処理ユニット182は、色変換処理ユニット182から送られてきたCMYK画像データを1画素ずつ順次、多値階調値データに変換する。図14は、このとき行われる処理のイメージを概略的に説明したものである。多値化処理ユニット182は、同図に示すように、CMYK画像データ上にて着目画素を変更しながら1画素ずつかつ1ラスタラインずつ順次変換処理を実施する。すなわち、多値化処理ユニット182は、同図に説明するように、まずはじめに、CMYK画像データ上の1行目のラスタラインL1の各画素について順次変換処理をした後、次に、2行目のラスタラインL2の各画素について順次変換処理を実施する。そして、2行目のラスタラインL2の各画素について変換処理が終了した後、次に多値化処理ユニット182は、3行目のラスタラインL3の各画素について変換処理を実施する。このようにして、多値化処理ユニット182は、色変換処理ユニット182から送られてくるCMYK画像データを1画素ずつ着目画素をずらしながら、1ラスタラインごとに順次変換処理をする。
<変換後の処理>
このようにしてCMYK画像データの各画素の階調値をそれぞれ多値階調値データに変換した後、多値化処理ユニット182は、変換により得られた多値階調値データをASIC95側のSDRAM102に設けられた多値階調値データバッファ188に格納するか、または、ドット形成用データ生成ユニット184に向けて直接出力する。ここでは、印刷される出力画像の解像度(出力解像度)が『1×1モード』の場合には、多値化処理ユニット182は、生成した多値階調値データをドット形成用データ生成ユニット184に直接出力する。他方、印刷時の出力画像の解像度(出力解像度)が『1×1モード』以外のモード、即ち、『2×1モード』、『1×2モード』、『2×2モード』、『4×2モード』、『2×4モード』または『4×4モード』の場合には、多値化処理ユニット182は、生成した多値階調値データをドット形成用データ生成ユニット184に直接出力せずに、SDRAM102の多値階調値データバッファ188に格納すべく、SDRAM102に向けて出力する。つまり、多値階調値データの出力先は、媒体Sに印刷される出力画像の解像度(出力解像度)に応じて異なっている。
なお、ここでは、多値階調値データがドット形成用データ生成ユニット184に直接出力される場合を『ダイレクトモード』と呼ぶ。また、多値階調値データが、SDRAM102に出力される場合を『SDRAMモード』と呼ぶ。これら『ダイレクトモード』および『SDRAMモード』については、後で詳しく説明する。
また、ここでは、『1×1モード』が「第2解像度」に相当する。また、『1×1モード』以外のモード、即ち、『2×1モード』、『1×2モード』、『2×2モード』、『4×2モード』、『2×4モード』または『4×4モード』が「第1解像度」に相当する。
===ドット形成用データの生成===
<ドット形成用データの生成>
ドット形成用データ生成ユニット184は、多値化処理ユニット182により生成された多値階調値データに基づき、媒体Sに印刷される画像(出力画像)のドット形成用データを生成する際に、多値階調値データをドット個数データに変換する。次に、ドット形成用データ生成ユニット184は、変換により得られたドット個数データに基づき、1以上の画素について個別にドット形成の有無を決定する。そして、ドット形成用データ生成ユニット184は、ドット形成の有無が決定された1以上の画素のうちの少なくとも一部の画素を、印刷される画像(出力画像)を構成する画素として、印刷される画像(出力画像)のドット形成用データを生成する。
図15は、このときのドット形成用データ生成ユニット184の処理手順の一例について示したものである。ドット形成用データ生成ユニット184は、同図にて説明するように、まず、多値階調値データと、それに対応する分類番号とを取得する(S202)。ここで、多値階調値データに対応する分類番号とは、多値階調値データが生成される際に使用された分類番号である。ドット形成用データ生成ユニット184は、次に、取得した多値階調値データと分類番号とに基づき、ドット個数データを取得する(S204)。このドット個数データとは、形成すべきドットの個数を表すデータである。本実施形態では、このドット個数データが、形成すべきドットの個数の他、形成すべき各ドットのサイズ(即ち「小ドット」、「中ドット」、「大ドット」)をも表すコード化されたデータとなっている。このドット個数データについては後で詳しく説明する。ドット形成用データ生成ユニット184は、ここで、ドット個数データが分類番号別に各多値階調値データにそれぞれ対応付けられたドット個数データ変換テーブルにより、ドット個数データを取得する。ドット個数データ変換テーブルについては、後で詳しく説明する。
次に、ドット形成用データ生成ユニット184は、取得したドット個数データに基づき、1以上の画素についてそれぞれドット形成の有無を決定する(S206)。本実施形態では、ドット形成用データ生成ユニット184は、取得したドット個数データに基づき、8つの画素についてそれぞれドットを形成すべきか否か決定するようになっている。このドット形成の有無の決定にあたっては、形成すべきドットのサイズも決定される。
そして次に、ドット形成用データ生成ユニット184は、ドット形成の有無が決定された1以上の画素(ここでは8つの画素)に基づき、ドット形成用データを生成する(S208)。具体的には、ドット形成の有無が決定された1以上の画素(ここでは8つの画素)の中から少なくとも一部の画素を切り出して、その切り出した画素を、印刷する画像を構成する画素のデータとして使用する。ここで、ドット形成の有無が決定された1以上の画素(ここでは8つの画素)は、全部の画素が切り出されて、印刷する画像を構成する画素のデータとして使用されてもよい。ドット形成の有無が決定された1以上の画素(ここでは8つの画素)の中から切り出される画素の数は、媒体Sに画像を印刷する際の解像度(出力解像度)に応じて異なる。このようにしてドット形成用データ生成ユニット184によりドット形成用データが生成される。
ある多値階調値データについてドット形成用データの生成を終了した後、ドット形成用データ生成ユニット184は、次に、処理すべき多値階調値データがないかどうかチェックする(S210)。ここで、次に処理すべき多値階調値データがある場合には、ドット形成用データ生成ユニット184は、ステップS202へと戻り、再度、処理対象となる多値階調値データについて、ドット形成用データを生成する処理を実行する。このような処理をドット形成用データ生成ユニット184は、処理すべき画素がなくなるまで実行する。処理すべき多値階調値データがなくなった場合には、ドット形成用データ生成ユニット184は、処理を速やかに終了する。
<ドット個数データ変換テーブル>
図16は、多値階調値データをドット個数データに変換する際に使用されるドット個数データ変換テーブルの一例を概念的に説明したものである。このドット個数データ変換テーブルは、同図に示すように、ドット個数データが各分類番号毎にそれぞれ多値階調値データ別に各々対応付けられて設定されたテーブルである。ドット個数データ変換テーブルは、例えば、同図に示すように、縦方向に『分類番号』が、また横方向に『多値階調値データ』が設定され、『分類番号』と『多値階調値データ』とからそれぞれ対応するドット個数データを導き出せるようになっている。なお、ここで、『分類番号』は、先に説明したように、『1』〜『1024』の番号にて表される。また、『多値階調値データ』は、『0』〜『31』までの数値にて表される。また、『ドット個数データ』は、ここでは、『0』〜『164』の数値にて表されるようになっている。ドット個数データは、これら『1』〜『1024』の分類番号と、『0』〜『31』の多値階調値データとに応じてそれぞれ個別に用意されている。
一例として、分類番号『1』について説明すると、多値階調値データ『0』に対して、ドット個数データは、「0」が設定されている。また、多値階調値データ『3』に対して、ドット個数データは、「3」が設定されている。また、多値階調値データ『14』に対して、ドット個数データは、「157」が設定されている。更に、多値階調値データ『15』に対して、ドット個数データは、「164」が設定されている。
本実施形態では、このようなドット個数データ変換テーブルに関するデータがASIC95側のSDRAM102に格納されている。ドット形成用データ生成ユニット184は、多値階調値データをドット個数データに変換する際に、ASIC95側のSDRAM102に格納されたドット個数データ変換テーブルに関するデータを参照する。
なお、ASIC95側のSDRAM102に格納されるドット個数データ変換テーブルに関するデータは、例えば、SPC複合装置1に搭載されたROM92等の不揮発性メモリに格納されていて、ドット形成用データ生成ユニット184がドット個数データに変換するにあたって、ROM92等の不揮発性メモリから読み出されて、ASIC95側のSDRAM102に格納される。
<ドット個数データ>
前述したように本実施形態のドット個数データは、形成すべきドットの個数の他、形成すべき各ドットのサイズ(即ち「小ドット」、「中ドット」、「大ドット」)をも表すコード化されたデータとなっている。
図17は、ドット個数データと、このドット個数データにより表される、形成すべきドットの個数およびサイズに関する情報との対応関係の一例を説明したものである。ドット個数データは、前述したように、『0』〜『164』の数値を取るようになっている。ドット個数データの各数値『0』〜『164』は、それぞれドット形成の有無と、ドットのサイズとを表すようになっている。つまり、ドット個数データ『0』は、「大ドット」、「中ドット」および「小ドット」につき共に形成しないことを表わす。また、ドット個数データ『1』は、「小ドット」のみを1個形成することを表す。また、ドット個数データ『2』は、「小ドット」のみを2個形成することを表す。また、ドット個数データ『3』は、「小ドット」のみを3個形成することを表す。また、ドット個数データ『160』は、「大ドット」を6個形成し、「中ドット」を2個形成し、「小ドット」は形成しないことを表す。また、ドット個数データ『161』は、「大ドット」のみを7個形成することを表わす。また、ドット個数データ『164』は、「大ドット」のみを8個形成することを表わす。
このようにドット個数データが表されているのは、次の理由からである。つまり、本実施形態では、取得したドット個数データに基づき、8つの画素についてそれぞれドットを形成すべきか否か決定するようになっているためである。要するに、8つの画素について形成され得るドット個数は、最大でも8個である。例えば、大ドットが4個、中ドットが3個、小ドットが2個といったドット個数の組合せは、ドット個数の合計が9個となって8個を越えてしまうので現実には発生し得ない。こうした点に着目すれば、現実に発生し得るドット個数の組合せは、それほど多くの種類はないと考えられる。実際に算出すれば、次のようになる。つまり、8つの画素についてみれば「大ドットを形成する」、「中ドットを形成する」、「小ドットを形成する」、「ドットを形成しない」の4つの状態を取り得る。従って、ドット個数の組合せは、これら4つの状態を、重複を許容して8回選択した時の組合せの数に等しくなるから、4H8(=4+8−1C8)によって求めることができる。このことから、最大でも165通りの組合せしか出現しないことになる。ここで、nHrは、n個の物の中から重複を許してr回選択するときの重複組合せ数を求める演算子である。また、nCrは、n個の物の中から重複を許さずにr回選択するときの組合せ数を求める演算子である。165通りの組合せであれば、8ビットあれば表現することができる。
一方、各ドットの個数をコード化せずに、そのまま表現しようとすると、大ドットの個数、中ドットの個数、小ドットの個数を表すためにそれぞれ4ビットずつ、合計では12ビットのデータ量が必要となる。したがって、現実に発生し得るドット個数の組合せにコード番号を設定しておけば、形成すべきドット個数の組合せを8ビットのデータで表すことができる。結局、ドット個数の組合せをコード化しておくことで、ドットの種類毎に形成個数を表した場合よりも、必要なデータ量を低減することが可能となる。
なお、もちろん、ドット個数データについては、前述した8ビットのデータの代わりに、各サイズのドットの個数をコード化せずにそのまま表現した12ビットのデータを用いても構わない。
<ドット形成の有無の決定>
ドット形成用データ生成ユニット184は、取得したドット個数データに基づき、本実施形態では、1以上の画素についてそれぞれドット形成の有無を決定する。本実施形態では、ドット個数データに基づき、8つの画素(横4画素、縦2画素)についてそれぞれドット形成の有無とともにドットのサイズがドット形成用データ生成ユニット184により決定される。ここで、8つの画素各々についてのドット形成の有無の決定は、順序値マトリックスに基づき行われる。なお、この順序値マトリックスは、「ドット形成順序データ」に相当する。
ここで、順序値マトリックスとは、8つの画素についてそれぞれドットが形成されるべき順番を設定したマトリックスのことである。この順序値マトリックスには、横4画素、縦2画素、計8つの画素についてそれぞれドットを形成すべき順番を表わす番号が設定されている。8つの画素についてそれぞれ設定されるドットの形成順番を表わす番号は、分類番号毎にそれぞれ個別に設定されている。つまり、順序値マトリックスは、分類番号毎にそれぞれ異なるマトリックスに設定されている。
<順序値マトリックス>
図18は、ここで使用される順序値マトリックスの一例を説明したものである。図18Aは、分類番号『1』に対応して設定される順序値マトリックスの一例を説明している。図18Bは、分類番号『2』に対応して設定される順序値マトリックスの一例を説明している。図18Cは、分類番号『3』に対応して設定される順序値マトリックスの一例を説明している。
分類番号『1』に対応する順序値マトリックスは、図18Aに示すように、ドット形成の有無が決定される8つの画素のうち、左上隅にある画素に対してドットの形成順番を表わす番号「1」が設定されている。このように左上隅の画素に数値「1」が設定されているのは、この画素が8つの画素のうち、1番目にドットが形成されるべきことを表している。なお、順序値マトリックスに設定されている、このような順番を表す数値を、順序値とも呼ぶ。また、8つの画素の中の右下隅の画素に順序値「2」が設定されているのは、この画素が8つの画素の中で2番目にドットが形成されるべきことを表している。このように、順序値マトリックスには、8つの画素についてそれぞれドットが形成される順番を示す順序値が設定されている。ここでは、画素の数が8つであるから、『1』〜『8』の番号が順序値として8つの画素にそれぞれ設定される。なお、8つの画素に設定される順序値は、それぞれ異なる。
一方、ここで、分類番号『2』に対応する順序値マトリックスは、図18Bに示すように、1番目にドットが形成されるべき画素(順序値「1」の画素)が、下段の左から2番目の画素となっている。また、2番目にドットが形成されるべき画素(順序値「2」の画素)は、右下隅の画素となっている。また、ここで、分類番号『3』に対応する順序値マトリックスは、図18Bに示すように、1番目にドットが形成されるべき画素(順序値「1」の画素)が、上段の右から2番目の画素となっている。また、2番目にドットが形成されるべき画素(順序値「2」の画素)は、左下隅の画素となっている。
本実施形態では、このような順序値マトリックスに関するデータがASIC95側のSDRAM102に格納されている。ドット形成用データ生成ユニット184は、取得したドット個数データに基づき、1以上の画素についてそれぞれドット形成の有無を決定する際に、ASIC95側のSDRAM102に格納された順序値マトリックスに関する情報を参照する。
なお、ASIC95側のSDRAM102に格納される順序値マトリックスに関する情報は、例えば、SPC複合装置1に搭載されたROM92等の不揮発性メモリに格納されていて、ドット形成用データ生成ユニット184がドット個数データに基づき、1以上の画素についてそれぞれドット形成の有無を決定するにあたって、ROM92等の不揮発性メモリから読み出されて、ASIC95側のSDRAM102に格納される。
<各画素への決定>
このように順序値マトリックスに関するデータを取得した後、ドット形成用データ生成ユニット184は、次に、8つの画素の中から、先ず初めに大ドットを形成する画素を決定する。大ドットは他のドットよりもドットが目立ち易いことから、できるだけドットが分散して形成されるように、ドットを形成する画素位置を他のドットに優先させて決定しておくことが望ましい。このため、先ずはじめに大ドットを形成する画素を決定する。ドットを形成する画素の決定に際しては、多値階調値データを変換して得られたドット個数データと、それに対応する順序値マトリックスとを使用する。
図19は、ドット個数データと順序値マトリックスとに基づき、8つの画素についてそれぞれドット形成の有無を決定する手順の一例を概念的に説明したものである。ここでは、ドット個数データが、大ドットを1個、中ドットを2個、小ドットを1個、それぞれ形成すべき旨を表すデータであり、順序値マトリックスが、図18Aに示した分類番号『1』に対応する順序値マトリックスである場合を例にして説明する。
前述したように、順序値マトリックスには、8つの画素についてそれぞれドットが形成される順番が設定されている。ここで、まずはじめに、[第1ステップ]にて、最も大きいドット、即ち大ドットが形成される画素が決定される。形成すべき大ドットの個数は1個であるから、大ドットが形成される画素は、順序値「1」が設定された画素のみとなる。すなわち、図中、8つの画素のうち、細かい斜線を付して表示した画素となる。
次に、[第2ステップ]にて、2番目に大きいドット、即ち中ドットが形成される画素が決定される。形成すべき中ドットの個数は2個であることから、中ドットが形成される画素は、順序値「2」が設定された画素と、順序値「3」が設定された画素との2つになる。すなわち、図中、8つの画素のうち、少し粗い斜線を付して表示した画素となる。
そして次に、[第3ステップ]にて、3番目に大きいドット、即ち小ドットが形成される画素が決定される。形成すべき小ドットの個数は1個であることから、小ドットが形成される画素は、順序値「4」が設定された画素のみとなる。すなわち、図中、8つの画素のうち、粗い斜線を付して表示した画素となる。
このようにして大ドット、中ドットおよび小ドットについてそれぞれ、8つの画素の中から形成すべき画素を決定する。これら大ドット、中ドットおよび小ドットについて形成すべき指示がない残りの画素については、ドットを形成しない画素とする。これによって、最終的には、図中の下部に示すようなドット配置となる。また、8つの画素それぞれについてドットを形成するためのデータは、同じく図中の下部に示すようなドットデータとなる。
<画素の切り出し>
次に、ドット形成用データ生成ユニット184は、このようにして形成すべきドットの位置とサイズを決定した8つの画素の中から少なくとも一部の画素を切り出して、その切り出した画素を、印刷する画像のドット形成用データの画素として使用する。ここで切り出される画素の数は、媒体Sに画像を印刷する際の解像度(出力解像度)に応じて異なる。また、8つの画素の中から切り出される画素の位置は、多値階調値データを生成する際に、CMYK画像データにおける画素の中の位置に応じて異なる。
(1)1×1モードの場合
『1×1モード』の場合には、媒体Sに画像を印刷する際の解像度(出力解像度)がCMYK画像データの解像度と同じであるから、切り出される画素の数は1つである。図20は、8つの画素の中から切り出される画素の位置について説明したものである。図20A〜図20Hは、切り出される画素の位置のパターンをそれぞれ示したものである。また、図21は、CMYK画像データにおける画素の位置について説明したものである。
図20Aは、8つの画素の中の左上隅に位置する画素を切り出す場合について示したものである。図20Bは、8つの画素の中の上段の左から2番目に位置する画素を切り出す場合について示したものである。図20Cは、8つの画素の中の上段の右から2番目に位置する画素を切り出す場合について示したものである。図20Dは、8つの画素の中の右上隅に位置する画素を切り出す場合について示したものである。図20Eは、8つの画素の中の左下隅に位置する画素を切り出す場合について示したものである。図20Fは、8つの画素の中の下段の左から2番目に位置する画素を切り出す場合について示したものである。図20Gは、8つの画素の中の下段の右から2番目に位置する画素を切り出す場合について示したものである。図20Hは、8つの画素の中の右下隅に位置する画素を切り出す場合について示したものである。
図20Aに示すように、8つの画素の中の左上隅に位置する画素が切り出されるのは、多値階調値データを生成する際にCMYK画像データにおいて参照される画素の位置が、図21において『(1)』で示された位置、即ち同一の分類番号が設定される画素の中の左上隅の位置である場合である。つまり、ここでは、図21に示す各分類番号『1』、『2』、『33』、『34』が設定された4画素(横)×2画素(縦)の8つの画素の中の左上隅に位置する画素の階調値を多値化処理して得られた多値階調値データに基づきドット形成用データを生成する場合に、図20Aに示すような画素の切り出し方を実行する。ここでは、このような切り出し方によって、「11」という画素データをドット形成用データとして取得する。
また、図20Bに示すように、8つの画素の中の上段の左から2番目に位置する画素が切り出されるのは、多値階調値データを生成する際にCMYK画像データにおいて参照される画素の位置が、図21において『(2)』で示された位置、即ち同一の分類番号が設定される画素の中の上段の左から2番目の位置である場合である。つまり、ここでは、図21に示すように各分類番号『1』、『2』、『33』、『34』がそれぞれ設定される4画素(横)×2画素(縦)の8つの画素の中の上段の左から2番目に位置する画素の階調値を多値化処理して得られた多値階調値データに基づきドット形成用データを生成する場合に、図20Bに示すような画素の切り出し方を実行する。ここでは、このような切り出し方によって、「00」という画素データをドット形成用データとして取得する。
また、図20Cに示すように、8つの画素の中の上段の右から2番目に位置する画素が切り出されるのは、多値階調値データを生成する際にCMYK画像データにおいて参照される画素の位置が、図21において『(3)』で示された位置、即ち同一の分類番号が設定される画素の中の上段の右から2番目の位置である場合である。つまり、ここでは、図21に示すように各分類番号『1』、『2』、『33』、『34』がそれぞれ設定される4画素(横)×2画素(縦)の8つの画素の中の上段の右から2番目に位置する画素の階調値を多値化処理して得られた多値階調値データに基づきドット形成用データを生成する場合に、図20Cに示すような画素の切り出し方を実行する。ここでは、このような切り出し方によって、「10」という画素データをドット形成用データとして取得する。
また、図20Dに示すように、8つの画素の中の右上隅に位置する画素が切り出されるのは、多値階調値データを生成する際にCMYK画像データにおいて参照される画素の位置が、図21において『(4)』で示された画素の位置、即ち同一の分類番号が設定される画素の中の右上隅の位置である場合である。つまり、ここでは、図21に示すように各分類番号『1』、『2』、『33』、『34』がそれぞれ設定される4画素(横)×2画素(縦)の8つの画素の中の右上隅に位置する画素の階調値を多値化処理して得られた多値階調値データに基づきドット形成用データを生成する場合に、図20Dに示すような画素の切り出し方を実行する。ここでは、このような切り出し方によって、「00」という画素データをドット形成用データとして取得する。
図20Eに示すように、8つの画素の中の左下隅に位置する画素が切り出されるのは、多値階調値データを生成する際にCMYK画像データにおいて参照される画素の位置が、図21において『(5)』で示された位置、即ち同一の分類番号が設定される画素の中の左上隅の位置である場合である。つまり、ここでは、図21に示すように各分類番号『1』、『2』、『33』、『34』がそれぞれ設定される4画素(横)×2画素(縦)の8つの画素の中の左下隅に位置する画素の階調値を多値化処理して得られた多値階調値データに基づきドット形成用データを生成する場合に、図20Eに示すような画素の切り出し方を実行する。ここでは、このような切り出し方によって、「00」という画素データをドット形成用データとして取得する。
また、図20Fに示すように、8つの画素の中の下段の左から2番目に位置する画素が切り出されるのは、多値階調値データを生成する際にCMYK画像データにおいて参照される画素の位置が、図21において『(6)』で示された位置、即ち同一の分類番号が設定される画素の中の下段の左から2番目の位置である場合である。つまり、ここでは、図21に示すように各分類番号『1』、『2』、『33』、『34』がそれぞれ設定される4画素(横)×2画素(縦)の8つの画素の中の下段の左から2番目に位置する画素の階調値を多値化処理して得られた多値階調値データに基づきドット形成用データを生成する場合に、図20Eに示すような画素の切り出し方を実行する。ここでは、このような切り出し方によって、「01」という画素データをドット形成用データとして取得する。
また、図20Gに示すように、8つの画素の中の下段の右から2番目に位置する画素が切り出されるのは、多値階調値データを生成する際にCMYK画像データにおいて参照される画素の位置が、図21において『(7)』で示された位置、即ち同一の分類番号が設定される画素の中の下段の右から2番目の位置である場合である。つまり、ここでは、図21に示すように各分類番号『1』、『2』、『33』、『34』がそれぞれ設定される4画素(横)×2画素(縦)の8つの画素の中の下段の右から2番目に位置する画素の階調値を多値化処理して得られた多値階調値データに基づきドット形成用データを生成する場合に、図20Gに示すよう画素の切り出し方を実行する。ここでは、このような切り出し方によって、「00」という画素データをドット形成用データとして取得する。
また、図20Hに示すように、8つの画素の中の右下隅に位置する画素が切り出されるのは、多値階調値データを生成する際にCMYK画像データにおいて参照される画素の中の位置が、図21において『(8)』で示された位置、即ち同一の分類番号が設定される画素の中の右上隅の位置である場合である。つまり、ここでは、図21に示すように各分類番号『1』、『2』、『33』、『34』がそれぞれ設定される4画素(横)×2画素(縦)の8つの画素の中の右下隅に位置する画素の階調値を多値化処理して得られた多値階調値データに基づきドット形成用データを生成する場合に、図20Hに示すよう画素の切り出し方を実行する。ここでは、このような切り出し方によって、「10」という画素データをドット形成用データとして取得する。
(2)2×1モードの場合
『2×1モード』の場合には、媒体Sに画像を印刷する際の横方向の解像度(出力解像度)が、CMYK画像データの解像度の2倍となる。このことから、『2×1モード』の場合に切り出される画素は、8つの画素のうちの横方向に並ぶ2つの画素となる。図22は、8つの画素の中から切り出される画素の位置について説明したものである。図22A〜図22Dは、切り出される画素の位置をそれぞれ示したものである。また、図23は、CMYK画像データにおける画素の位置について説明したものである。
図22Aは、8つの画素の中の上段の左から1番目および2番目に位置する画素を切り出す場合について説明したものである。図22Bは、8つの画素の中の上段の右から1番目および2番目に位置する画素を切り出す場合について説明したものである。図22Cは、8つの画素の中の下段の左から1番目および2番目に位置する画素を切り出す場合について説明したものである。図22Dは、8つの画素の中の下段の右から1番目および2番目に位置する画素を切り出す場合について説明したものである。
図22Aに示すように、8つの画素の中の上段の左から1番目および2番目に位置する画素を切り出すのは、多値階調値データを生成する際にCMYK画像データにおいて参照される画素の位置が、図23において『(1)』で示された位置、即ち同一の分類番号が設定される画素の中の左上隅の位置である場合である。つまり、ここでは、図23に示すように各分類番号『1』〜『4』、『33』〜『36』がそれぞれ設定される2画素(横)×2画素(縦)の4つの画素の中の左上隅に位置する画素の階調値を多値化処理して得られた多値階調値データに基づきドット形成用データを生成する場合に、図22Aに示すような画素の切り出し方を実行する。ここでは、このような切り出し方によって、「11」および「00」という横方向に並ぶ2つの画素データをドット形成用データとして取得する。
図22Bに示すように、8つの画素の中の上段の右から1番目および2番目に位置する画素を切り出すのは、多値階調値データを生成する際にCMYK画像データにおいて参照される画素の位置が、図23において『(2)』で示された位置、即ち同一の分類番号が設定される画素の中の右上隅の位置である場合である。つまり、ここでは、図23に示すように各分類番号『1』〜『4』、『33』〜『36』がそれぞれ設定される2画素(横)×2画素(縦)の4つの画素の中の右上隅に位置する画素の階調値を多値化処理して得られた多値階調値データに基づきドット形成用データを生成する場合に、図22Bに示すような画素の切り出し方を実行する。ここでは、このような切り出し方によって、「10」および「00」という横方向に並ぶ2つの画素データをドット形成用データとして取得する。
図22Cに示すように、8つの画素の中の下段の左から1番目および2番目に位置する画素を切り出すのは、多値階調値データを生成する際にCMYK画像データにおいて参照される画素の位置が、図23において『(3)』で示された位置、即ち同一の分類番号が設定される画素の中の左下隅の位置である場合である。つまり、ここでは、図23に示すように各分類番号『1』〜『4』、『33』〜『36』がそれぞれ設定される2画素(横)×2画素(縦)の4つの画素の中の左下隅に位置する画素の階調値を多値化処理して得られた多値階調値データに基づきドット形成用データを生成する場合に、図22Cに示すような画素の切り出し方を実行する。ここでは、このような切り出し方によって、「00」および「01」という横方向に並ぶ2つの画素データをドット形成用データとして取得する。
図22Dに示すように、8つの画素の中の下段の右から1番目および2番目に位置する画素を切り出すのは、多値階調値データを生成する際にCMYK画像データにおいて参照される画素の位置が、図23において『(4)』で示された位置、即ち同一の分類番号が設定される画素の中の右下隅の位置である場合である。つまり、ここでは、図23に示すように各分類番号『1』〜『4』、『33』〜『36』がそれぞれ設定される2画素(横)×2画素(縦)の4つの画素の中の右下隅に位置する画素の階調値を多値化処理して得られた多値階調値データに基づきドット形成用データを生成する場合に、図22Dに示すような画素の切り出し方を実行する。ここでは、このような切り出し方によって、「00」および「10」という横方向に並ぶ2つの画素データをドット形成用データとして取得する。
(3)1×2モード
『1×2モード』の場合には、媒体Sに画像を印刷する際の縦方向の解像度(出力解像度)が、CMYK画像データの解像度の2倍となる。このことから、『1×2モード』の場合に切り出される画素は、8つの画素のうちの縦方向に並ぶ2つの画素となる。図24は、8つの画素の中から切り出される画素の位置について説明したものである。図24A〜図24Dは、切り出される画素の位置をそれぞれ示したものである。また、図25は、CMYK画像データにおける画素の位置について説明したものである。
図24Aは、8つの画素の中の左から1番目の列に位置する上下2つの画素を切り出す場合について説明したものである。図24Bは、8つの画素の中の左から2番目の列に位置する上下2つの画素を切り出す場合について説明したものである。図24Cは、8つの画素の中の右から2番目の列に位置する上下2つの画素を切り出す場合について説明したものである。図24Dは、8つの画素の中の右から1番目の列に位置する上下2つの画素を切り出す場合について説明したものである。
図24Aに示すように、8つの画素の中の左から1番目の列に位置する上下2つの画素を切り出すのは、多値階調値データを生成する際にCMYK画像データにおいて参照される画素の位置が、図25において『(1)』で示された位置、即ち同一の分類番号が設定される画素の中の左から1番目の位置である場合である。つまり、ここでは、図25に示すように各分類番号『1』、『2』、『33』、『34』、『65』、『66』、『97』、『98』がそれぞれ設定される4画素(横)×1画素(縦)の4つの画素の中の左から1番目に位置する画素の階調値を多値化処理して得られた多値階調値データに基づきドット形成用データを生成する場合に、図24Aに示すような画素の切り出し方を実行する。ここでは、このような切り出し方によって、「11」および「00」という縦方向に並ぶ2つの画素データをドット形成用データとして取得する。
図24Bに示すように、8つの画素の中の左から2番目の列に位置する上下2つの画素を切り出すのは、多値階調値データを生成する際にCMYK画像データにおいて参照される画素の位置が、図25において『(2)』で示された位置、即ち同一の分類番号が設定される画素の中の左から2番目の位置である場合である。つまり、ここでは、図25に示すように各分類番号『1』、『2』、『33』、『34』、『65』、『66』、『97』、『98』がそれぞれ設定される4画素(横)×1画素(縦)の4つの画素の中の左から2番目に位置する画素の階調値を多値化処理して得られた多値階調値データに基づきドット形成用データを生成する場合に、図24Bに示すような画素の切り出し方を実行する。ここでは、このような切り出し方によって、「00」および「01」という縦方向に並ぶ2つの画素データをドット形成用データとして取得する。
図24Cに示すように、8つの画素の中の右から2番目の列に位置する上下2つの画素を切り出すのは、多値階調値データを生成する際にCMYK画像データにおいて参照される画素の位置が、図25において『(3)』で示された位置、即ち同一の分類番号が設定される画素の中の右から2番目の位置である場合である。つまり、ここでは、図25に示すように各分類番号『1』、『2』、『33』、『34』、『65』、『66』、『97』、『98』がそれぞれ設定される4画素(横)×1画素(縦)の4つの画素の中の右から2番目に位置する画素の階調値を多値化処理して得られた多値階調値データに基づきドット形成用データを生成する場合に、図24Cに示すような画素の切り出し方を実行する。ここでは、このような切り出し方によって、「10」および「00」という縦方向に並ぶ2つの画素データをドット形成用データとして取得する。
図24Dに示すように、8つの画素の中の右から1番目の列に位置する上下2つの画素を切り出すのは、多値階調値データを生成する際にCMYK画像データにおいて参照される画素の位置が、図25において『(4)』で示された位置、即ち同一の分類番号が設定される画素の中の右から1番目の位置である場合である。つまり、ここでは、図25に示すように各分類番号『1』、『2』、『33』、『34』、『65』、『66』、『97』、『98』がそれぞれ設定される4画素(横)×1画素(縦)の4つの画素の中の右から1番目に位置する画素の階調値を多値化処理して得られた多値階調値データに基づきドット形成用データを生成する場合に、図24Dに示すような画素の切り出し方を実行する。ここでは、このような切り出し方によって、「00」および「10」という縦方向に並ぶ2つの画素データをドット形成用データとして取得する。
(4)2×2モード
『2×2モード』の場合には、媒体Sに画像を印刷する際の横方向および縦方向の解像度(出力解像度)がそれぞれ、CMYK画像データの解像度の2倍となる。このことから、『2×2モード』の場合に切り出される画素は、8つの画素のうちの横方向に2画素分および縦方向に2画素分の計4画素となる。図26は、8つの画素の中から切り出される画素の位置について説明したものである。図26Aおよび図26Bは、切り出される画素の位置をそれぞれ示したものである。また、図27は、CMYK画像データにおける画素の位置について説明したものである。
図26Aに示すように、8つの画素の中の左側に位置する上下左右4つの画素を切り出すのは、多値階調値データを生成する際にCMYK画像データにおいて参照される画素の位置が、図27において『(1)』で示された位置、即ち同一の分類番号が設定される画素の中の左側の位置である場合である。つまり、ここでは、図27に示すように各分類番号『1』〜『4』、『33』〜『37』、『65』〜『68』、『97』〜『100』がそれぞれ設定される2画素(横)×1画素(縦)の2つの画素の中の左側に位置する画素の階調値を多値化処理して得られた多値階調値データに基づきドット形成用データを生成する場合に、図26Aに示すような画素の切り出し方を実行する。ここでは、このような切り出し方によって、「11」、「00」、「00」および「01」という上下方向および左右方向に並ぶ4つの画素データをドット形成用データとして取得する。
図26Bに示すように、8つの画素の中の右側に位置する上下左右4つの画素を切り出すのは、多値階調値データを生成する際にCMYK画像データにおいて参照される画素の位置が、図27において『(2)』で示された位置、即ち同一の分類番号が設定される画素の中の右側の位置である場合である。つまり、ここでは、図27に示すように各分類番号『1』〜『4』、『33』〜『37』、『65』〜『68』、『97』〜『100』がそれぞれ設定される2画素(横)×1画素(縦)の2つの画素の中の右側に位置する画素の階調値を多値化処理して得られた多値階調値データに基づきドット形成用データを生成する場合に、図26Bに示すような画素の切り出し方を実行する。ここでは、このような切り出し方によって、「10」、「00」、「00」および「10」という上下方向および左右方向に並ぶ4つの画素データをドット形成用データとして取得する。
(5)4×2モードの場合
『4×2モード』の場合には、媒体Sに画像を印刷する際の横方向の解像度(出力解像度)がCMYK画像データの解像度の4倍に、また媒体Sに画像を印刷する際の縦方向の解像度(出力解像度)がCMYK画像データの解像度の2倍になる。このことから、『4×2モード』の場合に切り出される画素は8つの画素全てとなる。図28は、8つの画素の中から切り出される画素の位置について説明したものである。同図に示すように、形成すべきドットの位置とサイズを決定した8つの画素全てがドット形成用データとして切り出される。すなわち、ここでは、「11」、「00」、「10」、「00」、「00」、「01」、「00」、「10」という横方向に4つ、縦方向に2つ並ぶ8つの画素データをドット形成用データとして取得する。
<他のモードの場合>
以上、『1×1モード』、『2×1モード』、『1×2モード』、『2×2モード』および『4×2モード』の場合については、前述した方法によりドット形成用データを生成する。しかし、他のモード、即ち『2×4モード』および『4×4モード』の場合には、前述した方法とは異なる方法によりドット形成用データを生成する。以下にその異なる方法について説明する。
(1)2×4モードの場合
『2×4モード』の場合、前述した他のモードの場合に比べて。多値階調値データをドット個数データに変換する処理が異なる。ここでは、図16にて説明したドット個数データ変換テーブルとは異なる、『2×4モード』のためのドット個数データ変換テーブルにより、多値階調値データがドット個数データに変換される。
図29は、『2×4モード』のためのドット個数データ変換テーブルの一例を概念的に説明したものである。このドット個数データ変換テーブルには、図16にて説明したドット個数データ変換テーブルと同様に、ドット個数データが各分類番号毎にそれぞれ多値階調値データ別に各々対応付けられて設定され、『分類番号』と『多値階調値データ』とからそれぞれ対応するドット個数データを導き出せるようになっている。『分類番号』は、図16の場合と同様、『1』〜『1024』の番号にて表される。また、『多値階調値データ』についても、図16の場合と同様、『0』〜『31』までの数値にて表される。また、『ドット個数データ』は、図16の場合と同様、『0』〜『164』の数値にて表されている。ドット個数データは、これら『1』〜『1024』の分類番号と、『0』〜『31』の多値階調値データとに応じてそれぞれ個別に用意されている。
なお、ここで『ドット個数データ』は、形成すべきドットの個数の他、形成すべき各ドットのサイズ(即ち「小ドット」、「中ドット」、「大ドット」)をも表すコード化されたデータとなっている。ここでは、『ドット個数データ』に、8つの画素について形成されるドットの個数に関する情報が含まれることから、図17にて説明した場合と同様に、『0』〜『164』の数値にて表されるようになっている。
本実施形態では、このような『2×4モード』にて使用されるドット個数データ変換テーブルに関するデータがASIC95側のSDRAM102に格納されている。ドット形成用データ生成ユニット184は、取得した多値階調値データを『2×4モード』にてドット個数データに変換する際に、ASIC95側のSDRAM102に格納された『2×4モード』のドット個数データ変換テーブルに関するデータを参照する。
なお、ASIC95側のSDRAM102に格納される『2×4モード』のドット個数データ変換テーブルに関するデータは、例えば、SPC複合装置1に搭載されたROM92等の不揮発性メモリに格納されていて、ドット形成用データ生成ユニット184が『2×4モード』にてドット個数データに変換するにあたって、ROM92等の不揮発性メモリから読み出されて、ASIC95側のSDRAM102に格納される。
ドット形成用データ生成ユニット184は、『2×4モード』の場合に、このドット個数データ変換テーブルを参照して、多値階調値データをドット個数データに変換する。そして、ドット形成用データ生成ユニット184は、この変換により取得したドット個数データに基づき、横2画素×縦4画素、計8個の画素について個別にドット形成の有無を決定する。このとき、ドット形成用データ生成ユニット184は、『2×4モード』のために用意された順序値マトリックスに基づき、8個の画素について個別にドット形成の有無を決定する。
図30Aは、このときに使用される順序値マトリックスの一例を説明したものである。『2×4モード』にて使用される順序値マトリックスは、同図に示すように、横2画素、縦4画素、計8個の画素についてそれぞれドットを形成すべき順番を表わす番号(以下、「順序値」ともいう)が設定されたマトリックスによりなる。8つの画素についてそれぞれ設定された番号は、図18にて説明した順序値マトリックスと同様に、それぞれドットが形成されるすべき順番を表わす。つまり、順序値『1』が設定された画素は、1番最初にドットが形成されるべき画素である。順序値『2』が設定された画素は、2番目にドットが形成されるべき画素である。順序値『3』が設定された画素は、3番目にドットが形成されるべき画素である。
このような順序値マトリックスは、『2×4モード』の場合でも、図18にて説明した順序値マトリックスと同様に、分類番号毎にそれぞれ個別に設定されている。つまり、順序値マトリックスは、分類番号毎にそれぞれ異なるマトリックスに設定されている。
本実施形態では、このような『2×4モード』で使用される順序値マトリックスに関するデータがASIC95側のSDRAM102に格納されている。ドット形成用データ生成ユニット184は、取得したドット個数データに基づき、『2×4モード』にて8個の画素についてそれぞれドット形成の有無を決定する際に、ASIC95側のSDRAM102に格納された『2×4モード』の順序値マトリックスに関する情報を参照する。
なお、ASIC95側のSDRAM102に格納される『2×4モード』の順序値マトリックスに関する情報は、例えば、SPC複合装置1に搭載されたROM92等の不揮発性メモリに格納されていて、ドット形成用データ生成ユニット184がドット個数データに基づき、『2×4モード』にて8個の画素についてそれぞれドット形成の有無を決定するにあたって、ROM92等の不揮発性メモリから読み出されて、ASIC95側のSDRAM102に格納される。
このような順序値マトリックスに基づき、8個の画素についてそれぞれドット形成の有無を決定する方法は、図19にて説明した場合と同じ方法である。すなわち、まずはじめに、ドットが目立ち易い大きいサイズのドットから順に、形成すべき画素の位置を決定する。
図30Bは、『2×4モード』において、ドット個数データと順序値マトリックスとに基づき、8つの画素についてそれぞれドット形成の有無を決定する手順の一例を概念的に説明したものである。ここでは、大ドットを1個、中ドットを2個、小ドットを1個、それぞれ形成すべき旨を表すドット個数データに基づき、図30Aにて説明した順序値マトリックスを用いてドット形成の有無を決定する場合を例にして説明する。
ここで、順序値『1』に対応する画素には、1番大きいドット、即ち大ドット(『11』)が設定される。形成すべき大ドットの個数は1個であるから、順序値『2』に対応する画素には、中ドット(『10』)が設定される。形成すべき中ドットの個数は2個であるから、順序値『3』に対応する画素にも、中ドット(『10』)が設定される。次に、順序値『4』に対応する画素には、小ドット(『01』)が設定される。形成すべき小ドットの個数は、1個であるから、他の残りの画素、即ち順序値『5』〜『8』に対応する画素には、ドットが形成されないことになる。
このようにしてドット形成用データ生成ユニット184は、『2×4モード』の場合に、多値階調値データに基づき、横2画素×縦4画素、計8個の画素についてそれぞれドット形成の有無を決定する。そして、ドット形成用データ生成ユニット184は、ドット形成の有無を決定した8個の画素を全てドット形成用データとして用いる。
(2)4×4モードの場合
『4×4モード』の場合、前述した他のモードの場合に比べて、多値階調値データをドット個数データに変換する処理が異なる。『4×4モード』の場合においても、『2×4モード』の場合と同様に、図16や図29にて説明したドット個数データ変換テーブルとは異なる、『4×4モード』のためのドット個数データ変換テーブルを使用する。
図31は、『4×4モード』のためのドット個数データ変換テーブルの一例を概念的に説明したものである。このドット個数データ変換テーブルには、図16や図29にて説明したドット個数データ変換テーブルと同様に、ドット個数データが各分類番号毎にそれぞれ多値階調値データ別に各々対応付けられて設定され、『分類番号』と『多値階調値データ』とからそれぞれ対応するドット個数データを導き出せるようになっている。『分類番号』は、図16や図29の場合と同様、『1』〜『1024』の番号にて表される。また、『多値階調値データ』についても、図16の場合と同様、『0』〜『31』までの数値にて表される。ドット個数データは、これら『1』〜『1024』の分類番号と、『0』〜『31』の多値階調値データとに応じてそれぞれ個別に用意されている。
ただし、『ドット個数データ』は、図16や図29の場合と異なり、『0』〜『968』の数値にて表されている。このように『ドット個数データ』が、『0』〜『968』の値を取るように設定されているのは、次の理由からである。すなわち、ドット個数データは、前述したように、形成すべきドットの個数の他、形成すべき各ドットのサイズ(即ち「小ドット」、「中ドット」、「大ドット」)をも表すコード化されたデータとなっている。『4×4モード』の場合には、ドット個数データに基づき、前述したように8つの画素についてドット形成の有無を決定するのではなく、16個の画素(横4画素×縦4画素)についてドット形成の有無を決定する。16個の画素について形成され得るドット個数は、最大でも16個である。各画素において取り得る状態としては、「大ドット」、「中ドット」、「小ドット」、「ドット形成なし」の4段階であるから、ドット個数の組合せは、4H16(=4+16−1C16)=969通りとなる。このことから、ドット個数データを『0』〜『968』の値で表せば、全ての組合せを表現することができる。
図32は、ドット個数データと、このドット個数データにより表される、形成すべきドットの個数およびサイズに関する情報との対応関係の一例を説明したものである。ドット個数データは、前述したように、『0』〜『968』の数値を取るようになっている。ドット個数データの『0』〜『968』の数値は、それぞれドット形成の有無と、ドットのサイズとを表すようになっている。
本実施形態では、このような『4×4モード』にて使用されるドット個数データ変換テーブルに関するデータがASIC95側のSDRAM102に格納されている。ドット形成用データ生成ユニット184は、取得した多値階調値データを『4×4モード』にてドット個数データに変換する際に、ASIC95側のSDRAM102に格納された『4×4モード』のドット個数データ変換テーブルに関するデータを参照する。
なお、ASIC95側のSDRAM102に格納される『4×4モード』のドット個数データ変換テーブルに関するデータは、例えば、SPC複合装置1に搭載されたROM92等の不揮発性メモリに格納されていて、ドット形成用データ生成ユニット184が『4×4モード』にてドット個数データに変換するにあたって、ROM92等の不揮発性メモリから読み出されて、ASIC95側のSDRAM102に格納される。
ドット形成用データ生成ユニット184は、『4×4モード』の場合に、このドット個数データ変換テーブルを参照して、多値階調値データをドット個数データに変換する。そして、ドット形成用データ生成ユニット184は、この変換により取得したドット個数データに基づき、横4画素×縦4画素、計16個の画素について個別にドット形成の有無を決定する。このとき、ドット形成用データ生成ユニット184は、『4×4モード』のために用意された順序値マトリックスに基づき、16個の画素について個別にドット形成の有無を決定する。
図33Aは、このときに使用される順序値マトリックスの一例を説明したものである。『4×4モード』にて使用される順序値マトリックスは、同図に示すように、横4画素、縦4画素、計16個の画素についてそれぞれドットを形成すべき順番を表わす番号(以下、「順序値」ともいう)が設定されたマトリックスによりなる。16個の画素についてそれぞれ設定された番号は、図18や図30Aにて説明した順序値マトリックスと同様に、それぞれドットが形成されるすべき順番を表わす。つまり、順序値『1』が設定された画素は、1番最初にドットが形成されるべき画素である。順序値『2』が設定された画素は、2番目にドットが形成されるべき画素である。順序値『3』が設定された画素は、3番目にドットが形成されるべき画素である。
このような順序値マトリックスは、『4×4モード』の場合でも、図18や図30Aにて説明した順序値マトリックスと同様に、分類番号毎にそれぞれ個別に設定されている。つまり、順序値マトリックスは、分類番号毎にそれぞれ異なるマトリックスに設定されている。
本実施形態では、このような『4×4モード』で使用される順序値マトリックスに関するデータがASIC95側のSDRAM102に格納されている。ドット形成用データ生成ユニット184は、取得したドット個数データに基づき、『4×4モード』にて16個の画素についてそれぞれドット形成の有無を決定する際に、ASIC95側のSDRAM102に格納された『4×4モード』の順序値マトリックスに関する情報を参照する。
なお、ASIC95側のSDRAM102に格納される『4×4モード』の順序値マトリックスに関する情報は、例えば、SPC複合装置1に搭載されたROM92等の不揮発性メモリに格納されていて、ドット形成用データ生成ユニット184がドット個数データに基づき、『4×4モード』にて16個の画素についてそれぞれドット形成の有無を決定するにあたって、ROM92等の不揮発性メモリから読み出されて、ASIC95側のSDRAM102に格納される。
このような順序値マトリックスに基づき、16個の画素についてそれぞれドット形成の有無を決定する方法は、図19にて説明した場合と同じ方法である。すなわち、まずはじめに、ドットが目立ち易い大きいサイズのドットから順に、形成すべき画素の位置を決定する。
図33Bは、『4×4モード』において、ドット個数データと順序値マトリックスとに基づき、16個の画素についてそれぞれドット形成の有無を決定する手順の一例を概念的に説明したものである。ここでは、大ドットを6個、中ドットを4個、小ドットを1個、それぞれ形成すべき旨を表すドット個数データに基づき、図33Aにて説明した順序値マトリックスを用いてドット形成の有無を決定する場合を例にして説明する。
ここで、順序値『1』に対応する画素には、1番大きいドット、即ち大ドット(『11』)が設定される。形成すべき大ドットの個数は6個であるから、順序値『2』〜『6』に対応する画素にも、大ドット(『11』)が設定されることになる。次に、順序値『7』に対応する画素には、中ドット(『10』)が設定される。形成すべき中ドットの個数は4個であるから、順序値『8』〜『10』に対応する画素にも、中ドット(『10』)が設定される。次に、順序値『11』に対応する画素には、小ドット(『01』)が設定される。形成すべき小ドットの個数は、1個であるから、他の残りの画素、即ち順序値『12』〜『16』に対応する画素には、ドットが形成されないことになる。
このようにしてドット形成用データ生成ユニット184は、『4×4モード』の場合に、多値階調値データに基づき、横4画素×縦4画素、計16個の画素についてそれぞれドット形成の有無を決定する。そして、ドット形成用データ生成ユニット184は、ドット形成の有無を決定した16個の画素を全てドット形成用データとして用いる。
<実際に実行される処理>
(1)ドット形成用データ生成ユニットの処理
ドット形成用データ生成ユニット184は、多値化処理ユニット182から直接送られてきた多値階調値データに基づきドット形成用データを生成する場合(『ダイレクトモード』)と、SDRAM102の多値階調値データバッファ188から取得した多値階調値データに基づきドット形成用データを生成する場合(『SDRAMモード』)とで、データの処理手順が異なる。
図34Aは、ドット形成用データ生成ユニット184によるドット形成用データの生成手順について説明したものである。図中、破線矢印D1〜D4は、多値化処理ユニット182から直接送られてきた多値階調値データに基づきドット形成用データを生成する場合(『ダイレクトモード』)の処理の流れを示す。また、図中、実線矢印M1〜M3は、SDRAM102の多値階調値データバッファ188から取得した多値階調値データに基づきドット形成用データを生成する場合(『SDRAMモード』)の処理の流れを示す。
『SDRAMモード』の場合、即ち、『1×1モード』以外の『2×1モード』、『1×2モード』、『2×2モード』、『4×2モード』、『2×4モード』および『4×4モード』の場合には、多値化処理ユニット182により生成された多値階調値データは、多値化処理ユニット182によりSDRAM102の多値階調値データバッファ188に格納される(図中実線矢印M1参照)。ドット形成用データ生成ユニット184は、多値化処理ユニット182により生成された多値階調値データをSDRAM102の多値階調値データバッファ188から取得する(図中実線矢印M2参照)。そして、ドット形成用データ生成ユニット184は、取得した多値階調値データをドット個数データに変換して、当該ドット個数データに基づきドット形成用データを生成する。その後、ドット形成用データ生成ユニット184は、生成したドット形成用データをドット形成用データバッファ190に格納する(図中実線矢印M3参照)。ここでは、ドット形成用データは、イメージバッファユニット112により読み取られてイメージバッファ126、127に転送される順序、即ち、ヘッド21からインクを吐出する順序に従ってドット形成用データ生成ユニット184により生成される。そして、生成されたドット形成用データは、ドット形成用データバッファ190に格納される。
一方、『ダイレクトモード』、即ち『1×1モード』の場合、多値化処理ユニット182により生成された多値階調値データは、多値化処理ユニット182とドット形成用データ生成ユニット184との間に設けられた信号ライン192を通じて、ドット形成用データ生成ユニット184に送られてくる(図中破線矢印D1参照)。多値階調値データを取得したドット形成用データ生成ユニット184は、その多値階調値データを順次、ドット個数データに変換して、そのドット個数データに基づきドット形成用データを生成する。そして、生成したドット形成用データを、ドット形成用データ生成ユニット184は、順次、ASIC95側のSDRAM102に設けられた一時バッファ192に一旦格納する(図中破線矢印D2参照)。その後、ドット形成用データ生成ユニット184は、一時バッファ192に格納されたドット形成用データを順次取り出して、ドット形成用データバッファ190に転送する処理を行う(図中破線矢印D3、D4参照)。ここで、ドット形成用データは、イメージバッファユニット112により読み取られてイメージバッファ126、127に転送される順序、即ち、ヘッド21からインクを吐出する順序に従って、ドット形成用データ生成ユニット184により取り出される。そして、取り出されたドット形成用データは、順次、ドット形成用データバッファ190に転送される。
なお、『ダイレクトモード』の場合、SDRAM102には、多値階調値データバッファ188が設けられない。また、『SDRAMモード』の場合、SDRAM102には、一時バッファ192が設けられない。
このようにデータの処理手順が異なる理由について説明する。つまり、『SDRAMモード』を採用する『1×1モード』以外のモードの場合、1つの多値階調値データから2個以上の画素分のドット形成用データが生成される。ここでは、1つの多値階調値データが、例えば、5ビットであるとした場合、これをドット形成用データに変換すると、1画素当たり2ビットのデータとして、計4ビット以上のデータが生成されることになる。特に、『2×2モード』、『4×2モード』、『2×4モード』および『4×4モード』の場合、1つの多値階調値データから4つ以上の画素が生成されるから、計8ビット以上のドット形成用データが生成されることになる。このように『1×1モード』以外のモードの場合、ドット形成用データに変換された場合に、データ量があまり変化しないか若しくは大幅に増えてしまうことから、多値化処理ユニット182により生成された多値階調値データを直ちにドット形成用データに変換せずに、多値階調値データとしてSDRAM102に格納した方が、メモリ容量の節約やメモリへのアクセス数の削減が図れ、好ましい。
一方、『ダイレクトモード』を採用する『1×1モード』の場合、1つの多値階調値データから1つの画素分のドット形成用データが生成される。1つの多値階調値データを5ビットとして、ドット形成用データに変換した場合、計2ビットのドット形成用データが生成されることとになる。つまり、『1×1モード』の場合、多値階調値データのままで存在するよりもドット形成用データに変換した方が、SDRAM102へのデータの格納量を圧倒的に減らすことができる。このようなことから、『1×1モード』の場合には、多値化処理ユニット182により生成された多値階調値データを直ちにドット形成用データに変換した方が好ましい。これにより、メモリ容量の節約やメモリへのアクセス数の削減を図ることができる。
なお、ここでは、『ダイレクトモード』は、『1×1モード』のみが採用してたが、『2×1モード』や『1×2モード』でも採用しても良い。また、多値化処理ユニットにより生成される多値階調値データのビット数や、ドット形成用データの1画素当たりのビット数に応じては、この限りではない。すなわち、多値化処理ユニットにより生成される多値階調値データのビット数や、ドット形成用データの1画素当たりのビット数に応じて、他のモードにて『ダイレクトモード』を採用してもよく、また『SDRAMモード』を採用しても良い。
(2)ラスタラインの生成
ドット形成用データ生成ユニット184は、印刷される画像のドット形成用データを1ラスタラインずつ生成する。図34Bは、このときにドット形成用データ生成ユニット184により実行される処理のイメージを概略的に説明したものである。ドット形成用データ生成ユニット184は、多値化処理ユニットまたは多値階調値データバッファから1つのラスタライン分の多値階調値データを取得して、取得した当該多値階調値データに基づき、1ラスタライン分のドット形成用データを生成する。つまり、例えば、同図に示す1行目のラスタラインM1のドット形成用データを生成する際に、ドット形成用データ生成ユニット184は、当該1行目のラスタラインM1に対応する多値階調値データを多値化処理ユニット182または多値階調値データバッファ188から取得する。そして、取得した1行目のラスタラインM1に対応する多値階調値データに基づき、ドット形成用データ生成ユニット184は、1行目のラスタラインM1のドット形成用データを生成する。また、2行目のラスタラインM2のドット形成用データを生成する際には、ドット形成用データ生成ユニット184は、当該2行目のラスタラインM2に対応する多値階調値データを多値化処理ユニット182または多値階調値データバッファ188から取得する。そして、取得した2行目のラスタラインM2に対応する多値階調値データに基づき、ドット形成用データ生成ユニット184は、2行目のラスタラインM2のドット形成用データを生成する。また、3行目のラスタラインM3のドット形成用データを生成する際には、ドット形成用データ生成ユニット184は、当該3行目のラスタラインM3に対応する多値階調値データを多値化処理ユニット182または多値階調値データバッファ188から取得する。そして、取得した3行目のラスタラインM3に対応する多値階調値データに基づき、ドット形成用データ生成ユニット184は、3行目のラスタラインM3のドット形成用データを生成する。このようにしてドット形成用データ生成ユニット184は、多値化処理ユニット182または多値階調値データバッファ188から各ラスタラインM1〜M5に対応する多値階調値データを取得して、取得した多値階調値データに基づき、各ラスタラインM1〜M5のドット形成用データを1ラスタラインずつ生成する。
図35A〜図35Gは、各モードにおけるドット形成用データの生成方法の一例をそれぞれ説明したものである。図35Bは、『1×1モード』の場合の一例を説明したものである。図35Bは、『2×1モード』の場合の一例を説明したものである。図35Cは、『1×2モード』の場合の一例を説明したものである。図35Dは、『2×2モード』の場合の一例を説明したものである。図35Eは、『4×2モード』の場合の一例を説明したものである。図35Fは、『2×4モード』の場合の一例を説明したものである。図35Gは、『4×4モード』の場合の一例を説明したものである。
(1)1×1モードの場合
『1×1モード』の場合には、図34Bにて説明したように、多値化処理ユニット182から直接送られてきた多値階調値データがドット形成用データ生成ユニット184により逐次ドット個数データに変換される。そして、当該ドット個数データに基づきドット形成の有無が決定された8つの画素の中から、図20にて説明したように、1つの画素のデータが切り出される。ドット形成用データ生成ユニット184は、このようにして切り出した1つの画素のデータを、1つのラスタラインを構成する画素のデータとしてそのまま用いる。つまり、図35Aにて説明するように、ドット形成用データ生成ユニット184が、例えば、1行目のラスタラインM1を生成する際に、切り出された1つの画素のデータ(ここでは、『11』(大ドット)のデータ)が、そのままそのラスタラインM1を構成する画素のデータとして用いられる。このようにして順次、多値化処理ユニットから送られてきた多値階調値データに基づき、1行目のラスタラインM1のドット形成用データを生成する。
他のラスタラインM2、M3、M4、M5についても同様、8つの画素の中から切り出された1つの画素のデータを各ラスタラインM2、M3、M4、M5を構成する画素のデータとして用いて、各ラスタラインM2、M3、M4、M5のドット形成用データを生成する。
このようにして各ラスタライン別に生成されたドット形成用データは、図34Aにて説明したように、ドット形成用データ生成ユニット184により一時バッファ192に格納される。そして、一時バッファ192に格納されたドット形成用データは、同図にて説明したように、イメージバッファユニット112により読み取られてイメージバッファ126、127に転送される順序、即ち、ヘッド21からインクを吐出する順序に従って、ドット形成用データ生成ユニット184により一時バッファ192から読み出されてドット形成用データバッファ190へと順次転送される。
(2)2×1モードの場合
『2×1モード』の場合には、図22にて説明したように、8つの画素の中から、横2画素×縦1画素、計2個の横に並ぶ2つの画素のデータが切り出される。ドット形成用データ生成ユニット184は、このようにして切り出した2つの画素のデータを、1つのラスタラインを構成する画素のデータとしてそのまま用いる。つまり、図35Bにて説明するように、ドット形成用データ生成ユニット184が、例えば、1行目のラスタラインM1を生成する際に、切り出された2つの画素のデータ(ここでは、『10』(中ドット)および『01』(小ドット))が、そのまま、そのラスタラインM1を構成する画素のデータとして用いられる。すなわち、横に並んだ状態にて2つの画素のデータ(『10』および『01』)が、そのラスタラインM1を構成する画素のデータとして貼り付けられる。このようにして順次、多値階調値データバッファ188から1行目のラスタラインM1に対応する多値階調値データを取得して、1行目のラスタラインM1のドット形成用データを生成する。
他のラスタラインM2、M3、M4、M5についても同様、8つの画素の中から切り出された2つの画素のデータを、各ラスタラインM2、M3、M4、M5を構成する画素のデータとして用いて、各ラスタラインM2、M3、M4、M5のドット形成用データを生成する。
(3)1×2モードの場合
『1×2モード』の場合には、図24にて説明したように、8つの画素の中から横1個×縦2個の計2個の画素が切り出される。このようにして縦方向に並ぶ画素が切り出された場合、ドット形成用データ生成ユニット184は、切り出された2つの画素のデータを、それぞれ異なるラスタラインを構成する画素のデータとして用いる。つまり、切り出された2つの画素のうちの一方の画素のデータが、あるラスタラインを構成する画素のデータとして用いられた場合、他方の画素のデータは、あるラスタラインとは異なる別のラスタラインを構成する画素のデータとして用いられる。例えば、図35Cにて説明するように、ドット形成用データ生成ユニット184が1行目のラスタラインM1を生成する際には、縦方向に並ぶ2つの画素のうち、上段に位置する画素のデータ(ここでは、『10』(中ドット))が、1行目のラスタラインM1を構成する画素のデータとして用いられる。一方、ドット形成用データ生成ユニット184が、2行目のラスタラインM2を生成する際には、縦方向に並ぶ2つの画素のうち、下段に位置する画素のデータ(ここでは、『01』(小ドット))が、2行目のラスタラインM2を構成する画素のデータとして用いられる。このようにして2つのラスタラインM1、M2は、同じ多値階調値データに対応して切り出された画素によって、各々生成される。
他のラスタラインM3、M4についても同様、同じ多値階調値データに対応して切り出された画素によってそれぞれ生成される。
(4)2×2モードの場合
『2×2モード』の場合には、図26にて説明したように、8つの画素の中から横2画素×縦2画素の計4個の画素が切り出される。ここで切り出された4個の画素は、縦方向に並ぶ画素が2つあることから、2つの異なるラスタラインのドット形成用データとして用いられる。つまり、図35Dにて説明するように、ドット形成用データ生成ユニット184が、例えば、1行目のラスタラインM1を生成する際には、4個の画素のうち、上段に位置する2つの画素のデータ(ここでは、『11』(大ドット)および『01』(小ドット))が、1行目のラスタラインM1を構成する画素のデータとして用いられる。一方、ドット形成用データ生成ユニット184が、2行目のラスタラインM2を生成する際には、4個の画素のうち、下段に位置する2つの画素(ここでは、『00』(ドット形成無し)および『10』(中ドット))が、2行目のラスタラインM2を構成する画素のデータとして用いられる。このようにして2つのラスタラインM1、M2は、同じ多値階調値データから順次生成される。
他のラスタラインM3、M4についても同様、同じ多値階調値データに対応して切り出された4個の画素によって順次生成される。
(5)4×2モードの場合
『4×2モード』の場合には、図28にて説明したように、8つの画素が全て切り出される。この場合でも、切り出された8個の画素には、縦方向に並ぶ画素を含むことから、2以上の異なるラスタラインのドット形成用データとして用いられる。つまり、図35Eにて説明するように、ドット形成用データ生成ユニット184が、例えば、1行目のラスタラインM1を生成する際には、8個の画素のうち、上段に位置する4つの画素(ここでは、『11』(大ドット)、『00』(ドット形成無し)、『10』(中ドット)および『00』(ドット形成無し))が、1行目のラスタラインM1を構成する画素のデータとして用いられる。一方、ドット形成用データ生成ユニット184が、2行目のラスタラインM2を生成する際には、8個の画素のうち、下段に位置する4つの画素(ここでは、『00』(ドット形成無し)、『01』(小ドット)、『00』(ドット形成無し)および『10』(中ドット))が、2行目のラスタラインM2を構成する画素のデータとして用いられる。このようにして2つのラスタラインM1、M2は、同じ多値階調値データから順次生成される。
他のラスタラインM3、M4についても同様、同じ多値階調値データに対応して切り出された画素によってそれぞれ生成される。
(6)2×4モードの場合
『2×4モード』の場合には、図30Bにて説明したように、横2画素×縦4画素の計8個の画素が切り出される。ここで切り出された8個の画素も、縦方向に並ぶ画素を4個有していることから、4つの異なるラスタラインのドット形成用データとして用いられる。つまり、図35Fにて説明するように、ドット形成用データ生成ユニット184が、例えば、1行目のラスタラインM1を生成する際には、8個の画素のうち、上から1段目に並ぶ2つの画素のデータ(ここでは、『00』(ドット形成無し)および『11』(大ドット))が、1行目のラスタラインM1を構成する画素のデータとして用いられる。また、ドット形成用データ生成ユニット184が、2行目のラスタラインM2を生成する際には、8個の画素のうち、上から2段目に並ぶ2つの画素のデータ(ここでは、『01』(小ドット)および『00』(ドット形成無し))が、2行目のラスタラインM2を構成する画素のデータとして用いられる。また、ドット形成用データ生成ユニット184が、3行目のラスタラインM3を生成する際には、8個の画素のうち、上から3段目に並ぶ2つの画素のデータ(ここでは、『10』(中ドット)および『00』(ドット形成無し))が、3行目のラスタラインM3を構成する画素のデータとして用いられる。また、ドット形成用データ生成ユニット184が、4行目のラスタラインM4を生成する際には、8個の画素のうち、最下段に並ぶ2つの画素のデータ(ここでは、『00』(ドット形成無し)および『10』(中ドット))が、4行目のラスタラインM4を構成する画素のデータとして用いられる。このようにして4つのラスタラインM1、M2、M3、M4は、同じ多値階調値データから順次生成される。
(7)4×4モードの場合
『4×4モード』の場合には、図33Bにて説明したように、16個の画素が全て切り出される。ここで切り出される16個の画素は、縦方向に並ぶ画素を含むことから、4本の異なるラスタラインのドット形成用データとして用いられる。つまり、図35Gにて説明するように、ドット形成用データ生成ユニット184が、例えば、1行目のラスタラインM1を生成する際には、16個の画素のうち、上から1段目に並ぶ4つの画素のデータ(ここでは、『11』(大ドット)、『00』(ドット形成無し)、『11』(大ドット)および『10』(中ドット))が、ラスタラインM1を構成する画素のデータとして用いられる。また、ドット形成用データ生成ユニット184が、2行目のラスタラインM2を生成する際には、16個の画素のうち、上から2段目に並ぶ4つの画素のデータ(ここでは、『11』(大ドット)、『01』(小ドット)、『11』(大ドット)および『01』(小ドット))が、ラスタラインM2を構成する画素のデータとして用いられる。また、ドット形成用データ生成ユニット184が、3行目のラスタラインM3を生成する際には、16個の画素のうち、上から3段目に並ぶ4つの画素のデータ(ここでは、『00』(ドット形成無し)、『10』(中ドット)、『00』(ドット形成無し)および『11』(大ドット))が、ラスタラインM3を構成する画素のデータとして用いられる。また、ドット形成用データ生成ユニット184が、4行目のラスタラインM4を生成する際には、最下段に並ぶ4つの画素のデータ(ここでは、『00』(ドット形成無し)、『10』(中ドット)、『00』(ドット形成無し)および『11』(大ドット))が、ラスタラインM4を構成する画素のデータとして用いられる。このようにして4つのラスタラインM1、M2、M3、M4は、同じ多値階調値データから順次生成される。
<ラスタラインの生成順序>
なお、ここでは、『1×1モード』以外のモード、即ち、『2×1モード』、『1×2モード』、『2×2モード』、『4×2モード』、『2×4モード』および『4×4モード』の場合、ドット形成用データの各ラスタラインの生成順序については、必ずしも1行目のラスタラインから順に、2行目、3行目、4行目と順次生成されるとは限らない。つまり、ドット形成用データ生成ユニット184により1行目のラスタラインが生成された後、次に3行目のラスタラインが生成されたり、また4行目のラスタラインが生成される場合がある。これは、ヘッド21へのヘッド駆動データの送信順序と関係する。つまり、ヘッド21に対して先に送信すべきヘッド駆動データに対応するラスタラインから順に、ドット形成用データ生成ユニット184により生成される。一方、ヘッド21に対して後から送信されるヘッド駆動データに対応するラスタラインについては、ドット形成用データ生成ユニット184により後から生成される。
ドット形成用データ生成ユニット184は、各ラスタラインを生成する都度、多値階調値データバッファ188から多値階調値データを取得して、その取得した多値階調値データをドット個数データに変換し、そのドット個数データに基づき1以上の画素について個別にドット形成の有無を決定し、その1以上の画素のうちの少なくとも一部の画素のデータを、ラスタラインを構成する画素のデータとして用いる。
このため、『1×2モード』や『2×2モード』、『4×2モード』、『2×4モード』、『4×4モード』の場合には、ドット形成用データ生成ユニット184は、各ラスタラインを生成する都度、多値階調値データバッファ188から同じ多値階調値データを2回以上取得して、ラスタラインを構成する画素のデータを取得することになる。このようにして生成されたドット形成用データの各ラスタラインは、ドット形成用データ生成ユニット184により、ドット形成用データバッファ190に格納される。
なお、『1×1モード』の場合には、ドット形成用データ生成ユニット184は、SDRAMの一時バッファに格納されたドット形成用データを、ヘッド21に対して先に送信すべきヘッド駆動データに対応するラスタラインから順に取り出して、ドット形成用データバッファ190に格納する。
<ドット形成用データバッファ>
ドット形成用データバッファ190には、2以上のラスタラインを格納することができるデータ格納領域が設けられている。このドット形成用データバッファ190には、イメージバッファユニット112に送られる各ラスタラインのドット形成用データが格納される。
イメージバッファユニット112は、このドット形成用データバッファ190に格納されたドット形成用データを1ラスタラインずつ順次読み出して、イメージバッファ126、127にヘッド駆動データとして格納する。
イメージバッファ126、127に格納されたヘッド駆動データは、バスコントローラ114を介してCPU90に読み込まれて、CPU90によりヘッドコントロールユニット116へと転送される。ヘッドコントロールユニット116へと転送されたヘッド駆動データは、順次ヘッド21へと送出されて、印刷処理が実行される。
===SDRAMの領域割り当て===
ASIC95用のSDRAM102内のデータ格納領域について説明する。図36は、そのSDRAM102の領域割り当てについて説明する。図36Aは、『SDRAMモード』におけるSDRAM102の領域割り当ての一例について説明したものである。図36Bは、『ダイレクトモード』におけるSDRAM102の領域割り当ての一例について説明したものである。
『SDRAMモード』においては、SDRAM102には、図36Aにて説明するように、ラインバッファ120が設けられる領域102Aと、ルックアップテーブル136(LUT)が格納される領域102Bと、多値化テーブルが格納される領域102Cと、ドット個数データ変換テーブルが格納される領域102Dと、順序値マトリックスに関するデータが格納される領域102Eと、多値階調値データバッファ188が設定される領域102Fと、ドット形成用データバッファ190が設定される領域102Gと、イメージバッファ126、127が設定される領域102Hと、その他のデータが格納される領域102Iが設けられる。
領域102Dに格納されるドット個数データ変換テーブルには、『1×1モード』〜『4×2モード』にて使用されるドット個数データ変換テーブルや『2×4モード』にて使用されるドット個数データ変換テーブル、『4×4モード』にて使用されるドット個数データ変換テーブルが含まれる。また、領域102Eに格納される順序値マトリックスに関するデータには、『1×1モード』〜『4×2モード』にて使用される順序値マトリックスに関するデータや『2×4モード』にて使用される順序値マトリックスに関するデータ、『4×4モード』にて使用される順序値マトリックスに関するデータが含まれる。
ここで、多値階調値データバッファ188が設定される領域102Fは、多値階調値データバッファ188に格納される多値階調値データが、媒体Sに印刷される画像(出力画像)の解像度に依存しない所定のビット数のデータであることから、媒体Sに印刷される画像(出力画像)の解像度に関わりなく一定にすることができる。これにより、高い解像度にて媒体Sに画像を印刷するときには、SDRAM102上に確保しなければならない多値階調値データバッファ188の大きさを大幅に小さくすることができる。また、SDRAM102へのアクセス回数を抑制することができる。
一方、『ダイレクトモード』においては、図36Bにて説明するように、『SDRAMモード』の場合と同様に、SDRAM102には、ラインバッファ120が設けられる領域102Aと、ルックアップテーブル136(LUT)が格納される領域102Bと、多値化テーブルが格納される領域102Cと、ドット個数データ変換テーブルが格納される領域102Dと、順序値マトリックスに関するデータが格納される領域102Eと、ドット形成用データバッファ190が設定される領域102Gと、イメージバッファ126、127が設定される領域102Hと、その他のデータが格納される領域102Iが設けられる。ただし、ここでは、多値階調値データバッファ188が設定される領域102Fは設けられず、代わりに、一時バッファ192が設定される領域102Jが設けられている。一時バッファ192が設定される領域102Jは、『1×1モード』において、多値化処理ユニットから直接送られてきた多値階調値データに基づきドット形成用データ生成ユニットが生成したドット形成用データが格納される。ここで、格納されるドット形成用データは、5ビットの多値階調値データから変換されて得られた2ビットのデータである。このことから、一時バッファ192は、『SDRAMモード』の多値階調値データバッファよりも小さなデータ領域で済む。
===ディザ法の概要===
前述した多値化処理およびドット形成用データ生成処理は、いわゆるディザ法と呼ばれる方法をベースに実行されるものである。前述した多値化処理およびドット形成用データ生成処理において、分類番号を決定する考え方や、多値化テーブル、ドット個数データ変換テーブル、順序値マトリックスなどの設定方法は、すべてこのディザ法に基づいている。ここで、ディザ法の概要について簡単に説明する。
ディザ法とは、画像データを、画素毎にドット形成の有無を表すデータに変換するために用いられる代表的な手法である。この手法では、ディザマトリックスと呼ばれるマトリックスに閾値を設定しておき、画像データの各画素の階調値とディザマトリックスに設定されている閾値とを画素毎に比較して、階調値の方が大きい画素についてはドットを形成すると判断し、そうでない画素についてはドットを形成しないと判断する。このような判断を画像データ中の全画素について行う。これによって、画像データを画素毎にそれぞれドット形成の有無を表すデータに変換することができる。
図37Aは、ディザマトリックスの一部を拡大して例示した説明図である。図示したマトリックスには、横方向に128画素、縦方向に64画素、合計8192個の画素に、階調値「1」〜「255」の範囲から万遍なく選択された閾値がランダムに記憶されている。ここで、閾値の階調値が「1」〜「255」の範囲から選択されているのは、本実施例では、画像データの画素が階調値「0」〜「255」の値を取り得る1バイトデータとしていることに加えて、画像データの画素の階調値と閾値とが等しい場合、その画素にはドットを形成するものと判断していることによるものである。
すなわち、ドットが形成されるのは、画像データの階調値が閾値よりも大きい画素に限る(すなわち階調値と閾値とが等しい画素には、ドットは形成しない)とした場合、画像データが取り得る最大階調値と同じ値の閾値を有する画素には、決してドットが形成されることはない。こうしたことを避けるため、閾値の取り得る範囲は、画素が取り得る範囲から最大階調値を除いた範囲とする。逆に、画像データの階調値と閾値とが等しい画素にもドットを形成するとした場合、画像データの取り得る最小階調値と同じ値の閾値を有する画素には、常にドットが形成されてしまうことになる。こうしたことを避けるため、閾値の取り得る範囲は、画像データの取り得る範囲から最小階調値を除いた範囲とする。本実施例では、画像データの取り得る階調値が「0」〜「255」であり、画像データと閾値が等しい画素にはドットを形成するとしていることから、閾値の取り得る範囲を「1」〜「255」としておくのである。なお、ディザマトリックスの大きさは、図37Aに例示したような大きさに限られるものではなく、縦と横の画素数が同じマトリックスも含めて種々の大きさとすることができる。
図37Bは、ディザマトリックスを参照しながら、各画素についてのドット形成の有無を判断している様子を概念的に示した説明図である。ドット形成の有無を判断するに際しては、先ず、判断しようとする画素を選択し、この画素についての画像データの階調値と、ディザマトリックス中で対応する位置に記憶されている閾値とを比較する。図37B中に示した細い破線の矢印は、画像データの階調値と、ディザマトリックスに記憶されている閾値とを、画素毎に比較していることを模式的に表したものである。例えば、画像データの左上隅の画素については、画像データの階調値は「97」であり、ディザマトリックスの閾値は「1」であるから、この画素には、ドットを形成すると判断する。図37B中に実線で示した矢印は、この画素には、ドットを形成すると判断して、判断結果をメモリに書き込んでいる様子を模式的に表したものである。一方、この画素の右隣の画素については、画像データの階調値は「97」、ディザマトリックスの閾値は「177」であり、閾値の方が大きいので、この画素については、ドットを形成しないと判断する。ディザ法では、こうしてディザマトリックスを参照しながら、画素毎にドットを形成するか否かを判断することで、画像データを画素毎にドット形成の有無を表すデータに変換する。
===分類番号を設定するための考え方===
<分類番号>
分類番号は、前述した図37Aに示すディザマトリックスに基づき設定される。つまり、ディザマトリックスには、横方向に128画素、縦方向に64画素、合計8192個の画素が形成されている。これら8192個の画素を、横方向に4画素、縦方向に2画素を1つの単位ブロックとして区分して、これら区分された各単位ブロック毎にそれぞれ個別に設定した通し番号が、「分類番号」となっている。
図38は、分類番号を設定するための考え方を示した説明図である。図38Aは、画像の一番左上隅の箇所において、横方向に4画素、縦方向に2画素の合計8画素を1つの単位ブロックとして区分した様子を概念的に示したものである。図38Bは、このようにディザマトリックスの画素を区分して、各単位ブロックごとにそれぞれ「分類番号」が設定されたときの様子を説明したものである。
ディザマトリックスには、横方向に4画素、縦方向に2画素を1つの単位ブロックとして区分することによって、横方向および縦方向にそれぞれ32個ずつ、合計1024個の単位ブロックが形成される。これら1024個の単位ブロックに対してそれぞれ個別に通し番号を設定する。これにより、ディザマトリックスの各単位ブロックごとにそれぞれ『1』〜『1024』の分類番号が振られることになる。
図38Cは、画像データにディザマトリックスを適用した場合の一例について説明したものである。このように画像データにディザマトリックスを適用した場合、画像データの一番左上隅にある画素には、少なくとも、分類番号『1』が設定されることになる。なお、画像データの各画素への分類番号の設定方法は、先に図13A〜図13Eにて説明したように、媒体Sに画像を印刷する際の解像度(出力解像度)に応じて異なる。つまり、『1×1モード』、『2×1モード』、『1×2モード』、『2×2モード』、『4×2モード』、『2×4モード』および『4×4モード』の各モードに応じて、各画素への分類番号の設定方法が異なる。
<分類番号の設定方法が異なる理由>
ここで、CMYK画像データの各画素への分類番号の設定方法が、媒体Sに画像を印刷する際の解像度(出力解像度)に応じて異なる理由について説明する。つまり、分類番号は、ディザマトリックス上のにおいて、横4画素、縦2画素、合計8個の画素を1つの単位とした単位ブロックごとにそれぞれ割り振られている。このため、1つの分類番号に対応する1つの単位ブロックが適用されるのは、8個の画素ということになる。CMYK画像データ上の1つの画素から生成されるドット形成用データ上の画素の数は、媒体Sに画像を印刷する際の解像度(出力解像度)に応じて異なるから、出力解像度毎にそれぞれ異なる方法にて分類番号を設定する必要がある。
『1×1モード』の場合には、CMYK画像データの中の1つの画素から、ドット形成用データとして1つの画素分のデータしか生成されない。このため、『1×1モード』の分類番号は、図13Aにて説明するように、横方向に4つ、縦方向に2つ、計8つの画素を1つの単位として同一の分類番号が設定されることになる。
また、『2×1モード』の場合には、CMYK画像データの中の1つの画素から、ドット形成用データとして横方向に並ぶ2つの画素分のデータしか生成されない。このため、『2×1モード』の分類番号は、図13Bにて説明するように、横方向に2つ、縦方向に2つ、計4つの画素を1つの単位として同一の分類番号が設定されることになる。
また、『1×2モード』の場合には、CMYK画像データの中の1つの画素から、ドット形成用データとして縦方向に並ぶ2つの画素分のデータしか生成されない。このため、『1×2モード』の分類番号は、図13Cにて説明するように、横方向に4つ、縦方向に1つ、計4つの画素を1つの単位として同一の分類番号が設定されることになる。
また、『2×2モード』の場合には、CMYK画像データの中の1つの画素から、ドット形成用データとして横方向に2つ、縦方向に2つ並ぶ、計4つの画素分のデータしか生成されない。このため、『2×2モード』の分類番号は、図13Dにて説明するように、横方向に並ぶ2つの画素を1つの単位として同一の分類番号が設定されることになる。
また、『4×2モード』の場合には、CMYK画像データの中の1つの画素から、ドット形成用データとして横方向に4つ、縦方向に2つ並ぶ計8つ分の画素のデータが生成される。このため、『4×2モード』の分類番号は、図13Eにて説明するように、各画素毎にそれぞれ異なる分類番号が設定されることになる。
<分類番号の特定方法>
図39は、分類番号の特定方法の一例について説明したものである。ここでは、『1×1モード』の場合の分類番号の特定方法について説明している。図39Aは、CMYK画像データ上の着目画素の位置を表している。着目画素の位置は、『●』の黒丸で示している。この着目画素の座標が(X,Y)であるとする。横方向に4画素、縦方向に2画素の合計8画素を1つの単位ブロックとして区分しているから、X,Yについて次の関係式(1),(2)が成り立つ。
X=4n+α …………(1)
Y=2m+β …………(2)
ここで、n、mは0以上の整数である。また、αは、0〜3の整数である。また、βは、1または0である。nは、着目画素の左側に並ぶ単位ブロックの数を表わす。また、mは、着目画素の上側に並ぶ単位ブロックの数を表す。
ディザマトリックスは、例えば、図39Bに示すように、CMYK画像データ上を横方向に少しずつ移動させながら、CMYK画像データの各画素に対して繰り返し適用される。ここで、着目画素には、図39Cに示すように、ディザマトリックス中のM行N列目の単位ブロックが適用されるものとする。1つのディザマトリックスには、横方向および縦方向にそれぞれ32個ずつ単位ブロックが設定されているから、『M』および『N』は、次の関係式(3)、(4)から簡単に求めることができる。
N=n−int(n/32)×32+1 …………(3)
M=m−int(m/32)×32+1 …………(4)
ここで、intは、小数点以下を切り捨てて整数化することを表す演算子である。すなわち、int(n/32)は、n/32の計算結果に対して小数点以下の数値を切り捨てることによって得られた整数値を表している。このように着目画素の座標(X,Y)がわかれば、これらXおよびYから、着目画素が属する単位ブロックを特定することができる。これによって、着目画素に対してどの分類番号を設定すべきなのか調べることができる。
なお、ここでは、『1×1モード』の場合を例にして説明したが、他のモードの場合についても、各々個別の関係式を用いることにより、着目画素の座標(X,Y)から、当該着目画素に対応するディザマトリックス上の単位ブロックの位置を特定することができる。これによって、着目画素に設定すべき分類番号を導き出すことができる。
<他の設定方法について>
なお、ここでは、分類番号がディザマトリックス上において、横4画素×縦2画素、計8画素を1つの単位ブロックとして各単位ブロックごとにそれぞれ設定されていたが、分類番号の設定方法にあってはこのような方法に限らない。すなわち、例えば、分類番号は、ディザマトリックス上において、横2画素×縦2画素、計8画素を1つの単位ブロックとして各単位ブロック毎に設定されてもよく、また、横4画素×縦4画素、計16画素を1つの単位ブロックとして各単位ブロック毎に設定されても良い。つまり、前述した実施の形態では、1つの多値階調値データに基づき、横4画素×縦2画素、計8画素について各々ドット形成の有無を決定する関係から、1つの単位ブロックが横4画素×縦2画素の大きさを有していたが、分類番号が設定される単位ブロックの大きさは、前述した実施形態の大きさに限らない。
===多値化テーブルの設定方法===
次に、図12Aに示した多値化テーブルの設定方法について説明する。前述したように、多値化テーブルには、多値階調値データが画素の分類番号毎にそれぞれ画素の階調値別に各々対応付けられて設定されている。多値化テーブルを参照しながら多値化することで、画素の階調値を、図12Bに示したように分類番号に応じた固有な態様で多値化することができる。
本実施形態の多値化テーブルは、大きさの異なる複数種類のドットについて画素毎にドット形成の有無を判断可能なように、前述したディザ法を発展させた手法を基にして設定されている。多値化テーブルの設定方法を説明する前に、当該設定方法を理解する上で必要な基本的な技術の内容について簡単に説明しておく。
<密度データ>
図40は、ディザ法を発展させて、画素毎に大ドット・中ドット・小ドットの形成の有無を決定可能としたハーフトーン処理の流れを示すフローチャートである。ハーフトーン処理を開始すると、先ず初めに、ドットの形成有無を判断しようとする画素を選択して、その画素の階調値を取得する(ステップS400)。次いで、取得した画像データを、大中小の各ドットについての密度データに変換する。ここで、密度データとは、ドットをどの程度の密度で形成するかを表すデータである。密度データは、階調値が大きくなる程、ドットが高い密度で形成されることを表している。例えば、密度データの階調値「255」は、ドットの形成密度が100%、すなわち全ての画素にドットが形成されることを表しており、密度データの階調値「0」は、ドットの形成密度が0%、すなわちいずれの画素にもドットが形成されないことを表している。こうした密度データへの変換は、ドット密度変換テーブルと呼ばれる数表を参照することによって行うことができる。
図41は、各画素の階調値を大中小各ドットについての密度データに変換する際に参照されるドット密度変換テーブルを概念的に示した説明図である。図示されているように、ドット密度変換テーブルには、画素の階調値に対して、小ドット・中ドット・大ドットの各ドットについての密度データが設定されている。階調値が「0」近傍の領域では、中ドット・大ドットの密度データは、いずれも階調値が「0」に設定されている。小ドットの密度データは、階調値が大きくなるに連れて増加して行くが、階調値がある値に達すると今度は逆に減少し始め、代わりに中ドットの密度データが増加し始める。階調値が更に増加してある値に達すると、小ドットの密度データが階調値「0」となり、中ドットの密度データが減少し始めて、代わりに大ドットの密度データが少しずつ増加していく。図40のステップS402では、このドット密度変換テーブルを参照しながら、画素の階調値を、大ドットの密度データ、中ドットの密度データ、小ドットの密度データに変換する処理を行う。
<大ドットの形成有無の判断>
処理対象とする画素について、大中小各ドットの密度データが得られたら、先ず初めに大ドットについての形成有無を判断する(図40のステップS404)。かかる判断は、大ドットの密度データと、処理対象としている画素の対応する位置に設定されているディザマトリックスの閾値とを比較することによって行う。大ドットの密度データが閾値よりも大きい場合は、処理対象の画素には大ドットを形成するものと判断し、逆に密度データの方が小さい場合は、大ドットは形成しないものと判断する。
次いで、処理対象の画素に大ドットを形成すると判断されているか否かを判定し(ステップS406)、大ドットを形成すると判断されている場合は(ステップS406:yes)、中ドットおよび小ドットについての判断は省略して、全画素を終了したか否かを判断する(ステップS418)。そして、ドット形成の有無を未判断の画素が残っている場合は(ステップS418:no)、ステップS400に戻って新たな画素を選択し、続く一連の処理を行う。
<中・小ドットの形成有無の判断>
一方、処理対象の画素に大ドットを形成すると判断されていない場合は(ステップS406:no)、中ドットについての形成有無を判断するべく、大ドットの密度データに中ドットの密度データを加算して中ドット用の中間データを算出する(ステップS408)。こうして得られた中ドット用の中間データと、ディザマトリックスの閾値とを比較する。そして、中ドット用の中間データの方が閾値よりも大きければ、中ドットを形成するものと判断し、逆に中間データよりもディザマトリックスの閾値の方が大きければ、中ドットを形成しないものと判断する(ステップS410)。
次いで、処理対象の画素に中ドットを形成すると判断されているか否かを判定し(ステップS412)、中ドットを形成すると判断されている場合は(ステップS412:yes)、小ドットについての判断は省略して、全画素を終了したか否かを判断する(ステップS418)。
処理対象の画素に中ドットを形成すると判断されていない場合は(ステップS412:no)、小ドットについての形成有無を判断するべく、中ドット用の中間データに小ドットの密度データを加算して小ドット用の中間データを算出する(ステップS414)。そして、得られた小ドット用の中間データと、ディザマトリックスの閾値とを比較する。そして、小ドット用の中間データの方が閾値よりも大きければ、小ドットを形成するものと判断し、逆に中間データよりもディザマトリックスの閾値の方が大きければ、いずれのドットも形成しないものと判断する(ステップS416)。
すなわち、大ドットの密度データよりもディザマトリックスに設定された閾値の方が大きい画素(大ドットが形成されない画素)については、大ドットの密度データに中ドットの密度データを加算して、得られた中間データと閾値とを比較し、中間データの方が大きくなれば、中ドットを形成すると判断する。一方、中間データよりも依然として閾値の方が大きい画素については、中間データに小ドットの密度データを加算して新たな中間データを算出する。そして、この中間データと閾値とを比較して、新たな中間データの方が大きくなれば小ドットを形成すると判断し、依然として閾値の方が大きい画素についてはいずれのドットも形成しないと判断するのである。
以上のような処理を行うことにより、処理対象の画素について、大ドット、中ドット、小ドットのいずれのドットを形成するか、若しくは、いずれのドットも形成しないかを判断することができる。そこで、全画素についての処理を終了したか否かを判断し(ステップS418)、未判断の画素が残っている場合は(ステップS418:no)、ステップS400に戻って新たな画素を選択し、続く一連の処理を行う。このようにして、処理対象として選択された画素について1つずつ、大中小のいずれのドットを形成するか否かを判断していく。そして、全画素について処理を終了したと判断されたら(ステップS418:yes)、図40に示したハーフトーン処理を終了する。
以上、ディザマトリックスを利用して、大中小の各ドットについての形成有無を判断する方法について説明した。以下では、上述の説明を踏まえて、図12Aに示した多値化テーブルの設定方法について説明する。
<概念図>
前述したように多値階調値データ生成処理およびドット形成用データ生成処理では、CMYK画像データの1つの画素の階調値から8つの画素についてドット形成の有無が決定される。ここで、CMYK画像データの1つの画素の階調値が、8つの画素の階調値を代表していると考えて、前述したハーフトーン処理に当てはめてる。
図42は、CMYK画像データの1つの画素の階調値が、8つの画素の階調値を代表していると考えて、ハーフトーン処理を実行したときの概要について説明したものである。図中では、ハーフトーン処理を行うために着目している8つの画素を太い実線で囲って表している。8つの画素の各階調値は、いずれも同じ値、ここでは階調値「97」を有している。大中小各種ドットの形成有無を判断するためには、各画素の階調値を各ドットについての密度データに変換する。密度データへの変換は、図41に示したドット密度変換テーブルを参照することによって行う。ここでは、8つの画素内の全画素が同じ階調値を有するものと考えているから、各種ドットについても密度データも全て画素について同じ値となる。図示した例では、大ドットの密度データの階調値が「2」、中ドットの密度データの階調値が「95」、小ドットの密度データの階調値が「30」であった場合を表している。
次いで、図40を用いて説明したように、大ドットの密度データ、中ドット用の中間データ、あるいは小ドット用の中間データと、ディザマトリックスに設定されている閾値とを比較することによって、各種ドットについての形成有無を画素毎に判断する。ここで、比較に用いるディザマトリックスの閾値は、ディザマトリックスの中から、着目している8つの画素に対応する箇所に設定されている閾値を使用する。例えば、図42に示した例では、8つの画素が画像の左上隅にあることから、閾値についても、ディザマトリックス中の左上隅の8つの画素(1つの単位ブロック)に設定されている閾値を使用する。
そして、8つの画素に設定されている8つの閾値の中で、大ドットの密度データよりも小さな閾値が設定されている画素については、大ドットを形成すると判断する。ここでは、大ドットの密度データは階調値「2」としているから、大ドットが形成される画素は、閾値「1」が設定されている画素だけである。図42では、大ドットが形成されると判断された画素には、細かい斜線を付して表示している。大ドットの密度データ「2」よりも大きく、大ドットの密度データと中ドットの密度データとを加算して得られた中ドット用の中間データ「97」よりも小さな閾値が設定されている画素には、中ドットを形成するものと判断する。このような画素は、閾値「42」が設定された画素、および閾値「58」が設定された画素の2つの画素だけである。図42では、中ドットが形成されると判断された画素には、少し粗い斜線を付して表示している。そして、最後に、中ドット用の中間データ「97」よりも大きく、中ドット用の中間データに小ドット用の密度データを加算して得られた小ドット用の中間データ「127」よりも小さな閾値が設定されている画素には、小ドットを形成するものと判断する。このような画素は、閾値「109」が設定された画素だけである。図42では、小ドットが形成されると判断された画素には、粗い斜線を付して表示している。このようにして、大ドット、中ドット、小ドットの形成有無を判断した結果、着目している画素の階調値が「97」である場合には、大ドット1個、中ドット2個、小ドット1個が形成されることになる。
画素の階調値が大きく異なれば、8つの画素内に形成される大ドット、中ドット、小ドットの個数も異なったものとなる。また、画素の階調値を「0」から「255」まで変化させれば、それに伴って大ドット、中ドット、小ドットの個数は、幾段階かに変化するはずである。更に、画素に設定された分類番号が異なれば、ディザマトリックスの閾値も異なることから、ドット個数の変化の仕方も異なるはずである。図12Aに示した多値化テーブルは、画素の階調値を「0」から「255」まで変化させたときの、各種ドットの個数が段階的に変化する挙動を、分類番号毎に調べることによって設定されている。
<多値化テーブルの生成方法>
図43は、実際に、多値化テーブルを設定する処理の流れを示したフローチャートである。以下、フローチャートに従って説明する。多値化テーブルの設定処理を開始すると、先ず初めに、分類番号を1つ選択する(ステップS500)。例えば、ここでは分類番号『1』を選択したものとする。
次いで、選択した分類番号に対応する閾値を、ディザマトリックスの中から読み出してやる(ステップS502)。例えば、ここでは分類番号『1』を選択したものとしているから、図37Aに例示したディザマトリックスの中から、図38B中で『1』と表示したブロック位置に設定されている8つの閾値を読み出す。
そして、多値階調値データRVおよび画素の階調値BDを「0」に設定し(ステップS504)、更に、大ドット、中ドット、小ドットの形成個数をいずれも0個に設定する(ステップS506)。
続いて、図41に示したドット密度変換テーブルを参照することにより、画素の階調値を大ドット、中ドット、小ドットについての密度データに変換した後(ステップS508)、これら密度データと先に読み込んでおいた閾値とに基づいて、大中小の各種ドットについての形成個数を決定する(ステップS510)。すなわち、図40あるいは図42を用いて説明したように、大ドットの密度データよりも小さな閾値の個数を求めて、得られた個数を大ドットの形成個数とする。また、大ドットの密度データよりも大きく且つ中ドット用の中間データよりも小さな閾値の個数を求めて、これを中ドットの形成個数とする。更に、中ドット用の中間データよりも大きく且つ小ドット用の中間データよりも小さな閾値の個数を求めて、これを小ドットの形成個数とする。
こうして求めた各種ドットの形成個数が、先に設定されていた形成個数に対して変更されたか否かを判断する(ステップS512)。そして、形成個数が変更されたと判断されれば(ステップS512:yes)、多値階調値データRVを「1」だけ増加させて(ステップS514)、得られた多値階調値データRVを画素の階調値BDに対応づけて記憶する(ステップS516)。一方、形成個数が変更されていないと判断された場合は(ステップS512:no)、多値階調値データRVを増加させることなく、そのままの値を画素の階調値BDに対応づけて記憶する(ステップS516)。
以上のようにして、ある画素の階調値に対する多値階調値データを記憶したら、画素の階調値BDが階調値255に達したか否かを判断する(ステップS518)。階調値255に達していなければ(ステップS518:no)、画素の階調値BDを「1」だけ増加させて(ステップS520)、ステップS508に戻って再び画素の階調値BDを密度データに変換した後、続く一連の処理を行って、新たな画素の階調値BDに対応づけて多値階調値データRVを記憶する(ステップS516)。画素の階調値BDが階調値255に達するまで、こうした操作を繰り返す。そして、画素の階調値BDが階調値255に達したら(ステップS516:yes)、選択した分類番号については、すべての多値階調値データを設定したことになる。
そこで、すべての分類番号について、以上のような処理を行ったか否かを判断し(ステップS522)、未処理の分類番号が残っている場合は(ステップS522:no)、ステップS500に戻って再び上述した処理を行う。こうした処理を繰り返し、すべての分類番号について、すべての多値階調値データを設定したと判断されたら(ステップS522:yes)、図43に示した多値化テーブル設定処理を終了する。
以上の説明から明らかなように、多値階調値データは、画素の階調値を変換して得られた大中小各ドットの密度データと、ディザマトリックス中で分類番号に対応する位置に記憶されている閾値とによって決定される。ここで、図41に示したドット密度変換テーブルは、分類番号が異なっていても同じテーブルを参照するから、画素の階調値に対する各ドットの密度データも、分類番号によらず同じ密度データが得られる。しかし、ディザマトリックスから読み出された閾値の組は、分類番号毎に異なったものとなる。何故なら、ディザマトリックスは、画像上でドットが一定のパターンで発生したり、あるいは近接した位置に固まって発生することで画質を悪化させることの無いように、閾値は出来るだけ分散させて且つ出来るだけランダムに設定されている。このため、分類番号に対応する複数個の閾値を組として見たときに、全く同じ組合せとなる可能性は極めて低いと考えられるからである。このような理由から、本実施形態の多値階調値データ生成処理で参照される多値化テーブルは、画素の階調値と多値階調値データとの対応関係が分類番号毎に異なったものとなり、また、多値階調値データが変化する回数(図12Bに示した多値化の段数)も、分類番号に応じて異なったものとなっている。
===ドット個数データ変換テーブルの設定方法===
次に、図16に示すドット個数データ変換テーブルの設定方法について説明する。このドット個数データ変換テーブルは、図11に示したドット形成有無決定処理中で、多値階調値データを分類番号と組み合わせて、分類番号に対応する8つの画素に形成されるドット個数を表すドット個数データに変換するために参照されるテーブルである。
図43にて説明した多値化テーブルの設定方法から明らかなように、多値化テーブルに設定されている多値階調値データは、分類番号に対応する8つの画素に形成される大中小の各ドットの個数に基づいて決定されている。もっとも、多値階調値データが、分類番号に対応する8つの画素に形成されるドット個数の組合せに直ちに対応しているわけではなく、多値階調値データと分類番号とを組み合わせることで初めて、具体的なドット個数の組合せに対応付けることができる。何故なら、多値階調値データは、画素の階調値を階調値「0」から階調値「255」まで増加させたときに、大中小各ドットの形成個数が変化したか否かだけを抽出し、具体的に各ドット個数の組合せがどのように変化したかを示す情報は省かれた状態で設定されているからである。
とは言え、分類番号が分かっていれば、その分類番号に対応する8つの画素で何回目の変化に相当するか、すなわち多値階調値データから、各種ドットについての具体的な個数の組合せを特定することはできる。そこで、分類番号毎に、多値階調値データを設定する元になった各種ドットの具体的な個数を求め、得られたドット個数の組合せに対応するコードデータを、多値階調値データに対応付けて記憶しておく。図16に示したドット個数データ変換テーブルは、こうした操作を、全ての分類番号について行うことによって設定されている。
図44は、ドット個数データ変換テーブルを設定する具体的な処理の流れを示したフローチャートである。以下、フローチャートに従って説明する。ドット個数データ変換テーブル設定処理を開始すると、先ず初めに、設定対象とする分類番号を1つ選択し(ステップS600)、多値階調値データRVを0に設定する(ステップS602)。
次いで、多値階調値データRVに対応する大中小各ドットの個数を取得する(ステップS604)。例えば、多値階調値データが「N」であったとすると、その分類番号について、画素の階調値を「0」から「255」に変化させながら大中小各ドットの形成有無を判断し、ドットの形成個数がN番目に変化したときの大ドット、中ドット、小ドットの個数を取得する。
こうして取得した各ドットの個数の組合せを、コードデータに変換する(ステップS606)。ドット個数の組合せからコードデータへの変換は、図17に示した対応表を参照することによって行う。次いで、得られたコードデータを、多値階調値データに対応付けて記憶した後(ステップS608)、対象としている分類番号についての最大の多値化結果に達したか否かを判断する(ステップS610)。すなわち、図12Bを用いて説明したように、多値階調値データの最大値は、分類番号によって異なっていることから、対象としている分類番号についての多値階調値データの最大値に達したか否かを判断するのである。
そして、多値階調値データの最大値に達していない場合は(ステップS610:no)、多値階調値データRVの値を「1」だけ増加させる(ステップS612)。そして、ステップS604に戻って、新たな多値階調値データRVに対応する各ドットの個数を取得した後、続く一連の処理を繰り返す。こうした操作を繰り返し、対象としている分類番号の多値階調値データの最大値に達したと判断されたら(ステップS610:yes)、その分類番号については、全データがドット個数データ変換テーブルに設定されたことになる。
そこで今度は、全ての分類番号について同様の処理を行ったか否かを判断する(ステップS614)。そして、未だ処理していない分類番号が残っている場合は、ステップS600に戻って新たな分類番号を選択し、この分類番号について、上述した一連の処理を行う。こうして全ての分類番号について処理を終了したと判断されたら(ステップS614:yes)、ドット個数データ変換テーブルの全てのデータが設定されたことになるので、図44に示す処理を終了する。
===順序値マトリックスの設定方法===
次に、図18にて説明した順序値マトリックスを設定する方法について説明する。前述したように、順序値マトリックスとは、分類番号に対応する8つの画素内の各画素について、ドットが形成される順番を設定したマトリックスである。ドット形成用データ生成処理においては、分類番号に対応する順序値マトリックスを読み込んで、マトリックスに設定されている順番に従って、大ドット、中ドット、小ドットを形成する画素を決定していた。
順序値マトリックスも、前述した多値化テーブルと同様に、前述した手法を基にして設定されている。すなわち、多値化テーブルを設定する場合は、前述したように8つの画素内の全画素が同じ階調値を有するものとして、8つの画素内に形成される大中小ドットの個数を決定しながら、画素の階調値を「0」から「255」まで変化させて、このときに各ドットが形成される個数の変化に着目して多値階調値データを設定した。また、図16に示すように、多値階調値データと分類番号とを組み合わせれば、8つの画素に形成される大中小の各ドットの個数までは復元することができた。しかし、これら各種ドットが、8つの画素内のどの画素に形成されるかに関する情報は省略されており、多値階調値データあるいは分類番号からは知ることはできない。順序値マトリックスは、8つの画素内で各種ドットが形成される画素位置に関する情報を記憶したものと考えることができる。すなわち、前述した手法を適用すれば、図40ないし図42にて説明したように、各種ドットの形成個数だけでなく、8つの画素内でドットが形成される画素位置まで決定可能であるところ、本実施形態では、この手法を2つの要素に分解して、各種ドットの形成個数に関する情報については、主に多値階調値データ(正確には、多値階調値データおよび分類番号の組合せ)に反映させ、ドットが形成される画素位置に関する情報ついては、順序値マトリックスに反映させていると考えることができる。このような順序値マトリックスは、実際には、比較的簡単に設定することができる。
図45は、順序値マトリックスを設定する方法について具体的に示した説明図である。以下、図を参照しながら説明する。ディザマトリックスには、図45Aに示すように、横4画素、縦2画素を1つの単位ブロックとして区分して、これら区分された各単位ブロック毎にそれぞれ個別に分類番号が設定されている。順序値マトリックスの設定に際しては、ディザマトリックスから各分類番号に対する8つの画素に対応する各閾値を取り出す。
図45Bは、一例として、分類番号『1』のブロックから順序値マトリックスを生成している様子を示した説明図である。図45Bの左側には、分類番号『1』のブロックに含まれるディザマトリックスの閾値が示されている。図42を用いて前述したように、ドットは小さな閾値が設定されている画素から順番に形成される。従って、図45Bに示した分類番号『1』のブロックの中で1番初めにドットが形成される画素は、閾値「1」が設定された画素と考えることができる。そこで、この画素には、順序値として「1」を設定する。同様に、2番目にドットが形成される画素は、2番目に小さな閾値である閾値「42」が設定された画素と考えることができる。そこで、この画素には順序値「2」を設定する。このようにして、分類番号『1』のブロック内に設定されている閾値の小さな画素から順番に、順序値「1」から順序値「8」までを決定してやれば、図45Bの右側に示した分類番号『1』の順序値マトリックスを得ることができる。
図45Cは、同様にして、ブロック内で小さな閾値が設定されている画素から順番に、順序値「1」から順序値「8」までを設定することで、分類番号『2』の順序値マトリックスが得られる様子を示している。図45Aに示した分類番号『1』から『1024』までの全てのブロックについて、以上のような操作を行うことにより、分類番号『1』から『1024』までの順序値マトリックスを得ることができる。
===多値階調値データからドット形成有無を適切に決定可能な原理===
以上に説明したように、本実施形態では、図12Aにて説明した多値化テーブルを参照することにより多値階調値データを決定する。次いで、図16にて説明したドット個数データ変換テーブル、および図18にて説明した順序値マトリックスを参照しながら、多値階調値データをドット個数データに変換し、そのドット個数データに基づいて複数個の画素内に各種ドットを形成する画素位置を決定する。このようにしてドットを形成する画素位置を決定した場合でも、ドットが適切に分散された高画質な画像を出力することができる。加えて、比較的少数ずつ(本実施形態では8個ずつ)の画素をまとめて処理しているにも関わらず、いわゆるブルーノイズマスク、あるいはグリーンノイズマスクに代表される画素数が千個を越えるような大規模なディザマトリックスを用いることで実現されるような、良好なドット分布を得ることが可能である。以下では、このようなことが可能となる原理について説明する。
前述した手法を用いれば、図40および図41にて説明したように、画像データを大ドットの密度データ、中ドット用の中間データ、小ドット用の中間データに変換して、ディザマトリックスに設定されている閾値と比較することで、大中小各ドットについての形成の有無を判断することができる。更に、このときに参照するディザマトリックスを、いわゆるブルーノイズマスク、あるいはグリーンノイズマスクに代表されるような分散性が考慮されたマトリックスとしておけば、ドットが良好に分散した高画質な画像を得ることができる。
また、画像データは一般的に、隣接する画素間では近似する(若しくは同一の)階調値が割り当てられる傾向がある。近年では、高画質化の要請から画像データの解像度は益々高くなる傾向にあるが、隣接する画素間で近似若しくは同一の階調値が割り当てられる傾向は、画像データの解像度が高くなるほど顕著に現れる。このことから、図42を用いて前述したように、複数個の画素をまとめてしまい、複数個の画素内の画素は全て同じ階調値を有するものとして大中小各ドットの形成有無を判断した場合でも、実際には画質に差が生じることは稀である。
ここで、前述した多値階調値データ生成処理では、画素の階調値を多値化して、分類番号に依存した多値階調値データを生成する。こうして生成された多値階調値データは、画素の分類番号と組み合わせることで、8つの画素内に形成される各種ドットの個数を示すデータとなっている。図42に示した8つの画素については、分類番号と組み合わせることで、大ドット、中ドット、小ドットの形成個数が、それぞれ1個、2個、1個であることを示すような多値階調値データが生成されることになる。
前述したドット形成データ生成処理では、このような多値階調値データを受け取ると、8つの画素内の各画素について、大中小各ドットについての形成有無を決定する。図46は、前述したドット形成データ生成処理において、多値階調値データを受け取って、8つの画素内の各画素について大中小各ドットの形成有無を判断する処理の大まかな流れを概念的にまとめた説明図である。図示されているように、多値階調値データを受け取ると、その多値階調値データが対応する画素の分類番号を求めた後、多値階調値データと分類番号とに基づいて、大中小各ドットの形成個数を取得する。また、予め記憶されている順序値マトリックスの中から、分類番号に対応付けて記憶されているマトリックスを読み出す。
図42に示した8つの画素を想定しながら説明すれば、8つの画素は画像の左上隅にあるから分類番号は『1』と求められる。多値階調値データと、求めた分類番号とを組み合わせることにより、この8つの画素には、大ドット1個、中ドット2個、小ドット1個がそれぞれ形成されることが分かる。これら各ドットが、8つの画素内のどの画素に形成されるかを決定するために、分類番号『1』の順序値マトリックスを参照する。この順序値マトリックスは、図42において、ドット形成有無の判断に用いたディザマトリックスの該当部分、すなわち8つの画素内の各画素についてドット形成の有無を判断するために用いた該当部分から生成した順序値マトリックスである。
このようにして得られた大中小各ドットの個数と、順序値マトリックスとに基づいて、8つの画素内でこれらドットを形成する画素位置を決定していく。画素位置を決定する具体的な方法は、図19を用いて既に説明しているので、ここでは説明は省略して結果のみを示すと、大ドットは順序値1番の画素に形成され、中ドットは順序値2番の画素と3番の画素とに形成され、小ドットは順序値4番の画素に形成される。図46では、図19に倣って、大ドットを形成する画素には細かいハッチングを付し、中ドットを形成する画素には少し粗いハッチングを付し、小ドットを形成する画素には粗いハッチングを付して表している。こうして得られたドットの分布と、図42に示した画素毎にドット形成の有無を判断して得られたドットの分布とを比較すれば、両者のドット分布は完全に一致していることが分かる。
すなわち、分類番号に依存した多値階調値データのみを受け取った場合でも、上述した方法を用いてドット形成の有無を決定してやれば、ディザ法を参照しながら画素毎に大中小各ドットの形成有無を判断した場合と、等しいドット分布を得ることができる。このため、ドットが良好に分散された高画質な画像を得ることが可能となるのである。
加えて、多値階調値データを生成するために参照された多値化テーブルは、ディザマトリックスに基づいて設定されている(図44参照)。同様に、多値階調値データからドット形成有無を決定する過程で参照されたドット個数データ変換テーブルあるいは順序値マトリックスも、ディザマトリックスに基づいて設定されている(図44、図45参照)。従って、これらテーブル類の設定に用いられるディザマトリックスとして、いわゆるブルーノイズマスク、あるいはグリーンノイズマスクを使用すれば、これらマスクを用いることで初めて得られるような、高画質な画像を得ることが可能となる。
===まとめ===
以上本実施形態にあっては、色変換処理ユニット180により生成されたCMYK画像データの各画素の階調値を多値化処理ユニット182により多値階調値データに変換し、ドット形成用データ生成ユニット184が、多値階調値データをドット個数データに変換し、このドット個数データに基づき、所定の数の画素(ここでは8つの画素)についてそれぞれ個別にドット形成の有無を決定して、そのドット形成の有無が決定された画素(ここでは8つの画素)の中から、出力画像の解像度に応じて所定の個数ずつ切り出して、出力画像の解像度に応じてドット形成用データを生成するから、ドット形成用データを生成する処理をスムーズに効率よく行うことができる。これにより、画像処理およびデータ転送の高速化を図ることができる。
また、本実施形態では、多値化処理を行う前に、媒体Sに印刷する際の解像度(出力解像度)への変換処理を行う必要はなく、ドット形成用データ生成ユニット184にてドット形成用データを生成する段階にて、媒体Sに印刷する際の解像度(出力解像度)に応じて変換が行われるから、画像処理中のデータ量の発生を大幅に抑制することができる。
また、ここで生成される多値階調値データは、出力画像の解像度に依存しない所定のビット数(ここでは、5ビット)のデータであるから、SDRAM102上にて、多値階調値データを格納する多値階調値データバッファ188を設定するために確保しなければならない領域のサイズを、媒体Sに印刷される画像(出力画像)の解像度に関わりなく、一定にすることができる。これにより、高い解像度にて媒体Sに画像を印刷するときに、SDRAM102上に確保される多値階調値データバッファ188の大きさを大幅に小さくすることができる。また、SDRAM102へのアクセス回数を抑制することができる。これらのことから、画像処理およびデータ転送の高速化をより一層実現することができる。
しかも、多値化処理ユニット182により多値化処理されて生成される多値階調値データは、所定の多値化段数にて表されたデータであるから、画像を印刷する場合にも、印刷される画像を十分に高い画質にて印刷することができる。
さらに、ドット形成用データ生成ユニット184が、ドット個数データに基づき、所定の数の画素(ここでは8つの画素)についてそれぞれ個別にドット形成の有無を決定して、このようにドット形成の有無が決定された所定の個数の画素(ここでは8つの画素)の中から、出力画像の解像度に応じて所定の個数ずつ切り出すことで、出力画像の解像度に応じてドット形成用データを生成する処理をスムーズに行うことができる。また、ドット形成の有無が決定された8つの画素の中から切り出す画素の位置を適宜変更することで、出力画像の解像度に応じてドット形成用データを生成する処理を簡単に行うことができる。
またさらに、ここでは、多値化処理ユニット182により生成された多値階調値データが、ドット形成用データ生成ユニット184に直接送られる場合(『ダイレクトモード』)と、SDRAM102の多値階調値データバッファ188に一旦格納される場合(『SDRAMモード』)と、2つの場合(モード)があるから、SDRAM102に格納すべきデータ量を削減することができ、これにより、メモリ容量の節約やメモリへのアクセス回数の削減を図ることができる。
===他の実施形態===
<他の多値化テーブル>
前述した実施形態では、多値化テーブルとして、『0』から『255』までの各階調値毎にそれぞれ対応する多値階調値データが設定された多値化テーブルを用いていた。しかしながら、多値階調値データは、CMYK画像データの画素の階調値が増加するに従って段階的に増加するだけなので、多値階調値データが切り換わる階調値だけを設定しておけば、CMYK画像データの各画素の階調値に対応する多値階調値データを求めることができる。
図47は、多値階調値データが切り換わる階調値だけが設定された多値化テーブルの一例を説明したものである。この多値化テーブルには、各分類番号『1』〜『1024』毎にそれぞれ、各多値階調値データ『0』〜『31』に対応する、CMYK画像データの画素の階調値の閾値が設定されている。この閾値は、階調値を『0』から『255』まで増加させたときに、その多値階調値データとなる最も大きな階調値を示している。一例として、分類番号『1』においては、多値階調値データ『0』に対して閾値『2』が設定されている。これは、分類番号『1』については、CMYK画像データの画素の階調値が『0』から『2』までの範囲にあれば、多値階調値データが『0』となることを表している。また、多値階調値データが『1』に対しては、閾値『15』が設定されている。これは、分類番号『1』については、CMYK画像データの階調値が『3』〜『15』の範囲にあれば、多値階調値データが『1』となることを表している。同様に、多値階調値データが『14』に対しては、閾値『243』が設定され、多値階調値データが『15』に対しては、閾値『255』が設定されている。これは、CMYK画像データの画素の階調値が『244』から『255』までの範囲にあれば、多値階調値データが『15』になることを示している。また、分類番号『1』については、多値階調値データの最大値が『15』であることを表している。
なお、図47では、分類番号『1』〜『1024』別の閾値は、それぞれ多値階調値データに対応させて設定されているものとした。しかし、分類番号『1』〜『1024』別の閾値は、特に多値階調値データに対応付けることなく、単なる閾値の組を分類番号『1』〜『1024』毎に記憶することとしてもよい。この場合は、CMYK画像データの画素の階調値よりも小さな閾値の個数を数えることで、多値階調値データを求めることができる。ここで、分類番号『1』の場合を例に用いて説明する。例えば、CMYK画像データの階調値が『20』であったとする。分類番号『1』に設定されている閾値の組の中で、階調値『20』よりも小さな閾値は、『2』、『15』、『18』の3個である。このことから、階調値『20』に対する多値化結果値は『3』であると求めることとしてもよい。
以上このような多値化テーブルを備えれば、CMYK画像データの画素の階調値と、分類番号とを取得した後、多値階調値データを簡単に生成することができる。しかも、この多値化テーブルは、前述した図12Aに示す多値化テーブルに比べて少ないデータ量で記憶しておくことができる。このため、ここでは、前述した図12Aに示す多値化テーブルを備える場合に比べて、メモリ使用量を大幅に節約することが可能である。
<ドット形成の有無決定の他の方法(1)>
前述した実施形態では、ドット形成用データ生成ユニット184は、多値階調値データを、8つの画素について形成すべきドットの個数を表わすドット個数データに変換し、8つの画素(『4×4モード』の場合には、16個の画素、以下同じ)についてドット形成の有無を決定するにあたっては、8つの画素の各画素についてドットを形成するか否かをドットの種類(サイズ)毎に決定した。例えば、図19にて説明したように、まず最初に大ドットについてドット形成の有無を決定し、次に中ドットについてドット形成の有無を決定し、最後に小ドットについてドット形成の有無を決定するといった手順を取っていた。しかしながら、ドット形成の有無を決定する方法にあっては、このような方法に限られるものではない。例えば、8個の画素の中から1つの画素を選択して、各画素毎にそれぞれ、大中小のいずれのドットが形成されるのか、あるいはドットが形成されないかを決定することとしてもよい。
図48は、この場合のドット形成用データ生成ユニット184によるドット形成の有無の流れを示したフローチャートである。ここでは、前述したドット形成の有無決定処理と同様に、まず最初に、処理対象とする多値階調値データを取得する(ステップS700)。次に、取得した多値階調値データに対応する分類番号を取得する(ステップS702)。そして、分類番号と多値階調値データとに基づき、ドット個数データを取得する(ステップS704)。ドット個数データは、例えば、図16にて説明したドット個数データ変換テーブルにより取得する。
この後、ここで説明する処理は、取得したドット個のデータを一旦、16ビット長の中間データに変換する(ステップS706)。すなわち、例えば、図16にて説明したドット個数データ変換テーブルでは、データ量を低減するために、ドット個数データを8ビット長のコードデータとして表した。しかし、ここで説明する処理では、ドット形成有無をより簡便に決定可能な形式で表現された中間データに一旦変換する。ここで、中間データのデータ長が16ビットとなっているのは、ドット形成の有無を決定すべき画素の数が8個であり、各画素についてのドット形成の有無は2ビットあれば表現可能であることによる。換言すれば、中間データは2ビットずつを1組として、画素数に相当する8組のデータを用いてドット個数を表すデータとなっている。8つの画素に形成するドット個数をこのような形式で表現しておけば、後述するように画素との対応が取り易くなるため、ドット形成有無を簡便に決定することが可能となる。ここで説明するドット形成の有無決定処理にあっては、ドット個数データと中間データとの対応関係が予め記憶されており、ステップS706の処理では、かかる対応関係を参照することによって中間データを取得する。
図49は、ドット個数データと中間データとを対応付けた対応表を示す説明図である。前述したようにドット個数データは、各種サイズのドットについての個数の組合せに対応付けられている(図17参照)。このことから、2ビットを1組としてドットの種類を表し、そのビットの組をドットの個数に相当する数だけ並べた表現形式に変換すれば、16ビットのデータを得ることができる。16ビット長の中間データは、ドット個数データの表現形式をこの様にして変換して得られたデータとなっている。
例えば、ドット個数データ『1』は、大ドット0個、中ドット0個、小ドット1個の組合せを示している。なお、図49の右側には、各ドット個数データが示すドット個数の組合せが示されている。今、小ドットを表す2ビットデータを『01』とすれば、コードデータ『1』に対応する16ビットデータは、『01』が1組だけ含まれ、他の7組の2ビットデータは『00』のデータとなる。尚、2ビットデータ『00』はドットを形成しないことを表す。
同様に、ドット個数データ『163』は、大ドット7個、中ドット1個、小ドット0個の組合せを示している。大ドットを表す2ビットデータを『11』として、中ドットを表す2ビットデータを『10』とすれば、ドット個数データ『163』に対応する16ビットデータは、『11』の2ビットデータが7組含まれており、『10』の2ビットデータが1組含まれたデータとなる。
なお、これら2ビットデータは、大ドット、中ドット、小ドットの順番で、右詰めで設定されている。例えば、ドット個数の組合せが、大ドット1個、中ドット2個、小ドット3個であったとすると、8組の2ビットデータの中で、大ドットを表す2ビットデータ『11』は右端に1組だけ設定され、その左隣に続けて、中ドットを表す2ビットデータ『10』が2組設定され、更にその左隣に続けて、小ドットを表す2ビットデータ『01』が3組設定され、残った2組には、ドットを形成しないことを表す2ビットデータ『00』が設定されることになる。もっとも、これら2ビットデータを左詰めで設定することとしても良い。すなわち、大ドット、中ドット、小ドットの順番で左から順番に設定しても良い。
図48にて説明したドット形成の有無決定処理のS706では、図49に示した対応関係を参照することによって、ドット個数を表すデータを、中間データに変換する処理を行う。なお、以上の説明では、図16にて説明したドット個数データ変換テーブルを参照することによって、多値階調値データをドット個数データに一旦変換した後、図49にて説明した対応関係に基づいて、ドット個数データを16ビットの中間データに変換するものとした。もっとも、ドット個数データと中間データとは、1対1に対応付けられていることから、図16にて説明したドット個数データ変換テーブルに、8ビットのドット個数データではなく、16ビットの中間データをドット個数データとして設定しておければ、直ちに中間データをドット個数データとして取得することも可能である。このようにすれば、ドット個数データ変換テーブルのデータ量は大きくなるものの、ドット個数データから中間データへの変換テーブルが不要になり、迅速に中間データを取得することができる。
以上のようにして中間データを取得した後、次に、順序値マトリックスを取得する(ステップS708)。順序値マトリックスを取得した後、8つの画素の中からドット形成の有無を決定する画素を1つ選択して(ステップS710)、順序値マトリックス中で選択した画素位置に設定されている順序値を取得する(ステップS712)。
次に、先に取得しておいた中間データの中から、順序値に対応する箇所に設定されている2ビットデータを読み出すことによって、選択した画素についてのドット形成の有無を決定することができる(ステップS714)。
図50は、中間データの中から順序値に対応する箇所のデータを読み出すことにより、ドット形成の有無を決定している様子を示した説明図である。図50Aは、ドット個数データを変換して得られた中間データを例示したものである。前述したように中間データは、16ビット長のデータであり、2ビットずつ8組のデータから構成されている。また、図50Aに示した中間データには、大ドットを表す2ビットデータ『11』が1組、中ドットを表す2ビットデータ『10』が2組、小ドットを表す2ビットデータ『01』が3組、ドットを形成しないことを表す2ビットデータ『00』が2組含まれており、これら2ビットデータが、大ドット、中ドット、小ドットの順序で右詰めに設定されている。
ここで、例えば、ドット形成の有無を決定しようとしている画素の順序値が『3』であったとする。この場合、中間データの中で、右から3組目に設定されている2ビットデータを読み出せば、順序値『3』の画素に形成すべきドットの種類を決定することができる。図50Bには、中間データの右端から3組目にある2ビットデータを読み出している様子が、概念的に示されている。図示した例では、読み出した2ビットデータは『10』であるから、この画素には、中ドットを形成するものと決定すればよい。仮に、順序値が『1』であれば、中間データの右端に設定されている2ビットデータ(『11』)を読み出して、大ドットを形成するものと決定すればよい。
このように、このドット形成の有無決定処理では、中間データの中から、順序値に相当する箇所に設定されている2ビットデータを読み出すという極めて簡単な操作によって、ドット形成の有無を決定することができる。これは、次の理由によるものである。先ず、中間データには、大ドット、中ドット、小ドットを表す2ビットデータが右詰めで設定されている。一方、図40や図42にて説明したように、ディザ法を用いて大中小各ドットの形成有無を決定する処理では、大ドット、中ドット、小ドットの順番でドット形成の有無を決定している。従って、中間データに設定されている2ビットデータを右端から順番に読み出していけば、図40や図42を用いて前述した手法を適用して各種ドットを形成する画素位置を決定した順番と同じ順番で、大ドット、中ドット、小ドットを表す2ビットデータの並びが得られることになる。
また、図40や図42を用いて前述した手法では、ディザマトリックスに小さな閾値が設定されている画素から順番にドットが形成される。一方、順序値マトリックスに設定されている順序値は、ディザマトリックスに設定されている閾値の小さい順番を表している。従って、順序値は、図40あるいは図42を用いて前述した手法を用いてドット形成の有無を決定したときに、ドットが形成された順番と一致する。
このことから、対象としている画素の順序値が分かれば、図40や図42の手法を適用したときに、その画素が8つの画素の中で何番目にドットが形成された画素であるかを知ることができ、更に、中間データを右端から数えて順序値組目の2ビットデータを読み出せば、図40や図42の手法を適用したときに得られるドット形成有無の決定結果を知ることができるのである。
なお、ここでは、中間データの中で2ビットデータを読み出す箇所を順序値に応じて変更するものとして説明したが、中間データの中で読み出す箇所を変えるのではなく、データを読み出す箇所は固定しておき、中間データを順序値に相当する組数だけシフトさせることとしても良い。この様にしても、ドット形成の有無を決定することができる。図50Cは、中間データをシフトさせることによって、ドット形成有無を決定している様子を概念的に示した説明図である。図示した例では、中間データの右端にある2ビットデータを読み出すこととして、中間データを画素の順序値に応じた組数(具体的には順序値から1だけ少ない組数)だけ右方向にシフトさせている。図50Bと図50Cとを比較すれば明らかなように、どちらの操作を行った場合でも、結局は、中間データの中の同じ箇所に設定されている2ビットデータを読み出していることになる。データを所定のビット数だけシフトさせる処理は、比較的高速に実施可能であることから、この様にして中間データをシフトさせれば、順序値に応じた箇所の2ビットデータを迅速に読み出して、着目している画素についてのドット形成の有無を迅速に決定することができる。
以上のようにして、中間データの中から順序値に相当する箇所に設定されている2ビットデータを読み出すことにより、着目している画素についてのドット形成の有無を決定したら(図48のステップS714)、8つの画素全てについてドット形成の有無を決定したか否かを判断する(ステップS716)。そして、8つの画素の中に未だドット形成の有無を決定していない画素が残っている場合は(ステップS716:no)、ステップS710に戻って新たな画素を1つ選択し、選択した画素について上述した続く一連の処理を行った後、再び8つの画素全てについてドット形成の有無を決定したか否かを判断する(ステップS716)。8つの画素全てについてドット形成の有無を決定するまで、こうした操作を繰り返し、全画素について決定したと判断されたら(ステップS716:yes)、今度は、全ての多値階調値データについて、前述した処理を行ってドット形成の有無を決定したか否かを判断する(ステップS718)。そして、未処理の多値階調値データが残っていれば(ステップS718:no)、ステップS700に戻って新たな多値階調値データを取得し、その多値階調値データについて一連の処理を行う。こうした操作を繰り返し、最終的に全ての多値階調値データについての処理を終了したと判断されたら(ステップS718:yes)、ドット形成の有無決定処理を終了する。
以上に説明したように、ここでは、中間データの中から順序値に応じた適切な箇所に設定されている2ビットデータを読み出すだけで、簡便にドット形成の有無を決定することができる。このことから、このようにして迅速にドット形成の有無を決定することができ、よって、より迅速に画像を印刷することが可能となる。
なお、ここでは、8つの画素について各々ドット形成の有無を決定する場合について説明したが、本実施形態の『4×4モード』においては、16個の画素について各々ドット形成の有無を決定することになる。つまり、図32にて説明した『4×4モード』におけるドット個数データと各種サイズのドットについての個数の組合せとに基づき、中間データが設定される。
<ドット形成の有無決定の他の方法(2)>
前述した実施の形態では、図16にて説明したドット個数データ変換テーブルを参照することによって、一旦、多値階調値データをドット個数データに変換した後、順序値マトリックスを参照しながら、8つの画素(『4×4モード』の場合には、16個の画素、以下同じ)の中にてドットを形成する画素の位置を決定した。しかしながら、ドット形成の有無の決定にあっては、前述したように順序値マトリックスを参照してドットを形成する画素の位置を決定することなく、取得した多値階調値データに基づき、直ちに、各種ドットを形成する画素位置を決定することも可能である。この方法について以下に詳しく説明する。
前述した実施の形態では、図46にて説明したように、多値階調値データと分類番号とを取得した後、多値階調値データと分類番号との組合せから、8つの画素に形成すべき各種ドットの個数を決定した。そして、これらドットを形成する画素位置については、分類番号に対応した順序値マトリックスを参照することによって決定していた。すなわち、多値階調値データおよび分類番号が決まれば、8つの画素の各画素に形成されるドットの種類を決定することができる。従って、予め、多値階調値データと分類番号との組合せ毎に、8つの画素内の各画素に形成されるドットの種類を求めて対応表に記憶しておけば、かかる対応表を参照するだけで、直ちにドット形成有無を決定することができるはずである。ここで説明するドット形成の有無決定処理は、このような考え方に基づいて、多値階調値データ、各画素についてそれぞれドット形成の有無を迅速に決定することが可能となっている。
図51は、ここで使用されるドット個数データ変換テーブルの一例を概念的に示した説明図である。このドット個数データ変換テーブルは、同図に示すように、多値化結果値と分類番号との組合せに対応付けて、8つの画素の中の各画素に形成されるドット種類を表すデータが設定されている。ここでは、このデータのことをドットデータと呼ぶこととする。図51にて示すドット個数データ変換テーブルを参照すれば、多値階調値データと分類番号との組合せから、対応するドットデータを直ちに取得することができる。例えば、分類番号が『i』であり、多値階調値データが『j』であれば、ドットデータは、DD(i,j)となる。こうして取得されたドットデータには、8つの画素の中の各画素についてドット形成の有無に関する情報が含まれている。
図52は、ここで使用されるドット個数データ変換テーブルに設定されているドットデータのデータ構造の一例を示した説明図である。図52Aは、ドットデータの一例を説明する。図52Bは、実際のドット形成イメージの一例を説明する。
ドットデータは、図52Aに示すように、2ビットずつのデータ8組から構成された16ビット長のデータとなっている。ここで、1つのドットデータが8組のデータから構成されているのは、1つの多値階調値データには、8つの画素に関する情報が含まれているからである。従って、例えば、本実施形態の『4×4モード』の場合のように、1つの多値階調値データが16個の画素に関する情報が含まれる場合は、1つのドットデータは、16組のデータから構成されることになる。この他に、本実施形態ではないが、1つの多値階調値データが4個の画素に関する情報が含まれる場合は、1つのドットデータは、4組のデータから構成されることになる。
図52に示すように、ドットデータを構成する8組のデータは、それぞれ8つの画素内の所定位置の画素に対応付けられている。例えば、図52Aに示したドットデータの先頭にある1組目のデータは、図52Bに示すように、8つの画素の中の左上隅の画素に対応している。また、ドットデータの先頭から2組目のデータは、8つの画素の中の上段の左から2番目の画素に対応している。このように、ドットデータを構成する8組のデータは、それぞれ8つの画素の中の所定位置の画素に予め対応付けられている。
そして、各組のデータの内容は、対応する画素に形成するドットの種類を表している。すなわち、2ビットのデータ『11』は大ドットを形成することを意味している。2ビットのデータ『10』は中ドットを形成することを意味しており、『01』は小ドットを形成することを、そして、『00』はドットを形成しないことを意味している。以上の説明から分かるように、図52Aに例示したドットデータは、8つの画素の中の左上隅の画素には大ドットを形成し、上段の左から3番目の画素には中ドットを形成することを表わすようになっている。また、このドットデータは、下段の左から2番目の画素には小ドットを形成し、8つの画素の中の右下隅の画素には中ドットを形成することを表わすようになっている。さらに、このドットデータは、その他の画素にはドットを形成しないことを表すようになっている。
このようなドット個数データ変換テーブルを参照すれば、分類番号と多値階調値データとに基づいて、8つの画素の中の各画素について各々ドット形成の有無を速やかに決定することが可能である。
なお、本実施形態では、このようなドット個数データ変換テーブルの他に、『2×4モード』と『4×4モード』とにおいて、それぞれ専用のドット個数データ変換テーブルが必要となる。
===その他の実施の形態===
以上、一実施形態に基づき、本発明に係るインクジェットプリンタ等の印刷装置について説明したが、上記の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更または改良され得るとともに、本発明には、その等価物が含まれることは言うまでもない。特に、以下に述べる実施形態であっても、本発明に含まれるものである。
<多値化処理について>
前述した実施の形態では、多値化テーブルを使用して多値階調値データを生成していたが、必ずしもこのような多値化テーブルを用いて多値階調値データを生成する場合には限らない。つまり、テーブルを用いずに演算等により多値階調値データを生成してもよい。
<ドット個数データ変換処理について>
前述した実施の形態では、ドット個数データ変換テーブルを使用して多値階調値データをドット個数データに変換していたが、必ずしもこのようなドット個数データ変換テーブルを用いて多値階調値データをドット個数データに変換する必要はない。つまり、テーブルを用いずに演算等によりドット個数データを取得してもよい。
<多値階調値データについて>
前述した実施の形態では、多値階調値データが32階調の5ビットのデータとして生成されていたが、本発明では必ずしもこのようなビット数のデータにより生成される必要はない。つまり、多値階調値データのビット数は、多値化処理部(多値化処理ユニット)が多値化する際の段数、即ち多値化段数に応じて適宜設定される。多値階調値データは、他のビット数のデータとして生成されても良い。
<ドット個数データについて>
前述した実施の形態では、ドット個数データが、形成すべきドットの個数の他、形成すべき各ドットのサイズ(即ち「小ドット」、「中ドット」、「大ドット」)をも表すコード化されたデータとなっていたが、本発明では必ずしもこのようにデータとなっている必要はない。つまり、ドット個数データは、少なくとも1種類のサイズのドットの個数を示せば良く、必ずしもドットのサイズ等の他の情報を表すデータとなっている必要はない。
<出力画像の解像度について>
前述した実施の形態では、出力画像の解像度が、『1×1モード』と、『2×1モード』と、『1×2モード』と、『2×2モード』と、『4×2モード』と、『2×4モード』と、『4×4モード』との7種類であったが、本発明にあっては、必ずしもこのような解像度に限定されるものではない。つまり、出力画像の解像度としては、他の解像度に設定されてもよく、任意に設定されるものである。
<1以上の画素について>
前述した実施の形態では、ドット形成用データ生成部(ドット形成用データ生成ユニット)により、ドット形成の有無が決定される「1以上の画素」として、8つの画素につきそれぞれ個別にドット形成の有無を決定していたが、この「1以上の画素」としては、必ずしもこのように8つの画素について個別にドット形成の有無が決定される場合に限らず、7つ以下の画素について個別にドット形成の有無が決定されてもよく、また9つ以上の画素について個別にドット形成の有無が決定されても良い。
<多値化処理部について>
前述した実施の形態では、多値化処理部が多値化処理ユニットとしてASIC95内に設けられていたが、多値化処理部にあっては、必ずしもこのようなASIC95内に設けられる場合には限られない。つまり、例えば、ASIC95内にではなく、独立して別途専用の処理回路等により構成されても良く、またソフトウェア的に処理する機能を有する構成部により構成されても良い。
<ドット形成用データ生成部について>
前述した実施の形態では、ドット形成用データ生成部がドット形成用データ生成ユニットとしてASIC95内に設けられていたが、ドット形成用データ生成部にあっては、必ずしもこのようにこのようなASIC95内に設けられる場合には限られない。つまり、例えば、ASIC95内にではなく、独立して別途専用の処理回路等により構成されても良く、またソフトウェア的に処理する機能を有する構成部により構成されても良い。
<メモリについて>
前述した実施の形態では、「メモリ」としてSDRAMが例示されていたが、ここでいう「メモリ」にあっては、このようなSDRAMに限らない。つまり、SDRAM以外に他の種類のメモリ、例えば、SRAMやEEPROM等の書き換え可能な揮発性メモリであれば良く、この他に、ハードディスクドライブやその他データの書き換えが可能なデータ記憶装置であれば、どのような装置であっても、ここでいう「メモリ」に含まれる。
<第1解像度について>
前述した実施の形態では、「第1解像度」として、『1×1モード』以外のモード、即ち、『2×1モード』、『1×2モード』、『2×2モード』、『4×2モード』、『2×4モード』および『4×4モード』の場合を例にして説明したが、「第1解像度」にあっては、このようなモードの場合に限らない。すなわち、これらのモード以外の他のモードにて出力画像が出力される場合も含まれる。つまり、「第2解像度」よりも高い解像度にて出力画像を出力する場合であれば、どのような解像度であっても「第1解像度」に含まれる。
<第2解像度について>
前述した実施の形態では、「第2解像度」として、1種類の解像度、即ち『1×1モード』のみを例にして説明したが、「第2解像度」にあっては、このように1種類の解像度ではなく、2種類以上の解像度が対応していてもよい。
また、前述した実施の形態では、「第2解像度」として、『1×1モード』を例にして説明したが、他の解像度が「第2解像度」に該当してもよい。すなわち、「第1解像度」に相当する他の解像度よりも低い解像度にて出力画像を出力する場合であれば、どのような解像度であっても「第2解像度」に含まれる。
<画像処理装置について>
前述した実施の形態では、画像処理装置として、原稿から画像を読み取って画像データを生成するスキャナ機能と、ホストコンピュータ(図示外)から送られてきた印刷データに基づき印刷用紙等の各種媒体に印刷をするプリンタ機能と、原稿から読み取った画像を媒体に印刷して複写するローカルコピー機能とを備えたスキャナ・プリンタ・コピー複合装置(以下、SPC複合装置ともいう)を例にして説明したが、ここでいう画像処理装置にあってはこのような複合装置の場合に限らない。つまり、原稿から画像を読み取って画像データを生成するスキャナ機能や原稿から読み取った画像を媒体に印刷して複写するローカルコピー機能がない通常の印刷装置であっても良く、また、このような印刷機能がない、単に画像データを処理するのみの装置であっても良い。この他、画像データを処理して出力画像のドット形成用データを生成する装置であれば、どうような装置も、ここでいう画像処理装置に含まれる。
<印刷装置について>
前述した実施の形態では、印刷装置として、画像処理装置として、稿から画像を読み取って画像データを生成するスキャナ機能と、ホストコンピュータ(図示外)から送られてきた印刷データに基づき印刷用紙等の各種媒体に印刷をするプリンタ機能と、原稿から読み取った画像を媒体に印刷して複写するローカルコピー機能とを備えたスキャナ・プリンタ・コピー複合装置(以下、SPC複合装置ともいう)を例にして説明したが、ここでいう印刷装置は、このような複合装置には限られない。つまり、原稿から画像を読み取って画像データを生成するスキャナ機能や原稿から読み取った画像を媒体に印刷して複写するローカルコピー機能がなくても良く、ホストコンピュータ(図示外)から送られてきた印刷データに基づき印刷用紙等の各種媒体に印刷をするプリンタ機能のみを備えた印刷装置であっても良い。
また、前述した実施の形態では、印刷装置として、前述したようなインクジェットプリンタ1の場合を例にして説明したが、このような印刷装置に限らず、他の方式によりインクを吐出するプリンタをはじめ、その他、インクを吐出しないタイプのプリンタ、例えば、ドットインパクト方式のプリンタや熱転写方式のプリンタ、またレーザービーム式プリンタなど、印刷機能を備えた装置であれば、どのような印刷装置であっても構わない。