(57)【要約】【課題】  タイルの境界部分をオーバーラップさせてタイルに分割する場合は、メモリのバンド幅が問題となり必要なパフォーマンスを得られない。【解決手段】  画像データを分割した複数のタイルの少なくとも１つのタイル分の画素データと当該タイルの周辺の所定数の画素を記憶できる記憶容量を有するバッファ５０４を有し、そのバッファに、上或いは下方向と左或いは右に隣接するタイルの画素データを、少なくとも所定数の画素分、アドレスをずらしてバッファ５０４にオーバーラップさせて記憶する（Ｓ６０７）。そして、オーバーラップされたタイルの画素データがバッファ５０４に記憶される度に、複数のタイルの配列順番に応じて、バッファ５０４からタイルの画素データと所定数の画素分の画素データを読み出す読出し、その読み出された画素データに対して画像処理を実行する。【選択図】  図６
2011120115.tif 000002
【特許請求の範囲】
【請求項１】
画像データを複数のタイルに分割する手段と、
少なくとも１つの前記タイル分の画素データと当該タイルの周辺の所定数の画素を記憶できる記憶容量を有する記憶手段と、
上或いは下方向と左或いは右に隣接する前記タイルの画素データを、少なくとも前記所定数の画素分、アドレスをずらして前記記憶手段にオーバーラップさせて記憶するためのアドレスを発生するアドレス生成手段と、
オーバーラップされた前記タイルの画素データが前記記憶手段に記憶される度に、前記複数のタイルの配列順番に応じて前記記憶手段から前記タイルの画素データと前記所定数の画素分の画素データを読み出す読出し手段と、
前記読出し手段により読み出された画素データに対して画像処理を実行する画像処理手段と、
を有することを特徴とする画像処理装置。
【請求項２】
前記アドレス生成手段は、前回記憶されたタイルの画素データの内、後続のタイル側に位置する画素データを前記記憶手段に残すように、当該後続のタイルの画素データを前記記憶手段に記憶するためのアドレスを生成することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記画像処理手段は、注目画素と当該注目画素の周辺画素を参照する画像処理を実行することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
画像データを前記タイルの単位で圧縮する圧縮手段と、
前記圧縮手段で圧縮された画像データを記憶するメモリと、
前記メモリに記憶された前記圧縮された画像データを前記タイルの単位で伸張する伸張手段とを更に有することを特徴とする請求項１乃至３のいずれか１項に記載の画像処理装置。
【請求項５】
画像処理装置の制御方法であって、
画像データを複数のタイルに分割する工程と、
少なくとも１つの前記タイル分の画素データと当該タイルの周辺の所定数の画素を記憶できる記憶容量を有するメモリに、上或いは下方向と左或いは右に隣接する前記タイルの画素データを、少なくとも前記所定数の画素分、アドレスをずらしオーバーラップさせて記憶するためのアドレスを発生するアドレス生成工程と、
オーバーラップされた前記タイルの画素データが前記メモリに記憶される度に、前記複数のタイルの配列順番に応じて前記メモリから前記タイルの画素データと前記所定数の画素分の画素データを読み出す読出し工程と、
前記読出し工程で読み出された画素データに対して画像処理を実行する画像処理工程と、
を有することを特徴とする画像処理装置の制御方法。
【請求項６】
前記アドレス生成工程は、前回記憶されたタイルの画素データの内、後続のタイル側に位置する画素データを前記メモリに残すように、当該後続のタイルの画素データを前記メモリに記憶するためのアドレスを生成することを特徴とする請求項５に記載の画像処理装置の制御方法。
【請求項７】
前記画像処理工程は、注目画素と当該注目画素の周辺画素を参照する画像処理を実行することを特徴とする請求項５又は６に記載の画像処理装置の制御方法。
【請求項８】
画像データを前記タイルの単位で圧縮する圧縮工程と、
前記圧縮工程で圧縮された画像データをメモリに記憶する工程と、
前記メモリに記憶された前記圧縮された画像データを前記タイルの単位で伸張する伸張工程とを更に有することを特徴とする請求項５乃至７のいずれか１項に記載の画像処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データを処理する画像処理装置及びその制御方法に関する。
【背景技術】
【０００２】
画像データを印刷する際に、その画像データに対して画像処理が施される。このような画像処理には、例えばフィルタ処理のように周辺画素を参照するものがあり、このような処理では現ラインのデータに加えて前ラインの画像データを保持しておくためのラインバッファが必要となる。印刷解像度が６００ｄｐｉ，１２００ｄｐｉと高解像度になると必要な画像データを記憶するためのラインバッファのサイズが大きくなるため、１ページの画像データをタイル単位に分割して処理する方法が提案されている。このようなタイル分割では、周辺画素を参照する画像処理に対応するために、単純にタイル単位に分割するのではなくタイルの境界部分で画像データをオーバーラップさせて分割している。そして、画像処理が完了した後に、そのオーバーラップ部分を取り除く手法が提案されている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−１９８１２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
このようにタイルの境界部分をオーバーラップさせてタイルに分割する場合は、例えば、メモリに非圧縮のラスタデータを展開し、そのラスタデータを読み出しながらオーバーラップさせたタイルを作成することが考えられる。しかしこの場合は、メモリのバンド幅が問題となり必要なパフォーマンスを得られない。一方、メモリに圧縮データを展開した場合は、ラスタデータをどのような単位で圧縮するか、どの圧縮データを読み出してオーバーラップタイルを作成するかが問題となる。
【０００５】
本発明の目的は上記従来技術の問題点を解決することにある。
【０００６】
本願発明の特徴は、メモリのバンド幅を考慮することなく、オーバーラップタイルを作成できる技術を提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するために本発明の一態様に係る画像処理装置は以下のような構成を備える。即ち、
画像データを複数のタイルに分割する手段と、
少なくとも１つの前記タイル分の画素データと当該タイルの周辺の所定数の画素を記憶できる記憶容量を有する記憶手段と、
上或いは下方向と左或いは右に隣接する前記タイルの画素データを、少なくとも前記所定数の画素分、アドレスをずらして前記記憶手段にオーバーラップさせて記憶するためのアドレスを発生するアドレス生成手段と、
オーバーラップされた前記タイルの画素データが前記記憶手段に記憶される度に、前記複数のタイルの配列順番に応じて前記記憶手段から前記タイルの画素データと前記所定数の画素分の画素データを読み出す読出し手段と、
前記読出し手段により読み出された画素データに対して画像処理を実行する画像処理手段とを有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、メモリのバンド幅を考慮することなく、オーバーラップタイルを作成できる。またオーバーラップタイルを作成するためのラインバッファが不要になるという効果がある。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態に係る画像処理装置の構成を示すブロック図。
【図２】本実施形態に係るＲＩＰにより描画された画像データを説明する図。
【図３】パケット作成部が作成したパケットがメインメモリに保存される様子を説明する図。
【図４】パケット送信部がパケットを読み出す順番を示す図（Ａ）、パケット送信部がパケットを読み出す処理を示すフローチャート（Ｂ）。
【図５】本実施形態に係るパケット受信部の構成を示すブロック図。
【図６】本実施形態に係るパケット受信部の動作を説明するフローチャート。
【図７】ＪＰＥＧ復号器が復号したＭＣＵをＭＣＵバッファに書き込む処理を説明する図。
【図８】ラスタＤＭＡＣがオーバーラップタイルを作成する処理を説明するフローチャート。
【図９】フィルタ処理の例を説明する図で、（Ａ）は７×７のフィルタ処理の一例を示す図、（Ｂ）は、フィルタ処理を説明するフローチャートである。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１１】
図１は、本発明の実施形態に係る画像処理装置の構成を示すブロック図である。
【００１２】
ＰＣ１０１はページ記述言語（ＰＤＬ）データをネットワーク１０２経由で本実施形態に係る画像処理装置１００に送信する。画像処理装置１００では、ＣＰＵ１１４によって制御されるネットワークコントローラ（ＮＩＣ）１１０がＰＤＬデータを受信し、バススイッチ１１３経由でメインメモリ１１１に保存する。ＰＤＬデータの保存が終了するとＣＰＵ１１４がＰＤＬデータをディスプレイリスト（ＤＬ）に変換する。その後、ＲＩＰ（Raster Image Processor）１１５がメインメモリ１１１からＤＬを読み出してピクセル単位の画像データに描画する。
【００１３】
図２（Ａ）（Ｂ）は、本実施形態に係るＲＩＰ１１５により描画された画像データを説明する図である。
【００１４】
図２（Ａ）に示すように、１ページの画像データ２０１を分割したタイル２０２単位で描画する。例えば、タイル（０，０），タイル（１，０），…，タイル（ｘ，ｙ）の順番で描画する。ＲＩＰ１１５は、この描画したタイルをパケット作成部１１６に出力する。本実施形態では、タイルサイズを３２×３２（画素）とし、タイルの周辺に８画素を付加したオーバーラップタイルを作成する。
【００１５】
パケット作成部１１６は、バススイッチ１１３を介して受け取ったタイルをＪＰＥＧ圧縮する。このＪＰＥＧ圧縮では、最小符号化ユニット（ＭＣＵ）２０３と呼ばれる８×８（画素）の画像データ単位で圧縮する。
【００１６】
図２（Ａ）に示すように、タイル２０２を（４×４＝１６）個のＭＣＵに分割してＪＰＥＧ圧縮する。また図２（Ｂ）に示すように、パケット作成部１１６が作成するパケット２０５は、パケットヘッダ２０７とパケットデータ２０６で構成される。パケットヘッダ２０７にはパケットの情報が格納され、パケットデータ２０６にはＪＰＥＧ圧縮データが格納される。
【００１７】
図３は、パケット作成部１１６が作成したパケットがメインメモリ１１１に保存される様子を説明する図である。
【００１８】
パケットテーブル３０１は、ページを構成するパケットの個数分の要素を持ち、各要素は各パケットがメインメモリ１１１上の何処にあるかを示す。各タイルは図２（Ａ）に示すようにページ内での（ｘ，ｙ）座標からなる固有のＩＤ（識別子）を有し、各パケットも格納している対応するタイルと同じＩＤを有する。パケットテーブル３０１は、そのページ内の任意のタイルを含むパケットを読み出す際に使用される。
【００１９】
このようにしてパケット作成部１１６が１ページ分のパケットを作成し終えると、次にパケット送信部１１２がパケットテーブル３０１を参照してパケットを読み出しパケット受信部１２０に送信する。
【００２０】
図４（Ａ）は、パケット送信部１１２がパケットを読み出す順番を示す。また図４（Ｂ）は、パケット送信部１１２がパケットを読み出す処理を示すフローチャートである。
【００２１】
ここで図４（Ｂ）のフローチャートを参照してパケット送信部１１２の動作を説明する。以下のステップは全てパケット送信部１１２の処理である。
【００２２】
Ｓ４０２では、読み出すパケットのＩＤを指定する変数ｘ，ｙをともに「０」（左上のパケット）に初期化する。次にＳ４０３では、パケット（ｘ，ｙ）をメインメモリ１１１から読み出しパケット受信部１２０に送信する。またＳ４０４で、パケット（ｘ，ｙ＋１）（Ｓ４０３で送信したパケットの下のパケット）をメインメモリ１１１から読み出してパケット受信部１２０に送信する。次にＳ４０５で、ｘの値が最大値（ｘ＿ｍａｘ）かどうか（右端のパケットかどうか）を判定する。右端のパケットでなければＳ４０６に進み、ｘをインクリメント（＋１）してＳ４０３に戻る。Ｓ４０５で右端のパケットであると判定するとＳ４０７に進み、ｙの値が最大値（ｙ＿ｍａｘ）−１であるかどうか（下端−１のパケット）かどうかを判定する。下端−１のパケットでなければＳ４０８に進み、ｘを０に初期化し、ｙをインクリメントしてＳ４０３に戻る。またＳ４０７で、下端−１のパケットであれば、この処理を終了する。
【００２３】
図５は、本実施形態に係るパケット受信部１２０の構成を示すブロック図である。
【００２４】
ＤＭＡＣ５０１はパケットを受信し、パケットからＪＰＥＧコードを取り出しコードバッファ５０２に書き込む。その後、ＪＰＥＧ復号器（伸張器）５０３がコードバッファ５０２からＪＰＥＧコードを読み出してＭＣＵ単位でデコードし、その結果得られる画像データをＭＣＵバッファ５０４に書き込む。ここでＭＣＵバッファ５０４は、６×６個のＭＣＵ分の画素データ（４８×４８画素）を記憶する場合で示している。ＭＣＵバッファ５０４にオーバーラップタイルを作成するのに必要なデータが揃うと、ラスタＤＭＡＣ５０５がＭＣＵバッファ５０４から画像データを読み出しオーバーラップタイルを作成する。
【００２５】
図６は、本実施形態に係るパケット受信部１２０の動作を説明するフローチャートである。
【００２６】
まずＳ６０２で動作を制御するための変数ｘ，ｙ，offsetをｘ＝０，ｙ＝０，offset＝２に初期化する。次にＳ６０３，Ｓ６０４で、図４のＳ４０３，Ｓ４０４で送信された２つのパケットを受信すると、Ｓ６０５でｘ＝０（左端のタイル）であるかどうかを判定する。左端のタイルであれば、まだオーバーラップタイルを作成できないのでＳ６０６に進み、ｘをインクリメントしてＳ６０３に戻る。Ｓ６０５で左端のタイルでない場合はＳ６０７に進み、オーバーラップタイルを作成する。次にＳ６０８に進み、ｘが最大値（x_max）かどうか（右端のタイルかどうか）を判定する。右端のタイルでなければＳ６０９に進み、ｘをインクリメント、offset＝offset＋４としてＳ６０３に戻る。ここで、変数offsetはＪＰＥＧ復号器５０３がデコードしたＭＣＵをＭＣＵバッファ５０４の何処に書き込むかを制御するための変数である。変数offsetは、０→１→２→３→４→５→０→１，…と変化する。例えば、offset値が「２」であるときに＋４すると「０」になる（モジュール６の計算を行う）。ＭＣＵバッファ５０４の動作は後で詳細に記述する。Ｓ６０８で右端のタイルであると判定するとＳ６１０に進み、ｙが最大値（y_max）−１（（下端−１）のタイル）であるかどうかを判定する。（下端−１）のタイルでなければＳ６１１に進み、ｙをインクリメント、ｘ＝０，offset＝offset＋２としてＳ６０３に戻る。一方、Ｓ６１０で、（下端−１）のタイルであると判定すると、この処理を終了する。
【００２７】
図７は、ＪＰＥＧ復号器５０３がデコードしたＭＣＵをＭＣＵバッファ５０４に書き込む処理を説明する図である。
【００２８】
ＭＣＵバッファ５０４の何処に書き込むかは、図６のフローチャートで計算する変数ｘ，offsetと、Ｓ６０３で受信したパケットのタイルか、Ｓ６０４で受信したパケットのタイルかどうかで異なる。変数ｘが「０」のタイル（左端のタイル）をＳ６０３で受信した場合を図７（Ａ）に、Ｓ６０４で受信した場合を図７（Ｂ）に示す。また変数ｘが「０」でないタイルをＳ６０３で受信した場合を図７（Ｃ）に、Ｓ６０４で受信した場合を図７（Ｄ）に示す。尚、図７に示すＭＣＵの番号は図２に示すＭＣＵの番号に対応する。
【００２９】
次に図７（Ｅ），（Ｆ），（Ｇ），（Ｈ）を参照して最初の１０個（タイル（０，０）〜（４，０）、（０，１）〜（４，１））のタイルを受信した際の処理を例にして動作を説明する。
【００３０】
最初のタイル（０，０）は、図７（Ａ）の場合に該当し、図７（Ｅ）で示すようにタイルの右半分（図２（Ａ）のＭＣＵ２，３，６，７，１０，１１，１４，１５）をＭＣＵバッファ５０４の（０，０）〜（１，３）の矩形領域７００に書き込む。２番目のタイル（０，１）は図７（Ｂ）の場合に該当し、図７（Ｅ）に示すように右上の１６×１６画素（図２（Ａ）のＭＣＵ２，３，６，７）のみをＭＣＵバッファ５０４の（０，４）〜（１，５）の矩形領域７０１に書き込む。次に３番目のタイル（１，０）は図７（Ｃ）の場合に該当し図７（Ｅ）に示すようにタイル全部をＭＣＵバッファ５０４の（２，０）〜（５，３）の矩形領域７０３に書き込む。offset＝２の４番目のタイル（１，１）は、図７（Ｄ）の場合に該当し、図７（Ｅ）に示すようにタイルの上半分をＭＣＵバッファ５０４の（２，４）〜（５，５）の矩形領域７０４に書き込む。この段階で最初のオーバーラップタイルを作成する。ＭＣＵバッファ５０４からデータを読み出してオーバーラップタイルを作成する方法は後述のラスタＤＭＡＣ５０５の動作で説明する。
【００３１】
５番目のタイル（２，０）は図７（Ｃ）の場合に該当し、図７（Ｆ）に示すようにタイル全部をＭＣＵバッファ５０４の（０，０）〜（３，３）の矩形領域７０５に書き込む（offset＝０）。６番目のタイル（２，１）は図７（Ｄ）の場合に該当し、図７（Ｆ）に示すようにタイルの上半分をＭＣＵバッファ５０４の（０，４）〜（３，５）の矩形領域７０６に書き込む（offset＝０）。これによって前の２タイルのデータのうち、矩形領域７０５，７０６に相当する左半分の矩形領域は、これらタイル（２，０）、タイル（２，１）で上書きされて消えてしまう。しかし、右半分の矩形領域７０７，７０８に該当する（４，０）〜（５，５）には、図７（Ｅ）のデータがそのまま残っている。この段階で２番目のオーバーラップタイルを作成する。
【００３２】
７番目のタイル（３，０）は、図７（Ｃ）の場合に該当し、図７（Ｇ）に示すようにタイルの左半分を矩形領域（４，０）〜（５，３）の矩形領域７０９に、右半分を矩形領域（０，０）〜（１，３）の矩形領域７１０に書き込む（offset＝４）。また８番目のタイル（３，１）は図７（Ｄ）の場合に該当し、図７（Ｇ）に示すようにタイルの左上半分を領域（４，４）〜（５，５）の矩形領域７１１に、右上半分を矩形領域（０，４）〜（１，５）の矩形領域７１２に書き込む（offset＝４）。これにより矩形領域７０９〜７１２にはタイル（３，０）、（３，１）のデータが書き込まれ、Tile（２，０），Tile（２，１）で示す領域では図７（Ｆ）のデータがそのまま残っている。この段階で３番目のオーバーラップタイルを作成する。
【００３３】
９番目のタイル（４，０）は図７（Ｃ）の場合に該当し、図７（Ｈ）に示すようにタイル全部をＭＣＵバッファ５０４の（２，０）〜（５，３）の矩形領域７１３に書き込む（offset＝２）。また１０番目のタイル（４，１）は図７（Ｄ）の場合に該当し、図７（Ｈ）に示すようにタイルの上半分をＭＣＵバッファ５０４の（２，４）〜（５，５）の矩形領域７１４に書き込む（offset＝２）。ここでもTile（３，０），Tile（３，１）で示す領域では図７（Ｇ）の矩形領域７１０，７１２のデータがそのまま残っている。この段階で４番目のオーバーラップタイルを作成する。
【００３４】
ここで、図７（Ｈ）の形は図７（Ｅ）の形と同じであり、ＭＣＵバッファ５０４の使い方としては図７（Ｅ）から（Ｈ）をＳ６０３〜Ｓ６０８で繰り返し、Ｓ６１０で初期状態である図７（Ｅ）に戻る。
【００３５】
図８は、図６のＳ６０７でラスタＤＭＡＣ５０５がＭＣＵバッファ５０４からデータを読み出してオーバーラップタイルを作成する処理を説明するフローチャートである。変数ａ，ｂはデータを読み出すＭＣＵバッファ５０４を指定するための変数で、変数ｉ，ｊはＭＣＵバッファ５０４（ａ，ｂ）から読み出す画素を指定する変数である。またラスタＤＭＡＣ５０５はＳ８０６で変数ａ，ｂ，ｉ，ｊで指定される１画素を読み出す。変数ｉ，ｊ，ａ，ｂはそれぞれＳ８０７，Ｓ８０９，Ｓ８１１，Ｓ８１３で所定の値まで到達したかどうか判定され、到達していなければそれぞれＳ８０８，Ｓ８１０，Ｓ８１２，Ｓ８１４でインクリメントされる。これら各ステップ（Ｓ）で，所定の値まで到達していれば次のステップに移る。変数ａ，ｂ，ｉ，ｊは、ａ，ｊ，ｂの順番の多重ループでインクリメントされる。変数ｉのインクリメントは、ＭＣＵバッファ５０４（ａ，ｂ）のｊライン目の８画素を読み出すためのものである。変数ａのインクリメントは、８画素を読み出す毎に読み出すＭＣＵバッファ５０４を右に移動するためのものである。
【００３６】
図７（Ｅ），（Ｆ），（Ｇ），（Ｈ）を参照しながら最初の４オーバーラップタイルを作成する際の処理を例にして変数ａの変化を説明する。図６のＳ６０７で１番目のオーバーラップタイルを作成する場合（ＭＣＵバッファ５０４は図７（Ｅ）の状態）は、変数ａは０，１，２，３，４，５と変化していく。２番目のオーバーラップを作成する場合（ＭＣＵバッファ５０４は図７（Ｆ）の状態）、変数ａは４，５，０，１，２，３と変化していく。３番目のオーバーラップを作成する場合（ＭＣＵバッファ５０４は図７（Ｇ）の状態）は、変数ａは２，３，４，５，０，１と変化していく。そして４番目のオーバーラップを作成する場合（ＭＣＵバッファ５０４は図７（Ｈ）の状態）は、変数ａは１番目のオーバーラップを作成する場合と同様に、０，１，２，３，４，５と変化していく。この変数ａの先頭と最後の値はＳ８１６で更新されるstart_muc_x，last_mcu_xにより制御される。変数ｊ，ｂのインクリメントは、６個のＭＣＵバッファ５０４からそれぞれ８画素ずつ合計４８画素のオーバーラップタイルの１ライン分を読み出した後に次のラインの読み出しに移行するためのものである。変数start_mcu，last_mcuは変数ａの遷移を制御するための変数であり、Ｓ８０２で初期化されてＳ８１６でオーバーラップタイルを作成する毎に更新される。この図８のＳ８０２〜Ｓ８１６の処理により、図７（Ｅ）〜（Ｈ）に示すようにＭＣＵバッファ５０４に格納された画素データが、各タイルの周辺に８画素が付加されたオーバーラップタイルとして読み出される。
【００３７】
このようにしてパケット受信部１２０で作成されたオーバーラップタイルの各画素は、色変換部１２１に送られてＣＭＹＫに変換されフィルタ処理部１２２に送られる。フィルタ処理部１２２はＣ，Ｍ，Ｙ，Ｋの各版がずれることによって白抜けが発生するのを防ぐためにオブジェクトを太らせる処理を行う。その処理はフィルタ処理によって実現される。
【００３８】
図９（Ａ）は、７×７のフィルタ処理の例を示す図である。図９（Ａ）に示すｄ（＊，＊）は１画素を示し、注目画素９００はｄ（０，０）であり、その周辺画素は参照画素である。フィルタ処理では各画素ｄ（＊，＊）に対応する係数ｃ（＊，＊）を掛けた値を足し合わせた結果を出力とする。図９（Ｂ）は、フィルタ処理を説明するフローチャートである。
【００３９】
Ｓ９０２、Ｓ９０３で変数ｉ，ｊをともに「−３」にする初期化を行う。そしてＳ９０４で画素ｄ（ｉ，ｊ）に係数ｃ（ｉ，ｊ）を掛けた結果を最終的な出力となるout_dataに足し合わす。Ｓ９０５、Ｓ９０７で、変数ｉ，ｊが所定の値（「３」）に達したかどうかを判定し、所定の値に達していなければＳ９０６，Ｓ９０８でインクリメントする。フィルタ処理部１２２は、これら周辺画素を参照する７×７フィルタ処理を行う。フィルタ処理部１２２は、こうして処理した画素を階調処理部１２３に送信する。
【００４０】
階調処理部１２３は、このフィルタ処理部１２２から受け取った画素をハーフトンデータに変換してスムージング処理部１２４に送信する。スムージング処理部１２４は、文字等のエッジ部分を滑らかにする処理を行う。この処理もフィルタ処理部１２２の処理と同じくフィルタ処理によって実現される。フィルタ処理では係数を調節することにより様々な処理を行うことができる。スムージング処理部１２４は処理した画素を出力部１２５に送信する。出力部１２５は、スムージング処理部１２４から受け取った画素のうちオーバーラップ部分を読み捨て、それ以外の部分のみをスプールメモリ１２６に保存する。そして出力部１２５は、ページを構成する全てのタイルを受信するとスプールメモリ１２６から画素をページラスタ順で読み出してプリンタ部１３０に送信する。そして、プリンタ部１３０が用紙に印刷する。
【００４１】
以上説明したように本実施形態によれば、１ページの画像データを複数のタイルに分割し、各タイルを複数のＭＣＵに分割して符号化してメモリに格納する。ＪＰＥＧ復号器がそのＪＰＥＧコードをＭＣＵ単位で復号し、その結果得られる画像データをＭＣＵバッファに格納する。ここではＭＣＵバッファは、少なくとも１つのタイル分の画素データとその周辺の所定数の画素を記憶できる記憶容量を有する。そして少なくとも上或いは下方向と左或いは右に隣接してオーバーラップが発生するタイルの画素データが記憶される度に、そのＭＣＵバッファに記憶された画素データを読み出して、周辺画素を参照して画像処理を行う画像処理部に出力する。更に、このＭＣＵバッファにタイルの画素データを記憶する際には、その所定数の画素分、各タイルデータの書き込みアドレス（位置）をずらした書き込みアドレスを生成する（アドレス生成）。これにより前回ＭＣＵバッファに記憶されたタイルの画素データの一部（後続のタイル側）が残された状態で次のタイルの画素データが書き込まれる。そして現在ＭＣＵバッファに記憶されたタイルの画素データを、前回記憶されたタイルの画素データの周辺画素を含んだ状態で、元のタイルの配列順番で読出すことができる。これによりメモリのバンド幅を考慮することなく、オーバーラップタイルを作成できるという効果がある。またオーバーラップタイルを作成するためのラインバッファが不要になるという効果も得られる。
【００４２】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2011120115.tif 000003
【図２】
2011120115.tif 000004
【図３】
2011120115.tif 000005
【図４】
2011120115.tif 000006
【図５】
2011120115.tif 000007
【図６】
2011120115.tif 000008
【図７】
2011120115.tif 000009
【図８】
2011120115.tif 000010
【図９】
2011120115.tif 000011