(57)【要約】【課題】  記録素子の副走査方向の解像度と搬送系の駆動分解能が２ｎの関係でない構成においても、高品位な記録を実現することができるインクジェット記録装置及びその方法を提供する。【解決手段】  インクを吐出するための複数のノズルが配列された２列のノズル列が前記ノズルの配列方向に前記ノズル列のノズル間隔未満の距離だけずれて配列された記録ヘッドを、記録媒体の所定領域に対して複数回走査させて記録を行う。複数回の走査の間に前記記録媒体を搬送する量が前記ノズル間隔の奇数倍に相当する量である。【選択図】  図３
2011051356.tif 000002
【特許請求の範囲】
【請求項１】
インクを吐出するための複数のノズルが配列された２列のノズル列が前記ノズルの配列方向に前記ノズル列のノズル間隔未満の距離だけずれて配列された記録ヘッドを、記録媒体の所定領域に対して複数回走査させて記録を行うインクジェット記録装置であって、
前記複数回の走査の間に前記記録媒体を搬送する量が前記ノズル間隔の奇数倍に相当する量である
ことを特徴とするインクジェット記録装置。
【請求項２】
インクを吐出するための複数のノズルが配列された２列のノズル列が前記ノズルの配列方向に前記ノズル列のノズル間隔未満の距離だけずれて配列された記録ヘッドを、記録媒体の所定領域に対して複数回走査させて記録を行うインクジェット記録方法であって、
前記複数回の走査の間に前記記録媒体を搬送する量が前記ノズル間隔の奇数倍に相当する量である
ことを特徴とするインクジェット記録方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インクを吐出するための複数のノズルが配列された２列のノズル列が前記ノズルの配列方向に前記ノズル列のノズル間隔未満の距離だけずれて配列された記録ヘッドを、記録媒体の所定領域に対して複数回走査させて記録を行うインクジェット記録装置及びその方法、プログラムに関するものである。
【背景技術】
【０００２】
プリンタ、複写機、ファクシミリなどの画像形成装置、あるいはコンピュータやワードプロセッサなどの複合電子機器やワークステーションの出力機器として用いられる画像形成装置は、画像情報に基づいて紙などの記録媒体に所望される文字や画像等の情報を記録するように構成されている。
【０００３】
この画像形成装置は、記録方式によりインクジェット方式、ワイヤドット方式、サーマル方式、レーザービーム方式などに分けることができる。
【０００４】
例えば、インクジェット方式の記録ヘッドを用いるインクジェットプリンタは、記録ヘッドから記録媒体にインクを吐出して記録を行なうもので、以下の利点を有する。
【０００５】
すなわち、記録ヘッドのコンパクト化が容易であり、高精細な画像を高速で記録することができる。また、普通紙に特別の処理を必要とせずに記録することが可能であり、ランニングコストが低く、ノンインパクト方式であるために騒音が少なく、多色のインクを使用してカラー画像を記録するのが容易である。
【０００６】
このようなインクジェット方式を採用した記録ヘッドを往復走査しながら、記録媒体に対してインクを吐出し、複数回の走査によって画像を完成させるシリアルプリンタでは、記録用紙などの記録媒体の搬送精度や記録ヘッドの吐出性能によって、搬送精度の影響による濃度ムラや記録ヘッドの吐出動作のばらつきによるスジが記録画像に現れ、記録品質が劣化することがある。
【０００７】
このような不具合を解消するため、記録ヘッドの異なる領域で記録媒体の同じ部分記録領域を複数回走査することでその部分記録領域に対する記録を完成させるマルチパス記録方式が提案されている。
【０００８】
このマルチパス記録方式は、元々の画像データに所定のサイズのマスクパターンをかけて（論理積をして）、記録ヘッドの１回の走査で記録する画素数を間引き、各走査毎にインク吐出を行う記録ヘッドの記録素子（ノズル）を異ならせる。さらに、記録媒体の搬送単位を記録ヘッドの記録幅より短くして記録を行うので、記録ヘッドの記録素子間の吐出性能のばらつきが記録媒体の特定の場所に集中することによる、また、搬送精度の影響などによる濃度ムラやすじの発生が抑えられる。
【０００９】
そのような従来技術の一例として、特開平７−５２３９０号公報では、所定のサイズの領域内でマスクパターンの分布がランダムなマスクマトリクスを使用する方法が提案されている。また、特許文献１では、記録ヘッドの走査方向である主走査方向と記録媒体の搬送方向である副走査方向の少なくともひとつの解像度が記録解像度より低いマスクパターンを用いた記録方式などが提案されている。このようなランダムなマスクマトリクスを用いたマルチパス記録方式では、主／副走査方向に対して、吐出周期が不規則となるので、濃度ムラやスジの発生が防止される。また、マスクパターンがランダムであるので、記録データがマスクパターンに同調する可能性が極めて低くすることができることが知られている。
【００１０】
また、例えば、副走査方向に配列された記録ヘッド上の記録素子の配置間隔よりも高い解像度で記録媒体上に画像を記録しようとすると、一般的には、副走査方向の記憶媒体の搬送量の駆動分解能を前記所望の解像度に設定してマルチパス記録にて画像記録を行なう方式が知られている。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開平１０−２３５８５２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、上記説明したように、副走査方向の記録解像度にあわせて、記録媒体搬送機構の駆動分解能を設定するようにすると、記録媒体搬送機構を構成する歯車などの機構部品に高精度な部品を使う必要が生じ、記録媒体搬送機構のコストアップの原因となる。また、副走査方向の駆動分解能を高くするためには、記録媒体の搬送量に対応する記録媒体搬送機構の構成要素であるモータ等の駆動量が増加しまう。これらの問題を解決するために記録素子の副走査方向の解像度より、記録媒体搬送機構の駆動分解能を前者とは逆に低く設定する方法がある。
【００１３】
例えば、記録素子の副走査方向の解像度を６００ｄｐｉとして、記録媒体搬送機構の駆動分解能を４００ｄｐｉに設定する。この記録媒体搬送機構を用いれば、１の量の搬送用駆動パルスで記録媒体が１／４００インチ搬送される。つまり、６００ｄｐｉを１画素と考えた場合には、１の量の搬送用駆動パルスで１．５画素分の搬送量で記録媒体を搬送できる。従って、２ｎ＋１の量の搬送用駆動パルスでマルチパス記録を行なえば、記録媒体上の副走査方向に１２００ｄｐｉの解像度の記録が可能である。また、２ｎの量の搬送用駆動パルスで３画素分の搬送量で記録媒体を搬送できるので、副走査方向に６００ｄｐｉの記録解像度も可能である。
【００１４】
このような構成にすることで、記録媒体搬送機構のコストアップを抑制し、スループットの低減も抑制できるのであるが、副走査方向に６００ｄｐｉの記録素子からなる記録ヘッドを用いてマルチパス記録を行うためには、副走査方向に３画素の倍数でマルチパス記録を行なうための補間記録を行なう必要がある。また、マルチパス記録を行ない濃度ムラやスジなどが少ない記録出力を行なう上で、上記従来のマスクパターン技術は有用であるが、上記従来の構成では、副走査方向のマスクパターン数が少なくとも８ｎ若しくは１６ｎの画素数、あるいは２ｎの画素で構成されている必要があり、上記記録素子と記録媒体搬送機構の駆動分解能の関係をもった記録装置には適用が難しい問題があった。
【００１５】
本発明は上記の課題に鑑みてなされたものであり、記録素子の副走査方向の解像度と搬送系の駆動分解能が２ｎの関係でない構成においても、高品位な記録を実現することができるインクジェット記録装置及びその方法を提供することを目的とする。
【課題を解決するための手段】
【００１６】
上記の目的を達成するための本発明によるインクジェット記録装置は以下の構成を備える。即ち、
インクを吐出するための複数のノズルが配列された２列のノズル列が前記ノズルの配列方向に前記ノズル列のノズル間隔未満の距離だけずれて配列された記録ヘッドを、記録媒体の所定領域に対して複数回走査させて記録を行うインクジェット記録装置であって、
前記複数回の走査の間に前記記録媒体を搬送する量が前記ノズル間隔の奇数倍に相当する量である。
【発明の効果】
【００１７】
本発明によれば、記録素子の副走査方向の解像度と搬送系の駆動分解能が２ｎの関係でない構成においても、高品位な記録を実現することができるインクジェット記録装置及びその方法を提供できる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態に係る画像記録システムの構成を示すブロック図である。
【図２】本発明の実施形態に係るインクジェットプリンタの構成を示す外観斜視図である。
【図３】本発明の実施形態に係るインクジェットプリンタの制御構成を示すブロック図である。
【図４】本発明の実施形態に係るプリントヘッドコントロール部の詳細構成を示すブロック図である。
【図５】本発明の実施形態に係るＲＡＭ、ＲＯＭ、ＳＲＡＭのメモリ構成を示すブロック図である。
【図６】本発明の実施形態に係るマスクパターン生成用の制御テーブルの構成を示す図である。
【図７】本発明の実施形態に係るマスクパターン生成用の基本情報の構成を示す図である。
【図８】本発明の実施形態に係るマスクパターン生成用の詳細情報の構成を示す図である。
【図９Ａ】本発明の実施形態に係る第１マスクバッファの構成を示す図である。
【図９Ｂ】本発明の実施形態に係る第２マスクバッファの構成を示す図である。
【図１０】本発明の実施形態に係るマスクバッファの記録時の記録範囲との関係を示す図である。
【図１１】本発明の実施形態に係るマルチパス記録方法を説明する図である。
【図１２Ａ】本発明の実施形態に係るマスクパターン生成用の乱数列を示す図である。
【図１２Ｂ】本実施形態に係るマスクパターン生成方法の一例を示す図である。
【図１２Ｃ】本発明の実施形態に係るマスクパターンの隣接ドット禁止演算方法の一例を示す図である。
【図１２Ｄ】本発明の実施形態に係る隣接ドット禁止演算を適用したマスクパターンの一例を示す図である。
【図１３】本発明の実施形態に係るインクジェットプリンタで実行される記録制御を示すフローチャートである。
【図１４】本発明の実施形態に係るマスクパターン生成処理の詳細を示すフローチャートである。
【図１５Ａ】本発明の実施形態に係るマスクパターン生成処理の具体例を示すフローチャートである。
【図１５Ｂ】本発明の実施形態に係るマスクパターン生成処理の具体例を示すフローチャートである。
【発明を実施するための形態】
【００１９】
以下、図面を参照して、本発明に係る一実施形態を詳細に説明する。
【００２０】
尚、本実施形態では、画像形成装置と、この画像形成装置に画像記録用のデータを送信する上位装置とが接続された画像記録システムにおいて、上位装置と画像形成装置との間でデータの送受信を行なうことのできる画像記録システムを例にとって説明する。
【００２１】
また、以下の説明では、上位装置としてはホストコンピュータを、画像形成装置としてはインクジェット方式の記録ヘッドを搭載したインクジェットプリンタを用いて説明するが、本発明の範囲を記載例に限定する趣旨のものではない。
［画像記録システムの構成］
図１は本発明の実施形態に係る画像記録システムの構成を示すブロック図である。
【００２２】
図１に示すように、画像記録システムは、ホストコンピュータ５００とインクジェットプリンタ１００とが接続されて構成される。
【００２３】
ホストコンピュータ５００において、５０１はプリンタドライバであり、５０２はステータスモニタであり、それぞれソフトウェアの形式で記憶されている。
【００２４】
尚、プリンタドライバ５０１、ステータスモニタ５０２は、ホストコンピュータ５００に装着されたＲＯＭ（不図示）等の記憶媒体に記憶されたものでもよい。
【００２５】
インクジェットプリンタ１００は、後述する図３のブロック図に示す制御回路を有している。
【００２６】
ホストコンピュータ５００とインクジェットプリンタ１００とは、例えば、高速シリアル通信のひとつであるＵＳＢインタフェースを用いてケーブル５０３、５０４を介して接続されている。
【００２７】
尚、この接続は、ＵＳＢインタフェースを用いるケーブル５０３、５０４に限ることはなく、双方向通信可能であれば、どのようなものでも使用できる。例えば、パラレルインタフェースのＩＥＥＥ１２８４、高速シリアルインタフェースのＩＥＥＥ１３９４、赤外線インタフェース、ブルーツゥースまたはＩＥＥＥ８０２．１１ｂ等の無線通信を用いて接続することも可能である。
【００２８】
ユーザが所望の文書や画像をインクジェットプリンタ１００を用いて記録するときには、まず、ホストコンピュータ５００上で所望の文書や画像の記録を指示する操作を行う。
【００２９】
これにより、プリンタドライバ５０１は、所望の文書や画像の元データから色処理・ハーフトーニング等の画像処理を行うことにより記録データを生成する。この記録データには、ユーザから選択指示された記録媒体種類の情報や記録品位の選択情報、また、記録データをモノクロ、若しくはカラーで記録するかを示すモノクロ／カラー識別情報等を指示する記録モード設定コマンドを付加してインクジェットプリンタ１００に送信する。
【００３０】
これに対し、インクジェットプリンタ１００は、受信した記録データに基づいて紙などの記録媒体に画像を出力することにより、ユーザは所望する文書や画像を得ることができるように構成されている。インクジェットプリンタ１００は、記録データ中の記録モード設定コマンドにより指定されたモノクロ／カラー識別情報と記録媒体と記録品位の組合せに応じて、指定された記録媒体に対して指定された記録品位の画像を出力するように最適な記録制御をすべく、記録方向や記録解像度や記録に際するマルチパス数等を決めるようになっている。
【００３１】
また、ステータスモニタ５０２は記録中や所定の操作により起動され、接続されているインクジェットプリンタ１００から、ステータス情報を受け取り、そのステータス情報からプリンタ１００の状態を解析し、必要に応じて、ホストコンピュータ５００の操作画面などにその内容を表示することができる。
［インクジェットプリンタの構成］
図２は本発明の実施形態に係るインクジェットプリンタ１００の構成を示す外観斜視図である。
【００３２】
図２において、インクジェットプリンタ１００の給紙位置に挿入された記録シート等の記録媒体１０５は、搬送ローラ１０６の回転によって矢印Ｐ方向に搬送され、プリントヘッド１０４によるプリント可能領域へ搬送される。
【００３３】
このプリント可能領域における記録媒体１０５の下部にはプラテン１０７が設置されている。プリントヘッド１０４はキャリッジ１０１に搭載され、キャリッジ１０１は２つのガイド軸であるガイド軸１０２とガイド軸１０３によって、それらの軸方向に沿う方向に往復移動が可能である。すなわち、プリントヘッド１０４は、プリント領域を主走査方向（図２の矢印で示すＱ１、Ｑ２方向）に往復走査する。
【００３４】
プリントヘッド１０４は、複数色のインクを吐出可能な吐出口と、複数色のインクを収容可能なインクタンクを含み、プリントヘッド１０４のインク吐出口は下側を向いている。
【００３５】
インクジェットプリンタ１００における複数のインクの色は、例えば、Ｂｋ（黒）、Ｃ（シアン）、Ｍ（マゼンタ）、Ｙ（イエロー）の４色である。本実施形態において、プリントヘッド１０４にはブラックインクを吐出するための記録素子として３２０ノズル、また、イエロー、マゼンタ、シアンのカラー色インクを吐出するための記録素子としてそれぞれ１２８ノズルで構成されている。また、これらのノズルは各色ごとに副走査方向に（図中の矢印Ｐ方向）６００ｄｐｉの解像度で配置されている。本発明を適用する上で、記録素子の配列解像度は、６００ｄｐｉ以外に、例えば、３００ｄｐｉでも、１２００ｄｐｉなどその他の解像度でもよい。また、インク色により記録素子の配列解像度が異なっていても良く、例えば、ブラックインクを吐出するための記録素子の配列解像度が３００ｄｐｉ、カラー色インクを吐出するための記録素子の配列解像度が６００ｄｐｉであってもよい。
【００３６】
１０８はセンサ／ＳＷ（スイッチ）部４０７と、ＬＥＤや液晶表示素子等を有する表示部４０９とを備える操作パネルである。センサ／ＳＷ部４０７はインクジェットプリンタ１００の電源のオン／オフや各種記録モードの設定等に使用され、表示部４０９はインクジェットプリンタ１００の状態を表示するのに使用される。
［インクジェットプリンタの制御構成］
図３は本発明の実施形態に係るインクジェットプリンタ１００の制御構成を示すブロック図である。
【００３７】
ホストコンピュータ５００から送信されたプリント対象の文字や画像を含む記録データがインクジェットプリンタ１００で受信されると、その受信した記録データは受信バッファ４０１に入力されて保持される。
【００３８】
受信バッファ４０１に保持された記録データは、ＣＰＵ４０２の管理下でＲＡＭ４０３に転送されて一次的に記憶される。ＲＡＭ４０３は、所謂、ＤＲＡＭであり、ＣＰＵ４０２の外部バスに接続されており、ＣＰＵ４０２からの読出／書込のアクセス時には数クロックのウエイト時間を要する。
【００３９】
ＲＯＭ４１１には、本実施形態で実行される処理を含む各種制御に必要なプログラムやデータが記憶されている。そして、このプログラムをＣＰＵ４０２が実行することで、ホストコンピュータ５００からインクジェットプリンタ１００に送信された記録データを記録したり、インクジェットプリンタ１００の動作状態を知らせるステータス情報等がインクジェットプリンタ１００からホストコンピュータ５００に送信される。
【００４０】
また、ＲＯＭ４１１は、ＣＰＵ４０２により実行される制御プログラムや各種初期設定パラメータ等も記憶している。ＲＯＭ４１１は、ＣＰＵ４０２の外部バスに接続されており、ＣＰＵ４０２からの読出のアクセス時には数クロックのウエイト時間を要する。
【００４１】
また、ＳＲＡＭ４３０は、所謂、スタティックメモリであり、ＣＰＵ４０２のローカルバスに接続されていて、ＣＰＵ４０２からの読出／書込のアクセス時にはウエイトすることがない（０ｗａｉｔ）、高速でアクセス可能な記憶媒体である。このようなＳＲＡＭ４３０は、通常、半導体製法上、シリコンチップの占有面積が広く必要なので、必要最小限のメモリ容量に止めるようにしてコストアップなどの要因を極力抑制している。本実施形態では、ＳＲＡＭ４３０は８ＫＢｙｔｅ、ＲＡＭ４０３は２ＭＢｙｔｅとしているが、このメモリ容量はかかる装置の性能と価格などにより最適な量に決めれば良く、それらは設計事項である。ＳＲＡＭ４３０は、メモリ容量が少ないため、特に高速処理が要求される制御だけ、例えば、プリンタエンジン４０５のキャリッジ動作制御や、マスクパターン生成制御などに限定して利用している。
【００４２】
エンジンコントロール部４０４は、ＣＰＵ４０２からの指令により、キャリッジモータやラインフィードモータ等の機械部を有するプリンタエンジン４０５を駆動制御する。本実施形態におけるキャリッジモータは、キャリッジ１０１に搭載されてプリントヘッド１０４を主走査方向に最大２５インチ／ｓｅｃの走査速度で移動制御できる。また、フィードモータは搬送ローラ１０６を最小１／４００インチの回転駆動させ、記録媒体１０５を４００ｄｐｉの駆動分解能で副走査方向に搬送制御できる搬送系である。
【００４３】
この搬送系の副走査方向の駆動分解能は、４００ｄｐｉに限定されるものではなく、例えば、記録素子の副走査方向の解像度が６００ｄｐｉのとき、搬送系の副走査方向の駆動分解能を７２０ｄｐｉに設定して、１回のプリントヘッド１０４の主走査方向への記録動作に対し、この搬送系によって記録媒体１０５を３／７２０インチ若しくは６ｎ＋３／７２０インチ搬送させてマルチパス記録を行うことで、副走査方向の記録解像度を１２００ｄｐｉとすることもできる。また、１回のプリントヘッド１０４の主走査方向への記録動作に対し、搬送系によって記録媒体１０５を６ｎ／７２０インチ搬送させてシングルパス記録／マルチパス記録を行うことで、副走査方向の記録解像度を６００ｄｐｉとすることもできる。
【００４４】
ＮＶＲＡＭ４２０は不揮発性メモリであり、インクジェットプリンタ１００の電源が切断されるときにも記憶しておくべき設定情報を記憶するメモリである。
【００４５】
ＣＰＵ４０２は、インクジェットプリンタ１００の電源投入時などの初期化タイミングで、ＮＶＲＡＭ４２０に記憶されている設定情報を読み出し、その内容をＲＡＭ４０３に格納して、電源切断時や所定の更新タイミングで設定情報のＮＶＲＡＭ４２０への書込／更新を行う。本実施形態では、ＮＶＲＡＭ４２０として、ＥＥＰＲＯＭ（電気的消去可能ＲＯＭ）を採用しているが、不揮発性メモリであればどのようなものでも使用することができる。例えば、電池バックアップ付メモリやフラッシュメモリなどでもよい。
【００４６】
センサ／ＳＷコントロール部４０６は、各種センサや操作パネル１０８のＳＷ（スイッチ、カバー開閉検知センサ）等を含むセンサ／ＳＷ部４０７からの信号を受信して、受信した信号をＣＰＵ４０２に送信する。
【００４７】
表示コントロール部４０８は、ＣＰＵ４０２からの指令により、操作パネル１０８の表示部４０９の表示制御を行う。プリントヘッドコントロール部４１０は、ＣＰＵ４０２からの指令によりプリントヘッド１０４を駆動制御する。また、プリントヘッドコントロール部４１０は、プリントヘッド１０４の状態を監視し、例えば、プリントヘッド１０４の温度を検出して、その温度情報をＣＰＵ４０２に送信する。そして、ＣＰＵ４０２は、その温度情報に基づいてプリントヘッド１０４の駆動制御を実行している。
【００４８】
プリントヘッド１０４は、ブラック・インクタンクと、イエロー色・マゼンタ色・シアン色を３色１体化させたカラー・インクタンクとの２種類のインクタンクを有し、それぞれが着脱可能になっている。また、本発明を適用する上で、インクタンクの種類は、例えば、黒インクのみの１種類の場合でも、あるいは、４色もしくは６色などに複数にインクタンクに分離した構成など、インク色と物理的なインクタンクの組合せはどのようであっても一向に構わない。
【００４９】
インクジェットプリンタ１００の筐体にはカバー（不図示）があり、開閉状態を操作パネル１０８より取得し、カバーが開けられときは記録中ならカバーが閉じられるまで記録を一時停止させる。また、カバーが開けられときが、記録中ではなく、かつプリンタ機内に紙づまりなどの問題が発生していないときにはプリントヘッド１０４を走査方向の中央付近に移動させて、ユーザがインクタンクを交換できるような構成となっている。
［プリントヘッドコントロール部４１０の詳細構成］
図４は本発明の実施形態に係るプリントヘッドコントロール部４１０の詳細構成を示すブロック図である。
【００５０】
ＣＰＵ４０２より記録指示がなされると、所定の記録タイミングごとに画像データ読出制御回路７００は副走査方向の画像データを、ＲＡＭ４０３の画像データ領域４０３ａ（図５）から所定量読み出す。このとき、同時に、マスクデータ読出制御回路７１０は、後述する記録制御処理によって記録指示直前に設定されるパラメータレジスタＭＤ＿ＴＯＰ７３０、ＭＤ＿ＬＥＮ７４０、ＭＤ＿ＲＰ７５０の内容に従って、マスクデータをＲＡＭ４０３のマスクデータ領域４０３ｂから所定量読み出す。
【００５１】
次に、出力データ生成回路７２０は前者の画像データと後者のマスクデータの論理積（ＡＮＤ）演算を行って画像データを間引きし、プリントヘッド１０４の記録タイミング信号を発生させて、プリントヘッド１０４よりその間引いた画像データに基づく画像の記録を行なう。
【００５２】
パラメータレジスタＭＤ＿ＴＯＰ７３０、ＭＤ＿ＬＥＮ７４０、ＭＤ＿ＲＰ７５０は、ＣＰＵ４０２より読み書き可能なレジスタで構成されている。ＭＤ＿ＴＯＰ７３０は対象となるマスクデータ群の先頭アドレスをＲＡＭ４０３上の物理アドレスとして保持する。ＭＤ＿ＬＥＮ７４０はそのマスクデータ群のデータ長を保持する。ＭＤ＿ＲＰ７５０は記録指示時の最初のマスクデータの読出開始位置を示し、かつＭＤ＿ＴＯＰ７３０に設定されているマスクデータ群の先頭アドレスから見た相対値（オフセットアドレス値）を保持する。
【００５３】
つまり、記録指示がなされると記録タイミングごとにマスクデータ読出制御回路７１０はＭＤ＿ＴＯＰ７４０にＭＤ＿ＲＰ７５０の内容を加算して読出アドレスを求め、ＲＡＭ４０３上の所望のマスクデータを１カラム量読み出す。
【００５４】
そして、次のカラムのマスクデータを読み出せるように、ＭＤ＿ＲＰ７５０の内容を更新する。即ち、主走査方向が、例えば、図２の矢印Ｑ２方向であればＭＤ＿ＲＰ７５０の値に所定量Ｘを加算（ＭＤ＿ＲＰ＝ＭＤ＿ＲＰ＋Ｘ）する。このとき、ＭＤ＿ＲＰ７５０の値が、ＭＤ＿ＬＥＮ７４０の値以上の場合は、ＭＤ＿ＲＰ７５０に０を設定して、記録のための主走査方向のカラム方向にマスクデータをリング状（巡回的）に読み出せるようにしている。
【００５５】
また、主走査方向が前者と反対（図２の矢印Ｑ１方向）であれば、ＭＤ＿ＲＰ７５０の内容から所定量Ｘを減算（ＭＤ＿ＲＰ＝ＭＤ＿ＲＰ−Ｘ）する。このとき、ＭＤ＿ＲＰ７５０の値が０以下の場合は、ＭＤ＿ＲＰ７５０にＭＤ＿ＬＥＮ７５０の値から所定量Ｘを減算した値を設定（ＭＤ＿ＲＰ＝ＭＤ＿ＲＰ−Ｘ）して、カラム方向にマスクデータをリング状に読み出せるようにしている。
【００５６】
尚、上記説明した回路構成をインク色の数分、あるいは記録素子のノズル列ごとに個別に用意してその各々を別々に制御させてインク色別、あるいはノズル列別に間引き記録制御するように構成することもできる。
［メモリの構成］
図５は本発明の実施形態に係るＲＡＭ４０３、ＲＯＭ４１１、ＳＲＡＭ４３０のメモリ構成を示すブロック図である。
【００５７】
ＲＡＭ４０３には、ホストコンピュータ５００から記録指示された画像データを記録データに変換したものを一時格納する画像データ領域４０３ａと、後述するマスクバッファとして機能し、マルチパス記録に用いるマスクパターンを格納するマスクデータ領域４０３ｂと、受信バッファ４０１を介して受信した画像データの一時格納領域やシステム制御およびその他の各種制御プログラムなどで使用する作業領域などを含むその他の領域４０３ｃが構成されている。
【００５８】
ＲＯＭ４１１には、ＣＰＵ４０２が読み出し実行するプログラムやデータを記憶してあり、後述の記録制御処理のプログラムを記憶する記録制御部４１１ａ、後述のマスクパターン生成処理の基本処理部分のプログラムを記憶するマスク処理基本部４１１ｂ、ホストコンピュータ５００より指示された記録モードに応じた後述のマスクパターン生成プログラム群を記憶するマスク処理生成部１〜Ｎ（４１１ｃ−１〜４１１ｃ−Ｎ）、マスクパターン生成処理、記録制御等に必要な制御データを記憶するマスク処理データ部４１１ｄ、その他のシステム制御やエンジン制御用などのプログラムやデータを記憶するその他の処理／データ部４１１ｅが構成されている。
【００５９】
また、マスク処理データ部４１１ｄには、乱数値テーブル（乱数値配列データ）が記憶されている。この乱数値テーブルは、最大１６パスのマルチパス記録に対応できるようになっている。具体的には、例えば、４ビット(００００(Ｂ:２進数）〜１１１１（ｂ））で表現される０〜１５までの数値を４ビット×６４Ｋ（３２ＫＢｙｔｅ）の領域に対して、予めパーソナルコンピュータ上などで乱数器を使って上記４ビットの数値をランダムに配置させた乱数値配列で構成されている。乱数の生成手法は、例えば、特開平１０−２３５８５２号公報に開示されているものと同等であるので、ここでは詳述しない。
【００６０】
尚、特開平１０−２３５８５２号公報では、記録装置で動的に乱数値配列を生成しているが、本実施形態ではマスクパターン生成時の処理時間を少しでも短縮させ、かつコストを抑制する目的で、予め乱数値配列データをＲＯＭ４１１に記憶する構成を採用している。また、例えば、ＣＰＵ４０２の処理能力が充分高い場合には乱数発生関数などを利用したり、あるいは乱数発生回路などを付加したり、別の手段で乱数を発生させても良い。
【００６１】
ＳＲＡＭ４３０には、マスクパターン生成処理で高速に処理を行なうためのマスク処理作業領域４３０ａと、記録モードに応じたマスクパターン生成プログラムを動的にロードして実行させるためのマスク処理領域４３０ｂと、その他キャリッジモータ制御などの、特にリアルタイム性を重視する制御用のプログラムやデータを格納するその他の処理／作業領域４３０ｃが構成されている。
【００６２】
このようにＳＲＡＭ４３０を利用することで、特に、ＲＩＳＣ（Reduced Instruction Set of Computer）形式ＣＰＵを採用した構成では著しい処理速度の向上が期待できる。また、近年のＲＩＳＣ形式ＣＰＵにはＳＲＡＭを内蔵したものが安価に入手可能であるので、ＳＲＡＭ付ＣＰＵ構成を採用したからといえ必ずしもコストアップの要因にならないことが多い。
［マスク処理データの構成］
本実施形態では、ホストコンピュータ５００から指示された記録モード（記録媒体種類、記録品位、モノクロ／カラー記録）に応じて所望の記録品位になるように、マルチパス記録出力をおこなうために使用するマスクパターンの種類を示すマスク番号を定義している。
【００６３】
後述の記録制御は、記録モードの種類に応じてマスク番号を対応させ、そのマスク番号を後述のマスク処理生成部に与えることで所望のマスクパターンを生成する。つまり、マスク番号に基いて、以下に説明する制御テーブルを参照することでマスクパターンを生成し、記録制御で必要なマスクパターン情報を出力するようになっている。
【００６４】
図６〜図８は、図５で説明したマスク処理データ部４１１ｄに格納してある制御データの構成を示す図である。
【００６５】
本実施形態では、このような制御データをＲＯＭ４１１に格納記憶させるように構成したが、例えば、ＲＡＭ４０３などの他のメモリに格納するようにしても良い。また、以下で説明するそれぞれのパラメータの格納順序はどのような順序／構成でもかまわない。
【００６６】
まず、図６の制御テーブル６００は、マスク番号（＃００〜＃Ｎ）順にそれぞれのマスク番号に対応した第１制御データ１（６１０）を配置している。第１制御データ１（６１０）には、マスク番号に対応したマスクパターンデータ総計量のバイト数を記憶するＣＬＲ＿ＳＩＺＥ６１１、マスク番号に対応するマスクパターン生成プログラムのバイト数を記憶するＦＵＮＣ＿ＳＩＺＥ６１２、そのマスクパターン生成プログラムのＲＯＭ４１１上の格納アドレスを記憶するＦＵＮＣ＿ＡＤＲ６１３、マスク番号に対応する第２制御データ（図７のデータ２（６２０））の格納アドレスを記憶するＴＢＬ＿ＡＤＲ６１４、マスク番号に対応するマスク基本情報（図７のデータ３（６３０））の格納アドレスを記憶するＲＥＴ＿ＡＤＲ６１５が構成されている。
【００６７】
次に、図７の第２制御データ２（６２０）には、乱数値テーブルの格納アドレスを記憶するＲＮＤ＿ＡＤＲ６２１、マスク基本情報であるデータ３（６３０）の格納アドレスを記憶するＢＩＮＦ＿ＡＤＲ６２２、マスク詳細情報であるデータ４（６５０）の格納アドレスを記憶するＤＩＮＦ＿ＡＤＲ６２３が構成されている。
【００６８】
本実施形態では、マスクパターンの種類に応じて乱数値テーブルの読出開始アドレスを可変にできるようにするためにＲＮＤ＿ＡＤＲ６２１を設けているが、例えば、乱数数発生器や乱数発生関数など他の乱数発生手段を用いる場合には必要ない。
【００６９】
マスク基本情報であるデータ３（６３０）には、マスクバッファ面数を記憶するＢＵＦ＿ＮＵＭ６３１、マスクバッファの１カラムの高さのバイト数を記憶するＢＵＦ＿ＨＥＩＧＨＴ６３２、マスクバッファ１面のカラム数（幅）を記憶するＢＵＦ＿ＷＩＤＴＨ６３３、記録パス毎に進めるマスクバッファの読出開始オフセットカラム数を記憶するＳＣＡＮ＿ＯＦＦＳＥＴ６３４、マスクバッファ１面あたりの繰返し利用回数を記憶するＲＥＰＥＡＴ＿ＮＵＭ６３５、マスクデータ格納開始アドレス（後述のＭＳＫ＿ＴＯＰで指定されたアドレス）から見たマスクバッファの開始オフセットアドレスを記憶するＢＵＦ＿ＯＦＦＳＥＴ６３６、マスクバッファ１面量のバイト数を記憶するＢＵＦ＿ＳＩＺＥ６３７、複数面のマスクバッファ構成時のマスクバッファ面間距離のオフセット量をバイト数で表現した値を記憶するＢＵＦ＿ＮＥＸＴ６３８が構成されている。
【００７０】
尚、本実施形態では、マスクバッファ１面のサイズを計算する際に少しでも処理速度を向上させる目的で、ＢＵＦ＿ＨＥＩＧＨＴ６３２とＢＵＦ＿ＷＩＤＴＨ６３３との積と同値を記憶するＢＵＦ＿ＳＩＺＥ６３７を設けたが、例えば、処理速度が充分速い構成であれば特に必要はない。また、ＢＵＦ＿ＮＵＭ６３１〜ＢＵＦ＿ＮＥＸＴ６３８のいずれか若しくは、全ての値がマスク番号によらず常に固定な場合にはそれらのパラメータを特に記憶しておく必要はなく、例えば、パラメータのいずれか、若しくは全てのパラメータを定数などに変更することは容易である。
【００７１】
図８のマスク詳細情報であるデータ４（６５０）は、指定されたマルチパス数に応じた１パス中（１バンド中）の補間ドット数に対応させるようになっている。このマスク詳細情報であるデータ４（６５０）、及びデータ（６３０）を複数持つことで多様な複数のマスクパターンを生成することができる。
【００７２】
本実施形態では、複数のマスクパターンを生成できるようになっていて、例えば、１パス千鳥間引き（５０％デューティ）のマスクパターン、２パス用マスクパターン、３パス用マスクパターン、４パス用マスクパターン、６パス用マスクパターン、８パス用マスクパターン、１２パス用マスクパターン、１６パス用マスクパターンなどの複数のマスクパターンを記録モードに応じて生成することができる。
【００７３】
ここで、データ４（６６０）の詳細を説明する前にマスクパターンとマスクバッファと記録制御におけるマスクパターンの使用方法について説明するものである。
【００７４】
図８〜図１１は４パス記録、つまり、４ドット補間で構成され、更に副走査方向の補間ドット数を２種類用意して交互に切り換えて記録することで、副走査方向の濃度ムラやスジを軽減させるために、異なる２面のマスクパターンを交互に切り換えてマルチパス記録するときの一実施形態を説明する。
【００７５】
まず、第１面の第１マスクパターンは図９Ａに示した形態のマスクバッファで構成され、第２面の第２マスクパターンは図９Ｂに示した形態のマスクバッファで構成されている。それぞれのマスクバッファは、記録に使われるプリントヘッド１０４の副走査方向の記録素子数（ドット数）をビット数に換算した量を１カラムのマスクパターン量として、必要幅のカラム数を確保した領域として構成されている。
【００７６】
本実施形態では、１２８ノズルのプリントヘッド１０４を用いているので、１６バイト（１２８ビット）を１カラムとして８９６カラムのマスクバッファ領域を２面分用意している。それぞれのマスクバッファは、図中のａｄｒ１およびａｄｒ２より開始され、図中の上方向よりマスクバッファ上のビット位置Ｄ０、Ｄ１、…、Ｄ１５の順に割当れられていて、また、図中の上側から下方向に向かい各ビットは順にプリントヘッド１０４のノズル番号０からノズル番号１２７に対応している。これらのマスクパターンは、記録時に図１０、図１１ように組み合わせてマルチパス記録を行なう。
【００７７】
まず、図１１のバンド１の第１パス目を記録するときに、Ａ１部分の高さだけ記録媒体を搬送して、図９Ａの第１マスクパターンで間引きしながら画像を記録する。その際に、第１マスクパターンと主走査方向の関係は図１０に示したような概念である。つまり、第１マスクパタ−ンの最初の０カラムを装置の記録開始位置（例えば、左側の記録限界位置）から対応させ、マスクパターンの最終カラムの次は、同一のマスクバッファの０カラム目のマスクパターンを再び読み出せるように、即ち、カラム方向（主走査方向）にリング状に対応させるようにする。
【００７８】
記録時の主走査方向が順方向（左から右へ移動）である場合は、ドットの左打出位置のカラムアドレスをマスクパターン幅ＢＵＦ＿ＷＩＤＴＨで割った余りのカラム数の位置からマスクパターンを順方向（図中左から右へ）で読み出すように設定する。また、逆方向（右から左方向）である場合は、ドットの右打出位置のカラムアドレスをマスクパターン幅ＢＵＦ＿ＷＩＤＴＨで割った余りのカラム数の位置からマスクパターンを逆方向（図中右から左へ）で読み出すように設定する。
【００７９】
続いて、「バンド１の第１パス目」の記録が完了すると、図１１のＡ２部分の高さだけ記録媒体を搬送して、図９Ｂの第２マスクパターンで間引きしながら画像を記録することで、「バンド１の第２パス目」・「バンド２の第１パス目」の記録を行う。このとき、マスクパターンの読出カラム位置は記録時の主走査方向が順方向（左から右へ移動）である場合は、ドットの左打出位置のカラムアドレスにオフセット量ＳＣＡＮ＿ＯＦＦＳＥＴ６３４を加算したものをマスクパターン幅ＢＵＦ＿ＷＩＤＴＨで割った余りのカラム数の位置からマスクパターンを順方向（図中左から右へ）で読み出すように設定する。また、逆方向（右から左方向）である場合は、ドットの右打出位置のカラムアドレスにオフセット量ＳＣＡＮ＿ＯＦＦＳＥＴ６３４を加算したものをマスクパターン幅ＢＵＦ＿ＷＩＤＴＨで割った余りのカラム数の位置からマスクパターンを逆方向（図中右から左へ）で読み出すように設定する。
【００８０】
続いて、「バンド１の第２パス目」・「バンド２の第１パス目」の記録が完了すると、図１１のＡ１部分の高さだけ記録媒体を搬送して、図９Ａの第１マスクパターンで間引きしながら画像を記録することで、「バンド１の第３パス目」・「バンド２の第２パス目」・「バンド３の第１パス目」の記録を行う。このとき、マスクパターンの読出カラム位置は記録時の主走査方向が順方向（左から右へ移動）である場合は、ドットの左打出位置のカラムアドレスにオフセット量ＳＣＡＮ＿ＯＦＦＳＥＴ６３４の２倍を加算したものをマスクパターン幅ＢＵＦ＿ＷＩＤＴＨで割った余りのカラム数の位置からマスクパターンを順方向（図中左から右へ）で読み出すように設定する。また、逆方向（右から左方向）である場合は、ドットの右打出位置のカラムアドレスにオフセット量ＳＣＡＮ＿ＯＦＦＳＥＴ６３４の２倍を加算したものをマスクパターン幅ＢＵＦ＿ＷＩＤＴＨで割った余りのカラム数の位置からマスクパターンを逆方向（図中右から左へ）で読み出すように設定する。
【００８１】
続いて、「バンド１の第３パス目」・「バンド２の第２パス目」・「バンド３の第１パス目」の記録が完了すると、図１１のＡ２部分の高さだけ記録媒体を搬送して、図９Ｂの第２マスクパターンで間引きしながら画像を記録することで、「バンド１の第４パス目」・「バンド２の第３パス目」・「バンド３の第２パス目」・「バンド３の次のバンドの第１パス目」の記録を行う。このとき、マスクパターンの読出カラム位置は記録時の主走査方向が順方向（左から右へ移動）である場合は、ドットの左打出位置のカラムアドレスにオフセット量ＳＣＡＮ＿ＯＦＦＳＥＴ６３４の３倍を加算したものをマスクパターン幅ＢＵＦ＿ＷＩＤＴＨで割った余りのカラム数の位置からマスクパターンを順方向（図中左から右へ）読み出すように設定する。また、逆方向（右から左方向）である場合は、ドットの右打出位置のカラムアドレスにオフセット量ＳＣＡＮ＿ＯＦＦＳＥＴ６３４の３倍を加算したものをマスクパターン幅ＢＵＦ＿ＷＩＤＴＨで割った余りのカラム数の位置からマスクパターンを逆方向（図中右から左へ）読み出すように設定する。
【００８２】
以上のように、主走査ごとにマスクパターンを切り換え、また、オフセット量ＳＣＡＮ＿ＯＦＦＳＥＴ６３４にパス回数−１の値を掛けた量を加えてマスクパターン幅ＢＵＦ＿ＷＩＤＴＨで割った余りのカラム数の位置からマスクパターンの読出位置を求めて記録を繰返すことにより所望の画像記録が所定の記録品位で出力できる。このように、主走査ごとにマスクパターンの読出カラム位置を変更することで、異なる主走査間の副走査方向の同一カラム位置のマスクパターンを変更する。これにより、副走査方向のパターン間同調などによる記録品位の劣化を防止することができる。
【００８３】
以上説明したマスクパターンと図８のマスク詳細情報であるデータ４（６５０）及びデータ４詳細（６６０）との関係を説明する。
【００８４】
マスク詳細情報であるデータ４（６５０）には、生成すべきマスクパターンの位置情報、補間関係などの情報がマスクパターン生成順序で記憶されていて、例えば、図１１のようにマスクパターンの補完領域Ａ１、Ｂ１、Ｃ１、Ｄ１、続いて補完領域Ａ２、Ｂ２、Ｃ２、Ｄ２の順序にパラメータを記憶している。この領域Ａ１〜Ｄ２はデータ４詳細（６６０）に示すパラメータをそれぞれ保持している。
【００８５】
Ａ１のパラメータには、図９ＡのＡ１部分のビット高さｂｈ１をＢＡＮＤ＿ＨＥＩＧＨＴ６６１に、マスクパターン生成開始位置ｂｐ１をＢＡＮＤ＿ＰＯＳ６６２に、第１マスクバッファ開始位置ａｄｒ１をＢＵＦ＿ＴＯＰ６６３に、カラム方向オフセット量ｈｏ１（０：「ゼロ値」）をＨＰＯＳ６６４に記憶している。
【００８６】
Ｂ１のパラメータには、図９ＢのＢ１部分のビット高さｂｈ６をＢＡＮＤ＿ＨＥＩＧＨＴ６６１に、マスクパターン生成開始位置ｂｐ６をＢＡＮＤ＿ＰＯＳ６６２に、第２マスクバッファ開始位置ａｄｒ２をＢＵＦ＿ＴＯＰ６６３に、カラム方向オフセット量ｈｏ６（オフセット量ＳＣＡＮ＿ＯＦＦＳＥＴ６３４の値）をＨＰＯＳ６６４に記憶している。
【００８７】
Ｃ１のパラメータには、図９ＡのＣ１部分のビット高さｂｈ３をＢＡＮＤ＿ＨＥＩＧＨＴ６６１に、マスクパターン生成開始位置ｂｐ３をＢＡＮＤ＿ＰＯＳ６６２に、第１マスクバッファ開始位置ａｄｒ１をＢＵＦ＿ＴＯＰ６６３に、カラム方向オフセット量ｈｏ３（オフセット量ＳＣＡＮ＿ＯＦＦＳＥＴ６３４の２倍値）をＨＰＯＳ６６４に記憶している。
【００８８】
Ｄ１のパラメータには、図９ＢのＤ１部分のビット高さｂｈ８をＢＡＮＤ＿ＨＥＩＧＨＴ６６１に、マスクパターン生成開始位置ｂｐ８をＢＡＮＤ＿ＰＯＳ６６２に、第２マスクバッファ開始位置ａｄｒ２をＢＵＦ＿ＴＯＰ６６３に、カラム方向オフセット量ｈｏ８（オフセット量ＳＣＡＮ＿ＯＦＦＳＥＴ６３４の３倍値）をＨＰＯＳ６６４に記憶している。
【００８９】
以下、同様にして、Ａ２のパラメータにはビット高さｂｈ５をＢＡＮＤ＿ＨＥＩＧＨＴ６６１に、マスクパターン生成開始位置ｂｐ５をＢＡＮＤ＿ＰＯＳ６６２に、第２マスクバッファ開始位置ａｄｒ２をＢＵＦ＿ＴＯＰ６６３に、カラム方向オフセット量ｈｏ５をＨＰＯＳ６６４に記憶している。
【００９０】
Ｂ２のパラメータには、ビット高さｂｈ２をＢＡＮＤ＿ＨＥＩＧＨＴ６６１に、マスクパターン生成開始位置ｂｐ２をＢＡＮＤ＿ＰＯＳ６６２に、第１マスクバッファ開始位置ａｄｒ１をＢＵＦ＿ＴＯＰ６６３に、カラム方向オフセット量ｈｏ２（オフセット量ＳＣＡＮ＿ＯＦＦＳＥＴ６３４の値）をＨＰＯＳ６６４に記憶している。
【００９１】
Ｃ２のパラメータには、ビット高さｂｈ７をＢＡＮＤ＿ＨＥＩＧＨＴ６６１に、マスクパターン生成開始位置ｂｐ７をＢＡＮＤ＿ＰＯＳ６６２に、第２マスクバッファ開始位置ａｄｒ２をＢＵＦ＿ＴＯＰ６６３に、カラム方向オフセット量ｈｏ７（オフセット量ＳＣＡＮ＿ＯＦＦＳＥＴ６３４の２倍値）をＨＰＯＳ６６４に記憶している。
【００９２】
Ｄ２のパラメータには、ビット高さｂｈ４をＢＡＮＤ＿ＨＥＩＧＨＴ６６１に、マスクパターン生成開始位置ｂｐ４をＢＡＮＤ＿ＰＯＳ６６２に、第１マスクバッファ開始位置ａｄｒ１をＢＵＦ＿ＴＯＰ６６３に、カラム方向オフセット量ｈｏ４（オフセット量ＳＣＡＮ＿ＯＦＦＳＥＴ６３４の３倍値）をＨＰＯＳ６６４に記憶している。
【００９３】
尚、補間関係となるマスクパターンのビット高さｂｈ１とｂｈ６とｂｈ３とｂｈ８は同値、またｂｈ５とｂｈ２とｂｈ７とｂｈ４は同値である。本実施形態では、上述のように一色あたりの副走査方向の記録素子数が１２８個で６００ｄｐｉの配列解像度かつ搬送系の駆動分解能が４００ｄｐｉであるので、副走査方向に６００ｄｐｉの４パス記録させるためには、各補完パターンのドット数を３ｎにする必要があるため、前者のビット高さを３３ビット、後者のビット高さを２７ビットで構成するようにしている。
［マスクパターン生成方法］
次に、図１２Ａ〜１２Ｂを参照して本実施形態のマスクパターン生成方法を説明する。
【００９４】
尚、以下の説明では、話を簡単にするために、１カラムが３ビット構成で４カラムかつ４面（３ビット×４ビット×４面）のマスクパターン生成方法を一例として説明するが、この他にもＮビット×Ｍビット×Ｌ面のマスクパターンを生成することはもちろん可能である。
【００９５】
まず、図１２Ａの数列は、目的とする３×４ビット、つまり、１２ビットの４面補間のマスクパターンを生成させるための１２個の乱数値配列データを表している。４面補間、つまり、４ドット補間するためには少なくとも４つ乱数値をランダムに発生させればよく、発生した乱数値により４面のいづれかひとつのビットを１に設定すれば良い。
【００９６】
例えば、０〜３の４つの数値が乱数的に発生したとすると、０の時は第１面パターンＰＴ１の注目ビットを１に、１の時は第２面パターンＰＴ２の注目ビットを１に、２の時は第３面パターンＰＴ３の注目ビットを１に、３の時は第４面パターンＰＴ４の注目ビットを１にするようにする。
【００９７】
この方法で、図１２Ａの乱数値配列データに基いて生成したマスクパターンを図１２Ｂに示す。尚、図中上側に付したＡ〜Ｄはカラム番号を、また、左側に付した１〜３の数字は行番号を表している。これからの説明で、第ｎパターンＰＴｎのＡカラムの１列目を、便宜上、ＰＴｎ［Ａ，１］と表現する。
【００９８】
まず、ＰＴ１〜ＰＴ４のすべてのビットを０クリアしておく。最初の乱数は０であるので、ＰＴ１[Ａ，１]を１にする。続いて、次の乱数は１であるので、ＰＴ２[Ａ，２]を１にする。続いて、次の乱数は３であるので、ＰＴ４[Ａ，３]を１にする。
【００９９】
続いて、次の乱数は０であるので、ＰＴ１[Ｂ，１]を１にする。続いて、次の乱数は２であるので、ＰＴ３[Ｂ，２]を１にする。続いて、次の乱数は０であるので、ＰＴ１[Ｂ，３]を１にする。
【０１００】
続いて、次の乱数は１であるので、ＰＴ２[Ｃ，１]を１にする。続いて、次の乱数は３であるので、ＰＴ４[Ｃ，２]を１にする。続いて、次の乱数は２であるので、ＰＴ３[Ｃ，３]を１にする。
【０１０１】
続いて、次の乱数は２であるので、ＰＴ３[Ｄ，１]を１にする。続いて、次の乱数は１であるので、ＰＴ２[Ｄ，２]を１にする。最後の乱数は３であるので、ＰＴ４[Ｄ，３]を１にする。
【０１０２】
以上のようにして、マスクパターン生成が完了する。
［マスクパターンの隣接ドット禁止制御方法］
本実施形態のプリントヘッド１０４は、主走査方向に記録解像度１２００ｄｐｉで記録することができる。また、プリントヘッド１０４を主走査方向に走査速度２５インチ／ｓｅｃで移動させることができる。この条件であると、プリントヘッド１０４の同一記録素子の駆動周波数は最大約３０ＫＨｚ（＝１／（１／２５／１２００））必要になる。記録素子の最大駆動周波数を高くするのは技術的にも困難な課題であり、また、高くできたとしても高精度に部品などの特性を管理する必要が生じて結果としてコストアップする要因にもなる。そこで、このような場合には、千鳥間引き等で同一記録素子の駆動が非連続になるようにする必要がある。
【０１０３】
つまり、主走査方向の記録解像度が１２００ｄｐｉである場合に、図１２ＡのマスクパターンＰＴ１のＰＴ１［Ａ，１］、ＰＴ１［Ｂ，１］のようなマスクパターンを使用すると連続して記録素子駆動が発生してしまう場合が生じてしまう。記録解像度が６００ｄｐｉあるいは上記走査速度が１／２であれば問題ないが、そのような方法を採用すると記録品位が低下したり、記録出力が時間が遅くなったりする問題がある。
【０１０４】
そこで、図１２Ｃに示すような隣接ドット禁止演算で、図１２Ｄのように、図１２Ｂのマスクパターンを補正することにより、同一記録素子を必ず非連続に駆動させるようなマスクパターンを生成する。このようにすれば、走査速度２５インチ／ｓｅｃで１２００ｄｐｉの記録解像度の画像を高品位に形成することができる。
【０１０５】
但し、図１２Ｃに示す隣接ドット禁止演算でなくても、マスクパターン生成中の隣接ドット禁止演算は可能である。例えば、マスクビットに１を設定しようとするたびに、そのビットに隣接する直前のビットが０であるかを判断し、隣接ビットが１の場合にはその他のパターンにビットを設定することができる。ところが、このようなビット判断とビット操作を行なうようにすると、マスクパターンを生成する時間が長くなってしまう問題がある。
【０１０６】
そこで、本実施形態では、図１２Ｃに示すような隣接ドット禁止演算で、常に同じ時間で複数同一カラム中の複数ビットによる隣接ドットの記録を禁止するようにしている。図１２Ｃ中の（  ）で囲まれた数字は、演算式とその演算順序を、また、下線付きの文字は演算子を表しており、ＡＮＤは論理積、ＯＲは論理和、ＥＯＲは排他論理和の演算子を表している。また、ＷＫは汎用的なワーク領域あるいはワークレジスタである。
（Ａ列のとき）
パターン生成対象カラムが最初のカラムの場合、つまり、この例でのＡ列のカラムのときには、隣接ドット禁止演算を以下の手順で行なう。まず、図１２Ａで説明した同様な手順で各パターンＰＴ１〜ＰＴ４のＡ列の３ビットのパターンをそれぞれ作業レジスタに生成し、
（１）ＰＴ１用のパターンを最初のカラムパターン保存領域（若しくはレジスタ）ＰＴ１ｓに保存、
（２）ＰＴ１用のパターンを隣接カラムパターン保存領域（若しくはレジスタ）ＰＴ１ｐに保存、
（３）ＰＴ２用のパターンを最初のカラムパターン保存領域（若しくはレジスタ）ＰＴ２ｓに保存、
（４）ＰＴ２用のパターンを隣接カラムパターン保存領域（若しくはレジスタ）ＰＴ２ｐに保存、
（５）ＰＴ３用のパターンを最初のカラムパターン保存領域（若しくはレジスタ）ＰＴ３ｓに保存、
（６）ＰＴ３用のパターンを隣接カラムパターン保存領域（若しくはレジスタ）ＰＴ３ｐに保存、
（７）ＰＴ４用のパターンを最初のカラムパターン保存領域（若しくはレジスタ）ＰＴ４ｓに保存、
（８）ＰＴ４用のパターンを隣接カラムパターン保存領域（若しくはレジスタ）ＰＴ４ｐに保存して、最後にそれぞれのカラムパターンをＰＴ１〜ＰＴ４のＡ列に書き込む。
（Ｂ列、Ｃ列のとき）
次に、パターン生成対象カラムが最初でも最後のカラムでない場合、つまり、この例でのＢ列、Ｃ列のカラムのときには、隣接ドット禁止演算を以下の手順で行なう。まず、図１２Ａで説明した同様な手順で各パターンＰＴ１〜ＰＴ４のＢ列の３ビットのパターンをそれぞれ作業レジスタに生成し、
（１）ＷＫにＰＴ１用のパターンと隣接カラムパターンＰＴ１ｐの論理積を保存、
（２）ＰＴ１用のパターンをＷＫとの排他的論理和演算結果に更新、この演算により図１２ＤのＰＴ１'［Ｂ，１］が１から０になる。
【０１０７】
（３）ＰＴ２用のパターンをＷＫとの論理和演算結果に更新、この演算により図１２ＤのＰＴ２'［Ｂ，１］が０から１になる。
【０１０８】
（４）ＷＫにＰＴ２用のパターンと隣接カラムパターンＰＴ２ｐの論理積を保存、
（５）ＰＴ２用のパターンをＷＫとの排他的論理和演算の結果に更新、
（６）ＰＴ３用のパターンをＷＫとの論理和演算結果に更新、
（７）ＷＫにＰＴ３用のパターンと隣接カラムパターンＰＴ３ｐの論理積を保存、
（８）ＰＴ３用のパターンをＷＫとの排他的論理和演算の結果に更新、
（９）ＰＴ４用のパターンをＷＫとの論理和演算の結果に更新、
（１０）ＷＫにＰＴ４用のパターンと隣接カラムパターンＰＴ４ｐの論理積を保存、
（１１）ＰＴ４用のパターンをＷＫとの排他的論理和演算の結果に更新、
（１２）ＰＴ１用のパターンをＷＫとの論理和演算結果に更新、
（１３）から（１６）でＰＴ１〜ＰＴ４用のパターンを隣接カラムパターン保存領域（若しくはレジスタ）ＰＴ１ｐ〜ＰＴ４ｐに保存して、最後にそれぞれのカラムパターンをＰＴ１〜ＰＴ４のＢ列に書き込む。同様にして、Ｃ列も処理する。その際に、演算（５）で図１２ＤのＰＴ２'［Ｃ，１］が１から０になり、演算（６）で図１２ＤのＰＴ３'［Ｃ，１］が０から１になる。
（Ｄ列のとき）
次に、パターン生成対象カラムが最後のカラムの場合、つまり、この例でのＤ列のカラムのときには、隣接ドット禁止演算を以下の手順で行なう。まず、図１２Ａで説明した同様な手順で各パターンＰＴ１〜ＰＴ４のＤ列の３ビットのパターンをそれぞれ作業レジスタに生成し、
（１）ＷＫにＰＴ１用のパターンと隣接カラムパターンＰＴ１ｐと最初のカラムパターンＰＴ１ｓの論理和との論理積を保存、
（２）ＰＴ１用のパターンをＷＫとの排他的論理和演算結果に更新、
（３）ＰＴ２用のパターンをＷＫとの論理和演算結果に更新、
（４）ＷＫにＰＴ２用のパターンと隣接カラムパターンＰＴ２ｐと最初のカラムパターンＰＴ２ｓの論理和との論理積を保存、
（５）ＰＴ２用のパターンをＷＫとの排他的論理和演算結果に更新、
（６）ＰＴ３用のパターンをＷＫとの論理和演算結果に更新、
（７）ＷＫにＰＴ３用のパターンと隣接カラムパターンＰＴ３ｐと最初のカラムパターンＰＴ３ｓの論理和との論理積を保存、
（８）ＰＴ３用のパターンをＷＫとの排他的論理和演算結果に更新、この演算により図１２ＤのＰＴ３'［Ｄ，１］が１から０になる。
【０１０９】
（９）ＰＴ４用のパターンをＷＫとの論理和演算結果に更新、この演算により図１２ＤのＰＴ４'［Ｄ，１］が０から１になる。
【０１１０】
（１０）ＷＫにＰＴ４用のパターンと隣接カラムパターンＰＴ４ｐと最初のカラムパターンＰＴ４ｓの論理和との論理積を保存、
（１１）ＰＴ４用のパターンをＷＫとの排他的論理和演算結果に更新、この演算により図１２ＤのＰＴ４'［Ｄ，３］が１から０になる。
【０１１１】
（１２）ＰＴ１用のパターンをＷＫとの論理和演算結果に更新、この演算により図１２ＤのＰＴ１'［Ｄ，３］が０から１になる。
【０１１２】
（１３）ＷＫにＰＴ１用のパターンと隣接カラムパターンＰＴ１ｐと最初のカラムパターンＰＴ１ｓの論理和との論理積を保存、
（１４）ＰＴ１用のパターンをＷＫとの排他的論理和演算結果に更新、
（１５）ＰＴ２用のパターンをＷＫとの論理和演算結果に更新、
（１６）ＷＫにＰＴ２用のパターンと隣接カラムパターンＰＴ２ｐと最初のカラムパターンＰＴ２ｓの論理和との論理積を保存、
（１７）ＰＴ２用のパターンをＷＫとの排他的論理和演算結果に更新、
（１８）ＰＴ３用のパターンをＷＫとの論理和演算結果に更新して、最後にそれぞれのカラムパターンをＰＴ１〜ＰＴ４のＤ列に書き込む。
【０１１３】
このようにして、図１２Ｂのパターンを図１２Ｄのように補正することができる。
【０１１４】
本実施形態では、４ビット補間について述べたが、例えば、３ビット補間の場合は、以下のように変更すれば良い。
【０１１５】
つまり、Ａ列の演算では（７）（８）の演算式が不要となり、Ｂ列、Ｃ列の演算では（９）〜（１１）及び（１６）の演算式が不要となり、Ｄ列の演算では（９）〜（１１）及び（１６）〜（１８）の演算式が不要になるだけである。
【０１１６】
また、例えば、６ビット補間の場合は、Ａ列の演算に（９）ＰＴ５ｓ＝ＰＴ５Ａ、（１０）ＰＴ５ｐ＝ＰＴ５Ａ、（１１）ＰＴ６ｓ＝ＰＴ６Ａ、（１２）ＰＴ６ｐ＝ＰＴ６Ａを加え、Ｂ列、Ｃ列の演算の（１１）の後に（１１−２）ＰＴ５ｎ＝ＰＴ５ｎ  ＯＲ  ＷＫ、（１１−３）ＷＫ＝ＰＴ５ｎ  ＡＮＤ  ＰＴ５ｐ、（１１−４）ＰＴ５ｎ＝ＰＴ５ｎ  ＥＯＲ  ＷＫ、（１１−５）ＰＴ６ｎ＝ＰＴ６ｎ  ＯＲ  ＷＫ、（１１−３）ＷＫ＝ＰＴ６ｎ  ＡＮＤ  ＰＴ６ｐ、（１１−４）ＰＴ６ｎ＝ＰＴ６ｎ  ＥＯＲ  ＷＫと、（１６）の後に（１７）ＰＴ５ｐ＝ＰＴ５Ａ、（１８）ＰＴ６ｐ＝ＰＴ６Ａを加え、Ｄ列の演算の（１１）の後に（１１−２）ＰＴ５ｎ＝ＰＴ５ｎ  ＯＲ  ＷＫ、（１１−３）ＷＫ＝ＰＴ５ｎ  ＡＮＤ（ＰＴ５ｐ  ＯＲ  ＰＴ５ｓ）、（１１−４）ＰＴ５ｎ＝ＰＴ５ｎ  ＥＯＲ
ＷＫ、（１１−５）ＰＴ６ｎ＝ＰＴ６ｎ  ＯＲ  ＷＫ、（１１−３）ＷＫ＝ＰＴ６ｎ  ＡＮＤ（ＰＴ６ｐ  ＯＲ  ＰＴ６ｓ）、（１１−４）ＰＴ６ｎ＝ＰＴ６ｎ  ＥＯＲ  ＷＫの演算式と、（１８）の後に（１９）ＷＫ＝ＰＴ３ｎ  ＡＮＤ（ＰＴ３ｐ  ＯＲ  ＰＴ３ｓ）、（２０）ＰＴ３ｎ＝ＰＴ３ｎ  ＥＯＲ  ＷＫ、（２１）ＰＴ４ｎ＝ＰＴ４ｎ  ＯＲ  ＷＫ、（２２）ＷＫ＝ＰＴ４ｎ  ＡＮＤ（ＰＴ４ｐ  ＯＲ  ＰＴ４ｓ）、（２３）ＰＴ４ｎ＝ＰＴ４ｎ  ＥＯＲ  ＷＫ、（２４）ＰＴ５ｎ＝ＰＴ５ｎ  ＯＲ  ＷＫの演算式を加えれば良く、この他の数のドット補間のときでも同様な考え方で対応可能である。
［記録制御方法］
図１３は本発明の実施形態に係るインクジェットプリンタ１００で実行される記録制御を示すフローチャートである。
【０１１７】
尚、図１３で使用されるパラメータは、図５で説明したＲＡＭ４０３のその他の領域４０３ｃに確保してある。ＭＳＫ＿ＮＵＭは、マスク番号を格納する作業レジスタである。ＭＳＫ＿ＴＯＰは、マスクデータ格納開始アドレスが設定され、かつマスクパターン生成処理にこれらのパラメータを受け渡すために使用される作業レジスタである。また、ＭＳＫ＿ＰＡＲは、マスクパターン生成処理において生成したマスクパターンの基本情報（図７のデータ３（６３０））の格納アドレスを記憶する作業レジスタである。また、ＬＰＯＳ及びＲＰＯＳはそれぞれ、主走査毎の記録範囲の左位置及び右位置を一時保存する作業レジスタである。また、ＰＡＳＳは、記録パスの回数を計数するための作業レジスタである。また、ＭＤ＿ＴＯＰ７３０、ＭＤ＿ＬＥＮ７４０、ＭＤ＿ＲＰ７５０は、図４で説明したマスクデータ読出制御回路７１０を制御するための制御レジスタである。
【０１１８】
以下、図１３に示す処理は記録開始時に実行される。
【０１１９】
まず、記録開始が指示されると、以前の前ページと同じ記録モードであるか否かを判定する（ステップＳ１００）。同じ記録モードである場合（ステップＳ１００でＮＯ）、ステップＳ１５０に進む。一方、同じ記録モードでない場合（ステップＳ１００でＹＥＳ）、ステップＳ１１０に進む。そして、以降のステップＳ１１０〜ステップＳ１４０でマスクパターンを生成する。
【０１２０】
具体的には、指定された記録モードの指示に応じた記録方式を求め、記録パス数やマスク番号等のパラメータを準備し、マスク番号をＭＳＫ＿ＮＵＭに設定する（ステップＳ１１０）。次に、マスクデータ格納開始アドレスをＭＳＫ＿ＴＯＰに設定する（ステップＳ１２０）。次に、後述のマスクパターン生成処理を実行する（ステップＳ１３０）。そして、マスクパターンの基本情報をＭＳＫ＿ＰＡＲに保存する（ステップＳ１４０）。
【０１２１】
次に、記録を開始するために記録媒体を給紙する（ステップＳ１５０）。正常に給紙動作が完了した場合には、ステップＳ１６０に進む。
【０１２２】
尚、給紙動作が記録媒体の不足（紙なし）や、ジャム発生などで正常にできなかった場合には、ユーザなどによるリトライ操作および再給紙動作により記録媒体が正常に給紙されるまで待機する。
【０１２３】
次に、記録媒体が給紙され記録準備が完了すると、記録パス回数ＰＡＳＳを０にリセットする（ステップＳ１６０）。そして、ステップＳ２２０で記録が終了するまでの間、ステップＳ１７０〜ステップＳ２２０を繰り返し実行して記録を行なう。
【０１２４】
具体的には、ＲＡＭ４０３の画像データ領域４０３ａからステップＳ２１０の主走査により記録対象となる部分を抽出するために、画像データ読出位置を設定する（ステップＳ１７０）。次に、記録範囲の左位置をＬＰＯＳに、右位置をＲＰＯＳに保存する（ステップＳ１８０）。続いて、ステップＳ１４０で取得したマスクパターンの基本情報を参照して、マスクデータ読出制御回路７１０のＭＤ＿ＴＯＰ７３０、ＭＤ＿ＬＥＮ７４０、ＭＤ＿ＲＰ７５０を次のように設定する（ステップＳ１９０）。
【０１２５】
尚、下記の表記において、Ｘ＋ＹはＸとＹを加算する演算式、Ｘ＊ＹはＸにＹを掛ける演算式、Ｘ／ＹはＸをＹで割った商を求める演算式、Ｘ％ＹはＸをＹで割った余りを求める演算式を意味する。
【０１２６】
（１）  MD_TOP = MSK_TOP + BUF_OFFSET(636)
+ (( PASS / REPEAT_NUM(635) ) % BUF_NUM(631) ) * BUF_NEXT
（２）  MD_LEN = BUF_SIZE(637)
・主走査方向が順方向（左から右へ記録）のとき
（３）  MD_RP  = (( SCAN_OFFSET(636) * PASS + LPOS ) % BUF_WIDTH(633) )
* BUF_HEIGHT(632)
・主走査方向が逆順方向（右から左へ記録）のとき
（３）  MD_RP  = (( SCAN_OFFSET(636) * PASS + RPOS ) % BUF_WIDTH(633) )
* BUF_HEIGHT(632)
そして、必要量だけ、つまり、これから主走査するマルチパス記録の最下部のバンド高さ分量だけ記録媒体を副走査方向に搬送する（ステップＳ２００）。次に、プリントヘッド１０４による主走査方向への記録を行う（ステップＳ２１０）。そして、ステップＳ２２０で、このページ内の記録すべき画像データの記録が終了したか否かを判定する。記録が終了していない場合（ステップＳ２２０でＮＯ）、ステップＳ１７０に戻り、記録動作を継続する。一方、記録が終了した場合（ステップＳ２２０でＹＥＳ）、記録媒体を排紙し（ステップＳ２３０）、処理を終了する。
［マスクパターン生成処理の制御方法］
一般的に、メモリデバイスにはワード長という定義があり、ひとつのメモリローケーションを構成するビット数（ワード長）が８ビット、１６ビット、３２ビットように固定されている。例えば、本実施形態におけるメモリＲＡＭ４０３は１６ビット長のものを採用している。上述したように、本発明のマスクパターンは副走査方向に任意ビット数のパターンを副走査方向の任意位置から生成させて、所定の補間ドットパターンとなるようにマスクパターンを生成する。
【０１２７】
従って、ひとつの補間関係を形成する生成すべきマスクパターンの副走査方向のビット数は必ずしも１６ｎビットにならず、また、ＲＡＭ４０３に生成したマスクパターンを書き込むときの開始ビット位置も１６ｎにはならないわけである。
【０１２８】
このことより、本実施形態では、まず、対象となるＲＡＭ４０３のマスクデータ領域４０３ｂをすべて０クリアしておいて、ＳＲＡＭ４３０に３２ビットの作業レジスタをマスクパターン数分用意して、マスクパターン生成対象となる１カラム中の各々のマスクパターンを、用意した各々の作業レジスタに最下位ビット（Ｄ０ビット）より最大１６ビット量生成する。
【０１２９】
そして、これらの作業レジスタを各々のマスクパターンの書込ビット位置になるよう３２ビット全体を（最大１５ビット）左シフトしたものを、下位１６ビットと上位１６ビットの２回に分けてＲＡＭ４０３の所望位置に対してＯＲ（論理和）書込を行うようにしている。
【０１３０】
上記のように、頻繁にアクセスされるような３２ビットの作業レジスタをＳＲＡＭ４３０に配置、あるいはＣＰＵ４０２の汎用レジスタを使用することで処理速度を向上させることができる。また、マスクパターン生成処理部分をマスクパターン種類ごとに複数に細分化しておいて、できるだけこれらの処理を単純化させるようにして、ひとつの処理のマスクパターン生成プログラムのサイズを最小化してＲＯＭ４１１に記憶しておき、マスク番号ＭＳＫ＿ＮＵＭに応じたマスクパターン生成処理実行直前で、ＳＲＡＭ４３０のマスクデータ領域４０３ｂにマスクパターン生成プログラムをロードして、ＳＲＡＭ４３０上でマスクパターン生成プログラムを実行させて高速にマスクパターンを生成させるようにしている。
【０１３１】
但し、ＳＲＡＭ４３０のメモリサイズが十分大きく、すべての種類のマスクパターン生成プログラムを静的にＳＲＡＭ４３０に常駐させられる場合には、毎回、そのマスクパターン生成プログラムをＳＲＡＭにロードさせる必要はなく、例えば、装置の初期化処理等のタイミングでＳＲＡＭ４３０に予めロードされておけば良い。
【０１３２】
しかし、この方法は、ＳＲＡＭのメモリサイズが大きくなるため制御用集積回路等のチップ面積が増大してしまい、結果としてかなりなコストアップになることが予想され現実的ではない。また、別の方法として特別な制御ロジックを用意してハードウェアロジック回路により上記のような処理を部分的に補助、あるいは全てをサポートする方法も考えられる。
【０１３３】
例えば、上記のようなＲＡＭ４０３へのマスクパターン書込をハードウェアロジック回路でサポートして、ソフトウェア処理はメモリ境界を意識することなく必要量のマスクパターンのビット数を一度に生成させて、用意したハードウェアロジック回路の所定の制御レジスタなどに書き込むべきマスクパターンのビットパターンデータと、その書込開始ビット位置を設定できるように構成する。そして、ソフトウェア処理による書込指示によりハードウェアロジック回路がＲＡＭ４０３に対して直接リード・モディファイ・ライトなどの手法によって生成したマスクパターンの書込対象ビットのビット位置のみを書き換えるようにすることも可能である。
【０１３４】
そのようにした場合には、上記のようなマスクバッファの０クリア処理は不要となり、更なる高速化が期待できる。また、更に、ハードウェアロジック回路により乱数を発生させ、ハードウェアロジック回路でその乱数値に応じてマスクパターンを生成する方法や、前述の隣接ドット禁止演算をハードウェアロジック回路で行なう方法なども可能である。
【０１３５】
このように、ハードウェアロジック回路により、マスクパターンを生成するように構成すれば、マスクパターンを生成に要する処理時間は短縮化でき高速化できる。しかし、これらのハードウェアロジック回路のサポートによる方法は、制御回路などの追加によるコストアップが懸念され、また、些細なマスクパターン生成方法の仕様変更などを困難にさせてしまう恐れがある。
【０１３６】
次に、図１３のステップＳ１３０のマスクパターン生成処理の詳細について、図１４を用いて説明する。
【０１３７】
図１４は本発明の実施形態に係るステップＳ１３０のマスクパターン生成処理の詳細を示すフローチャートである。
【０１３８】
尚、図１４で説明するマスクパターン生成処理は、ＣＰＵ４０２の制御によって実行されるプログラムによって実現されるとするが、専用のハードウェア回路で実現されても良い。
【０１３９】
まず、図１３のステップＳ１１０で設定されたマスク番号ＭＳＫ＿ＮＵＭに基づいて図６の制御テーブル６００を参照し、マスク番号に対応するデータ１（６１０）のパラメータを取得する（ステップＳ３００）。次に、図１３のステップＳ１３０で設定されたマスクデータ開始アドレスＭＳＫ＿ＴＯＰで指示されたアドレスからステップＳ３００で取得したパラメータのＣＬＲ＿ＳＩＺＥ６１１で指示されるバイト数だけＲＡＭ４０３を０クリアする（ステップＳ３１０）。
【０１４０】
続いて、ステップＳ３００で取得したパラメータのＴＢＬ＿ＡＤＲ６１４で指示されるアドレスに格納されている図７のデータ２（６２０）のパラメータを取得して、作業レジスタＲＮＤに乱数値テーブルの読出開始アドレスＲＮＤ＿ＡＤＲ６２１を、作業レジスタＢＩＮＦに図７のマスク基本情報であるデータ３（６３０）の格納アドレスＢＩＮＦ＿ＡＤＲ６２２を、作業レジスタＤＩＮＦに図８のマスク詳細情報であるデータ４（６５０）の格納アドレスＤＩＮＦ＿ＡＤＲ６２３を、それぞれ保存する（ステップＳ３２０）。
【０１４１】
次に、ステップＳ３１０で取得したパラメータのマスクパターン生成処理の格納アドレスＦＵＮＣ＿ＡＤＲ６１３で指示されたアドレスからＦＵＮＣ＿ＳＩＺＥ６１２で指示されるバイト数だけＲＯＭ４１１からＳＲＡＭ４３０のマスクデータ領域４０３ｂにマスクパターン生成プログラムをロードする（ステップＳ３３０）。続いて、ロードしたプログラムをＳＲＡＭ４３０上で実行する（ステップＳ３４０）。そして、ステップＳ３２０でＢＩＮＦに保存しておいたマスク基本情報の格納アドレスを読み出し、それを戻り値として（ステップＳ３５０）、処理を終了する。
［（ＳＲＡＭ上で実行させる）高速マスクパターン生成方法］
次に、図１４のステップＳ３４０の具体例について、図１５Ａ、図１５Ｂを用いて説明する。
【０１４２】
図１５Ａ及び図１５Ｂは本発明の実施形態に係るステップＳ３４０の具体例を示すフローチャートである。
【０１４３】
図１５Ａ〜１５Ｂで使用されている、ｐｎｕｍは、補間すべきドット数を表す定数であり、例えば、図９Ａ〜９Ｂで説明したような４ドット補間のときは「４」を定義する。ｗｂｉｔは、一回のバンド処理における最大ビット数を表すものである。つまり、ｗｂｉｔ量は一度に生成可能なマスクパターンの副走査方向のビット数を定めるもので、また、書込時のビットシフト量は最大ｗｂｉｔ−１になるように指定する。例えば、ｗｂｉｔを８に設定したときは、最大８ビットのパターンデータを最大７ビットシフトできることになる。
【０１４４】
このようなビットシフト操作は、例えば、ＣＰＵ内蔵の汎用レジスタで行なうことが可能であるから、ｗｂｉｔの設定値は、ビットシフト操作に利用可能な汎用レジスタのビット長の１／２にすることが望ましい。本実施形態のＣＰＵ４０２は、３２ビットの汎用レジスタが内蔵されていて、ビットシフト命令により３２ビット内で一度に１５ビットのシフト操作が可能な構成なので、本実施形態ではｗｂｉｔを１６に定義している。
【０１４５】
また、図１５Ａ〜１５Ｂで一点鎖線で囲われたステップは繰返し処理であり、その左上に記載してある「Ｎ＝０→ｐｎｕｍ」は、一点鎖線内のステップをＮ＝０から始め、１サイクル終了ごとにＮ＝Ｎ＋１して、Ｎ＜ｐｎｕｍの条件の間その枠内の処理を繰返すことを表している。
【０１４６】
また、図１５Ａ〜１５Ｂで使用されている変数は、図５で説明したＳＲＡＭ４３０のマスク処理作業領域４３０ａに確保してある。これらの変数は、頻繁に利用するもののみを確保するようにして、その確保数を必要最小限にとどめ、ＳＲＡＭ４３０の使用占有率を少なくしている。
【０１４７】
ＨＥＩＧＨＴは、マスクバッファ高さをバイト数で表したＢＵＦ＿ＨＥＩＧＨＴ（６３２）の値を一時的に保存する。
【０１４８】
ＷＩＤＴＨは、マスクバッファ幅をカラム数で表したＢＵＦ＿ＷＩＤＴＨ６３３の値を一時的に保存する。
【０１４９】
Ｍは、図８のマスク詳細情報であるデータ４（６５０）の読出開始位置を一時的に保存する。
【０１５０】
Ｎは、[Ｎ]を付した配列型の変数の配列番号を一時的に保存する。
【０１５１】
ＢＡＮＤは、図８のマスク詳細情報であるデータ４の対象となるバンド高さＢＡＮＤ＿ＨＥＩＧＴ６６１の値を一時的に保存する。
【０１５２】
ＶＨは、未処理のバンド高さ量を一時的に保存する。
【０１５３】
ＶＯＦＳは、処理済のバンド高さ量を一時的に保存する。
【０１５４】
Ｈは、バンド処理中のパターン生成／書込サイクルで処理すべきバンドの高さ量を一時的に保存する。
【０１５５】
Ｗは、バンド処理中の作業用カウンタ値を一時的に保存する。
【０１５６】
Ｒは、バンド処理中の乱数値を０からｐｎｕｍ−１にした値一時的に保存する。
【０１５７】
ＣＯＬは、バンド中の処理対象カラム位置を一時的に保存する。
【０１５８】
また、ＳＲＮＤ（不図示）は、図１４のステップＳ３２０のＲＮＤで示す乱数値テーブルの読出開始アドレスが設定されている。ＰＴは、１回のマスクパターン書込のときに使用する３２ビットの作業レジスタである。
【０１５９】
また、図中、[Ｎ]を付したものは配列型の変数を表し、それぞれは、ｐｎｕｍ個の配列型変数で構成されていて、次のようなものがある。
【０１６０】
まず、ＶＰＯＳ［Ｎ］は、図８のＢＡＮＤ＿ＰＯＳ６６２をｗｂｉｔで割った余りを補間パターン毎に求めた値、つまり、補間パターン毎のバンド開始位置を一時的に保存する。
【０１６１】
ＷＴＯＰ[Ｎ]は、マスクバッファ先頭アドレスＭＳＫ＿ＴＯＰに図８のＢＵＦ＿ＴＯＰ６６３を加え、さらにＢＡＮＤ＿ＰＯＳ６６２をｗｂｉｔで割った商を加えたもので、補間パターン毎のバンドの０カラム位置を指すマスクバッファへのアドレス値を一時的に保存する。
【０１６２】
ＷＥＮＤ[Ｎ]は、マスクバッファ先頭アドレスＭＳＫ＿ＴＯＰにＢＵＦ＿ＴＯＰ６６３を加えさらにバッファサイズ（バッファ高さＨＥＩＧＨＴ＊バッファ幅ＷＩＤＴＨ）加えたもので、補間パターン毎のバンドの最終カラム＋１の位置を指すマスクバッファへのアドレス値を一時的に保存する。
【０１６３】
ＷＣＵＲ［Ｎ］は、補間パターン毎のバンドのマスクバッファへの書込アドレス値を一時的に保存する。
【０１６４】
ＨＯＦＳ［Ｎ］は、補間パターン毎のバンドの図８のオフセットカラム数ＨＰＯＳ６６４にバッファ高さＨＥＩＧＨＴを掛けた値、つまり、書込オフセット量を一時的に保存する。
【０１６５】
ＰＣＵＲ［Ｎ］は、補間パターン毎のバンドの１回の生成／書込サイクル中のマスクパターンデータ（ｗｂｉｔのビット数）を一時的に保存する。
【０１６６】
以下の配列型変数は、図１２Ｃで説明した隣接ドット禁止演算処理用のもので、図１５Ｂのステップ番号に下線を付した処理内（ステップＳ８００〜ステップＳ８３０）でのみ使われ、既に図１２Ｃで隣接ドット禁止演算は説明したものと同等である。
【０１６７】
ＰＰＲＶ［Ｎ］は、図１２ＣのＰＴ１ｐ〜ＰＴＮｐと同じ補間パターン毎のバンドの隣接カラム（直前のカラム）のマスクパターンデータ（ｗｂｉｔのビット数）を一時的に保存する。また、Ｐ１ＳＴ[Ｎ］は、図１２ＣのＰＴ１ｓ〜ＰＴＮｓと同じ補間パターン毎のバンドの最初のカラムのマスクパターンデータ（ｗｂｉｔのビット数）を一時的に保存するものである。尚、隣接ドット禁止が必要ないマスクパターンを生成するときには、ＰＰＲＶ［Ｎ］およびＰ１ＳＴ［Ｎ］は不要である。
【０１６８】
また、ステップ番号に下線を付したもの（ステップＳ８００〜ステップＳ８３０）は、図１２Ｃで説明した隣接ドット禁止演算のための処理であるが、隣接ドット禁止が必要ないマスクパターンを生成するときには含まれない。
【０１６９】
また、図中の表記でＸ＋ＹはＸとＹを加算する演算式を、Ｘ−ＹはＸからＹを減算する演算式、Ｘ＊ＹはＸにＹを掛ける演算式、Ｘ／ＹはＸをＹで割った商を求める演算式を、Ｘ％Ｙは、ＸをＹで割った余りを求める演算式を、それぞれ意味する。
【０１７０】
図１５Ａに示した処理は、図１４のステップＳ３４０を実行したときに開始される。以下の処理では、上述した４ドット補間のとき、つまり、ｐｎｕｍ＝４のときの実施形態を一例として説明する。
【０１７１】
まず、ステップＳ５００〜Ｓ５２０は本処理の初期化処理である。
【０１７２】
ＨＩＧＨＴにマスクバッファの１カラムの高さを表すバイト数を設定する（ステップＳ５００）。次に、ＷＩＤＴＨにマスクバッファのカラム幅数を設定する（ステップＳ５１０）。次に、作成すべきマスクパターンのマスク詳細情報の最初を読み出すようにするためにＭを０に初期化する（ステップＳ５２０）。
【０１７３】
これにより、図８の矢印ａで示すＡ１のデータ４の６６１〜６６４のパラメータから読み出すようにする。本処理は、基本的には４つの入れ子ループ処理で形成されていて、外側から第１ループ、第２ループ、第３ループ、第４ループと定義すると、第１ループはステップＳ５３０〜Ｓ１０６０であり、ひとつのセットのバンド情報の生成が終了するたびにステップＳ５３０に戻るループ処理で、図８のマスク詳細情報であるデータ４（６５０）に登録されている全てのバンド情報に従ったマスクパターンの生成が完了するまで繰返す。
【０１７４】
第２ループは、ステップＳ５７０〜Ｓ１０４０であり、各バンドのマスクパターンをｗｂｉｔ以下の高さの単位量のパターン生成が終わるたびにステップＳ５７０に戻るループ処理で、処理済のバンド高さＶＯＦＳがバンド高さＢＡＮＤになるまで繰返す。
【０１７５】
第３ループは、ステップＳ６４０〜Ｓ１０１０であり、ｗｂｉｔ単位の高さ量のパターンを１回書き込み終了するたびにステップＳ６４０に戻るループ処理で、ｗｂｉｔ以下の高さの単位量のパターンをマスクバッファ幅ＷＩＤＴＨのカラム数の量のパターンの生成が完了するまで繰返す。
【０１７６】
第４ループは、ステップＳ６６０〜Ｓ７００であり、マスクパターンを１ビット生成するたびにステップＳ６６０に戻るループ処理で、ひとつのマスクパターン生成／書込サイクルで処理すべきバンド高さのビット数が完了するまで繰返す。
【０１７７】
それでは、これらのループ内の処理を以下に詳述する。
【０１７８】
まず、第１ループの入り口のステップＳ５３０では、ステップＳ５３０内の（１）〜（４）を４回繰返すことで、以下の処理を実行する。つまり、
（１）ＶＰＯＳ［０]にＡ１バンドのビット開始位置を、
（２）ＷＴＯＰ［０］にＡ１バンドの０カラム位置のバッファアドレスを、
（３）ＷＥＮＤ[０]にＡ１バンドの最終カラム＋１の位置のバッファアドレスを、
（４）ＨＯＦＳ［０］にＡ１バンドの書込オフセット量を設定する。
【０１７９】
そして（１）から（４）を、後３回繰返してＶＰＯＳ［１］、ＶＰＯＳ［２］、ＶＰＯＳ[３]にＢ１、Ｃ１、Ｄ１バンドのビット開始位置を、また、ＷＴＯＰ［１］、ＷＴＯＰ［２］、ＷＴＯＰ[３]にＢ１、Ｃ１、Ｄ１バンドの０カラム位置のバッファアドレスを、また、ＷＥＮＤ[１]、ＷＥＮＤ［２］、ＷＥＮＤ［３］にＢ１、Ｃ１、Ｄ１バンドの最終カラム＋１の位置のバッファアドレスを、また、ＨＯＦＳ［１］、ＨＯＦＳ［２］、ＨＯＦＳ［３］にＢ１、Ｃ１、Ｄ１バンドの書込オフセット量を、それぞれ設定する。
【０１８０】
続いて、ＢＡＮＤにＡ１〜Ｄ１のバンド高さを設定する（ステップＳ５４０）。次に、ＶＨに処理すべきバンド高さを設定する（ステップＳ５５０）。次に、バンド処理を開始するために処理済のバンド高さＶＯＦＳを０に初期化する（ステップＳ５６０）。
【０１８１】
次に、第２ループの入り口のステップＳ５７０〜Ｓ６１０で、Ｈにバンド処理中のマスクパターン生成／書込サイクルで処理すべきバンドの高さ量をｗｂｉｔ以下の値に設定し、処理すべきバンド高さＶＨを更新する。
【０１８２】
つまり、処理すべきバンド高さＶＨがｗｂｉｔより大きい場合（ステップＳ５７０でＹＥＳ）、Ｈにｗｂｉｔを設定し（ステップＳ５８０）、ＶＨからｗｂｉｔを減算して（ステップＳ５９０）、ステップＳ６２０に進む。
【０１８３】
一方、ｗｂｉｔ以下の場合（ステップＳ５７０でＮＯ）、ＨにＶＨを設定し（ステップＳ６００）、もう処理すべきバンド高さがないのでＶＨを０にリセットして（ステップＳ６１０）、ステップＳ６２０に進む。
【０１８４】
続いて、ステップＳ６２０〜Ｓ６３０では、ステップＳ６４０から始まる第３ループ処理の初期化を行なう。
【０１８５】
つまり、Ａ１バンドの０カラム位置を指すアドレス値ＷＴＯＰ[０]とＡ１バンドの書込オフセット量ＨＯＦＳ［０］を加えたものをＡ１バンドのマスクバッファへの書込アドレス値としてＷＣＵＲ［０］に設定する（ステップＳ６２０）。
【０１８６】
これを、３回繰返してＷＣＵＲ［１］、ＷＣＵＲ［２］、ＷＣＵＲ[３]にＢ１、Ｃ１、Ｄ１バンドのマスクバッファへの書込アドレス値として設定する。続いて、処理対象カラム位置を０リセットする（ステップＳ６３０）。
【０１８７】
次に、第３ループの入り口のステップＳ６４０〜Ｓ６５０では、ステップＳ６６０から始まる第４ループ処理のための初期化を行なう。
【０１８８】
つまり、Ａ１バンドのマスクパターンデータＰＣＵＲ［０］を０リセットする（ステップＳ６４０）。
【０１８９】
これを、３回繰返してＢ１バンド用のＰＣＵＲ［１］、Ｃ１バンド用のＰＣＵＲ［２］、Ｄ１バンド用のＰＣＵＲ[３]を０リセットする。そして、ステップＳ６６０〜Ｓ７００の第４ループのループ回数を決める作業用カウンタＷに、バンド処理中のパターン生成／書込サイクルで処理すべきバンドの高さ量Ｈを設定する（ステップＳ６５０）。
【０１９０】
次に、第４ループでは、まず、ＳＲＮＤから乱数値テーブルを読出し、ｐｎｕｍ＝４であるので、乱数値０〜３をＲに設定し、ＳＲＮＤの読出位置を必要に応じて更新する（ステップＳ６６０）。例えば、乱数値が０〜３範囲で発生させる場合には、乱数値テーブルの値を２ビットずつ利用すればよいわけで、例えば、乱数値テーブルが記憶されているＲＯＭ４１１のワード長が１６ビットのときには、乱数発生８回（＝１６ビット／２ビット)につき１回だけＲＯＭ４１１から実際に１６ビットの乱数データを読み出す。
【０１９１】
次に、ＰＣＵＲ［０］〜[３]をそれぞれ左に１ビットシフトして（ステップＳ６７０）、ＰＣＵＲ[ 乱数値Ｒ ]のところだけＤ０ビットを１に設定する（ステップＳ６８０）。これにより、例えば、Ｒ＝０のときはＡ１バンド用のＰＣＵＲ［０］にビットをセット、Ｒ＝１のときはＢ１バンド用のＰＣＵＲ［１］にビットをセット、Ｒ＝２のときはＣ１バンド用のＰＣＵＲ［２］にビットをセット、Ｒ＝３のときはＤ１バンド用のＰＣＵＲ［３］にビットをセットするようにして、ランダムなマスクパターンを副走査方向に生成する。
【０１９２】
そして、ステップＳ６８０で、１ビットのマスクパターンを生成したので作業用カウンタＷを減算し（ステップＳ６９０）、Ｗが０より大きい場合（ステップＳ７００でＹＥＳ）、ステップＳ６６０に戻る。一方、Ｗが０になる場合（ステップＳ７００でＮＯ）、つまり、対象となる１カラム中の所定量のビット高さ量のマスクパターンの生成が終了すると、図１５Ｂに進む。
【０１９３】
図１５ＢのステップＳ８００、ステップＳ８１０、ステップＳ８２０は、隣接ドット禁止演算が必要なマスクパターン生成処理にだけ存在するもので、対象カラム位置ＣＯＬが０、つまり、最初のカラムのときにステップＳ８００の隣接ドット禁止演算１を実行する。また、ＣＯＬが０より大きく（最初のカラムでない）、かつマスク幅ＷＩＤＴＨ−１（最終のカラムでないとき）にはステップＳ８１０の隣接ドット禁止演算２を実行する。また、その他のとき、つまり、ＣＯＬがマスク幅−１（最終のカラムのとき）にはステップＳ８３０の隣接ドット禁止演算３を実行する。
【０１９４】
尚、ステップＳ８００の隣接ドット禁止演算１は図１２Ｃで説明したＡ列のときと、ステップＳ８１０の隣接ドット禁止演算２はＢ列、Ｃ列のときと、ステップＳ８２０の隣接ドット禁止演算３はＤ列のときと、全く演算方法が同じなのでここでは詳述しない。
【０１９５】
続いて、ステップＳ９００（ステップＳ９１０〜Ｓ９６０をｐｎｕｍ回繰返す）にて、ＲＡＭ４０３上の指定されたマスクデータ領域４０３ｂに上記処理で生成したマスクパターンを書き込む。
【０１９６】
まず、Ａ１バンドのマスクパターンＰＣＵＲ［０］をＡ１バンドのバンド開始位置ＶＰＯＳ［０］の量だけ左にビットシフトしたデータをＰＴに生成して（ステップＳ９１０）、Ａ１バンドのマスクバッファへの書込アドレスＷＣＵＲ［０］が指すメモリ位置にＰＴをＯＲ（論理和）することで書き込む（ステップＳ９２０）。
【０１９７】
尚、ｗｂｉｔ＝１６ときには、ＰＴは３２ビットとなり、ＷＣＵＲ[Ｎ]が指すアドレスが（１を１バイトと考えたアドレス値で）２ｎの物理アドレスを指すことになる。ところが、ＣＰＵの種類、あるいはメモリコントロール回路の制御方式などによっては３２ビットのメモリ書込操作が４ｎの物理アドレスでのみ可能な場合があるので、その際にはＰＴの下位１６ビットをＷＣＵＲ［Ｎ］が指すアドレスにＯＲ（論理和）書込、ＰＴの上位１６ビットをＷＣＵＲ［Ｎ］＋２（１を１バイトと考えたアドレス値で）が指すアドレスにＯＲ（論理和）書込を行う、即ち、複数回に分けて書込を行うようにすればよい。
【０１９８】
続いて、ステップＳ９４０〜Ｓ９６０にてＡ１バンドのマスクバッファへの書込アドレスＷＣＵＲ［０］を更新する。
【０１９９】
つまり、ＷＣＵＲ［０］にバッファ高さＨＥＩＧＨＴを加算し（ステップＳ９４０）、ＷＣＵＲ［０］がＡ１バンドの最終カラム位置＋１のアドレス値ＷＥＮＤ［０］より小さい場合（ステップＳ９５０でＹＥＳ）、Ａ１バンドの書込を終了する。一方、ＷＥＮＤ［０］以上の場合（ステップＳ９５０でＮＯ）、ＷＣＵＲ［０］をＡ１バンドの０カラム位置のバッファアドレスＷＴＯＰ［０］に変更して（ステップＳ９６０）、Ａ１バンドの書込を終了する。
【０２００】
そして、ステップＳ９１０〜Ｓ９６０を３回繰返し、Ａ１バンドと同様にＢ１、Ｃ１、Ｄ１バンドの書込と、書込アドレスＷＣＵＲ［１］、ＷＣＵＲ［２］、ＷＣＵＲ［３］の更新を行なう。
【０２０１】
次に、カラム位置ＣＯＬを更新し（ステップＳ１０００）、ＣＯＬがバッファ幅ＷＩＤＴＨ未満である場合（ステップＳ１０１０でＹＥＳ）、第３ループの先頭のステップＳ６４０に戻る。そして、ＣＯＬがＷＩＤＴＨと等しくなると第３ループを終了する。一方、ＣＯＬがバッファ幅ＷＩＤＴＨ以上である場合（ステップＳ１０１０でＮＯ）、ステップＳ１０２０に進む。
【０２０２】
次に、ステップＳ１０２０では、Ａ１〜Ｄ１バンドの０カラム位置のバッファアドレスを更新する。
【０２０３】
つまり、Ａ１バンドの０カラム位置のバッファアドレスＷＴＯＰ［０］にｗｂｉｔを８で割った商(ｗｂｉｔをバイト数に換算した値)を加算する。これは、上記第３ループによりｗｂｉｔの高さだけＡ１バンドのマスクパターンを生成完了したからである。Ａ１バンドと同様にしてＢ１バンド用のＷＴＯＰ［１］、Ｃ１バンド用のＷＴＯＰ［２］、Ｄ１バンド用のＷＴＯＰ［３］にｗｂｉｔを８で割った商(ｗｂｉｔをバイト数に換算した値)を加算する。
【０２０４】
次に、処理済のバンド高さＶＯＦＳに第３ループで生成済のバンド高さＨを加算してＶＯＦＳを更新する（ステップＳ１０３０）。
【０２０５】
次に、ＶＯＦＳがＡ１バンドの高さＢＡＮＤ未満である場合（ステップＳ１０４０でＹＥＳ）、第２ループの最初のステップＳ５７０に戻る。そして、処理済のバンド高さＶＯＦＳがＡ１バンド高さＢＡＮＤと等しくなると、Ａ１バンド、Ｂ１バンド、Ｃ１バンド、Ｄ１バンドのマスクパターンが完成したことになる。
【０２０６】
そして、全てのマスクパターン生成が完了したか否かを判定する（ステップＳ１０５０）。まだ、残りマスクパターン生成がある場合（ステップＳ１０５０でＮＯ）、マスク詳細情報の読出し位置Ｍにｐｎｕｍを加算し（ステップＳ１０６０）、つまり、図８のマスク詳細情報であるデータ４（６５０）の矢印ｂから始まるＡ２バンド、Ｂ２バンド、Ｃ２バンド、Ｄ２バンドのパラメータがステップＳ５３０で取得できるようにして、第１ループの最初のステップＳ５３０に戻り、上記第１ループ〜第４ループの処理でＡ１〜Ｄ１と同じ手順により残りのＡ２〜Ｄ２バンドのマスクパターンを生成する。
【０２０７】
尚、上記説明でのＡ１をＡ２に、Ｂ１をＢ２に、Ｃ１をＣ２に、Ｄ１をＤ２に、それぞれ読みかえて考えればよいので、ここではＡ２バンド〜Ｄ２バンドのマスクパターン生成方法は詳述しない。
【０２０８】
以上のようにして、全てのマスクパターン生成が終了すると（ステップＳ１０５０でＹＥＳ）、処理を終了する。また、その際に乱数値テーブルの最終読出位置（ＳＲＮＤの）を戻り値として、参照元が乱数値テーブルを継続的に使用できるようにしている。このようにすれば、複数の異なる形式のマスクパターンが必要な際にも、乱数情報を継続して利用させることで、生成する異なるマスクパターン同士が例え全く同じ形態でも、異なるマスクパターン同士の同一カラム位置に異なったマスクパターンを生成するようにしている。このようにすれば、異なるマスクパターン同士のパターン同調などの問題をも回避可能である。
【０２０９】
以上説明したように、本実施形態によれば、副走査方向に記録素子を並べた構成、例えば、ノズル列を用いてマルチパス記録する際に、副走査方向の補間ドット数を２ｎ＋１、つまり、奇数個にすることができることがわかる。さて、このような記録素子の副走査方向の配置は、その解像度が高くなるとひとつの記録色（インク色）に対応したノズル列が複数になることが多いことが知られていて、例えば、ひとつの記録色に対応したノズル列を副走査方向に見て、奇数ドット位置と偶数ドット位置に千鳥状に分離して記録素子を配列する方法がある。
【０２１０】
このように記録素子を分離配置することで高解像化は比較的容易にすることが可能になるが、反面、物理的、電気的にノズルなどの記録素子を分別したことで、ノズル列間で特性ばらつきが生じてしまうことがある。つまり、２列に分けた場合には奇数ドット位置と偶数ドット位置で微妙に特性が異なることがある。
【０２１１】
このような構成でマルチパス記録を行なうと、従来は副走査方向の補間ドット数が２ｎであることから必ず奇数ドット位置の記録素子で記録したもの同士、偶数ドット位置の記録素子で記録したもの同士の補間関係になってしまう。
【０２１２】
この結果、最悪の場合、両者の特性ばらつきにより、奇数ドット位置で記録した画像と、偶数ドット位置で記録した画像が干渉しあったり、記録濃度差、着弾位置などの物理的な記録位置、着弾面積などに傾きあるいは差が生じて、その結果記録画像に濃度ムラやスジなどが発生してしまう。
【０２１３】
そこで、上述した本実施形態の補間方式を採用すると、副走査方向の補間を奇数ドットと偶数ドット位置の記録素子を交互に使用した間引き記録出力を補間しあうようにできるので、たとえ、奇数ドット位置／偶数ドット位置間の特性ばらつきがあっても、記録媒体上で平均化されて記録出力されることから、濃度ムラやスジなどの発生を抑制できる。
【０２１４】
また、副走査方向の搬送分解能と副走査方向の記録素子の配列解像度との関係が２ｎあるいは１／２ｎでなくてもマルチパス記録が可能になり、濃度むらやスジなどを低減した画像出力が可能になる。
【０２１５】
更に、副走査方向の搬送解像度と副走査方向の記録素子の配列解像度との比率を、例えば、３：２（４００ｄｐｉ：６００ｄｐｉ）に設定できるので、主走査方向の記録媒体上の記録密度を低下させることなく、搬送系の搬送速度を高速化や清音化することが可能であり、また、搬送系の機構部品などのコストを抑制することができる。
【０２１６】
また、上述の実施形態における記録モードはホストコンピュータ５００より取得したが、例えば、画像記録装置自身で文字や画像データを記録画像データに展開して画像記録したり、また、フラッシュメモリデバイスなどを読取り、色処理、ハーフトーニングなどの画像処理を行ないながら画像を記録する装置においても、使用される記録媒体と記録品位などにより上記記録モードを決めて記録することができる。更には、画像記録装置に自動的に記録媒体の種類を検出できる機構を設けて、その判定結果に応じて記録モードを決めるようにしてもよい。
【０２１７】
以上の実施形態は、特にインクジェット記録方式の中でも、インク吐出を行わせるために利用されるエネルギーとして熱エネルギーを発生する手段（例えば電気熱変換体やレーザ光等）を備え、前記熱エネルギーによりインクの状態変化を生起させる方式を用いることにより記録の高密度化、高精細化が達成できる。
【０２１８】
その代表的な構成や原理については、例えば、米国特許第４７２３１２９号明細書、同第４７４０７９６号明細書に開示されている基本的な原理を用いて行うものが好ましい。この方式は、いわゆるオンデマンド型、コンティニュアス型のいずれにも適用可能であるが、特に、オンデマンド型の場合には、液体（インク）が保持されているシートや液路に対応して配置されている電気熱変換体に、記録情報に対応していて核沸騰を越える急速な温度上昇を与える少なくとも１つの駆動信号を印加することによって、電気熱変換体に熱エネルギーを発生せしめ、記録ヘッドの熱作用面に膜沸騰を生じさせて、結果的にこの駆動信号に１対１で対応した液体（インク）内の気泡を形成できるので有効である。
【０２１９】
この気泡の成長、収縮により吐出用開口を介して液体（インク）を吐出させて、少なくとも１つの滴を形成する。この駆動信号をパルス形状とすると、即時適切に気泡の成長収縮が行われるので、特に応答性に優れた液体（インク）の吐出が達成でき、より好ましい。
【０２２０】
このパルス形状の駆動信号としては、米国特許第４４６３３５９号明細書、同第４３４５２６２号明細書に記載されているようなものが適している。なお、上記熱作用面の温度上昇率に関する発明の米国特許第４３１３１２４号明細書に記載されている条件を採用すると、さらに優れた記録を行うことができる。
【０２２１】
記録ヘッドの構成としては、上述の各明細書に開示されているような吐出口、液路、電気熱変換体の組み合わせ構成（直線状液流路または直角液流路）の他に熱作用面が屈曲する領域に配置されている構成を開示する米国特許第４５５８３３３号明細書、米国特許第４４５９６００号明細書に記載された構成も本発明に含まれるものである。加えて、複数の電気熱変換体に対して、共通するスロットを電気熱変換体の吐出部とする構成を開示する特開昭５９−１２３６７０号公報や熱エネルギーの圧力波を吸収する開口を吐出部に対応させる構成を開示する特開昭５９−１３８４６１号公報に基づいた構成としても良い。
【０２２２】
さらに、記録装置が記録できる最大記録媒体の幅に対応した長さを有するフルラインタイプの記録ヘッドとしては、上述した明細書に開示されているような複数記録ヘッドの組み合わせによってその長さを満たす構成や、一体的に形成された１個の記録ヘッドとしての構成のいずれでもよい。
【０２２３】
加えて、上記の実施形態で説明した記録ヘッド自体に一体的にインクタンクが設けられたカートリッジタイプの記録ヘッドのみならず、装置本体に装着されることで、装置本体との電気的な接続や装置本体からのインクの供給が可能になる交換自在のチップタイプの記録ヘッドを用いてもよい。
【０２２４】
また、以上説明した記録装置の構成に、記録ヘッドに対する回復手段、予備的な手段等を付加することは記録動作を一層安定にできるので好ましいものである。これらを具体的に挙げれば、記録ヘッドに対してのキャッピング手段、クリーニング手段、加圧あるいは吸引手段、電気熱変換体あるいはこれとは別の加熱素子あるいはこれらの組み合わせによる予備加熱手段などがある。また、記録とは別の吐出を行う予備吐出モードを備えることも安定した記録を行うために有効である。
【０２２５】
さらに、記録装置の記録モードとしては黒色等の主流色のみの記録モードだけではなく、記録ヘッドを一体的に構成するか複数個の組み合わせによってでも良いが、異なる色の複色カラー、または混色によるフルカラーの少なくとも１つを備えた装置とすることもできる。
【０２２６】
尚、本発明は、複数の機器（例えばホストコンピュータ、インタフェース機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。
【０２２７】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【０２２８】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０２２９】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／ＲＷ、ＤＶＤ−ＲＯＭ／ＲＡＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【０２３０】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２３１】
更に、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２３２】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明した図１３、図１４、図１５Ａ、図１５Ｂに示すフローチャートに対応するプログラムコードが格納されることになる。
【図１】
2011051356.tif 000003
【図２】
2011051356.tif 000004
【図３】
2011051356.tif 000005
【図４】
2011051356.tif 000006
【図５】
2011051356.tif 000007
【図６】
2011051356.tif 000008
【図７】
2011051356.tif 000009
【図８】
2011051356.tif 000010
【図９Ａ】
2011051356.tif 000011
【図９Ｂ】
2011051356.tif 000012
【図１０】
2011051356.tif 000013
【図１１】
2011051356.tif 000014
【図１２Ａ】
2011051356.tif 000015
【図１２Ｂ】
2011051356.tif 000016
【図１２Ｃ】
2011051356.tif 000017
【図１２Ｄ】
2011051356.tif 000018
【図１３】
2011051356.tif 000019
【図１４】
2011051356.tif 000020
【図１５Ａ】
2011051356.tif 000021
【図１５Ｂ】
2011051356.tif 000022