(57)【要約】【課題】本発明は、メモリの帯域の無駄な消費を抑制すると共に、主メモリへの重複アクセスを抑制することができる画像処理装置を提供する。【解決手段】主メモリ１０２上に展開された画像データから主走査方向及び副走査方向に分割された矩形の単位で画像データを読み取り画像処理を行う画像処理装置１００において、分割された矩形を囲む矩形の領域であって、隣り合う２つの矩形間の境界を含むように互いに重複する部分を有する参照領域に対して画像処理を行う画像処理手段が、重複する部分に画像処理を行うときに、読み取った画像データをキャッシュに格納する。【選択図】図６
2010244113.tif 000002
【特許請求の範囲】
【請求項１】
画像データを記憶する第１記憶手段と、
前記第１記憶手段に記憶された画像データを所定サイズの複数の矩形画像データに分割して読み出す読み出し手段と、
前記複数の矩形画像データを囲む参照領域の画像データであって、隣り合う２つの矩形画像データ間の境界を含むように互いに重複する部分を有する参照領域の画像データを記憶する第２記憶手段と、
前記読み出し手段により読み出された前記複数の矩形画像データと、前記第２記憶手段に記憶された前記参照領域の画像データに基づいて画像処理を行う画像処理手段と、
前記画像処理手段からの要求に応じて前記参照領域の画像データを前記第２記憶手段から前記画像処理手段へ転送するよう制御するキャッシュ制御手段とを備えることを特徴とする画像処理装置。
【請求項２】
前記第２記憶手段は、
前記重複する部分のうち、主方向の重複部分と副方向の重複部分とが交差する格子状の領域を除いた前記主方向の重複部分を記憶する第１のキャッシュと、
前記重複する部分のうち、前記格子状の領域を含む前記副方向の重複部分を記憶する第２のキャッシュを有することを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記第２記憶手段は、
前記重複する部分のうち、主方向の重複部分と副方向の重複部分とが交差する格子状の領域を除いた前記副方向の重複部分を記憶する第２のキャッシュと、
前記重複する部分のうち、前記格子状の領域を含む前記主方向の重複部分を記憶する第１のキャッシュを有することを特徴とする請求項１記載の画像処理装置。
【請求項４】
画像データを記憶する第１記憶手段に記憶する第１記憶工程と、
前記第１記憶手段に記憶された画像データを所定サイズの複数の矩形画像データに分割して読み出す読み出し工程と、
前記複数の矩形画像データを囲む参照領域の画像データであって、隣り合う２つの矩形画像データ間の境界を含むように互い重複する部分を有する参照領域の画像データを第２記憶手段に記憶する第２記憶工程と、
前記読み出し工程にて読み出された前記複数の矩形画像データと、前記第２記憶手段に記憶された前記参照領域の画像データに基づいて画像処理手段により画像処理を行う画像処理工程と、
前記画像処理手段からの要求に応じて前記参照領域の画像データを前記第２記憶手段から前記画像処理手段へ転送するよう制御するキャッシュ制御工程とを備えることを特徴とする画像処理方法。
【請求項５】
請求項４記載の画像処理方法をコンピュータに実行させるためのコンピュータに読み取り可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置および画像処理方法、並びにプログラムに関するものである。
【背景技術】
【０００２】
従来、メモリに格納された画像データに対して画像処理を実行する画像処理装置には、矩形領域単位で画像処理を実行するものがあった。矩形領域単位で画像処理を行う画像処理部が対象となる矩形領域に対して画像処理（例えばフィルタ処理）を実行するために、図１７（ａ）、図１７（ｂ）に示すように、より大きな参照領域を必要とする画像処理装置が開示されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−２２０５８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来の技術では、画像処理部が対象領域の画像処理を行うために、対象領域より広い参照領域を画像データが展開されたメモリから読み取る必要がある。メモリに格納された画像データは、対象領域の大きさの単位で縦横に分割されるので、参照領域としては縦横に隣接した矩形領域と重複した部分を持つことになる。そのため、画像処理部は、重複した部分に対して、画像全体の画像処理を行う過程において複数回重複して読み取りを行う必要があり、メモリの帯域を無駄に消費するという問題がある。
【０００５】
本発明は、上記問題に鑑みて成されたものであり、メモリの帯域の無駄な消費を抑制すると共に、主メモリへの重複アクセスを抑制することができる画像処理装置および方法、並びにプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、請求項１記載の画像処理装置は、画像データを記憶する第１記憶手段と、前記第１記憶手段に記憶された画像データを所定サイズの複数の矩形画像データに分割して読み出す読み出し手段と、前記複数の矩形画像データを囲む参照領域の画像データであって、隣り合う２つの矩形画像データ間の境界を含むように互いに重複する部分を有する参照領域の画像データを記憶する第２記憶手段と、前記読み出し手段により読み出された前記複数の矩形画像データと、前記第２記憶手段に記憶された前記参照領域の画像データに基づいて画像処理を行う画像処理手段と、前記画像処理手段からの要求に応じて前記参照領域の画像データを前記第２記憶手段から前記画像処理手段へ転送するよう制御するキャッシュ制御手段とを備えることを特徴とする。
【０００７】
上記目的を達成するために、請求項４記載の画像処理方法は、画像データを記憶する第１記憶手段に記憶する第１記憶工程と、前記第１記憶手段に記憶された画像データを所定サイズの複数の矩形画像データに分割して読み出す読み出し工程と、前記複数の矩形画像データを囲む参照領域の画像データであって、隣り合う２つの矩形画像データ間の境界を含むように互い重複する部分を有する参照領域の画像データを第２記憶手段に記憶する第２記憶工程と、前記読み出し工程にて読み出された前記複数の矩形画像データと、前記第２記憶手段に記憶された前記参照領域の画像データに基づいて画像処理手段により画像処理を行う画像処理工程と、前記画像処理手段からの要求に応じて前記参照領域の画像データを前記第２記憶手段から前記画像処理手段へ転送するよう制御するキャッシュ制御工程とを備えることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、メモリ上に展開された画像データに対して、注目画素としての各矩形領域を順番通りに画像処理することなく、メモリの帯域の無駄な消費を抑制すると共に、主メモリへの重複アクセスを抑制することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の第１の実施形態に係る画像処理装置の概略構成を示すブロック図である。
【図２】矩形領域と該矩形領域を画像処理するために必要な参照領域との関係を示す図である。
【図３】第１の実施形態において使用する定数の定義を説明するための図である。
【図４】主メモリ上の画像データとキャッシュ１上の記憶領域との対応関係を示す図である。
【図５】主メモリ上の画像データとキャッシュ２上の記憶領域との対応関係を示す図である。
【図６】第１の実施形態におけるキャッシュ制御部の制御処理を示すフローチャートである。
【図７】（ａ）は、主メモリのアドレスとキャッシュ１のアドレスとの対応関係を示す図であり、（ｂ）は、主メモリのアドレスとキャッシュ２のアドレスとの対応関係を示す図である。
【図８】画像処理部Ａ，Ｂに実装されるスムージング回路の概略構成を示す図である。
【図９】画像処理部Ａがキャッシュ制御部へ画像データリード要求を出力する際に実行する処理のフローチャートである。
【図１０】画像処理部Ａの詳細構成を示すブロック図である。
【図１１】３ステートラッチバッファの概略構成を示す回路図である。
【図１２】図１０におけるＳＲＡＭの周辺回路の動作を示すタイムチャートである。
【図１３】７×７のウィンドウを示す図である。
【図１４】図１０の論理回路にて行われるスムージング処理の一例を示す図である（その１）。
【図１５】図１０の論理回路にて行われるスムージング処理の一例を示す図である（その２）。
【図１６】図１０の論理回路にて行われるスムージング処理の一例を示す図である（その３）。
【図１７】スムージングによって得られる画像の一例を示す図である。
【図１８】本発明の第２の実施形態において使用する定数の定義を説明するための図である。
【図１９】第２の実施形態における主メモリ上の画像データとキャッシュ１上の記憶領域との対応関係を示す図である。
【図２０】第２の実施形態において主メモリ上の画像データとキャッシュ２上の記憶領域との対応関係を示す図である。
【図２１】第２の実施形態におけるキャッシュ制御部の制御処理を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態を図面を参照して詳細に説明する。
【００１１】
［第１の実施形態］
図１は、本発明の第１の実施形態に係る画像処理装置の概略構成を示すブロック図である。
【００１２】
図１において、１００は画像処理装置であり、画像データ１１０を入力し、描画して画像処理を施した後に、画像データ１１１として出力する。
【００１３】
１０１は描画部であり、入力された画像データ１１０を、バス１０９を介して主メモリ１０２へ展開する。主メモリ１０２は、描画された画像データ１１０を記憶するものである（第１記憶手段）。主メモリ１０２は、必要とされる容量と帯域からＤＤＲ  ＳＤＲＡＭ規格のメモリを想定する。また、主メモリ１０２は２ページ分の画像データを記憶するものとする。これにより、主メモリ１０２へ描画されるデータと画像処理のために読み出されるデータは別ページに割り当てることが可能となり、書き込みと読み出しの調停が容易となる。
【００１４】
画像処理部Ａ１０７と画像処理部Ｂ１０８は、独立して画像処理を行う画像処理回路である。画像処理としては、エッジ強調処理などのフィルタリング処理、スムージング処理などが想定される。いずれも周辺画素を参照して注目画素の値を更新するかまたは画素補完を行うものである。対象とする画素の処理を行う場合、その周辺画素、例えば９×９の周辺領域を参照するものとする。このような画像処理を対象となる矩形領域（矩形画像データ）間の境界部の画素に施すことを考えれば、対象矩形領域に対して主走査方向と副走査方向にそれぞれ４画素ずつ大きな領域が参照領域として必要となる。矩形領域と該矩形領域を画像処理するために必要な参照領域との関係を図２に示す。
【００１５】
図２では、副走査方向（副方向）及び主走査方向（主方向）に矩形の単位で所定サイズ（例えば３×３）に分割された１ページの画像データの一例を示している。例えば、図２の中央の矩形が画像処理の対象となる矩形領域とすると、矩形を囲む矩形の領域であって、隣り合う２つの矩形画像データ間の境界を含むように互いに重複する部分を有する領域が、対象矩形領域を画像処理するために必要な参照領域である。さらに、ページ内の各矩形領域のそれぞれに対して参照領域を考えれば、主走査方向（図の横方向）の重複部分と副走査方向（図の縦方向）の重複部分とが交差する部分が格子状になることがわかる。
【００１６】
画像処理装置１００では、２つの画像処理部Ａ１０７，Ｂ１０８により、主メモリ１０２上の画像データにおける２つの矩形領域に対して同時に平行して画像処理を施すことが可能である。なお、画像処理部が２つであることは本発明を限定するものではない。また、画像処理の種類は本発明を限定するものではない。
【００１７】
図１に戻って、１０４はキャッシュ制御部である。キャッシュ制御部１０４は、画像処理部Ａ１０７，Ｂ１０８から出力される画像データリード命令を受信する。画像データリード命令はデータのアドレス情報を持っている。一度の命令で転送されるデータ量は、主メモリ１０２の転送単位と同じ３２バイトである。キャッシュ制御部１０４は、受信した画像データリード命令を主メモリ１０２へ渡すと共に、該画像データリード命令に応じてキャッシュ１＿１０５及びキャッシュ２＿１０６を制御し、後述する処理を行う。
【００１８】
キャッシュ１＿１０５（第１のキャッシュ）は、主メモリ１０２上に展開された画像データの副走査方向に隣接する２つの矩形領域（矩形画像データ）間の重複部分のデータをキャッシュするＳＲＡＭである（第２記憶手段）。キャッシュ２＿１０６（第２のキャッシュ）は、主メモリ１０２上に展開された画像データの主走査方向に隣接する２つの矩形領域（矩形画像データ）間の重複部分のデータをキャッシュするＳＲＡＭである（第２記憶手段）。
【００１９】
次に、第１の実施形態において使用する定数の定義を図３を参照して説明する。
【００２０】
図３において、ｘ，ｙは画像上の座標を表し、画像の左上が原点であり、ｘが右方向、ｙが左方向となる。Ｘｓ，Ｙｓは矩形の大きさを示す定数である。Ｘｄ，Ｘｅは参照領域がｘ方向に矩形領域よりはみ出る量を示す定数である。Ｙｄ，Ｙｅは参照領域がｙ方向に矩形領域よりはみ出る量を示す定数である。ｍは対象座標が矩形単位でｘ方向にいくつめかを示す変数である。ｎは対象座標が矩形単位でｙ方向にいくつめかを示す変数である。ｕは対象座標が属する（ｍ，ｎ）で区別される領域の中でのｘ方向の相対位置を示す変数である。ｖは対象座標が属する（ｍ，ｎ）で区別される領域の中でのｙ方向の相対位置を示す変数である。
【００２１】
例えば、（ｍ，ｎ）＝（１，２）で示される領域の中でキャッシュ１＿１０５のメモリに対応するのがＣ１（１，２）で示される領域である。また、キャッシュ２＿１０６のメモリに対応するのがＣ２（１，２）で示される領域である。さらにＣ２（１，２）内のＴ１（１，２）で示される領域がＣ１（１，２）に対応するタグ情報とフラグ情報を格納する領域であり、Ｔ２（１，２）はＣ２（１，２）に対応するタグ情報とフラグ情報を格納する領域である。
【００２２】
図４は、第１の実施形態における主メモリ１０２上の画像データとキャッシュ１＿１０５上の記憶領域との対応関係を示す図である。図５は、第１の実施形態における主メモリ１０２上の画像データとキャッシュ２＿１０６上の記憶領域との対応関係を示す図である。
【００２３】
図４及び図５に示す４１０は主メモリ１０２に展開された画像とする。アドレスは画像の左上が原点であり、主走査がＸ方向、副走査がＹ方向となる。ここで、主走査方向の長さは矩形領域１２８個分としている。
【００２４】
図４において、画像４１０内の任意の重複部分Ｃ１（ｍ、ｎ）は、キャッシュ１＿１０５上の一つの記憶領域に対応する。本実施形態において、キャッシュ１＿１０５は、主走査方向は全範囲、副走査方向は矩形単位で４個分の領域内の重複部分に相当する容量を保持している。例えば、画像４１０内のＣ１（１，２）、Ｃ１（２，２）、Ｃ１（３，２）の領域は、キャッシュ１＿１０５内のＣ１（１，２）、Ｃ１（２，２）、Ｃ１（３，２）の領域に対応する。また、画像４１０内のＣ１（１，６）、Ｃ１（２，６）、Ｃ１（３，６）も、キャッシュ１＿１０５内のＣ１（１，２）、Ｃ１（２，２）、Ｃ１（３，２）の領域に対応する。つまり、Ｃ１（１，２）のデータがキャッシュされた後に、Ｃ１（１，６）がアクセスされたならば、キャッシュ１＿１０５内のデータは上書きされることになる。
【００２５】
キャッシュ制御部１０４は、副走査方向の矩形４個分のアドレス領域内でデコードを行い、キャッシュメモリのアドレスを算出する。そのアドレス領域を他と区別する上位アドレスは、タグ情報としてキャッシュに記憶する必要がある。また、キャッシュ内のデータが有効であるか否かを決定するためのフラグ情報も必要である。
【００２６】
図５において、画像４１０内の任意の重複部分Ｃ２（ｍ、ｎ）は、キャッシュ２＿１０６の一つの記憶領域に対応する。本実施形態においては、キャッシュ２＿１０６は、主走査方向は全範囲、副走査方向は矩形単位で４個分の領域内の重複部分に相当する容量を保持している。例えば、画像４１０内のＣ２（１，１）、Ｃ２（１，２）、Ｃ２（１，３）の領域は、キャッシュ２＿１０６内のＣ２（１，１）、Ｃ２（１，２）、Ｃ２（１，３）の領域に対応する。また、画像４１０内のＣ２（１，５）、Ｃ２（１，６）、Ｃ２（１，７）も、キャッシュ２＿１０６内のＣ２（１，１）、Ｃ２（１，２）、Ｃ２（１，３）の領域に対応する。つまり、Ｃ２（１，１）のデータがキャッシュされた後に、Ｃ２（１、５）がアクセスされたならば、キャッシュ２＿１０６内のデータは上書きされることになる。なお、キャッシュメモリのサイズと主メモリ１０２上の記憶領域をどのよう分けてキャッシュメモリに対応させるかなども本発明の制限するところではない。
【００２７】
上述したタグ情報とフラグ情報は、一般的なキャッシュにおいてはキャッシュのデータ単位ごとに用意される。しかし、本実施形態におけるシステムでは、キャッシュメモリへの更新の単位が必ず矩形の各辺に当たる領域であるので、それら各辺に属する領域に一組のタグ情報とフラグ情報を格納することが可能である。つまり、タグ情報とフラグ情報のための格納領域を一般のキャッシュシステムに比べて削減することが可能である。なお、キャッシュとタグの情報を格納するために、別のＳＲＡＭを用意してもよい。ただし、ＳＲＡＭのデバイスとしての個数増加は、半導体上の使用面積として影響が大きいので、より好適な実装形態としてはキャッシュ１の空き領域に格納する方法がある。
【００２８】
上記空き領域は、重複する部分が格子状に交差する領域である。この格子状の領域は、キャッシュ２に割り当てられているので、キャッシュメモリとしてはデータのために使用されない領域になっている。格子状の重複部分が交差する領域は、キャッシュ１に含める実装形態も当然可能である（第２の実施形態）。
【００２９】
図６は、第１の実施形態におけるキャッシュ制御部１０４の制御処理を示すフローチャートである。
【００３０】
図６において、主メモリ１０２への画像描画動作であるステップＳ５０１とステップＳ５０２以降の処理が時分割になっているがこれは説明のわかり易さのためである。先に述べたように、主メモリ１０２を２つの領域に分割し、一方を描画するための領域、他方を読み出すための領域として使用し、両方の動作が終了したときは役割を切り替えて行う方がパフォーマンスの点で好ましい。
【００３１】
ステップＳ５０３において、画像処理部Ａ１０７または画像処理部Ｂ１０８がキャッシュ制御部１０４に画像処理のために画像データリード命令を出力する。２つの画像処理部Ａ１０７，Ｂ１０８は独立して読取動作を行い、キャッシュ制御部１０４は２つの画像処理部から出力された命令からどちらかの命令を選択して、ステップＳ５０４以降の処理を実行する。
【００３２】
ステップＳ５０４において、キャッシュ制御部１０４は、受信した画像データリード命令に含まれるアドレス情報に基づいて、矩形単位の位置（ｍ，ｎ）と矩形内の相対位置（ｕ，ｖ）を算出する。算出方法は以下の式による。
【００３３】
ｘ＝Ａ％Ｐ
ｙ＝Ａ／Ｐ
ｍ＝（｜ｘ−Ｘｅ｜）／Ｘｓ
ｎ＝（｜ｙ−Ｙｅ｜）／Ｙｓ
ｕ＝（ｘ−Ｘｅ）％Ｘｓ
ｖ＝（ｙ−Ｙｅ）％Ｙｓ
Ａは画像データリード要求のアドレスであり，％は除算の余りを求めるものであり、／は除算の商を求めるものである。除算の処理のプロセスを簡略化するために、Ｐ，Ｘｓ，Ｙｓは２のべき乗であることが好ましい。２のべき乗による割り算はビットシフト処理により置き換えられる。
【００３４】
ステップＳ５０５において、キャッシュ制御部１０４は、要求アドレスがキャッシュ２＿１０６の重複部分内であるかどうかを判断する。上記アドレスがキャッシュ２＿１０６の重複部分内であることの条件式を以下に示す。
【００３５】
Ｘｓ−Ｘｄ≦ｕ＜Ｘｓ＋Ｘｅ
ステップＳ５０５の判別の結果、要求アドレスがキャッシュ２＿１０６の重複部分内であると判断されたときは（ステップＳ５０５でＹＥＳ）、ステップＳ５１０に進む。
【００３６】
ステップＳ５１０において、（ｍ，ｎ）で指定される矩形の右辺重複部のキャッシュ情報（キャッシュのタグとフラグの情報）をキャッシュ１＿１０５からリードする。キャッシュ１＿１０５上のキャッシュ情報が格納されているアドレスは以下の式により与えられる。
【００３７】
ｎ（Ｙｄ＋Ｙe）Ｐ＋Ｘｓ（ｍ＋１）
次に、ステップＳ５１１において、右辺重複部のキャッシュフラグが有効であれば（ステップＳ５１１でＹＥＳ）、ステップＳ５１２にて、キャッシュ制御部１０４は、キャッシュ２＿１０６からデータをリードする。キャッシュ２＿１０６上のデータが格納されているアドレスは以下の式により与えられる。
【００３８】
ｙ（Ｘｄ＋Ｘｅ）Ｐ／Ｘｓ＋ｍ（Ｘｄ＋Ｘｅ）＋ｕ−Ｘｓ＋Ｘｄ＋Ｘｅ
ステップＳ５１１において、右辺重複部のキャッシュフラグが無効であれば（ステップＳ５１１でＮＯ）、ステップＳ５１３にて、キャッシュ制御部１０４は、主メモリ１０２からデータをリードし、さらにキャッシュの相当するアドレスにデータを格納する。そのアドレスは上記の式で与えられる。
【００３９】
次に、ステップＳ５１４にて、キャッシュ制御部１０４は、辺の最後のアクセスであるか否かを判定し、Ｙｅｓのときのみキャッシュ情報（キャッシュのタグとフラグの情報）をキャッシュ１＿１０５の該当個所に格納して更新する（ステップＳ５１５）。アドレスは先に述べた式で与えられる。
【００４０】
ステップＳ５０５の判別の結果、要求アドレスがキャッシュ２＿１０６の重複部分内でないと判断されたときは（ステップＳ５０５でＮＯ）、ステップＳ５０６へ分岐する。さらに、要求アドレスがキャッシュ１＿１０５の重複部分内であるかどうか、次式によって判断する。次式が成立したときは、キャッシュ１＿１０５の重複部分であることを意味する。
【００４１】
Ｙｓ−Ｙｄ≦ｖ＜Ｙｓ＋Ｙｅ
ステップＳ５０６の判別の結果、重複部分外であれば（ステップＳ５０６でＮＯ）、キャッシュ制御部１０４は、主メモリ１０２からデータをリードする（ステップＳ５１６）。一方、要求アドレスがキャッシュ１＿１０５の重複部分内であると判断されたときは（ステップＳ５０６でＹＥＳ）、ステップＳ５０７にて、キャッシュ制御部１０４は、キャッシュ１＿１０５からデータをリードする。キャッシュ１＿１０５のデータが格納されているアドレスは以下の式により与えられる。
【００４２】
Ｐ｛ｎ（Ｙｄ＋Ｙｅ）＋ｖ−Ｙｓ＋Ｙｄ＋Ｙｅ｝＋ｘ
ステップＳ５０８において、右辺重複部のキャッシュフラグが無効であれば（ステップＳ５０８でＮＯ）、ステップＳ５１３へ進む。一方、右辺重複部のキャッシュフラグが有効であれば（ステップＳ５０８でＹＥＳ）、ステップＳ５０９にて、キャッシュ制御部１０４は、キャッシュ１＿１０５からデータをリードする。
【００４３】
以上が１回のデータ転送要求に対するキャッシュ制御部１０４の制御フローであり、それらはステップＳ５１６によって全データの処理終了が判断されるまで繰り返される。例えば、Ｘｓ＝Ｙｓ＝０ｘ４０（６４）、Ｘｅ＝Ｙｅ＝Ｘｄ＝Ｙｄ＝４、Ｐ＝０ｘ２０００（８１９２）、ページの副走査方向のサイズ＝０ｘ２０００（８１９２）とする。そうすると、主メモリ１０２のアドレスとキャッシュ１＿１０５のアドレスとの対応関係と主メモリ１０２のアドレスとキャッシュ２＿１０６のアドレスとの関係は図７（ａ）、図７（ｂ）のようになる。ただし、ここで記載されるアドレスは、画素の単位で表現している。つまり、１画素につき１バイトであれば表のとおりであるが、例えば１画素が４バイトの領域をとるシステムであれば、アドレスは４を乗じた値になる。
【００４４】
図８は、画像処理部Ａ１０７に実装されるスムージング回路の概略構成を示す図である。なお、図示例では、画像処理部Ｂ１０８は、画像処理部Ａ１０７と同一の構成を有することから、その記載を省略する。
【００４５】
画像処理部Ａ１０７，Ｂ１０８は、それぞれスムージング機能を有する。２つの画像処理部Ａ１０７，Ｂ１０８を並列に動作させることにより、全体の処理のパフォーマンスを向上することが可能である。
【００４６】
画像処理部Ａ１０７，Ｂ１０８は、バスインターフェースであるインターフェース部１０が必要な画像データ、つまり矩形領域の周囲の重複部分を含むエリアの画像データを主メモリ１０２から読み取る。そして、内部で処理した後に、矩形領域のエリアのみの画像データを出力部１０３へ渡す。
【００４７】
インターフェース部１０は、受信したデータをシリアルデータに変換して記憶部１７へＶＣＬＫに同期させて転送する。記憶部１７は、インターフェース部１０より送られてくる画像信号を受け、記憶部１７が主走査７ラインを記憶し、スムージング部１８がそれをウィンドウ状に主走査７ドットに展開してスムージング処理を行って出力する。
【００４８】
画像処理部Ａ１０７，Ｂ１０８がエッジ強調などのフィルタリングを行う画像処理であった場合においても、注目画素（矩形領域）の周辺画素（参照領域）を参照する点で同様な回路構成になる。つまり、画像データバスとのインターフェースと周辺画素を記憶するための記憶部が記憶部１７であり、周辺画素から注目画素のデータを決定する論理決定部がスムージング部１８に相当する。
【００４９】
図９は、画像処理部Ａ１０７がキャッシュ制御部１０４へ画像データリード要求を出力する際に実行する処理のフローチャートである。なお、画像処理部Ｂ１０８についても同様の処理を実行するものである。
【００５０】
まず、ステップＳ８０１では、画像処理部Ａ１０７は、不図示のアドレスレジスタに初期アドレスの設定を行う。このアドレスレジスタの値は、画像データリード要求コマンド送信時に使用される。また、このアドレスは、重複部分を含む矩形領域のアドレスである。
【００５１】
ステップＳ８０２において、画像処理部Ａ１０７は、画像データが受信可能かどうかを判断する。この結果、ＮＯであれば、ＹＥＳになるまでステップＳ８０６において待機（Ｗａｉｔ）する。画像データが受信可能であれば、ステップＳ８０３において、アドレスを含む画像データリード要求コマンドをキャッシュ制御部１０４へ送信する。
【００５２】
次に、ステップＳ８０４において、画像処理部Ａ１０７は、アドレスの値をチェックして、重複部分を含む画像読み取り領域の右端でなければ、ステップＳ８０７へ遷移する。そして、主走査方向の次のアクセスアドレスを上記アドレスレジスタへセットし、ステップＳ８０２へ戻る。一方、カレントのアドレスが画像読み取り領域の右端であれば、ステップＳ８０５において、カレントのラインが最終ラインであるかどうかの検査がなされ、Ｙｅｓであれば本処理を終了する。一方、Ｎｏであれば、ステップＳ８０８において、次ラインの左端のアドレスが上記アドレスレジスタへセットされ、ステップＳ８０２へ戻る。
【００５３】
図１０は、画像処理部Ａ１０７の詳細構成を示すブロック図である。
【００５４】
同図に示した画像処理部Ａ１０７には、図８のインターフェース部１０から画像転送クロックＶＣＬＫと画像クロックＶＣＬＫと同位相で８倍の周波数のシステムクロックＳＣＬＫ、そして画像クロックＶＣＬＫに同期してシリアル画像信号が送られてくる。シリアル画像信号は、３ステートラッチバッファ２４の入力端の１つであるＤ０端子に入力され、Ｄ０に対応する３ステートラッチバッファ２４の出力Ｑ０は、シフトレジスタ２９に入力されると共に、ＳＲＡＭ２１のデータ端子であるＩ／Ｏ１にも入力される。また、ＳＲＡＭ２１のアドレスＡＤ０〜ＡＤ６は、アドレスカウンタ２２より供給される７本のアドレスラインと接続されている。なお、これら７本のアドレスラインにて展開されるアドレス長は、矩形の１ラインと周辺の画像データを記憶するのに十分である。
【００５５】
また、ＳＲＡＭ２１への読み出し信号ＯＥ、書き込み信号ＷＥ、３ステートラッチバッファ２４のラッチ信号ＣＬＫ、出力イネーブル信号ＯＣ、及びアドレスカウンタ２２のクリア信号ＲＥＳＥＴは、制御回路２３にて生成される。
【００５６】
制御回路２３は、画像クロックＶＣＬＫの１周期間にシステムクロックＳＣＬＫにより複数のステートを作り出している。ＳＣＬＫはＶＣＬＫの８倍の周波数なので、画像クロックＶＬＣＫの１周期の間に最大８つのステップを実行することができる。なお、３ステートラッチバッファ２４の各バッファは、図１１に示すように、ラッチ回路２４ａとバッファ回路２４ｂとから構成されている。
【００５７】
次に、図１０におけるＳＲＡＭ２１の周辺回路の動作を図１２を参照して説明する。なお、以下の説明では、第ｎ番目の画素のデータをｄａｔａ（ｎ）、そのデータが格納されるアドレスをａｄｒ（ｎ）と記す。
【００５８】
図１２において、画像クロックＶＬＣＫ（２）が論理ローレベルになってから第１番目のクロックが入る（時刻ｔ１）。そのとき、３ステートラッチバッファ２４の出力イネーブル信号ＯＣ（９）がＦＡＬＳＥ状態になり、３ステートラッチバッファ２４内部のバッファ回路はハイインピーダンス状態となる。すると、今まで出力されていたデータｄａｔａ（ｎ−１）（（１０）バッファ出力参照）の出力が止まり、ＳＲＡＭ２１のデータバスには何も入力されない状態となる。
【００５９】
第２番目のクロックが入ると（時刻ｔ２）、ＯＥ信号（５）がＴＲＵＥ状態となる。同時にＳＲＡＭ２１はリード状態となって（（１２）メモリ状態参照）、アドレスａｄｒ（ｎ）に格納されていたデータｄａｔａ（ｎ）がデータバス上に出力される（（６）メモリ出力データ参照）。
【００６０】
第３番目のクロックにて（時刻ｔ３）、ラッチクロック（７）が立ち上がるので、データバス上に出力されていたデータｄａｔａ（ｎ）が３ステートラッチバッファ２４の内部でラッチされる。しかし、このときは、出力イネーブル信号ＯＣ（９）がＦＡＬＳＥ状態のままなので、データは３ステートラッチバッファ２４の外部には出力されない。そのため、バスの衝突は起こらない。
【００６１】
第４番目のクロックが入ると（時刻ｔ４）、ＳＲＡＭ２１の出力イネーブル信号ＯＥ（５）がＦＡＬＳＥ状態になり、ＳＲＡＭ２１はフローテイング状態となる。そして、第５番目のクロックが入ると（時刻ｔ５）、３ステートラッチバッファ２４の出力イネーブル信号ＯＣ（９）がＴＲＵＥ状態に変化し、ラッチされていたデータｄａｔａ（ｎ）が出力されてＳＲＡＭ２１に送られる。しかし、ＳＲＡＭ２１は、ライトイネーブル信号ＷＥ（１１）がＦＡＬＳＥ状態であるため、書き込みは行われない。
【００６２】
第６番目のクロックにて（時刻ｔ６）、ＳＲＡＭ２１のライトイネーブル信号ＷＥ（１１）がＴＲＵＥ状態となり、ＳＲＡＭ２１にｄａｔａ（ｎ）が書き込まれる。そして、第７番目のクロックが入力されると（時刻ｔ７）、ライトイネーブル信号ＷＥがＦＡＬＳＥ状態となって書き込み動作が完了する。第８番目のクロックが入力されると（時刻ｔ８）、アドレスがａｄｒ（ｎ）からａｄｒ（ｎ＋１）に更新され、一画素のデータに関しての一連の動作が完了する。
【００６３】
以上の動作が３ステートラッチバッファ２４及びＳＲＡＭ２１にて行なわれることで、画像クロックＶＣＬＫの１サイクルの間にＳＲＡＭ２１の端子から出力されたデータが同じアドレスの別端子に入力される。さらに、順次データが送られることによって、常に７ラインの画像データが記憶される。同時に、シフトレジスタ２９〜３５に対しても画像データが供給される。
【００６４】
シフトレジスタ２９〜３５は、それぞれ７ビットのビット長を有する。それらは、３ステートラッチバッファ２４から送られてくる７ラインの画像データに対して直列−並列変換を施すことで主走査方向７ドットずつに展開して、論理回路４１に対しては、計４９ドットの画像データを送出する。論理回路４１では、送出された４９ビットの画像データを、図１３に示すような７×７のウィンドウにあてはめ、以下に説明する定められた論理に従って注目画素Ｄ４を主走査方向に１／４の大きさの４ドットａ，ｂ，ｃ，ｄに分割する。さらに、レーザ光量の大小を指定する信号ＬＰを決定する。なお、ここでは、レーザ光量指定信号Ｐは、画像クロックＶＣＬＫ単位に変化するものとする。
【００６５】
論理回路４１は、ＡＮＤロジツク回路にて構成され、シフトレジスタ２９〜３５からの計４９個のデータの論理積をとり、その結果に応じて、１画素を４分割したａ，ｂ，ｃ，ｄ区画の印字、非印字を表わすＶＤＯ信号とレーザ光量指定信号ＬＰを出力する。このレーザ光量指定信号ＬＰは、１ドット単位で変化し、ＶＤＯ信号は、１／４ドット単位に変化する。
【００６６】
図１４〜図１６は、図１０の論理回路４１にて行われるスムージング処理を説明するための図である。
【００６７】
図１４において、図の右上に示す論理が成立する。つまり、３Ｃ，３Ｄ，３Ｅ，３Ｆ，３Ｇ，４Ａ，４Ｂ，４Ｃが０（白）、４Ｄ，４Ｅ，４Ｆ，４Ｇ，５Ａ，５Ｂ，５Ｃ，５Ｄ，５Ｅ，５Ｆ，５Ｇが１（黒）の場合は、注目画素４ＤのＶＤＯをａ＝０，ｂ＝１，ｃ＝１，ｄ＝０とする。同様に、図１５の場合、注目画素４ＤのＶＤＯをａ＝０，ｂ＝１，ｃ＝１，ｄ＝０とする。また、図１６の場合、注目画素４ＤのＶＤＯをａ＝０，ｂ＝０，ｃ＝１，ｄ＝０とする。以上のスムージング処理により得られる画像の一例を図１７に示す。図１７（ａ）は、スムージング処理前の画像を示す図であり、図１７（ｂ）はスムージング処理後の画像を示す図である。図１７（ａ）において、ドットで示される画素は、図１４〜図１６における黒ドットデータに相当する。また、図１７（ｂ）において、ドットで示される画素は１画素の全区画を印字することを示す。また、図１７（ｂ）において、１画素内の一部が黒で埋められている画素は１画素の一部の区画（黒色）を印字し他の区画（白色）を非印字とすることを示す。
【００６８】
図１７（ａ）及び図１７（ｂ）では、画像処理部が出力する矩形の単位を６４×６４であるときの例を示している。画像処理部としては重複部を含む７０×７０の画像領域を処理する。上述のように、１画素を１／４分割し、各区画を印字または非印字にすることで、エッジや文字の輪郭を滑らかにすることができる。これは、この処理にて感光ドラム上の潜像電位を滑らかにすることができるためであり、電子写真特有の現象である。なお、本実施形態では、水平に近いラインのスムージング処理について説明したが、垂直に近いライン、斜め線、文字の輪郭という部分も、４９画素の論理のデータの論理積をとることで検出できる。いずれの場合も感光ドラム上の潜像電位を滑らかにつなぎ、印字結果を滑らかにするよう注目画素の印字面積及びレーザ光量が決定される。また、論理回路４１の出力であるａ，ｂ，ｃ，ｄは、インターフェース部１０にてデータバスのプロトコルに変換され出力される。
【００６９】
上記第１の実施形態によれば、主メモリ１０２上に展開された画像データに対して、注目画素としての各矩形領域を順番通りに画像処理することなく、メモリの帯域の無駄な消費を抑制すると共に、主メモリへの重複アクセスを抑制することができる。
【００７０】
また、上記第１の実施形態によれば、画像処理の速度的なパフォーマンスの向上が可能となる。なぜなら、画像処理部とキャッシュメモリ間のアクセスレイテンシは、画像処理部と主メモリのアクセスレイテンシよりも短いためである。これは主メモリとしてはコストは安いが制御が煩雑であるＤＲＡＭを使用すること、主メモリは他のデバイスからのアクセスが可能な構成でそれらとの調停のためレイテンシは増えることによる。キャッシュメモリとしてはＳＲＡＭが使用されるので画像処理部がデータを要求してからそれを得るまでのレインテンシは短い。例えば、一つの矩形のサイズを６４×６４、参照エリアのサイズが７４×７４とする。そのとき、従来は、重複するアクセスの全体に対する割合が下記となる。この分の主メモリの帯域が無駄に消費されるわけであり、本発明によれば、この無駄をなくすことが可能となる。
【００７１】
（７０＾２−６４＾２）／６４＾２×１００＝２０（パーセント）
［第２の実施形態］
本発明の第２の実施形態は、図１８に示すように、格子状の重複部分が交差する領域の主走査方向の辺の延長領域を含む点で、上記第１の実施形態と異なる。以下に、上記第１の実施の形態と異なる点のみを説明する。
【００７２】
図１８は、本発明の第２の実施形態において使用する定数の定義を説明するための図である。
【００７３】
図１８において、例えば、図３におけるＣ１（１，２）に対して、Ｃａ１（１，２）が横の辺の延長領域（Ｔ１（１，２）、Ｔ２（１，２））を含むようになっている。そして、図３におけるＣ２（１，２）に対して、Ｃａ２（１，２）が縦の辺の延長領域Ｔ１（１，２）、Ｔ２（１，２）分短くなっている。
【００７４】
図１９は、第２の実施形態における主メモリ上の画像データとキャッシュ１上の記憶領域との対応関係を示す図である。図２０は、第２の実施形態において主メモリ上の画像データとキャッシュ２上の記憶領域との対応関係を示す図である。なお、図３、図４と同一の構成要素については同一の符号を付して、その説明を省略する。
【００７５】
図１９において、画像４１０内の任意の重複部分Ｃａ１（ｍ、ｎ）は、キャッシュ１＿１０５上の一つの記憶領域に対応する。本実施形態において、キャッシュ１＿１０５は、主走査方向は全範囲、副走査方向は矩形単位で４個分の領域内の重複部分に相当する容量を保持している。例えば、画像４１０内のＣａ１（１，２）、Ｃａ１（２，２）、Ｃａ１（３，２）の領域は、キャッシュ１＿１０５内のＣａ１（１，２）、Ｃａ１（２，２）、Ｃａ１（３，２）の領域に対応する。また、画像４１０内のＣａ１（１，６）、Ｃａ１（２，６）、Ｃａ１（３，６）も、キャッシュ１＿１０５内のＣａ１（１，２）、Ｃａ１（２，２）、Ｃａ１（３，２）の領域に対応する。つまり、Ｃａ１（１，２）のデータがキャッシュされた後に、Ｃａ１（１，６）がアクセスされたならば、キャッシュ１＿１０５内のデータは上書きされることになる。
【００７６】
図２０において、画像４１０内の任意の重複部分Ｃａ２（ｍ、ｎ）は、キャッシュ２＿１０６の一つの記憶領域に対応する。本実施形態においては、キャッシュ２＿１０６は、主走査方向は全範囲、副走査方向は矩形単位で４個分の領域内の重複部分に相当する容量を保持している。例えば、画像４１０内のＣａ２（１，１）、Ｃａ２（１，２）、Ｃａ２（１，３）の領域は、キャッシュ２＿１０６内のＣａ２（１，１）、Ｃａ２（１，２）、Ｃａ２（１，３）の領域に対応する。また、画像４１０内のＣａ２（１，５）、Ｃａ２（１，６）、Ｃａ２（１，７）も、キャッシュ２＿１０６内のＣａ２（１，１）、Ｃａ２（１，２）、Ｃａ２（１，３）の領域に対応する。つまり、Ｃａ２（１，１）のデータがキャッシュされた後に、Ｃａ２（１、５）がアクセスされたならば、キャッシュ２＿１０６内のデータは上書きされることになる。
【００７７】
キャッシュ制御部１０４は、副走査方向の矩形４個分のアドレス領域内でデコードを行い、キャッシュメモリのアドレスを算出する。そのアドレス領域を他と区別する上位アドレスは、タグ情報としてキャッシュに保持される必要がある。また、キャッシュ内のデータが有効であるか否かを決定するためのフラグ情報も必要である。
【００７８】
上述したタグ情報とフラグ情報は、一般的なキャッシュにおいてはキャッシュの各データ単位ごとに用意される。しかし、本実施形態におけるシステムでは、キャッシュメモリへの更新の単位が必ず矩形の各辺に当たる領域であるので、それら各辺に属する領域に一組のタグ情報とフラグ情報を格納することが可能である。つまり、タグ情報とフラグ情報のための格納領域を一般のキャッシュシステムに比べて削減することが可能である。なお、キャッシュとタグの情報を格納するために、別のＳＲＡＭを用意してもよい。ただし、ＳＲＡＭのデバイスとしての個数増加は、半導体上の使用面積として影響が大きいので、より好適な実装形態としてはキャッシュ２の空き領域に格納する方法がある。
【００７９】
上記空き領域は、重複部分が格子状に交差する領域である。この格子状の領域は、キャッシュ１に割り当てられているので、キャッシュメモリとしてはデータのために使用されない領域になっている。格子状の重複部分の交点に当たる領域は、キャッシュ１に含める実装形態も当然可能である（第１の実施形態）。
【００８０】
図２１は、第２の実施形態におけるキャッシュ制御部の制御処理を示すフローチャートである。なお、図６の処理を同一のステップについては同一のステップ番号を付して、その説明は省略する。
【００８１】
図２１において、ステップＳ７０５では、キャッシュ制御部１０４は、要求アドレスがキャッシュ１＿１０５の重複部分内であるかどうかを判断する。上記アドレスがキャッシュ１＿１０５の重複部分内であることの条件式を以下に示す。
【００８２】
Ｙｓ−Ｙｄ≦ｖ＜Ｙｓ＋Ｙｅ
ステップＳ７０５の判別の結果、要求アドレスがキャッシュ１＿１０５の重複部分内であると判断されたときは（ステップＳ７０５でＹＥＳ）、ステップＳ７１０に進む。
【００８３】
ステップＳ７１０において、（ｍ，ｎ）で指定される矩形の右辺重複部のキャッシュ情報（キャッシュのタグとフラグの情報）をキャッシュ２＿１０６からリードする。キャッシュ２＿１０６上のキャッシュ情報が格納されているアドレスは以下の式により与えられる。
【００８４】
（Ｙｓ＋１）（Ｘｄ＋Ｘｅ）Ｐ／Ｘｓ＋ｍ（Ｘｄ＋Ｘｅ）  
次に、ステップＳ５１１において、右辺重複部のキャッシュフラグが有効であれば（ステップＳ５１１でＹＥＳ）、ステップＳ７１２にて、キャッシュ制御部１０４は、キャッシュ１＿１０５からデータをリードする。キャッシュ１＿１０５上のデータが格納されているアドレスは以下の式により与えられる。
【００８５】
Ｐ｛ｎ（Ｙｄ＋Ｙｅ）＋ｖ−Ｙｓ＋Ｙｄ＋Ｙｅ｝＋ｘ
ステップＳ７０５の判別の結果、要求アドレスがキャッシュ１＿１０５の重複部分内でないと判断されたときは（ステップＳ７０５でＮＯ）、ステップＳ７０６へ分岐する。そして、さらに要求アドレスがキャッシュ２＿１０６の重複部分内であるかどうか、次式によって判断する。次式が成立したときは、キャッシュ２＿１０６の重複部分であることを意味する。
【００８６】
Ｘｓ−Ｘｄ≦ｕ＜Ｘｓ＋Ｘｅ
ステップＳ７０６の判別の結果、重複部分外であれば（ステップＳ７０６でＮＯ）、ステップＳ５１６へ進む。一方、要求アドレスがキャッシュ２＿１０６の重複部分内であると判断されたときは（ステップＳ７０６でＹＥＳ）、ステップＳ７０７にて、キャッシュ制御部１０４は、キャッシュ２＿１０６からデータをリードする。キャッシュ２＿１０６のデータが格納されているアドレスは以下の式により与えられる。
【００８７】
ｙ（Ｘｄ＋Ｘｅ）Ｐ／Ｘｓ＋ｍ（Ｘｄ＋Ｘｅ）＋ｕ−Ｘｓ＋Ｘｄ＋Ｘｅ
ステップＳ５０８において、右辺重複部のキャッシュフラグが無効であれば（ステップＳ５０８でＮＯ）、ステップＳ５１３へ進む。一方、右辺重複部のキャッシュフラグが有効であれば（ステップＳ５０８でＹＥＳ）、ステップＳ７０９にて、キャッシュ制御部１０４は、キャッシュ２＿１０６からデータをリードする。
【００８８】
以上、第２の実施形態によれば、上記第１の実施形態による効果を奏することができる。
【００８９】
また、本発明の目的は、以下の処理を実行することによっても達成される。即ち、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に格納されたプログラムコードを読み出す処理である。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【符号の説明】
【００９０】
１００  画像処理装置
１０１  描画部
１０２  主メモリ
１０３  出力部
１０４  キャッシュ制御部
１０５  キャッシュ１
１０６  キャッシュ２
１０７  画像処理部Ａ
１０８  画像処理部Ｂ
【図１】
2010244113.tif 000003
【図２】
2010244113.tif 000004
【図３】
2010244113.tif 000005
【図４】
2010244113.tif 000006
【図５】
2010244113.tif 000007
【図６】
2010244113.tif 000008
【図７】
2010244113.tif 000009
【図８】
2010244113.tif 000010
【図９】
2010244113.tif 000011
【図１０】
2010244113.tif 000012
【図１１】
2010244113.tif 000013
【図１２】
2010244113.tif 000014
【図１３】
2010244113.tif 000015
【図１４】
2010244113.tif 000016
【図１５】
2010244113.tif 000017
【図１６】
2010244113.tif 000018
【図１７】
2010244113.tif 000019
【図１８】
2010244113.tif 000020
【図１９】
2010244113.tif 000021
【図２０】
2010244113.tif 000022
【図２１】
2010244113.tif 000023