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