以下、図面を参照して本発明の実施形態を詳細に説明する。
図1は、本発明の一実施形態に係るインクジェット記録装置の概略構成を示す斜視図である。図1において、記録装置100は、キャリッジ53を備える。キャリッジ53は、ガイドレール51および52によって案内され、図中の矢印Xで示される走査方向(主走査方向)に移動できるよう設けられている。そして、キャリッジ53は、記録ヘッド54を着脱自在に搭載するとともに、キャリッジモータ(不図示)の駆動力が無端ベルト等の駆動力伝達機構(不図示)によって伝達されることにより上記移動を行う。これにより、記録ヘッドの記録媒体に対する走査が可能となる。キャリッジ53に搭載された記録ヘッド54に対して、各色のインクを収納したインクタンク(不図示)からチューブを介してインクが供給される。
本実施形態の記録ヘッド54は、インクを吐出可能なノズルを上記走査方向と交差する方向に配列したノズル列を、以下に示す12色のインクについて備えたものである。すなわち、記録ヘッド54は、シアン(C)、フォトシアン(淡シアン;LC)、マゼンタ(M)、フォトマゼンタ(淡マゼンタ;LM)、イエロー(Y)、レッド(Red)、グリーン(Gr)、ブルー(Bl)、ブラック(K)、マットブラック(MK)、グレー(Gry)、およびフォトグレー(淡グレー; LGry)のインクを吐出するためのノズル列を備えている。各ノズルからインクを吐出させるための機構として、電気熱変換体(ヒータ)や圧電効果を利用したピエゾ素子などを用いることができる。電気熱変換体を用いた場合には、電気熱変換体の発熱によってインクを発泡させ、発泡の際に生じる発泡エネルギーを利用して吐出口からインクを吐出させる。
記録媒体としての用紙は、ロール状に巻回されたロール紙55を記録装置100に装着し、ロール紙55から引き出されたシート端が挿入口から挿入される。シートは送りローラ56によって走査方向と直交する図中矢印Yで示される搬送方向(副走査方向)に搬送される。記録ヘッド54の走査の間に各ノズルから記録データに応じてインクを吐出する記録動作と、記録ヘッド54の走査による記録幅に対応する距離だけ記録媒体を搬送方向に搬送する搬送動作とを繰り返すことにより、記録媒体上に順次画像を記録する。本実施形態では、記録ヘッドの走査によって最大60インチ幅の記録を行うことができる。
図2は、図1に示した本実施形態に係る記録装置の制御およびデータ処理の構成を示すブロック図である。図2に示すように、本実施形態の記録装置は、制御およびデータ処理を実行する画像形成コントロール部101、図1に主に示した記録機構であるプリンタエンジン128、および図示しない電源回路部等を有して構成される。
画像形成コントロール部101は、パーソナルコンピュータ等のホスト装置から記録指示や記録用の画像データを受信し、受信した画像データをプリンタエンジン122で用いる2値の記録データに変換して出力する。図2に示すように、画像形成コントロール部101は、CPU102、通信インターフェース部103、操作部制御回路部104、表示部制御回路部105、RAMコントローラ106、ROMコントローラ107、および拡張バス回路部108を有している。また、画像形成コントロール部101は、画像処理部109およびプリンタエンジンインターフェース部110を備える。上述したこれらの各ブロックはそれぞれバスライン112a〜112iを介してシステムバスブリッジ111に接続されている。本実施形態では、これらの各部は、システムLSIとして1つのパッケージに封止された画像形成コントロール部ASIC(Application Specific Integrated Circuit)113として実現されるものである。さらに、画像形成コントロール部101は、操作部114、表示部115、RAM部116、ROM部118、および機能拡張ユニットを装着する拡張スロット120を備える。
CPU102は、画像形成コントロール部101全体の制御を司るものである。CPU102は、ROM部118またはRAM部116に格納された制御手順を順次読み出し実行することによって、通信インターフェース部103の制御、操作部114および表示部115の制御を行う。また、CPU102は、受信した画像データを画像形成データに変換するための画像処理部109の制御や、生成された画像形成データをプリンタエンジン122へ転送するためのプリンタエンジンインターフェース部110の制御等を行う。
通信インターフェース部103は、パーソナルコンピュータやワークステーション等のホスト装置との間でデータの送受信を行い、ホスト装置から受信した画像データをRAMコントローラ106を介してRAM部116に格納する。通信インターフェース部103の通信方式としては、USB(Universal Serial Bus)など公知の方式を用いることができる。操作部制御回路部104は、操作部114を構成するスイッチから出力される電気信号の状態をCPU102からのリード命令に対してレジスタ情報として通知する。表示部制御回路部105は、表示部115を構成する液晶表示装置およびLEDランプに電気信号を出力する。
RAMコントローラ106は、RAMバス117を介して画像形成コントロール部のASIC113に接続されたRAM部116の制御を行う。すなわち、RAMコントローラ106は、CPU102および各部からの読み出し要求や書き込み要求に応じて必要な制御信号を生成してRAM部116への書き込みやRAM部116からの読み出しを実現する。ROMコントローラ107は、ROMバス119を介して画像形成コントロール部のASIC113に接続されたROM部118の制御を行う。すなわち、ROMコントローラ107は、CPU102からの読み出し要求に応じて必要な制御信号を生成して、予めROM部118に格納された制御手順やデータを読み出し、システムバスブリッジ111を介してCPU102に読み出した内容を送り返す。また、ROM部118がフラッシュメモリ等の電気的に書き換え可能なデバイスで構成される場合、ROMコントローラ107は必要な制御信号を発生してROM部118の内容を書き換える。
拡張バス回路部108は、拡張スロット120に装着した機能拡張ユニットを制御し、拡張バス121を介して機能拡張ユニットにデータを送信する制御および機能拡張ユニットが出力するデータを受信する制御を行う。拡張スロット120には、大容量記憶機能を提供するハードディスクドライブユニット、あるいはUSBやIEEE1394のほか、IEEE1284などに準拠した通信機能によりホスト装置と通信を行う通信ユニットなどを装着することができる。
画像処理部109は、ホスト装置から受信した画像データをプリンタエンジン122で記録可能な2値の記録データに変換する処理を行う。なお、画像処理部109の詳細な構成については図5にて後述する。
プリンタエンジンインターフェース部110は、画像形成コントロール部101とプリンタエンジン122との間でデータの送受信を行う。プリンタエンジンインターフェース部110は、DMAC(Direct Memory Access Controller;ダイレクトメモリアクセスコントローラ)を有している。これにより、プリンタエンジンインターフェース部110は、画像処理部109で生成されRAM部116に格納されている2値記録データを、RAMコントローラ106を介して順次読み出してプリンタエンジン122に転送することができる。なお、画像処理部109、通信インターフェース部103、および拡張バス回路部108は、プリンタエンジンインターフェース部110と同様にDMAC機能を有し、メモリアクセス要求を発行することができる。
システムバスブリッジ111は、画像形成コントロール部のASIC113を構成する各部の間を接続する機能を備えるほか、複数のブロックから同時にアクセス要求が発行された場合に、バス権を調停する機能を備えている。CPU102およびDMACを有する各ブロックがRAMコントローラ106を介してRAM部116へのアクセス要求をほぼ同時に発行する場合があり、システムバスブリッジ111は予め指定されたプライオリティーにしたがって適切に調停を行うことができる。
操作部114は、記録装置100の動作を設定するボタンに連動するスイッチで構成され、これらスイッチの状態を電気信号として出力する。操作部114は、記録装置100の電源のオンおよびオフを指示する電源ボタンを備える。また、操作部114には、動作モードを切り替えるオンラインボタンやメニュー画面の表示を指示するメニューボタン、メニュー画面から項目を選択するための上下左右方向の十字ボタン、および選択項目を確定するOKボタンを備えている。このほか操作部114は、記録の停止を指示するストップボタンおよび記録用紙の給紙方法を選択する給紙選択ボタンを備える。表示部115は、液晶表示装置およびLEDランプ等から構成される。液晶表示装置は、記録装置100の動作状態を表示するほか、操作部114のメニューボタンなどの操作によりメニュー画面の表示を行うことができる。LEDランプは記録装置100の動作状態の表示や警告表示を行うものである。
RAM部116は、同期DRAM等で構成され、CPU102が実行する制御手順の格納、画像処理部109において生成された画像データの一時的な記憶、およびCPU102のワークメモリなどの機能を提供するメモリである。ROM部118は、フラッシュメモリ等で構成され、CPU102が実行する制御手順およびプリンタ制御に必要なパラメータを格納する。
プリンタエンジン122は、画像形成コントロール部101から送出される2値記録データに基づいて記録媒体に画像を記録するための記録機構である。本実施形態では、プリンタエンジン122は、図1にて上述したように、インクジェット方式の記録ヘッドにより記録媒体に画像を形成するものであり、12色のインクによって、主走査方向に2400dpiの解像度で最大60インチ幅の画像を記録することができる。
図3(a)〜(c)は、画像処理部109で処理する画像データの画素を説明する図である。図3(a)において、小さな四角形のそれぞれは1つの画素を表しており、画像処理部109で処理する、各色の画像データは、主走査方向および副走査方向にそれぞれ配列された画素のそれぞれに濃度値が対応付けられたものである。主走査方向に並ぶ一連の画素によって構成される行をラスターと呼び、同じ画素数のラスターを所定数配列した矩形状の画素群をバンドと呼ぶ。なお、バンドを構成するラスター数やラスターを構成する画素数は、1でも複数でもどちらでもよい。
画像処理部109は、バンドにおける副走査方向における先頭のラスターから順に、ラスターごとに画像処理を行っていく。また、1つのラスターについては、左端側から右端側へ、または右端側から左端側へ、1画素ずつ順番に処理を行う。図3(b)および図3(c)は、1つのラスターに対する処理方向を示す図であり、図中の数字は画素ごとの処理順序をあらわしている。順方向処理の場合は図3(a)のように左端側から右端側へ順に処理を行い、逆方向処理の場合は図3(b)のように右端側から左端側へ順に処理を行う。
本実施形態の画像処理部は、バンドの処理に関して双方向処理と片方向処理を選択して実行することができる。双方向処理では、図4(a)に示すように、1ラスターごとに順方向処理と逆方向処理を切り替えながら画像処理を実行する。また、片方向処理では図4(b)に示すように、バンドを構成する全ラスターについて同じ方向に処理を行う。なお、双方向処理および片方向処理のいずれの場合も、逆方向処理から画像処理を開始することもできる。
本実施形態では、上述のように画像データを構成する画素の座標が、記録媒体における記録領域に対応させて特定される。本実施形態の記録装置では、上述のように主走査方向の最大の記録領域幅は60インチである。この最大幅の記録領域の場合、記録画素は2400dpiの解像度であるから画素数は144000となる。一方、画像処理部109で処理する画像データの解像度は、後述のインデックスデータに応じて二値化処理回路で得られるドット配置パターンの2画素×2画素との関係から、1200dpiである。従って、画像データの1ラスターの画素数は、上記幅の記録領域に対応して最大72000になり、画素座標は、図3(a)左側の画素から順に0〜71999となる。バンドの左端画素および右端画素それぞれの画素座標を指定することにより、処理されるバンドの記録媒体における記録位置を指定することができる。例えば、処理するバンドの左端画素座標を18000、右端画素座標を35999にそれぞれ設定すると、このバンドは記録用紙上の左端側4分の1から用紙中央の範囲に画像が記録される。
画像処理部109が扱う画像データや誤差拡散処理における誤差データは、後述されるように、第1記憶メモリとしてのRAM部116や画像処理部109内の第2記憶メモリとしての誤差バッファ部が用意され、これらのメモリに格納される。画像データおよび誤差データが格納されるこれらメモリ上の位置は、画素座標0に対応するデータが格納されるべきメモリアドレス、左端画素アドレスおよび右端画素アドレスから算出することができる。この画素座標0に対応するデータが格納されるべきメモリアドレスを原点対応アドレスと呼ぶ。
図5は、画像処理部109の機能ブロックの構成および処理される画像データの形式を説明する図である。
画像処理部109は、図5に示すように、色変換処理回路部501、量子化処理回路部502、二値化処理回路部503、レジスタ部504、制御回路部505、および誤差バッファ部510を有している。本実施形態では、誤差バッファ部510は、SRAMによって構成する。さらに、画像処理部109は、画像データおよび誤差データを読み出す画像データリードDMAC506および誤差データリードDMAC508、それぞれのデータを書き込む画像データライトDMAC507および誤差データライトDMAC509を有している。以上の構成を有する本実施形態の画像処理部109は、上述したようにASIC113の一部を構成する回路として実現されるものである。そして、画像処理部109は、プリンタエンジン122で用いるインクの色に関して最大6色分の画像データの処理を行う回路である。すなわち、同じ画素(処理対象である注目画素)に対して、以下で説明する色変換処理回路部501、量子化処理回路部502、および二値化処理回路部503の処理をそれぞれ2回実行する。これにより、画像処理部109の回路、ひいてはこの処理部を含むASIC113の回路の規模を小さくすることができる。
具体的には、色変換処理回路部501は、ホスト装置からの、レッド(R)、グリーン(G)、ブルー(B)それぞれ8ビットで表される色信号(0〜255のいずれかの値)からなる画像データに対して、色補正処理および色空間変換処理を行う。色補正処理では、色信号R、G、Bに対して、それぞれの色信号に対応する一次元のルックアップテーブルに補間演算を併用してガンマ補正処理を行う。次に、色空間変換処理で、1回目の処理として、色信号R、G、Bを、これらの組によって三次元のルックアップテーブルを参照し、この参照結果に補間処理を併用することにより、6色分のインク色信号C、LC、M、LM、Y、Redに変換する。これらのインク色信号はそれぞれ8ビットで表され、0〜255のいずれかの値を持つものである。
そして、量子化処理回路部502は、これらの6色の色信号それぞれについて、その詳細が後述される誤差拡散法による量子化処理を行い、0〜4のいずれかの階調レベルを示す、3ビット5値のインデックスデータを出力する。そして、二値化処理回路部503は、インデックスデータに対応したドット配置パターンを適用して、1ビット2値の記録データ(画像データ)を出力する。
注目画素の画像データに対する2回目の処理では、先ず、注目画素の同じ画像データである色信号R、G、Bに対して、(色変換処理回路部501の)色補正処理を行う。この処理の結果は1回目と同じであり、色変換処理回路部501の色空間変換処理では、この同じ結果としての色信号R、G、Bに基づいて変換を行う。すなわち、同じ色補正結果としての色信号R、G、Bを、これらの色信号の組によって、三次元ルックアップテーブルを参照し、また、これに補間演算を併用して、2回目の処理に係るインク色信号Gr、Bl、K、MK、Gry、およびLGryに変換する。次に、量子化処理回路部502では、上記インク色信号Gr、Bl、K、MK、GryおよびLGryそれぞれに対して、その詳細が後述される誤差拡散処理によって量子化を行い、それぞれのインク色の5値のインデックスデータを出力する。そして、二値化処理回路部503によってインデックスデータに対応したドット配置パターンが用いられて2値の記録データが出力される。
このように、本実施形態では、12色のインク色信号からなる記録データを生成するのに同じ画像処理を2回繰り返す構成とする。これにより、画像処理のための回路の規模を小さくすることが可能となる。
なお、本実施形態では、画像処理における画像データを、RGBの3色の色信号からなるものとしたが、この形態に限られないことはもちろんである。例えば、シアン(C)、マゼンタ(M)、イエロー(Y)、ブラック(K)の4色の色信号からなるものであってもよい。また、インク色信号を最大12色とし、これに応じて画像処理回路の規模を最大6色分の処理を実行できるものとしたが、この形態に限られないことももちろんである。用いる最大の数のインク色信号に合せて、それを二またそれ以上に分割した数の処理を行う画像処理回路とすればよい。
図5において、レジスタ部504は、画像処理の開始を指示する画像処理起動レジスタや実行する画像処理の内容およびパラメータを指定するコマンド・パラメータレジスタ等を備えたレジスタ群から構成される。また、レジスタ部504はバンドの先頭ラスターおよび最終ラスターを処理する際の誤差データアクセスに関するパラメータを設定するレジスタを有している。制御回路部505は、画像処理部109全体の制御を行う。例えば、制御回路部505は、CPU102からの起動指示によって動作し、レジスタ部に設定されたパラメータにしたがって画像処理部109内の各機能ブロックやDMAC部に必要な制御信号を出力する。
また、制御回路部505は、図6(a)に示す各制御信号および図示しない制御信号を出力する。図6(a)において、「現在ラスター処理方向信号」は、処理対象となるラスターの処理方向が順方向か逆方向かを示す信号であり、順方向の場合に「1」、逆方向の場合に「0」を出力する。「先頭ラスター現示信号」は、処理対象となるラスターがバンドの先頭ラスターであるか否かを示す信号であり、先頭ラスターの場合に「1」を出力する。「最終ラスター現示信号」は、処理対象となるラスターがバンドの最終ラスターであるか否かを示す信号であり、最終ラスターの場合に「1」を出力する。「データ転送開始指示信号」は、画像データおよび誤差データのリード(読み出し)またはライト(書き込み)を行う各DMAC(506〜509)にデータ転送の開始を指示する信号であり、「1」を出力することによって転送の開始を指示する。最後に、「ラスター処理完了応答信号」は、各DMACから出力されるラスター処理の完了通知に対して返す応答信号であり、「1」を出力して通知に対する応答を返す。
画像データリードDMAC506は、RAM部116に格納された入力画像データを読み出すためのDMACである。また、画像データライトDMAC507は、生成された2値画像データ(記録データ)をRAM部116に格納するためのDMACである。
誤差データリードDMAC508は、隣接ラインから拡散される誤差データを読み出すためのDMACである。詳細には、誤差データリードDMAC508は、制御回路部505からの信号に応じて、RAM部116または誤差バッファ部510のいずれかを選択しそこに記憶される1ライン分の誤差データの中から処理に係る画素に対応する誤差データを読み出す。一方、誤差データライトDMAC509は、隣接ラインに拡散するための、誤差データを書き込むためのDMACである。すなわち、誤差データライトDMAC509は、制御回路部505からの信号に応じて、RAM部116または誤差バッファ部510のいずれかを選択し、そこに1ライン分の誤差データを書き込む(格納する)ことができる。
より詳細には、誤差データリードDMAC508および誤差データライトDMAC509は、図7(a)に示すように、アクセスするメモリのアドレスが0x00000000〜0x03FFFFFFの範囲にある場合はRAM部116へアクセスするよう制御する。また、アクセスするメモリのアドレスが0xA0000000〜0xA009FFFFの範囲にある場合は誤差バッファ部510へアクセスするよう制御する。また、各DMAC(506〜509)は、1ラスター分のデータの転送が終了すると、図6(b)に示す「ラスター処理完了通知信号」を制御回路部505に出力する。
レジスタ部504は、図7(b)に示すように、画像処理の開始を指示する画像処理起動レジスタ801、および量子化処理回路部502の動作モードを規定するパラメータを設定するための各レジスタを有して構成される。また、レジスタ部504は、色変換処理や二値化処理の動作モードを設定する図示しないレジスタ群を備える。量子化処理回路部502の動作モードに関連するパラメータは、バンドモードレジスタ802、処理モードレジスタ803、およびラスター数レジスタ804の各レジスタに設定する。さらに、レジスタ部504は、左端画素アドレスレジスタ805、右端画素アドレスレジスタ806、共通原点対応アドレスレジスタ807、先頭ラスター原点対応アドレスレジスタ808、および最終ラスター原点対応アドレスレジスタ809を備えている。
バンドモードレジスタ802は、図8(a)に示すように、バンド処理モードを指定するフィールドおよび先頭ラスターの処理方向を指定するフィールドを備えている。また、アクセス設定を行うための処理モードレジスタ803は、図8(b)に示すように、先頭ラスターに拡散する誤差データを読み出すアドレスを指定するフィールドおよび最終ラスターから拡散される誤差データを格納するアドレスを指定するフィールドを備えている。また、処理モードレジスタ803はその他の動作モードを設定するフィールドを有する。これら各レジスタに設定された内容は、レジスタ設定値信号として画像処理部109内の各部に供給され、各部が参照可能に構成されている。
以上の構成を有する画像処理部109による、主に誤差拡散法を用いた量子化処理について以下に説明する。先ず、画像処理部109の量子化処理回路部502は、注目画素を含むラスターの前のラスター(以下、「前ラスター」ともいう)から拡散される誤差データを読み出す。そして、読み出した誤差データを色変換処理回路部501から出力された注目画素の画像データに加算する。つまり、注目画素の画像データの階調値に、誤差データによって表現される誤差値を加算する。前ラスターからの拡散される誤差データは、このデータを記憶可能な誤差バッファ部510またはRAM部116に格納されている。そして、後述されるように、アクセス制御を行う誤差データリードDMAC508の制御に基づき、注目画素が属するラスターがどのラスターかに応じて、誤差バッファ部510またはRAM部116から誤差データを読み出す。また、量子化処理回路部502は、注目画素の画像データに対して、その画素が含まれる同一のラスター(以下、「同一ラスター」ともいう)の量子化処理が済んだ画素から拡散される誤差データも加算する。同一ラスターの画素から拡散すべき誤差データは、量子化処理回路部502内の図示しないバッファに一時的に格納される。
量子化処理回路部502は、以上のようにして同一ラスターおよび前ラスターの画素からの誤差データが加算された注目画素の画像データを、その色信号ごとにしきい値と比較して量子化を行い、インデックスデータを得る。このインデックスデータは、二値化処理回路部503に送られて2値の記録データに変換され、画像データライトDMAC507によってRAM部116に格納される。また、量子化の際に発生する誤差は、同一ラスターおよび隣接ラスターの所定の画素に拡散される。
図9は、上述のしきい値との比較によって発生する量子化誤差の拡散を説明する図である。図9において、注目画素「P」の量子化処理によって発生する誤差は、同図に示す拡散係数に従って未処理の周辺画素に拡散される。具体的には、注目画素Pと同一ラスターL1の画素AおよびBに拡散される誤差データは、量子化処理回路部502内の図示しないバッファに保存する。また、隣接ラスターL2の画素C、DおよびEに拡散される誤差データは、量子化処理回路部502内のバッファに一旦記憶されてから、同一画素に対して拡散される誤差データが全て足し合わされる。合算された誤差データは、誤差データライトDMAC509を介して、その詳細は後述されるように、注目画素が属するラスターがどのラスターかに応じて、誤差バッファ部510またはRAM部116に格納される。
詳しくは、図10(a)に示すように、注目画素Pから隣接ラスターL2の画素Xに拡散される誤差データは、以下の第1、第2、および第3の3つの誤差データを合算したものとなる。第1の誤差データは、図10(a)に示す注目画素「P」から、図9に示される画素Eの拡散係数(1/16)に従って拡散される誤差データである。第2の誤差データは、図10(b)の注目画素「Q」から、図9に示される画素Dの拡散係数(1/4)に従って拡散される誤差データである。第3の誤差データは、図10(c)の注目画素「R」から、図9に示される画素Cの拡散係数(1/8)に従って拡散される誤差データである。
画像処理部109は、CPU102がレジスタ部501へ制御パラメータの書き込むことによって画像処理の開始が指示されると、RAM部116に格納された入力画像データをラスターの一方端の画素から他方の端の画素まで順次読み出して、色変換処理、量子化処理および二値化処理を行う。画像処理部109は、これら一連の処理(「ラスター処理」ともいう)を繰り返し、設定されたラスター数の処理が終了すると、CPU102に対して割り込みを発行してバンド処理の完了を通知する。CPU102からの指示により、副走査方向に存在する未処理のバンドについても同様の処理を行うことにより、画像データ全体の二値化処理が行われる。二値化された画像データ(記録データ)は、順次RAM部116に格納され、プリンタエンジンインターフェース部110によってプリンタエンジン122へ送出されることにより、その記録データに基づいて記録媒体に画像が記録される。
図11は、入力した画像データを最終的に二値化して出力する、上述した画像処理を行う際の制御回路部505の処理を説明するフローチャートである。CPU102がレジスタ部504の画像処理起動レジスタ801に「1」を書き込んで画像処理の開始を指示すると、レジスタ部504は、画像処理部109の各部に画像処理起動信号を出力する。制御回路部505は、レジスタ部504からの画像処理起動信号を受信すると、図11のフローチャートに従って画像処理動作を実行して二値化処理を行う。
先ず、ステップS1201で、画像処理の開始に先立ち必要な初期化処理等を行う。初期化処理では、処理したラスター数を計数するための内部カウンタ(不図示)のクリア、画像処理部109内の各部への画像処理開始信号の出力等を行う。次に、ステップS1202で、ラスターごとの画像処理パラメータの更新を行う。詳しくは、処理ラスターを計数するカウンタの値およびレジスタ部に設定されたバンドモードレジスタ802の値に応じて、図6(a)に示す、「現在ラスター処理方向信号」、「先頭ラスター現示信号」、および「最終ラスター現示信号」を更新して出力する。これらの各信号は画像処理部109内の各部に供給される。
次に、ステップS1203で、画像データリードDMAC506、画像データライトDMAC507、誤差データリードDMAC508、および誤差データライトDMAC509にラスター処理に関するデータ転送の開始を指示する。すなわち、制御回路部505は、図6(a)に示す「データ転送開始指示信号」として「1」を出力して各DMAC(506〜509)のデータ転送開始を指示する。
次に、ステップS1204で、各DMAC(506〜509)からのラスター処理終了通知を受信したか否かを判断し、全DMACからのラスター処理終了通知を受信したと判断したときは、ステップS1205へ進み、また、ラスター処理終了通知を受信していないDMACが存在すると判断したときは、再びステップS1204に戻る。各DMAC(506〜509)のラスター処理終了通知を受信しているか否かは、各DMACが出力するラスター処理完了通知信号が「1」であるか否かによって判断する。
ステップS1205では、各DMAC(506〜509)に対してラスター処理完了通知に対する応答を返し、ステップS1206へ進む。すなわち、制御回路部505は、ラスター処理完了応答信号として「1」を出力して、ラスター処理完了通知に応答する。
次に、ステップS1206で、処理ラスター数を計数する内部カウンタの内容を1漸進して、ステップS1207へ進む。ステップS1207では、ラスター数計数を行う内部カウンタで計数している処理ラスター数と、レジスタ部504におけるラスター数指定のためのラスター数レジスタ804に設定されたラスター数とを比較する(第1判断)。計数したラスター数が設定ラスター数に一致しているときは、バンド処理の終了と判断してステップS1208へ進み、計数ラスター数が設定ラスター数に到達していない場合はステップS1202に戻って再びラスター処理を繰り返す。総てのラスター処理が終了すると、ステップS1208で、バンド処理の終了処理を行い、本処理動作を終了する。本ステップでは、CPU102への割り込み信号の活性化等を行う。
本実施形態では、図11のフローチャートに従った処理をハードウエア記述言語(Hardware Description Language;HDL)によって記述し、これに基づき論理合成を行うことにより、本画像処理動作の実行が可能な論理回路を生成する。そして、この論理合成によって生成された論理回路が制御回路部を構成することになる。
次に、図12および図13を参照して、誤差データリードDMAC508および誤差データライトDMAC509の処理手順について説明する。これらの処理は、図11のステップS1203の処理によって起動される処理である。
先ず、誤差データリードDMAC508は、図12のステップS1301で、制御回路部505からデータ転送の開始を指示されているか否かを判断し、データ転送の開始を指示されている場合はステップS1302へ進む。一方、データ転送の開始を指示されていない場合は再びステップS1301へ戻る。制御回路部505からのデータ転送の開始が指示されているか否かは、データ転送開始指示信号が「1」であるか否かによって判断する。
次に、誤差データリードDMAC508はステップS1302で、処理ラスターが先頭ラスターであり、かつ先頭ラスター用のアドレスを使用するかどうかを判断し(第2判断)、条件に該当する場合はステップS1303へ進み、該当しない場合はステップS1304へ進む。制御回路部505が出力する先頭ラスター現時信号が「1」であり、レジスタ部504が出力する先頭ラスター使用アドレス信号が「1」の場合に、条件に該当すると判断する。すなわち、先頭ラスター使用アドレス信号が「1」の場合とは、図8(b)に示す「先頭ラスター原点対応アドレスを使用」が「1」であり、「共通原点対応アドレスを使用」が「0」の場合である。これは、誤差データの読みだしをRAM116において行うことを有効にする設定である。これに対し、上記条件に該当しない場合として、先頭ラスター現時信号が「1」で、先頭ラスター使用アドレス信号が「0」の場合がある。この場合は、上記「先頭ラスター原点対応アドレスを使用」が「0」であり、「共通原点対応アドレスを使用」が「1」の場合である。これは、以下で説明する上記の条件に該当する場合の処理とは異なり、先頭ラスターの処理であるにもかかわらず、誤差データの読みだしをRAM116において行うことを無効にする設定である。例えば、4色のインクを用いて記録を行うモードの場合は、本実施形態の最大6色分の処理が可能な回路では、1回の処理で一連の画像処理を行い2値の記録データを得ることができる。従って、先頭ラスターや先頭ラスターの1ライン分の誤差データは4色分として、回路内の誤差バッファ510に格納することができる。このため、先頭ラスターの処理であるにもかかわらず、誤差データの読み出しをRAM116において行うことなく、誤差バッファ510で行うようにする。これは、図13にて後述する、最終ラスターの処理における誤差データの書き込みの場合も同様である。
図12を再び参照すると、次に、ステップS1303では、誤差データリードDMAC508は、先頭ラスター原点対応アドレスを使用して読み出し元アドレスを算出し、ステップS1305へ進む。このとき、処理方向が順方向の場合はレジスタ部504に設定された左端画素アドレスからメモリアドレスを算出し、処理方向が逆方向の場合はレジスタ部504に設定された右端画素アドレスからメモリアドレスを算出する。また、制御回路部505が出力する現在ラスター処理方向信号によって、処理ラスターの処理方向を取得する。
一方、ステップS1304では、誤差データリードDMAC508は、共通原点対応アドレスを使用して読み出し元アドレスを算出し、ステップS1305へ進む。このときもステップS1303と同様に、処理方向に応じて左端画素アドレスまたは右端画素アドレスを使用してメモリアドレスを算出する。
次に、誤差データリードDMAC508は、ステップS1305で、ラスター処理に関する他の初期化処理を行い、読み出し元メモリアドレス以外のパラメータを特定する。また、誤差データリードDMAC508は、処理画素数を計数する誤差データリードDMAC508内のカウンタ(不図示)をクリアする。
次に、誤差データリードDMAC508はステップS1306で、読み出しメモリアドレスから誤差データを読み出し、誤差データリードDMAC508内のバッファ(不図示)に格納するとともに、読み出しメモリアドレスを更新する。ここで、処理ラスターが順方向の場合は増加方向に、処理ラスターが逆方向の場合は減少方向にアドレスが更新される。
誤差データリードDMAC508はステップS1307で、ステップS1306の処理でバッファに格納した誤差データを1画素ごとに量子化処理回路部502に出力する。また、処理画素数を計数する内部カウンタの内容を1漸進してステップS1308へ進む。
ステップS1308では、内部カウンタで計数している処理画素数が1ラスターの画素数に到達しているか否かを判断し、到達している場合はステップS1309へ進み、到達していない場合はステップS1306へ戻って誤差データの読み出しを継続する。なお、1ラスターの画素数は、右端画素アドレスと左端画素アドレスの差に1加算した値として算出する。
1ラスター分の画素数分の誤差データを読み出すと、誤差データリードDMAC508はステップS1309で、制御回路部505に対してラスター処理の完了を通知して、ステップS1310へ進む。すなわち、誤差データリードDMAC508は、ラスター処理完了通知信号として「1」を出力してラスター処理の完了を通知する。
次に、誤差データリードDMAC508はステップS1310で、制御回路部505からラスター処理の完了通知に対する応答が返されているか否かを判断し、応答がある場合はステップS1311へ進み、応答がない場合はステップS1310へ戻る。制御回路部505からの応答が返されているか否かは、ラスター処理完了応答信号が「1」であるか否かによって判断する。
ステップS1311で、誤差データリードDMAC508は、処理したラスターがバンドの最終ラスターか否かを判断し、最終ラスターの場合は本処理動作を終了し、最終ラスターでない場合はステップS1301へ戻って後続ラスターの処理を継続する。
一方、誤差データライトDMAC509は、図13のステップS1401で、制御回路部505からデータ転送の開始を指示されているか否かを判断し、データ転送の開始を指示されている場合はステップS1402へ進み、データ転送の開始を指示されていない場合はステップS1401へ戻る。制御回路部505からのデータ転送の開始が指示されているか否かは、データ転送開始指示信号が「1」であるか否かによって判断する。次に、誤差データライトDMAC509はステップS1402で、処理ラスターが最終ラスターであり、かつ最終ラスター用のアドレスを使用するかどうかを判断し、条件に該当する場合はステップS1403へ進み、該当しない場合はステップS1404へ進む。制御回路部505が出力する最終ラスター現時信号が「1」であり、レジスタ部504が出力する最終ラスター使用アドレス信号が「1」の場合に、条件に該当すると判断する。
ステップS1403で、誤差データライトDMAC509は、最終ラスター原点対応アドレスを使用して書き込み先アドレスを算出し、ステップS1405へ進む。このとき、処理方向が順方向の場合はレジスタ部504に設定された左端画素アドレスからメモリアドレスを算出し、処理方向が逆方向の場合はレジスタ部504に設定された右端画素アドレスからメモリアドレスを算出する。また、制御回路部505が出力する現在ラスター処理方向信号によって、処理ラスターの処理方向を取得する。
一方、ステップS1404では、誤差データライトDMAC509は、共通原点対応アドレスを使用して書き込み左記アドレスを算出し、ステップS1405へ進む。このときもステップS1403と同様に、処理方向に応じて左端画素アドレスまたは右端画素アドレスを使用してメモリアドレスを算出する。
次に、誤差データライトDMAC509はステップS1405で、ラスター処理に関する他の初期化処理を行い、書き込み先メモリアドレス以外のパラメータを特定する。また、誤差データライトDMAC509は、処理画素数を計数する誤差データライトDMAC509内のカウンタ(不図示)をクリアする。次に、誤差データライトDMAC509はステップS1406で、量子化処理回路部から出力される1画素分の誤差データを、誤差データライトDMAC509内のバッファ(不図示)に書き込む(格納)する。また、処理画素数を計数する図示しない内部カウンタを1漸進してステップS1407へ進む。
次に、誤差データライトDMAC509はステップS1407で、ステップS1406の処理でバッファに格納した誤差データを書き込みメモリアドレスへ書き込むとともに、書き込みメモリアドレスを更新する。処理ラスターが順方向の場合は増加方向に、処理ラスターが逆方向の場合は減少方向にアドレスが更新される。
ステップS1408では、内部カウンタで計数している処理画素数が1ラスターの画素数に到達しているか否かを判断し、到達している場合はステップS1409へ進み、到達していない場合はステップS1406へ戻って誤差データの書き込みを継続する。なお、1ラスターの画素数は、右端画素アドレスと左端画素アドレスの差に1加算した値として算出する。
1ラスターの画素数分の誤差データを書き込むと、誤差データライトDMAC509はステップS1409で、制御回路部505に対してラスター処理の完了を通知して、ステップS1410へ進む。すなわち、誤差データライトDMAC509は、ラスター処理完了通知信号に「1」を出力してラスター処理の完了を通知する。
次に、誤差データライトDMAC509はステップS1410で、制御回路部505からラスター処理の完了通知に対する応答が返されているか否かを判断し、応答がある場合はステップS1411へ進み、応答がない場合はステップS1410へ戻る。制御回路部505からの応答が返されているか否かは、ラスター処理完了応答信号が「1」であるか否かによって判断する。ステップS1411で、誤差データライトDMAC509は、処理したラスターがバンドの最終ラスターかどうかを判断し、最終ラスターの場合は本処理動作を終了し、最終ラスターでない場合はステップS1401へ戻って後続のラスター処理を継続する。
本実施形態では、図12および図13に示したフローチャートに従う処理をハードウエア記述言語によってそれぞれ記述し、論理合成を行うことにより、それぞれの画像処理動作の実行が可能な誤差データリードDMACおよび誤差データライトDMACを生成する。すなわち、この論理合成によって生成された論理回路がそれぞれ誤差データリードDMAC部および誤差データライトDMAC部を構成する。
図14は、以上説明した本実施形態に係る記録装置における、12色のインク色の記録データを生成するための処理を、特に誤差拡散による量子化を説明するフローチャートである。本処理は、上述したように、同一の入力画像データに対して画像処理を二度行い12色分の記録データを得るものである。
図14において、最初に、ステップS1501で、CPU102は、前半で処理する6色分の画像処理に対応するレジスタを設定する。すなわち、図15(a)に示す各設定値を画像処理部109のレジスタ部504に設定する。
次に、CPU102はステップS1502で、レジスタ部504の画像処理起動レジスタ801に値「1」をライトして、画像処理を起動する。本ステップの処理によって画像処理部109は、図5およびそれ以降の図を参照して上述したようにして、前半6色分の1バンドの画像処理を実行し、2値の記録データを生成する。
ステップS1503では、前半で処理する6色分の画像処理が終了するのを待機する。この画像処理の終了は、画像処理部109が、図11のステップS1208の処理で発行する割り込み通知により判断することができる。
前半6色分の画像処理が終了して割り込み通知を受信すると、ステップS1504でCPU102は、後半で処理する6色分の画像処理に対応するレジスタを設定する。すなわち、図15(b)に示す各設定値を画像処理部109のレジスタ部504に設定する。
次に、ステップS1505では、上述のステップS1502の処理と同様にレジスタ部504の画像処理起動レジスタ801に値「1」を書き込んで画像処理を起動する。本ステップの処理により画像処理部は後半6色分の1バンド分の画像処理を実行して2値の記録データを生成する。そして、ステップS1506でCPU102は、後半で処理する6色分の画像処理が終了するのを待機する。画像処理の終了は、画像処理部109が、ステップS1208の処理において発行する割り込み通知により判断する。
後半6色分の処理が終了すると、ステップS1507でCPU102は、全画像データの処理が完了したか否かを判断する。未処理の画像データが残っている場合は、ステップS1501に戻って処理を継続し、全画像データの処理が完了している場合は、本処理を終了する。
以上の記録データ生成において、図15(a)に示す各設定値をレジスタ部504に設定することにより、先頭ラスターの処理では、先頭ラスター原点対応アドレス808に設定されたアドレス0x01200000で示されるRAM部116から誤差データの読み込みを行う。ここには、先行処理したバンドの最終ラスターから拡散される誤差データのうち前半6色分の誤差データが格納されている。また、64番目のラスターが最終ラスターとなり、このラスターでは、最終ラスター原点対応アドレスレジスタ809に設定されたアドレス0x12000000で示されるRAM部116への誤差データ書き込みを行う。この誤差データは、後続するバンドの前半6色を処理する際に、その後続バンドの先頭ラスターに拡散される誤差データとして使用される。一方、2番目のラスターから63番目のラスターまでの中間ラスターでは、共通原点対応アドレスレジスタ807に設定されたアドレス0xA0000000で示される誤差バッファ部510に対して、誤差データのリードおよびライトが行われる。
また、図15(b)の各設定値をレジスタ部504に設定する後半の6色の画像処理では、同様に先頭ラスターの誤差データ読み込みおよび最終ラスターの誤差データ書き込みはRAM部116に対して実行される。また、上記先頭および最終ラスター以外の中間のラスターでは、前半6色の場合と同様、画像処理部の誤差バッファ部510が誤差データの格納領域として使用される。
以上説明したように、本実施形態に係る誤差拡散による量子化では、6色分の量子化処理を実行する画像処理回路を二度動作させることにより12色分の二値化画像データを得る。この際、先頭ラスターに拡散する誤差データおよび最終ラスターから拡散される誤差データについては、動作速度が比較的遅いDRAM等で構成されるRAM部116にアクセスする。一方、それ以外の誤差データについては、画像処理回路内の動作速度の速い、すなわちアクセスの時間が短いSRAMで構成される誤差バッファ部510にアクセスする。
これにより、各ラスターの1ライン分の誤差データを読み出し、また、書き込む場合に、比較的動作速度が遅いRAM部116にアクセスするラスターを先頭および最終ラスターのみとすることができる。その結果、誤差データの読み出し、書き込みのためのメモリアクセス速度を全体として向上させることができる。すなわち、同じ画像処理を複数実行するようにして、その処理回路の規模を小さくした場合、誤差バッファ部のような回路内のメモリも、上例の6色分のように、複数回に分割して処理されるデータ量に見合った容量となる。このため、例えば、前半6色分から後半6色分に処理が移るときに、その前後の計12色分の誤差データを誤差バッファ部に同時に格納できず、RAM部116のような処理回路外の他のメモリを利用する。この際、本実施形態では、この他のメモリへのアクセスを先頭および最終ラスターのみとすることにより、このメモリにアクセスすることによる速度の低下をできるだけ抑制することができる。
この結果、生成する記録データが12色分など多量になる場合でも、誤差拡散処理回路の規模を増すことなく、誤差拡散処理を高速に行うことが可能となる。
(他の実施形態)
上述の実施形態では、画像データを多値誤差拡散方式による量子化とドット配置パターンとを組み合わせることによって二値の記録データを生成する場合について説明した。しかし、本発明はこれに限定されるものではなく、量子化処理によって直接二値化する二値誤差拡散方式を採用した記録装置においても本発明を構成できることはもちろんである。
また、上述の実施形態では、CPUおよび各回路ブロックが一つのパッケージに封止されたシステムLSIとして構成される場合について説明した。しかし、本発明はこれに限定されるものではなく、一部の回路ブロックまたは全部の回路ブロックをそれぞれ個別のIC等によって構成することもできる。
また、上述の実施形態では、ハードウエア記述言語により記述した内容を論理合成して論理回路を生成し、その論理回路によって量子化処理を行う場合について説明したが、本発明はこれに限定されるものではない。上述した実施形態の機能を実現するソフトウエアのプログラムを記憶した記憶媒体を装置に供給し、その装置やコンピュータのCPUが記憶媒体に格納されたプログラムを読み出して実行することによって、量子化処理を行う場合も本発明に含まれる。この場合には、記憶媒体から読み出されたプログラム自体が上述した実施形態の機能を実現することになり、そのプログラムを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムのプログラムコードの指示に基づき、コンピュータ上にて稼動しているOSなどが実際の処理の一部または全部を行い、その処理によって上述した実施形態の機能が実現される場合も本発明に含まれる。
(さらに他の実施形態)
本発明は、各画素の階調を表現する画像データを量子化処理するための方式として、注目画素の誤差データをその注目画素の周辺の周辺画素に分散させる誤差拡散方式を用いる画像処理装置、および画像処理方法としても適用可能である。その画像処理装置は、前述した実施形態のように記録装置100に一体的に組み込まれる他、ホスト装置において構成することができる。
また、本発明は、量子化処理した画像データに基づいて画像を記録するための記録方式について、限定するものではない。したがって、その記録方式は、前述したインクジェット記録方式以外の記録方式であってもよく、また、その記録方式を実現する記録装置の構成も限定されない。