(57)【要約】【課題】  画像処理を行う際のメモリアクセスを減らすようにする。【解決手段】  所定の画像サイズごとに分割されたタイル画像に対して画像処理を実行する画像処理手段と、メモリバスを介して接続されたメモリとを備える画像処理装置において、前記画像処理手段での画像処理を実行したタイル画像それぞれに対して、当該タイル画像内の画素が全て白であるか否かを示すフラグを設定する。タイル画像内の画素が全て白であることを示すフラグが設定されたタイル画像に対しては、前記画像処理を実行したタイル画像の前記メモリへの格納は行わずに、当該フラグの情報を前記メモリに格納する。一方、タイル画像内の画素が全て白ではないことを示すフラグが設定されたタイル画像に対しては、前記画像処理手段で画像処理を実行したタイル画像の前記メモリへの格納を行うように制御する。【選択図】  図１１
2012124667.tif 000002
【特許請求の範囲】
【請求項１】
所定の画像サイズごとに分割されたタイル画像に対して画像処理を実行する画像処理手段と、
前記画像処理手段とメモリバスを介して接続されたメモリと、
前記画像処理手段での画像処理を実行したタイル画像それぞれに対して、当該タイル画像内の画素が全て白であるか否かを示すフラグを設定するフラグ設定手段と、
前記フラグ設定手段によってタイル画像内の画素が全て白であることを示すフラグが設定されたタイル画像に対しては、前記画像処理手段で画像処理を実行したタイル画像の前記メモリへの格納は行わずに、当該フラグの情報を前記メモリに格納し、
前記フラグ設定手段によってタイル画像内の画素が全て白ではないことを示すフラグが設定されたタイル画像に対しては、前記画像処理手段で画像処理を実行したタイル画像の前記メモリへの格納を行うように制御する制御手段と、
を有することを特徴とする画像処理装置。
【請求項２】
前記画像処理手段は、複数の画像処理手段を含み、且つ当該複数の画像処理手段はパイプラインで構成されることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記メモリに格納されたタイル画像に関するデータを読み出してバッファに書き込む際、前記タイル画像内の画素が全て白であることを示すフラグが設定されたタイル画像に対しては白画素を前記バッファに書き込み、前記タイル画像内の画素が全て白ではないことを示すフラグが設定されたタイル画像に対しては前記メモリに格納されたタイル画像を読み出して前記バッファに書き込むことを特徴とする請求項１または２のいずれかに記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタル複合機などで高速化の為にパイプライン接続で構成される複数の画像処理部によって画像処理を行う技術に関する。
【背景技術】
【０００２】
近年のデジタルカラー複合機は高速化・高画質化への要求に伴い、メモリ消費量や扱うデータ量は格段に増大しており、より一層のメモリ消費量の抑制とデータ転送効率改善の為の工夫が必須となっている。
【０００３】
デジタル複合機の画像処理は複数の画像処理部によって構成され、多くの画像処理部は画像メモリを有しており、メモリを使用して画像操作や参照等の処理を行っている。他の画像処理部とメモリを共有して使用する画像処理部は、ラスタ画像を扱うので、メモリアクセスの処理時間が全体の処理時間において支配的であり、ボトルネックになっている。
【０００４】
単純なスキャン、プリント、コピー動作のみの場合には、スキャナやプリンタの処理速度の方が相対的に遅いため、メモリアクセスの処理時間は全体の処理時間を考える上では、それほど大きな問題にならない。
【０００５】
一方、画像レイアウトや編集処理などを行う際には、ＨＤＤやメモリ等の画像データ蓄積手段に圧縮して保存されている画像データを読み出して画像処理を施し、もう一度ＨＤＤに書き戻すような画像処理（以降、ループバック系画像処理と呼ぶ）が行われる。
【０００６】
複数の画像処理部がループバック系画像処理を実行する場合、各画像処理部の処理時間のベストエフォートがそのまま全体の処理時間として効いてくる。したがって、上記メモリアクセスに関わる処理時間を短縮させることが、パフォーマンス改善に大きく影響を与えることになる。
【０００７】
また、画像処理で扱うデータ量を削減する一つの手法として、完全な白画像は印字する必要が無い為、白画素に対する画像処理を行わないという考え方がある。例えば、特許文献１では、２値化解像度変換処理において、参照マトリクス内の画像が全て白画素などの特定パターンの場合には、フィルタ演算を行わないことで、積和演算回数を削減し、処理時間を短縮する技術が開示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平９−３１２７６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１においては、画像処理単位を画素単位で行うため、参照画像が特定パターンの場合には、格納する画像メモリアドレスを算出するために、参照画像サイズ分のシフト動作を主・副走査方向に繰り返し行う必要がある。
【００１０】
つまりメモリアクセス処理時間については、白画素の有無に関わらず変わらない為、メモリアクセスがボトルネックとなる画像処理構成の場合においては、効果を十分に享受できない。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、本発明の画像処理装置は、所定の画像サイズごとに分割されたタイル画像に対して画像処理を実行する画像処理手段と、前記画像処理手段とメモリバスを介して接続されたメモリと、前記画像処理手段での画像処理を実行したタイル画像それぞれに対して、当該タイル画像内の画素が全て白であるか否かを示すフラグを設定するフラグ設定手段と、前記フラグ設定手段によってタイル画像内の画素が全て白であることを示すフラグが設定されたタイル画像に対しては、前記画像処理手段で画像処理を実行したタイル画像の前記メモリへの格納は行わずに、当該フラグの情報を前記メモリに格納し、前記フラグ設定手段によってタイル画像内の画素が全て白ではないことを示すフラグが設定されたタイル画像に対しては、前記画像処理手段で画像処理を実行したタイル画像の前記メモリへの格納を行うように制御する制御手段と、を有することを特徴とする。
【発明の効果】
【００１２】
画像中の白画素で構成される領域のメモリアクセスを行わないことで、画像処理に係る処理時間を短縮することができる。特にループバック系画像処理においては、メモリアクセス時間が全体パフォーマンスに大きく影響を及ぼす為、白画素で構成される領域の割合が多いオフィス文書を扱う場合には、画像処理システムの処理速度が向上する。
【図面の簡単な説明】
【００１３】
【図１】ＭＦＰシステムの概要を示した図である。
【図２】コントローラの概要を示した図である。
【図３】パケットの構成およびヘッダの構成を示した図である。
【図４】圧縮およびパケット生成のフローを示した図である。
【図５】ページとタイルの関係を示した図である。
【図６】パケット管理テーブルの例を示した図である。
【図７】パケットのメモリ空間上での座標とサイズを示した図である。
【図８】ループバック画像処理部の概要を示した図である。
【図９】タイルバスとメモリバスにおけるデータ転送のタイミングチャートである。
【図１０】タイルレイアウト調整の概要を示した図である。
【図１１】タイル画像処理部の概要を示した図である。
【図１２】タイル画像処理部の処理フローを示した図である
【図１３】ページ画像における取り出す領域のタイル位置の一例を示した図である。
【図１４】全白フラグテーブルの一例を示した図である。
【図１５】入力ヘッダの全白フラグより全白フラグを生成する概略を示した図である。
【図１６】メモリライト制御部の概要を示した図である。
【図１７】ヘッダ情報毎のメモリ転送サイズとアドレス加算値の関係を示した図である。
【図１８】タイルのメモリ配置の概略を示した図である。
【図１９】メモリリード制御部の概要を示した図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照しながら発明を実施するための形態について詳細に説明する。本実施形態では、画像処理装置として、スキャン、プリント、コピーなどの複数の機能を有するデジタル複合機（ＭＦＰ）を例に説明する。
【００１５】
［第１の実施形態］
図１に示すように、コントローラ１０１は、画像入力機器であるスキャナ１０２や画像出力機器であるプリンタ１０３と接続される。また、コントローラ１０１はＬＡＮや公衆回線（ＷＡＮ）などのネットワーク１０４と接続することで、画像情報やデバイス情報の入出力、ＰＤＬデータのイメージ展開を行う。
【００１６】
ＣＰＵ１０５は、後述するＨＤＤ記憶部１０７に格納されたプログラムに従ってＭＦＰ全体を制御するプロセッサである。メモリ１０６は、ＣＰＵ１０５が動作するためのシステムワークメモリであり、画像データを一時記憶するための画像メモリでもある。ＨＤＤ記憶部１０７は、ハードディスクドライブであり、システムソフトウェアや上記プログラム、画像データなどを格納する。
【００１７】
次に、図２に示すコントローラ１０１の構成例を参照して、コントローラ１０１の各部の詳細な処理を説明する。まず、スキャナ１０２によってスキャンされた画像データを読み込む場合を説明する。スキャナ１０２で読み取られたＲＧＢ（レッド、グリーン、ブルー）３色の画像データをスキャナ用画像処理部２０１が受け取り、その画像データに対してシェーディング処理やフィルタ処理等の画像処理を行い、圧縮部２０２が画像圧縮処理を行う。そして、当該圧縮されたデータ（圧縮データ）をＤＭＡＣ（ダイレクトメモリアクセスコントローラ）２０３が画像メモリバスを介してメモリ１０６に格納する。
【００１８】
次に、スキャンされた画像データをプリントする場合、メモリ１０６に格納された圧縮データをＤＭＡＣ２１１が画像メモリバスを介して圧縮／展開部２１２へ転送する。そして、圧縮／展開部２１２は、圧縮データを展開し、当該展開した画像データをループバック用画像処理部２１３へ転送する。そして、ループバック用画像処理部２１３がＣＭＹＫ（シアン、マゼンタ、イエロー、ブラック）色空間へ変換する。その後、更にループバック用画像処理部２１３はＣＭＹＫの各値に対して濃度調整やプリンタガンマ補正などの色処理を行う。そして、圧縮／展開部２１２は、該色処理後のデータを再度圧縮し、当該圧縮されたデータをＤＭＡＣ２１１が画像メモリバスを介して再度メモリ１０６に格納する。その後、プリント用の画像処理を行うために、ＤＭＡＣ２２１が画像メモリバスを介してメモリ１０６に格納されている圧縮データを読み込み、展開部２２２がラスタ画像データに展開する。そして、プリント用画像処理部２２３が、ラスタのＣＭＹＫ画像データに対してディザ法や誤差拡散法による面積階調処理を行い、プリンタ１０３へ出力する。
【００１９】
また、スキャンされた画像データをネットワークへ送信する場合やＮｉｎ１等の画像レイアウト処理を行う場合には、メモリ１０６に格納されている圧縮データをＤＭＡＣ２１１が画像メモリバスを介して圧縮／展開部２１２へ転送する。圧縮／展開部２１２により展開された画像データはループバック用画像処理部２１３へ転送される。ループバック用画像処理部２１３では、画像レイアウト処理の為に、任意の矩形領域画像の取り出し／再合成を行う処理の他に、ネットワーク送信画像への解像度変換や、ＹＣｂＣｒ（輝度、ＢＬＵＥ色差、ＲＥＤ色差）色空間への変換などを行う。そして、ループバック用画像処理部２１３で処理されたデータを、圧縮／展開部で再度圧縮したのち、ＤＭＡＣ２１１が画像メモリバスを介してメモリ１０６に格納する。その後、送信用の画像処理を行うために、ＤＭＡＣ２３１が画像メモリバスを介してメモリ１０６に格納されている該圧縮データを展開部２３２へ転送する。そして、展開部２３２が該圧縮データをラスタ画像データに展開する。その後、ラスタのＹＣｂＣｒ画像データに対して、送信処理部２３３がカラー画像送信であればＪＰＥＧ圧縮処理を行い、モノクロ２値画像送信であればＹデータに対して２値化を行った後にＪＢＩＧ圧縮等を行い、ネットワーク１０４へ出力する。
【００２０】
また、スキャンされた画像データを保存する場合、メモリ１０６に格納されている圧縮データを、ＤＭＡＣ２４１が画像メモリバスを介してディスクスプール高圧縮／展開部２４２へ転送する。ディスクスプール高圧縮／展開部２４２では、ＨＤＤの書き込みスピードがメモリに対して遅いため、更に高圧縮のＪＰＥＧ圧縮を施す。その後、ディスクアクセスコントローラ２４３を介してＨＤＤ記憶部１０７へ圧縮データを保存する。また、ＨＤＤ記憶部１０７に保存されている圧縮データを再度メモリ１０６に転送する場合には、上述した処理を逆に行えば良い。
【００２１】
ここで、図１に示すネットワーク１０４を介して接続された他の装置から送られてきたＰＤＬデータをメモリ１０６へ書き込む場合を説明する。図２にはＰＤＬ解釈部が図示されていないが、ＰＤＬ解釈部として機能するＣＰＵ１０５がＰＤＬデータを解釈し、その結果のディスプレイリストをメモリ１０６に出力する。その後、メモリ１０６に格納されているディスプレイリストをレンダリング部２５１がラスタのＲＧＢ画像データへレンダリングを行い、圧縮部２５２が画像圧縮処理を行う。そして、圧縮データをＤＭＡＣ２５３が画像メモリバスを介してメモリ１０６に格納する。尚、ＰＤＬデータをレンダリングして生成されたＲＧＢ画像を、プリント、ネットワークへ送信、保存する処理は、スキャンされた画像データの場合と同様の処理を行うことで実現可能である。
【００２２】
なお、本実施例において、圧縮部２５２ではＰＤＬデータから生成されたラスタ画像を圧縮し、圧縮部２０２ではスキャンで得たラスタ画像を圧縮するものとするが、このような構成に限るものではない。例えば、図２のように圧縮部２０２と２５２を個別に設けるのではなく、共通の圧縮部を設けるように構成しても構わない。
【００２３】
［パケット構成］
本実施形態の画像形成装置は、スキャン、プリント等の各画像処理を行う際に、画像メモリバス帯域を連続して占有することが無いように、ラスタ画像を細切れの画像サイズ（Ｍ×Ｎ画素サイズ。なお、本実施例では３２×３２画素）に分割し送受信する。
【００２４】
本実施形態では、各３２×３２画素のブロック画像（以下、タイルと呼ぶ）に、ヘッダと呼ばれる画像データに関する情報を付加して生成したパケットという単位で、画像メモリ間での転送が行われる。図３は、パケットの構成およびヘッダの構成を示した図である。
【００２５】
図３に示すように、各パケットは、ヘッダと、タイルの画像データが格納される画像情報格納部と、画素ごとに付与される属性（文字や写真など）の情報が格納される属性情報格納部とによって構成される。
【００２６】
ヘッダには、各パケットに関するヘッダ情報（ページＩＤ、タイル座標、色空間、画素データのビット数、データサイズ、属性情報サイズ、属性情報の有無、圧縮フラグ、ユニットＩＤ、モードＩＤ、全白フラグなど）が格納される。
【００２７】
ページＩＤは、タイル画像が属するページ画像を識別するための情報（つまり、どのページ画像から分割されたタイルであるかを識別するための情報）である。タイル座標は、該ページ画像内における当該タイルの位置座標を示す情報であり、Ｘ座標とＹ座標の２次元の座標で表現される。色空間は、タイル画像がどの色空間（ＲＧＢやＣＭＹＫ等）により表現される画像であるかを示す情報である。画素データのビット数は、画像データの階調数を示す情報で、２値画像の場合は１ビット、多値画像の場合は８ビットや１０ビット等の情報である。
【００２８】
データサイズは、画像データのサイズを示す情報であり、バイト単位で表現され、例えばＣＭＹＫ空間画像で８ビット階調のデータである場合は、３２×３２×４＝４０９６バイトで表現される。属性情報サイズは、属性情報のサイズを示す情報であり、バイト単位で表現され、例えば属性情報が８ビット階調のデータである場合は、３２×３２＝１０２４バイトで表現される。属性情報の有無は、属性情報を含んだタイルであるか否かを示す情報であり、属性情報が無い場合には、属性情報格納部は省かれる。圧縮フラグは、このタイルの画像情報格納部に格納された画像情報が、圧縮されたデータか、非圧縮のデータかを示すフラグの情報である。
【００２９】
ユニットＩＤ１〜３およびモードＩＤ１〜３は、後述するループバック画像処理部２１３の各タイル画像処理部８０１、８０２、８０３での画像処理を行うための情報である。ユニットＩＤ１〜３は、タイル画像処理部８０１、８０２、８０３を識別するための情報で、どの画像処理をどのような順番で行うかを設定する。例えば、タイル画像処理部８０１、８０２、８０３に対応するユニットＩＤが、それぞれ“１”、“２”、“３”を割り当てられていたと想定する。ユニットＩＤ１に“３”、ユニットＩＤ２に“１”、ユニットＩＤ３に“０”を設定すると、タイル画像処理部８０３、８０１の２つの画像処理が順番に行われる。（ここで、ユニットＩＤ３に“０”が割り当てられている場合は、３番目の画像処理は行われないことを示すものとする。）また、モードＩＤ１〜３は、上記ユニットＩＤ１〜３にそれぞれ対応し、対応するタイル画像処理部８０１、８０２、８０３での画像処理モードを示す情報である。
【００３０】
全白フラグは、このパケットのタイル画像を構成する画素の画素値が全て白画素（ＲＧＢ各色８ビット画像であれば２５５、ＣＭＹＫ画像であれば０）で構成されているか否かを示すフラグの情報である。
【００３１】
［圧縮処理およびパケット生成］
上述したように、本実施形態の画像処理装置は、ラスタ画像データを３２×３２画素ブロックのタイル単位で切り出し、圧縮処理を行い、パケットデータを生成して、メモリバスへ転送する。図４を用いて圧縮およびパケット生成フローについて説明する。圧縮およびパケット生成は、各圧縮部２０２、２１２、２４２、２５２で行われる。ここでは、ページ画像から３２×３２画素ブロック単位のタイル画像への変換動作も含めて説明するために、代表して圧縮部２０２でのパケット生成フローについて説明する。
【００３２】
まず、ステップＳ４０１において、圧縮部に、図５に示すようなページ単位のラスタ画像データ（スキャン画像）が入力される。ステップＳ４０２において、圧縮部は、当該ラスタ画像データにおけるページ背景画素（背景となる画素データ）を設定する。これは、圧縮処理時の初期記憶ブロックとして用いられるための画素データであり、通常は白画素（ＲＧＢ各色８ビット画像であれば２５５、ＣＭＹＫ画像であれば０）が用いられる。
【００３３】
ステップＳ４０３では、図５のように、ページ単位のラスタ画像から、３２×３２画素サイズのタイルを順番に切り出す。ステップＳ４０４では、当該切り出したタイルに対して、図３で示したようなヘッダ情報を付与する。
【００３４】
ステップＳ４０５では、当該切り出したタイルの画像（すなわち３２×３２画素サイズのラスタ画像）に対して圧縮処理を適用する。この圧縮処理は、いわゆるＪＰＥＧ方式の静止画像のデジタルデータを圧縮する処理で、属性情報に基づいて、可逆圧縮、非可逆圧縮の符号化処理を行う。
【００３５】
ステップＳ４０６では、当該圧縮後のタイル画像のデータサイズを算出し、当該圧縮後のデータサイズと、圧縮前のオリジナルのタイル画像（元データ）のデータサイズとを比較する。圧縮処理は符号情報を必ず付与するので、必ずしもオリジナルの画像データよりデータサイズが小さく圧縮される保証はない。そのため、もし圧縮後のタイルデータのデータサイズがオリジナルのタイルデータのデータサイズを超えてしまった場合には、オリジナルの画像データを圧縮処理せずに出力する方がトータルとしてメモリ効率が良い。従って、圧縮後のデータサイズとオリジナルのデータサイズとを比較した結果、圧縮後のデータサイズがオリジナルのデータサイズ以上であると判定した場合は、ステップＳ４０７に進み、ヘッダの圧縮フラグを０にセットする。そして、当該圧縮フラグ０がセットされたタイルのヘッダ情報と一緒に、圧縮していないオリジナルのタイル画像データをパケットデータとしてパッキングする（Ｓ４０８）。一方、ステップＳ４０６で圧縮後のデータサイズが、オリジナルのデータサイズよりも小さいと判定した場合は、ヘッダの圧縮フラグを１にセットし（Ｓ４０９）、当該圧縮後のタイルデータ（圧縮データ）と一緒にパケットデータにパッキングする。なお、図３に示すようなパケット構成にするには、タイル単位で圧縮処理が終了し、データサイズが確定した後、画像情報格納部と属性情報格納部との間を詰めた状態でデータをパッキングする。その後、各ＤＭＡＣを経由してメモリ１０６へパケットデータを出力する（Ｓ４１１）。
【００３６】
ステップＳ４１２では、上述したように生成して出力したパケットデータの座標（すなわちタイルの位置を示す座標）と当該パケットデータのサイズ（パケットサイズ）とを、リストとして列挙したパケット管理テーブルを作成（更新）する。このパケット管理テーブルの一例を図６に示す。ステップＳ４１３では、全てのタイルに対して上述した処理を実行したか判断し、未処理のタイルがある場合はステップＳ４０３に戻って処理を繰り返す。このようにして、ページ単位のラスタ画像の圧縮処理を実行する。
【００３７】
尚、上述のタイル単位でパケットデータをメモリへ書き出すと、図７のメモリ空間に示すように、パケット毎にサイズが異なるので、各パケットデータが格納されているメモリアドレスが飛び飛びになる。そのため、図６に示すパケット管理テーブルを用いることにより、任意の座標位置のパケットの先頭アドレスを探索できる。従って、先頭パケットの書き込みアドレスが既知であれば、パケット管理テーブルに記載されている座標のパケットまでのデータサイズをオフセットとして、任意のパケットのメモリアドレスを求めることが可能になる。例えば、図６に示す第３パケットを読み込む場合は、第１、第２パケットのサイズ合計をパケット管理テーブルより求め、先頭パケットのアドレスに対してオフセットをかけることで第３パケットアドレスを算出する。そして、そこからデータを読み込むことで第３パケットのデータを取得することが可能になる。
【００３８】
このようにタイル単位に任意のパケットデータへのアクセスが可能になるので、画像の部分的な処理が可能になる。例えば、画像の一部の領域を抽出して処理したい場合は、当該領域に対応するタイルのパケットデータを取得して処理すればよい。
【００３９】
尚、圧縮部２０２、２５２以外の圧縮／展開部２１２（やディスクスプール高圧縮／展開部２４２）においては、パケットデータを３２×３２画素サイズの画像に展開して画像処理を行った後に、再度圧縮処理を行う。したがって、圧縮／展開部２１２の圧縮処理では、既に３２×３２画素サイズになっている画像が圧縮処理対象となるので、図４のステップＳ４０４以降の処理を行うようにすればよい。
【００４０】
［展開処理およびタイル生成］
次に展開処理およびタイル生成について説明する。メモリ１０６へ格納されているパケットデータは、プリント、ネットワーク送信等の各動作において読みだされる際には、展開されタイル画像に変換されたのちに各画像処理部へ送られる。パケットデータを展開してタイル画像を生成する処理は、各展開部２１２、２２２、２３２、２４２で行われる。
【００４１】
展開部は、パケット毎に付与されているヘッダに格納されている情報を用いて展開処理を行う。まず、圧縮フラグが非圧縮を示している場合には、ヘッダを取り除いたデータを出力し、そうでない場合には圧縮データの展開処理を行う。展開処理では、ヘッダより画像情報格納部のメモリアドレスと、属性情報格納部のメモリアドレスとを求め、圧縮符号化されている画像情報と、属性情報とを読み出す。展開処理は、上述したＪＰＥＧ方式の圧縮処理の逆変換（すなわち復号化処理）を行う。復号化処理によって、順次３２×３２画素単位のタイル画像へ展開される。
【００４２】
尚、圧縮／展開部２１２で展開したタイル画像については、ループバック用画像処理部２１３で画像処理を行った後、再度圧縮処理を行って、画像メモリバスを介してメモリ１０６へ書き戻すので、上述のヘッダを取り除かなくてもよい。
【００４３】
［ループバック用画像処理部］
図８を用いて、ループバック用画像処理部２１３の構成例について説明する。ループバック用画像処理部２１３は、タイル単位で画像処理を行う複数のタイル画像処理部８０１、８０２、８０３、バス調停部８０４、メモリ８０５、及び全白フラグテーブル８０６で構成される。便宜上、図８では、タイル画像処理部は３個存在するものとして説明するが、３個に限るものではない。なお、タイル画像処理部が３個よりも多くしたい場合は、ヘッダ情報のユニットＩＤとモードＩＤの個数も予め多く定義しておけばよい。
【００４４】
タイル画像処理部８０１、８０２、８０３は、全てタイル単位で画像を扱う処理部であるため、処理の高速化の為に、入出力のインターフェースを全て同じにして直列接続するパイプライン構成で接続されている。タイル画像処理部８０１、８０２、８０３は、それぞれの画像処理の為に、バス調停部８０４を介して、処理前後のタイル画像をメモリ８０５に格納する必要がある。
【００４５】
バス調停部８０４は、複数のメモリバスマスタであるタイル画像処理部８０１、８０２、８０３のバスの使用権を調停する制御部である。これは特定のバスマスタがメモリバスを占有し続けると、他のバスマスタが使用できなくなるのを防ぐためのものである。バス使用権の調停は、各バスマスタで要求されるパフォーマンスに合わせ、予めマスタ毎に割り当てられた優先順位にしたがって行われる。
【００４６】
メモリ８０５は、タイル画像処理部８０１、８０２、８０３において画像処理を行う際に、画像データを格納するための記憶手段である。
【００４７】
全白フラグテーブル８０６は、ページ画像を構成する各タイル画像について、全て白画素で構成されているか否かを示す全白フラグを格納するテーブルである。タイル画像処理部８０１、８０２、８０３は、全白フラグテーブル８０６を参照して、タイル内が全て白画素で構成されているか否かを識別し、全て白画素で構成されていると判断した場合は当該タイルのメモリアクセスを行わないよう制御する。全白フラグテーブル８０６を使用したメモリアクセス制御方法についての詳細は後述する。
【００４８】
［メモリアクセスによるパフォーマンスへの影響］
本発明に関わる課題は、このタイル画像処理部８０１、８０２、８０３がメモリ８０５へアクセスする際のデータ転送時間がパフォーマンスに大きく影響を与えている事にある。
【００４９】
メモリバスのバス幅は、接続されるメモリデバイスのバス幅により決定され、例えばＤＤＲ−ＳＤＲＡＭタイプのメモリを使用する場合には、３２ビットや６４ビットが一般的である。これに対し、各タイル画像処理部８０１、８０２、８０３の入出力インターフェース（以下、タイルバスと呼ぶ）のバス幅に関しては、あらゆる制約を受けないので、データの取り扱い易い任意のバス幅で設計することができる。本実施例においては、ヘッダ情報、画像情報、属性情報の各ビット数、色空間毎のデータサイズを鑑み、各情報を抽出・追加をしやすいように１２８ビットで構成する。
【００５０】
図９に１タイル分のデータを処理する際の、タイルバスとメモリバスにおけるデータ転送の相関を表すタイミングチャートの模式図を示す。
【００５１】
初めにタイルバスにおけるデータ転送方法について図９を元に説明する。タイルバスでは、ヘッダ情報、画像情報、属性情報の順番で各タイル画像処理部８０１、８０２、８０３に入力される。
【００５２】
転送サイクル数について、例えば画像データの色空間がＣＭＹＫで、画素データのビット数が８ビットの場合を考える。タイル画像は３２×３２画素サイズであるので、画像情報は３２×３２×４＝４０９６バイトであり、属性情報は１画素辺り１バイトであるとすると、属性情報は３２×３２＝１０２４バイトである。したがって、タイルのデータサイズは、ヘッダ情報を３２バイトとすると、画像情報４０９６バイト、属性情報１０２４バイトであるため、合計５１５２バイトとなる。従って、１タイルのデータを１２８ビットのタイルバスで転送する際に、費やされるサイクル数は、最速で動作すると仮定すると、３２２サイクルである。
【００５３】
各タイル画像処理部８０１、８０２、８０３は、パイプライン接続で構成され、それぞれ同一インターフェースにより一対一の関係で接続されている為、パイプライン最後の画像処理部８０３が待たされない限り、最速で動くことができる。
【００５４】
次にメモリバスにおけるデータ転送方法について説明する。メモリバスは、メモリバス周辺のメモリコントローラやバス調停部の設計負荷を軽減する為に、汎用のシステムＬＳＩ向けのオンチップ・バスを使用することが主流になりつつある。本実施例では、メモリバスとして、ＡＭＢＡ３．０規格として仕様が追加された高性能なＡＸＩインターフェースを採用した場合を例にとり説明する。
【００５５】
各タイル画像処理部８０１、８０２、８０３は、メモリ８０５への転送準備が整うと、メモリ８０５に対しデータ転送の要求信号を送信する。メモリ８０５は要求信号を受け取ると、メモリ８０５の格納領域の空き状況などを確認し、データを受け取る準備ができている場合には、データ転送の許可信号を各タイル画像処理部８０１、８０２、８０３に対して返信する。各タイル画像処理部８０１、８０２、８０３は、許可信号を受け取ると、データの送信を開始する。メモリ８０５は転送データを全て受け取ると、データ転送が終了したことを示す終了信号を各タイル画像処理部８０１、８０２、８０３に対して返信する。以上の要求信号の送信から終了信号の受信までの一連のステップにより、メモリバスにおけるデータ転送が完結する。本実施例では、この一連のデータ転送処理を、ヘッダ情報、画像情報、属性情報の順番で行われる。
【００５６】
ここで、メモリバスで費やされる転送サイクル数について、タイルバスの転送サイクル数と比較してみる。タイルのデータサイズ（５１５２バイト）に基づいて、ＡＸＩインターフェースの一般的なバス幅の３２ビットで換算すると、正味のデータ転送に費やされるサイクル数は、１２８８サイクル必要になる。従ってメモリバスの転送サイクル数（３２２サイクル）に比べて４倍のサイクル数（所要時間）がかかることになる。つまり各タイル画像処理部８０１、８０２、８０３は３２２サイクルで、メモリ８０５へライトするデータを受け取れるにも関わらず、メモリバスの制約により、メモリアクセスでは９６６サイクル余計に時間がかかってしまうことになる。
【００５７】
次に正味のデータ転送以外に必要な、データ転送のマスタとスレーブ間におけるハンドシェーク動作に関わる所用時間について説明する。ＡＸＩインターフェースに限らず、データ転送を行う際には、上述した要求信号、許可信号、及び終了信号などの信号をマスタとスレーブ間で送受信する。この一連のやり取りを通して準備が互いに整っていることを確認してからデータ転送を実施する（以下、ハンドシェーク動作）。また、複数マスタで一つのスレーブ（メモリ）を共有する場合、一つのマスタがメモリバスを占有して、他のマスタからのデータ転送が待たされることを防ぐために、あるデータ単位で区切ってデータ転送が行われる。その為、一度のデータ転送において、連続してデータ転送する回数（バーストサイズ）は、各メモリバスおいて上限が規定されている。ＡＸＩインターフェースの場合、最大の連続転送回数（バーストサイズ）は１２８回である。
【００５８】
そのため、１２８サイクル毎にマスタとスレーブ間でのハンドシェーク動作が必要になる（図９の期間Ａ）。これに対し、タイルバスはパイプライン構成で接続されている為、各タイル画像処理部が１対１で接続されているために、最終のタイル画像処理部８０３が待たされない限り、ハンドシェーク動作が発生せず、最速で動作することが可能である。
【００５９】
更に、例えば本画像形成装置のコントローラ１０１をＡＳＩＣで構成する場合、メモリバスは本数を増やすと、ＡＳＩＣの端子数が倍数的に増え、ダイサイズが大きくなりコストに直結する。そのため、メモリバスは概ね１本で他のバスマスタと共有する構成をとるのが一般的である。したがって、図８に示すように１本のメモリバスで構成する場合には、タイル画像処理部８０１、８０２、８０３でのメモリアクセスが同時に発生し、バス調停部８０４においてバス使用権を獲得するための要求が同時に発生することが頻発する。すると、バス使用権を獲得できなかったマスタは、自分の使用権が回ってくるまで、メモリアクセスを待たされることになる（図９の期間Ｂと期間Ｃ）。
【００６０】
従って、メモリアクセスは１タイル辺りに必要な転送サイクルが大きいことに加え、メモリアドレスの転送と、定期的なマスタとスレーブ間のハンドシェーク、同時アクセス時のバス調停動作が加わる為に、画像処理時間の大きなウェイトを占めている。つまり、メモリアクセス時間を削減することが、パフォーマンス向上の為の大きな要素になっている。
【００６１】
［タイル画像処理（タイルレイアウト調整）］
次に、タイル画像処理部８０１、８０２、８０３による画像処理について説明する。タイル画像処理部では、タイル画像に対して様々な画像処理（例えば、文字色の置換処理、解像度変換処理など）を行わせるように設定することが可能である。
【００６２】
タイル画像処理の一例として、画像レイアウトを変更する処理を行う際に使用される、タイルレイアウト調整の処理概要について説明する。このようなタイルレイアウト調整処理を利用して、画像の縮小や、集約（Ｎｉｎ１印刷）等の画像レイアウト処理を行うことができる。
【００６３】
図１０にタイルレイアウト調整の概要を表す模式図を示す。タイルレイアウト調整は、オリジナルのページ画像の任意の行および列の画像をタイル単位で取り出し、ページ画像を再合成して出力する処理である。例えば、図１０に示すように、領域Ａ〜Ｏまでの任意の領域をタイル単位で抜き出し、各領域間の行および列方向のギャップを詰めて接続し、新たなページ画像を生成する。
【００６４】
［タイル画像処理部］
次にタイル画像処理部８０１、８０２、８０３の構成例について説明する。ここでは、タイル画像処理部８０１で、上述したタイルレイアウト調整処理を実行するように構成したものとする。タイル画像処理部８０２、８０３では、その他の画像処理（例えば、文字色の置換処理、解像度変換処理など）を実行するようにしたものとする。図１１に、タイル画像処理部の構成の一例を示す。
【００６５】
図１２は、タイル画像処理部８０１、８０２、８０３における処理フローを示す図であるが、特に、タイルレイアウト調整処理を例として説明する。タイル画像処理部８０１、８０２、８０３の処理フローを通して、本実施例における画像処理装置の特徴である、タイル内が全て白画素で構成される場合には、当該タイルのメモリアクセスを行わない制御について説明する。
【００６６】
まず、ステップＳ１２０１では、タイル画像処理部で実行される画像処理の初期設定を行う。タイルレイアウト調整処理では、タイル単位で取り出す各領域の座標設定と、全白フラグの生成を実施するための設定をレジスタにより行う。レジスタ設定された各領域の座標情報は、タイル引き出し部１１０２に設定される。なお、タイルレイアウト調整で取り出す各領域の位置（すなわち新たなタイルの位置）は、図１３に示すように、上述した図４で説明したパケットデータ生成時にスキャン画像から切り出したタイルの位置と一致しない場合が多い。ここでは、タイルレイアウト調整処理で取り出される領域における新たなタイル領域を、新タイルと呼ぶこととする。
【００６７】
次に、ステップＳ１２０２では、処理対象のタイル画像をタイルバンドバッファ１１０１に格納する。タイルレイアウト調整処理の場合、レジスタ設定された領域設定に応じて、最初に取り出す新タイルに対応する位置にある複数のタイル（パケットデータを展開したタイル画像）をタイルバンドバッファ１１０１に格納する。タイルバンドバッファ１１０１は２タイルライン分（タイル単位でＹ方向に２行分）の容量のバッファサイズを有している。従って、２タイルライン分を超えるタイルが入力される度に、先頭の一番古いタイルデータが捨てられる。図１３に、ページ画像における取り出す領域Ａ〜Ｄにおける新タイルそれぞれの位置の一例を示す。例えば、４つの取り出す領域Ａ〜Ｄのうち、最初の領域Ａの番号１の新タイルを取り出す場合、オリジナル画像の先頭の（０、０）座標のタイルから、（１、１）座標までのタイルがタイルバンドバッファ１１０１に格納される。
【００６８】
ステップＳ１２０３において、タイル画像処理部は、設定された画像処理を実行し、実行した結果のタイル画像データをタイルバッファ１１０３に格納する。タイルレイアウト調整処理の場合、タイル引き出し部１１０２が、設定された各領域の座標情報を元に、タイルバンドバッファ１１０１より、取り出す領域における新タイルの画像を抽出する。抽出されたタイルのデータはタイルバッファ１１０３へ格納される。
【００６９】
次に、ステップＳ１２０４において、当該格納した画像処理後のタイル画像に対して、当該タイル内の画素値を参照して全白フラグを生成するか否か判定する。以前の処理で設定済みの全白フラグを参照して判定できる場合はそれを利用し、一方、全白フラグがまだ設定されていない場合や画像処理によって画素値が変化している可能性がある場合は、タイル内の画素値を参照（検査）して全白フラグを生成すると判定する。例えば、パイプラインの一番先頭のタイル画像処理部８０１において、タイルの全画素参照による全白フラグの生成を行った場合、全白フラグが生成されるので、それ以降のタイル画像処理部８０２、８０３においては、全画素を参照せずに全白フラグを設定できる場合がある。なお、各タイル画像処理部８０１、８０２、８０３は、パイプラインの先頭のタイル画像処理部であるか否かの判断は、ヘッダのユニットＩＤ１に設定されている番号が１であるか否かによって判断できる。
【００７０】
タイル内の画素値を参照して全白フラグを生成すると判定（Ｓ１２０４でＹＥＳ）した場合には、タイルバッファ１１０３に格納されている３２×３２画素で構成されるタイルの全画素を参照し（Ｓ１２０５）、全画素が白画素であるか否か判定する（Ｓ１２０６）。
【００７１】
タイルバッファ１１０３に格納されている全画素が白画素であると判定した場合（Ｓ１２０６でＹＥＳ）、当該新タイルのヘッダの全白フラグに全て白画素であることを示す“１”を設定する（Ｓ１２０７）。更にこのとき、全タイル分の全白フラグ（１ビット）を格納する全白フラグテーブル８０６にも、全白フラグ“１”を書き込む。一方、白画素でない画素があると判定した場合（Ｓ１２０６でＮＯ）は、ヘッダの全白フラグに全て白画素でないことを示す“０”を設定する（Ｓ１２０８）。更にこのとき、全タイル分の全白フラグ（１ビット）を格納する全白フラグテーブル８０６に、全白フラグ“０”を書き込む。図１４は、図１３のタイルレイアウト処理で取り出した新タイルに対して設定される全白フラグテーブル８０６の例である。図１４の左側の図は新タイルのアドレスを示し、右側の図は、各新タイルに対応する全白フラグを示すデータである。
【００７２】
ステップＳ１２０４において、以前の処理で設定済みの全白フラグを参照して判定できると判断した場合は、設定済みの全白フラグを参照し（Ｓ１２０９）、当該タイルが全白フラグを１に設定すべきか判定する。例えば、以前のタイル画像処理で、全白フラグ１が設定されており、Ｓ１２０３で実行した画像処理が、全白フラグが変わらないような画像処理で有った場合、以前に設定された全白フラグを流用すればよい。
【００７３】
また、タイルレイアウト調整処理を行うタイル画像処理部において、以前の処理で設定済みの全白フラグがあると判定した場合、当該新タイルに対応する位置にある旧タイル（２×２タイル分）の全白フラグの情報を参照して決定することができる。図１５は、タイルレイアウト調整処理において、旧タイルの全白フラグを参照して全白フラグを生成する場合の概略を説明する図である。図１５において領域Ｄの番号２２の新タイルを取り出す場合、番号２２の新タイルの位置に対する旧タイルは、（３、４）、（４、４）、（３、５）、（４、５）座標の４つの旧タイルであり、これらの全白フラグの情報をタイルバンドバッファ１１０１より読み出す。この時の４つのタイルの全白フラグは、それぞれ“０”、“１”、“０”、“１”であったとすると、取り出すタイル内は全て白画素ではないと判断（Ｓ１２１０でＮＯ）し、ヘッダの全白フラグに全て白画素でないことを示す“０”を設定する（Ｓ１２０８）。これと同時に、全タイル分の全白フラグ（１ビット）を格納する全白フラグテーブル８０６に、全白フラグ“０”を書き込む。また、図１５において領域Ｄの番号２９の新タイルを取り出す場合、番号２９の新タイルの位置に戴尾する旧タイルは（４、５）、（５、５）、（４、６）、（５、６）座標の４つの旧タイルであり、これらの全白フラグの情報をタイルバンドバッファ１１０１より読み出す。この時の４つの旧タイルの全白フラグは、全て“０”であるため、取り出す新タイル内は全て白画素であると判断（Ｓ１２１０でＹＥＳ）し、ヘッダの全白フラグに全て白画素であることを示す“１”を設定する（Ｓ１２０７）。これと同時に、全タイル分の全白フラグ（１ビット）を格納する全白フラグテーブル８０６に、全白フラグ“１”を書き込む。
【００７４】
ステップＳ１２１１では、ヘッダの全白フラグに“１”が設定されているか否か判定する。ヘッダの全白フラグに“１”が設定されている場合（Ｓ１２１１でＹＥＳ）には、当該タイルのヘッダ情報のみをメモリ８０５に書き込み（Ｓ１２１２）、タイルの画像情報と属性情報については、メモリ８０５への書き込み（データ転送）は行わない。
【００７５】
図１６は、メモリライト制御部１１０５の構成を示す図である。メモリライト制御部１１０５は、ライト制御部１６０１とライトアドレスカウンタ１６０２とにより構成される。
【００７６】
全白フラグテーブル８０６の設定が完了すると、ライト制御部１６０１は、バス調停部８０４を介してメモリ８０５へライト要求信号を送信する。送信したライト要求がバス調停部８０４でのバス調停動作により、メモリバスの使用権を獲得し、メモリ８０５でのライトデータを受け取る準備ができている場合には、ライト許可信号が返される。
【００７７】
ライト制御部１６０１は、ライト許可信号を受信すると、タイルバッファ１１０３より、ヘッダ情報の色空間、属性情報の有無、ビット数、全白フラグを読み出し、メモリ８０５へ書き込むデータの転送サイズを算出する。例えば色空間がＣＭＹＫ、ビット数が８ビット、属性情報が有りの場合を考える。この場合のヘッダ、画像情報、及び属性情報のバイト数は、それぞれ３２、４０９６、１０２４である。タイルバッファ１１０３にタイルバスの１２８ビット単位で格納されているとすると、ヘッダ、画像情報、及び属性情報の格納サイズは、それぞれ２、２５６，６４となる。
【００７８】
一方、ライト制御部１６０１は、メモリへのライトデータの転送サイズも同時に算出する。メモリバスとして３２ビットのＡＸＩインターフェースを想定すると、転送サイズはそれぞれ８、１０２４、２５６となる。
【００７９】
全白フラグに“１”が設定されている場合（Ｓ１２１１でＹＥＳ）には、ヘッダのみをメモリ８０５へ転送する為、ライト制御部１６０１は、ヘッダのみの転送サイズの２を、転送要求信号とともに、タイルバッファ１１０３へ送信する。これと同時に、メモリ８０５へのライト転送サイズとして、ヘッダのみの転送サイズの８を、メモリ８０５へ送信する。
【００８０】
一方、ライトアドレス信号もライトアドレスカウンタ１６０２よりメモリ８０５へ送られる。最初のタイルの転送時には、ライトアドレスカウンタ１６０２はメモリの先頭アドレス設定値がロードされているため、メモリ先頭アドレスが転送される。
【００８１】
ライトバッファ１１０３は転送要求を受信すると、受け取った転送サイズを元にタイルバッファ１１０３内の先頭アドレスから順番にメモリ８０５へライトデータを転送する。ライトデータが全て送られ、メモリ８０５よりライト終了信号を受け取ると、ライト制御部１６０１は、ライトアドレスカウンタ１６０２へ、ライト転送サイズをライトアドレスの加算値として、カウントイネーブル信号とともに送信する。
【００８２】
ライトアドレスカウンタ１６０２は、カウントイネーブル信号を受け取ると、送られたヘッダのみの加算値をカウントする（Ｓ１２１３）。
【００８３】
次に、ヘッダの全白フラグに“０”が設定されている場合（Ｓ１２１１でＮＯ）について説明する。この場合は、タイルバッファ１１０３のタイル画像データを全て、メモリ８０５へ転送する。以下、ヘッダの全白フラグに“１”が設定されている場合との差分についてのみ説明する。
【００８４】
全白フラグが“０”の場合は、タイルの全てのデータを送る必要があるので、メモリ８０５へ転送するデータサイズが異なる。タイルバッファ１１０３へ送る転送サイズは、ヘッダ、画像情報、及び属性情報の格納サイズ、それぞれ２、２５６、６４の合計の３２２となる。一方、メモリ８０５へのライト転送サイズは、それぞれ３２、４０９６、１０２４の合計の１２８８となる。メモリ８０５よりライト許可信号を受け取ると、算出した転送サイズに従って、タイルバッファ１１０３内に格納されているヘッダ、画像情報、及び属性情報を含めて１タイル全てのデータがライトデータとしてメモリ８０５へ転送される（Ｓ１２１４）。１タイル分のデータのライトが終了し、メモリ８０５よりライト終了信号を受け取ると、ライト制御部１６０１は、ライトアドレスカウンタ１６０２へ、１タイル分のライト転送サイズをライトアドレスの加算値として送信する。
【００８５】
ライトアドレスカウンタ１６０２は、カウントイネーブル信号を受け取ると、送られた１タイル分の加算値をカウントする（Ｓ１２１５）。
【００８６】
図１７は、各ヘッダ情報に対するメモリ転送サイズとアドレス加算値の関係を示す。また、図１８は、メモリ８０５へライトされるタイルデータのメモリ配置の概略図を示す。全白フラグテーブル８０６に、図１４に示すようなテーブルが設定された場合、つまりアドレス２９、３０、３４、３５、３６に全白フラグとして“１”が設定される場合は、当該アドレスに対応するタイルはヘッダのみを詰めて配置する。
【００８７】
次にステップＳ１２１６では、１ライン分のタイルデータのメモリ８０５へのライト動作が終了したか判定する。１ライン分のタイルデータのメモリ８０５への格納がまだ終わっていないと判定した場合（Ｓ１２１６でＮＯ）、ステップＳ１２０２に戻って処理を繰り返す。一方、１ライン分のタイルデータのメモリ８０５へのライト動作が終了すると（Ｓ１２１６でＹＥＳ）、次にタイル画像処理部８０１、８０２、８０３はメモリ８０５からのリード動作を開始する。
【００８８】
図１９にメモリリード制御部１１０７の構成を示す。メモリリード制御部１１０７は、リード制御部１９０１とリードアドレスカウンタ１７０２により構成される。
【００８９】
１ライン分のタイルデータのメモリへの書き込みが完了すると、リード制御部１９０１は、バス調停部８０４を介してメモリ８０５へリード要求信号を送信する。送信したリード要求がバス調停部８０４でのバス調停動作により、メモリバスの使用権を獲得し、メモリ８０５でのリードデータを受け取る準備ができている場合には、リード許可信号が返される。
【００９０】
リード制御部１９０１は、リード許可信号を受信すると、ライト制御部１１０５より、ヘッダ情報の色空間、属性情報の有無、ビット数、全白フラグを受信し、メモリ８０５から読み出すデータの転送サイズを算出する。例えば色空間がＣＭＹＫ、ビット数が８ビット、属性情報が有りの場合を考える。この場合のヘッダ、画像情報、及び属性情報のバイト数は、それぞれ３２、４０９６、１０２４である。タイルバッファ１１０６にタイルバスの１２８ビット単位で格納されるとすると、ヘッダ、画像情報、及び属性情報の格納サイズは、それぞれ２、２５６，６４となる。
【００９１】
一方、リード制御部１９０１は、メモリからのリードデータの転送サイズも同時に算出する。メモリバスとして３２ビットのＡＸＩインターフェースを想定すると、転送サイズはそれぞれ８、１０２４、２５６となる。
【００９２】
ステップＳ１２１７において、メモリ８０５よりタイルデータをリードする際、全白フラグテーブル８０６を参照し、先頭タイルより順番に全白フラグをリードし、メモリ８０５にヘッダのみを格納しているか、もしくはタイルデータ全てを格納しているかを識別する（Ｓ１２１８）。
【００９３】
全白フラグに“１”が設定されている場合（Ｓ１２１８でＹＥＳ）には、ヘッダのみをメモリ８０５より読み出す為、リード制御部１９０１は、ヘッダのみの転送サイズの２を、転送要求信号とともに、タイルバッファ１１０６へ送信する（Ｓ１２１９）。これと同時に、メモリ８０５へのリード転送サイズとして、ヘッダのみの転送サイズの８を、メモリ８０５へ送信する。リードアドレス信号もリードアドレスカウンタ１９０２よりメモリ８０５へ送られる。最初のタイルの転送時には、リードアドレスカウンタ１９０２はメモリの先頭アドレス設定値がロードされているため、メモリ先頭アドレスが転送される。タイルバッファ１１０６は転送要求を受信すると、受け取った転送サイズを元にタイルバッファ１１０６内の先頭アドレスから順番にメモリ８０５よりリードデータを転送する。リードデータが全て送られ、メモリ８０５よりリード終了信号を受け取ると、リード制御部１９０１は、リードアドレスカウンタ１９０２へ、リード転送サイズをリードアドレスの加算値として、カウントイネーブル信号とともに送信する。
【００９４】
リードアドレスカウンタ１９０２は、カウントイネーブル信号を受け取ると、送られたヘッダのみの加算値をカウントする（Ｓ１２２０）。
【００９５】
次に、タイルバッファ１１０６に格納されたヘッダ情報を、タイルバンドバッファ１１０８へ転送する（Ｓ１２２１）。ヘッダ情報をタイルバンドバッファ１１０８へ転送後、画像データとして白データ（（ＲＧＢ各色８ビット画像であれば２５５、ＣＭＹＫ画像であれば０）をタイルバンドバッファ１１０８へライトする（Ｓ１２２２）。白データのライトは白タイル置き換え部１１０９により制御される。白タイル置き換え部１１０９は、タイルバッファ１１０６からタイルバンドバッファ１１０８への転送数を計数し、画像情報及び像域情報をライトするタイミングで、白データとして“０”もしくは“２５５”をタイルバンドバッファ１１０８へライトする。タイルバッファ１１０６からタイルバンドバッファ１１０８への転送データが１２８ビット単位であるとすると、例えば色空間がＣＭＹＫ、ビット数が８ビット、属性情報が有りの場合は、１タイルデータは合計３２２個のデータで構成される。この場合、白タイル置き換え部１１０９は、最初のヘッダ転送分（２回）を除いた３２０回分の白データのライト動作を繰り返す。
【００９６】
一方、ステップＳ１２１８で、全白フラグテーブル８０６の全白フラグに“０”が設定されていると判定した場合（Ｓ１２１８でＮＯ）、タイルデータを全て、メモリ８０５より読み出してタイルバッファ１１０６へ転送する。以下、全白フラグテーブル８０６の全白フラグに“１”が設定されている場合との差分についてのみ説明する。全白フラグが“０”の場合は、タイルの全てのデータを送る必要があるので、メモリ８０５より転送するデータサイズが異なる。タイルバッファ１１０６へ送る転送サイズは、ヘッダ、画像情報、及び属性情報の格納サイズ、それぞれ２、２５６、６４の合計の３２２となる。一方、メモリ８０５へのリード転送サイズは、それぞれ３２、４０９６、１０２４の合計の１２８８となる。メモリ８０５よりリード許可信号を受け取ると、算出した転送サイズに従って、メモリ８０５内に格納されているヘッダ、画像情報、及び属性情報を含めて１タイル全てのデータがリードデータとしてタイルバッファ１１０６へ転送される（Ｓ１２２３）。
【００９７】
１タイル分のデータのリードが終了し、メモリ８０５よりリード終了信号を受け取ると、リード制御部１９０１は、リードアドレスカウンタ１９０２へ、１タイル分のリード転送サイズをリードアドレスの加算値として送信する。リードアドレスカウンタ１９０２は、カウントイネーブル信号を受け取ると、送られた１タイル分の加算値をカウントする（Ｓ１２２４）。
【００９８】
次に、タイルバッファ１１０６に格納された全てのタイル情報を、タイルバンドバッファ１１０８へ転送する（Ｓ１２２５）。
【００９９】
ステップＳ１２２６では、タイルバンドバッファ１１０８への１ライン分のタイルデータのライトが終了したか判定する。タイルバンドバッファ１１０８への１ライン分のタイルデータのライトが終了したと判定した場合（Ｓ１２２６でＹＥＳ）、タイルバンドバッファ１１０８のデータを読み出し、後段のタイル画像処理部もしくは圧縮部２１２へ転送する（Ｓ１２２７）。
【０１００】
ステップＳ１２２６で１ライン分のタイルデータのライトが終了していないと判定した場合（Ｓ１２２６でＮＯ）、Ｓ１２１７へ進み、全白フラグテーブル８０６の次のタイルの全白フラグを参照し、以降の処理を繰り返す。
【０１０１】
全てのタイル画像に対して、タイルバンドバッファ１１０８からの読み出しが終了した場合には（Ｓ１２２８でＹＥＳ）、一連の画像処理を終了する。まだ終了していない場合には（Ｓ１２２８でＮＯ）、Ｓ１２０２へ進み、タイルバンドバッファ１１０１の書き込みより、残りのタイルデータに対して処理を繰り返す。
【０１０２】
以上説明したように、実施例の画像形成装置は、オフィスで使用される文書画像はタイル単位で見ても、全て白画素で構成されるタイルが多いことに着目している。白タイルの画像データをメモリ転送しないことで、パイプライン接続で構成されるタイル画像処理部のパフォーマンスを向上するという効果を奏する。
【０１０３】
タイル画像処理部のパフォーマンスを向上することにより、システム効率が低下しないようにする。したがって、高解像度画像に対しても画像処理システムの処理速度の低下を抑えることができるという効果を奏する。
【図１】
2012124667.tif 000003
【図２】
2012124667.tif 000004
【図３】
2012124667.tif 000005
【図４】
2012124667.tif 000006
【図５】
2012124667.tif 000007
【図６】
2012124667.tif 000008
【図７】
2012124667.tif 000009
【図８】
2012124667.tif 000010
【図９】
2012124667.tif 000011
【図１０】
2012124667.tif 000012
【図１１】
2012124667.tif 000013
【図１２】
2012124667.tif 000014
【図１３】
2012124667.tif 000015
【図１４】
2012124667.tif 000016
【図１５】
2012124667.tif 000017
【図１６】
2012124667.tif 000018
【図１７】
2012124667.tif 000019
【図１８】
2012124667.tif 000020
【図１９】
2012124667.tif 000021