(57)【特許請求の範囲】
【請求項１】
ブロックごとにフィルター演算を行う画像処理装置において、
少なくとも符号化された画像データを格納するためのメモリーと、
前記符号化された画像データを復号するデコード回路と、
前記デコード回路により復号された前記画像データに対して、所定のフィルターサイズでフィルター演算を行うフィルター演算回路と、
特定データ量のバースト転送で、前記ブロックの前記符号化された画像データを前記メモリーから前記デコード回路へ読み出す第１メモリーコントローラーと、
前記特定データ量のバースト転送で、前記ブロックの副走査方向の後端部分の復号された前記画像データを前記デコード回路から前記メモリーへ書き込む第２メモリーコントローラーと、
少なくとも前記フィルターサイズのライン数のラインの画像データを格納可能なラインバッファーと、
前記特定データ量のバースト転送を所定回数行って前記ブロックの１ライン分ずつ、副走査方向における１つ前の前記ブロックについて前記復号された画像データを前記メモリーから読み出す第３メモリーコントローラーと、
前記第３メモリーコントローラーにより読み出された前記復号された画像データおよび前記デコード回路により復号された前記画像データを順番に前記ラインバッファーへ格納するデータ入力回路と、
境界バッファーと、
前記ラインバッファーの各ライン内の主走査方向の後端部分の画像データを前記境界バッファーへ転送する転送回路とを備え、
前記第２メモリーコントローラーにより前記メモリーへ書き込まれる前記ブロックの副走査方向の後端部分は、少なくとも前記フィルターサイズの副走査方向のライン数より１だけ少ない数のラインであり、
前記各ライン内の主走査方向の後端部分は、少なくとも前記フィルターサイズの主走査方向の画素数より１だけ少ない数の画素であり、
前記フィルター演算回路は、副走査方向において第１ブロックに第２ブロックが隣接しており、かつ、副走査方向において第３ブロックに第４ブロックが隣接しており、かつ、主走査方向において前記第１ブロックに前記第３ブロックが隣接している場合において、前記境界バッファーに格納されている画像データと前記ラインバッファーに格納されている画像データとを使用して、前記第１ブロックの副走査方向の後端部分と前記第２ブロックとに対する主走査方向の後端部分、並びに前記第３ブロックの副走査方向の後端部分および前記第４ブロックに対するフィルター演算を連続的に行うこと、
を特徴とする画像処理装置。
【請求項２】
前記ブロックの１ライン分の前記復号された画像データのデータ量が、前記特定データ量に所定整数ｍを乗じた量以下であって、かつ、前記ブロックの１ライン分の前記フィルター演算に必要な画像データのデータ量が、前記特定データ量に前記ｍを乗じた量を超えることを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記ブロックの１ライン分の前記復号された画像データのデータ量が前記特定データ量の整数倍であることを特徴とする請求項２記載の画像処理装置。
【請求項４】
前記転送回路は、前記ラインバッファー内のラインが前記フィルター演算に不要となった時点で、不要となった前記ラインの主走査方向の後端部分の画像データを前記境界バッファーへ転送することを特徴とする請求項１から請求項３のうちのいずれか１項記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置に関するものである。
【背景技術】
【０００２】
画像に対して、主走査方向および副走査方向に分割して得られるブロックごとにフィルター演算を行う場合、フィルターサイズに応じて、そのブロックの画像データの他に、そのブロックの周辺の画素の画像データを使用して、フィルター演算が行われる（例えば特許文献１参照）。
【０００３】
例えば、９画素×９ラインのフィルターサイズで、１２８画素×１２８ラインのブロックのフィルター演算結果（フィルター出力）を得るには、１３６画素×１３６ラインの画像データが必要になる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−２０７１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
フィルター処理を行うべき原画像の画像データがＤＲＡＭ（Dynamic Random Access Memory）に格納されている場合、フィルター処理部は、バースト転送で画像データをＤＲＡＭから読み出し、フィルター演算を行う。その際、１回のバースト転送のデータ量は固定されているため、そのブロックのフィルター演算の読み出しに必要なバースト転送回数が、ブロック周辺の画素の画像データの読み出しのために多くなってしまうことがある。その場合、ＤＲＡＭのメモリーバスの帯域を多く消費してしまう。
【０００６】
例えば、１画素あたり１バイトの画像データにおいて、１２８画素×１２８ラインのブロックに対して、フィルターサイズが９画素×９ラインであるフィルター演算を行う場合、ＤＲＡＭの１回のバースト転送によるリードデータ量が６４バイトであるときには、ブロック内の画像データについては、１ラインにつき、２回のバースト転送で読み出せるが、フィルター演算には４画素幅の周辺画素の画像データがさらに必要になり、１３６画素の画像データが必要となるため、３回のバースト転送が必要となる。
【０００７】
本発明は、上記の問題に鑑みてなされたものであり、メモリーバスの帯域を多く使用せずにフィルター演算を実行可能な画像処理装置を得ることを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る画像処理装置は、ブロックごとにフィルター演算を行う画像処理装置であって、少なくとも符号化された画像データを格納するためのメモリーと、前記符号化された画像データを復号するデコード回路と、前記デコード回路により復号された前記画像データに対して、所定のフィルターサイズでフィルター演算を行うフィルター演算回路と、特定データ量のバースト転送で、前記ブロックの前記符号化された画像データを前記メモリーから前記デコード回路へ読み出す第１メモリーコントローラーと、前記特定データ量のバースト転送で、前記ブロックの副走査方向の後端部分の復号された前記画像データを前記デコード回路から前記メモリーへ書き込む第２メモリーコントローラーと、少なくとも前記フィルターサイズのライン数のラインの画像データを格納可能なラインバッファーと、前記特定データ量のバースト転送を所定回数行って前記ブロックの１ライン分ずつ、副走査方向における１つ前の前記ブロックについて前記復号された画像データを前記メモリーから読み出す第３メモリーコントローラーと、前記第３メモリーコントローラーにより読み出された前記復号された画像データおよび前記デコード回路により復号された前記画像データを順番に前記ラインバッファーへ格納するデータ入力回路と、境界バッファーと、前記ラインバッファーの各ライン内の主走査方向の後端部分の画像データを前記境界バッファーへ転送する転送回路とを備える。
【０００９】
前記第２メモリーコントローラーにより前記メモリーへ書き込まれる前記ブロックの副走査方向の後端部分は、少なくとも前記フィルターサイズの副走査方向のライン数より１だけ少ない数のラインである。前記各ライン内の主走査方向の後端部分は、少なくとも前記フィルターサイズの主走査方向の画素数より１だけ少ない数の画素である。
【００１０】
そして、前記フィルター演算回路は、副走査方向において第１ブロックに第２ブロックが隣接しており、かつ、副走査方向において第３ブロックに第４ブロックが隣接しており、かつ、主走査方向において前記第１ブロックに前記第３ブロックが隣接している場合において、前記境界バッファーに格納されている画像データと前記ラインバッファーに格納されている画像データとを使用して、前記第１ブロックの副走査方向の後端部分と前記第２ブロックとに対する主走査方向の後端部分、並びに前記第３ブロックの副走査方向の後端部分および前記第４ブロックに対するフィルター演算を連続的に行う。
【発明の効果】
【００１１】
本発明によれば、メモリーバスの帯域を多く使用せずにフィルター演算を実行可能な画像処理装置を得ることができる。
【００１２】
本発明の上記又は他の目的、特徴および優位性は、添付の図面とともに以下の詳細な説明から更に明らかになる。
【図面の簡単な説明】
【００１３】
【図１】図１は、本発明の実施の形態に係る画像処理装置の構成を示すブロック図である。
【図２】図２は、図１におけるフィルター処理部１の構成を示すブロック図である。
【図３】図３は、原画像におけるブロックの一例を示す図である。
【図４】図４は、原画像において主走査方向および副走査方向に連続するブロックを説明する図である。
【図５】図５は、図２に示すフィルター処理部１における、図４に示す各ブロックについてのデータフローについて説明する図である。
【図６】図６は、図２に示すフィルター処理部１における、副走査方向の先頭ブロックのデータフローについて説明する図である。
【図７】図７は、図１に示す画像処理装置における、復号された画像データのブロックと、フィルター演算される画像データとの対応関係を説明する図である。
【図８】図８は、図２に示すフィルター処理部１における１ブロック分の処理について説明するフローチャートである。
【発明を実施するための形態】
【００１４】
以下、図に基づいて本発明の実施の形態を説明する。
【００１５】
図１は、本発明の実施の形態に係る画像処理装置の構成を示すブロック図である。図１に示す画像処理装置は、フィルター処理部１、デコード回路２、ＤＲＡＭ３、メモリーバス４、リードＤＭＡＣ（Direct Memory Access Controller）５、ライトＤＭＡＣ６、リードＤＭＡＣ７、およびライトＤＭＡＣ８を備える。
【００１６】
フィルター処理部１は、デコード回路２により復号された画像データ（符号化されていない画像データ、つまり、ラスター画像データ）に対してブロックごとに、所定のフィルターサイズのフィルター演算を行う。
【００１７】
デコード回路２は、例えばＪＰＥＧ（Joint Photographic Experts Group）などの所定の方式で符号化されている画像データを、所定サイズのブロック（例えば１２８画素×１２８ライン）ごとに走査方向に沿って順番に復号する。
【００１８】
ＤＲＡＭ３は、符号化された画像データ、復号された画像データの一部、およびフィルター処理された画像データが格納されるメモリーである。
【００１９】
メモリーバス４には、ＤＲＡＭ３、リードＤＭＡＣ５，７およびライトＤＭＡＣ６，８が接続されている。
【００２０】
リードＤＭＡＣ５，７は、メモリーバス４を介してＤＲＡＭ３からのデータの読み出しを行う。ライトＤＭＡＣ６，８は、メモリーバス４を介してＤＲＡＭ３へのデータの書き込みを行う。
【００２１】
リードＤＭＡＣ５は、特定データ量のバースト転送で、各ブロックの符号化された画像データをＤＲＡＭ３からデコード回路２へ読み出す第１メモリーコントローラーである。
【００２２】
ライトＤＭＡＣ６は、特定データ量のバースト転送で、ブロックの副走査方向の後端部分の復号された画像データをデコード回路２からＤＲＡＭ３へ書き込む第２メモリーコントローラーである。
【００２３】
なお、ライトＤＭＡＣ６によりＤＲＡＭ３へ書き込まれるブロックの副走査方向の後端部分は、少なくともフィルター処理部１のフィルターサイズの副走査方向のライン数より１だけ少ない数のラインである。
【００２４】
リードＤＭＡＣ７は、特定データ量のバースト転送を所定回数行ってブロックの１ライン分ずつ、副走査方向における１つ前のブロックについて復号された画像データをＤＲＡＭ３から読み出す第３メモリーコントローラーである。
【００２５】
なお、リードＤＲＡＭ７によるリード後、ＤＲＡＭ３内の復号された画像データは破棄可能であるため、ライトＤＲＡＭ６は、リードＤＲＡＭ７によるリード後の画像データに上書きして、画像データをＤＲＡＭ３に書き込むようにしてもよい。
【００２６】
ライトＤＭＡＣ８は、特定データ量のバースト転送で、フィルター処理された画像データをフィルター処理部１からＤＲＡＭ３へ書き込む第４メモリーコントローラーである。
【００２７】
図２は、図１におけるフィルター処理部１の構成を示すブロック図である。
【００２８】
図２に示すフィルター処理部１は、フィルター演算回路１１、ラインバッファー１２、データ入力回路１３、境界バッファー１４、および転送回路１５を備える。
【００２９】
フィルター演算回路１１は、画像処理のために、所定のフィルターサイズでフィルター演算を行う。例えば、フィルター演算回路１１は、注目画素を中心とした９画素×９ラインのフィルターサイズで、注目画素についてのフィルター演算結果を得るためのフィルター演算を行う。
【００３０】
具体的には、副走査方向において第１ブロックに第２ブロックが隣接しており、かつ、副走査方向において第３ブロックに第４ブロックが隣接しており、かつ、主走査方向において第１ブロックに第３ブロックが隣接している場合において、フィルター演算回路１１は、境界バッファー１４に格納されている画像データとラインバッファー１２に格納されている画像データとを使用して、第１ブロックの副走査方向の後端部分の画像データと第２ブロックの画像データとに対する主走査方向の後端部分、並びに第３ブロックの副走査方向の後端部分および第４ブロックに対するフィルター演算を連続的に行う。
【００３１】
ラインバッファー１２は、少なくともフィルターサイズのライン数のラインの画像データを格納可能なメモリーである。ラインバッファー１２には、例えばＳＲＡＭ（Static RAM）が使用される。例えば、フィルターサイズが９画素×９ラインであり、ブロックにおける１ラインの画素数が１２８である場合、ラインバッファー１２は、１２８画素×９ラインの画像データを格納可能である。
【００３２】
データ入力回路１３は、リードＤＲＡＭ７により読み出された復号された画像データ（副走査方向における１つ前のブロックの画像データ）およびデコード回路２により復号された画像データを順番にラインバッファー１２へ格納する。
【００３３】
データ入力回路１３は、まず、リードＤＲＡＭ７により読み出された所定ライン数の画像データをラインバッファー１２に順番に格納し、それに続き、デコード回路２により復号された画像データを順番にラインバッファー１２へ格納する。
【００３４】
境界バッファー１４は、ラインバッファー１２に読み出された画像データのうち、主走査方向における次のブロックとともにフィルター演算に使用されるものを一時的に保持するためのメモリーである。境界バッファー１４には、例えばＳＲＡＭが使用される。
【００３５】
転送回路１５は、ラインバッファー１２の各ライン内の主走査方向の後端部分の画像データを境界バッファー１４へ転送する。この後端部分は、少なくともフィルターサイズの主走査方向の画素数より１だけ少ない数の画素である。ここでは、この後端部分は、フィルターサイズの主走査方向の画素数より１だけ少ない数の画素である。
【００３６】
この実施の形態では、転送回路１５は、ラインバッファー１２内のラインがフィルター演算に不要となった時点で（つまり、そのラインに次の１ラインを上書き可能となった時点で）、不要となったそのラインの後端部分の画像データを境界バッファー１４へ転送する。
【００３７】
なお、１ブロックの１ライン分の画像データのデータ量は、上述の特定データ量に所定整数ｍを乗じた量以下であって、かつ、１ブロックの１ライン分のフィルター演算に必要な画像データのデータ量が、上述の特定データ量に上述のｍを乗じた量を超えるように、１ブロックの１ラインが有する画素の数が設定されている。なお、１ブロックの１ライン分の画像データのデータ量が、上述の特定データ量の整数倍となっていることが好ましい。
【００３８】
図３は、原画像におけるブロックの一例を示す図である。例えば図３に示すように１ブロックは、１２８画素×１２８ラインの領域とされ、１画素の画像データのサイズが１バイトである場合、１ラインの画像データのデータ量は、１２８バイトとなり、バースト転送のデータ量である６４バイトの２倍となる。フィルター演算回路１１のフィルターサイズが９画素×９ラインである場合、１ブロックの上側および下側並びに前側および後側のそれぞれ４ラインが、１ブロックのフィルター出力を得るのにさらに必要となる。つまり、この場合、１ブロックのフィルター出力を得るのに、１３６画素×１３６ラインの画像データが必要になる。
【００３９】
図４は、原画像において主走査方向および副走査方向に連続するブロックを説明する図である。図５は、図４に示す各ブロックのデータフローについて説明する図である。
【００４０】
例えば図４に示すように１２８画素×１２８ラインのブロック６１−（ｉ，１），・・・，６１−（ｉ，ｊ−１），６１−（ｉ，ｊ），・・・が副走査方向に配列されている場合、ブロック６１−（ｉ，ｊ−１）についての画像データの復号が完了すると、ブロック６１−（ｉ，ｊ−１）の後端部分（１２８画素×８ライン）が、６１−（ｉ，ｊ）が処理対象ブロックになるまでＤＲＡＭ３にバッファリングされる。そして、ブロック６１−（ｉ，ｊ）が処理対象ブロックになると、ブロック６１−（ｉ，ｊ−１）の後端部分（１２８画素×８ライン）がＤＲＡＭ３から読み出され、また、ブロック６１−（ｉ，ｊ）についての復号された画像データ（１２８画素×１２８ライン）がデコード回路２から読み出されることで、処理対象のブロック６１−（ｉ，ｊ）について、１２８画素×１３６ライン分の画像データが順次ラインバッファー１２に用意される。
【００４１】
例えば図４に示すように１２８画素×１２８ラインのブロック６１−（１，ｊ）〜６１−（Ｎ，ｊ）が主走査方向に配列されている場合、まず、主走査方向の先頭のブロック６１−（１，ｊ）については、図３に示すように周辺の８ラインを含む１３６ライン（つまり、１２８画素×１３６ラインの画像データ）が、上述のようにして、ＤＲＡＭ３およびデコード回路２からラインバッファー１２へ読み出されていき、ラインバッファー１２内の１ラインあたり１２８画素で９ラインを使用して、１２８ラインについて１ラインあたり１２４画素のフィルター出力が連続的に得られる。
【００４２】
その間、ラインバッファー１２へ順次読み出された１２８画素×１３６ライン分の画像データのうち、後端部分６２−１（８画素×１３６ラインの領域）の画像データが境界バッファー１４へ順次転送される。
【００４３】
次のブロック６１−（２，ｊ）については、同様に、周辺の８ラインを含む１３６ライン（１ライン１２８画素）が、ＤＲＡＭ３およびデコード回路２からラインバッファー１２へ読み出されていき、１２８ラインについて、境界バッファー１４内の８画素およびラインバッファー内の１２８画素の合計１３６画素のラインを９本使用して、１ラインあたり、ブロック６１−１の残り４画素のフィルター出力およびブロック６１−（２，ｊ）の１２４画素のフィルター出力が連続的に得られる。
【００４４】
その間、ラインバッファー１２へ読み出された１２８画素×１３６ライン分の画像データのうち、後端部分６２−２（８画素×１３６ラインの領域）の画像データが境界バッファー１４へ順次転送される。このとき、後端部分６２−１のうちの不要となったラインに、順次、後端部分６２−２のラインが上書きされていく。
【００４５】
その後、最後のブロック６１−（Ｎ，ｊ）までの各ブロック６１−（ｉ，ｊ）について、ブロック６２−２についての処理と同様の処理が行われる。ただし、最後のブロック６１−（Ｎ，ｊ）の主走査方向の画素数が１２４以外であれば、最後のブロック６１−（Ｎ，ｊ）については、各ラインでフィルター出力が得られる画素の数は１２８未満となる。
【００４６】
なお、原画像の辺を含むブロックについては、例えば、その辺の外側の画素の画素値をゼロとしてフィルター演算を行えばよい。
【００４７】
図６は、図２に示すフィルター処理部１における、副走査方向の先頭ブロック６１−（ｉ，１）のデータフローについて説明する図である。
【００４８】
副走査方向の先頭ブロック６１−（ｉ，１）については、ＤＲＡＭ３から読み出すべき画像データがないため、図６に示すように、デコード回路２から読み出した復号された画像データのみに対してフィルター演算が行われる。
【００４９】
次に、上記画像処理装置の動作について説明する。
【００５０】
デコード回路２は、リードＤＭＡＣ５を使用して、符号化された画像データをＤＲＡＭ３から読み出し、主走査方向および副走査方向の先頭のブロック６１−（１，１）（上述の例では、１２８画素×１２８ラインのブロック）から、主走査方向および副走査方向に沿って、順番に、１ブロックずつ、処理対象のブロックを選択していき、処理対象のブロック６１−（ｉ，ｊ）の符号化された画像データを復号する。
【００５１】
各ブロック６１−（ｉ，ｊ）の復号された画像データは、デコード回路２からフィルター処理部１へ読み出されるとともに、各ブロック６１−（ｉ，ｊ）の復号された画像データの後端の所定ライン部分は、ライトＤＭＡＣ６により、ＤＲＡＭ３の所定記憶領域に書き込まれる。
【００５２】
副走査方向の先頭ブロック６１−（ｉ，１）については、フィルター処理部１は、図６に示すように、デコード回路２および境界バッファー１４から１ブロック分の画像データを読み出し、フィルター演算（上述の例では、１２４ライン分のフィルター演算）を連続的に行う。
【００５３】
副走査方向の先頭ブロック以外のブロックについては、フィルター処理部１は、データ入力回路１３で、図５に示すように、リードＤＭＡＣ７を使用してＤＲＡＭ３の所定記憶領域から所定ライン分の画像データ（副走査方向における１つ前のブロックの副走査方向の後端部分の画像データ）を読み出すとともにデコード回路２および境界バッファー１４から１ブロック分の画像データを読み出し、フィルター演算（上述の例では、１２８ライン分のフィルター演算）を連続的に行う。
【００５４】
つまり、処理対象のブロックに対して副走査方向における１つ前のブロックの副走査方向の後端部分の画像データ、処理対象のブロックに対して主走査方向における１つ前のブロックの主走査方向の後端部分の画像データ、および処理対象のブロックについて復号された画像データに対してフィルター演算が行われる。
【００５５】
このように、原画像において、各ブロックの復号された画像データの後端部分がＤＲＡＭ３の所定記憶領域にバッファリングされ、副走査方向において隣接する後続ブロックのフィルター演算に使用される。
【００５６】
これにより、全ブロックの画像データを復号してページメモリーなどに格納した後にフィルター演算を開始する必要がなく、１つのブロックに対して連続的に復号およびフィルター演算が行われる。
【００５７】
図７は、図１に示す画像処理装置における、復号された画像データのブロックと、フィルター演算される画像データとの対応関係を説明する図である。
【００５８】
具体的には、図７に示すように、副走査方向において第１ブロック６１−（ｉ−１，ｊ−１）に第２ブロック６１−（ｉ−１，ｊ）が隣接しており、かつ、副走査方向において第３ブロック６１−（ｉ，ｊ−１）に第４ブロック６１−（ｉ，ｊ）が隣接しており、かつ、主走査方向において第１ブロック６１−（ｉ−１，ｊ−１）に第３ブロック６１−（ｉ，ｊ−１）が隣接している場合において、フィルター演算回路１１は、境界バッファー１４に格納されている画像データとラインバッファー１２に格納されている画像データとを使用して、（ａ）第１ブロック６１−（ｉ−１，ｊ−１）の副走査方向の後端部分７１−（ｉ−１，ｊ−１）と第２ブロック６１−（ｉ−１，ｊ）とに対する主走査方向の後端部分８１−（ｉ−１，ｊ）、並びに（ｂ）第３ブロック６１−（ｉ，ｊ−１）の副走査方向の後端部分７１−（ｉ，ｊ−１）および（ｃ）第４ブロック６１−（ｉ，ｊ）に対するフィルター演算を連続的に行う。
【００５９】
ここで、主走査方向の後端部分８１−（ｉ−１，ｊ）は、第１ブロック６１−（ｉ−１，ｊ−１）の副走査方向の後端部分７１−（ｉ−１，ｊ−１）の主走査方向の後端部分７２−（ｉ−１，ｊ−１）を含んでいる。
【００６０】
第１ブロック６１−（ｉ−１，ｊ−１）の副走査方向の後端部分７１−（ｉ−１，ｊ−１）および第３ブロック６１−（ｉ，ｊ−１）の副走査方向の後端部分７１−（ｉ，ｊ−１）は、ＤＲＡＭ３でバッファリングされ、ラインバッファー１２へ適時読み出され使用される。また、主走査方向の後端部分８１−（ｉ−１，ｊ）は、境界バッファー１４でバッファリングされ、適時読み出され使用される。
【００６１】
このように、第１ブロック６１−（ｉ−１，ｊ−１）の副走査方向の後端部分７１−（ｉ−１，ｊ−１）および第２ブロック６１−（ｉ−１，ｊ）に対する主走査方向の後端部分８１−（ｉ−１，ｊ）、並びに第３ブロックの副走査方向の後端部分７１−（ｉ，ｊ−１）および第４ブロック６１−（ｉ，ｊ）が、１３６画素×１３６ラインの領域の画素データとなり、１２８画素×１２８ラインの領域９１−（ｉ，ｊ）に対するフィルター演算が可能となる。
【００６２】
そして、これにより、図７に示す１２８画素×１２８ラインの領域９１−（ｉ，ｊ）のフィルター演算結果が得られる。領域９１−（ｉ，ｊ）は、領域１０１，１０２，１０３，１０４を含み、領域１０１は、第１ブロック６１−（ｉ−１，ｊ−１）の一部（４画素×４ライン）であり、領域１０２は、第２ブロック６１−（ｉ−１，ｊ）の一部（１２４画素×４ライン）であり、領域１０３は、第３ブロック６１−（ｉ，ｊ−１）の一部（４画素×１２４ライン）であり、領域１０４は、第４ブロック６１−（ｉ，ｊ）の一部（１２４画素×１２４ライン）である。
【００６３】
そして、フィルター処理部１は、フィルター演算後の各ブロックの画像データを、ライトＤＭＡＣ８を使用して、特定データ量のバースト転送でＤＲＡＭ３に書き込む。
【００６４】
このようにして、走査方向に沿って順番に処理対象のブロックが選択されていき、各ブロックに対して復号およびフィルター演算が連続的に実行される。
【００６５】
ここで、フィルター処理部１の処理について説明する。図８は、図２に示すフィルター処理部１における１ブロック分の処理について説明するフローチャートである。
【００６６】
まず、データ入力回路１３は、１ブロック分のフィルター演算に必要な１３６ラインの先頭から９ライン分の画像データを、デコード回路２またはＤＲＡＭ３からラインバッファー１２に読み出す（ステップＳ１）。
【００６７】
次に、フィルター演算回路１１は、フィルター出力を演算すべき注目画素の位置に応じて、ラインバッファー１２、または、ラインバッファー１２および境界バッファー１４の両方から、フィルター演算に必要な画素の画像データを読み出し、読み出した画像データを使用してフィルター演算を行い、その演算結果をフィルター出力として出力する。フィルター演算回路１１は、注目画素を１画素ずつ移動させながら、１ライン分の画素について順番にフィルター演算を行う（ステップＳ２）。
【００６８】
１ライン分のフィルター演算が完了すると、フィルター演算回路１１からの指令に基づいて、転送回路１５は、そのラインより後続のラインについてのフィルター演算に使用しないラインの後端部分（ここでは８画素）の画像データを、ラインバッファー１２から読み出し、境界バッファー１４へ書き込む（ステップＳ３）。
【００６９】
そして、フィルター演算回路１１は、ブロック内の最終ラインのフィルター出力が完了したか否かを判定する（ステップＳ４）。
【００７０】
ブロック内の最終ラインのフィルター出力が完了していなければ、フィルター演算回路１１からの指令に基づいて、データ入力回路１３は、後続の１ライン（１２８画素）の画像データをデコード回路２から読み出し、ラインバッファー１２における、不要なラインに上書きする（ステップＳ５）。そして、ステップＳ２に戻り、次のラインについてのフィルター出力を得るために、フィルター演算を行う（ステップＳ２）。
【００７１】
一方、フィルター演算回路１１は、ブロック内の最終ラインのフィルター出力が完了していれば、１ブロック分（つまり、前ブロックの残り４画素×１２８ライン分と当該ブロックの１２４画素×１２８ライン分）のフィルター出力が完了したと判定し、１ブロック分の処理を終了する。
【００７２】
このようにして、主走査方向に沿った１つのブロック列において、前ブロックの残りと現ブロックの一部により構成される１ブロック分の処理が繰り返し行われていく。そして、主走査方向の終端ブロックについての処理が完了すると、副走査方向に隣接する次のブロック列について同様に処理が実行される。
【００７３】
以上のように、上記実施の形態によれば、デコード回路２は、符号化された画像データを復号する。フィルター演算回路１１は、デコード回路２により復号された画像データに対して所定のフィルターサイズでフィルター演算を行う。
【００７４】
リードＤＭＡＣ５は、特定データ量のバースト転送で、各ブロックの符号化された画像データをＤＲＡＭ３からデコード回路２へ読み出す。ライトＤＭＡＣ６は、特定データ量のバースト転送で、ブロックの副走査方向の後端部分の復号された画像データをデコード回路２からＤＲＡＭ３へ書き込む。リードＤＭＡＣ７は、特定データ量のバースト転送を所定回数行ってブロックの１ライン分ずつ、副走査方向における１つ前のブロックについて復号された画像データをＤＲＡＭ３から読み出す。
【００７５】
データ入力回路１３は、リードＤＭＡＣ７により読み出された復号された画像データおよびデコード回路２により復号された画像データを順番にラインバッファー１２へ格納する。転送回路１５は、ラインバッファー１２の各ライン内の主走査方向の後端部分の画像データを境界バッファー１４へ転送する。
【００７６】
ライトＤＭＡＣ６によりＤＲＡＭ３へ書き込まれるブロックの副走査方向の後端部分は、少なくともフィルターサイズの副走査方向のライン数より１だけ少ない数のラインである。各ライン内の主走査方向の後端部分は、少なくともフィルターサイズの主走査方向の画素数より１だけ少ない数の画素である。
【００７７】
そして、フィルター演算回路１１は、副走査方向において第１ブロックに第２ブロックが隣接しており、かつ、副走査方向において第３ブロックに第４ブロックが隣接しており、かつ、主走査方向において第１ブロックに第３ブロックが隣接している場合において、境界バッファー１４に格納されている画像データとラインバッファー１２に格納されている画像データとを使用して、第１ブロックの副走査方向の後端部分と第２ブロックとに対する主走査方向の後端部分、並びに第３ブロックの副走査方向の後端部分および第４ブロックに対するフィルター演算を連続的に行う。
【００７８】
これにより、バースト転送の回数が少なくて済むため、メモリーバス４の帯域を多く使用せずにフィルター演算を実行することができる。
【００７９】
また、上記実施の形態によれば、復号された画像データのうち、副走査方向において隣接する次のブロックのフィルター演算に使用する部分がＤＲＡＭ３にバッファリングされる。
【００８０】
これにより、全ブロックの画像データを復号してページメモリーなどに格納した後にフィルター演算を開始する必要がなく、ブロック単位で連続的に復号およびフィルター演算が行われる。
【００８１】
なお、上述の実施の形態に対する様々な変更および修正については、当業者には明らかである。そのような変更および修正は、その主題の趣旨および範囲から離れることなく、かつ、意図された利点を弱めることなく行われてもよい。つまり、そのような変更および修正が請求の範囲に含まれることを意図している。
【００８２】
例えば、上記実施の形態におけるブロックサイズ、フィルターサイズなどの一例であり、上記の数値に限定されるものではない。
【産業上の利用可能性】
【００８３】
本発明は、例えば、プリンター、複合機などの画像形成装置内の画像処理装置に適用可能である。
【符号の説明】
【００８４】
１  フィルター処理部
２  デコード回路
３  ＤＲＡＭ（メモリーの一例）
５  リードＤＭＡＣ（第１メモリーコントローラーの一例）
６  ライトＤＭＡＣ（第２メモリーコントローラーの一例）
７  リードＤＭＡＣ（第３メモリーコントローラーの一例）
１１  フィルター演算回路
１２  ラインバッファー
１３  データ入力回路
１４  境界バッファー
１５  転送回路
【図１】
0006395000.tif 000002
【図２】
0006395000.tif 000003
【図３】
0006395000.tif 000004
【図４】
0006395000.tif 000005
【図５】
0006395000.tif 000006
【図６】
0006395000.tif 000007
【図７】
0006395000.tif 000008
【図８】
0006395000.tif 000009