(57)【特許請求の範囲】
【請求項１】
レッド、グリーン、およびブルーのピクセルの２次元平面を有するベイヤー・カラー・フィルタ・アレイ（ＣＦＡ）・イメージをサンプリングする方法において：
ベイヤーＣＦＡイメージの解像度よりも低い解像度の中間レッドピクセルを得るために、レッド平面に再構成フィルタを適用するステップ；
ベイヤーＣＦＡイメージの解像度よりも低い解像度の中間ブルーピクセルを得るために、ブルー平面に前記再構成フィルタと同じ再構成フィルタを適用するステップ；
グリーン平面を４５度回転するステップ；
ベイヤーＣＦＡイメージの解像度よりも低い解像度の中間グリーンピクセルを得るために、ｍを１より大きい整数として、回転された前記グリーン平面のｍ×ｍピクセル・ブロックをシーケンシャルにサンプリングするステップ；および、
サンプルの最初に関する開始アドレスを決定し、その後、オフセットの、あらかじめ決定された固定シーケンスを適用して残りのサンプルのアドレスを獲得することによって、ｍ２のサンプルに関するアドレスを提供するステップ；
を含む前記方法。
【請求項２】
前記開始アドレスを決定するステップが、前記イメージの相対的な回転の姿勢に応じたものであることを特徴とする請求項１記載の方法。
【請求項３】
ｍ＝４であり、１６のオフセットが存在することを特徴とする請求項１または２記載の方法。
【請求項４】
レッド、グリーン、およびブルーのピクセルの２次元平面を有するベイヤー・カラー・フィルタ・アレイ（ＣＦＡ）・イメージをサンプリングする装置において：
ベイヤーＣＦＡイメージの解像度よりも低い解像度の中間レッドピクセル及び中間ブルーピクセルをそれぞれ得るために、レッド平面及びブルー平面に再構成フィルタを適用するためのフィルタ手段；
グリーン平面を４５度回転するための入力手段；
ベイヤーＣＦＡイメージの解像度よりも低い解像度の中間グリーンピクセルを得るために、ｍを１より大きい整数として、回転された前記グリーン平面のｍ×ｍピクセル・ブロックをシーケンシャルにサンプリングするための処理手段；および、
サンプルの最初に関する開始アドレスを決定し、その後、オフセットの、あらかじめ決定された固定シーケンスを適用して残りのサンプルのアドレスを獲得することによって、ｍ２のサンプルに関するアドレスを提供するためのアドレス手段；
を備えた前記装置。
【請求項５】
前記開始アドレスを決定することは、前記イメージの相対的な回転の姿勢に応じたものであることを特徴とする請求項４記載の装置。
【請求項６】
ｍ＝４であり、１６のオフセットが存在することを特徴とする請求項４または５記載の装置。
【発明の詳細な説明】
【０００１】
（発明の分野）
本発明は、ベイヤー・イメージの回転を行うための方法および装置に関する。
【０００２】
本発明は、基本的に、カメラによって取り込まれたイメージのペーパー・プリントを提供するインテグラル・プリンタを含むディジタル・カメラのために開発されており、以下においては、その応用を参照して説明を行う。しかしながら、本発明がその種の特定の使用分野に限定されないことを認識されるであろう。
【０００３】
（同時係属出願）
１９９９年９月１６日付けのオーストラリア仮特許出願第ＰＱ２８９０号からの優先権を主張する同時係属出願に対する参照を含む。これらの同時係属出願は、コンパクト・プリンタ・システムをインプリメントするための関連モジュールおよび方法を記述している。本件出願と同時に出願された同時係属出願は、次の表のとおりである。
【０００４】
【表１】
0004576084.tif 000002
【０００５】
（発明の開示）
本発明の第１の側面によれば、レッド、グリーン、およびブルーのピクセルの２次元平面を有するベイヤー・イメージをサンプリングする方法が提供され、その方法が：
グリーン平面を４５度回転するステップ；
前記回転されたイメージのｍ×ｍピクセル・ブロックをシーケンシャルにサンプリングするステップであって、ｍを１より大きい整数とするステップ；
サンプルの最初に関する開始アドレスを決定し、その後、オフセットの、あらかじめ決定された固定シーケンスを適用して残りのサンプルのアドレスを獲得することによって、ｍ２のサンプルに関するアドレスを提供するステップ；
を含む。
【０００６】
好ましくは、前記開始アドレスを決定するステップが、前記イメージの相対的な回転の姿勢に応じたものとなる。より好ましくはｍ＝４であり、１６のオフセットが存在する。
【０００７】
本発明の第２の側面によれば、レッド、グリーン、およびブルーのピクセルの２次元平面を有するベイヤー・イメージをサンプリングする装置が提供され、その装置が：
グリーン平面を４５度回転するための入力手段；
前記回転されたイメージのピクセル・ブロックであって、ｍを１より大きい整数としたｍ×ｍピクセル・ブロックをシーケンシャルにサンプリングするための処理手段；
サンプルの最初に関する開始アドレスを決定し、その後、オフセットの、あらかじめ決定された固定シーケンスを適用して残りのサンプルのアドレスを獲得することによって、ｍ２のサンプルに関するアドレスを提供するためのアドレス手段；
を包含する。
【０００８】
好ましくは、前記開始アドレスを決定するステップが、前記イメージの相対的な回転の姿勢に応じたものとなる。より好ましくはｍ＝４であり、１６のオフセットが存在する。
【０００９】
以下、本発明の好ましい実施態様について、添付図面を参照し、例を示す形で説明する。
【００１０】
（発明を実施するための最良の形態）
（１  ＰＣＰの概要）
（１．１  ハイ・レベル機能の概要）
Ｐｒｉｎｔｃａｍ  Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｏｒ（ＰＣＰ；プリントカム・セントラル・プロセッサ）は、Ｐｒｉｎｔｃａｍ（プリントカム）に関するすべてのプロセッシング・パワーを有し、Ｐｒｉｎｔｃａｍ（プリントカム）ディジタル・スチル・カメラ・システムにおいて使用されるように特別にデザインされている。ＰＣＰ  ３は、イメージ・センサ１（イメージ取り込み用）およびイメージのプリントアウト用のＭｅｍｊｅｔ（メムジェット）プリンタ２に接続されている。イメージ処理という意味において、ＰＣＰは、図１に示されるように、イメージの取り込みからプリントアウトへのイメージのトランスレータとして考えることができる。図１において：
●  「イメージ・センサ１」はＣＭＯＳイメージ・センサであり、１５００×１０００のＲＧＢイメージを取り込む。このイメージ・センサがイメージ「入力」デバイスである。
●  「プリントヘッド２」は、長さ４インチ、１６００ｄｐｉのＭｅｍｊｅｔ（メムジェット）プリンタであり、３つのカラー、すなわちシアン、マゼンタ、およびイエロを用いたプリントを行うことができる。
●  「ＰＣＰ  ３」は、イメージ・センサ１からイメージを獲得し、それを処理し、プリントのための最終的な形のイメージをプリントヘッド２に渡す。イメージ・センサ１がＲＧＢイメージの取り込みを行い、プリントヘッド２がＣＭＹを用いてプリントを行うことから、ＰＣＰ  ３は、ＲＧＢカラー空間からＣＭＹカラー空間への翻訳を行わなければならない。ＰＣＰ  ３は、中間のイメージ処理に必要なすべての要件を包含しており、それにはホワイト・バランス、カラー補正ならびにガンマウト（ｇａｍｕｔ）マッピング、イメージ・シャープニング、およびハーフトーン処理も含まれる。それに加えて、ＰＣＰ  ３は、ユーザ・インターフェースならびに全体のプリント・プロセスをコントロールし、各種のイメージ・フォーマットに関するサポートも提供する。ＰＣＰ  ３には、インターフェースも備わっており、写真のエクスポートならびにインポート、ＤＰＯＦ（Ｄｉｇｉｔａｌ  Ｐｒｉｎｔ  Ｏｒｄｅｒ  Ｆｏｒｍａｔ：ディジタル・カメラ・プリント・サービス用フォーマット）標準を用いたコンパイルが可能である。
【００１１】
（１．２  ハイ・レベル内部の概要）
ＰＣＰ  ３は、０．２５マイクロメートルＣＭＯＳプロセスを使用した製造用にデザインされており、約１０００万個のトランジスタを伴うが、ほとんどその半分はフラッシュ・メモリまたはスタティックＲＡＭである。これは、１６ｍｍ２の面積に相当する。２００１年におけるその製造コストの見積もり額は４ドルである。ＰＣＰ  ３は、比較的単純なデザインであり、データグラフ・コンパイレーション・テクニック、マクロセル、およびＩＰコアの使用によって、デザイン努力を軽減することが可能である。ＰＣＰ  ３は、以下を含む
●  低速ＣＰＵ／マイクロコントローラ・コア１０
●  １．５メガバイトのマルチ‐レベル・フラッシュ・メモリ（１セル当たり２バイト）１１
●  イメージ取り込みユニット１２内のＣＭＯＳイメージ・センサ・インターフェース９８
●  プログラム・ストレージ１３のための１６キロバイトのフラッシュ・メモリ
●  プログラム変数ストレージ１４のための４キロバイトのＲＡＭ
【００１２】
ＰＣＰ  ３は、約１００ＭＨｚのクロック速度で動作し、外部的には３Ｖ、内部的には１．５Ｖを使用して消費電力の最小化が意図されている。実際の動作周波数は、プリントヘッドの動作周波数の整数倍になる。ＣＰＵ  １０には、約１ＭＨｚで動作するシンプルなマイクロコントローラ・スタイルのＣＰＵが意図されている。ＣＰＵ  １０およびＣＭＯＳイメージ・センサ・インターフェース１２は、ともにベンダー供給コアとすることができる。
【００１３】
図２は、ＰＣＰ  ３を分離して示したブロック図である。
【００１４】
このＰＣＰ  ３は、Ｐｒｉｎｔｃａｍ（プリントカム）システムにおける使用のためにデザインされている。図３は、Ｐｒｉｎｔｃａｍ（プリントカム）ハードウエアの残りの部分とＰＣＰ  ３の接続を示したブロック図である。
【００１５】
（２  プリントヘッドの基礎知識）
ＰＣＰ  ３は、４インチ（１０ｃｍ）のＭｅｍｊｅｔ（メムジェット）プリントヘッド２に接続するように特別にデザインされている。プリントヘッド２は、ページ幅プリンタとして使用され、移動を伴わずに４インチ幅のプリント・イメージを生成することができる。それに代わり、図４に示されるようにプリントが行われる間、ペーパー２０が移動してプリントヘッド２の下を通過する。
【００１６】
（２．１  ４インチ・プリントヘッドの構成）
４インチのプリントヘッド２は、それぞれ８つのセグメントからなり、各セグメントは１／２インチの長さを有する。各セグメント２１は、２値レベルのシアン、マゼンタ、およびイエロのドットをページ上の異なる部分にプリントし、最終イメージを生成する。これらのセグメントのポジションを図５に示した。
【００１７】
プリントヘッド２が１６００ｄｐｉでドットをプリントすることから、各ドットは直径が２２．５μｍであり、互いの間隔は１５．８７５μｍである。したがって、１／２インチのセグメントは、それぞれ８００ドットをプリントし、８つのセグメントの対応するポジションは、次の表のとおりとなる。
【００１８】
【表２】
0004576084.tif 000003
【００１９】
それぞれのセグメント２１は最終イメージの８００ドットを生成するが、各ドットは、２値レベルのシアン、マゼンタ、およびイエロのインクの組み合わせによって表される。プリントが２値レベルであることから、最良の結果を得るために入力イメージのディザリングまたは誤差拡散を行う必要がある。
【００２０】
それぞれのセグメント２１は、２４００個のノズルを含んでいる：すなわち、シアン、マゼンタ、およびイエロそれぞれについて８００個のノズルを含んでいる。４インチのプリントヘッド２は、この種のセグメント２１を８個有することから、合計で１９，２００個のノズルを有することになる。
【００２１】
（２．１．１  セグメント内のノズルのグループ化）
単一のセグメント２１内のノズル２２は、プリントの間における物理的な安定性をはじめ、消費電力の最小化のためにグループ化される。物理的な安定性という意味においては、合計１０個のノズルが同一のインク・リザーバを共有する。消費電力という意味においては、低速および高速のプリント・モードを可能にするためにグループ化が行われる。
【００２２】
プリントヘッド２は、２とおりのプリント速度をサポートし、異なる製品構成における異なる速度／消費電力のトレード‐オフを可能にする。
【００２３】
低速プリント・モードにおいては、各４インチのプリントヘッド２のうちの、９６個のノズル２２から同時に発射（ｆｉｒｅ）が行われる。発射されるノズルは、最大に離隔されている必要があり、したがって各セグメントのうちの、１２個のノズル２２から発射が行われる。１９，２００個のノズルすべての発射を行うためには、互いに異なる９６個のノズルをそれぞれ含む２００セットの発射を行わなければならない。
【００２４】
高速プリント・モードにおいては、各４インチのプリントヘッド２のうちの、１９２個のノズル２２から同時に発射が行われる。発射されるノズルは、最大に離隔されている必要があり、したがって各セグメントのうちの、２４個のノズル２２から発射が行われる。１９，２００個のノズルすべての発射を行うためには、互いに異なる１９２個のノズルをそれぞれ含む１００セットの発射を行わなければならない。
【００２５】
低速モードにおける消費電力は、高速モードにおける消費電力の半分である。しかしながら、１ラインの、したがって１ページのプリントに消費されるエネルギは、いずれの場合であっても等しいことに注意する必要がある。
【００２６】
Ｐｒｉｎｔｃａｍ（プリントカム）がバッテリから電力供給を受ける場合のようなシナリオにおいては、消費電力要件から低速プリントが指定されることになる。
【００２７】
（２．１．１．１  １０個のノズルによるポッドの構成）
１つのポッド２３は、共通のインク・リザーバを共有する１０個のノズル２２から構成されている。５個のノズル２２が１つの行内（row）に配置され、残り５個が別の行内に配置される。各ノズル２２は、直径が約２２．５μｍのドットを生成し、１５．８７５μｍのグリッド上に離隔されている。図６は、単一のポッドの構成を示しており、各ノズル２２には、それぞれの発射を行わなければならない順序に従って番号が付されている。
【００２８】
ノズル２２の発射は、この順序で行われるが、ノズル２２と、プリントされるページ上のドットの物理的な配置の関係は異なる。一方の行内のノズル２２は、ページ上の１ラインの偶数ドットを表し、他方の行内のノズルは、ページ上の隣接するラインの奇数ドットを表す。図７に、同一のポッド２３を、ロードが行われなければならない順序に従って番号を付したノズル２２とともに示した。
【００２９】
このようにポッド２３内のノズル２２は、論理的に１ドットの幅で離隔されている。ノズル２２の間の正確な距離は、Ｍｅｍｊｅｔ（メムジェット）の発射メカニズムの特性に応じることになる。プリントヘッド２は、ペーパー２０の流れに整合させてデザインされたスタガ配置のノズルを伴ってデザインされている。
【００３０】
（２．１．１．２  ３個のポッドによるクロマポッドの構成）
各カラー（シアン、マゼンタ、およびイエロ）当たり１個のポッド２３を１グループとしてグループ化し「クロマポッド」２４を構成する。クロマポッド２４は、同じ水平１０ドットのセットの異なるカラー成分を表す。異なるカラー・ポッド２３の間における正確な距離は、Ｍｅｍｊｅｔ（メムジェット）の動作パラメータに依存し、Ｍｅｍｊｅｔ（メムジェット）のデザインごとに異なることが許容される。距離は、ドット幅の定数と考えられ、したがってプリント時に考慮されなければならない：すなわち、たとえばシアン・ノズルによってプリントされるドットは、マゼンタまたはイエロのノズルによってプリントされるドットとは異なるラインに関するものとなる。プリント・アルゴリズムは、カラー間において最大８ドット幅までの各種の距離を考慮しなければならない（詳細については表３を参照されたい）。図８は、単一のクロマポッド２４を示している。
【００３１】
（２．１．１．３  ５個のクロマポッドによるポッドグループの構成）
５個のクロマポッド２４が、１個の「ポッドグループ」２５として組織化される。各クロマポッドが３０個のノズル２２を含むことから、各ポッドグループは、１５０個のノズル２２を含むことになる：すなわち、５０個のシアン・ノズル、５０個のマゼンタ・ノズル、および５０個のイエロ・ノズルである。その構成を図９に示し、それに伴うクロマポッドには０〜４の番号を付した。ただし、隣接するクロマポッドの間の距離は、明瞭化のために誇張してあることに注意が必要である。
【００３２】
（２．１．１．４  ２個のポッドグループによるフェーズグループの構成）
２個のポッドグループ２５が、１個のフェーズグループ２６として組織化される。フェーズグループ２６は、所定の発射フェーズの間に、フェーズグループ内のノズルのグループ２３の発射が同時に行われる（これについては、さらに詳細を後述する）ことから、そのような名前が付けられている。２個のポッドグループ２５からなるフェーズグループの構成は、ただ単に２つのＰｏｄｇｒｏｕｐＥｎａｂｌｅ（ポッドグループイネーブル）ラインを介した低速および高速プリントを目的としている。
【００３３】
低速プリントの間は、所定の発射フェーズ内に、２つのＰｏｄｇｒｏｕｐＥｎａｂｌｅ（ポッドグループイネーブル）ラインのうちの１つだけがセットされ、したがって２つのポッドグループのうちの１つだけがノズルの発射を行う。高速プリントの間は、両方のＰｏｄｇｒｏｕｐＥｎａｂｌｅ（ポッドグループイネーブル）ラインがセットされ、したがって両方のポッドグループがノズルの発射を行う。つまり、高速プリントにおいて一度に発射が行われるノズルの数が２倍であることから、高速プリントに要する時間の２倍の時間を低速プリントが必要とすることになる。
【００３４】
図１０は、フェーズグループの構成を示している。ただしこれにおいては、隣接するポッドグループ間の距離が、明瞭化のために誇張されている。
【００３５】
（２．１．１．５  ２個のフェーズグループによる発射グループの構成）
２個のフェーズグループ（フェーズグループＡおよびフェーズグループＢ）が、１個の発射グループ２７に組織化され、各セグメントには、この発射グループが４個含まれる。発射グループ２７は、同一のノズル２７を同時にすべて発射することからその名前が付けられている。２つのイネーブル・ライン、すなわちＡＥｎａｂｌｅ（Ａイネーブル）およびＢＥｎａｂｌｅ（Ｂイネーブル）は、異なる発射フェーズとして独立に、フェーズグループＡとフェーズグループＢの発射を行うことを可能にする。図１１に構成を示した。ただしこれにおいては、隣接するグループ間の距離が、明瞭化のために誇張されている。
【００３６】
（２．１．１．６  ノズルのグループ化の要約）
次の表２は、プリントヘッド内のノズルのグループ化についてまとめたものである。
【００３７】
【表３】
0004576084.tif 000004
【００３８】
（２．２  ロードおよびプリントのサイクル）
１個の４インチ・プリントヘッド２は、合計で１９，２００個のノズル２２を含んでいる。「プリント・サイクル」は、最大でこれらすべてのノズルの発射を伴うが、その数はプリントされる情報に依存する。「ロード・サイクル」は、プリントヘッドに対する、その後に続くプリント・サイクルの間にプリントされる情報のロードに関係する。
【００３９】
各ノズル２２は、関連付けされた「ＮｏｚｚｌｅＥｎａｂｌｅ」（ノズルイネーブル）ビットを有し、それがプリント・サイクルの間にノズルの発射を行うか否かを決定する。ＮｏｚｚｌｅＥｎａｂｌｅ（ノズルイネーブル）ビット（１つのノズル当たり１ビット）は、シフト・レジスタのセットを介してロードされる。
【００４０】
論理的には、１セグメント当たり、３個の（各カラー当たり１個）、それぞれの長さが８００のシフト・レジスタが備わっていることになる。所定のカラーに関してビットがシフト・レジスタ内にシフトされると、交番するパルスに応答して、それらが上側および下側のノズルに向けられる。内部的に見ると、それぞれの深さが８００の各シフト・レジスタが、２つの深さ４００のシフト・レジスタを包含している：一方は上側ノズル用であり、他方は下側ノズル用である。交番するビットが交番する内部レジスタ内にシフトされる。しかしながら、外部インターフェースとして考える限りは、深さ８００の単一のシフト・レジスタが存在することになる。
【００４１】
すべてのシフト・レジスタが完全にロードされると（８００のロード・パルス）、すべてのビットがパラレルに、適切なＮｏｚｚｌｅＥｎａｂｌｅ（ノズルイネーブル）ビットに転送される。これは、１９，２００ビットの単一のパラレル転送に等しい。転送が完了すれば、プリント・サイクルを開始することができる。プリント・サイクルおよびロード・サイクルは、すべてのＮｏｚｚｌｅＥｎａｂｌｅ（ノズルイネーブル）ビットのパラレル・ロードがプリント・サイクルのエンドにおいて生じる限り、同時に生じさせることができる。
【００４２】
（２．２．１  ロード・サイクル）
ロード・サイクルは、プリントヘッドのシフト・レジスタに対する次のプリント・サイクルのＮｏｚｚｌｅＥｎａｂｌｅ（ノズルイネーブル）ビットのロードに関する。
【００４３】
各セグメント２１は、シアン、マゼンタ、およびイエロのシフト・レジスタに直接関係する３つの入力を有する。これらの入力は、「ＣＤａｔａＩｎ」（Ｃデータイン）、「ＭＤａｔａＩｎ」（Ｍデータイン）、および「ＹＤａｔａＩｎ」（Ｙデータイン）と呼ばれる。セグメントが８つであることから、４インチ・プリントヘッド当たりの合計のカラー入力ライン数は２４になる。「ＳＲＣｌｏｃｋ」（ＳＲクロック）ライン上の単一のパルス（８つのセグメントすべての間において共有される）が２４ビットを適切なシフト・レジスタに転送する。下側および上側のノズルへの転送は、それぞれ交番するパルスによって行われる。ノズル数が１９，２００であることから、この転送には、８００個のパルスが必要になる。１９，２００ビットがすべて転送されると、共有「ＰＴｒａｎｓｆｅｒ」（Ｐトランスファ）ライン上の単一パルスによってシフト・レジスタから適切なＮｏｚｚｌｅＥｎａｂｌｅ（ノズルイネーブル）ビットへのパラレル転送が生じる。
【００４４】
ＰＴｒａｎｓｆｅｒ（Ｐトランスファ）上のパルスを介したパラレル転送が行われるタイミングは、プリント・サイクルの「完了後」でなければならない。それ以外は、プリントが行われるラインに関するＮｏｚｚｌｅＥｎａｂｌｅ（ノズルイネーブル）ビットが不正確になる。
【００４５】
８個すべてのセグメント２１が単一のＳＲＣｌｏｃｋ（ＳＲクロック）パルスによってロードされることから、任意のプリント・プロセスは、プリントヘッドに関して適正なシーケンスでデータを生成しなければならない。一例を挙げれば、最初のＳＲＣｌｏｃｋ（ＳＲクロック）パルスが、次のプリント・サイクルのドット０、８００、１６００、２４００、３２００、４０００、４８００、および５６００に関するＣＭＹビットを転送する。２番目のＳＲＣｌｏｃｋ（ＳＲクロック）パルスが、次のプリント・サイクルのドット１、８０１、１６０１、２４０１、３２０１、４００１、４８０１、および５６０１に関するＣＭＹビットを転送する。８００個のＳＲＣｌｏｃｋ（ＳＲクロック）パルスの後にＰＴｒａｎｓｆｅｒ（Ｐトランスファ）パルスを与えることが可能になる。
【００４６】
奇数および偶数のＣＭＹ出力が、同一プリント・サイクルの間にプリントされるにもかかわらず、同一の物理的出力ライン上に現れないことは重要である。プリントヘッド内における奇数および偶数のノズルの物理的な分離は、異なるカラーのノズル間の分離とともに、ページの異なるライン上にドットが生成されることを保証する。プリントヘッドにデータをロードするときには、この相対的な差が考慮されなければならない。ライン内の実際の差は、プリントヘッドに用いられているインクジェット・メカニズムの特性に応じたものとなる。この差は、変数Ｄ１およびＤ２によって定義可能であり、それにおいてＤ１は、異なるカラーのノズル間の距離であり、Ｄ２は、同一カラーのノズル間の距離である。次の表３は、最初の４パルスでプリントヘッドのセグメント「ｎ」に転送されるドットを示している。
【００４７】
【表４】
0004576084.tif 000005
【００４８】
８００パルスすべてについて以上が繰り返される。
【００４９】
データは、２０ＭＨｚの最大レートでプリントヘッド内にクロックすることが可能であり、その場合、次のラインに関する完全なデータが４０マイクロ秒内にロードされる。
【００５０】
（２．２．２  プリント・サイクル）
４インチのプリントヘッド２は、１９，２００個のノズル２２を包含している。それらをすべて一度に発射すると、電力の消費が過大になり、インクのレフィルおよびノズルの干渉という意味において問題も生じる。そのため、２つの発射モードが定義されている：すなわち低速プリント・モードおよび高速プリント・モードである。
●  低速プリント・モードには２００のフェーズがあり、各フェーズにおいては９６個のノズルの発射が行われる。これは、１セグメント当たり１２個、あるいは１発射グループ当たり３個のノズルの発射に等しい。
●  高速プリント・モードには１００のフェーズがあり、各フェーズにおいては１９２個のノズルの発射が行われる。これは、１セグメント当たり２４個、あるいは１発射グループ当たり６個のノズルの発射に等しい。
【００５１】
所定の発射パルスにおいて発射が行われるノズルは、以下によって決定される。
●  ３ビットの「ＣｈｒｏｍａｐｏｄＳｅｌｅｃｔ」（クロマポッドセレクト）（発射グループ２７に含まれる５個のクロマポッド２４から１個の選択を行う）
●  ４ビットの「ＮｏｚｚｌｅＳｅｌｅｃｔ」（ノズルセレクト）（ポッド２３に含まれる１０個のノズル２２から１個の選択を行う）
●  ２ビットの「ＰｏｄｇｒｏｕｐＥｎａｂｌｅ」（ポッドグループイネーブル）ライン（発射を行う０個、１個、または２個のポッドグループ２５の選択を行う）
【００５２】
ＰｏｄｇｒｏｕｐＥｎａｂｌｅ（ポッドグループイネーブル）ラインの１つがセットされると、指定されたポッドグループの４個のノズルが、ＣｈｒｏｍａｐｏｄＳｅｌｅｃｔ（クロマポッドセレクト）およびＮｏｚｚｌｅＳｅｌｅｃｔ（ノズルセレクト）による決定に従って発射される。両方のＰｏｄｇｒｏｕｐＥｎａｂｌｅ（ポッドグループイネーブル）ラインがセットされているときには、両方のポッドグループのノズルの発射が行われる。低速プリント・モードについては、２個の発射パルスが必要になり、それぞれＰｏｄｇｒｏｕｐＥｎａｂｌｅ＝１０および０１を伴う。高速プリント・モードについては、ＰｏｄｇｒｏｕｐＥｎａｂｌｅ＝１１を伴う発射パルスが１つだけ必要になる。
【００５３】
発射パルスの持続時間は、ＡＥｎａｂｌｅ（Ａイネーブル）ラインおよびＢＥｎａｂｌｅ（Ｂイネーブル）ラインによって与えられ、そのそれぞれは、すべての発射グループのフェーズグループＡおよびフェーズグループＢのノズルの発射を行う。一般的な発射パルスの持続時間は１．３〜１．８マイクロ秒になる。パルスの持続時間は、インクの粘稠度（それ自体が温度ならびにインクの特性に依存する）およびプリントヘッドに使用可能な電力に依存する。温度変化に関する補正を行うためのプリントヘッドからのフィードバックについての詳細を記載した１８ページ（ページ指定は原文に記載されたとおり）のセクション２．３を参照されたい。
【００５４】
ＡＥｎａｂｌｅ（Ａイネーブル）およびＢＥｎａｂｌｅ（Ｂイネーブル）は、発射パルスがオーバーラップできるように個別のラインになっている。したがって低速プリント・サイクルにおける２００のフェーズは、１００のＡフェーズおよび１００のＢフェーズから構成され、事実上、１００セットのフェーズＡおよびフェーズＢのセットを提供する。同様に高速プリント・サイクルにおける１００のフェーズは、５０のＡフェーズおよび５０のＢフェーズから構成され、事実上、５０セットのフェーズＡおよびフェーズＢのセットを提供する。
【００５５】
図１２は、一般的なプリント・サイクルの間におけるＡＥｎａｂｌｅ（Ａイネーブル）ラインおよびＢＥｎａｂｌｅ（Ｂイネーブル）ラインを示している。高速プリントにおいては、５０回の２マイクロ秒のサイクルがあり、それに対して低速プリントにおいては、１００回の２マイクロ秒のサイクルがある。
【００５６】
高速プリント・モードの場合の発射順序は次のようになる。
●  ＣｈｒｏｍａｐｏｄＳｅｌｅｃｔ（クロマポッドセレクト）０、ＮｏｚｚｌｅＳｅｌｅｃｔ（ノズルセレクト）０、ＰｏｄｇｒｏｕｐＥｎａｂｌｅ（ポッドグループイネーブル）１１（フェーズＡおよびＢ）
●  ＣｈｒｏｍａｐｏｄＳｅｌｅｃｔ（クロマポッドセレクト）１、ＮｏｚｚｌｅＳｅｌｅｃｔ（ノズルセレクト）０、ＰｏｄｇｒｏｕｐＥｎａｂｌｅ（ポッドグループイネーブル）１１（フェーズＡおよびＢ）
●  ＣｈｒｏｍａｐｏｄＳｅｌｅｃｔ（クロマポッドセレクト）２、ＮｏｚｚｌｅＳｅｌｅｃｔ（ノズルセレクト）０、ＰｏｄｇｒｏｕｐＥｎａｂｌｅ（ポッドグループイネーブル）１１（フェーズＡおよびＢ）
●  ＣｈｒｏｍａｐｏｄＳｅｌｅｃｔ（クロマポッドセレクト）３、ＮｏｚｚｌｅＳｅｌｅｃｔ（ノズルセレクト）０、ＰｏｄｇｒｏｕｐＥｎａｂｌｅ（ポッドグループイネーブル）１１（フェーズＡおよびＢ）
●  ＣｈｒｏｍａｐｏｄＳｅｌｅｃｔ（クロマポッドセレクト）４、ＮｏｚｚｌｅＳｅｌｅｃｔ（ノズルセレクト）０、ＰｏｄｇｒｏｕｐＥｎａｂｌｅ（ポッドグループイネーブル）１１（フェーズＡおよびＢ）
●  ＣｈｒｏｍａｐｏｄＳｅｌｅｃｔ（クロマポッドセレクト）０、ＮｏｚｚｌｅＳｅｌｅｃｔ（ノズルセレクト）１、ＰｏｄｇｒｏｕｐＥｎａｂｌｅ（ポッドグループイネーブル）１１（フェーズＡおよびＢ）
●  ・・・
●  ＣｈｒｏｍａｐｏｄＳｅｌｅｃｔ（クロマポッドセレクト）３、ＮｏｚｚｌｅＳｅｌｅｃｔ（ノズルセレクト）９、ＰｏｄｇｒｏｕｐＥｎａｂｌｅ（ポッドグループイネーブル）１１（フェーズＡおよびＢ）
●  ＣｈｒｏｍａｐｏｄＳｅｌｅｃｔ（クロマポッドセレクト）４、ＮｏｚｚｌｅＳｅｌｅｃｔ（ノズルセレクト）９、ＰｏｄｇｒｏｕｐＥｎａｂｌｅ（ポッドグループイネーブル）１１（フェーズＡおよびＢ）
【００５７】
低速プリント・モードの場合の発射順序についても、これに類似である。高速プリント・モードのＰｏｄｇｒｏｕｐＥｎａｂｌｅ（ポッドグループイネーブル）が１１となっていた各フェーズを、次に示すように、ＰｏｄｇｒｏｕｐＥｎａｂｌｅ＝０１および１０によって置き換える。
●  ＣｈｒｏｍａｐｏｄＳｅｌｅｃｔ（クロマポッドセレクト）０、ＮｏｚｚｌｅＳｅｌｅｃｔ（ノズルセレクト）０、ＰｏｄｇｒｏｕｐＥｎａｂｌｅ（ポッドグループイネーブル）０１（フェーズＡおよびＢ）
●  ＣｈｒｏｍａｐｏｄＳｅｌｅｃｔ（クロマポッドセレクト）０、ＮｏｚｚｌｅＳｅｌｅｃｔ（ノズルセレクト）０、ＰｏｄｇｒｏｕｐＥｎａｂｌｅ（ポッドグループイネーブル）１０（フェーズＡおよびＢ）
●  ＣｈｒｏｍａｐｏｄＳｅｌｅｃｔ（クロマポッドセレクト）１、ＮｏｚｚｌｅＳｅｌｅｃｔ（ノズルセレクト）０、ＰｏｄｇｒｏｕｐＥｎａｂｌｅ（ポッドグループイネーブル）０１（フェーズＡおよびＢ）
●  ＣｈｒｏｍａｐｏｄＳｅｌｅｃｔ（クロマポッドセレクト）１、ＮｏｚｚｌｅＳｅｌｅｃｔ（ノズルセレクト）０、ＰｏｄｇｒｏｕｐＥｎａｂｌｅ（ポッドグループイネーブル）１０（フェーズＡおよびＢ）
●  ・・・
●  ＣｈｒｏｍａｐｏｄＳｅｌｅｃｔ（クロマポッドセレクト）３、ＮｏｚｚｌｅＳｅｌｅｃｔ（ノズルセレクト）９、ＰｏｄｇｒｏｕｐＥｎａｂｌｅ（ポッドグループイネーブル）０１（フェーズＡおよびＢ）
●  ＣｈｒｏｍａｐｏｄＳｅｌｅｃｔ（クロマポッドセレクト）３、ＮｏｚｚｌｅＳｅｌｅｃｔ（ノズルセレクト）９、ＰｏｄｇｒｏｕｐＥｎａｂｌｅ（ポッドグループイネーブル）１０（フェーズＡおよびＢ）
●  ＣｈｒｏｍａｐｏｄＳｅｌｅｃｔ（クロマポッドセレクト）４、ＮｏｚｚｌｅＳｅｌｅｃｔ（ノズルセレクト）９、ＰｏｄｇｒｏｕｐＥｎａｂｌｅ（ポッドグループイネーブル）０１（フェーズＡおよびＢ）
●  ＣｈｒｏｍａｐｏｄＳｅｌｅｃｔ（クロマポッドセレクト）４、ＮｏｚｚｌｅＳｅｌｅｃｔ（ノズルセレクト）９、ＰｏｄｇｒｏｕｐＥｎａｂｌｅ（ポッドグループイネーブル）１０（フェーズＡおよびＢ）
【００５８】
ノズル２２の発射が行われると、そのレフィルに約１００マイクロ秒が必要になる。ノズル２２は、このレフィル時間が経過するまで発射を行うことができない。この制限から、１ライン当たりの最大プリント速度が１００マイクロ秒になる。高速プリント・モードにおいては、１ラインのプリント時間が１００マイクロ秒であり、したがって１つのラインのノズルの発射から次のラインまでの時間がこのレフィル時間に一致し、高速プリント・モードを許容可能なものにしている。低速プリント・モードは、これよりも遅く、したがって当然に許容可能である。
【００５９】
ノズル２２の発射は、そのノズルのポッド２３の共通インク・リザーバ内に有限時間にわたる音響摂動を生じさせる。この摂動は、同一ポッド２３内の別のノズルの発射に干渉するおそれがある。したがって、１つのポッド内におけるノズルの発射は、可能な限り長く、互いにオフセットさせる必要がある。そのため、クロマポッド２４からの３つのノズル（１カラー当たり１つのノズル２２）の発射の後、そのポッドグループ２５内の次のクロマポッド２４上に移動している。
●  低速プリント・モードにおいては、ポッドグループ２５の発射が個別に行われる。つまり、最初のポッドグループの発射が再度行われる前に、両方のポッドグループ内の各５個のクロマポッド２４の発射がすべて行われていなければならず、それを合計すると１０×２マイクロ秒のサイクルになる。したがって、各ポッド２３の発射が２０マイクロ秒に１回行われることになる。
●  高速プリント・モードにおいては、両方のポッドグループ２５の発射がともに行われる。つまり、最初のポッドグループの発射が再度行われる前に、単一ポッドグループ内の５個のクロマポッド２４の発射がすべて行われていなければならず、それを合計すると５×２マイクロ秒のサイクルになる。したがって、各ポッド２３の発射が１０マイクロ秒に１回行われることになる。
【００６０】
インク・チャンネルの長さが３００μｍであり、インク内の音速が約１５００ｍ／秒であることから、インク・チャンネルの共振周波数は２．５ＭＨｚであり、低速モードにおいては音響パルスの減衰に５０共振サイクルが見込まれ、高速モードにおいては２５共振サイクルが見込まれる。したがって、いずれの場合においても音響干渉が最小に抑えられる。
【００６１】
（２．２．３  サンプル・タイミング）
一例として、Ｐｒｉｎｔｃａｍ（プリントカム）において要求されるように、２秒間に４インチ×６インチの写真をプリントするタイミングを考える。２秒間に写真をプリントするために、４インチ・プリントヘッドは、９６００ライン（６×１６００）をプリントしなければならない。これを切り上げて、２秒間に１０，０００ラインのプリントとすれば、１ラインの時間は２００マイクロ秒になる。１つのプリント・サイクルおよび１つのロード・サイクルが、ともにこの時間内に完了しなければならない。それに加えて、プリントヘッド以外の物理的プロセスは、適切な量だけペーパーを移動しなければならない。
【００６２】
プリントの観点から見ると、低速プリント・モードにおいては、４インチ・プリントヘッドによる完全な１ラインのプリントを２００マイクロ秒内に行うことが可能である。低速プリント・モードにおいては、１発射パルス当たり９６個のノズル２２の発射が行われ、それにより指定時間内の完全な１ラインのプリントが可能になる。
【００６３】
プリントヘッド２に対する８００個のＳＲＣｌｏｃｋ（ＳＲクロック）パルス（各クロック・パルスは２４ビットを転送する）もまた、２００マイクロ秒のライン・タイム内に生じなければならない。このＳＲＣｌｏｃｋ（ＳＲクロック）パルスの長さが、２００マイクロ秒／８００＝２５０ナノ秒を超えることはできず、これはプリントヘッドが、４ＭＨｚでクロックされなければならないことを示している。それに加えて、（１９，２００個のノズルのそれぞれに関する）各ビット値の平均計算時間が、２００マイクロ秒／１９，２００＝１０ナノ秒を超えてはならない。これには、次に示すいずれかの速度においてドット・ジェネレータが動作することが必要になる。
●  １００ＭＨｚ：１サイクル当たり１ビット（ドット）を生成
●  ５０ＭＨｚ：１サイクル当たり２ビット（ドット）を生成
●  ２５ＭＨｚ：１サイクル当たり４ビット（ドット）を生成
【００６４】
（２．３  プリントヘッドからのフィードバック）
プリントヘッド２は、複数ラインのフィードバックを生成する（８セグメントからの累積）。このフィードバック・ラインは、発射パルスのタイミングを調整するために使用される。各セグメント２１が同じフィードバックを生成するが、すべてのセグメントからのフィードバックは、同一の３状態バス・ラインを共有する。つまり、１度にフィードバックを提供可能なセグメント２１は１つだけである。
【００６５】
シアンに関するデータのアンドが行われた「ＳｅｎｓｅＳｅｇＳｅｌｅｃｔ」（センスセグセレクト）ライン上のパルスは、そのセグメント用のセンス・ラインをイネーブルする。フィードバック・センス・ラインは、次のＳｅｎｓｅＳｅｇＳｅｌｅｃｔ（センスセグセレクト）パルスまでに、選択されたセグメントから到来する。フィードバック・センス・ラインは、次のとおりとなる。
●  「Ｔｓｅｎｓｅ」（Ｔセンス）：プリントヘッドの熱さの程度についてコントローラに知らせる。温度がインクの粘稠度に影響を与えることから、これによりコントローラは、発射パルスのタイミングを調整することができる。
●  「Ｖｓｅｎｓｅ」（Ｖセンス）：アクチュエータに使用可能な電圧についてコントローラに知らせる。これによりコントローラは、パルス幅を調整することによって電圧の低下したバッテリまたは高い電圧ソースを補償することができる。
●  「Ｒｓｅｎｓｅ」（Ｒセンス）：アクチュエータ・ヒータの抵抗率（単位平方当たりのオーム値）についてコントローラに知らせる。これによりコントローラは、パルス幅を調整してヒータの低効率と無関係に一定のエネルギを維持することができる。
●  「Ｗｓｅｎｓｅ」（Ｗセンス）：ヒータのクリティカルな部分の幅についてコントローラに知らせるが、この部分は、リソグラフおよびエッチングの変動に起因して最大で＋／−５％の変化を有することがある。これによってコントローラは、パルス幅を適切に調整することができる。
【００６６】
（２．４  特殊なサイクル）
（２．４．１  プレヒート・サイクル）
プリント・プロセスは、平衡温度にとどまろうとする強い傾向を有する。プリントされる写真の最初の部分から一貫したドット・サイズを確保するためには、ドットをプリントする「前に」平衡温度に達していなければならない。これは、プレヒート・サイクルを介して達成される。
【００６７】
プレヒート・サイクルは、すべてのノズルに「１」をロード（つまりすべてのノズルを「発射」にセット）する単一のロード・サイクルおよび各ノズルに対する多数の短い発射パルスを伴う。これらのパルスの持続時間は、インク滴の発射には不充分であるが、インクのヒート・アップには充分なものとしなければならない。合計すると、標準のプリント・サイクルと同じシーケンスを通じて、各ノズルについて約２００個のパルスが必要になる。
【００６８】
プレヒート・モード間のフィードバックは、Ｔｓｅｎｓｅ（Ｔセンス）によって提供され、平衡温度（室温より約３０℃高い温度）に到達するまで継続される。プレヒート・モードの持続時間は、約５０ミリ秒であるが、インクの組成によって異なる。
【００６９】
プレヒートは、各プリント・ジョブに先行して実施される。これは、ページ・データがプリンタに転送される間に実行されることから、それがプリンタのパフォーマンスに影響することはない。
【００７０】
（２．４．２  クリーニング・サイクル）
ノズルの目詰まりが生じる可能性を抑えるために、各プリント・ジョブに先行してクリーニング・サイクルを実施することができる。各ノズルの発射が、多数回にわたって吸収スポンジに対して行われる。
【００７１】
クリーニング・サイクルは、すべてのノズルに「１」をロード（つまりすべてのノズルを発射にセット）する単一のロード・サイクルおよび各ノズルに対する多数の発射パルスを伴う。ノズルのクリーニングは、標準のプリント・サイクルと同じシーケンスを通じて行われる。それぞれのノズル２２の発射が行われる回数は、インクの組成、およびプリンタがアイドルになっていた時間に応じて異なるが、プレヒートの場合と同様に、これがプリンタのパフォーマンスに影響を及ぼすことはない。
【００７２】
（２．５  プリントヘッド・インターフェースの要約）
１つの４インチ・プリントヘッド２は、次に示す接続を有する。
【００７３】
【表５】
0004576084.tif 000006
【００７４】
４インチ・プリントヘッドの内部においては、各セグメントがボンド・パッドに対して次に示す接続を有している。
【００７５】
【表６】
0004576084.tif 000007
【００７６】
（３  イメージ処理チェーン）
前のセクションでは、ハイ・レベルのＰＣＰ機能の概要−−すなわち、各種のプリント・フォーマットへのＣＦＡイメージのマッピングに関する概要のみを扱った。実際には、イメージ・センサからイメージを獲得し、高品質のプリント出力を生成するために、多数のステップが必要になる。ハイ・レベル・プロセスは、次の２つのイメージ処理チェーンに分けることが可能であり、そのそれぞれが多数のステップを伴う。
●  イメージ取り込みチェーン
●  プリント・チェーン
【００７７】
イメージ取り込みチェーンは、イメージ・センサからイメージを取り込むこと、およびＰｒｉｎｔｃａｍ（プリントカム）内にローカルにストアすることと関係する。プリント・チェーンは、ストア済みのイメージを取り出すこと、およびそれをプリントすることと関係する。これら２つのチェーンは、次のようにＰｒｉｎｔｃａｍ（プリントカム）の基本機能上にマップされる。
●  Ｔａｋｅ＆Ｐｒｉｎｔ（テイクアンドプリント）：「イメージ取り込みチェーン」およびそれに続く「プリント・チェーン」
●  Ｒｅｐｒｉｎｔ（リプリント）：「プリント・チェーン」
【００７８】
たとえばユーザが、サムネール・イメージのプリント（Ｔａｋｅ＆Ｐｒｉｎｔ（テイクアンドプリント））を行い、結果に満足が得られた場合に、いくつかの標準コピーのプリント（Ｒｅｐｒｉｎｔ（リプリント））を行うことがある。
【００７９】
このセクションにおいては、Ｐｒｉｎｔｃａｍ（プリントカム）の品質要件に適合する独立のイメージ処理のインプリメンテーションについて説明する。ただしこの段階では、ハードウエアという意味において「正確にどのように」処理が行われるかについてではなく、むしろ「何が」行われなければならないかについて考察する。これらの機能は、ＰＣＰ内の各種のユニット上にマップされる。
【００８０】
ＰＣＰインプリメンテーションの如何にかかわらず、次のような拘束事項がいくつかある。
●  入力イメージは、ＣＦＡベースの連続階調（ｃｏｎｔｏｎｅ）ＲＧＢイメージとする。
●  出力イメージは、ＣＭＹカラー空間におけるＭｅｍｊｅｔ（メムジェット）プリントヘッド（１６００ｄｐｉの２値レベル・ドット）に対するものとし、常に同じ出力幅（４インチの幅）であるものとする。
【００８１】
（３．０．１  サポートされているプリント・フォーマット）
ＰＣＰ  ３は、次の表６に示すように、多数の出力プリント・フォーマットをサポートしている。いずれの場合においても、イメージの幅は４インチ（プリントヘッドの幅に一致）である。プリント出力の長さだけが変更できる。
【００８２】
【表７】
0004576084.tif 000008
【００８３】
イメージ・センサからは、姿勢情報が提供されない。すべての入力イメージは、同一解像度（１５００×１０００）で取り込まれ、プリントの前に９０度の回転が必要になることもある。図１３は、取り込まれたＣＦＡイメージと、サポートされている各種のプリント・フォーマットの間におけるマッピングを示している。ここでは、反時計回りに９０度の回転を伴ってイメージが示されているが、イメージは、反時計回りまたは時計回りのいずれにも回転可能であることに注意する必要がある。
【００８４】
（３．１  イメージ取り込みチェーン）
イメージ取り込みチェーンにおいては、イメージ・センサからイメージが取り込まれ、それがＰｒｉｎｔｃａｍ（プリントカム）内にローカルにストアされる。このイメージ取り込みチェーンは、イメージの取り込みの間だけにおいて実行が必要になる多数のプロセスを伴う。図１４にイメージ取り込みチェーンを図解したが、以下のセクションにおいては、それらのサブ‐コンポーネントについて説明する。
【００８５】
（３．１．１  イメージ・センサ１）
入力イメージは、イメージ・センサ１から到来する。各種のイメージ・センサを使用することができるが、ここではベイヤー・カラー・フィルタ・アレイ（ＣＦＡ）だけを考える。ベイヤーＣＦＡは、ここにも定義されている多数の属性を有する。
【００８６】
ここでは、ＣＭＯＳセンサ１によって（レンズを介して）取り込まれたイメージが、充分にフィルタリングされており、エイリアシング・アーティファクトがすべて除去されているものとする。センサ自体の縦横比は３：２であり、１５００×１０００サンプルの解像度を伴う。もっとも適切なピクセル配列はベイヤー・カラー・フィルタ・アレイ（ＣＦＡ）であり、図１５に示されるように、それぞれの２×２ピクセル・ブロックが２Ｇモザイクとして配列される。
【００８７】
Ｒ、Ｇ、またはＢ（それぞれレッド、グリーン、およびブルーに対応する）の各連続階調（ｃｏｎｔｏｎｅ）サンプルは、１０ビットである。ただし、モザイクの各ピクセルが、Ｒ、Ｇ、およびＢのうちの「１つ」だけについての情報を含むことに注意する必要がある。失われたカラー情報の評価を行ってからでなければ、イメージのプリントアウトを行うことができない。
【００８８】
ＣＦＡは、適切な固定パターン・ノイズ（ＦＰＮ）抑圧を行うものとする。
【００８９】
（３．１．２  ＲＧＢの線形化４０）
●  イメージ・センサ４０が完全に線形な応答を有することはほとんどない。つまり、ＣＦＡからの１０ビットのＲＧＢサンプルは、非線形であると考えなければならない。非線形サンプルは、ルックアップ・テーブル（１カラー当たり１つのテーブル）を用いて８ビットの線形サンプルに翻訳される。
【００９０】
ＣＦＡライン０、２、４等からのピクセルがＲおよびＧのテーブルに対するインデクスとなり、ＣＦＡライン１、３、５等からのピクセルがＧおよびＢのテーブルに対するインデクスとなる。これは、カメラの姿勢とは完全に独立している。そのプロセスを図１６に示す。各ルックアップ・テーブルに必要となる合計のメモリ量は、２１０×８ビットである。したがって、３つのルックアップ・テーブル４５は、合計で３キロバイト（３×２１０バイト）を必要とする。
【００９１】
（３．１．３  ＲＧＢの平面化４１）
ＣＦＡから獲得されたピクセルは、ピクセルのベイヤー・モザイクの特性に起因して、それらのカラー平面をインターリーブする形になる。これは、偶数水平ライン上であれば、レッド・ピクセルにグリーン・ピクセルが続き、さらにそれに別のレッド・ピクセルが続くといった形で繰り返されること−−つまり、異なるカラー平面が互いにインターリーブされていることを意味している。一部のイメージ処理システムにおいては、インターリーブされたフォーマットが極めて有用である。しかしながら、Ｐｒｉｎｔｃａｍ（プリントカム）の処理システムにおいては、平面のＲＧＢに対してより効率的に、そのアルゴリズムが作用する。
【００９２】
平面化されたイメージとは、成分カラーに分解されたイメージである。ＣＦＡ  ＲＧＢイメージの場合であれば、３つの分離されたイメージがあることになる：すなわち１つはレッド・ピクセルのみを含むイメージであり、１つはブルー・ピクセルのみを含むイメージであり、残り１つはグリーン・ピクセルのみを含むイメージである。ただし、各平面は、「実際にサンプリングされた」そのカラーのピクセルを表しているだけであることに注意が必要である。平面化プロセスの間にリサンプリングが行われることはない。その結果、Ｒ、Ｇ、およびＢ平面が互いに一致することはなく、またＧ平面は、ＲまたはＢ平面の２倍の大きさとなる。このプロセスを図１７に示す。
【００９３】
実際のプロセスは極めてシンプルである−−読み込むピクセルのカラー深度に応じて、出力ピクセルが、適切なカラー平面のイメージ内の次のポジションに（したがってＣＦＡと同じ姿勢で）送られる。
【００９４】
レッド平面４５およびブルー平面４７のイメージは、オリジナルのＣＦＡイメージのちょうど４分の１になる。それらは、各ディメンションにおいて、正確に半分の解像度を有する。したがって、レッドおよびブルーのイメージは、それぞれ７５０×５００ピクセルであり、レッド・イメージは、必然的にブルー・イメージから、ＣＦＡ空間（１５００×１０００）における１ピクセル分だけ、ｘならびにｙ方向にオフセットされる。
【００９５】
グリーン平面のイメージ４６は、オリジナルのＣＦＡイメージの半分であるが、レッド平面およびブルー平面ほど単純に記述することはできない。その理由は、グリーン平面が市松模様にレイアウトされていることに起因する。あるライン上においては各「奇数」ピクセルがグリーンになり、次のライン上においては各「偶数」ピクセルがグリーンになる。つまり、グリーン平面の交番するラインがＣＦＡイメージ内における奇数および偶数のピクセルを表している。したがって、グリーン平面のイメージは７５０×１０００ピクセルになる。これは、リサンプリング・プロセスに関する分岐を有する（２８ページ（ページ指定は原文に記載されたとおり）の「リサンプル６４」を参照されたい）。
【００９６】
（３．１．４  ストア済みイメージ４２）
線形化されたＲＧＢイメージの各カラー平面は、一時的なストアのためにメモリに書き込まれる。このメモリは、電源が遮断された後においてもイメージが残るように、フラッシュ・メモリ１１とする。
【００９７】
平面化された線形ＲＧＢイメージに必要となるメモリの総量は１，５００，０００バイト（約１．５ＭＢ）であり、その構成は次のようになる。
●  Ｒ：７５０×５００＝３７５，０００バイト
●  Ｂ：７５０×５００＝３７５，０００バイト
●  Ｇ：７５０×１０００＝７５０，０００バイト
【００９８】
（３．２  プリント・チェーン）
プリント・チェーンは、メモリ４２から既存のイメージを取り出すこと、およびそれをＭｅｍｊｅｔ（メムジェット）プリンタ２にプリントすることと関係する。イメージは、通常、取り込まれるとすぐにプリントされるが、リプリント（つまり、再取り込みを伴わずに行うプリント）も可能である。
【００９９】
ＣＦＡ取り込みによるイメージから高品質プリントを生成するためには、イメージ処理チェーン内に多数のステップが必要になる。図１８にプリント・チェーンを示す。このチェーンは、３つの作業解像度に分けられる。第１はオリジナルの取り込み空間５０（ＣＦＡと同一の空間）であり、第２は中間解像度５１（１２８０個の連続階調ピクセルのライン）であり、最後の解像度は、プリンタ解像度５２であり、６４００個の２値レベルのドットを含むラインを伴う。
【０１００】
（３．２．１  入力イメージ）
入力イメージは、セクション３．１．４において説明したイメージ取り込みチェーンによってストアされた、平面形式の線形化されたストア済みＲＧＢイメージ４２である。
【０１０１】
（３．２．２  統計の収集６０）
ホワイト・バランスおよび範囲拡張等のプロセスを実行する前に、「イメージ全体」に関する多数の統計を集める必要がある。これらの統計は、特定の取り込み済みイメージ４２のすべてのプリントについて１回だけ収集を行えばよく、レッド、グリーン、およびブルー平面のイメージから個別に収集することができる。
【０１０２】
（３．２．２．１  ヒストグラムの作成）
最初のステップは、各カラー平面の８ビットの値に関するヒストグラム作成である。各１５００×１０００のＣＦＡイメージは、全体として次を含む。
●  ３７５，０００個のレッド・ピクセル（少なくとも１９ビットのカウンタを必要とする）
●  ３７５，０００個のブルー・ピクセル（少なくとも１９ビットのカウンタを必要とする）
●  ７５０，０００個のグリーン・ピクセル（少なくとも２０ビットのカウンタを必要とする）
【０１０３】
したがって、ヒストグラムを保持するために２５６×２０ビットのテーブルが１つ必要になる。
【０１０４】
ヒストグラムを作成するプロセスは、次の疑似コードによって表されるように単純である。
【０１０５】
【数１】
0004576084.tif 000009
【０１０６】
（３．２．２．２  高低のスレッショルドの決定）
カラー平面に関するヒストグラムが作成された後は、それを使用して高低のスレッショルドを決定することが可能になる。これらのスレッショルドは、その後のプリント・プロセスの間におけるホワイト・バランスおよび範囲拡張を自動化するために使用することができる。
【０１０７】
ヒストグラムからのピクセル数に基づいてスレッショルドを決定する場合、「もっとも暗い側のｎ％のピクセル」を考慮する必要はなく、したがって等しいと見なす。同様に、「もっとも明るい側のｎ％のピクセル」を考慮する必要がなく、したがって等しいと見なす。「ｎ」に関する正確な値は、約５％になると予測されるが、ＣＦＡの応答特性に依存する。
【０１０８】
「ｎ％」のもっとも暗い値を決定するプロセスは単純である。カラー平面のヒストグラムを、０に対応するカウントから上に向かって（つまり０、１、２、３等）合計が「ｎ％」になるまでステップするか、あるいは０からの量が設定値を超えたところまで移動する。これらの値のうちももっとも高い値が、そのカラー平面の低スレッショルドとなる。これらのもっとも暗い値の間には差が存在するものの、その差は、範囲拡張およびカラー・バランスの目的から考慮する必要がないと見なされる。
【０１０９】
「ｎ％」のもっとも明るい値を決定するプロセスについてもこれに類似である。カラー平面のヒストグラムを、２５５に対応するカウントから下に向かって（つまり２５５、２５４、２５３等）合計が「ｎ％」になるまでステップするか、あるいは２５５からの量が設定値を超えたところまで移動する。これらの値のうちももっとも低い値が、そのカラー平面の高スレッショルドとなる。これらのもっとも明るい値の間には差が存在するものの、その差は、範囲拡張およびカラー・バランスの目的から考慮する必要がないと見なされる。
【０１１０】
０または２５５から設定距離を超えたところでストップする理由は、次に示す２つのタイプのイメージを補償するためである。
●  オリジナルのダイナミック・レンジが低い場合、または
●  イメージ内にホワイトまたはブラックが存在しない場合。
【０１１１】
これら２つの場合には、開始する範囲が狭いことから上側または下側の値の「ｎ％」を不要と見なすことが望ましくない。実際にサンプリングしたピクセル値の範囲の外側に、高スレッショルド７３および低スレッショルド７２を安全にセットすることができる。正確な距離はＣＦＡに依存するが、２つの定数を持つことになる。
【０１１２】
１つのカラー平面に関するサンプル・カラー範囲を図１９に示す。ここで、１つのイメージのカラー平面のピクセルについて完全な０〜２５５の範囲が可能であるが、この特定のイメージは、それより小さい範囲を有していることに注意する必要がある。また、同じｎ％のヒストグラム範囲７０、７１が、低い側のエンド７０において広く、高い側のエンド７１において狭くなっていることにも注意されたい。これは、このヒストグラムが、低い側のエンドに比べて、より互いに密接して高い値のピクセルを含まなければならないことによる。
【０１１３】
高スレッショルド７３および低スレッショルド７２は、それぞれのカラー平面ごとに独立して決定されなければならない。この情報を使用して、この後のホワイト・バランスおよび範囲拡張プロセスに用いられる範囲のスケーリング・ファクタおよびオフセット・ファクタを計算することになる。
【０１１４】
次に示した疑似コードは、２つのスレッショルドのいずれか一方を決定するためのプロセスを示している（低スレッショルドを求める場合には、ＳｔａｒｔＰｏｓｉｔｉｏｎ＝２５５、かつＤｅｌｔａ＝１とする；高スレッショルドを求める場合には、ＳｔａｒｔＰｏｓｉｔｉｏｎ＝０、かつＤｅｌｔａ＝−１とする）（ＳｔａｒｔＰｏｓｉｔｉｏｎは開始位置を表す変数の名前＝スタートポジション；Ｄｅｌｔａは増分を表す変数の名前＝デルタ）。なお、この疑似コードにおいては、Ｔｈｒｅｓｈｏｌｄ（スレッショルド）が、加算の間にラップする８ビット値であることが仮定されている。
【０１１５】
【数２】
0004576084.tif 000010
【０１１６】
（３．２．３  イメージの回転６１）
イメージの回転６１は、取り込みおよびプリント・プロセス、ならびにリプリント・プロセスの両方において「オプション」のステップになる。
【０１１７】
図１３に示されるように、各種のプリント・フォーマットによって、ＣＦＡの姿勢に対して０度または９０度のイメージの回転が要求される。回転の量は、現在選択されているプリント・フォーマットに依存する。回転の方向は重要ではないが（回転後の姿勢がプリントヘッドの幅に便宜を図るだけのものであるから、時計回りまたは反時計回りとすることができる）、回転方向は、３つのカラー平面の相対的な位置合わせに影響を及ぼす。次の表７に、各プリント・フォーマットに必要となる、オリジナルのＣＦＡの姿勢からの回転について要約した。
【０１１８】
【表８】
0004576084.tif 000011
【０１１９】
回転が０度または９０度だけであることから、回転プロセスの間に情報が失われることはない。０度の回転の場合には、イメージを行ごとに読み出すことが可能であり、９０度の回転の場合には、イメージを列ごとに読み出すことが可能である。３つのカラー平面の位置合わせは、回転方向を考慮に入れて実施されなければならない。
【０１２０】
（３．２．４  ホワイト・バランス６２および範囲拡張６３）
理想的な照明条件の下に写真が撮影されることはほとんどない。「完全な照明条件」という概念そのものでさえ、撮影者および被写体の両方の意味において主観性を伴う。しかしながら、あらゆる場合において、写真の被写体は、光源（太陽または室内灯等）からの光によって、もしくはそれ自体の光（ネオン・サイン等）によって照明される。
【０１２１】
多くの照明条件において、撮影者にとって「白い」光と映るものは、一般に白からほど遠い。たとえば室内灯は、通常、黄色の色合いを有しており、未補正の写真上にはこの黄色の色合いが現れることになる。多くの者にとっては、最終的な未補正の写真上に現れた黄色の色合いは正しくない。これは、確かに写真が撮影された時点において見えていた条件に一致するかもしれないが、対象の「知覚される」カラーとは整合しない。このようなことから、写真のプリントアウトを行う前にホワイト・バランスを実施することが重要になる。
【０１２２】
同じように、カラーのダイナミック・レンジが拡張されて、各カラー平面におけるフルレンジに整合されると、イメージをより高品質に感じさせることができる。特に、イメージをより高い解像度にリサンプルする前にこれを行うと役立つ。ダイナミック・レンジがより高い場合には、補間されたピクセル・ポジションに中間値を使用して、段階的な、あるいは濃淡にむらのあるイメージとなることを回避することができる。範囲拡張は、実際にサンプリングされた値に対して２５６の値の完全な範囲を与えるためにデザインされている。最良ケースにおいては、もっとも低い値が０にマップされ、もっとも高い値が２５５にマップされる。すべての中間の値は、０から２５５までの中間値に比例的にマップされる。
【０１２３】
数学的には、低スレッショルド７２を０に平行移動し、それに続いてスケーリングを行う演算が実行される。次にその式を示す。
【０１２４】
Pixel' = (Pixel - LowThreshold)×RangeScaleFactor
ただし、
RangeScaleFactor = 256 / (HighThreshold - LowThreshold)
【０１２５】
「ＲａｎｇｅＳｃａｌｅＦａｃｔｏｒ」（レンジスケールファクタ）は、最大値を設定して範囲の拡張が広くなりすぎるリスクを抑える必要がある。「ＬｏｗＴｈｒｅｓｈｏｌｄ」すなわち低スレッショルド７２の計算に関する詳細は、セクション３．２．２「統計の収集」を参照されたい。これらの値（ＬｏｗＴｈｒｅｓｈｏｌｄおよびＲａｎｇｅＳｃａｌｅＦａｃｔｏｒ；それぞれ「低スレッショルド」および「レンジスケールファクタ」）は、カラー平面ごとに異なるものとなるが、１つのイメージについて１度だけ計算すればよい。
【０１２６】
これらのタスクは、図２０に示すように、ともに同時に処理することができる。
【０１２７】
このステップがスケーリング・プロセスを含むことから、たとえば値１２が５．２５にマップされるというように、マップ後の値に小数の成分が含まれることがある。ここで小数の成分を破棄するのではなく、１０ビットの結果（８ビットの整数および２ビットの小数）をイメージ処理の次の段階に渡している。８ビットを超えて「完全な」イメージをストアするメモリの余裕はないが、リサンプリング段階においてより高い解像度を利用することができる。つまり、入力イメージは８ビットであり、出力イメージは各カラー成分当たり１０ビットを有する。論理的なプロセスを図２１に示した。
【０１２８】
「ＬｏｗＴｈｒｅｓｈｏｌｄ」すなわち低スレッショルド７２より低いすべての値が０にマップされるように、減算の間の最低値を０とすることが重要である。同様に「ＨｉｇｈＴｈｒｅｓｈｏｌｄ」すなわち高スレッショルド７３より高い入力値が２５５にマップされるように、乗算においては、結果の整数部分に関する最大値を２５５にしなければならない。
【０１２９】
（３．２．５  リサンプル６４）
ＣＦＡは、１つのピクセルの（ｘ，ｙ）座標当たり単一のカラー成分だけしか提供しない。最終的なプリント・イメージを生成するためには、各ピクセルの残りのカラー成分も必要になる。最終的には、１つのピクセルについてシアン、マゼンタ、およびイエロのカラー成分が必要になるが、シアン、マゼンタ、およびイエロに到達するために、レッド、グリーン、およびブルーが必要になる。ここで用いている１カラー‐１ピクセルの場合においては、たとえば特定ポジションにレッド成分を有しているのであれば、ブルーおよびグリーンを評価する必要がある。あるいは、グリーンを有しているのであれば、レッドおよびブルーの評価が必要になる。
【０１３０】
それぞれのＣＦＡ解像度ピクセルについて、完全なレッド、グリーン、およびブルーのカラー成分を有していた場合であっても、ＣＦＡ解像度イメージは最終的な出力解像度度ではない。それに加えて、出力フォーマットは各様であるが、物理的なプリントヘッドの幅は一定（４インチ、１６００ｄｐｉ）である。つまり、一定幅のプリントヘッドは６４００ドットである。
【０１３１】
次の２つの極端なケースについて考える。
●  「ＣＦＡ解像度の補間（最小補間）を行い、続いてシャープニング、カラー変換を行う。最後にプリント解像度にスケーリングする。」：これには、シャープニング・カーネルが一定になり、低解像度でカラー変換が行われるという利点がある。しかしながらその不利点として、補間後のイメージ用に、１カラー成分当たり８ビットを超えるビット数が必要になること、あるいはプリント解像度への最終的なスケール‐アップの間に中間値が不正確に補間されることが挙がる。また、１サイクル当たり１つの、プリント解像度の補間済みの値を生成することが可能なスケール‐アップ・ユニットが必要になるという不利点もある。
●  「プリント解像度への補間を行い、続いてシャープニング、カラー変換を行う。」：これには、リサンプリング・プロセスが１度だけで済み、最大精度が提供されるという利点がある。しかしながら、１サイクル当たり１つの、バイ‐キュービック補間による値の生成だけでなく、シャープニング、およびカラー変換をすべて、概して単一サイクルで実行できるスケール‐アップ・ユニットを必要とするという不利点がある。シャープニング・カーネルは、ＣＦＡ分解能カーネルを高分解能イメージに適用できる充分な大きさでなければならない。さらに不利なことに、単一プリント・サイクル上において、シアン、マゼンタ、およびイエロのドットが、６つの異なるラインからのドットを表すことから、シャープニングのために、少なくとも３つのウインドウを出力イメージ上で維持しなければならない（それぞれが６４００エントリのラインを含む）。
【０１３２】
これらのいずれのケースも最終的なプリント出力が連続階調（ｃｏｎｔｏｎｅ）ではなく、２値レベルになるという事実を考慮していない。つまり、リサンプリングに関して妥協点を打ち出し、これら２つの方法から最善を達成することができる。
【０１３３】
解決策は、「中間解像度」への補間である。シャープニングおよびカラー変換は、中間解像度において行い、プリント解像度へのスケール‐アップがそれに続く。中間解像度は充分に低いものとし、小さいシャープニング・カーネル・サイズおよびカラー変換タイミングの利点を生かすことができるようにしなければならない。しかも中間解像度は、プリント解像度の２値レベル・イメージへのスケール‐アップにおいて品質の低下をもたらすことがないように、充分に高いものでなければならない。さらに、その影響は、プリント解像度への（２つではなく）単一の補間が行われた場合と同一でなければならない。
【０１３４】
プリント・イメージが１６００ｄｐｉのディザ処理された「２値レベル」ドットとしてプリントされることから、３２０ｄｐｉの「連続階調（ｃｏｎｔｏｎｅ）」イメージによって充分に表すことができる。結局、１２８０個の連続階調（ｃｏｎｔｏｎｅ）ピクセルの中間解像度は、６４００の２値レベル・ドットに対して知覚的な品質の低下をまったくもたらさない。したがって、その後の１２８０から６４００へのスケーリングは、正確にスケーリング比１：５になる。
【０１３５】
リサンプリングを行うことがいかに最善策であるかは、ＣＦＡ解像度に関してそれぞれのカラー平面を考察するともっともよく判断できる。これについて、回転が０の場合を例に、図２２に示した。
【０１３６】
（３．２．５．１  レッド平面４５およびブルー平面４７）
レッド平面４５およびブルー平面４７を観察すると、完全ＣＦＡ解像度バージョンのカラー平面が、各ディメンション内のサンプリングされたピクセル数を２倍にするスケール‐アップによって生成できることがわかる。中間ピクセルは、再構築フィルタ（Ｌａｎｃｚｏｓ（ランツォス）または指数関数フィルタ等）を用いて生成することができる。カーネルは対称性があることから、カーネル内においては１つのディメンションしか必要ない。レッドおよびブルーは、ＣＦＡサンプル空間内における内部表現という意味から異なるオフセットを有するため、カーネルの初期ポジションが異なるものとなる。
【０１３７】
入力座標に対する出力座標（１２８０空間）のマッピングは、ピクセルの位置合わせが回転（プリント・フォーマットに応じて０度または９０度）に伴って変化することから、イメージの現在の回転に依存する。レッドおよびブルーについては、次に示す関係が維持される。
【０１３８】
ｘ’＝（ｘ／ｍｐｓ）＋ｋ１
ｙ’＝（ｙ／ｍｐｓ）＋ｋ２
これにおいて：
ｘ，ｙ＝中間解像度空間における座標
ｘ’，ｙ’＝入力空間における座標
ｍｐｓ＝入力空間の１サンプル当たりの中間解像度空間のピクセル数
ｋ１，２＝｛０，−０．５｝；回転に依存する。
【０１３９】
これは、入力空間における開始ポジションが与えられたとき、１／ｍｐｓのΔｘならびにΔｙと０の加算をそれぞれ１２７９回にわたって行うことにより、中間解像度ピクセルの新しいラインを生成できることを意味している。入力空間におけるｘおよびｙの小数部を直接使用して、イメージ再構成およびリサンプリングのためのカーネル係数のルックアップを行うことができる。
【０１４０】
ここで、イメージが受けた回転が０度であるか、または９０度であるかに応じてｋ１およびｋ２が０および−０．５のいずれかになることに注意が必要である。次の表８は、レッドおよびブルーの平面におけるｋ１およびｋ２に関する値をまとめたものであり、９０度の回転については、反時計回りに行われることを前提としている。
【０１４１】
【表９】
0004576084.tif 000012
【０１４２】
１サンプル当たりの中間解像度ピクセルの数、すなわち「ｍｐｓ」は、プリント・フォーマットに依存する。平面化されたＲＧＢイメージが、回転を受けないとき、レッド平面についてＲ＝７５０×５００の解像度、およびブルー平面についてＢ＝７５０×５００の解像度を有しているとした場合の、各種の出力フォーマットに関するスケール・ファクタ（１７ページ（ページ指定は原文に記載されたとおり）の図１３を参照されたい）を次の表９に示す。ここでは、パスポート・イメージ・フォーマットの場合に、全体のイメージが出力空間の１／４にリサンプルされることに注意する必要がある。
【０１４３】
【表１０】
0004576084.tif 000013
【０１４４】
この表９からわかるように、すべてのイメージ・フォーマットに関してレッドおよびブルーのイメージは「スケール‐アップ」される。したがって、リサンプリング・プロセスによってエイリアシング・アーティファクトが招かれることはない。
【０１４５】
（３．２．５．２  グリーン平面４６）
グリーン平面の各ラインが異なるピクセルを表すことから、つまり交番するライン上の奇数または偶数ピクセルを表すことから、グリーン平面４６のスケール‐アップについては、レッドまたはブルーと同じ方法で扱うことができない。ピクセル数という意味においては、グリーン・イメージは７５０×１０００であると表現されるが、同時にそのイメージは１５００×５００であると言うこともできる。この混乱は、グリーン・ピクセルの市松模様特性からもたらされ、それにおいては、ｘおよびｙのディメンション内のピクセル間の距離が等しくなく、イメージ再構成またはリサンプリングに対する良好なマップが得られない。ほかのシステムによって使用されているグリーン平面に関する補間方法の数の多さは、そのことを立証している−−最近傍複製から、線形補間、双一次補間、さらにヒューリスティックな再構成までにわたる。
【０１４６】
入力座標に対する出力座標（１２８０空間）のマッピングは、概念的にはグリーンに関するものも、レッドおよびブルーに関するものに同じである。マッピングは、ピクセルの位置合わせが回転（プリント・フォーマットに応じて０度または９０度）に伴って変化することから、イメージの現在の回転に依存する。グリーン平面については、次に示す関係が維持される。
【０１４７】
ｘ’＝（ｘ／ｍｐｓ）＋ｋ１
ｙ’＝（ｙ／ｍｐｓ）＋ｋ２
これにおいて：
ｘ，ｙ＝中間解像度空間における座標
ｘ’，ｙ’＝入力空間における座標
ｍｐｓ＝入力空間の１サンプル当たりの中間解像度空間のピクセル数
ｋ１，２＝｛０，−０．５｝；回転に依存する。
【０１４８】
レッド平面４５およびブルー平面４７と同様に、１サンプル当たりの中間解像度ピクセルの数、すなわち「ｍｐｓ」は、プリント・フォーマットに依存する。平面化されたＲＧＢイメージが、回転を受けないとき、レッド平面についてＲ＝７５０×５００、ブルー平面についてＢ＝７５０×５００、かつグリーン平面についてＧ＝７５０×１０００の解像度をそれぞれ有しているとした場合の、各種の出力フォーマットに関するスケール・ファクタ（図１３を参照されたい）を次の表１０に示す。ここでは、パスポート・イメージ・フォーマットの場合に、全体のイメージが出力空間の１／４にリサンプルされることに注意する必要がある。
【０１４９】
【表１１】
0004576084.tif 000014
【０１５０】
これらのスケール・ファクタは、ＣＦＡ解像度入力空間と中間解像度空間の間における座標のマッピングを可能にする。しかしながら、グリーン平面４６の市松模様特性に起因して、ＣＦＡ入力空間の座標を獲得した後のイメージの再構成およびリサンプリングを、レッドまたはブルーと同じ方法に従って行うことはできない。
【０１５１】
それに代えて、高品質のイメージの再構成およびリサンプリングを目的として、ここではグリーン・チャンネルを、４５度の回転を受けたイメージであると考える。この観点からピクセルを観察すると、図２３に示すように、高品質のイメージ再構成およびリサンプリング方法が明確になる。
【０１５２】
図２３を参照すると、ＸおよびＹディメンションにおけるサンプリングされたピクセル間の距離が、これによって等しくなっている。サンプリングされたピクセル間の実際の距離は、図２４に示されるように２１／２である。
【０１５３】
したがって、グリーン・チャンネルに関する解決策は、「回転された空間内において」イメージの再構成およびリサンプリングを行うことである。レッドおよびブルーのリサンプリングの場合と同じ再構成フィルタが使用されるが、カーネルが異なる。これは、グリーン平面に関するサンプリング・レートと信号内の最大周波数の間における関係がレッドおよびブルー平面に関する関係と異なることによる。それに加えて、カーネル座標に関する限り、サンプル間の２１／２の距離が１となるように、カーネルを正規化する必要がある（しかしながら、エイリアシングが生じるか否かを決定するために、リサンプリング座標間の正規化していない距離も使用しなければならない）。そのため、次に示す２つの変換が必要になる。
●  第１は、回転されていないＣＦＡ空間を回転されたＣＦＡ空間にマップする変換である。これは、この回転が４５度であることから、各縦座標（ｏｒｄｉｎａｔｅ）に１／２１／２を乗ずることによって達成される（ｃｏｓ４５＝ｓｉｎ４５＝１／２１／２）。
●  第２は、座標のスケーリングを行って正規化されたカーネルに整合させる変換であり、これは、各縦座標（ｏｒｄｉｎａｔｅ）に１／２１／２を乗ずることによって達成される。
【０１５４】
これら２つの変換を組み合わせると、１／２を因数とした乗算が形成される。つまり回転していないＣＦＡ空間のｘにおいて「ｋ」だけ進めるとき、カーネルのｘにおいてｋ／２による増加を行い、かつカーネルのｙにおいてｋ／２による減少を行う。同様に、ｙにおいて「ｋ」だけ進めるときは、カーネルのｘにおいてｋ／２による増加を行い、かつカーネルのｙにおいてｋ／２による増加を行う。
【０１５５】
これら２つの異なる座標系の間の関係は、ＣＦＡ空間の入力イメージから中間解像度ピクセルのラインを生成するとき何が起こるかを考えることによって説明することができる。ＣＦＡ入力空間の開始ｙ座標が与えられているとき、ｘ＝０から開始し、１／ｍｐｓずつ１２８０回の前送りを繰り返すことによって、それぞれの新しいロケーションにおける新しいピクセルを生成する。回転されていないＣＦＡ空間における１／ｍｐｓずつ移動は、回転されたＣＦＡ空間におけるｘ方向の移動およびｙ方向の移動に分解することができる。このプロセスを図２５に示す。
【０１５６】
ｃｏｓ４５＝ｓｉｎ４５＝１／２１／２であることから、回転されていないＣＦＡ空間内における１／ｍｐｓの移動は、ｘおよびｙにおいて等しく１／（ｍｐｓ・２１／２）の移動をそれぞれ行うことに等しい。そこでこの量をスケーリングし、正規化されたカーネルに整合させる。このスケーリングは、１／２１／２を用いたもう１つの乗算を行うことに等しい。結局、回転されていないＣＦＡ空間における１／ｍｐｓの移動は、カーネルｘおよびカーネルｙにおける１／２ｍｐｓの移動に等しくなる。次の表１１に、各種のフォーマットに関する３つの座標系の間の関係をまとめる。
【０１５７】
【表１２】
0004576084.tif 000015
【０１５８】
表１１から、カーネル空間内の移動は、必ず１より小さい数によって行われるが、回転されたＣＦＡ空間内においては、パスポート・イメージだけが１より大きいΔ値を有することがわかる。つまり、パスポート・プリント・フォーマットについてはエイリアシングを生じるが、それ以外については生じない。しかしながら、Δがほぼ１であり、４つのイメージのそれぞれが１／４のサイズしかないことを考えれば、また特に、イメージ取り込みの間においてグリーンに対する理想的なロー・パス・フィルタリングを仮定していることからも、このエイリアシングが目立ったものとなることはない。
【０１５９】
（３．２．５．３  レッド、ブルー、グリーンに関する再構成フィルタ）
使用される再構成フィルタは、厳密に言えば多くの問題に依存する。これは、オリジナルの信号の構成に使用されるサンプルの数と、信号の再構成に要する時間、および再構成後のイメージの品質の間のトレード‐オフを常に伴う。この場合の満足の行くトレード‐オフは、評価されるポジションＸを中心とし、再構成中のディメンションから５個のピクセル・サンプル−−すなわち、Ｘ−２、Ｘ−１、Ｘ、Ｘ＋１、Ｘ＋２を使用する。５個のサンプル・ポイントを用いた再構成の特性から、コンボリューション・カーネル内のエントリに関して４個の係数があればよいことになる。
【０１６０】
そこで、それぞれのカラー成分ごとに「ｎ」個のエントリを伴うカーネル係数ルックアップ・テーブルを作成した。各エントリは、４個の係数を有している。ここでは、出力空間において前送りを行うとき、出力空間における変化を入力空間およびカーネル空間における変化にマップする。カーネル係数テーブルへのインデクスには、現在のカーネル空間内の小数成分の最上位からビットを使用する。カーネル・テーブル内に６４個のエントリがあるとすれば、小数の上位６ビットを使用して係数のルックアップを行う。Ｐｒｉｎｔｃａｍ（プリントカム）におけるリサンプリングについては、６４個のエントリは極めて充分な数である。
【０１６１】
（３．２．６  シャープニング６５）
ＣＦＡによって取り込まれたイメージには、プリントの前にシャープニングを行わなければならない。理想的には、ＣＦＡ解像度ドメイン内においてシャープニング・フィルタを適用する。しかしながら、イメージ取り込み解像度においては、各ピクセルがフルカラー情報を有していない。それに代えて、各ピクセル・ポジションは、レッド、ブルーまたはグリーンだけを有している。各カラー平面のシャープニングを独立に行うことはカラー・シフトをもたらす。シャープニングは、所定のピクセルのヒューおよび飽和度が変更を受けないように、独立に行われるのではなく、イメージの輝度チャンネルに対して適用される必要がある。
【０１６２】
したがってシャープニングは、カラー空間へのＲＧＢイメージの変換を伴い、それにおいては、カラー情報（ＨＬＳまたはＬａｂ等）８０が、輝度およびそれ以外の情報に分離される。その後、（輝度のハイ・パス・フィルタリング後のバージョンと調和を保ちつつ加算を行うことによって）輝度チャンネル８１のシャープニング８２を行うことが可能になる。最後に、全体のイメージをＲＧＢ（または、ＣＭＹでプリントを行うことから、ＣＭＹ）に戻す変換８３を行う。図２６は、これらのプロセスを示している。
【０１６３】
しかしながら、ハイ・パス・フィルタリング後のＬをイメージに戻す加算の効果、すなわち、この効果がイメージの輝度における変化であることを考えると、カラー変換の多くを回避することができる。所定のピクセルの輝度における変化は、線形Ｒ、Ｇ、およびＢにおける均等な変化によって良好に近似することができる。したがって、ここでは、単純にＬを生成し、Ｌのハイ・パス・フィルタリングを行い、結果の割合をＲ、Ｇ、およびＢに等しく適用している。
【０１６４】
（３．２．６．１  ＲＧＢからＬへの変換８０）
ここでは、Ｌが知覚的に均一であるＣＩＥ  １９７６  Ｌ＊ａ＊ｂ＊カラー空間を考える。ＲＧＢからＬ（輝度チャンネル）への変換を行うために、次のようにしてＲ、Ｇ、およびＢの最大と最小を平均する。
Ｌ＝｛ＭＩＮ（Ｒ，Ｇ，Ｂ）＋ＭＡＸ（Ｒ，Ｇ，Ｂ）｝／２
【０１６５】
（３．２．６．２  Ｌのハイ・パス・フィルタリング８４）
その後、輝度情報にハイ・パス・フィルタ８４を適用することができる。ＣＦＡ解像度空間ではなく、中間解像度空間においてフィルタリングを行っているが、シャープニング・カーネルのスケール・アップ、もしくはハイ・パスの結果のスケーリングを適切に行うことが可能である。シャープニングの正確な量は、ＣＦＡに依存することになるが、３×３のコンボリューション・カーネル８５は、良好な結果を得る上で充分である。
【０１６６】
カーネルのサイズの増加を行うのであれば、カーネルのスケーリングのための基礎としてグリーン・チャンネルを使用し、１２８０の解像度空間に適用したとき、ＣＦＡ空間における３×３のコンボリューションに必要となる有効なスケーリング８６について次の表１２に示す。この表から、すべてのシャープニングにとって、中間解像度空間に適用されるサイズ７×７のカーネルが適切になることが明らかである。
【０１６７】
【表１３】
0004576084.tif 000016
【０１６８】
３×３フィルタ８５を中間解像度イメージに適用するのであれば、一般的なイメージ・スケーリング操作に使用されるスケーリング・ファクタに従って結果のスケーリング８６を行うことになる。表１２における値（特に標準プリント・フォーマットの値）を前提とするのであれば、３×３フィルタ８５を使用し、その後、結果のスケーリングを行うことができる。図２７は、単一のフィルタリング後のＬピクセルを生成するプロセスを示している。
【０１６９】
使用される実際のカーネルは、標準ハイ・パス・フィルタ・カーネルのセットから選択した任意の１つとすることができる。基本的ではあるが、ＰＣＰのこのインプリメンテーションにおいては充分なハイ・パス・フィルタを図５０に示す。
【０１７０】
（３．２．６．３  フィルタリング後のＬとＲＧＢの加算）
次に行うことは、結果として得られたフィルタリング後の輝度値を、調和を保って輝度チャンネルに加えて戻すことである。その後、イメージを元のＲＧＢに（またはそれに代えてＣＭＹに）変換することができる。しかしながら、輝度における変化は、（カラー空間が線形であるとする限り）Ｒ、Ｇ、およびＢにおける均等な変化によって妥当な近似を得ることができる。つまり、ハイ・パス・フィルタリング後の輝度値の均等な割合をＲ、Ｇ、およびＢに加えることによって、カラー変換を完全に回避することが可能になる。ハイ・パス・フィルタリング後のイメージの正確な割合は、スケール・ファクタを用いて定義することができる。
【０１７１】
ハイ・パス・フィルタリング後の輝度ピクセルをＬとし、定数のスケール・ファクタをｋとするとき、Ｒ、Ｇ、およびＢのシャープニングの変換を次のように定義することができる。
Ｒ’＝Ｒ＋ｋＬ
Ｇ’＝Ｇ＋ｋＬ
Ｂ’＝Ｂ＋ｋＬ
ただし、それぞれの上限を２５５とする。
【０１７２】
当然のことながら、Ｌに適用されるスケール・ファクタは、単一スケール・ファクタに関するハイ・パス・フィルタリング・プロセス（セクション３．２．６．２参照）におけるスケール・ファクタと組み合わせることが可能である。
【０１７３】
ＲＧＢピクセルに対するシャープニングの適用の後は、プリントアウトのためのＣＭＹ  ８３にイメージの変換を行うことができる。
【０１７４】
（３．２．７  ＣＭＹへの変換８３）
理論的な意味において、ＲＧＢからＣＭＹへの変換は単純である。
Ｃ＝１−Ｒ
Ｍ＝１−Ｇ
Ｙ＝１−Ｂ
【０１７５】
しかしながら、この変換は、ＣＭＹ空間が線形応答を有していることが前提となっており、それが顔料インクに当てはまらないことは明白であり、ダイ‐ベースのインクにおいても、わずかに部分的に当てはまるだけである。特定デバイス（入力および出力）の個別のカラー・プロファイルは、著しく変動する可能性がある。結局、正確な変換を考慮に入れるため、および将来的なセンサを考慮に入れるために、より高精度のモデルがＰｒｉｎｔｃａｍ（プリントカム）に必要になる。
【０１７６】
必要となる変換を図２８に示した。知覚的に（ＸＹＺとは異なり）均一であることからＬａｂが選択されている。イメージ・センサのガンマウト（ｇａｍｕｔ）からプリンタのガンマウト（ｇａｍｕｔ）へのマッピングに関して言えば、プリンタのガンマウト（ｇａｍｕｔ）は、完全にセンサのガンマウト（ｇａｍｕｔ）内に含まれる。
【０１７７】
これらの変換を網羅的に実行するのではなく、３セットの３Ｄルックアップ・テーブルに基づいた３‐１次（ｔｒｉ−ｌｉｎｅａｒ、トリ−リニア、３次）変換を介して、優れた結果を得ることができる。このルックアップ・テーブルは、ＲＧＢによってインデクスされる固有のエントリに関する結果の変換を含んでいる。３つのテーブルが必要になる：１つのテーブル９０はＲＧＢからＣへのマッピングを行い、１つのテーブル９１はＲＧＢからＭへのマッピングを行い、残り１つのテーブル９２はＲＧＢからＹへのマッピングを行う。テーブル内に含まれていないエントリについては、３‐１次（ｔｒｉ−ｌｉｎｅａｒ）補間を使用して最終的な結果を求めることができる。図２９は、このプロセスを示している。
【０１７８】
３‐１次（ｔｒｉ−ｌｉｎｅａｒ）補間は、ルックアップ・テーブルからの８個の値の読み出し、および７回の線形補間（第１のディメンションにおいて４回、第２のディメンションにおいて２回、第３のディメンションにおいて１回）を必要とする。出力値は８ビットしかないが、中間的な値については高い精度を使用することができる。
【０１７９】
必要となるルックアップ・テーブルのサイズは、変換の線形性に依存する。各テーブルに推奨されるサイズは、ここでの応用においては、１７×１７×１７１であり、それぞれのエントリは８ビットである。１７×１７×１７のテーブルは、４９１３バイト（５キロバイト以下）である。
【０１８０】
注意：
１：１７×１７×１７のテーブルは優れた結果をもたらすが、９×９×９の変換テーブル（７２９バイト）だけを用いて求めることが可能になる場合もある。正確なサイズは、シミュレーションによって決定することができる。５Ｋの「保守的だが明確な結果をもたらす」アプローチは、このドキュメントのために選択されたものである。
【０１８１】
１ディメンション当たり１７のテーブルに対するインデクスのために、８ビットの入力カラー成分が固定小数点数（４：４）として扱われる。４ビットの整数がインデクスに使用され、４ビットの小数が補間に使用される。
【０１８２】
（３．２．８  アップ補間６７）
次に中間解像度（１２８０幅）のＣＭＹイメージを、最終的なプリント解像度（６４００幅）に引き上げるアップ補間を行わなければならない。その比は、いずれのディメンションについても１：５である。
【０１８３】
確かに、２５個の値（ＸおよびＹディメンションの両方において１：５）を双１次補間することも可能であるが、結果としてもたらされる値は、連続階調（ｃｏｎｔｏｎｅ）でプリントされるわけではない。結果は、ディザ処理され、２値レベルでプリントされる。連続階調（ｃｏｎｔｏｎｅ）１６００ｄｐｉの結果がディザ処理された２値レベルのドットに変換されると考えると、３２０ｄｐｉから１６００ｄｐｉへの双１次補間の精度は目立つものとはならない（中間解像度は、まさにこの理由から選択された）。したがって、ピクセルのレプリケーションが、良好な結果をもたらすことになる。
【０１８４】
ピクセルのレプリケーションは、１つのピクセルに注目し、それをより広いエリアに関する値として使用するだけの単純なプロセスである。ここでは、単一のピクセルを２５ピクセル（５×５ブロック）に複製している。各ピクセルが連続階調（ｃｏｎｔｏｎｅ）であるとすれば、結果が濃淡にむらのあるものとなる可能性があるが、ピクセルのディザ処理が行われることから、その効果は、結果として得られる２５個の２値レベルのドットが連続階調（ｃｏｎｔｏｎｅ）値を模することになる。このプロセスを図３０に示した。
【０１８５】
（３．２．９  ハーフトーン６８）
プリントヘッド２は、２値レベル形式のみにおいてドットのプリントを行うことができる。したがって、連続階調（ｃｏｎｔｏｎｅ）ＣＭＹイメージからディザ処理によるＣＭＹイメージに変換しなければならない。より詳細を述べれば、確率論的ディザ・セルを使用し、連続階調（ｃｏｎｔｏｎｅ）ＣＭＹイメージをディザ処理による２値レベルＣＭＹイメージに変換してディザ配列された分散ドットを生成する。
【０１８６】
８ビット、１６００ｄｐｉの連続階調（ｃｏｎｔｏｎｅ）値は、ディザ・セル９３内のカレント・ポジションと比較される。８０ビットの連続階調（ｃｏｎｔｏｎｅ）値がディザ・セルの値より大きければ、出力ビットとして１が生成される。それに該当しなければ、出力ビットとして０が生成される。この出力ビットは、最終的にプリントヘッドに送られ、単一のノズルをコントロールし、単一のＣ、Ｍ、またはＹドットを生成することになる。このビットは、特定のカラーおよびポジションに関して特定のノズルの発射を行うか否かを表す。
【０１８７】
ディザ・セル９３内の同一ポジションをＣ、Ｍ、およびＹに使用することができる。これは、実際のプリントヘッド２が、同一のプリント・サイクル内において異なるＣ、Ｍ、およびＹドットを生成することを理由とする。異なるカラー・ドットのスタガ配置は、実質的にディザ・セル内におけるスタガ配置をもたらす。
【０１８８】
図３は、このハーフトーン・プロセス１を示している。
【０１８９】
ディザ・セル９３のサイズは、出力ドットの解像度に依存する。１６００ｄｐｉのドットを生成していることから、セルのサイズを、３２×３２より大きくする必要がある。それに加えて、ドット処理の順序とプリントヘッド・セグメントの整合を可能にするために、理想的にはディザ・セルのサイズが、８００に均等に分けられる必要がある（プリントヘッドの各セグメントが８００ドットを有することから）。
【０１９０】
サイズが５０×５０のディザ・セルは、高品質の結果を得る上で充分な大きさであり、均等に８００（１６回）に分けることができる。ディザ・セルの各エントリは８ビットであり、合計で２５００バイト（約１．５キロバイト）になる。
【０１９１】
（３．２．１０  プリンタのためのリフォーマット６９）
プリンタに送る前に行われるこの最後のプロセスは、プリントヘッドに送られる適正な順序に従ってドットをフォーマットするためのものである。ドットは、セクション２．２．１に定義されているように、適正な順序に従って一度に２４ドットがプリントヘッドに送られなければならない。
【０１９２】
プリント用の適正な順序でドットが生成できるとすれば（つまり、アップ補間およびディザ・ファンクションが適正な順序でデータを生成する）、これらのドット値（それぞれの値は１ビット）を単純に収集し、２４個のグループとして送出することができる。そのプロセスを図３２に示す。
【０１９３】
その後は、２４ビットのグループをＭｅｍｊｅｔ（メムジェット）インターフェース１５によりプリントヘッド２に送ることができる。
【０１９４】
（４  ＣＰＵコアおよびメモリ）
（４．１  ＣＰＵコア１０）
ＰＣＰ  ３は、単一のマイクロコントローラＣＰＵコア１０を組み込み、イメージ取り込みおよびプリントのイメージ処理チェーンをシンクロし、かつＰｒｉｎｔｃａｍ（プリントカム）の、ユーザ・インターフェースを含む一般的なオペレーティング・システム・デューティを実行している。各種広範なＣＰＵコアが適している：必要な計算およびコントロール機能を、コンシューマの期待に合った充分な速度で実行する充分なプロセッシング・パワーを備えているものであれば、任意のプロセッサとすることができる。
【０１９５】
すべてのイメージ処理が専用ハードウエアによって実行されることから、ＣＰＵがピクセルを処理する必要はない。結局、ＣＰＵを極めてシンプルにすることが可能になる。しかしながら、プリントの間にわたりステッパ・モータを動作させる充分な速さを有していなければならない（ステッパ・モータは約５ｋＨｚの処理を必要とする）。適切なコアの一例として、約１ＭＨｚで動作するＰｈｉｌｉｐｓ（フィリップス）８０５１マイクロコントローラを挙げることができる。
【０１９６】
異なるＰｒｉｎｔｃａｍ（プリントカム）間においてインストラクション・セットの連続性を維持する必要はない。ライセンスまたはＣＰＵコアのポートを伴うことなく、異なる製造者によって異なるＰＣＰチップ・デザインを製造することが許される。このデバイスの独立性は、Ｉｎｔｅｌ（インテル）を伴うＰＣ市場に生じているようなチップ・ベンダーのロック‐インを防止する。
【０１９７】
ＣＰＵコアに関連付けされてプログラムＲＯＭ  １３および小規模のプログラム・スクラッチＲＡＭ  １４が備わっている。
【０１９８】
ＣＰＵ  １０は、メモリ‐マップＩ／Ｏを介してＰＣＰ  ３内の他のユニットと通信する。特定のアドレス範囲が特定のユニットをマップし、それぞれの範囲内においては、その特定のユニット内の特定のレジスタをマップする。これには、シリアルおよびパラレル・インターフェースも含まれる。
【０１９９】
（４．２  プログラムＲＯＭ  １３）
ＰＣＰ  ３には、小規模のプログラム・フラッシュＲＯＭ  １３が組み込まれている。このＲＯＭのサイズは、選択されているＣＰＵに依存するが、１６〜３２ＫＢを超えないものとする。
【０２００】
（４．３  プログラムＲＡＭ  １４）
同様に小規模のスクラッチＲＡＭエリア１４がＰＣＰ  ３に組み込まれている。プログラム・コードは、イメージを操作する必要がないことから、大きなスクラッチ・エリアの必要はない。ＲＡＭのサイズは、選択されているＣＰＵ（たとえば、スタック・メカニズム、サブルーチン呼び出し規約、レジスタのサイズ等）に依存するが、４ＫＢを超えないものとする。
【０２０１】
（４．４  ＣＰＵメモリ・デコーダ１６）
ＣＰＵメモリ・デコーダ１６は、ＣＰＵのデータ・アクセスを満たすためのシンプルなデコーダである。このデコーダは、データ・アドレスを、内部低速バスを介した内部ＰＣＰレジスタ・アクセスに翻訳するものであり、したがってＰＣＰレジスタのメモリ‐マップＩ／Ｏを考慮している。
【０２０２】
（５  通信インターフェース）
（５．１  ＵＳＢシリアル・ポート・インターフェース１７）
これは標準ＵＳＢシリアル・ポートであり、内部のチップ低速バス１８に接続されている。ＵＳＢシリアル・ポートは、ＣＰＵ  １０によってコントロールされる。このシリアル・ポートは、Ｐｒｉｎｔｃａｍ（プリントカム）に対するイメージの転送およびそれからの転送を可能にし、かつ外部コントロールの下に、転送された写真のＤＰＯＦ（Ｄｉｇｉｔａｌ  Ｐｒｉｎｔ  Ｏｒｄｅｒ  Ｆｏｒｍａｔ：ディジタル・カメラ・プリント・サービス用フォーマット）プリントを可能にする。
【０２０３】
（５．２  ＱＡチップ・シリアル・インターフェース１９）
これは、２つの標準低速シリアル・ポートであり、内部のチップ低速バス１８に接続されている。これら２つの間におけるＣＰＵ仲裁プロトコルが、プリント・ロールの認証［１，２］および次に示す機能のために使用される。
●  インク特性の獲得
●  推奨インク滴速度の獲得
●  プリント済みのペーパー量の追跡、および残りのペーパー量が要求されたプリント・フォーマットのプリントに不充分であるときの新しいプリント・ロールの要求。
【０２０４】
２つのポートを有する理由は、個別のラインを使用するオン‐カメラＱＡチップ４およびプリント・ロールのＱＡチップ５に対する接続を得るためである。２つのＱＡチップは、認証チップ［２］としてインプリメントされる。単一のラインだけを使用するとした場合には、クローン・プリント・ロール製造者に認証メカニズムの不正使用を許すことになる［１］。
【０２０５】
（５．２．１  プリント・ロールのＱＡチップ５）
各プリント・ロール消耗品は、独自のＱＡチップ５を有している。このＱＡチップは、可能な最良プリント品質の維持に求められる情報を含んでおり、認証チップ［２］を使用してインプリメントされる。次に、２５６ビットのデータの割り当てを示す。
【０２０６】
【表１４】
0004576084.tif 000017
【０２０７】
それぞれのプリントの前に、ＣＰＵによってペーパーの残量がチェックされ、現在指定されているプリント・フォーマットのプリントに充分なペーパーがあることが保証される。各プリントの開始後は、プリント・ロールのＱＡチップ内のペーパーの残量がＣＰＵによってデクリメントされなければならない。
【０２０８】
（５．３  パラレル・インターフェース６）
パラレル・インターフェース６は、ＰＣＰ  ３と個別の静的電気信号を接続する。ＣＰＵは、これらの接続のそれぞれを、低速バスを介し、メモリ‐マップＩ／Ｏとしてコントロールすることができる（メモリ‐マップＩ／Ｏについての詳細は、セクション４．４を参照されたい）。
【０２０９】
次の表１４は、パラレル・インターフェースに対する接続を示している。
【０２１０】
【表１５】
0004576084.tif 000018
【０２１１】
（５．４  ＪＴＡＧインターフェース７）
ＰＣＰ  ３には、テストを目的として、標準ＪＴＡＧ（Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ；ジョイント・テスト・アクション・グループ）インターフェース７が含まれている。チップの複雑性に起因して、ＢＩＳＴ（Ｂｕｉｌｔ  Ｉｎ  Ｓｅｌｆ  Ｔｅｓｔ；ビルト・イン・セルフ・テスト）および機能ブロック分離を含む各種のテスト・テクニックが必要となる。チップ・エリア内においては１０％のオーバーヘッドが、全体的なチップ・テスト回路用に見込まれている。
【０２１２】
（６  イメージＲＡＭ  １１）
イメージＲＡＭ  １１は、取り込み済みイメージ４２のストアに使用される。このイメージＲＡＭには、電源が遮断された後においてもイメージが保持されるように、マルチ‐レベル・フラッシュ・メモリ（１セル当たり２バイト）が用いられている。
【０２１３】
平面化された線形ＲＧＢイメージに必要となるメモリの総量は１，５００，０００バイト（約１．５ＭＢ）であり、その構成は次に示すとおりである。
●  Ｒ：７５０×５００＝３７５，０００バイト
●  Ｂ：７５０×５００＝３７５，０００バイト
●  Ｇ：７５０×１０００＝７５０，０００バイト
【０２１４】
イメージは、イメージ取り込みユニットによって書き込まれ、イメージ・ヒストグラム・ユニットならびにプリント・ジェネレータ・ユニット９９の両方によって読み出される。ＣＰＵ  １０は、このイメージ・メモリに対する直接的なランダム・アクセスを有していない。アクセスする場合には、ＣＰＵは、イメージ・アクセス・ユニットを介して行われなければならない。
【０２１５】
（７  イメージ取り込みユニット１２）
イメージ取り込みユニットは、セクション３．１において説明したイメージ取り込みチェーンによって求められるすべての機能を含んでいる。イメージ取り込みユニットは、イメージ・センサ・インターフェース９８を介してピクセル・データを受け入れ、さらにルックアップ・テーブル９６を介してＲＧＢを線形化し、最後に線形化したＲＧＢイメージを平面フォーマットによりＲＡＭ内に書き込む。図３３は、このプロセスを示している。
【０２１６】
（７．１  イメージ・センサ・インターフェース９８）
イメージ・センサ・インターフェース（ＩＳＩ）９８は状態マシンであり、イメージを読み込むためのフレーム同期パルスおよびピクセル・クロック・パルスを含むコントロール情報をＣＭＯＳイメージ・センサに送る。多くのＩＳＩは、イメージ・センサ製造者からソースされるセルとなる傾向にある。ＩＳＩ自体は、イメージ取り込みユニット状態マシン９７によってコントロールされる。
【０２１７】
（７．１．１  イメージ・センサのフォーマット）
各種のイメージ・センサが使用可能であるが、ここではベイヤー・カラー・フィルタ・アレイ（ＣＦＡ）だけを考える。ベイヤーＣＦＡは、ここに定義されている多数の属性を有する。
【０２１８】
ＣＭＯＳセンサ１によって（撮影レンズを介して）取り込まれたイメージは、充分にフィルタリングされており、エイリアシング・アーティファクトがすべて除去されているものとする。センサ自体の縦横比は３：２であり、１５００×１０００サンプルの解像度を伴う。もっとも適切なピクセル配列はベイヤー・カラー・フィルタ・アレイ（ＣＦＡ）であり、図１５に示されるように、それぞれの２×２ピクセル・ブロックが２Ｇモザイクとして配列される。
【０２１９】
Ｒ、Ｇ、またはＢ（それぞれレッド、グリーン、およびブルーに対応する）の各連続階調（ｃｏｎｔｏｎｅ）サンプルは、１０ビットである。ただし、モザイクの各ピクセルが、Ｒ、Ｇ、およびＢのうちの「１つ」だけについての情報を含むことに注意する必要がある。失われたカラー情報の評価を行ってからでなければ、イメージのプリントアウトを行うことができない。
【０２２０】
ＣＦＡは、適切な固定パターン・ノイズ（ＦＰＮ）抑圧を行うものとする。追加のＦＰＮ抑圧が求められることもある。
【０２２１】
（７．２  ルックアップ・テーブル９６）
ルックアップ・テーブル９６は、センサのＲＧＢを線形ＲＧＢにマップするＲＯＭである。これは、セクション３．１．２において説明したＲＧＢの線形化プロセス４０に一致する。このＲＯＭ自体は、３キロバイトである（３×１０２４×８ビット）。１０ビットのアドレスがＩＳＩから到来するが、２ビットのＴａｂｌｅＳｅｌｅｃｔ（テーブルセレクト）は、イメージ取り込みユニット状態マシン９７によって生成される。
【０２２２】
（７．３  状態マシン９７）
イメージ取り込みユニット状態マシン９７は、イメージ・センサ・インターフェース１のためのコントロール信号を生成し、ＲＧＢ  ４０を線形化するため、およびイメージ・データ４１を平面化するためのアドレスを生成する。
【０２２３】
ＩＳＩ  ９８に渡されるコントロール信号は、ピクセルの取り込みの開始、ピクセルの取り込みの停止等をＩＳＩに伝える。
【０２２４】
ルックアップ・テーブル９６に渡される２ビットのアドレスは、ＩＳＩから読み出しが行われているカレント・ラインに符合する。偶数ライン（０、２、４、．．．）の場合には、この２ビットのアドレスがレッド、グリーン、レッド、グリーン、．．．となる。奇数ライン（１、３、５、．．．）の場合には、この２ビットのアドレスがグリーン、ブルー、グリーン、ブルー、．．．となる。このことは、カメラの姿勢とは無関係に常に当てはまる。
【０２２５】
ＲＡＭ  １１に渡される２１ビットのアドレスは、イメージの書き込みアドレスである。３個のレジスタが、レッド、グリーン、およびブルー平面のそれぞれに関するカレント・アドレスを保持する。これらのアドレスは、各平面にピクセルが書き込まれるごとにインクリメントされる。
【０２２６】
（７．３．１  レジスタ）
イメージ取り込みユニットには、多数のレジスタが含まれている。
【０２２７】
【表１６】
0004576084.tif 000019
【０２２８】
それとは別に、イメージ・センサ・インターフェース９８にも、多数のレジスタが備わっている。レジスタの厳密な数は、選択されたイメージ・センサ１に依存する。
【０２２９】
（８  イメージ・アクセス・ユニット９）
イメージ・アクセス・ユニット９は、イメージＲＡＭ  １１内にあるイメージにＣＰＵ  １０がアクセスするための手段を提供する。ＣＰＵ  １０は、イメージＲＡＭ  １１内のイメージからピクセルを読み出し、ピクセルを書き戻すことができる。
【０２３０】
イメージは、イメージのストア（たとえば、ＵＳＢを経由）１７を目的として、あるいは単にイメージ処理のために読み出すことができる。イメージ処理後のピクセルは、以前の保存済みイメージとして（ＵＳＢを介してロード）もしくはテスト・パターンのためのイメージとしてイメージＲＡＭ  １１に書き込むことができる。テスト・パターンは、合成イメージ、特別なテスト・イメージ（ＵＳＢを介してロード）とすることも可能であり、またプリント・ジェネレータ・ユニット９９のテスト・モードを介してプリントヘッドに直接ロードされる２４ビットのノズル発射値とすることも可能である。
【０２３１】
イメージ・アクセス・ユニット９は、イメージＲＡＭ  １１に対する単純なアクセス・メカニズムであり、次の表１６に示すように、３個のレジスタという観点から見ると極めてシンプルに動作する。
【０２３２】
【表１７】
0004576084.tif 000020
【０２３３】
イメージ・アクセス・ユニットの構成は、図３５に示されるように非常にシンプルなものである。
【０２３４】
状態マシン１０１は、ＣＰＵ  １０がモード・レジスタに書き込みを行うと、イメージＲＡＭ  １１からの読み出し／それに対する書き込みを単純に実行する。
【０２３５】
（９  イメージ・ヒストグラム・ユニット８）
イメージ・ヒストグラム・ユニット（ＩＨＵ）８は、セクション３．２．２において説明したプリント・イメージ処理チェーンによって求められるイメージのヒストグラムを生成するためにデザインされている。ＩＨＵは、それぞれが８ビットのサンプルを伴う平面フォーマットのイメージに関するヒストグラムの生成だけを行う。
【０２３６】
イメージ・ヒストグラム・ユニット８は、通常、１プリントについて３回使用される。それぞれのカラー平面について１つ、合計で３つの異なるヒストグラムが収集される。ヒストグラムが収集されるごとに結果が分析されて、残りのプリント・プロセスに使用される高低のスレッショルド、スケーリング・ファクタ等が決定される。このヒストグラムの用いられ方に関する詳細な情報については、セクション３．２．２．２およびセクション３．２．４を参照されたい。
【０２３７】
（９．１  ヒストグラムＲＡＭ  １０２）
ヒストグラム自体は、２５６エントリのＲＡＭ  １０２にストアされ、それにおいて各エントリは２０ビットを有する。このヒストグラムＲＡＭは、ＩＨＵ内からだけアクセスすることができる。個別のエントリは、２０ビットの数量として読み出され、また書き込まれる。
【０２３８】
（９．２  状態マシンおよびレジスタ１０３）
状態マシン１０３は、セクション３．２．２．１において説明した疑似コードに従う。これは、次の表１７に示されるレジスタによってコントロールされる。
【０２３９】
【表１８】
0004576084.tif 000021
【０２４０】
これらのレジスタの代表的な用途は、カウントに含めるピクセルの総数（たとえばレッドであれば３７５，０００）をＴｏｔａｌＰｉｘｅｌｓ（トータルピクセルズ）に、レッド平面のアドレスをＳｔａｒｔＡｄｄｒｅｓｓ（スタートアドレス）に、１をＣｌｅａｒＣｏｕｎｔ（クリアカウント）に、１をＧｏ（ゴー）レジスタにそれぞれセットすることである。カウントが完了時に、０〜２５５をＰｉｘｌＶａｌｕｅ（ピクセルバリュー）に書き込み、対応するＰｉｘｌＣｏｕｎｔ（ピクセルカウント）を読み出すことによって、ヒストグラム内の個別の値を決定することができる。
【０２４１】
（１０  プリントヘッド・インターフェース１０５）
プリントヘッド・インターフェース（ＰＨＩ）１０５によって、ＰＣＰ  ３が、プリントされるドットをＭｅｍｊｅｔ（メムジェット）プリンタ２にロードし、実際のドット・プリント・プロセスをコントロールする。ＰＨＩは、次に示す多数のユニットに関する論理ラッパーである。
●  Ｍｅｍｊｅｔ（メムジェット）インターフェース（ＭＪＩ）１５：データをＭｅｍｊｅｔ（メムジェット）プリントヘッドに転送し、プリントの間におけるノズル発射シーケンスをコントロールする。
●  プリント・ジェネレータ・ユニット（ＰＧＵ）９９：２４ページ（ページ指定は原文に記載されたとおり）のセクション３．２において説明したプリント・チェーンのほとんどのインプリメンテーションであり、さらにテスト・パターンを生成する手段を提供する。ＰＧＵは、イメージＲＡＭ  １１から、ＣＦＡフォーマットの取り込み済みイメージから得られた平面化された線形ＲＧＢを獲得し、１６００ｄｐｉのディザ処理済みＣＭＹイメージをＭｅｍｊｅｔ（メムジェット）インターフェース１５からの要求に応じてリアルタイムで生成する。それに加えてＰＧＵは、テスト・パターン・モードを有しており、それにおいては、ＣＰＵ  １０が、プリント間に発射を行うノズルを正確に指定することが可能である。
【０２４２】
ＰＨＩ内のユニットは、ＣＰＵによりプログラムされる多数のレジスタによってコントロールされる。
【０２４３】
プリントヘッド・インターフェースの内部的な構成を図３７に示す。
【０２４４】
（１０．１  Ｍｅｍｊｅｔ（メムジェット）インターフェース１５）
Ｍｅｍｊｅｔ（メムジェット）インターフェース（ＭＪＩ）１５は、ＰＣＰを外部のＭｅｍｊｅｔ（メムジェット）プリントヘッドに接続し、データおよび適切な信号をともに提供して、プリントの間におけるノズルのロードおよび発射シーケンスをコントロールする。
【０２４５】
Ｍｅｍｊｅｔ（メムジェット）インターフェース１５は、セクション２．２において説明したプリントヘッドのロードおよび発射の順序に従う単なる状態マシン１０６（図３８参照）であり、セクション２．４．１およびセクション２．４．２において説明したプレヒート・サイクルおよびクリーニング・サイクルの機能を含む。
【０２４６】
ＭＪＩ  １５は、次に示す２つのデータ・ソースの選択肢から、プリントヘッドにデータをロードする。
●  オール「１」：これは、続くプリント・サイクルの間にすべてのノズルの発射が行われることを意味し、プレヒートまたはクリーニング・サイクルのためのプリントヘッドへのロードに関する標準メカニズムである。
●  ＰＧＵ  ９９の転送レジスタ内に保持されている２４ビットの入力から：これは、取り込み済みの写真またはテスト・パターンであるかによらず、イメージをプリントするための標準的な手段である。ＰＧＵからの２４ビットの値は、直接プリントヘッドに渡され、１ビットの「Ａｄｖａｎｃｅ（アドバンス；前送り）」コントロール・パルスがＰＧＵに送られる。各ラインのエンドにおいては、１ビットの「ＡｄｖａｎｃｅＬｉｎｅ（アドバンスライン；ライン送り）」パルスもＰＧＵに送られる。
【０２４７】
ＰＧＵ  ９９が、最初の２４ビットの転送する値の準備を、すで行った後でなければ、ＭＪＩ  １５を開始することができない。プリントヘッドに対する最初の転送に関して２４ビットのデータ入力を有効にするために、このようになっている。
【０２４８】
したがって、ＭＪＩ  １５は、プリント・ジェネレータ・ユニット９９および外部のプリントヘッド２と直接接続されている。基本的な構成を図３８に示した。
【０２４９】
（１０．１．１  プリントヘッドに対する接続）
ＭＪＩ  １５は、プリントヘッド２に対して、ＭＪＩ  １５に関する入力および出力という意味において、次に示す接続を有している（セクション２参照）。
【０２５０】
【表１９】
0004576084.tif 000022
【０２５１】
（１０．１．２  発射パルスの持続時間）
ＡＥｎａｂｌｅ（Ａイネーブル）ラインおよびＢＥｎａｂｌｅ（Ｂイネーブル）ライン上の発射パルスの持続時間は、インクの粘稠度（それ自体が温度ならびにインクの特性に依存する）およびプリントヘッドに使用可能な電力に依存する。一般的なパルスの持続時間は１．３〜１．８マイクロ秒になる。したがって、ＭＪＩは、プログラマブル・パルス持続時間テーブルを有し、プリントヘッドからのフィードバックによってそれがインデクスされる。パルス持続時間のテーブルは、低コストの電源の使用を可能にし、さらに、より正確なインク滴発射の維持に役立つ。
【０２５２】
パルス持続時間テーブルは、２５６個のエントリを有し、Ｔｓｅｎｓｅ（Ｔセンス）およびＶｓｅｎｓｅ（Ｖセンス）のカレント・セッティングによってインデクスされる。すなわち、アドレスの上位４ビットがＶｓｅｎｓｅ（Ｖセンス）から到来し、アドレスの下位４ビットがＴｓｅｎｓｅ（Ｔセンス）から到来する。各エントリは８ビットであり、０〜４マイクロ秒の範囲を固定小数点値で表す。図３９は、ＡＥｎａｂｌｅ（Ａイネーブル）ラインおよびＢＥｎａｂｌｅ（Ｂイネーブル）ラインを生成するプロセスを示している。
【０２５３】
写真のプリントの前に、ＣＰＵ  １０によって２５６バイトのテーブルに対する書き込みが行われる。このテーブル内の各８ビットのパルス持続時間エントリは、次に示す内容の組み合わせとなる。
●  明度セッティング
●  インクの粘稠度曲線（ＱＡチップから）５
●  Ｒｓｅｎｓｅ（Ｒセンス）
●  Ｗｓｅｎｓｅ（Ｗセンス）
●  Ｔｓｅｎｓｅ（Ｔセンス）
●  Ｖｓｅｎｓｅ（Ｖセンス）
【０２５４】
（１０．１．３  ドット・カウント）
ＭＪＩ  １５は、プリントヘッド２から発射される各カラーのドット数のカウントを維持している。この各カラーに関するドット・カウントは、３２ビットの値であり、プロセッサ・コントロールの下に個別にクリアされる。各ドット・カウントは、最大カバレッジ・ドット・カウント、すなわち６インチ・プリント６９枚分のドット・カウントを保持することができるが、通常の使用においては、各プリントの後にドット・カウントが読み取られ、クリアされる。
【０２５５】
初期のＰｒｉｎｔｃａｍ（プリントカム）製品においては、消耗品にペーパー「および」インクがともに含まれていたが、別のＰｒｉｎｔｃａｍ（プリントカム）モデルにおいては、交換可能なインクのみの消耗品を有することが考えられる。初期のＰｒｉｎｔｃａｍ（プリントカム）製品は、ミリメートルで表されるペーパー残量をカウント・ダウンし（ＱＡチップ５にストアされる−−セクション５．２参照）、所望のフォーマットのプリントに充分なペーパーが残っているか否かを知ることができる。すべての供給されたペーパーのフル・カバレッジについては、充分なインクが存在する。別のＰｒｉｎｔｃａｍ（プリントカム）においては、ＣＰＵ  １０がドット・カウントを使用してＱＡチップ５を更新し、インク・カートリッジがインク切れになる時期を予測する。プロセッサは、各Ｃ、Ｍ、およびＹ用のカートリッジ内のインク残量をＱＡチップ５から知ることができる。インク滴数をカウントすることによって、インク・センサが必要なくなり、またインク・チャンネルがインク切れで乾くことも防止される。更新されたインク滴カウントは、それぞれのプリントの後にＱＡチップ５に書き込まれる。充分なインクが残っていない限り、新たに写真が印刷されることはなく、ユーザは、再プリントが必要となる、むだな写真をプリントすることなしにインクを交換することができる。
【０２５６】
シアンに関するドット・カウンタのレイアウトを図４０に示す。残り２つのドット・カウンタ（マゼンタ用のＭＤｏｔＣｏｕｎｔおよびイエロ用のＹＤｏｔＣｏｕｎｔ；それぞれ「Ｍドットカウント」、「Ｙドットカウント」）についても、同一の構成になる。
【０２５７】
（１０．１．４  レジスタ）
ＣＰＵ  １０は、レジスタ・セットを介してＭＪＩ  １５との通信を行う。これらのレジスタによってＣＰＵは、プリントのパラメータ化が可能になるだけでなく、プリントの進行に関するフィードバックの受け取りも可能になる。
【０２５８】
次に、ＭＪＩに含まれるレジスタを示す。
【０２５９】
【表２０】
0004576084.tif 000023
【０２６０】
【表２１】
0004576084.tif 000024
【０２６１】
【表２２】
0004576084.tif 000025
【０２６２】
ＭＪＩの状態レジスタは、１６ビットのレジスタであり、次に示すビット解釈を伴う。
【０２６３】
【表２３】
0004576084.tif 000026
【０２６４】
（１０．１．５  プレヒート・サイクルおよびクリーニング・サイクル）
クリーニング・サイクルおよびプレヒート・サイクルは、適切なレジスタをセットすることによって簡単に達成される。
●  ＳｅｔＡｌｌＮｏｚｚｌｅｓ（セットオールノズルズ）＝１
●  ＰｕｌｓｅＤｕｒａｔｉｏｎ（パルスデュレーション）レジスタを低持続時間（プレヒート・モードの場合）もしくはクリーニング・モードの適切なインク滴発射持続時間にセットする。
●  ＮｕｍＬｉｎｅｓ（ナムラインズ）をノズルの発射を行う回数にセットする。
●  Ｇｏ（ゴー）ビットをセットし、その後プリント・サイクルが完了して、Ｇｏ（ゴー）ビットがクリアされるまで待機する。
【０２６５】
（１０．２  プリント・ジェネレータ・ユニット９９）
プリント・ジェネレータ・ユニット（ＰＧＵ）９９は、セクション３．２において説明したプリント・チェーンのほとんどのインプリメンテーションであり、さらにテスト・パターンを生成する手段を提供する。
【０２６６】
もっとも単純な見方をすれば、ＰＧＵは、図４１に示されるように、イメージＲＡＭ  １１とＭｅｍｊｅｔ（メムジェット）インターフェース１５の間におけるインターフェースを提供する。このＰＧＵは、イメージＲＡＭから、ＣＦＡフォーマットの取り込み済みイメージから得られた平面化された線形ＲＧＢを獲得し、１６００ｄｐｉのディザ処理済みＣＭＹイメージをＭｅｍｊｅｔ（メムジェット）インターフェースからの要求に応じてリアルタイムで生成する。それに加えて、ＰＧＵ  ９９はテスト・パターン・モードを有しており、それにおいては、ＣＰＵ  １０が、プリント間に発射を行うノズルを正確に指定することができる。ＭＪＩ  １５は、ＰＧＵ  ９９に、２４ビットが使用されるごとにＡｄｖａｎｃｅ（アドバンス；前送り）パルスを、またラインのエンドにおいてＡｄｖａｎｃｅＬｉｎｅ（アドバンスライン；ライン送り）パルスを提供する。
【０２６７】
ＰＧＵ  ９９は、２つのイメージ処理チェーンを有している。第１はテスト・パターン・モードであり、単純にデータを直接イメージＲＡＭ  １１から読み出し、ＭＪＩに対する出力準備の整ったバッファ内においてそのフォーマットを行う。第２は、多数のプリント・チェーン機能を包含する（セクション３．２参照）。図１８に示したプリント・チェーンには、次の機能が含まれる。
●  統計の収集６０
●  イメージの回転６１
●  ホワイト・バランス６２
●  範囲の拡張６３
●  リサンプリング６４
●  シャープニング６５
●  ＣＭＹへの変換６６
●  アップ補間６７
●  ハーフトーン６８
●  プリンタのためのリフォーマット６９
【０２６８】
ＰＧＵ  ９９は、統計の収集６０を除き、これらすべての機能を備えている。統計の収集ステップを実行するために、ＣＰＵ  １０は、３回にわたってイメージ・ヒストグラム・ユニット８を呼び出し（各カラー・チャンネルについて１回）、簡単なアルゴリズムを適用する。残りの機能は、精度および速度を理由としてＰＧＵ  ９９の領域に入れられる：精度については、高い精度で全イメージを保持するために非常に多くのメモリが必要になるからであり、速度については、シンプルなＣＰＵ  １０では、Ｍｅｍｊｅｔ（メムジェット）プリントヘッド２からのリアルタイムの高速の要求に追いつけないからである。
【０２６９】
ＰＧＵ  ９９は、入力として、ＲＧＢからＣＭＹへの変換テーブル、ホワイト・バランスおよび範囲拡張を実行するための定数、リサンプリングに関するスケール・ファクタ、および回転を考慮したイメージ・アクセス・パラメータを含めた各種のパラメータを取り込む。
【０２７０】
図２０を参照すると、２つのプロセス・チェーンを認識することができる。もっとも直接的なチェーンは、イメージＲＡＭ  １１から、テスト・パターン・アクセス・プロセス１１０を介してバッファ５に至るチェーンである。他方のチェーンは、５つのプロセスを含み、それらはすべてパラレルに実行される。最初のプロセス１１１は、イメージの回転、ホワイト・バランスおよび範囲の拡張を行う。第２のプロセス１１２は、リサンプリングを行う。第３のプロセス６５はシャープニングを行い、第４のプロセス６６はカラー変換を行う。最後のプロセス１１３は、アップ補間、ハーフトーン、プリンタのためのリフォーマットを行う。これらのプロセスは、バッファを介して接続されており、プロセスの間が数バイトしかないところもあれば、それが数キロバイトのところもある。
【０２７１】
プリントヘッドのタイミングが全体のプロセスをドライブすることから、ここでは、これらのプロセスおよびバッファを基本的に逆順に見て行く。特定のプロセスに関するタイミングおよびバッファ・サイズ要件については、その後、さらに明らになる。しかしながら、要約すると、バッファ・サイズは次の表２１に示すようになる。
【０２７２】
【表２４】
0004576084.tif 000027
【０２７３】
レジスタの数を別にすれば、プロセスのいくつかは、大きなルックアップ・テーブルもしくはメモリ・コンポーネントを有している。それについての要約を次の表２２に示す。
【０２７４】
【表２５】
0004576084.tif 000028
【０２７５】
（１０．２．１  テスト・パターン・アクセス）
テスト・パターン・アクセス・プロセス１１０は、テスト・パターンを生成する手段である。通常のユーザ環境の下において、このプロセスが使用されることはない。基本的にこれは、診断を目的としている。
【０２７６】
テスト・パターン・アクセス１１０は、イメージＲＡＭ  １１から８ビットの値を読み出し、Ｍｅｍｊｅｔ（メムジェット）インターフェースに対する出力用のバッファ５  １１８に直接渡す。このプロセスが何らかの形で、これらの８ビットの値に変更を加えることはない。イメージＲＡＭ  １１内のデータが、ＣＰＵ  １０によりイメージ・アクセス・ユニット９を用いて生成されることもある。
【０２７７】
イメージＲＡＭ  １１から読み出されるデータは、非常にシンプルな、ラップアラウンド形式で読み出される。テスト・データの記述には２つのレジスタが用いられる：すなわち、最初のバイトの開始アドレス、およびバイト数である。データのエンドに到達すると、そのデータが最初から読み出される。
【０２７８】
テスト・パターン・アクセス・ユニット１１０の構成を図４３に示す。
【０２７９】
図４３を参照するとわかるように、テスト・パターン・アクセス・ユニット１１０は、アドレス・ジェネレータ１１９以上のものではない。開始されたとき、および各ＡｄｖａｎｃｅＬｉｎｅ（アドバンスライン；ライン送り）信号に伴って、ジェネレータが３バイトを読み出し、ＴｒａｎｓｆｅｒＷｒｉｔｅＥｎａｂｌｅ（トランスファライトイネーブル）パルスを生成し、次の３バイトを読み出し、その後Ａｄｖａｎｃｅ（アドバンス；前送り）パルスを待機する。Ａｄｖａｎｃｅ（アドバンス；前送り）パルスが到来すると、ＴｒａｎｓｆｅｒＷｒｉｔｅＥｎａｂｌｅ（トランスファライトイネーブル）パルスが与えられ、次の３バイトが読み出され、次のパルス発生を待機する。これが、ＡｄｖａｎｃｅＬｉｎｅ（アドバンスライン；ライン送り）パルスまで続けられ、その時点でカレント・アドレスからプロセスが再開される。
【０２８０】
３バイトの読み出しについて言えば、アドレス・ジェネレータ１１９は、イメージＲＡＭ  １１から単純に３個の８ビット値を読み出し、それらをバッファ５  １１８に書き込んでいるだけである。最初の８ビット値は、バッファ５の８ビット・アドレス０に書き込まれ、次の値はバッファ５の８ビット・アドレス１に書き込まれ、３番目の値はバッファ５の８ビット・アドレス２に書き込まれる。その後アドレス・ジェネレータ１１９は、Ａｄｖａｎｃｅ（アドバンス；前送り）パルスを待機し、それが到来すると、同じことを繰り返す。
【０２８１】
イメージＲＡＭ  １１用のアドレス・ジェネレータは、次の表２３に示すように、開始アドレスおよびバイト・カウントを基礎とする。
【０２８２】
【表２６】
0004576084.tif 000029
【０２８３】
次に示した疑似コードは、アドレス生成を例示している。ただしこれには、ＡｄｖａｎｃｅＬｉｎｅ（アドバンスライン；ライン送り）パルスおよびＡｄｖａｎｃｅ（アドバンス；前送り）パルスを示していない。
【０２８４】
【数３】
0004576084.tif 000030
【０２８５】
データがプリントヘッド２にとって意味のあるものとなることの保証は、ＣＰＵ  １０の役割となる。バイト０は、シアンの８個のセグメントに関するノズル発射データであり（ビット０＝セグメント０等）、バイト１はマゼンタのデータ、バイト２はイエロのデータとなる。交番する２４ビットのデータは、１水平ドット・ラインだけ離隔された偶数／奇数ピクセル用である。
【０２８６】
（１０．２．２  バッファ５  １１８）
バッファ５  １１８は、全プリント生成プロセスから生成されたドットを保持する。バッファ５は、ＵＨＲＵ  １１３（アップ補間‐ハーフトーンおよびリフォーマット・ユニット）からの、一度に１つ生成されるドットを保持する２４ビットのシフト・レジスタ、ＴＰＲＵ（テスト・パターン・アクセス・ユニット）から生成されるデータを保持する３個の８ビット・レジスタ、およびＭＪＩ（Ｍｅｍｊｅｔ（メムジェット）インターフェース）に対するデータ転送のためのバッファとして使用される２４ビットのレジスタからなる。ＭＪＩからのＡｄｖａｎｃｅ（アドバンス；前送り）パルスは、２４ビットの転送レジスタに、３個の８ビット・レジスタからの、もしくは単一の２４ビットのシフト・レジスタからの２４ビットをすべてロードする。
【０２８７】
このようにバッファ５は、生成されたドットに関してダブル・バッファリング・メカニズムとして機能し、図４４に示されるような構成を有している。
【０２８８】
（１０．２．３  バッファ４  １１７）
バッファ４  １１７は、計算されたＣＭＹ中間解像度（１２８０解像度）の連続階調（ｃｏｎｔｏｎｅ）イメージを保持する。バッファ４は、カラー変換プロセス６６によって生成され、アップ補間‐ハーフトーンおよびリフォーマット・プロセス１１３によって、プリンタ用の出力フォーマットを生成するためにアクセスされる。
【０２８９】
連続階調（ｃｏｎｔｏｎｅ）バッファのサイズは、プリントヘッド上のノズル間の物理的な距離に依存する。１つの物理的なラインに関する１つのカラーのためのドットが生成されているときには、別のライン上の別のカラーのためのドットが生成されている。究極的な効果においては、プリンタから同時に６つの異なる物理ラインがプリントされる−−異なる出力ラインからの奇数および偶数ドット、およびラインごとに異なるカラーである。このコンセプトについてはセクション２．１．１において説明済みであり、距離についてもそこに定義されている。
【０２９０】
実際的な結論は、高解像度ドットにおいて偶数のシアン・ドットからマゼンタ・ドットを通り奇数のイエロ・ドットに至る所定の距離があるとする。ＲＧＢの生成、したがってＣＭＹの生成を最小化するために、これらの高解像度ドットを生成する中間解像度連続階調（ｃｏｎｔｏｎｅ）ピクセルがバッファ４内にバッファされる。
【０２９１】
高分解能ラインに対する中間解像度ラインの比が１：５であることから、各中間解像度ラインが１つのディメンションについて５回にわたりサンプルされる。バッファ・ラインの説明という目的から、ここでは１つのディメンションについてだけ、したがって、単一のピクセル・ラインから到来する５ドット・ラインについてだけ考える。異なるカラーのノズル間の距離は、４〜８ドットである（Ｍｅｍｊｅｔ（メムジェット）パラメータに依存する）。そこで、１６ドットの離隔距離、あるいは両端を含めた１７ドットの離隔距離をもたらす８を仮定する。最悪シナリオは、１７ドット・ラインが、与えられたピクセル・ラインからの最後のドット・ラインを含むことである。これは、１、５、５、５、１として生成されたドット・ラインを伴う５ピクセル・ラインを意味し、ノズル分離を１０に増加させる。
【０２９２】
このバッファに対する書き込みを行う連続階調（ｃｏｎｔｏｎｅ）生成プロセスが、このバッファから読み出しを行うドット生成プロセスと干渉しないことを保証するために、ここでは各カラーに追加の１ラインをそれぞれ追加し、１カラー当たりを合計６ラインとしている。
【０２９３】
したがって、連続階調（ｃｏｎｔｏｎｅ）バッファは、それぞれ６ラインの３カラーであり、各ラインは１２８０の８ビット値を含む。必要なメモリは、合計で３×６×１２８０＝２３０４０バイト（２２．５キロバイト）になる。このメモリは、１サイクルごとの単一の８ビット読み出し、および２５サイクルごとの単一の８ビット書き込みだけを必要とする（各連続階調（ｃｏｎｔｏｎｅ）ピクセルは、２５回にわたって読み出される）。バッファ４の構成を図４５に示す。
【０２９４】
バッファ４は、プリントヘッドのドット生成プロセスの公称速度において動作する単一サイクル・ダブル・アクセス（読み出しおよび書き込み）ＲＡＭとして、あるいは１サイクル当たり単一の読み出しまたは書き込みアクセスのみを伴う４％だけ高速なＲＡＭとしてインプリメントすることができる。
【０２９５】
バッファ４は、プリント・プロセスを開始する前に、ホワイト（オール０）にセットされる。
【０２９６】
（１０．２．４  アップ補間、ハーフトーン、およびプリンタのためのリフォーマット）
セクション３．２．８、セクション３．２．９、およびセクション３．２．１０においては、それぞれアップ補間、ハーフトーン、およびプリンタのためのリフォーマット・タスク１１３が個別のタスクとして定義されていたが、これらはＰＣＰ  ３のハードウエア・インプリメンテーションにおいては単一プロセスとしてインプリメントされる。
【０２９７】
アップ補間、ハーフトーン、およびプリンタのためのリフォーマット・ユニット（ＵＨＲＵ）１１３に対する入力は、あらかじめ計算済みのＣＭＹの１２８０解像度（中間解像度）イメージを含む連続階調（ｃｏｎｔｏｎｅ）バッファ（バッファ４）１１７である。出力は、その後バッファ５  １１８を介してプリントヘッドに出力するためにＭｅｍｊｅｔ（メムジェット）インターフェース１５に渡される適正な順序に従った２４ビットの値のセットである。この２４ビットの出力は、一度に１ビットが生成され、バッファ５  １１８内の２４ビットのシフト・レジスタに送られる。
【０２９８】
このプロセスのコントロールは、ＭＪＩ  １５からのＡｄｖａｎｃｅ（アドバンス；前送り）信号およびＡｄｖａｎｃｅＬｉｎｅ（アドバンスライン；ライン送り）信号によってもたらされる。ＵＨＲＵ  １１３のスタート・アップ時、および各ＡｄｖａｎｃｅＬｉｎｅ（アドバンスライン；ライン送り）パルスの後に、２４ビットが生成され、ＳｈｉｆｔＷｒｉｔｅＥｎａｂｌｅ（シフトライトイネーブル）信号によってバッファ５内の２４ビットのシフト・レジスタにクロックされる。２４番目のビットがクロックされると、ＴｒａｎｓｆｅｒＷｒｉｔｅＥｎａｂｌｅ（トランスファライトイネーブル）パルスが与えられ、次の２４ビットが生成される。その後、ＵＨＲＵ  １１３は、ＭＪＩからのＡｄｖａｎｃｅ（アドバンス；前送り）パルスを待機する。Ａｄｖａｎｃｅ（アドバンス；前送り）パルスが到来すると、ＴｒａｎｓｆｅｒＷｒｉｔｅＥｎａｂｌｅ（トランスファライトイネーブル）パルスがバッファ５  １１８に与えられ、次の待機に入る前に、次の２４ビットが計算される。実際上は、最初のＡｄｖａｎｃｅ（アドバンス；前送り）パルスが与えられた後、同期が発生し、それ以降のＡｄｖａｎｃｅ（アドバンス；前送り）パルスが、その後の２４サイクルごとに発生する。
【０２９９】
図４６に、アップ補間、ハーフトーン、およびリフォーマット・プロセスを示す。
【０３００】
ハーフトーン・タスクは、８ビットの符号なしコンパレータ１２０によって行われる。このコンパレータの２つの入力は、スタガード・ディザ・セル１２１およびバッファ４  １１７である。これらの値が符号なしコンパレータ１２０に与えられる順序は、１２８０解像度のイメージがプリントヘッドによって要求されるセグメント指向順序と整合することを保証するアドレス・ジェネレータ状態マシン１２２によって決定される。したがってアドレス・ジェネレータ状態マシン１２２は、アップ補間およびプリンタのためのリフォーマット・タスクを受け持つ。高解像度において単純に、一度に全ラインのアクセスを行い、その後プリンタのルックアップ要件（セクション３．２．１０において説明済み）に従ってそのラインのリフォーマットを行うのではなく、リフォーマットは、連続階調（ｃｏｎｔｏｎｅ）バッファ（バッファ４）１１７の適切なアドレッシングによって達成され、そのアドレッシングは、コンパレータ１２０が、スタガ配置のアドレスに整合するディザ・セル１２１からの適切なルックアップを使用することを保証している。
【０３０１】
ハーフトーン・タスクは、セクション３．２．９において説明したものに同じである。しかしながら、ドット出力がプリントヘッド用の適正な順序に従って生成されることから、８００に均等に分けられるようにディザ・セル１２１のサイズが選択される。つまり、１つのセグメントに関するディザ・セル内の所定のポジションが、残り７個のセグメントに関して同じになる。５０×５０のディザ・セルは、満足の得られる結果をもたらす。セクション３．２．９において説明したように、各カラーについて同時に異なるラインが生成されるという事実から、ディザ・セル内の同一のポジションを異なるカラーに使用することができる。したがって、ディザ・セル内におけるアドレッシングは、極めてシンプルなものになる。ここで、スタガード・ディザ・セルの特定の行（たとえば行０）から開始する場合を考える。使用される最初のディザ・セルのエントリは、エントリ０である。このエントリを２４回（２４サイクル）にわたって使用し、全８セグメントの３つのカラーを生成した後、行０のエントリ１に進む。エントリ４９の後は、エントリ０に戻る。これを１９，２００サイクルすべてにわたって繰り返し、１９，２００ドットを生成する。その後、ハーフトーン・ユニットが停止し、ＡｄｖａｎｃｅＬｉｎｅ（アドバンスライン；ライン送り）パルスを待機し、それが到来するとアドレス・ジェネレータがディザ・セル内の次の行に進む。
【０３０２】
スタガード・ディザ・セル１２１は、通常のディザ・セルと異なり、奇数ラインおよび偶数ラインがスタガ配置されていることからそのように呼ばれる。これは、異なるライン上に奇数および偶数のピクセル（ピクセル０から開始）を生成するためであり、それによってアドレス・ジェネレータ１２２は、２４ピクセルの交番するセット上の次の行に進み、その後また戻るという処理を行わなくて済む。図２５は、単純化したディザ・セル９３を示しており、それを同一サイズのスタガード・ディザ・セル１２１にマップする方法を示している。ここでは、所定のポジションが「奇数であること」を判断できるように、所定の行内のピクセルに０、１、２、．．．の番号を付していることに注意されたい。
【０３０３】
バッファ４  １１７からの８ビット値は、スタガード・ディザ・セル１２１からの８ビットの値と比較（符号なしで）される。バッファ４のピクセル値の方が大きいか、それに等しいときには、バッファ５  １１８のシフト・レジスタに対して「１」のビットが出力される。それ以外の場合には、バッファ５のシフト・レジスタに対して「０」のビットが出力される。
【０３０４】
１９，２００個の連続階調（ｃｏｎｔｏｎｅ）ピクセルのハーフトーン処理を行うためには、１９，２００個の連続階調（ｃｏｎｔｏｎｅ）ピクセルを読み込まなければならない。アドレス・ジェネレータ・ユニット１２２がこのタスクを実行し、バッファ４  １１７内にアドレスを生成してアップ補間タスクを事実上インプリメントしている。バッファ４を読み出すためのアドレスの生成は、ディザ・セル用のアドレス生成より、わずかに複雑になるが、過度に複雑なものではない。
【０３０５】
バッファ４を読み出すためのアドレス・ジェネレータは、バッファ４の最初の行が書き込まれると開始する。バッファ４の残りの行は０であり、したがって事実上、それらはホワイト（プリントされるドットがない）になる。
【０３０６】
６つの有効出力ラインは、整数成分および小数成分を伴うレジスタを有している。このレジスタの整数部分は、読み出すバッファ・ラインを選択し、事実上、その特定のカラーの奇数および偶数ピクセルのアップ補間を行うために使用される。セグメント０内のカレント・ポジションを維持するために３個のピクセル・カウンタが使用され、残りの７個のセグメントへのオフセットを行うために単一の一時カウンタＰ＿ＡＤＲ（ピクセル・アドレス）が使用される。
【０３０７】
まとめると、バッファ４を読み出すためのアドレス・ジェネレータは、次の表２４に示すレジスタを必要とする。
【０３０８】
【表２７】
0004576084.tif 000031
【０３０９】
６つのバッファ・ライン・レジスタに関する初期値は、ノズル間の物理的なドット距離である（ここで小数成分が実質的に５による除算であることを思い出されたい）。たとえば、１つのカラーの奇数および偶数の出力ドットが１ドットの距離で離隔されている場合、１つのカラーのノズルは、次のカラーのノズルから８ドットだけ離隔されていることになり、初期値は、表２５の第１ラインの列に示すとおりとなる。１９，２００ドットの各セットが生成された後は、これらのカウンタを１小数成分だけインクリメントし、垂直ディメンション内において各ピクセルを５回にわたってサンプリングする事実を反映させる必要がある。結果の値は、表２５の第２ラインの列に示されるようになる。なお、６つのバッファ・ラインしか存在しないことから、５：４＋１＝０：０となることに注意されたい。
【０３１０】
【表２８】
0004576084.tif 000032
【０３１１】
６つのバッファ・ラインは、その後、所定のカラーの奇数または偶数ピクセルに関してバッファ・ラインのいずれが読み出されるべきかを決定する。バッファ４の特定のラインから読み出す１２８０中間解像度ピクセルを決定するため、ここでは、各カラーについて１個とする合計３個のピクセル・アドレス・カウンタ、および各セグメントへのインデクスに使用される単一の一時カウンタ（Ｐ＿ＡＤＲ）を用いている。それぞれのセグメントから次のセグメントまでは８００ドットの距離がある。中間解像度のピクセルにおいては、この距離が１６０になる。８００は、あまりを伴わずに５によって割ることができるため、３個のピクセル・アドレス・カウンタの整数部分だけを使用すればよいことになる。そこで、偶数のシアン・ピクセル用の８個のアドレスを生成し、次に偶数のマゼンタ用の８個のアドレスを生成し、最後に偶数のイエロ用の８個のアドレスを生成する。さらに奇数のシアン・ピクセル、奇数のマゼンタ・ピクセル、および奇数のイエロ・ピクセルについても同じことを行う。この２セットの２４ビットのプロセス、つまり２４の奇数および２４の偶数を、４００回にわたって実施する。その後は、ピクセル・アドレス・カウンタ（Ｘ＿Ｐ＿ＡＤＲ）を０にリセットし、６個のバッファ・ライン・レジスタを進めることができる。５ラインを進むごとに、次のバッファ・ラインが解放され、（ＣＭＹへの変換プロセスによる）更新の準備が整う。次の表２６は、単純な形でこれらのステップを示している。
【０３１２】
【表２９】
0004576084.tif 000033
【０３１３】
バッファ４  １１７のアドレスを生成するための疑似コードを次に示す。ただし、これは、ステップのシーケンス・セットとしてリストされていることに注意が必要である。アドレス生成の間における動作のパラレル性については、表２６に、より良好に現れている。
【０３１４】
【数４】
0004576084.tif 000034
【０３１５】
【数５】
0004576084.tif 000035
【０３１６】
（１０．２．５  バッファ３  １１６）
バッファ３は、単純な８ビットＲ、Ｇ、Ｂ値のセットである。これらのＲＧＢ値は、シャープニング・プロセス６５によってシャープニングが行われた後の中間解像度（１２８０解像度）のピクセルであり、ＣＭＹへの変換プロセス６６によって読み出される。
【０３１７】
バッファ３  １１６をダブル・バッファとする必要はない。これは、読み出し（ＣＭＹへの変換）プロセス６６が最初の３９サイクルの間にＲＧＢ値を必要とするだけであるのに対し、書き込み（シャープニング）プロセス６５は、実際にＲＧＢ値を更新する前に、４９サイクルを要するからである。
【０３１８】
（１０．２．６  ＣＭＹへの変換６６）
ＲＧＢからＣＭＹへの変換は、セクション３．２．７で説明したように、中間解像度空間（１２８０解像度）において行われる。
【０３１９】
この変換プロセスは、アップ補間‐ハーフトーンおよびリフォーマット・プロセス１１３に追随することができる充分に速いレートで連続階調（ｃｏｎｔｏｎｅ）バッファ（バッファ４）１１７のピクセルを生成できなければならない。各連続階調（ｃｏｎｔｏｎｅ）値が２５サイクルにわたって使用されることから（ｘおよびｙディメンションのそれぞれにおいて５回）、変換プロセスは、最大で２５サイクルを使うことができる。これは、３つのカラー成分のすべてについて見れば、合計７５サイクルとなる。
【０３２０】
ここで説明しているプロセスは、１つのカラー成分当たり１４サイクルしか必要とせず、３９サイクルの後に実際に拘束が解かれる入力ＲＧＢ値を用いる。このプロセスが、４９サイクルより多くの間にわたって入力ＲＧＢ値に対するアクセスを必要とするロジックを伴ってインプリメントされるとすれば、この時間の後にシャープニング・プロセス６５によってバッファが更新されることから、バッファ３  １１６がダブル‐バッファリングを必要とすることになる。
【０３２１】
この変換は３‐１次（ｔｒｉ−ｌｉｎｅａｒ）補間として行われる。変換プロセスには、３個の１７×１７×１７ルックアップ・テーブルが使用される：すなわち、ＲＧＢからシアン９０、ＲＧＢからマゼンタ９１、およびＲＧＢからイエロ９２である。しかしながら、各３‐１次（ｔｒｉ−ｌｉｎｅａｒ）補間を実行するための時間が２５サイクルあることから、高速の３‐１次（ｔｒｉ−ｌｉｎｅａｒ）補間ユニットを使用する必要はない。それに代えて、線形補間プロセス１３０に対する８つの呼び出しを行う方が、はるかに適切になる。
【０３２２】
ルックアップ・テーブル内へのインデクスのためのアドレス生成は単純である。ここでは、アドレスを生成するために、各８ビット・カラー成分の上位４ビットを使用し、変換テーブルから取り出した値の間の補正を行うために、各８ビット・カラー成分の下位４ビットを使用している。ルックアップ・テーブル内へのアドレッシングは、このルックアップ・テーブルが１６ではなく１７のディメンションを有しているという事実に起因して、１個の加算器が必要になる。好都合なことに、４ビットの数Ｘに１７を乗じると８ビットの数ＸＸとなり、したがって加算器ないしは乗算器が必要なくなり、また４ビットの数に１７２（２８９）を乗じることは、わずかに複雑化し、単一の加算を必要とする。
【０３２３】
補間をより高速に実行することは可能であるが、ここでは単一の加算器を使用してアドレスを生成するものとし、単一サイクル補間ユニットを備えている。結局、表２７に示すようにして、ＲＧＢから単一のカラー成分を生成するための補間を１４サイクル内に計算することができる。ただし、シアン、マゼンタ、およびイエロを生成するためには、このプロセスを３回にわたって繰り返す必要がある。さらに高速な方法も可能であるが、その必要がない。
【０３２４】
【表３０】
0004576084.tif 000036
【０３２５】
表２７に示したように、単一のＡＤＲレジスタおよび加算器を使用して、ルックアップ・テーブル内へのアドレス生成を行うことができる。中間結果は、６セットの８ビット・レジスタを使用して保持することができる−−２個のレジスタにルックアップ・テーブルからロードされる値を保持させ、４個のレジスタを補間ユニットからの出力に使用する。なお、線形補間ユニットに対する入力が、必ずペアの８ビット・レジスタＰ１／Ｐ２、Ｐ３／Ｐ４、およびＰ５／Ｐ６となることに注意が必要である。これを行って、意図的にレジスタ選択ロジックを縮小している。サイクル１４においては、「Ｖ」レジスタ１３１が最終的に計算された８ビットの値を保持する。その後は、この８ビットの結果を、次のサイクルの間に、バッファ４  １１７の適切なロケーションに書き込むことができる。
【０３２６】
ＣＭＹへの変換プロセス６６のブロック図を図４８に示した。
【０３２７】
ここでこのプロセスが、最初に実行されたときにシアンを生成し、結果のシアン連続階調（ｃｏｎｔｏｎｅ）ピクセルがシアンの１２８０解像度連続階調（ｃｏｎｔｏｎｅ）バッファ内にストアされると仮定する。再び同じＲＧＢ入力に対してこのプロセスが実行されると、マゼンタ・ピクセルが生成される。このマゼンタ連続階調（ｃｏｎｔｏｎｅ）ピクセルは、マゼンタ１２８０解像度連続階調（ｃｏｎｔｏｎｅ）バッファ内にストアされる。最後に、同一のＲＧＢ入力からイエロ連続階調（ｃｏｎｔｏｎｅ）ピクセルが生成されて、結果のイエロ・ピクセルがイエロ１２８０解像度連続階調（ｃｏｎｔｏｎｅ）バッファにストアされる）。
【０３２８】
連続階調（ｃｏｎｔｏｎｅ）バッファ（バッファ４）１１７に書き込むためのアドレス生成は単純である。単一のアドレス（およびそれに付随するＣｏｌｏｒＳｅｌｅｃｔ（カラーセレクト）ビット）が使用されて３個のカラー・バッファのそれぞれに対する書き込みが行われる。シアン・バッファに対してはサイクル１５において、マゼンタに対してはサイクル３０において、イエロに対してはサイクル４５において、それぞれ書き込みが行われる。ピクセル・アドレスは、７５サイクルごとに（３つのカラーに対する書き込みが完了した後）１だけインクリメントされる。書き込み先のラインは、５個のＡｄｖａｎｃｅＬｉｎｅ（アドバンスライン；ライン送り）パルスごとに１回のラップを伴ってインクリメントされる。つまり、書き込み先のラインの順序は、単純に０‐１‐２‐３‐４‐５‐０‐１‐２‐３‐．．．となる。このようにして、書き込み（２５×１２８０×３）と読み出し（１９２００×５）がバランスする。
【０３２９】
（１０．２．７  バッファ２  １１５）
バッファ２は、リサンプル‐輝度生成プロセス１１２からの出力を受け取り、それにおいては、所定のピクセル座標に関して完全なＲＧＢおよびＬピクセルが生成される。バッファ２  １１５からの出力は、シャープニング・プロセス６５に渡され、そこでは、シャープニングを行っているピクセルを中心とする３×３の輝度値のセット１３５が必要になる。
【０３３０】
したがって、シャープニング・プロセス６５の間においては、輝度値の３×３配列に対するアクセスをはじめ、中心輝度ピクセルに対応するＲＧＢ値１３６に対するアクセスが必要になる。同時に、次の３個の輝度値および対応する中心のＲＧＢ値が、リサンプル‐輝度生成プロセス１１２によって計算されなければならない。図４９に、バッファ２  １１５に対するアクセスの論理的な表現を示した。
【０３３１】
実際のバッファ２  １１５は、４×６（２４エントリ）の８ビットＲＡＭとして単純にインプリメントされ、読み出しおよび書き込みに関するアドレッシングが事実上の値のシフトを提供する。２ビットの列中心は、ラップを伴ってインクリメントして循環バッファを提供することが可能であり、事実上それがバッファ全体のデータに対する１つ分の列ポジションのシフトを行うことに等しい働きをインプリメントする。４番目の列のＲＧＢデータが不要であるという事実は無視されており、わずか３バイトを使用して、複雑なシフトおよび読み出し／書き込みロジックのインプリメンテーションの必要性を回避している。所定のサイクルにおいては、ＲＡＭに対する書き込み、もしくはそれからの読み出しを行うことができる。読み出しおよび書き込みプロセスは、７５サイクルを有しており、それ以内に完了すればプリントヘッドから遅れることはない。
【０３３２】
（１０．２．８  シャープニング）
シャープニング・ユニット６５は、セクション３．２．６において説明したシャープニング・タスクを実行する。シャープニング後のＲＧＢピクセルがバッファ３  １１６内にストアされることから、ＣＭＹへの変換プロセス６６よりシャープニング・ユニット６５が遅くなることはできず、このことは、７５サイクル内に完全なＲＧＢピクセルのシャープニングが行われなければならないことを意味する。
【０３３３】
シャープニング・プロセスは、３５ページ（ページ指定は原文に記載されたとおり）のセクション３．２．６．２の中で示した表１２に記載されているように、Ｌ（ＲＧＢデータから生成されたチャンネルであり、バッファ２にストアされている）のハイ・パス・フィルタリング、およびＲＧＢ成分に対するフィルタリング後のＬの加え戻しを伴う。使用されるハイ・パス・フィルタは、３×３のコンボリューション・カーネルを使用するハイ・パス・フィルタであり、図５０にそれを示す。
【０３３４】
このハイ・パス・フィルタの計算は、１０サイクルにわたって行われる。最初のサイクルは、一時レジスタ１４０に中心ピクセル値の８倍（中心ピクセル値が３ビット左にシフトされる）をロードする。続く８サイクルは、下限値を０として残りの８ピクセル値の減算を行う。このように、全体のプロシージャを１つの加算器によって達成することができる。サイクル１０は、この結果に対する定数１４１による乗算を伴う。この定数は１／９に代表されるが、レジスタに収められており、ソフトウエアを用いて、それを別のスケール・ファクタに変更することもできる。
【０３３５】
その後、結果の値がＲ、Ｇ、およびＢの値に（上限を２５５として）加算され、サイクル７２、７３、および７４の間にバッファ３に書き込まれる。７５サイクルのセットの最後の３サイクルの間においてシャープニング後のＲＧＢの計算／書き込みを行うことによって、バッファ３におけるダブル・バッファリングの必要性が取り除かれる。
【０３３６】
シャープニング・ユニットの構成を図５１に示した。
【０３３７】
バッファ２  １１５に接続された加算ユニット１４２は、下限値を０とする減算器である。ＴＭＰ  １４０には、（７５のうちの）サイクル０の間に８×最初のＬ値がロードされ、続く８個のＬ値がそこから引かれる。下限値が０であることから、結果は符号を持たない。
【０３３８】
１０番目のサイクル（サイクル９）の間に、ＴＭＰ  １４０内にある合計１１ビットに対してスケール・ファクタ（通常は１／９、ただしソフトウエア・コントロールの下におかれ、ファクタを調整することができる）による乗算が行われ、ＴＭＰ  １４０に書き戻される。結果からは８個の整数ビットだけがＴＭＰに書き戻され（小数は切り捨てられる）、その結果、乗算ユニットのからの値の上限が２５５になる。スケール・ファクタとして１／９を使用する場合には、このとき書き込まれる値の最大値は２２６（２５５×８／９）になる。スケール・ファクタは、８ビットの小数であり、ハイ・ビットが１／８を表す。可変スケール・ファクタを使用し、異なるプリント・フォーマットが、異なる量によるＣＦＡイメージをスケーリングした結果となるという事実（したがって、３×３コンボリューションがそれに対応したスケーリング結果をもたらす）を考慮することもできる。
【０３３９】
レッド、グリーン、およびブルーに関するシャープニング後の値は、サイクル７２、サイクル７３、およびサイクル７４の間に計算され、各サイクル当たり１回の書き込みでバッファ３  １１６のＲ、Ｇ、およびＢレジスタに書き込まれる。これらの３サイクルの間に行われる計算は、中心ピクセルに対応するバッファ２のＲ、Ｇ、およびＢに対するＴＭＰの単純な加算である。
【０３４０】
アドレス生成は単純である。バッファ３  １１６に対する書き込みは、単純に、サイクル７２においてＲ、サイクル７３おいてＧ、およびサイクル７４おいてＢとなる。バッファ２  １１５からの読み出しは、バッファ２の循環特性を利用している。このアドレスは、２ビットの列成分（４つの列のうちのいずれの列を読み出すかを表す）およびＬ１、Ｌ２、Ｌ３、Ｒ、Ｇ、またはＢを表す３ビットの値からなる。列番号は、ラインごとに１から開始し、７５サイクルごとにインクリメント（ラップを伴って）される。バッファ２を読み出す順序を表２８に示す。Ｃレジスタは、アドレスの、２ビットの列成分である。Ｃに関するすべての加算は、４を法とする（２ビットのラップ）。
【０３４１】
【表３１】
0004576084.tif 000037
【０３４２】
サイクル７４の後のＣレジスタは、次の計算のための列番号を保持しており、次のサイクル０の間におけるフェッチが有効になる。
【０３４３】
シャープニングは、バッファ２に対してＬおよびＲＧＢが不足なく書き込まれているとき（その結果ハイ・パス・フィルタが有効になる）、初めて開始することができる。したがって、バッファ２が３列先に進むまで、シャープニング・プロセスを機能停止しなければならない。
【０３４４】
（１０．２．９  バッファ１  １１４）
バッファ１は、ホワイト・バランスおよび範囲拡張済みのピクセルを、オリジナルの取り込み空間解像度において保持している。イメージＲＡＭのイメージ・ストレージ解像度が１ピクセルあたり８ビットであるのに対して、各ピクセルは、１０ビットのカラー解像度でストアされる。
【０３４５】
バッファ１は、３個の個別アドレッシングが可能なバッファとして構成されている−−すなわち、レッド・カラー平面用の１４５、グリーン・カラー平面用の１４６、およびブルー・カラー平面用の１４７である。これらのバッファの単純な外観を図５２に示す。
【０３４６】
７５サイクルの間に、リサンプリング・プロセス１１２によって３回にわたり、これら３つのバッファから１６のエントリが読み出され、これら３つのバッファに対して最大で２９の新しい値が書き込まれる（正確な数は、スケール・ファクタおよびリサンプリングの間におけるカレント・サブ‐ピクセル・ポジションに依存する）。
【０３４７】
これらのバッファは、読み出しおよび書き込みが互いに干渉することなく行われるように、充分に広くなければならない。読み出しプロセスの間は、６行のそれぞれから４個のピクセルが読み出される。スケール・ファクタが非常に大きい場合には（たとえば、最大でパノラマまでスケーリングすることができる）、同一入力ピクセルが複数回にわたって読み出されることがあり得る（リサンプリング用の異なるカーネル・ポジションが使用される）。しかしながら最終的には、続く次のピクセルが必要になる。それほど大きなスケーリングを行わないのであれば、次のピクセル生成サイクルの前に（つまり７５クロック・サイクル内に）新しいピクセルが必要になることもある。
【０３４８】
表９および表１１のスケール・ファクタを観察すると、スケーリングに関する最悪ケースは、パスポート・フォーマット３１である：
●  グリーン平面は、パスポート用のΔ値として１．５６２５を有しているが、これは６つのＣＦＡポジション内に４つのロケーションが含まれる可能性を示している。しかしながら、グリーン・サンプルの各行は、交番するピクセルしか保持していない。つまりこれは、１つの行当たり、４サンプルだけが必要とされることを意味する（最悪ケースの初期ポジションから、最悪ケースは３ではなく、４になる）。Ｙにおける移動は、追加のサンプル列を必要とし、それが５をもたらす。最後には、書き込みのために追加のサンプル列が必要になる。これは、行当たり合計で６個のサンプルとなる。単一のサンプルに７行が必要である。各ｘポジションについて３セットのＲＧＢピクセルを生成するためには、ｙにおける最大の移動が４行になる（３．１２５＝２×１．５６２５）。Ｘにおける移動は、上下に１サンプル行を追加する。結局、合計で１３行が必要になる。より詳細については、セクション１０．２．１０を参照されたい。
●  レッドおよびブルー平面は、パスポート用のΔ値として０．７８１２５を有しており、これは４サンプル内に４ロケーションが含まれ得ることを示している。残り４の読み出しが行われている間に、書き込みのための追加のサンプルが要求される。これにより、１行当たりの合計が５サンプルになり、さらにグリーン平面と整合させるために６に増加される（スタート・アップを目的とする）。ｙにおける移動に関しては、６行を考慮する必要がある。より詳細については、セクション１０．２．１０を参照されたい。
【０３４９】
各サブ‐バッファは、１サイクル当たり単一の１０ビットのサンプルを読み出し、あるいは書き込むデコーディングを伴ったＲＡＭとしてインプリメントされる。これらのサブ‐バッファについての要約を次の表２９に示すが、２００バイトまでは消費しない。
【０３５０】
【表３２】
0004576084.tif 000038
【０３５１】
（１０．２．１０  リサンプリングおよび輝度チャンネルの生成）
リサンプルおよび輝度チャンネル生成プロセス１１２は、２８ページ（ページ指定は原文に記載されたとおり）のセクション３．２．５において説明したように、ホワイト・バランスおよび範囲拡張後のＲ、Ｇ、およびＢの平面イメージに対する適切なリサンプリングを行うことによって中間解像度空間におけるＲＧＢピクセルの生成を行う。それに加えて、所定のＲＧＢピクセルに関する輝度値をはじめ、そのピクセルの上および下のＲＧＢピクセルに関する輝度値を、その後のシャープニング・プロセスのために生成しなければならない。
【０３５２】
ＲＧＢ値および３個のＬ値の生成に割り当てられた時間は、７５サイクルである。Ｌが、与えられたピクセル・ロケーションに関するＲ、Ｇ、およびＢの最小値と最大値の単なる平均であると仮定すると（セクション３．２．６．１参照）、３ピクセル座標に関するＲＧＢ値を実質的に生成しなければならない−−つまり、注目ピクセル、および上ならびに下のピクセルである。したがって、７５サイクルの間に、３個の中間解像度ＲＧＢサンプルおよびそれらに対応するＬ値を生成することになる。
【０３５３】
Ｌ値をバッファし（したがってＲＧＢ値をバッファし）再計算を回避することは、非常に多くのメモリを必要とすることになり、いずれにしてもＲＧＢ値を生成する時間は充分にある。一方、バッファ４  １１７が、中間解像度ピクセルを含んでいるが、それが保持しているピクセルは（シャープニング前のＲＧＢ値ではなく）シャープニング後のＣＭＹピクセルであることから、それを使用することはできない。
【０３５４】
（１０．２．１０．１  リサンプリング）
リサンプリング・プロセスは、３セットのＲＧＢ生成と考えることが可能であり、そのそれぞれが、２５サイクルの間に完了しなければならない（合計の最大経過時間が７５サイクルとなるため）。一方、単一のＲＧＢ値を生成するプロセスは、パラレルに実行される３つのプロセスと考えることができる：Ｒの計算、Ｇの計算、およびＢの計算であり、すべて中間解像度における所定のピクセル座標に関する。これらの値のそれぞれの生成に関する理論については、セクション３．２．５に説明されているが、結論は、事実上３個のイメージ再構成フィルタの動作であり、そのそれぞれが、イメージの各チャンネルに対して動作する。ＰＣＰの場合であれば、５個のサンプル・ポイントを用いたイメージの再構成が行われ、コンボリューション・カーネル内に４個の係数が必要になる（１つの係数が常に０となることから、したがってそのサンプル・ポイントも必要なくなる）。
【０３５５】
結局、中間解像度のＲピクセルの計算は、Ｒデータ上においてイメージ再構成フィルタを動作させることによって達成される。中間解像度のＧピクセルの計算は、Ｇデータ上においてイメージ再構成フィルタを動作させることによって達成され、中間解像度のＢピクセルの計算は、Ｂデータ上においてイメージ再構成フィルタを動作させることによって達成される。カーネルはｘおよびｙに関して対称であるが、各カラー平面に関してそれらは同一でない。ＲおよびＢについては、類似のイメージ特性に起因して同一のカーネルになる傾向にあるが、Ｇ平面については、イメージ再構成に回転が必要になることから、異なるカーネルを用意しなければならない。このプロセスのハイ・レベルの概要を図５３に示す。なお、アドレス生成については示していない。
【０３５６】
リサンプリング・プロセスは、生成が行われているカレント・ピクセル・ラインに関して充分なピクセルがバッファ１にあるときに限って開始することができる。これは、バッファ１  １１４内のカラー平面のそれぞれに対する４列のデータの書き込みが完了している場合に該当する。リサンプリング・プロセス１１２は、その時点まで機能停止しなければならない。
【０３５７】
所定のカラー平面の中間解像度ピクセル値を計算するために、２５サイクルを使用することができる。カーネルを４×４のサンプル・エリアに適用するために、４個の入力サンプルの４行のそれぞれ上に１Ｄカーネル（ｘによってインデクスされる）を適用する。続いて、結果として得られる４個のピクセル値に対して１Ｄカーネル（ｙによってインデクスされる）を適用する。最終的な結果は、リサンプリング後のピクセルになる。各サイクルにおいて単一の係数を適用することは、４つの中間値の生成に合計で１６サイクルを、最終的なピクセル値の生成に４サイクルをそれぞれ使用することになり、合計が２０サイクルになる。
【０３５８】
精度に関して述べれば、入力ピクセルがそれぞれ１０ビット（８：２）であり、カーネル係数が１２ビットである。４ステップのカーネルの適用のそれぞれの間においては１４ビット（８：６）の精度が維持されているが、結果は１０ビット（８：２）しか保存されない。このようにｘおよびｙのコンボリューションを行うとき、同一のコンボリューション・エンジンを使用することができる。最終的な出力、つまりＲ、Ｇ、またはＢは８ビットになる。
【０３５９】
リサンプリング・プロセスの心臓部は、図５４に示されるように、コンボリューション・ユニット１５０である。
【０３６０】
このように、リサンプリングのプロセスは２０サイクルを伴い、表３０はそれを示している。ただし、「行１，ピクセル１」等は、バッファ１  １１４からの入力を参照しており、アドレス・メカニズム（次を参照）により処理されなければならない。
【０３６１】
【表３３】
0004576084.tif 000039
【０３６２】
（１０．２．１０．２  Ｌの生成８−）
セクション３．２．６．１において説明したように、続くシャープニング・プロセスのために、ＲＧＢからＬへの変換８０を行わなければならない。ここでは、Ｌが知覚的に均一であるＣＩＥ  １９７６  Ｌ＊ａ＊ｂ＊カラー空間を考える。ＲＧＢからＬ（輝度チャンネル）への変換を行うために、次のようにしてＲ、Ｇ、およびＢの最大と最小を平均する。
Ｌ＝｛ＭＩＮ（Ｒ，Ｇ，Ｂ）＋ＭＡＸ（Ｒ，Ｇ，Ｂ）｝／２
【０３６３】
所定ピクセルのＲ、Ｇ、およびＢ値の生成は、パラレルに行われ、２０サイクルを消費する。Ｌの生成のための合計時間は、ここで述べるように４サイクルである。これにより、１つのＲＧＢＬピクセルのセットを生成するための合計時間が２４サイクルとなり、（このプロセスが２５サイクル内に完了しなければならないことから）１サイクルが予備として残される。
【０３６４】
したがって、Ｌに関する値は、安全に２５番目のサイクルにおいて、バッファ２  １１５に書き込まれる。アドレス生成については、この後に説明する。
【０３６５】
単一の８ビット・コンパレータを使用して、３サイクル内に３ビットを生成することが可能であり、続いてそれを使用して、次の表３１に示すように、加算器に対する２つの入力を選択することができる。２による除算は、単純に加算器の中に組み込むことができる。
【０３６６】
【表３４】
0004576084.tif 000040
【０３６７】
この加算が、単なる最大値と最小値の加算であることから、順序は重要でない。つまり、加算器の２つの入力のうち、入力１をＲおよびＧの中から選択し、入力２をＧおよびＢの中から選択すればよい。このロジックは、表３１からの適切なビット・パターンの最小化である。
【０３６８】
（１０．２．１０．３  バッファ２に関するアドレス生成）
リサンプラからの出力は、単一のＲＧＢピクセル、および当該ＲＧＢピクセルを中心に垂直に並ぶ３個の輝度（Ｌ）ピクセルである。これらの３個のＬ値は、各２５サイクルに１個の割合でバッファ２に書き込むことができる。Ｒ、Ｇ、およびＢの値は、生成される２番目のピクセルが中心ピクセルであり、そのＲＧＢ値が維持されなければならないことから、サイクル４５の後であり、かつサイクル５０の前に書き込まれなければならない。バッファ２のアドレスは、２ビットの列成分（４列のいずれに対して書き込みが行われるかを表す）、およびＬ１、Ｌ２、Ｌ３、Ｒ、Ｇ、またはＢのいずれかを表す３ビットの値から構成される。列番号は、ラインごとに０から開始し、７５サイクルごとに（つまり、Ｌ３の書き込み後に）インクリメント（ラップを伴って）される。
【０３６９】
（１０．２．１０．４  カーネル・ルックアップに関するアドレス生成）
カーネル・アドレスの計算方法は、２８ページ（ページ指定は原文に記載されたとおり）のセクション３．２．５の最後に説明したものに同じである。各カーネルは１次元であり、テーブル内に６４のエントリを有する。カレント・カーネル空間内の小数成分の最上位６ビット（切り捨て）が、カーネル係数テーブルへのインデクスに使用される。最初の１６サイクルについては、カーネルのインデクスにＸ座標が使用され、次の４サイクルにおいては、Ｙ座標が使用される。カーネルは対称性があることから、ＸおよびＹの両方に同一のカーネルを使用することができる。
【０３７０】
１２８０個のリサンプリングされた値のそれぞれについて、３つのピクセルを生成しなければならない−−注目ピクセル１６１、およびそのピクセルの上側ピクセル１６０ならびに下側ピクセル１６２である。中心ピクセルを生成し、その後その中心ピクセルから上および下に移動することに代えて、ここではピクセル１６０を生成し、続いてその下側の２個のピクセル１６１および１６２を生成している。このとき生成される２番目のピクセル１６１を、中心ピクセルと考えることができる。その後、オリジナルの行に戻り、次の出力ポジションにおける次の３個のピクセルを生成する。この方法に従って、図５５に示すように、１２８０個のポジションのそれぞれについて、３つのピクセルを生成している。
【０３７１】
このようにして、カーネル空間内におけるカレント・ポジションを求める。オリジナルの入力空間におけるＸまたはＹの次のピクセルに進むときには、これらのカーネル座標に対して適切なデルタ値を加算する。ここで図５６を参照すると、回転された入力空間および回転されていない入力空間に関する２つの場合があることがわかる。
【０３７２】
ＸおよびＹ内の移動をΔＸおよびΔＹとして考えるが、それらの値はプリント・フォーマットに、したがってｍｐｓに依存する（セクション３．２．５参照）。グリーン・チャンネルについては、ΔＸ＝ΔＹ＝１／２ｍｐｓである。レッドおよびブルー・チャンネルについては、ΔＸ＝１／ｍｐｓかつΔＹ＝０である。これらΔＸおよびΔＹの適切な値については、表９および表１１を参照されたい。
【０３７３】
これにより、カーネルの中の移動にΔＸおよびΔＹの値を適用することができる。すなわち、Ｘ内を進むのであれば、ΔＸをＸに加え、ΔＹをＹから減じる。回転が行われていない場合、これは単にＹから０を減ずることになる。同様にＹ内を進むのであれば、ΔＹをＸに加え、ΔＸをＹから減じる。ＸおよびＹ内における移動に９０度の差があることからこれを行うことが可能になる。
【０３７４】
カーネル・ルックアップのためのアドレス生成はソフトウエアによってセットされる開始ポジション、およびカーネル空間におけるＹ内の移動に関する２つのデルタ、すなわちΔＸおよびΔＹを仮定する。アドレス生成ロジックを次に疑似コードを用いて示す。
【０３７５】
【数６】
0004576084.tif 000041
【０３７６】
この疑似コードに示されるように、３個のピクセルの生成が１２８０回にわたって生じている。各ピクセルの生成には２つの加算が関連付けされており、それ自体は、２５サイクルのタスク「ＧｅｎｅｒａｔｅＰｉｘｅｌ（ジェネレートピクセル）」が進行する間に実行することができる。各「ＧｅｎｅｒａｔｅＰｉｘｅｌ（ジェネレートピクセル）」タスクは、２５サイクルであり、「ＫｅｒｎｅｌＹ（カーネルＹ）」（係数０，１，２，３）を介してカーネルをインデクスする４サイクルが後に続く「ＫｅｒｎｅｌＸ（カーネルＸ）」（係数０，１，２，３）を介してカーネルをインデクスする４サイクルからなる４セット、およびそれに続く９サイクルの待機を含む。
【０３７７】
ここで、すべての値が正の小数のみであることに注意する必要がある。ＸおよびＹのカーネル値の更新からの２個のキャリー・アウトは、バッファ１のアドレス生成に向けて出力される（後述する７１ページ（ページ指定は原文に記載されたとおり）のセクション１０．２．１０．５を参照されたい）。これらのキャリー・アウト・フラグは、単純に数学的オペレーションの間に、カーネルに関する特定の縦座標（ｏｒｄｉｎａｔｅ）のラップがあったか否かを示す。ラップは、１より上、または０より下のいずれかとすることができるが、結果は必ず正とする。
【０３７８】
２個のキャリー・アウト・ビットは、イメージからの相対入力ラインの決定に使用するために回転／ホワイト・バランス／範囲拡張ユニットに向けても出力される。
【０３７９】
（１０．２．１０．５  バッファ１に関するアドレス生成）
リサンプラ１１２は、３個の個別アドレッシングが可能なバッファ１４５、１４６、および１４７、すなわち各カラー平面用に１つのバッファを備えるバッファ１  １１４から読み出しを行う。各バッファは、各サイクルの間に、そこからの読み出し、もしくはそこへの書き込みのいずれかを行うことができる。
【０３８０】
Ｌ＝｛ＭＩＮ（Ｒ，Ｇ，Ｂ）＋ＭＡＸ（Ｒ，Ｇ，Ｂ）｝／２
【０３８１】
７５サイクルの読み出しプロセスは、３セットの２５サイクルに分けられ、２５サイクルからなる１セットが、各ピクセルの生成に当てられる。２５サイクルのセットは、それぞれバッファ１からの１６回の読み出し、およびそれに続くアクセスを伴わない９サイクルを含む。バッファ１は、この９サイクルの間に書き込まれる。バッファ１  １１４からの１６の読み出しは、事実上、４の読み出しを１セットにした４セットであり、各カラー平面に関するカーネルの、４の読み出しを１グループにした４グループに符合する。
【０３８２】
したがって、アドレス生成は、最初のピクセルを計算するための１６個のアドレス生成（９サイクルの待機が続く）、２番目のピクセルを計算するための１６個のアドレス生成（９サイクルの待機が続く）、および最後の３番目のピクセルを計算するための１６個のアドレス生成（９サイクルの待機が続く）を包含することになる。
【０３８３】
各カラー平面は、それ自体の開始バッファ１アドレス・パラメータを有する。３セットの１６個のアドレスが、ラインに沿った１２８０個のポジションのそれぞれに関して生成されるとき、およびサンプラが１２８０サンプルの１つのラインから次のラインに進むとき、カーネル・アドレス生成ユニットからの２個のキャリー・アウト・ビットが使用されて、これらのバッファ１アドレス・パラメータが更新される。
【０３８４】
（１０．２．１０．６  グリーン・バッファ１４６）
バッファ１  １１４内のグリーン・サブ‐バッファ１４６に関するアドレス生成は、次に示す２つの主な理由から、レッド・サブ‐バッファ１４５およびブルー・サブ‐バッファ１４７に比べてより複雑なものとなる。
●  グリーン・チャンネルは、ＣＦＡ内において市松模様パターンを示す。交番するラインが、奇数または偶数のピクセルのみから構成される。グリーン・チャンネルのリサンプリングを行うためには、事実上、このチャンネルに対する４５度の回転を行わなければならない。
●  グリーン・ピクセルは、レッドまたはブルーのピクセルの数の２倍ある。リサンプリングは、同じ量の時間内により多くのサンプルを読み取ることを意味する−−中間解像度空間内には、各ピクセルを生成するために読み取られる１６個のサンプルが存在するが、各回にバッファを進める尤度が高くなる。正確な尤度は、使用されるスケール・ファクタに依存する。
【０３８５】
しかしながら、循環バッファとしてＲＡＭを使用する同じコンセプトが、グリーン・チャンネルにも使用される。グリーン・サブ‐バッファは、７８エントリのＲＡＭであり、各行が６個のエントリを含む１３行からなる論理配列を伴う。ＲＡＭアドレスと論理ポジションの間における関係を図５７に示す。
【０３８６】
バッファ１  １４６内のサンプルは、ＣＦＡにおける市松模様パターンを表す。つまり、１つの行（たとえば、アドレス０、１３、２６、３９、５２、６５）内のサンプルは、全イメージ内のカレント・ラインに応じて奇数または偶数ピクセルとなり、それは、イメージが９０度の回転を受けているか否かによらない。これを図５８に例示する。
【０３８７】
したがって、４×４のサンプリング・エリアをバッファ上にマップするとき、サンプルの解釈に関して２つの可能性が存在する。その結果、カレント・ラインが奇数または偶数のいずれのピクセルによって表されているかに依存する２つのタイプのアドレッシングが存在することになる。これは、回転が０のイメージの偶数行は、９０度の回転を受けたイメージの奇数行と同じアドレスを有することを意味し、それはいずれのイメージも奇数ピクセルを保持していることによる。同様に、回転が０のイメージの奇数行は、９０度の回転を受けたイメージの偶数行と同じアドレスを有し、それがいずれも偶数ピクセルを保持していることによる。判定を表３２にまとめた。
【０３８８】
【表３５】
0004576084.tif 000042
【０３８９】
４×４のウインドウは、事実上、バッファに４５度の回転を与える手段である。４５度の回転は、セクション３．２．５において説明したように、効果的なリサンプリングを行う上で欠くことができない。
【０３９０】
ここで単一のリサンプリングだけが必要となっている瞬間を仮定し、図５９に示されるような２つのタイプの４×４サンプリング・ウインドウを調べることによって、バッファのアドレッシングについて考察してみる。
【０３９１】
２つの４×４サンプリングのタイプは類似して見えるが、平面イメージ内に４×４マッピングを表す方法から差が生じている。図６０は、グリーン・サブ‐バッファに対する、タイプ１の４×４サンプリングのマッピングを示している。ここには、トップの７行（row）および右端の４列（column）のみが示されているが、これは、４×４のサンプル・エリアが、完全にこのエリア内に含まれることによる。
【０３９２】
サンプル行に対するバッファ・ピクセルのマッピングは、タイプ２のサンプリング・プロセスについても非常に類似したものとなり、それを図６１に示す。
【０３９３】
１６サンプルの、タイプ１およびタイプ２のアドレッシングのいずれにおいても、行を処理する２つの方法が存在する。タイプ１アドレッシングの行１および３の処理は、タイプ２アドレッシングの行２および３の処理と（相対的な意味において）同じである。同様に、タイプ１の行２および４の処理は、タイプ２の行１および３の処理と（相対的な意味において）同じである。ここでは、これらの行アドレッシング方法を、図６２に示すようにタイプＡ  １７０およびタイプＢ  １７１を呼ぶことにする。
【０３９４】
４×４ウインドウに関する開始ポジション（ＷｉｎｄｏｗＳｔａｒｔＡｄｒ（ウインドウスタートアドレス））および開始するタイプ（ＷｉｎｄｏｗＳｔａｒｔＴｙｐｅ（ウインドウスタートタイプ））が与えられれば、（２セットの４サンプルをトラバースするための）８エントリのテーブルを用いて１６のサンプルに関するアドレスを生成することができる。最初のサンプル値を読み出すとき、テーブルからのオフセットを加算すれば、次のサンプル・ポジションに到達する。このオフセットは、タイプ（Ａ，Ｂ＝０，１）に依存する。４番目のサンプルからのオフセットは、次のラインに関する最初のサンプル・ポイントに到達するために必要な量となる（かつ、サンプル列の番号を考慮しなければならない）。４個のサンプルの各行を生成した後、タイプＡとタイプＢの間の交換を行う。次に、単一の１６サンプルのセットに関するアドレスを生成するためのロジックを疑似コードの形で示す。循環バッファについては、法を７８とする加算を考慮する。
【０３９５】
【数７】
0004576084.tif 000043
【０３９６】
ルックアップ・テーブルは８個のエントリからなる−−すなわち、タイプＡ  １７０用の４個およびタイプＢ  １７１用の４個であり、オフセット生成をアドレスする。オフセットは、すべてカレント・サンプル・ポジション（Ａｄｒ）に対して相対的になされる。
【０３９７】
【表３６】
0004576084.tif 000044
【０３９８】
１６回の読み出しのエンドにおいて、ＴｙｐｅＡＢ（タイプＡＢ）ビットはオリジナルの値（ＷｉｎｄｏｗＳｔａｒｔＴｙｐｅ（ウインドウスタートタイプ）からロードされる）に等しくなる。
【０３９９】
１６サンプルの単一セットの読み出しは充分ではない。３セットの１６サンプルを読み出さなければならない（回転されていない入力空間におけるＹ内の３個の異なるポジションを表す）。最初および２番目のセットの１６サンプルのエンドにおいて、カーネル・ポジションが、カーネル・アドレス・ジェネレータによって更新される。この更新からのキャリー・ビットが使用されて、次の１６サンプルのセットのためのウインドウがセットされる。２つのキャリー・ビットは、オフセットおよび１ビット・フラグを含むテーブル内をインデクスする。このオフセットはＷｉｎｄｏｗＳｔａｒｔＡｄｒ（ウインドウスタートアドレス）に加算され、フラグは、ＷｉｎｄｏｗＳｔａｒｔＴｙｐｅ（ウインドウスタートタイプ）を反転するか否かの判断に使用される。テーブルに関する値を次の表３４に示す。
【０４００】
【表３７】
0004576084.tif 000045
【０４０１】
１６サンプルのセットの、３番目のセットのエンドにおいては、回転されていない入力空間におけるＸ内の進みを補償するために、カーネル・ポジションが更新される。このとき、異なる移動方向が生成され、そのために異なるＯｆｆｓｅｔ／ＴｙｐｅＡＢ（オフセット／タイプＡＢ）修正テーブルが使用される。これらのオフセットをカレントＷｉｎｄｏｗＳｔａｒｔＡｄｒ（ウインドウスタートアドレス）に加算することはできず、これは、移動を開始しようとしているところから離れたＹ内の移動の２つ分だけ離れたポジションをそれが表していることによる。そのため、ＷｉｎｄｏｗＳｔａｒｔＡｄｒ（ウインドウスタートアドレス）およびＷｉｎｄｏｗＳｔａｒｔＴｙｐｅ（ウインドウスタートタイプ）を別の変数のセットからロードする：すなわち、１２８０のカレント・ライン内の最初のエントリを表すＴｏｐＳｔａｒｔＡｄｒ（トップスタートアドレス）およびＴｏｐＳｔａｒｔＡｄｒ（トップスタートアドレス）である。カーネル・アドレス・ジェネレータからの２個のキャリー・アウト・フラグは、表３５のルックアップに使用され、ＴｏｐＳｔａｒｔＡｄｒ（トップスタートアドレス）に加算するオフセットおよびＴｏｐＳｔａｒｔＴｙｐｅ（トップスタートタイプ）を反転するか否かが決定される。前述同様に、加算は７８（グリーンＲＡＭのサイズ）を法とする。この結果を、次の１６サンプルのセットを３セット生成するために使用するＷｉｎｄｏｗＳｔａｒｔＡｄｒ（ウインドウスタートアドレス）およびＷｉｎｄｏｗＳｔａｒｔＴｙｐｅ（ウインドウスタートタイプ）にコピーする。
【０４０２】
【表３８】
0004576084.tif 000046
【０４０３】
１６サンプルを１セットとし、その３セットを１セットとした１２８０セット処理した後は、次の１２８０のラインを開始する。しかしながら、次のライン内のポジション０に関する最初のサンプルのアドレスを決定しなければならない。サンプルが、常にバッファ１内の適正な場所にロードされることから、バッファ１内の正確に同一のポジションから開始することができる（つまり、ＴｏｐＳｔａｒｔＡｄｒ（トップスタートアドレス）を一定のＰｏｓｉｔｉｏｎ０Ａｄｒ（ポジション０アドレス）からロードすることができる）。ところが、進んだ量に応じてタイプが異なることから、ここで処理するタイプについて考えなければならない。そこで、初期Ｐｏｓｉｔｉｏｎ０Ｔｙｐｅ（ポジション０タイプ）を備え、カーネル・アドレス・ジェネレータからのキャリー・アウト・フラグに応じてそれを更新する必要が生じる。回転されていないＹ入力空間内を移動していることから、使用されるロジックはＷｉｎｄｏｗＳｔａｒｔＴｙｐｅ（ウインドウスタートタイプ）の更新に関するものと同一になるが、Ｐｏｓｉｔｉｏｎ０Ｔｙｐｅ（ポジション０タイプ）に対してそれが行われる点が異なる。Ｐｏｓｉｔｉｏｎ０Ｔｙｐｅ（ポジション０タイプ）に関する新しい値はＴｏｐＳｔａｒｔＴｙｐｅ（トップスタートタイプ）にコピーされ、ＷｉｎｄｏｗＳｔａｒｔＡｄｒ（ウインドウスタートアドレス）を用いた新しいラインの最初のポジションのサンプリングが開始される。
【０４０４】
所定の１２８０ポジションのラインに関するサンプリング・プロセスは、バッファ１内に充分なエントリが得られるまで開始することはできず、それらは回転／ホワイト・バランス／範囲拡張ユニットによって配置される。これは、新しいラインの開始後の１２８サイクルで生じる（セクション１０．２．１１参照）。
【０４０５】
（１０．２．１０．７  レッドおよびブルー・バッファ）
バッファ１のレッド・サブ‐バッファ１４５およびブルー・サブ‐バッファ１４７は、循環バッファとしてアクセスされる単なる２つのＲＡＭである。各バッファは３０バイトであるが、それぞれが６個のエントリを含む６行からなる論理的な配列を有する。ＲＡＭアドレスと論理的なポジションの間における関係を図６３に示した。
【０４０６】
レッドおよびブルーについては、読み出しを行う最初の１６サンプルが、常にトップの４×４エントリになる。この段階においては、サンプルの残りの２列に対する読み出しアルゴリズムによるアクセスがない。
【０４０７】
最初の１６サンプルに関するアドレス生成は、単純に開始ポジション（この場合は０）に続く、３６を法とする１６ステップの加算になり、次に疑似コードの形でそれを示す。
【０４０８】
【数８】
0004576084.tif 000047
【０４０９】
このアドレス生成メカニズムは、グリーン・チャンネルと異なる。しかしながら、２つの異なるアドレッシング・メカニズムをデザインするのではなく、単にテーブル内において異なる値を使用すれば、グリーン・チャンネルのアドレッシング・スキームをレッド・チャンネルおよびブルー・チャンネルに適用することが可能である。これはデザイン上の複雑性を抑える。つまり、唯一の相違は、７８を法とする加算に代えて３６を法とする加算を使用することである。この条件は、簡単なマルチプレクサによって満たすことができる。
【０４１０】
グリーンに関する各種のアドレス生成テーブルを観察し、それらがレッドおよびブルーに適用される場合について考えると、レッドおよびブルーのチャンネルは、いずれも４５度の回転が必要ないことから、タイプに関する要件が不要であることは明らかである。したがって、タイプ値を安全に無視することが可能になり、表３６に示されるように、表３３のレッド／ブルー等価は、同一の４エントリのセットを２つ有することになる。
【０４１１】
【表３９】
0004576084.tif 000048
【０４１２】
グリーンのアドレス生成の場合と同様に、１２８０の次のエントリに進む前に、Ｙ内を２回移動する。レッドおよびブルーについては、カーネル空間内における移動と、入力空間における移動の間にスケーリングが存在しない。また回転も存在しない。Ｙ内を移動するときには、ＫｅｒｎｅｌＸ（カーネルＸ）にΔＹとして０を加算する（ページ６９（ページ指定は原文に記載されたとおり）のセクション１０．２．１０．４にあるカーネル・アドレスの生成に関する説明を参照されたい）。この結果、ＫｅｒｎｅｌＸ（カーネルＸ）からのキャリー・アウトがセットされることはなくなる。表３４を観察すると、ＫｅｒｎｅｌＸ（カーネルＸ）／ＫｅｒｎｅｌＹ（カーネルＹ）の、発生の可能性のある組み合わせは、００または０１だけである。００の場合は、グリーンの解において、ＷｉｎｄｏｗＳｔａｒｔＡｄｒ（ウインドウスタートアドレス）およびＷｉｎｄｏｗＳｔａｒｔＴｙｐｅ（ウインドウスタートタイプ）のいずれにも変化がもたらされてなく、そのことはレッドおよびブルーについても当てはまる。０１の場合には、ＷｉｎｄｏｗＳｔａｒｔＡｄｒ（ウインドウスタートアドレス）に１を加算し、ＷｉｎｄｏｗＳｔａｒｔＴｙｐｅ（ウインドウスタートタイプ）は無視すればよい。このように、グリーンの値を、レッドおよびブルー用に安全に使用することができる。最悪ケースは、いずれの回においてもアドレスが１つ進む場合であり、図６５に示されるようなオーバーラップする最悪ケースがもたらされる。
【０４１３】
１６サンプルのセットの、３番目のセットのエンドにおいては、ＴｏｐＳｔａｒｔＡｄｒ（トップスタートアドレス）およびＴｏｐＳｔａｒｔＴｙｐｅ（トップスタートタイプ）が更新されなければならない。今回はＸ内を移動（かつΔＹ＝０をＫｅｒｎｅｌＹ（カーネルＹ）に加算）していることから、ＫｅｒｎｅｌＹ（カーネルＹ）からのキャリー・アウトは常に０になる。表３５のレッド／ブルー等価を次の表３７に示す。なお、レッドまたはブルーについては、「タイプ」が重要でないことから、「タイプ」列がなくなっていることに注意する必要がある。
【０４１４】
【表４０】
0004576084.tif 000049
【０４１５】
３ピクセルを１セットとする１２８０セットのラインの１つから次に進むプロセスは、グリーンと同じである。Ｐｏｓｉｔｉｏｎ０Ａｄｒ（ポジション０アドレス）は、与えられたラインに関する１６サンプルのセットの最初のセットと同じになり（レッドおよびブルーについてはＰｏｓｉｔｉｏｎ０Ａｄｒ（ポジション０アドレス）＝０）、「タイプ」は無関係になる。ただし次のラインの生成は、バッファ１内に充分なサンプルが存在するようになるまでは開始することができない。レッドおよびブルーの生成は、グリーンと同時に開始する必要があるが、新しいラインの開始後の１２８サイクルまでは、それを開始することができない（セクション１０．２．１１参照）。
【０４１６】
（１０．２．１１  回転、ホワイト・バランス、および範囲拡張１１１）
イメージＲＡＭ  １１からバッファ１  １１４にロードを行う実際のタスクは、セクション３．２．３およびセクション３．２．４において説明したように、回転、ホワイト・バランス、および範囲拡張のステップ１１１を伴う。バッファ１へのピクセルは、リサンプリング・プロセス１１２によるそれらの使用に充分な速さで生成されなければならない。これは、７５サイクルからなる単一のグループの間に、このユニットが、６個のレッド・ピクセル、６個のブルー・ピクセル、および１３個のグリーン・ピクセルを読み出し、処理し、かつストアできなければならないことを意味する。
【０４１７】
オプションの回転ステップは、適切な順序に従ってピクセルを読み出すことによって保証される。イメージ・ストア内の適切な平面から所定のピクセルが読み出された後は、それに対して、セクション３．２．４に定義されているホワイト・バランス、および範囲拡張計算に従った調整を行わなければならない。このプロセスは、単なる、単一の減算（下限値は０）および乗算（上限値は２５５）を含むだけのものであり、それらは、ともにカラー固有定数に対して行われる。このユニットの構成を図６６に示す。
【０４１８】
レッド、グリーン、およびブルーの低スレッショルド７２は、レッド、グリーン、およびブルーのスケール・ファクタ１７３とともに、イメージ・ヒストグラム・ユニット８を介した各カラー平面に関するヒストグラムの生成後にＣＰＵ  １０によって決定される（セクション９参照）。
【０４１９】
パイプライン内において処理されているカレント・ピクセルがレッド、グリーン、またはブルーのいずれであるかに応じて、適切な低スレッショルドおよびスケール・ファクタがマルチプレクシングされて減算ユニットおよび乗算ユニットに与えられ、出力がバッファ１の適切なカラー平面に書き込まれる。
【０４２０】
減算ユニット１７２は、下限値を０として、８ビットのイメージＲＡＭピクセル値から８ビットの低スレッショルド値を減じる。この結果の８ビットは、特殊化された８×８乗算ユニットに渡され、それにおいては、この８ビット値と８ビットのスケール・ファクタ（８ビットの小数、整数＝１）の乗算が行われる。上位１０だけが維持され、その８ビットが整数を、２ビットが小数をそれぞれ表す。乗算器１７４は、結果の上限値として２５５を有し、乗算の結果としてビット７より上位のビットがセットされることになる場合には、８ビットの整数結果がすべて１にセットされ、小数部が０にセットされる。
【０４２１】
減算ユニット１７２および乗算ユニット１７４とは別に、このユニットには、事実上、このユニットに関する状態マシンとなるアドレス・ジェネレータ１７５によってもたらされる重要な働きがある。アドレス生成は、次の２つのファクタによって支配される：すなわち、所定のサイクルにおいては、イメージＲＡＭ  １１に対して単一のアクセスしか可能でないこと、および所定のサイクルにおいては、バッファ１  １１４に対して単一のアクセスしか可能でないことである。７５の使用可能なサイクルのうち、１６サイクルを１セットとする３セットは、バッファ１の読み出しのために使用される。実際の用法は、２５サイクルを１セットとする３セットであり、各セットは、１６の読み出しと９の待機サイクルを伴う。これにより、合計すると、２５の書き込み（６がレッド、６がブルー、６がグリーン）に対して２７の使用可能なサイクルが与えられる。このことは、バッファ１に対する書き込みのタイミングがリサンプラ１１２の待機サイクルに一致するとすれば、上記の２つの制約が満たされることを意味する。
【０４２２】
（１０．２．１１．１  バッファ１に関するアドレス生成）
リサンプリング・プロセスが起動した後は、リサンプラ１１２がバッファ１からの読み出しを行っていない期間にそれに対する書き込みを行うことだけを考えればよい。リサンプラは、それぞれ７５サイクルを含む期間内に１６の読み出しのセットを３セット有していることから、書き込みには２７サイクルを使用することができる。リサンプラが動作していないときのバッファ１へのロードは、可能な限り高速であることが望ましく、それは１サイクルごとにバッファ１  １１４への書き込みを行うことを意味する。バッファ１に関するアドレス生成は、結局、これら２つのケースを考慮に入れた状態マシンをもたらす。イメージＲＡＭ  １１から値がロードされるときは常に、１サイクルの遅れを伴って、調整後の値がバッファ１の適切なカラーに書き込まれる。
【０４２３】
したがって、バッファ１に関するアドレス生成は、レッド、ブルー、およびグリーンのサブ‐バッファそれぞれのための単一のアドレス・カウンタを伴う。それぞれの場合において、各ラインの開始におけるＲｅｄＡｄｒ（レッドアドレス）、ＢｌｕｅＡｄｒ（ブルーアドレス）、およびＧｒｅｅｎＡｄｒ（グリーンアドレス）に関する初期値は０であり、バッファ１に対する各書き込みの後、アドレスが１インクリメントされ、バッファにおいて、レッド、グリーン、またはブルーのいずれに対する書き込みが行われているかに応じて、３６もしくは７８を法とするラップが行われる。ここで、すべてのカラーが各７５サイクルの期間内に書き込まれることに注意する必要がある。通常、グリーンの列は、レッドまたはブルーのレートの、たとえば２倍のレートの補充を必要とすることになる。
【０４２４】
このロジックを、疑似コードの形で次に示す。
【数９】
0004576084.tif 000050
【０４２５】
（１０．２．１１．２  イメージＲＡＭに関するアドレス生成）
各平面は、次の２つの方向のいずれかにおいて読み出すことができる−−すなわち０度もしくは９０度回転（反時計回り）された方向である。これは、事実上、平面イメージに対する行優先もしくは列優先の読み出しアクセスとして解釈される。それに加えて、エッジ・ピクセルのレプリケーションまたはイメージ境界外の読み出しに関する一定カラーをはじめ、パスポート３１等のプリント・フォーマットについてはイメージのラップが許容されている。
【０４２６】
各プリント・ラインの開始においては、可能な限り高速にイメージＲＡＭ  １１の読み出し、およびバッファ１  １１４へのロードを行わなければならない。これは、毎サイクル１サンプルの単一アクセスに等しい。リサンプリングは、５列がロードされた後においてだけ生じることが可能であるが、それは、合計で１２５サイクルにわたる、５列の６個、６個、および１３個のサンプルのロードを意味する。それに加えて、イメージＲＡＭ  １１からロードされた後の、バッファ１  １１４に対して最終値を書き込む追加の１サイクルがある。ここでは、カウントを容易にするため、それを１２８サイクルに切り上げている。
【０４２７】
最初の１２８サイクルの後は、３つのカラーのそれぞれに関する次の列のロードの要求のチェックが、７５サイクルごとに発生し、続く７５サイクルの間に、適切なサンプルがロードされる。しかしながら、最初の７５サイクルのセットの間においてロードするか否かを示す初期セッティングは、いずれのカラーについても常に１になる。これによって、バッファ１内の各カラーの、最終的な６番目の列が満たされることが可能になる。
【０４２８】
各７５サイクルの期間のエンドにおいては、リサンプラ１１２内のカーネル・アドレス・ジェネレータの、各カラー平面からのＫｅｒｎｅｌＸＣａｒｒｙＯｕｔ（カーネルＸキャリーアウト）フラグがチェックされて、次のサンプルの列を読み出すか否かが決定される。同様に、ＡｄｖａｎｃｅＬｉｎｅ（アドバンスライン；ライン送り）パルスは、ＫｅｒｎｅｌＹＣａｒｒｙＯｕｔ（カーネルＹキャリーアウト）フラグがセットされているとき、続くラインの処理をリスタートする。
【０４２９】
「読み出し」が事実上、バッファ１内の列を満たす６もしくは１３の読み出しになることから、次の「読み出し」に進むために、開始ポジションが維持されている。また、境界外の座標の生成を許容し、ピクセルのレプリケーション、一定カラー、およびイメージのラップを可能にするために座標値が維持されている。
【０４３０】
ここで、特定の境界内に含まれる有効なイメージ１８０を用いて、座標が有効エリア（Active Area）の外になる場合に実行される特定のアクションについて考える。座標は、ラインおよびピクセルの両方の意味において、イメージの前、イメージの中、もしくはイメージの後のいずれかとなり得る。これについて図６７に示したが、有効エリアの外になるスペースについては、明瞭化のために誇張がなされている。
【０４３１】
ここでは、座標生成の開始として（０，０）を使用し、ＭａｘＰｉｘｅｌ（マックスピクセル）およびＭａｘＬｉｎｅ（マックスライン）をピクセルおよびライン数とする。しかしながら、アドレス生成がカーネル・キャリー・アウトおよびＭＪＩ  １５からのＡｄｖａｎｃｅＬｉｎｅ（アドバンスライン；ライン送り）パルスから実行されるため、これらの外側の境界は必要ない。ラインに関するアドレス生成は、単純にエッジ・レプリケーション、境界外に関する一定カラー、もしくはイメージ・ピクセルのラップの可能性を伴いつつ、ＡｄｖａｎｃｅＬｉｎｅ（アドバンスライン；ライン送り）パルスを受け取るまで継続される。
【０４３２】
カレント・サンプルのアドレスがＡｄｒであり、次のラインもしくは同一ライン上の次のサンプルへの移動を希望したとすると、そのサンプルの座標は、期待されるとおりに変更されるが、アドレスを変更する方法は、有効なイメージのラップを行っているか否かによって異なり、必要に応じてエッジ・ピクセルのレプリケーションを行わなければならない。
【０４３３】
イメージのラップがない場合（つまりパスポート３１を除いたすべてのプリント・フォーマット）においては、ラインまたはピクセルを進めるときに、表３８に示されるアクションが実行される。イメージに９０度の回転がある場合には、ＣＰＵ  １０が、ΔＬｉｎｅ（Δライン）値とΔＰｉｘｅｌ（Δピクセル）値を単純に交換する。
【０４３４】
表３８を観察すると、ＡＤＲの変更は、ＰｉｘｅｌＳｅｎｓｅ（ピクセルセンス）が０のときΔＰｉｘｅｌ（Δピクセル）によって、ＬｉｎｅＳｅｎｓｅ（ラインセンス）が０のときΔＬｉｎｅ（Δライン）よって行われるだけである。これらの単純な規則に従うと、Ａｄｒは、エッジ・ピクセルのレプリケーションにも有効になる。当然のことながら、境界座標の外側に関して一定カラーが望ましい場合には、適切なアドレスにストアされている値に代えて、その値を選択することができる。
【０４３５】
【表４１】
0004576084.tif 000051
【０４３６】
ラップを可能にするためには、ラインまたはピクセルに関する以前のセンス（−、０、＋）と新しいセンスの比較を行っている。センスが「−」のときは、表３８に記載されている先送りを使用するが、縦座標（ｏｒｄｉｎａｔｅ）が境界の外に出てしまう場合には（つまり０から＋への移動）、デルタを基礎とせずに、新しい値を用いてＡｄｒを更新する。カレント・ラインが生成されるごとに、次のラインの開始に進むことができるように、カレント・ラインに関する開始アドレスを維持していることを前提とすれば、次の操作を行うことができる。
●  Ｐｉｘｅｌ（ピクセル）における変化であり、ピクセル・センスが０から＋に変化している場合（イメージのエッジの外側に出たことを示す）には、ＬｉｎｅＳｔａｒｔＡｄｒ（ラインスタートアドレス）を用いてＡｄｒを置換し、ＡｃｔｉｖｅＳｔａｒｔＰｉｘｅｌ（アクティブスタートピクセル）を用いてＰｉｘｅｌ（ピクセル）を置換する。Ｌｉｎｅ（ライン）は、同一に維持する。
●  Ｌｉｎｅ（ライン）における変化であり、ライン・センスが０から＋に変化している場合（イメージのエッジの外側に出たことを示す）には、ＡｄｒからＤｅｌｔａＣｏｌｕｍｎ（デルタコラム）を減じ、ＡｃｔｉｖｅＳｔａｒｔＬｉｎｅ（アクティブスタートライン）を用いてＬｉｎｅ（ライン）を置換する。Ｐｉｘｅｌ（ピクセル）は、同一に維持する。このＤｅｌｔａＣｏｌｕｍｎ（デルタコラム）は、アドレス（Ｐｉｘｅｌ，ＡｃｔｉｖｅＳｔａｒｔＬｉｎｅ）を（Ｐｉｘｅｌ，ＡｃｔｉｖｅＥｎｄＬｉｎｅ−１）から生成するためのアドレス・オフセットである（変数名の読み：Ｐｉｘｅｌ＝ピクセル；ＡｃｔｉｖｅＳｔａｒｔＬｉｎｅ＝アクティブスタートライン；ＡｃｔｉｖｅＥｎｄＬｉｎｅ＝アクティブエンドライン）。
【０４３７】
サンプルのセット番号（カラーに応じて６または１３がセットになる）のロードに関するロジックを、疑似コードを用いて次に示す。
【０４３８】
【数１０】
0004576084.tif 000052
【０４３９】
ＦｉｒｓｔＳａｍｐｌｅＬｉｎｅ（ファーストサンプルライン）、ＦｉｒｓｔＳａｍｐｌｅＰｉｘｅｌ（ファーストサンプルピクセル）、およびＦｉｒｓｔＳａｍｐｌｅＡｄｒ（ファーストサンプルアドレス）等の変数のセッティングは、カーネル・アドレス・ジェネレータからのキャリー・アウト・フラグをはじめ、ＭＪＩからのＡｄｖａｎｃｅＬｉｎｅ（アドバンスライン；ライン送り）パルスに応答するアドレス・ジェネレータ・セクション内にある。アドレス生成の、この部分のロジックを、次に疑似コードを用いて示す。
【０４４０】
【数１１】
0004576084.tif 000053
【０４４１】
（１０．２．１１．３  レジスタの要約）
イメージのプリントを行う前にセットしなければならないレジスタが多数存在する。それらについて次の表３９にまとめた。イメージに対して９０度の回転が行われる場合には、ＤｅｌｔａＬｉｎｅ（デルタライン）値とＤｅｌｔａＰｉｘｅｌ（デルタピクセル）値を単純に交換し、新しいＤｅｌｔａＣｏｌｕｍｎ（デルタコラム）値を用意する。
【０４４２】
【表４２】
0004576084.tif 000054
【０４４３】
【表４３】
0004576084.tif 000055
【０４４４】
【表４４】
0004576084.tif 000056
【０４４５】
（１１  参考資料）
［１］Ｓｉｌｖｅｒｂｒｏｏｋ  Ｒｅｓｅａｒｃｈ，１９９８，Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  ｏｆ  Ｃｏｎｓｕｍａｂｌｅｓ
（シルバーブルック・リサーチ，１９９８年，「消耗品の認証」）
［２］Ｓｉｌｖｅｒｂｒｏｏｋ  Ｒｅｓｅａｒｃｈ，１９９８，Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｈｉｐ
（シルバーブルック・リサーチ，１９９８年，「認証チップ」）
【０４４６】
以上、特定の例を参照して本発明についての説明を行ってきたが、当業者においては、多くの異なる形でそれを具体化することが可能であると認識される。番号を付したパラグラフは、明細書の対象者に対して本発明の範囲の更なる表示を与えるものであるが、それにおける開示からも、そのほかの新規の発明性のある特徴ならびに特徴の組み合わせが明らかになろう。
【図面の簡単な説明】
【図１】  ＰＣＰのハイ・レベルのイメージのフローを示している。
【図２】  分離して示したＰＣＰのブロック図を示している。
【図３】  Ｐｒｉｎｔｃａｍ（プリントカム）ハードウエアに接続されるＰＣＰのブロック図を示している。
【図４】  ４インチのＭｅｍｊｅｔ（メムジェット）プリントヘッドを示している。
【図５】  ４インチのプリントヘッド内におけるセグメントの配置を示している。
【図６】  ポッド内のノズルの配置を、固定順序によって付された番号とともに示している。
【図７】  ポッド内のノズルの配置を、ローディング順序によって付された番号とともに示している。
【図８】  クロマポッドを示している。
【図９】  ポッドグループを示している。
【図１０】  フェーズグループを示している。
【図１１】  セグメント、発射グループ、フェーズグループ、ポッドグループ、およびクロマポッドの間における関係を示している。
【図１２】  奇数および偶数のドットのプリントの間におけるＡＥｎａｂｌｅ（Ａイネーブル）パルスおよびＢＥｎａｂｌｅ（Ｂイネーブル）パルスのプロファイルを示している。
【図１３】  ＣＦＡイメージに基づいたプリント・フォーマットの姿勢を示している。
【図１４】  イメージ取り込みチェーンのブロック図を示している。
【図１５】  ベイヤーＣＦＡ  ２Ｇモザイクにおけるピクセルの配置を示している。
【図１６】  ＲＧＢの線形化プロセスを示している。
【図１７】  ＲＧＢの平面化プロセスを示している。
【図１８】  イメージ・プリント・チェーンのブロック図を示している。
【図１９】  単一のカラー平面に関するサンプル・カラー範囲を示している。
【図２０】  ホワイト・バランスおよび範囲拡張に関係するステップを示している。
【図２１】  ホワイト・バランスおよび範囲拡張の実行が可能な装置のブロック図を示している。
【図２２】  ＣＦＡ解像度に関係する各種カラー平面のピクセルを示している。
【図２３】  グリーン平面を４５度回転する効果を示している。
【図２４】  グリーン平面に関する回転されたピクセルの間の距離を示している。
【図２５】  回転されていないＣＦＡ空間内の移動を回転されたＣＦＡ空間にマッピングするプロセスを示している。
【図２６】  シャープニング・プロセスのブロック図を示している。
【図２７】  ３×３カーネルを用いた単一の輝度ピクセルのハイ・パス・フィルタリングに関係するプロセスを示している。
【図２８】  ＲＧＢからＣＭＹへの変換における各変換を示している。
【図２９】  ３‐１次（ｔｒｉ−ｌｉｎｅａｒ）補間によるＲＧＢからＣＭＹへの変換を示している。
【図３０】  単一ピクセルから５×５ブロックへのピクセルのレプリケーションを示している。
【図３１】  ハーフトーン・プロセスのブロック図を示している。
【図３２】  プリンタ用のドットのリフォーマットのプロセスを示している。
【図３３】  イメージ取り込みユニットのブロック図を示している。
【図３４】
【図３５】  イメージ・アクセス・ユニットのブロック図を示している。
【図３６】  イメージ・ヒストグラム・ユニットのブロック図を示している。
【図３７】  プリントヘッド・インターフェースのブロック図を示している。
【図３８】  Ｍｅｍｊｅｔ（メムジェット）インターフェースのブロック図を示している。
【図３９】  ＡＥｎａｂｌｅ（Ａイネーブル）パルスおよびＢＥｎａｂｌｅ（Ｂイネーブル）パルスの生成を示している。
【図４０】  ドット・カウント・ロジックのブロック図を示している。
【図４１】  プリント・ジェネレータ・ユニットのインターフェースを示している。
【図４２】  プリント・ジェネレータ・ユニットのブロック図を示している。
【図４３】  テスト・パターン・アクセス・ユニットのブロック図を示している。
【図４４】  バッファ５のブロック図を示している。
【図４５】  バッファ４のブロック図を示している。
【図４６】  アップ補間、ハーフトーン、およびリフォーマット・プロセスのブロック図を示している。
【図４７】  標準的なディザ・セルからスタガード・ディザ・セルにマップする方法を示している。
【図４８】  ＲＧＢからＣＭＹへの変換プロセスのブロック図を示している。
【図４９】  バッファ２のブロック図を示している。
【図５０】  ３×３のカーネルを使用する基本的なハイ・パス空間フィルタを示している。
【図５１】  シャープニング・ユニットのブロック図を示している。
【図５２】  バッファ１の構成を示している。
【図５３】  リサンプリングおよび輝度チャンネル生成プロセスのブロック図を示している。
【図５４】  コンボリューション・ユニットのブロック図を示している。
【図５５】  レセプタから生成されるピクセルの順序を示している。
【図５６】  回転された空間および回転されていない空間におけるｘまたはｙ内の移動を示している。
【図５７】  バッファ１のグリーン・サブ‐バッファ内におけるエントリのアドレスを示している。
【図５８】  回転に応じたグリーン・エントリ間の関係を示している。
【図５９】  グリーン・チャンネルの４×４サンプリングを示している。
【図６０】  タイプ１の４×４グリーン・サンプリングを示している。
【図６１】  タイプ２の４×４グリーン・サンプリングを示している。
【図６２】  グリーンに関する２つのタイプの行アドレッシングを示している。
【図６３】  バッファ１のレッドおよびブルーのサブ‐バッファ内におけるエントリのアドレッシングを示している。
【図６４】  最初のピクセルを計算するための、最初の１６サンプルの読み出しを示している。
【図６５】  ブルーおよびレッドのバッファからの、オーバーラップする最悪ケース４×４読み出しを示している。
【図６６】  回転、ホワイト・バランスおよび範囲拡張ユニットのブロック図を示している。
【図６７】  生成された座標空間内における有効イメージ・エリアを示している。
【図１】
0004576084.tif 000057
【図２】
0004576084.tif 000058
【図３】
0004576084.tif 000059
【図４】
0004576084.tif 000060
【図５】
0004576084.tif 000061
【図６】
0004576084.tif 000062
【図７】
0004576084.tif 000063
【図８】
0004576084.tif 000064
【図９】
0004576084.tif 000065
【図１０】
0004576084.tif 000066
【図１１】
0004576084.tif 000067
【図１２】
0004576084.tif 000068
【図１３】
0004576084.tif 000069
【図１４】
0004576084.tif 000070
【図１５】
0004576084.tif 000071
【図１６】
0004576084.tif 000072
【図１７】
0004576084.tif 000073
【図１８】
0004576084.tif 000074
【図１９】
0004576084.tif 000075
【図２０】
0004576084.tif 000076
【図２１】
0004576084.tif 000077
【図２２】
0004576084.tif 000078
【図２３】
0004576084.tif 000079
【図２４】
0004576084.tif 000080
【図２５】
0004576084.tif 000081
【図２６】
0004576084.tif 000082
【図２７】
0004576084.tif 000083
【図２８】
0004576084.tif 000084
【図２９】
0004576084.tif 000085
【図３０】
0004576084.tif 000086
【図３１】
0004576084.tif 000087
【図３２】
0004576084.tif 000088
【図３３】
0004576084.tif 000089
【図３４】
0004576084.tif 000090
【図３５】
0004576084.tif 000091
【図３６】
0004576084.tif 000092
【図３７】
0004576084.tif 000093
【図３８】
0004576084.tif 000094
【図３９】
0004576084.tif 000095
【図４０】
0004576084.tif 000096
【図４１】
0004576084.tif 000097
【図４２】
0004576084.tif 000098
【図４３】
0004576084.tif 000099
【図４４】
0004576084.tif 000100
【図４５】
0004576084.tif 000101
【図４６】
0004576084.tif 000102
【図４７】
0004576084.tif 000103
【図４８】
0004576084.tif 000104
【図４９】
0004576084.tif 000105
【図５０】
0004576084.tif 000106
【図５１】
0004576084.tif 000107
【図５２】
0004576084.tif 000108
【図５３】
0004576084.tif 000109
【図５４】
0004576084.tif 000110
【図５５】
0004576084.tif 000111
【図５６】
0004576084.tif 000112
【図５７】
0004576084.tif 000113
【図５８】
0004576084.tif 000114
【図５９】
0004576084.tif 000115
【図６０】
0004576084.tif 000116
【図６１】
0004576084.tif 000117
【図６２】
0004576084.tif 000118
【図６３】
0004576084.tif 000119
【図６４】
0004576084.tif 000120
【図６５】
0004576084.tif 000121
【図６６】
0004576084.tif 000122
【図６７】
0004576084.tif 000123