(57)【要約】【課題】形状の異なる複数の画像を同一形状の画像に変形して複数の画像を一枚の画像に合成するような画像処理において高い処理性能と低コストとを両立する。【解決手段】画像処理装置は、画像を外部記憶手段から読み出してフィルタ処理する。画像は画像を外部記憶手段から読み出す際の転送長に応じた第１インターリーブ方式で複数のバンクに分割される。画像処理装置は、複数のローカルメモリと、フィルタ処理に必要な複数の画素のうちの少なくともひとつを含むバンクの画素を転送長に応じた第２インターリーブ方式で複数の画素片に分割し、分割の結果得られる画素片のそれぞれを転送長に応じて複数のローカルメモリのうちのいずれかに格納する制御手段と、を備える。【選択図】図１
2018060471.tif 000002
【特許請求の範囲】
【請求項１】
画像を外部記憶手段から読み出してフィルタ処理する画像処理装置であって、前記画像は前記画像を前記外部記憶手段から読み出す際の転送長に応じた第１インターリーブ方式で複数のバンクに分割され、前記画像処理装置は、
複数のローカルメモリと、
前記フィルタ処理に必要な複数の画素のうちの少なくともひとつを含むバンクの画素を前記転送長に応じた第２インターリーブ方式で複数の画素片に分割し、分割の結果得られる画素片のそれぞれを前記転送長に応じて前記複数のローカルメモリのうちのいずれかに格納する制御手段と、を備える画像処理装置。
【請求項２】
前記外部記憶手段は、変形または回転する前の画像を記憶し、
前記画像処理装置は、前記変形もしくは回転する前の画像を前記外部記憶手段から読み出してフィルタ処理し、変形もしくは回転した後の画像を生成する請求項１に記載の画像処理装置。
【請求項３】
前記転送長は、変形または回転の度合いに応じて設定される請求項２に記載の画像処理装置。
【請求項４】
前記第１インターリーブ方式および前記第２インターリーブ方式は、バンク番号ｂｋおよびローカルメモリ番号ｌｍを、
ｂｋ＝［（ｍ％２）＊Ｂ／２＋ｎ］％Ｂ
（ｍ：転送長の主走査座標、ｎ：転送長の副走査座標、Ｂ：バンク数）、
ｌｍ＝［（ｂｋ％２）＊Ｌ／２＋ｂｅａｔ］％Ｌ
（ｂｅａｔ：パケット番号、Ｌ：ローカルメモリ数）
により算出することで実現される請求項１から３のいずれか１項に記載の画像処理装置。
【請求項５】
前記複数のバンクに対応する複数のキャッシュ手段をさらに備え、
前記複数のローカルメモリは、前記複数のキャッシュ手段により共有されることを特徴とする請求項１から４のいずれか１項に記載の画像処理装置。
【請求項６】
前記画素片のサイズは、前記外部記憶手段と前記制御手段とを接続するバスのバス幅に応じて設定される請求項１から５のいずれか１項に記載の画像処理装置。
【請求項７】
前記画素片のサイズは、前記フィルタ処理に必要な画素の数に応じて設定される請求項１から５のいずれか１項に記載の画像処理装置。
【請求項８】
前記制御手段は、前記フィルタ処理に必要な複数の画素を前記複数のローカルメモリから読み出す際に、前記複数の画素が画素片の境界を跨ぐとき、対応するバンクからの１つの要求を２つのローカルメモリに対する２つの要求に変換する請求項１から７のいずれか１項に記載の画像処理装置。
【請求項９】
前記制御手段は、前記第１インターリーブ方式での分割の結果得られるバンクの画素を、前記ローカルメモリのビット長に応じて前記第２インターリーブ方式の画素片に並び替え、前記ローカルメモリに格納する請求項１から８のいずれか１項に記載の画像処理装置。
【請求項１０】
前記制御手段は、前記第１インターリーブ方式での分割の結果得られるバンクの画素を順次、保持し、前記複数の画素片を前記複数のローカルメモリに同時に書き込む請求項１から９のいずれか１項に記載の画像処理装置。
【請求項１１】
前記転送長は画像形式に基づいて設定される請求項１から１０のいずれか１項に記載の画像処理装置。
【請求項１２】
前記転送長は変形の態様に基づいて設定される請求項１から１０のいずれか１項に記載の画像処理装置。
【請求項１３】
前記転送長はアクセス・レイテンシに基づいて設定される請求項１から１０のいずれか１項に記載の画像処理装置。
【請求項１４】
前記第１インターリーブ方式におけるバンクの数は、画像形式および前記フィルタ処理の画素補間形式に基づいて設定される請求項１から１３のいずれか１項に記載の画像処理装置。
【請求項１５】
複数の画像に対し異なる変形もしくは回転を施して同一形状の画像にし、複数の画像を合成する請求項１から１４のいずれか１項に記載の画像処理装置。
【請求項１６】
前記複数のローカルメモリに、前記転送長に基づいて前記キャッシュ手段のキャッシュメモリが割り当てられる請求項５に記載の画像処理装置。
【請求項１７】
前記複数のローカルメモリの領域から前記キャッシュメモリの領域を除いた領域に、領域分割された入力画像と出力画像とが割り当てられる請求項１６に記載の画像処理装置。
【請求項１８】
画像を外部記憶手段から読み出してフィルタ処理する画像処理装置の制御方法であって、前記画像は前記画像を前記外部記憶手段から読み出す際の転送長に応じた第１インターリーブ方式で複数のバンクに分割され、前記画像処理装置は複数のローカルメモリを備え、前記制御方法は、
前記フィルタ処理に必要な複数の画素のうちの少なくともひとつを含むバンクの画素を前記転送長に応じた第２インターリーブ方式で複数の画素片に分割し、分割の結果得られる画素片のそれぞれを前記転送長に応じて前記複数のローカルメモリのうちのいずれかに格納するステップを含む制御方法。
【請求項１９】
コンピュータを請求項１から１７のいずれか１項に記載の装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置および制御方法に関する。
【背景技術】
【０００２】
近年、さまざまな機器において処理性能の向上と、より一層のコスト削減との両立が求められている。これらの機器には、ある種のコンピュータ・システムが搭載されており、コンピュータ・システムの製造コストあたりの処理性能は、機器の良否を決定する要因の一つと言える。
【０００３】
一般的にコンピュータ・システムは、アプリケーションを実行するプロセッサやデータ処理回路と、プログラムや処理対象となるデータを記憶するメモリ等の記憶装置とで構成される。各々のプロセッサやデータ処理回路が、自身が使用するプログラムやデータの高速読み書きを可能とする記憶装置を具備することが理想である。記憶装置は例えばＳＲＡＭ等のアクセス・レイテンシの比較的低いメモリ手段である。プロセッサやデータ処理回路の各々にそのようなメモリ手段を専用のローカルメモリとして設けることができれば、処理性能の向上を実現し易い。
【０００４】
しかしながら、機器を低コスト化するためには、多くのプロセッサやデータ処理回路で単一の記憶装置を共有することで搭載する記憶装置の個数を削減することが望ましい。また、搭載する記憶装置としてメモリを採用する場合、その時々で普及している安価なＤＲＡＭを使用することが多い。ただしＤＲＡＭを使用すると前述のＳＲＡＭよりアクセス・レイテンシは高くなる。また多くのプロセッサやデータ処理回路で単一の記憶装置を共有する場合、各々のプロセッサやデータ処理回路から記憶装置への読み書きが競合しうる。この競合を解消するために各々のアクセスを調停する必要があるので、プロセッサやデータ処理回路からのアクセス・レイテンシは高くなる。その結果、各々のプロセッサやデータ処理回路の処理性能は低下する。
【０００５】
プロセッサやデータ処理回路の性能低下を抑えるために、各々のプロセッサやデータ処理回路と記憶装置との間にキャッシュ装置を設けることが多い。各々のプロセッサやデータ処理回路は、組み込んだキャッシュ装置から所望のデータが読み出せる間は、記憶装置にアクセス（データ要求）することはない。これにより各々のプロセッサやデータ処理回路からのアクセス（データ要求）の頻度が減り、必要となるアクセス帯域の総量を減らすことができる。キャッシュ装置を設けることで回路規模は増加するが、ローカルメモリを専用に設ける場合よりは回路規模の増加を抑えることができる。このようにコンピュータ・システムに最適なキャッシュ装置を設けることで、機器を実現する際に求められる高い処理性能と低コストとを両立することが可能となる。
【０００６】
しかしながら、そのようなキャッシュ装置を用いたコンピュータ・システムにおける処理性能を維持することが難しい画像処理の種類がある。そのような画像処理のひとつとして、形状の異なる複数の画像を同一形状の画像に変形し、それらの複数の画像を一枚の画像に合成するような画像処理が挙げられる。この画像処理では、各々の画像を異なる変形パラメータで変形して同一形状に合わせ込むため、ＤＲＡＭなどのメモリから各々の画像を変形しながら読み出すことになる。その際、メモリへのアクセスパターンは画像ごとに大きく異なってしまう。また処理装置のコストを低減するためには、合成のために必要な複数の画像すべてに対して適切にキャッシュメモリを割り当てなければならない。
【０００７】
さらに近年、変形前の画像と変形後の画像とを格納しておくための一般的な記憶装置であるＤＲＡＭについて、処理性能を高めるためにＤＤＲ３からＤＤＲ４、ＤＤＲ５へと規格上の動作周波数が高まっている。そのため、ＤＲＡＭの性能を維持するためにはメモリアクセス１回あたりの転送長を大きくして、ＤＲＡＭのリード／ライトの切り替えやバンク競合の際のレイテンシを隠蔽する必要がある。つまり、前述のような画像処理について、（１）キャッシュメモリを一定の容量に抑える必要がある、（２）各々の画像を読み出す際のメモリへのアクセスパターンは様々である、（３）メモリアクセス１回あたりの転送長は大きくなる、という要因がある。これらの要因により、前述のような画像処理の性能を維持することは難しい。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１２−２４３０２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
例えば、特許文献１では、必要な画像を先読みしてキャッシュメモリに蓄え、ＤＲＡＭアクセスのレイテンシを隠蔽して性能を維持する方法を開示している。しかしながら、特許文献１に記載の技術では、前述の画像処理の一例が引き起こすメモリへのアクセスパターンの複雑化と、メモリアクセス１回あたりの転送長が大きくなることと、には対応できない。
【００１０】
本発明はこうした課題に鑑みてなされたものであり、その目的は、メモリに対するアクセスパターンが多種多様に変化しても性能低下を抑えることができるキャッシュ装置を備えた画像処理装置の提供にある。
【課題を解決するための手段】
【００１１】
本発明のある態様は画像処理装置に関する。この画像処理装置は、画像を外部記憶手段から読み出してフィルタ処理する。画像は画像を外部記憶手段から読み出す際の転送長に応じた第１インターリーブ方式で複数のバンクに分割される。画像処理装置は、複数のローカルメモリと、フィルタ処理に必要な複数の画素のうちの少なくともひとつを含むバンクの画素を転送長に応じた第２インターリーブ方式で複数の画素片に分割し、分割の結果得られる画素片のそれぞれを転送長に応じて複数のローカルメモリのうちのいずれかに格納する制御手段と、を備える。
【発明の効果】
【００１２】
本発明によれば、形状の異なる複数の画像を同一形状の画像に変形して複数の画像を一枚の画像に合成するような画像処理において高い処理性能と低コストとを両立することができる。
【図面の簡単な説明】
【００１３】
【図１】画像処理装置の機能および構成を示すブロック図。
【図２】画像処理部の機能および構成を示すブロック図。
【図３】タイル領域を説明するための図。
【図４】キャッシュ判定部の機能および構成を示すブロック図。
【図５】データ取得部を説明するための図。
【図６】転送単位を説明するための図。
【図７】画像の変形を説明するための図。
【図８】キャッシュ部の機能および構成を示すブロック図。
【図９】ＤＲＡＭ上の画像データの格納方法およびバンク割り当てを説明する図。
【図１０】キャッシュメモリを構成する複数のローカルメモリへの画素の割り当てを説明するための図。
【図１１】キャッシュメモリへのアクセス方法を説明するための図。
【図１２】共有メモリ調停部の機能および構成を示すブロック図。
【図１３】キャッシュ部の機能および構成を示すブロック図。
【図１４】ＤＲＡＭに格納された画像データを示す図。
【図１５】ＤＲＡＭに格納された画像データを示す図。
【図１６】バンド領域を説明するための図。
【図１７】画像データの入出力処理を説明するための図。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の実施の形態を説明する。ただし、本発明の実施の形態は以下の実施の形態に限定されるものではない。各図面に示される同一または同等の構成要素、部材、処理、信号には、同一の符号を付するものとし、適宜重複した説明は省略する。また、各図面において説明上重要ではない部材の一部は省略して表示する。
【００１５】
（第１の実施の形態）
●装置の全体構成
図１は、第１の実施の形態に係る画像処理装置（コンピュータ）１０の全体構成例を示すブロック図である。画像処理装置１０は、メモリから画像データをバースト読み出しして画像を変形する画像処理を行う。画像処理装置１０は、ＣＰＵ回路部１００と、画像読み取り部１２０と、映像入力部１３０と、画像処理部１５０と、映像表示部１６０と、画像印刷部１７０と、を備える。以下、これら構成による動作の概要について説明する。
【００１６】
画像読み取り部１２０は、レンズ１２４と、ＣＣＤセンサ１２６と、アナログ信号処理部１２７と、を有する。レンズ１２４を介してＣＣＤセンサ１２６に原稿１１０の画像情報が結像し、ＣＣＤセンサ１２６によりその画像情報がＲ（Red）、Ｇ（Green）、Ｂ（Blue）のアナログ電気信号に変換される。アナログ電気信号に変換された画像情報は、アナログ信号処理部１２７に入力され、Ｒ、Ｇ、Ｂの色毎に補正が行われた後にアナログ／デジタル変換（Ａ／Ｄ変換）される。これにより、デジタル化されたフルカラーのデジタル画像信号（画素値）が生成される。生成されたデジタル画像信号は映像入力部１３０へ入力され、その後、ＤＭＡＣ（Direct Memory Access Controller）１９２へ入力される。
【００１７】
ＤＭＡＣ１９２の動作はＣＰＵ１０２によって予め設定されている。ＤＭＡＣ１９２は、入力されたデジタル画像信号を、共有バス１９０を介してＣＰＵ回路部１００のＲＡＭ１０６や外部記憶装置１０８に格納する。なお、複数の画素を含むデジタル画像信号を１枚の画像を形成するように集合させたデータを、以下では画像データと呼ぶ。本実施の形態では、デジタル画像信号は画像データの形式でＲＡＭ１０６に記憶されるものとする。画像処理を行う場合、ＣＰＵ１０２もしくは後述の画像入出力部１５２は、ＤＭＡＣ１９４を起動してＲＡＭ１０６に記憶された画像データを読み出させ、処理の対象となる画素に対応するデジタル画像信号を画像処理部１５０に供給させる。
【００１８】
画像処理部１５０は例えば、入力されたデジタル画像信号に対して画像処理（例えば、スキャナなどのセンサ・デバイスの読み取り素子の個体差の補正や入力ガンマ補正などの色補正）を行って画像データを作成する画像データ処理装置である。ＤＭＡＣ１９６は、画像処理部１５０で画像処理が施された画像データをＲＡＭ１０６や外部記憶装置１０８に格納する。なお、ＤＭＡＣ１９６は以下のように制御される。例えばＣＰＵ１０２もしくは後述の画像入出力部１５２が予めＤＭＡＣ１９６の動作を設定し、また、ＣＰＵ１０２がＤＭＡＣ１９６を起動する。なおＤＭＡＣ１９６の動作としては、例えば処理後の画像データをＲＡＭ１０６へ書き込む動作が設定される。このように画像処理部１５０は、入力されたデジタル画像信号に対し、入力色補正処理、空間フィルタ処理、色空間変換、濃度補正処理、及び中間調処理等、画像を印刷するための画像処理を施す。そして、画像処理部１５０は印刷可能な画像データを作成した後、その画像データをＤＭＡＣ１９６を介してＲＡＭ１０６に格納する。
【００１９】
ＤＭＡＣ１９８は、ＲＡＭ１０６に格納された画像処理済みの画像データを読み出して、画像印刷部１７０へ出力する。画像印刷部１７０は例えばプリンタである。ＤＭＡＣ１９８の設定は例えばＣＰＵ１０２により行われる。画像印刷部１７０は、インクジェットヘッド、サーマルヘッド等を含む印刷出力部（不図示）を備え、入力された画像データのデジタル画像信号に基づいて記録紙上に画像を記録する。
【００２０】
なお、ここでは画像読み取り部１２０で読み取った原稿１１０の画像データを、画像印刷部１７０にて印刷出力する例を示したが、これに限られない。例えば、映像入力部１３０や映像表示部１６０を用いることにより、入力された映像に対し所望の画像（映像）処理を施し、処理後の映像をディスプレイなどの映像表示装置（不図示）に表示してもよい。
【００２１】
ＣＰＵ回路部１００は、演算制御用のＣＰＵ１０２と、固定データやプログラムを保持するＲＯＭ１０４と、データの一時保存やプログラムのロードに使用されるＲＡＭ１０６と、外部記憶装置１０８と、を備える。ＣＰＵ回路部１００は、画像読み取り部１２０、画像処理部１５０、及び画像印刷部１７０を制御し、画像処理装置１０のシーケンスを統括的に制御する。外部記憶装置１０８は、画像処理装置１０が使用するパラメータやプログラム、補正データを記憶するディスク等の記憶媒体である。またＲＡＭ１０６に保持されるデータやプログラムは、外部記憶装置１０８からロードされてもよい。また本実施の形態に係るＲＡＭ１０６は、ＤＭＡＣ１９４、１９６を介して画像処理部１５０とデータ転送を行うが、この転送データの格納先はＲＡＭ１０６に限らず外部記憶装置１０８であってもよい。ＲＡＭ１０６や外部記憶装置１０８において確保される転送データの格納先を、以下ではグローバルバッファ（外部記憶バッファ）と呼ぶ。以下の説明では、ＲＡＭ１０６の一例であるＤＲＡＭ上にグローバルバッファを確保し、グローバルバッファに画像データが保持される。
【００２２】
●画像処理部１５０
画像データに画像処理を施す画像処理部１５０の詳細構成およびその動作について、図２を用いて説明する。図２は、画像処理部１５０の構成の一例を示すブロック図である。図２には、画像処理部１５０に関連する構成としてＣＰＵ１０２と、レジスタＩ／Ｆ１０２２と、外部の記憶装置（外部メモリ）であるＤＲＡＭ１０６と、ＤＲＡＭコントローラ１０７と、共有バス（システムバス）１９０と、が示される。また、ＤＲＡＭ１０６に対するデータの読み書きのために、データ読み出し用のＤＭＡＣ（Direct Memory Access Controller）であるＲＤＭＡＣ１９４とデータ書き込み用のＷＤＭＡＣ１９６とが設けられる。
【００２３】
●画像処理実行部１５３
前述の装置の全体構成の説明では、スキャナ／プリンタの画像処理を実現する例示的な画像処理部１５０の機能を説明した。以下では、画像変形の一例を説明する。
画像処理部１５０は、制御シーケンサ１５４と、画像処理実行部１５３と、キャッシュ部１８０と、を含む。ＣＰＵ１０２は、予めレジスタＩ／Ｆ１０２２を介して画像処理部１５０のコンポーネントに対し、所定のレジスタ設定を行っている。例えば、ＲＤＭＡＣ１９４からの入力を切断し（図２の符号１９４１）、後述する画素生成部１５３１で画素を生成し、座標変換部１５３２に入力することで、スキャナ／プリンタの画像処理ではなく、画像変形が実現される。なお、ＲＤＭＡＣ１９４からの入力と画素生成部１５３１とを接続し、入力された画素の値を画素生成部１５３１で修正するかそのままとし、座標変換部１５３２に出力してもよい。
【００２４】
ＣＰＵ１０２は、レジスタＩ／Ｆ１０２２を介して制御シーケンサ１５４を起動し、画像処理の開始を指示する。制御シーケンサ１５４は、画像処理実行部１５３とキャッシュ部１８０とを制御する。
【００２５】
まず画像処理実行部１５３の画素生成部１５３１は、制御シーケンサ１５４の指示を受けて起動し、所定のレジスタ値に従い部分画像の画素を生成する。画素生成部１５３１は、例えば図３（ａ）〜（ｄ）に示されるように一枚の画像データ３００の全体をタイル領域単位に分割することで、部分画像の画素を生成する。また、画素生成部１５３１は、各タイル領域に対して、図３（ｅ）に示される順序で走査することで画素を生成する。例えば、図３（ｅ）では、８画素×８画素のタイル領域を矢印の順番でジグザグに走査し、部分画像の画素を生成する。このとき、画像全体に対して定義される座標系でのタイル領域の位置（座標）とタイル領域に対して定義される座標系での走査対象の画素の位置（座標）とから、走査で生成された画素の画像全体での座標が算出される。なお、タイル領域の大きさは、８画素×８画素でなくてもよく、タイル領域の長さＴＬと高さＴＨとは任意の画素数でよい。
【００２６】
図２に戻り、画素生成部１５３１で生成された座標値付きの画素は、座標変換部１５３２に入力されて、座標変換部１５３２により座標変換される。例えば、座標変換方式がアフィン変換のときは、予め座標変換部１５３２のレジスタにアフィン変換のパラメータが設定される。座標変換部１５３２は設定されたパラメータ値に従い座標変換後の座標値を算出してアドレス生成部１５３３に出力する。なお、座標変換方式は、レンダリング分野のＵＶマッピングのような座標変換手法でもよい。
【００２７】
アドレス生成部１５３３は画像データが格納されているＤＲＡＭ１０６のグローバルバッファ領域の先頭アドレスと、後述する画像形式と、座標変換部１５３２により算出された座標変換後の座標値とに基づいて、グローバルバッファ領域のアドレスを算出する。このとき、アドレス生成部１５３３は、座標変換後の座標値の整数部と、後述するＤＲＡＭ１０６からの転送長とに基づいて、アドレスと、１転送長の中での画素の位置と、座標値の小数部とを算出する。アドレス生成部１５３３は、画素の位置と座標値の小数部とを中間待ち行列（ＦＩＦＯ）１５３４に格納する。格納された情報は、後述する画素サンプリング部１５３５および画素補間部１５３６で利用される。アドレス生成部１５３３によって算出されたアドレスは、Ｉ／Ｆ１８１を介してキャッシュ部１８０に入力される。キャッシュ部１８０の機能と動作については後述する。画像処理実行部１５３は、キャッシュ部１８０を介してＤＲＡＭ１０６から必要な対象データ（画像、映像、設定値、テーブル、属性情報など）を読み出してデータ処理に使用する。
【００２８】
画素サンプリング部１５３５は、中間待ち行列（ＦＩＦＯ）１５３４により保持される情報を取り出し、キャッシュ部Ｉ／Ｆ１８９から画素補間のための画像データが届くまで待機する。画素サンプリング部１５３５は、画素補間のための画像データが届くと、中間待ち行列（ＦＩＦＯ）１５３４から取り出した１転送長のデータの中での画素の位置に基づいて、画像データから画素補間で必要な複数の画素値を抽出する。画素サンプリング部１５３５は、中間待ち行列（ＦＩＦＯ）１５３４から取り出した座標値の小数部と、画像データから抽出した画素補間のための画素値とを画素補間部１５３６に出力する。画素補間部１５３６は、画素補間のための画素値と座標値の小数部とに基づいて所定のフィルタ演算を行い、補間後の画素値を算出して画素合成部１５３７に出力する。画素合成部１５３７は、第１モードでは、複数の画像の合成を行い、ＷＤＭＡＣ１９６を介してＤＲＡＭ１０６に合成後の画素値を書き込む。画素合成部１５３７は、第２モードでは、複数の画像の合成は行わず、１枚の画像の変形について取り扱うため画素補間部１５３６による補間後の画素値をそのまま出力する。本実施の形態では画素合成部１５３７は第２モードにしたがい動作する。また、出力の際に画素合成部１５３７は、処理結果の画像データがＤＲＡＭ１０６の転送長の大きさになるまで複数の画素値をパッキングし、転送長の大きさに達したらＷＤＭＡＣ１９６に送付する。なお、複数の画像の合成については、後述する別の実施の形態で具体的な機能を説明する。
【００２９】
●キャッシュ部１８０
キャッシュ部１８０の動作について詳細に説明する。キャッシュ部１８０に所望のデータが存在する場合（キャッシュヒット）、ＤＲＡＭ１０６までアクセス（データ要求）する必要はなく、アクセス・レイテンシは低くなる。一方、キャッシュ部１８０に所望のデータが存在しない場合（キャッシュミス）、ＤＲＡＭ１０６に所望のデータをアクセス（データ要求）する。このとき、アクセス・レイテンシはキャッシュ装置を設けない場合と同じである。一般的には、各々のプロセッサやデータ処理回路はデータを順番に処理するため、キャッシュミス時にＤＲＡＭから所望のデータを読み出すまで、各々のプロセッサやデータ処理回路は一時停止する。プロセッサやデータ処理回路の処理性能は、この一時停止により低下する。このような動作をブロッキング動作という。またキャッシュミスに対応してデータを読み出す行為をリフィル、読み出したデータをリフィル・データ、一度に読み出す単位をリフィル長、読み出す期間をリフィル・レイテンシという。
【００３０】
画像処理実行部１５３は、キャッシュ部１８０を介してＤＲＡＭ１０６からデータを読み出すときに、ＤＲＡＭ１０６上のデータの格納アドレスを、Ｉ／Ｆ１８１を介してキャッシュ判定部１８２に提供する。そして提供されたアドレスをもとにキャッシュ判定部１８２でキャッシュヒットもしくはキャッシュミスが判定される。
【００３１】
（キャッシュ判定部１８２）
図４を用いてキャッシュ判定部１８２の回路構成の一例について詳細に説明する。キャッシュ部１８０の連想（ライン選択）方式はフルアソシアティブ方式であるとする。
キャッシュ判定部１８２へ入力されたアドレスをアドレスレジスタ１８２１が保持する。キャッシュ判定部１８２には、８個のキャッシュタグ１８２２が保持されており、８ノードのフルアソシアティブ方式のキャッシュ装置が実現されている。また８個のキャッシュタグ１８２２には、［０］〜［７］の番号が予め割り当てられている。これらの番号のそれぞれは対応するキャッシュメモリの「相対」キャッシュライン番号を示している。「相対」番号である理由は後述する。８個の比較器１８２３は、アドレスレジスタ１８２１の入力アドレスと８個のキャッシュタグ１８２２との「一致」を判定する。比較器１８２３からの８個の比較結果１８２４は判定器１８２５に出力される。
【００３２】
判定器１８２５は、８個の比較結果１８２４のうち、１つでも「一致」であれば、キャッシュヒットと判定する。判定器１８２５は、８個の比較結果１８２４のなかに「一致」が存在しなければ、キャッシュミスと判定する。判定結果１８２９はキャッシュミス・フラグ１８２８を含み、キャッシュ判定部１８２から出力される。判定結果１８２９のキャッシュミス・フラグ１８２８がキャッシュヒットを示す場合、判定結果１８２９は「一致」したキャッシュタグの「相対」ライン番号１８２７を含む。
【００３３】
判定結果１８２９のキャッシュミス・フラグ１８２８がキャッシュミスを示す場合（分岐１８２６のＹＥＳ）、入力アドレスがキャッシュタグ１８２２へ書き込まれることでキャッシュタグ１８２２が更新される。キャッシュタグ１８２２は、シフトレジスタで構成された記憶領域である。キャッシュミス・フラグ１８２８がキャッシュミスを示す場合、シフト動作により上流のキャッシュタグの値が下流のキャッシュタグに移動する。つまり、キャッシュタグ［０］にはキャッシュタグ［１］の値が、キャッシュタグ［１］にはキャッシュタグ［２］の値が各々書き込まれる。同様の書き込みが繰り返され、キャッシュタグ［６］にはキャッシュタグ［７］の値が書き込まれる。そして最後にキャッシュタグ［７］に入力アドレスの値が書き込まれる。キャッシュミス・フラグ１８２８がキャッシュミスを示す場合、上記のようなキャッシュタグの更新が行われ、ライン番号１８２７としてライン［７］の値がキャッシュ判定部１８２から出力される。
【００３４】
このように必ず古いキャッシュタグ［０］のタグ情報が破棄される、キャッシュタグのリプレイス手法を、「ＦＩＦＯ方式（ラウンドロビン方式）」という。フルアソシアティブ方式のキャッシュ装置では、装置を簡単に実現できるので、リプレイス手法として「ＦＩＦＯ方式（ラウンドロビン方式）」を採用することが多い。
【００３５】
キャッシュ判定部１８２は、上記のように求めたキャッシュミス・フラグ１８２８およびライン番号１８２７を含む判定結果１８２９に、入力アドレスを加えてキャッシュ判定結果としてアクセス調停部１８４に出力する。
【００３６】
図２に戻り、本実施の形態に係る画像処理装置１０では、キャッシュミス時のペナルティであるリフィル・レイテンシを隠蔽するためにノンブロッキングのキャッシュ機構を採用している。このキャッシュ機構では、たとえキャッシュ判定結果がキャッシュミスを示していても、後に必要となる情報「ライン番号、キャッシュミス・フラグ」を中間待ち行列（ＦＩＦＯ）１８７に退避させる。そして、キャッシュミスのキャッシュデータをＤＲＡＭ１０６から読み出し、キャッシュメモリ１８８へ格納する処理が完了する前に、次のデータのキャッシュ判定処理を先行して実行する。このような処理を行うことでキャッシュミスのキャッシュデータをＤＲＡＭ１０６からキャッシュメモリ１８８へリフィルしている間にも、後続のデータに対するキャッシュ判定処理を行うことができる。したがって、キャッシュミス時の性能低下を抑制することが可能となる。
【００３７】
なおアクセス調停部１８４は、キャッシュミスのときにキャッシュ判定結果の中から入力アドレスを取り出し、送信部（ＦＩＦＯ）１８５へ順次、格納する。ＤＲＡＭコントローラ１０７は、送信部（ＦＩＦＯ）１８５から入力アドレスを受け取り、所望のデータ（リフィル・データ）をＤＲＡＭ１０６から読み出して、キャッシュメモリ１８８へ書き込む。データ取得部１８６は、中間待ち行列（ＦＩＦＯ）１８７から「キャッシュミス・フラグ」を取り出して、キャッシュ判定の結果がキャッシュミスであったかキャッシュヒットであったかを特定する。データ取得部１８６は、キャッシュ判定の結果がキャッシュヒットのとき、キャッシュデータをキャッシュメモリ１８８から直接読み出してＩ／Ｆ１８９へ送り出す。一方、キャッシュ判定の結果がキャッシュミスのとき、データ取得部１８６はキャッシュデータを更新し、更新されたキャッシュデータをＩ／Ｆ１８９へ送り出す。このような一連の処理、すなわちキャッシュミスしたキャッシュデータをＤＲＡＭ１０６から読み出してキャッシュメモリ１８８を更新する処理、が前述のリフィルである。
【００３８】
（アクセス調停部１８４）
アクセス調停部１８４は入力されたキャッシュ判定結果が有効のとき動作し、それ以外は待機する。アクセス調停部１８４は、キャッシュ判定結果に含まれる「キャッシュミス・フラグ」が有効／無効に応じて以下の処理を行う。
【００３９】
・キャッシュ判定結果に含まれる「キャッシュミス・フラグ」が有効（キャッシュミス）のとき、アクセス調停部１８４はまず、接続される送信部（ＦＩＦＯ）１８５および中間待ち行列（ＦＩＦＯ）１８７の記憶領域の空き状態を評価する。アクセス調停部１８４は、データ取得部１８６からのプリフェッチ許可信号１８６２の状態を評価する。アクセス調停部１８４は、２つのＦＩＦＯに空き領域があり、かつプリフェッチ許可信号１８６２の状態が「許可」である場合、「ライン番号、キャッシュミス・フラグ」を中間待ち行列（ＦＩＦＯ）１８７に書き込む。また同時に、アクセス調停部１８４は、アドレスを送信部（ＦＩＦＯ）１８５に書き込む。アクセス調停部１８４は、２つのＦＩＦＯに空き領域がない、もしくはプリフェッチ許可信号１８６２の状態が「許可」でない場合は、キャッシュ判定部１８２を停止（ストール）する。そして、アクセス調停部１８４は、２つのＦＩＦＯの記憶領域が空き、かつ、プリフェッチ許可信号１８６２の状態が「許可」になるまで待機する。
【００４０】
・キャッシュ判定結果に含まれる「キャッシュミス・フラグ」が無効（キャッシュヒット）のとき、アクセス調停部１８４は中間待ち行列（ＦＩＦＯ）１８７の空き状態を評価する。アクセス調停部１８４は、記憶領域に空きがあれば、「ライン番号、キャッシュミス・フラグ」を中間待ち行列（ＦＩＦＯ）１８７に書き込む。アクセス調停部１８４は記憶領域に空きがなければ、キャッシュ判定部１８２を停止（ストール）し、記憶領域が空くまで待機する。本実施の形態では、説明を容易にするためにフルアソシアティブ方式のキャッシュタグのノード数を８としたが、ノード数はこれに限られず、一例では多いほど望ましい。
【００４１】
なお、キャッシュ判定部１８２およびアクセス調停部１８４は、以下に説明するデータ取得部１８６に対応したプリフェッチ手段（装置／回路／論理）を構成する。キャッシュ判定部１８２およびアクセス調停部１８４は、データを必要とする所定のパイプライン・ステージに先行するパイプライン・ステージと繋がっており、その意味で所定のパイプライン・ステージに対する前処理を行うといえる。
【００４２】
（データ取得部１８６）
図５（ａ）〜図５（ｃ）を用いてデータ取得部１８６の動作について詳細に説明する。キャッシュメモリ１８８は、図５（ａ）に示されるように、論理的には「データ領域」と「受信領域」を含み、物理的には複数個（複数バンク）のＳＲＡＭで実現される。データ取得部１８６は、受信領域を管理する情報（受信ポインタ）と、データ領域を管理する情報（データポインタ）と、を備える。
【００４３】
図５（ｂ）にデータ取得部１８６のキャッシュデータの取得動作の一例を示す。データ取得部１８６は中間待ち行列（ＦＩＦＯ）１８７の記憶領域に処理すべきデータがあるかどうかを評価する。中間待ち行列（ＦＩＦＯ）１８７が空の場合は処理すべきキャッシュ判定結果がないため、データ取得部１８６は待機する。データ取得部１８６は、中間待ち行列（ＦＩＦＯ）１８７から処理すべきキャッシュ判定結果すなわち「ライン番号、キャッシュミス・フラグ」を取り出す（Ｓ３０５）。データ取得部１８６は、判定結果であるキャッシュミス・フラグの値に応じて次のキャッシュデータの取得動作を行う。
【００４４】
・キャッシュミス・フラグが無効（キャッシュヒット）のとき、データ取得部１８６は、ライン番号並びにキャッシュメモリ１８８の受信ポインタおよびデータポインタを中間待ち行列（ＦＩＦＯ）１８７から取り出す。データ取得部１８６は、取り出した情報に基づいてキャッシュメモリ１８８上の格納アドレスを算出する。データ取得部１８６は、算出された格納アドレスをもとに記憶済みのデータをキャッシュメモリ１８８からリードデータ１８８４として読み出す（Ｓ３６０）。データ取得部１８６は、要求されたキャッシュデータを、Ｉ／Ｆ１８９を介して画像処理実行部１５３に送出する（Ｓ３６５）。
【００４５】
・キャッシュミス・フラグが有効（キャッシュミス）のとき、データ取得部１８６は受信ポインタとデータポインタとの差を確認する（Ｓ３４０）。両ポインタに差がない（０）のとき（Ｓ３４０のＮＯ）、データ取得部１８６はＤＲＡＭ１０６に要求したリフィル・データがキャッシュメモリ１８８に届いていないと評価し、リフィル・データが届くまで待機する（Ｓ３４５）。両ポインタに差がある（０ではない値）のとき（Ｓ３４０のＹＥＳ）、データ取得部１８６はＤＲＡＭ１０６に要求したリフィル・データはキャッシュメモリ１８８に格納済みと判定し、データポインタを更新する（Ｓ３５０）。以降の手順は、上述のキャッシュミス・フラグが無効（キャッシュヒット）の場合の手順と同様である。
【００４６】
データ取得部１８６では、前述のキャッシュデータの取得動作と並行して、リフィル・データの受信動作を行っている。図５（ｃ）にデータ取得部１８６のリフィル・データの受信動作の一例を示す。要求したリフィル・データがＤＲＡＭ１０６からデータ取得部１８６に届いた場合（Ｓ３８０のＹＥＳ）、データ取得部１８６は受信ポインタを更新する（Ｓ３８５）。データ取得部１８６は受信ポインタとデータポインタとの差を確認する（Ｓ３９０）。両ポインタの差が予め定められた受信の閾値と同数であるとき（Ｓ３９０のＹＥＳ）、これ以上リフィル・データを受信することができないので、データ取得部１８６はプリフェッチ許可信号１８６２を「禁止」にする（Ｓ３９４）。両ポインタの差が受信の閾値より小さいとき（Ｓ３９０のＮＯ）、ＤＲＡＭ１０６からリフィル・データを受け取ることができるので、データ取得部１８６はプリフェッチ許可信号１８６２を「許可」のままとする（Ｓ３９２）。回路実装では、アクセス調停部１８４の方がデータ取得部１８６より前段にある。それ故、データ取得部１８６からプリフェッチ許可信号１８６２を受け取ってから、アクセス調停部１８４がＤＲＡＭ１０６へのアクセス（データ要求）を止めても遅いケースがある。回路の位置関係からくるこのようなレイテンシの違いを考慮して、上述の受信の閾値を、記憶できる受信段数より少なく設定してもよい。また、より厳密な手法としては、リフィル待ち数を新たに定義し、このリフィル待ち数を用いてプリフェッチ許可信号１８６２を生成してもよい。リフィル待ち数は、０から始まり、アクセス調停部１８４でキャッシュミスの度に１を加算し、データ取得部１８６にリフィル・データが到着する度に１を減算した数とする。つまり、リフィル待ち数は、データ要求を行ったが、まだフェッチ手段に到達していないリフィル・データの数を表している。受信済みのリフィル・データ数（受信ポインタとデータポインタとの差）とリフィル待ち数との合計値が、将来受信するリフィル・データ数となる。将来受信するリフィル・データ数が受信の閾値より小さい場合、プリフェッチ許可信号１８６２は「許可」とされ、将来受信する数が受信の閾値と同じ数であればプリフェッチ許可信号１８６２は「禁止」とされる。このとき、将来受信する数と受信の閾値とは同じ値であるので、これ以上、リフィル・データを受け取ることはできない。そのため、データ取得部１８６は、プリフェッチ許可信号１８６２を「禁止」にしてアクセス調停部１８４に通知し、ノンブロッキング・アクセスを一旦、停止する。プリフェッチ手段は、外部メモリへのデータ要求を停止する。
【００４７】
データ取得部１８６は要求されたデータを取得するフェッチ手段（装置／回路／論理）を構成する。データ取得部１８６は取得したデータを所定のパイプライン・ステージに供給する。
【００４８】
本実施の形態に係るキャッシュ部１８０は、非常に簡単な機構でノンブロッキング動作のフルアソシアティブ方式のキャッシュ装置を実現している。また、本実施の形態ではキャッシュメモリ１８８の領域の一部を受信領域に割り当てることが特徴であり、データ受信とデータ保持とが一つの記憶領域に統合されている。キャッシュメモリ１８８上にデータ受信の領域とデータ保持の領域とを一体化することにより、柔軟な容量変更が可能となり、画像処理の様々な動作に応じた適切な構成変更を実現できる。またフルアソシアティブ方式のキャッシュ装置で一般に採用されるＦＩＦＯ方式（ラウンドロビン方式）のリプレイス手法と、本実施の形態のキャッシュメモリ１８８の用法とは合致している。したがって、フルアソシアティブ方式のキャッシュ装置の実現に対して特に問題は生じない。
【００４９】
●転送長
図６（ａ）は、共有バス１９０の一例として１２８ビットバス（１６Ｂｙｔｅ）を採用したときの転送長について説明する。前述の通り、ＤＲＡＭ規格の動作周波数は倍々で高速化している。その結果、メモリアクセス１回あたりの転送長を大きくしなければ、リード／ライトの切り替えやバンク競合により増加するオーバーヘッドを隠蔽してＤＲＡＭの性能（実効値）を維持することはできない。例えば、１２８ビット（１６Ｂｙｔｅ）バスである共有バス１９０に対して、１６Ｂｙｔｅ（１ｂｅａｔ、シングル）転送でＤＲＡＭ１０６から画像データを読み出した場合、ＤＲＡＭの性能（実効値）は非常に低下する。一方、数回から数十回の連続（バースト）転送をメモリアクセス１回の単位とすると、ＤＲＡＭの性能（実効値）の低下は軽減できる。そのため、ＤＲＡＭの規格や、画像処理の動作モードにより、転送長を切り替えられる画像処理装置が望ましい。例えば、図６（ａ）は６４Ｂｙｔｅ（４ｂｅａｔ）転送、８０Ｂｙｔｅ（５ｂｅａｔ）転送、１２８Ｂｙｔｅ（８ｂｅａｔ）転送、１６０Ｂｙｔｅ（１０ｂｅａｔ）転送、１９２Ｂｙｔｅ（１２ｂｅａｔ）転送、２５６Ｂｙｔｅ（１６ｂｅａｔ）転送を示す。画像処理装置１０は、これらの間で転送長を切り替えてもよい。なお、１転送長の中の１２８ビット（１６Ｂｙｔｅ）バスかつ１サイクルの転送を１パケット（１ｂｅａｔ）と呼ぶ。
【００５０】
●画像形式（８ビットラスター）
本実施の形態における画像データの構造について詳細に説明する。本実施の形態では、画像データは外部メモリであるＤＲＡＭ１０６内の外部記憶領域（グローバルバッファ）に一時的に格納される。したがって、ＤＲＡＭ１０６が性能を落とさずに読み書きできる上記の転送長を単位として画像データを取り扱う。
【００５１】
例えば、図６（ｂ）はＤＲＡＭ１０６に８ビット形式のラスター輝度（モノ）として格納されている画像データを示している。１６Ｂｙｔｅ（１ｂｅａｔ）単位で、８ビット形式の輝度（モノ）データ「Ｙ」がパッキングされている。図中の［０，０］〜［１５，０］は、［主走査座標，副走査座標］を表しており、１６Ｂｙｔｅ（１ｂｅａｔ）単位のなかに１６画素（画素セグメント、画素片（ｆｒａｇｍｅｎｔ））がパッキングされている。そのため、例えば２５６Ｂｙｔｅ（１６ｂｅａｔ）転送長のとき、１回のメモリアクセスで、座標［０，０］〜［２５５，０］の範囲の２５６画素（画素群）の輝度（モノ）データが読み書きされる。以下の記述では、画素セグメントという用語と画素片（ｆｒａｇｍｅｎｔ）という用語とを同義の用語として使用する。
【００５２】
また、１６ビット形式の輝度（モノ）データ「Ｙ」をパッキングする画像データ形式の場合、図６（ｃ）に示されるように、１６Ｂｙｔｅ（１ｂｅａｔ）単位のなかに８画素（画素セグメント、画素片）がパッキングされる。そのため、例えば２５６Ｂｙｔｅ（１６ｂｅａｔ）転送長のとき、１回のメモリアクセスで、座標［０，０］〜［１２７，０］の範囲の１２８画素（画素群）の輝度（モノ）データが読み書きされる。
【００５３】
●画素値の読み出し
本実施の形態では画像をタイル（ブロック）単位に領域分割し、分割の結果得られる各領域に画像処理を行う。図７は画像処理の一例を示す図である。画像の全体からタイル（ブロック）単位で部分画像が抜き出される。図７に示されるように画素生成部１５３１は、タイル走査の順序で部分画像の画素を選択して順次処理する（タイル処理）。このとき選択された各画素は、変形後の画素であり、各々変形後の画素位置（座標）を伴う。座標変換部１５３２は、変形後の画素位置（座標）から、変形前の画素位置（座標）をアフィン変換の行列で算出し、算出した変形前の画素位置（座標）を求める画素位置（座標）の中心とする。この変形前の座標値は、ＤＲＡＭ１０６上のグローバルバッファに格納された画像データの座標値である。図７は、例えば、タイル（ブロック）３１１の左上の１点５０２を示す。本実施の形態では、後述のバイリニア画素補間方式を用いて変形前の画素値を算出するため、点５０２についてはその近傍４点の画素値を用いて補間演算を行う。そのため、点５０２の近傍４点（ａ，ｂ，ｃ，ｄ）の画素値をＤＲＡＭ１０６から読み出す必要がある。アドレス生成部１５３３は、変換前の座標値から近傍４点の座標値を算出し、それらをもとにＤＲＡＭ１０６上のグローバルバッファのアドレス値を算出する。画素サンプリング部１５３５は、算出されたアドレスをもとに変形前の４つの画像データを読み出し、４つの画素値をサンプリングする。
【００５４】
●画素補間方式（バイリニア）
画素補間部１５３６は、主走査方向２画素×副走査方向２画素の近傍４点（ａ，ｂ，ｃ，ｄ）の画素値に対して、点５０２（中心）の座標値からのズレ量である座標の小数部（Δｘ，Δｙ）を補間係数として線形補間を行う。画素補間部１５３６は、該補間の結果に基づいて点５０２の画素値を算出する（バイリニア補間）。
【００５５】
●キャッシュ詳細構成
以下、本実施の形態におけるキャッシュ構成について詳細に説明する。本実施の形態に係るキャッシュは、画素補間方式（バイリニア）に応じて複数のバンクに分割することで画素値を保持する。本実施の形態では、補間に必要な複数の画素値を１サイクルで同時に取得できるような画素値の格納方法を採用する（バンク・インターリーブと称する）。分割の結果得られるバンクの数は、画像データの格納形式と、画素補間方式と、により算出される（詳細は後述）。本実施の形態では、画像形式は８ビットラスターであり、画素補間方式はバイリニアであるから、４バンク構成となる。
【００５６】
図８は、バンク数＜Ｂ＞に対するキャッシュの詳細な構成を示す図である。バンク分割の数を示すバンク数＜Ｂ＞と同数のキャッシュ手段が存在する。Ｉ／Ｆ１８１から入力されたアドレス［０］〜アドレス［Ｂ−１］の各々に対して、並列にキャッシュ判定を実行するため、キャッシュ判定部１８２はキャッシュ判定部［０］〜キャッシュ判定部［Ｂ−１］を備える。
【００５７】
アドレス［０］〜アドレス［Ｂ−１］に対するＢ個のキャッシュ判定結果は、アクセス調停部１８４を経由して送信部１８５と中間待ち行列（ＦＩＦＯ）１８７とに伝達される。
【００５８】
送信部１８５は、Ｂ個のキャッシュ判定結果（キャッシュミス時のアドレスを含む）１８４４を受信するＢ個の入力ＦＩＦＯ［０］〜ＦＩＦＯ［Ｂ−１］を含む。Ｂ個のキャッシュ判定結果１８４４のうちキャッシュミスと判定されたアドレスについて、送信部１８５は、ＤＲＡＭ１０６等の外部メモリから画像データを取得するため、共有バス１９０にデータ要求を行う。送信部１８５はシリアライザ１８５１を備える。シリアライザ１８５１は、ＦＩＦＯ［０］から順にキャッシュ判定結果がキャッシュミスか否かを確認する。シリアライザ１８５１はキャッシュミスの場合、共有バス１９０に出力するため、ＳｅｒＦＩＦＯ１８５９にデータ要求のためのアドレスを書き込む。シリアライザ１８５１は、ＦＩＦＯ［０］からＦＩＦＯ［Ｂ−１］まで同様の動作を繰り返す。このとき、送信部１８５およびシリアライザ１８５１は、データ取得部１８６からバンク数＜Ｂ＞に対応するＢ本のプリフェッチ許可信号１８６２を受信する。シリアライザ１８５１は、対応するバンクのプリフェッチ許可信号が「禁止」の場合、許可信号が「許可」になるまでキャッシュミス判定のアドレスをＳｅｒＦＩＦＯ１８５９に書き込まないで待機する。
【００５９】
中間待ち行列（ＦＩＦＯ）１８７は、図８に示される通り、Ｂ個の中間ＦＩＦＯ［０］〜［Ｂ−１］を備える。Ｂ個の判定結果は中間待ち行列（ＦＩＦＯ）１８７を通じてデータ取得部１８６に伝達される。
【００６０】
データ取得部１８６は、Ｂ個のデータ取得［０］〜［Ｂ−１］を備え、Ｂ個の中間ＦＩＦＯからキャッシュ判定結果１８７２を受信して制御を行う。
【００６１】
キャッシュメモリ１８８は、ＳＲＡＭ等の複数のローカルメモリ［０］〜［Ｌ−１］を備える。ローカルメモリ数＜Ｌ＞は画像形式や画素補間方式を考慮して決定され、バンク数＜Ｂ＞と異なっていてもよい。本実施の形態では、画像形式は８ビットラスターであり、画素補間方式はバイリニアであるから、ローカルメモリ数＜Ｌ＞は４基でもよい。
【００６２】
データ取得部１８６は、共有メモリ調停部１８６５を備える。共有メモリ調停部１８６５は、データ取得［０］〜［Ｂ−１］からの最大Ｂ個のアクセス要求を取得して調停し、キャッシュメモリ１８８のアクセス対象となるローカルメモリ［０］〜［Ｌ−１］に対して読み書きを行う。共有メモリ調停部１８６５は、Ｌ個のリード／ライト要求１８８２をＬ個のローカルメモリ［０］〜［Ｌ−１］に送信する。Ｌ個のリード／ライト要求１８８２に応じてＬ個のローカルメモリ［０］〜［Ｌ−１］はＬ個のリード／ライト応答１８８４を共有メモリ調停部１８６５に返す。それ故、共有メモリ調停部１８６５は１サイクルにつき最大Ｌ個のアクセスを実行することができる。このようにキャッシュメモリ１８８は、Ｂ個のデータ取得［０］〜［Ｂ−１］によってメモリ共有されている（以下、キャッシュメモリ１８８を共有メモリと称する場合がある）。
【００６３】
データ取得［０］〜［Ｂ−１］の何れかのキャッシュ判定結果がキャッシュヒットのとき、このデータ取得は、共有メモリ調停部１８６５を介して所望のローカルメモリからキャッシュデータを読み出し、データ同期部１８６９へ送付する。１つのデータ取得から複数のローカルメモリにアクセスすることも可能であり、そのような動作については後述する。共有メモリ調停部１８６５は、１つのローカルメモリにアクセスが集中する、すなわち複数のデータ取得が１つのローカルメモリへのアクセスを要求する競合が発生するとき、アクセス調停を行い、順番にリード／ライト要求１８８２を発行する。このようにアクセス競合が起きる場合、データ取得［０］〜［Ｂ−１］から、Ｂ個の画素値を同時に揃えることはできない。そのため、データ同期部１８６９はＢ個の画素値が揃うまで待機し、すべてが揃ったときにＩ／Ｆ１８９にデータ［０］〜データ［Ｂ−１］を送付する。なお、キャッシュ判定結果がキャッシュミスのときのデータ取得部１８６の動作については後述する。
【００６４】
●ＤＲＡＭ１０６上の画像データのバンク割り当て方法
図９は、ＤＲＡＭ１０６上の画像データ４４０の格納方法およびバンク割り当てを説明する図である。画像データ４４０は、主走査方向２５６Ｍ画素、副走査方向Ｎ画素の大きさの画像データである。図９中の符号４４１は、前述の画像形式（８ビットラスター）において１回の転送で送られるデータすなわち転送単位を示している。例えば転送長が２５６Ｂｙｔｅ（１６ｂｅａｔ）のとき、転送単位４４１には、１回のメモリアクセスに対応するデータすなわち座標［０，０］〜［２５５，０］の範囲の２５６画素が保持されている。ラスター画像形式に対応するため、バンク・インターリーブを用いたバンクの割り付け方法は、副走査方向に１ラインずつバンクを切り替えるものであることが望ましい。つまり、図９中の転送単位４４１をバンク［０］、転送単位４４４をバンク［１］、転送単位４４５をバンク［２］、転送単位４４６をバンク［３］、転送単位４４７をバンク［０］とし、バンク番号を循環させる。本実施の形態では、画素補間方式（バイリニア）に対応する必要がある。具体的には、１回の画素補間において、図７に示されるように２×２画素をサンプリングする必要がある。そのため、隣接する２×２画素が互いに異なるバンクに割り当てられれば、キャッシュメモリ１８８を構成する複数のローカルメモリが互いに競合することはない。例えば、図９の転送単位４４１がバンク［０］で、転送単位４４４がバンク［１］であることを考慮すると、転送単位４４２はバンク［２］とすればよい。このように、２列目のバンク番号を、副走査方向にバンク［３］、バンク［０］、バンク［１］、バンク［２］と循環させる。以上のように、本実施の形態では、転送長を定め、転送単位で画素補間方式（バイリニア）を考慮してバンク番号を定め、バンク・インターリーブ（第１のインターリーブ方式）を行う。
【００６５】
●複数のローカルメモリで構成されたキャッシュメモリ（共有メモリ）１８８への画素の割り当て方法
図１０（ａ）を用いて、キャッシュメモリ１８８を構成する複数のローカルメモリへの画素の割り当てについて説明する。本実施の形態では、例えば４基のローカルメモリでキャッシュメモリ（共有メモリ）１８８が構成されている。共有バス（システムバス）１９０は１２８ビット（１６Ｂｙｔｅ）であるため、本実施の形態では、１基のローカルメモリのバス幅は、共有バス（システムバス）１９０に合わせて１２８ビットと定められる。キャッシュメモリ１８８の総容量は、キャッシュ・エントリ数×バンク数＜Ｂ＞×転送長となり、１基のローカルメモリの容量は、総容量をローカルメモリ数＜Ｌ＞で除算した容量となる。１基のローカルメモリのバス幅は共有バス１９０のバス幅と同じである。したがって、ローカルメモリの１記憶領域（ＳＲＡＭなら１ワード）に１パケット（１ｂｅａｔ）のデータを格納することができる。１パケット（１ｂｅａｔ）のデータには１６画素（画素セグメント）が格納されている。
【００６６】
図１０（ａ）に示されるように、１転送長分のデータを複数のローカルメモリに格納する際、１パケット（１ｂｅａｔ）単位で格納先となるローカルメモリを切り替える。バンク［０］およびバンク［２］のそれぞれのパケットは、ローカルメモリ［０］、［１］、［２］、［３］、［０］、・・・の順で格納される。バンク［１］およびバンク［３］のそれぞれのパケットは、ローカルメモリ［２］、［３］、［０］、［１］、［２］、・・・の順で格納される。図１０（ａ）は格納方法の一例を示すが、他の格納方法であってもよく、例えばあるバンクに対応する複数のパケットは、ローカルメモリの連続する４ワードに格納されてもよい。
【００６７】
バンク・インターリーブに対し、画像データのパケットをパケット毎に異なるローカルメモリに格納することをパケット・インターリーブ（第２のインターリーブ方式）と称する。１パケット（１ｂｅａｔ）単位に格納される複数の画素の領域（画素セグメント）は画像形式によって異なる。したがって、結果的に画素セグメント毎に別のローカルメモリに格納することになる。それ故、パケット・インターリーブは画素インターリーブ（第２のインターリーブ方式）と称されてもよい。
【００６８】
本実施の形態では、バンク番号ｂｋ（ｂｋ＝０，１，２，…，Ｂ−１）およびローカルメモリ番号ｌｍ（ｌｍ＝０，１，２，…，Ｌ−１）は以下の式（１）、式（２）で表現される。
ｂｋ＝［（ｍ％２）＊Ｂ／２＋ｎ］％Ｂ
（ｍ：転送長の主走査座標、ｎ：転送長の副走査座標、Ｂ：バンク数）
…（１）
ｌｍ＝［（ｂｋ％２）＊Ｌ／２＋ｂｅａｔ］％Ｌ
（ｂｅａｔ：パケット番号、Ｌ：ローカルメモリ数）
…（２）
【００６９】
●ＤＲＡＭ１０６へのアクセス方法
画素補間方式（バイリニア）では、図７に示されるように２×２画素をサンプリングする。図９から明らかなように、本実施の形態のバンク・インターリーブ方式を用いることにより、２×２画素は異なる転送長（転送単位）に格納される。例えば、座標（０，０）、（１，０）、（０，１）、（１，１）の４点から画素補間を行うとき、（０，０）、（１，０）はバンク［０］に、（０，１）、（１，１）はバンク［１］に、それぞれ含まれる。また、例えば座標（１５，０）、（１６，０）、（１５，１）、（１６，１）の４点から画素補間を行うとき、それらの４点はそれぞれバンク［０］、バンク［２］、バンク［１］、バンク［３］に含まれる。
【００７０】
前者の場合、キャッシュ部１８０には適切なアドレス［０］とアドレス［１］とが入力されるとともに、アドレス［２］とアドレス［３］とは無効化される。キャッシュ部１８０のバンク［０］およびバンク［１］の回路は使用され、バンク［２］およびバンク［３］の回路は使用されない。一方、後者の場合、キャッシュ部１８０には適切なアドレス［０］〜アドレス［３］が入力されて、キャッシュ部１８０のバンク［０］〜バンク［３］の回路はすべて使用される。アドレス生成部１５３３は、画像形式に対応するバンク・インターリーブ方式にしたがい、所望の画素が格納されている転送単位のキャッシュデータをキャッシュ部１８０に要求する。
【００７１】
キャッシュ部１８０は、２×２画素を含む、転送長（２５６Ｂｙｔｅ）の４つのキャッシュデータを画像処理実行部１５３に返信してもよい。２×２画素について、本来、４画素分のデータ（１画素が８ビットで表されている場合、８×４＝３２ビット）を返信すれば機能的に十分である。しかしながら、上記の構成では、１０２４画素分のデータ（２５６Ｂｙｔｅ×４）を返信することになり、回路的にも、消費電力的にも無駄である。そこで、４画素に対応するデータをパケット単位（１２８ビット，１６画素）で選び、選ばれたパケットを画素サンプリング部１５３５に所望のキャッシュデータとして返信する。これにより、様々な画像形式や画素補間形式に共通的に対応しつつ、無駄なハードウエアリソースを削減することができる。
【００７２】
●キャッシュメモリ（共有メモリ）１８８へのアクセス方法
本実施の形態では、キャッシュメモリ１８８での競合を防ぐため、パケット・インターリーブ方式にしたがい、ひとつのバンクの異なるパケットのキャッシュデータを、異なるローカルメモリに格納する。この動作について、図１１（ａ）、（ｂ）を用いて詳細に説明する。
【００７３】
図１１（ａ）に示される転送単位のデータ６３０、６３２、６３４、６３６はそれぞれ、例えば、図９の画像データの４４１、４４２、４４４、４４８に対応する。隣接する４つのデータは、それぞれ異なるバンクに配置されている。図１１（ａ）の符号６０２、６０４、６０６、６０８、６１０、６１２、６１４、６１６はそれぞれ、これら４つのデータの中のパケット単位のデータである。本実施の形態では、画像形式（８ビットラスター）にしたがい、例えば、図１１（ａ）の符号６１５のようにデータ６１４にａ〜ｐの１６画素が格納されている。
【００７４】
例えば、画素補間を行う２×２画素が、図１１（ｂ）に示される符号６４０のように、パケット６０２の画素ｎ、ｏおよびパケット６０４の画素ｎ、ｏの４画素である場合を考える。パケット６０２の画素ｎ、ｏは、ローカルメモリ［３］に格納されており、パケット６０４の画素ｎ、ｏは、ローカルメモリ［１］に格納されている。すなわち、パケット・インターリーブ方式により、アクセスが必要な２つのローカルメモリは競合せず、したがって同時アクセスが可能となる。
【００７５】
例えば、画素補間を行う２×２画素が、図１１（ｂ）に示される符号６５０のように、パケット６０２の画素ｐ、パケット６０４の画素ｐ、パケット６０６の画素ａ、パケット６０８の画素ａの４画素である場合を考える。各画素は図１１（ｂ）に示されるように他と異なるローカルメモリ［０］〜［３］に格納されている。
【００７６】
しかしながら、アドレス生成部１５３３は、画像形式に応じたバンク・インターリーブ方式にしたがい、所望の画素が格納されている転送単位のキャッシュデータをキャッシュ部１８０に要求する。パケット６０２およびパケット６０６は同一バンクに含まれるため、アドレス生成部１５３３は、２つのパケットに対して１つのアクセス要求しか行わない。パケット６０４およびパケット６０８についても同様である。
【００７７】
そこで共有メモリ調停部１８６５は、ＤＲＡＭ１０６に対してバンク・インターリーブされた論理上の画像データの配置と、キャッシュメモリ１８８に対してパケット・インターリーブされた実装上のキャッシュデータの配置と、の違いを補償する機能を有する。
【００７８】
具体的には、画素補間を行う２×２画素が、パケット単位の境界を跨ぐとき、共有メモリ調停部１８６５はデータ取得の何れか１つからの１つのアクセス要求を２つに分割し、２つのローカルメモリに同時にアクセス要求を行う。共有メモリ調停部１８６５は、２つのローカルメモリからの２つのキャッシュデータから画素に対応する一部を抜き出し、１つのキャッシュデータに結合する。共有メモリ調停部１８６５は、要求元のデータ取得に結合されたキャッシュデータを返す。
【００７９】
以上の制御により、パケット６０２、６０６、６０４、６０８の４つの画素を、競合せずに４つのローカルメモリから同時アクセスで読み出すことが可能となる。なお、画素補間を行う２×２画素がパケット単位の境界を跨ぐ場合に限られず、例えば、アドレス生成部１５３３からのアドレス値が、パケット長（１６Ｂｙｔｅ）の半分すなわち半パケット長（８Ｂｙｔｅ）だけずれていたとき、上記の制御を行ってもよい。このとき、ローカルメモリから読み出した２つのキャッシュデータであるＢｅａｔ［１１］およびＢｅａｔ［１２］に対し、共有メモリ調停部１８６５は、まずＢｅａｔ［１１］の下位８Ｂｙｔｅと、Ｂｅａｔ［１２］の上位８Ｂｙｔｅと抜き出す。共有メモリ調停部１８６５は、抜き出された両者を結合して１パケット長のキャッシュデータを生成し、データ取得に返す。以上のような制御を１Ｂｙｔｅ単位で詳細に行えば、パケット・インターリーブされた２つのローカルメモリから、必要とする任意のＢｙｔｅ位置のキャッシュデータを読み出すことができる。
【００８０】
例えば、画素補間を行う２×２画素が、図１１（ｂ）の符号６６０のように、パケット６１０の画素ｐ、パケット６１２の画素ｐ、パケット６１４の画素ａ、パケット６１６の画素ａの４画素のときを考える。図１１（ｂ）に示されるように各画素はローカルメモリ［０］〜［３］に格納されている。そしてパケット６１０、６１２、６１４、６１６は、パケット（画素セグメント）単位の境界を跨ぐ以前に、バンクの境界を跨いでいる。この場合、４つのバンクに係る４つのデータ取得から４つのアクセス要求がある。したがって、バンク・インターリーブ方式によると、アクセスが必要な４つのローカルメモリは競合せずに、同時アクセスが可能となる。
【００８１】
以上のように本実施の形態に係る画像処理装置１０は、ＤＲＡＭ１０６に格納された画像データの論理上のバンク・インターリーブ方式（第１のインターリーブ方式）を有する。画像処理装置１０はさらに、複数のローカルメモリに分散して格納するためのキャッシュデータの実装上のパケット・インターリーブ方式（第２のインターリーブ方式）を有する。画像処理装置１０は、バンク・インターリーブされた論理上の画像データの配置とパケット・インターリーブされた実装上のキャッシュデータの配置との違いを補償する共有メモリ調停部１８６５を有する。その結果、ＤＲＡＭアクセスの転送長が比較的長いシステムにおいても、画素補間方式（バイリニア）に必要な任意の２×２画素を、４つのローカルメモリで構成されたキャッシュメモリ（共有メモリ）１８８から常に競合なく同時に読み出すことが可能となる。
【００８２】
●キャッシュミス時のリフィル
以下、図８および図１２を参照して、本実施の形態におけるキャッシュ構成のリフィルについて詳細に説明する。キャッシュ判定結果がキャッシュミスのときプリフェッチ動作によりデータ要求が発行され、共有バス１９０経由で所望のリフィル・データがデータ取得部１８６にリフィルされる。
【００８３】
受信部１８６１は所望のリフィル・データを受け取ると、共有メモリ調停部１８６５にデータを送付し、キャッシュメモリ１８８にリフィル・データを書き込む。受信部１８６１は、データ取得［０］〜［Ｂ−１］の何れかに通知を行うことで、リフィル・データの受信状態を更新する。キャッシュメモリ１８８に対して、これらのリフィル・データの書き込み以外に、Ｂ個のデータ取得［０］〜［Ｂ−１］によるキャッシュデータの読み出しが同時に起きる。そのため、キャッシュメモリ１８８を、リード／ライト動作を同時に実行できる２ポートＳＲＡＭで構成する。共有メモリ調停部１８６５は、Ｂ個のデータ取得［０］〜［Ｂ−１］からのリード要求１８８２と、受信部１８６１からのライト要求１８８２とを同時に実行する。
【００８４】
しかしながら、一般的に２ポートＳＲＡＭは、リード／ライト動作の一方のみを実行できる１ポートＳＲＡＭより回路規模が大きい。そのため可能ならば、キャッシュメモリ１８８を、１ポートＳＲＡＭで構成することが望ましい。そこで、図１２に示されるように、共有メモリ調停部１８６５に制御回路１８６８を設ける。共有メモリ調停部１８６５は、受信部１８６１からリフィル・データを受け取る。このとき、１回の転送長分のリフィル・データがバス幅毎にパケットに分割され、そのようなパケットが時分割で共有メモリ調停部１８６５に入力される。そのため、ローカルメモリへのライト動作として、１サイクルに１基のローカルメモリずつ実行することが考えられる。本実施の形態に係る画像処理装置１０はデータ同期部１８６９を備えるため、Ｂ個のデータ取得［０］〜［Ｂ−１］からのリード要求１８８２がすべて同時に応答されなくても、キャッシュ装置は所望の動作を実行できる。しかしながら、Ｂ個のデータ取得［０］〜［Ｂ−１］の１つでもキャッシュデータが揃わないと、データ同期部１８６９での待ち合わせで軽微ではあるが性能が低下する。
【００８５】
そこで、制御回路１８６８は、ローカルメモリと同数（Ｌ個）のレジスタと、ライトカウンタと、を備える。レジスタは、リフィル・データをパケット単位で記憶する。制御回路１８６８は、リフィル・データのパケットを順次受信し、受信したパケットひとつをレジスタひとつに格納する。制御回路１８６８は、パケットをひとつ受信するたびにライトカウンタをインクリメントし、すべてのレジスタにライトデータが揃うまでライト要求を発行しない。そして、すべてのレジスタにライトデータが格納されたとき、制御回路１８６８はすべてのローカルメモリ［０］〜［Ｌ−１］に対して１サイクルでライト動作を同時に実行する。この方法では、キャッシュメモリ１８８へのリフィルによるデータ取得の停止は、転送長とローカルメモリのバス幅の合計とで算出される。例えば、リフィル・データの転送長が２５６Ｂｙｔｅ転送で、１２８ビット（１６Ｂｙｔｅ）のローカルメモリを４基備える場合、キャッシュミス１回につき停止期間は４サイクル（＝２５６／１６／４）と算出される。その結果、キャッシュミスの割合を求めることで、リフィルによるデータ取得の停止時間を予め算出できるため、画像処理全体の処理性能を予想できる。処理性能の予想により、ローカルメモリとして、２ポートＳＲＡＭを採用するか、１ポートＳＲＡＭを採用するかを決めればよい。
【００８６】
●本実施の形態の効果
以上のように本実施の形態の手法では、キャッシュ装置を備えた画像処理装置において、ＤＲＡＭ１０６などの外部メモリに対するアクセスパターンが大きく変化した場合でも、性能の低下を抑えることができる。また、本実施の形態に係る画像処理装置１０では、ＤＲＡＭ規格に応じてデータ転送の転送長が長くなっても、共有メモリを構成する複数のローカルメモリにおける競合が生じにくくなる。そのため、複数枚の画像を変形して同一形状の画像にし、変形後の複数枚の画像を合成することができる。
【００８７】
●変形例
上記の考え方を用いれば、利用するＤＲＡＭ規格の変更により転送長が変わったり、システム仕様の変更によりシステムバスのバス幅が変わったりしても、容易に設計変更することができる。また製品のユースケースにより、ＤＲＡＭアクセスの転送長を最適化する必要があっても、本実施の形態に係るキャッシュ装置の設定を切り替えれば、転送長に応じて問題なく動作させることができる。図６（ａ）に示されるように転送長が変更されても、パケット単位の画素数は変わらない。式（１）、式（２）の手法でローカルメモリの格納先を決めれば、ローカルメモリのワード単位の格納先が変わるだけとなり、任意の転送長に対応することができる。
【００８８】
また、１画素が半パケット長（８Ｂｙｔｅ）に収まる画像形式であれば、画像形式（８ビットラスター）以外の画像形式でも、本実施の形態で対応できる。この場合、図２の画像処理実行部１５３の画素サンプリング部１５３５において、用いられる画像形式に応じて適切な画素値を抜き出せばよい。
【００８９】
本実施の形態では、画像処理装置１０がキャッシュ部を備える場合を説明したが、これに限られない。例えば、ローカルメモリの容量が大きく、すべての画像データがローカルメモリに収まるなら、図１３に示されるようにキャッシュ機構を省ける。その場合、キャッシュメモリ１８８は、複数のローカルメモリで構成された共有メモリとして扱われる。
【００９０】
本実施の形態では、基本的に画像を変形・回転する場合を説明したが、これに限られない。例えば、変形や回転以外の画像に対するフィルタ処理についても、本実施の形態で採用された２つのインターリーブ方式は成立する。外部メモリに格納された画像にフィルタ処理を施す場合にも、本実施の形態に係る技術的思想を適用できる。
【００９１】
本実施の形態では、転送長が２５６Ｂｙｔｅである場合について説明したが、これに限られない。例えば、転送長が１２８Ｂｙｔｅである場合にも、本実施の形態で採用された２つのインターリーブ方式は成立する。この場合、図１０（ｂ）に示されるようにローカルメモリに記憶される１バンクあたりのデータ量が減るだけである。つまり、本実施の形態に係る技術的思想は任意の転送長に適用可能である。その結果、本実施の形態は、ＤＲＡＭ規格などのシステム制約や画像処理の内容に応じて、適切な転送長を選ぶかまたは切り替えることにより、さらに有効に機能する。
【００９２】
（第２の実施の形態）
第１の実施の形態では、２×２画素をバイリニア補間する方法について説明した。第２の実施の形態では、４×４画素を用いたバイキュービック画素補間方法を用いる。
【００９３】
●画素補間方式（バイキュービック）
本実施の形態では、主走査方向４画素×副走査方向４画素の近傍１６点について、中心点の座標値からのズレ量である、座標の小数部から各画素値の補間係数を算出して、重みづけ補間を行い、中心点の画素値を算出する（バイキュービック補間）。
【００９４】
●画像形式（１０ビットＹ、Ｃｂ、Ｃｒブロック）
以下、本実施の形態における画像データの構造について詳細に説明する。図１４はＤＲＡＭ１０６に格納された画像データを示す。この画像データは１０ビットのＹ、Ｃｂ、Ｃｒブロック形式のデータである。１０ビットの輝度データ「Ｙ」と色差データ「Ｃｂ」、「Ｃｒ」とが１６Ｂｙｔｅ（１ｂｅａｔ）単位でパッキングされている。このとき、画像データは、Ｙ、Ｃｂ、Ｃｒの各成分（色要素）が１０ビット長で、例えば、（Ｙ［０，０］，Ｃｂ［０，０］，Ｃｒ［０，０］，Ｙ［１，０］）のように２画素単位で取り扱われる。そのため、画素の境界は、２画素単位（４０ビット長）で設けられる。
【００９５】
●キャッシュの詳細な構成
一方、バス幅は１６Ｂｙｔｅ（１ｂｅａｔ）長であるため、２画素単位（４０ビット長）ですべての画素を格納することはできない。図１４に示される斜線部のように２画素単位（４０ビット長）のデータの一部が１６Ｂｙｔｅ境界を越えて、次の１６Ｂｙｔｅ長のデータに格納されることとなる。２画素単位（４０ビット長）の画素境界と、バス幅（１６Ｂｙｔｅ（１ｂｅａｔ））の境界とは、４０ビット長と１６Ｂｙｔｅ＝１２８ビット長との最小公倍数である、８０Ｂｙｔｅ（１６Ｂｙｔｅ×５ｂｅａｔ）長で初めて一致する。
【００９６】
図１４中の［０，０］〜［７，３］は、［主走査座標，副走査座標］を表しており、前述の８０Ｂｙｔｅ（５ｂｅａｔ）単位に８×４画素がパッキングされている。そのため、例えば転送長が１６０Ｂｙｔｅ（１０ｂｅａｔ）のとき、１回のメモリアクセスで、座標［０，０］〜［７，７］の範囲の６４画素の画像データを読み書きすることとなる。本実施の形態のキャッシュ装置は８０Ｂｙｔｅ（１６Ｂｙｔｅ×５ｂｅａｔ）転送長を単位にＤＲＡＭ１０６から画像データを読み出す。
【００９７】
●ＤＲＡＭ１０６上の画像データのバンク割り当て方法
ＤＲＡＭ１０６における画像データの格納方法およびバンク割り当て方法は、第１の実施の形態において図９を参照して説明された方法と基本的に同じである。例えば、転送長が８０Ｂｙｔｅ（５ｂｅａｔ）の場合、１回のメモリアクセスに対応する、座標［０，０］〜［７，３］の範囲の３２画素が図９の転送単位４４１に格納されている。そして、図９の画像データ４４０は、主走査方向８Ｍ画素、副走査方向４Ｎ画素の大きさとなる。また、例えば転送長が１６０Ｂｙｔｅ（１０ｂｅａｔ）の場合、１回のメモリアクセスに対応する、座標［０，０］〜［７，７］の範囲の６４画素が図９の転送単位４４１に格納されている。そして、図９の画像データ４４０は、主走査方向８Ｍ画素、副走査方向８Ｎ画素の大きさとなる。
【００９８】
●複数のローカルメモリで構成されたキャッシュメモリ（共有メモリ）１８８への画素の割り当て方法
以下の説明では、本実施の形態のキャッシュ装置は８０Ｂｙｔｅ（１６Ｂｙｔｅ×５ｂｅａｔ）の転送長を単位にＤＲＡＭ１０６から画像データを読み出すこととする。２画素単位（４０ビット長）の画素境界と、バス幅１６Ｂｙｔｅ（１ｂｅａｔ）の境界とが一致していないので、このままでは第１の実施の形態と同様の画素割り当てをすることはできない。そこで本実施の形態では、共有メモリを構成するローカルメモリ（ＳＲＡＭ等）のビット長をバス幅１６Ｂｙｔｅに合わせるのではなく、画素境界に合わせる。そして図１２の共有メモリ調停部１８６５の画素並び替え回路１８６７で、ＤＲＡＭ１０６上のデータ格納形式からキャッシュメモリ上の画素の格納形式に変換する。
【００９９】
具体的には、ローカルメモリ（ＳＲＡＭ等）のビット長を１６Ｂｙｔｅ（１２８ビット）ではなく、２画素単位（４０ビット長）の整数倍である１６０ビット長にする。そして、制御回路１８６８で８０Ｂｙｔｅ（１６Ｂｙｔｅ×５ｂｅａｔ）転送長のデータを受信したら、２画素（４０ビット長）×４組を単位として画素値を抜き出し、１６０ビット長にパッキングする。このとき、本実施の形態では４×４画素のバイキュービック補間を実行することを考慮して、４×２画素単位で１６０ビット長にパッキングする。そして、共有メモリ調停部１８６５は４つの１６０ビット長のキャッシュデータを４つのローカルメモリ［０］〜［３］にそれぞれ書き込む。
【０１００】
複数のローカルメモリに対するバンクの選択方法や各ローカルメモリのアドレスの算出方法は、第１の実施の形態のパケット・インターリーブ方式で用いられた方法に準じる。第２の実施の形態では、異なる４つのローカルメモリから隣接４×２画素をそれぞれ読み出すことができるので、バイキュービック補間のための隣接４×４画素を１サイクルで同時に共有メモリ（キャッシュメモリ）から取得することができる。
【０１０１】
●本実施の形態の効果
第１の実施の形態では、１つのパケット（１ｂｅａｔのデータ転送）を単位に、共有メモリに対するパケット・インターリーブ（第２のインターリーブ）を行った。本実施の形態では、第１の実施の形態の共有メモリに対するパケット・インターリーブをさらに工夫することにより、転送長の境界と画素境界とが一致しないときにおいても対応可能となる。本実施の形態では、パケット（１ｂｅａｔのデータ転送）単位でのインターリーブ方式から、複数の画素単位でのインターリーブ方式に変換される（パケット−画素インターリーブ変換（第２のインターリーブ方式））。
【０１０２】
また第２の実施の形態に係る方式は、第１の実施の形態に係る拡張方法と同様の拡張方法により、８０Ｂｙｔｅ（１６Ｂｙｔｅ×５ｂｅａｔ）転送長のみならず、１６０Ｂｙｔｅ（１０ｂｅａｔ）転送長にも拡張することができる。
【０１０３】
（第３の実施の形態）
第３の実施の形態では、バイキュービック画素補間のラスター画像形式への拡張について説明する。
【０１０４】
●画像形式（１０ビットＹ、Ｃｂ、Ｃｒラスター）
以下、本実施の形態における画像データの構造について詳細に説明する。図１５はＤＲＡＭ１０６に格納された画像データを示す。この画像データは１０ビットのＹ、Ｃｂ、Ｃｒラスター形式のデータである。第２の実施の形態と同様に、画素の境界は２画素単位（４０ビット長）で設けられ、８０Ｂｙｔｅ（５ｂｅａｔ）単位で画素がパッキングされている。ただし、ラスター画像形式であるため、８０Ｂｙｔｅ（５ｂｅａｔ）単位には図１５中の［０，０］〜［３１，０］のように３２×１画素が格納されている。例えば転送長が１６０Ｂｙｔｅ（１０ｂｅａｔ）のとき、１回のメモリアクセスで、座標［０，０］〜［６３，０］の範囲の６４画素の画像データを読み書きすることとなる。
【０１０５】
●ＤＲＡＭ１０６上の画像データのバンク割り当て方法
ＤＲＡＭ１０６における画像データの格納方法およびバンク割り当て方法は、第１の実施の形態において図９を参照して説明された方法と基本的に同じである。例えば、転送長が８０Ｂｙｔｅ（５ｂｅａｔ）なら、１回のメモリアクセスに対応する、座標［０，０］〜［３１，０］の範囲の３２画素が図９中の転送単位４４１に格納されている。図９の画像データ４４０は、主走査方向３２Ｍ画素、副走査方向Ｎ画素の大きさとなる。例えば、転送長が１６０Ｂｙｔｅ（１０ｂｅａｔ）なら、１回のメモリアクセスに対応する、座標［０，０］〜［６３，０］の範囲の６４画素が図９中の転送単位４４１に格納されている。図９の画像データ４４０は、主走査方向６４Ｍ画素、副走査方向Ｎ画素の大きさとなる。
【０１０６】
●キャッシュの詳細な構成
第１および第２の実施の形態では、キャッシュメモリ１８８が４基のキャッシュを備える（バンク数＝４）場合を説明した。本実施の形態ではラスター画像に対して４×４画素を用いたバイキュービック画素補間を１画素／１サイクルのスループットで実行するため、キャッシュのバンク数を８基に増やす。基本的には第２の実施の形態と同様に、１６０ビット長のローカルメモリ（ＳＲＡＭ等）を８基に増やせばよい。バイキュービック画素補間のためには１基のローカルメモリから、主走査方向４画素を同時に取得できれば、所望の性能を達成できる。したがって、８０ビット長のローカルメモリ（ＳＲＡＭ等）を８基設ける。そして、ローカルメモリの容量を同一にするため、ローカルメモリ（ＳＲＡＭ等）のワード数を２倍にする。一般的には、同容量のＳＲＡＭでも１６０ビット長で構成するより、８０ビット長で構成する方が回路規模は小さいため、装置全体の回路規模を抑制できる。
【０１０７】
●複数のローカルメモリで構成されたキャッシュメモリ（共有メモリ）１８８への画素の割り当て方法
第２の実施の形態と同様に、バス幅１６Ｂｙｔｅ（１ｂｅａｔ）と、共有メモリ１８８を構成するローカルメモリ（ＳＲＡＭ等）のビット長との違いは、図１２に記載される共有メモリ調停部１８６５の画素並び替え回路１８６７にて補償する。
【０１０８】
具体的には、キャッシュミス１回に対応するリフィルで、８０Ｂｙｔｅ（１６Ｂｙｔｅ×５ｂｅａｔ）の転送長のデータを受信したら、共有メモリ調停部１８６５は２画素（４０ビット長）×２組として画素値を抜き出し、８０ビット長にパッキングする。共有メモリ調停部１８６５は、８０ビット長の８組のデータを、８基のローカルメモリ［０］〜［７］にそれぞれ書き込む。
【０１０９】
複数のローカルメモリに対するバンクの選択方法や各ローカルメモリのアドレスの算出方法は、第１の実施の形態のパケット・インターリーブ方式で用いられた方法を８バンクに拡張して決めればよい。副走査方向に４ライン分の画素セグメント（４×１画素）を同時に取得する必要があるため、この４ラインの画素セグメントを異なる４バンクに割り当てる。主走査方向に、隣接する２つの画素セグメント（４×１画素）を異なる２バンクに割り当てる。その結果、異なる８基のローカルメモリから、隣接する２×４組の画素セグメント（４×１画素）を読み出すことができるので、バイキュービック補間のための隣接４×４画素を１サイクルで同時に共有メモリ（キャッシュメモリ）１８８から取得することができる。第１および第２の実施の形態をもとに４バンク構成のキャッシュ手段を８バンク構成のキャッシュ手段に拡張すればよい。
【０１１０】
●本実施の形態の効果
以上の方法により、ラスター画像のバイキュービック画素補間を用いた変形・回転処理を実現できる。またキャッシュ手段のバンク数の増加に対し、共有メモリを構成する複数のローカルメモリのビット長を１パケット（１ｂｅａｔのデータ転送）より小さく抑えることにより回路規模の増加を抑制している。
【０１１１】
（第４の実施の形態）
上述の実施の形態では、ラスター画像形式やブロック画像形式の画像データについて、転送長やバンク数を変更可能なキャッシュ装置について説明した。上述の実施の形態の課題は、複数の画像データに対し、回転や変形を行い同期しながら画像を合成することである。特にラスター画像形式の画像データを回転したり変形する場合、キャッシュミスに対するリフィルの転送長の長さに応じて以下のような課題が生じうる。
【０１１２】
図６（ｂ）や図６（ｃ）や図１５に示されるようなラスター画像形式の画像データでは、画像の主走査方向に画素が配置される。例えば、図６（ｂ）に示される８ビットのラスター画像形式の輝度（モノ）データでは、１６Ｂｙｔｅ（１ｂｅａｔ）単位に１６画素がパッキングされている。そのため、１２８Ｂｙｔｅ（８ｂｅａｔ）転送長なら１２８画素のデータを読み書きでき、２５６Ｂｙｔｅ（１６ｂｅａｔ）転送長なら２５６画素のデータを読み書きすることになる。
【０１１３】
図７に示されるようにタイル走査の画像処理でタイル領域の大きさが６４×６４画素のときを考える。１番目のタイル領域が［０，０］〜［６３，６３］、２番目のタイル領域が［６４，０］〜［１２７，６３］、３番目のタイル領域が［１２８，０］〜［１９１，６３］となり、これらのタイル領域がタイル処理される。
【０１１４】
例えば、画像を回転しない（回転角＝０度）ときのタイル処理は、以下のようになる。まず画像処理装置は、キャッシュ装置を介して２５６Ｂｙｔｅ（１６ｂｅａｔ）転送長で［０，０］〜［２５５，０］の画素をＤＲＡＭから読み出す。タイル走査が進むにつれ、画像処理装置は、［０，１］〜［２５５，１］の画素、［０，２］〜［２５５，２］と、副走査方向に必要な画素を順次読み出していく。最終的に画像処理装置は、［０，０］〜［２５５，６３］の画素を読み出して、１番目のタイル領域［０，０］〜［６３，６３］を処理する。
【０１１５】
次に画像処理装置は、２番目のタイル領域が［６４，０］〜［１２７，６３］を処理するが、必要な画素は既にキャッシュメモリに格納されているため、ＤＲＡＭから新たな画素を読み出すことなく、２番目のタイル領域の処理を実行する。なお画像処理装置は４番目のタイル領域まで同様の動作を行い、５番目のタイル領域でキャッシュミスしてＤＲＡＭから［２５６，０］〜［５１１，０］の画素を読み出す。このように、画像を回転しないなら、大きな転送長でもキャッシュメモリに格納した画素はすべて画像処理に利用できて効率がよい。
【０１１６】
一方、画像を９０度回転するときのタイル処理は、以下のようになる。まず画像処理装置は、キャッシュ装置を介して２５６Ｂｙｔｅ（１６ｂｅａｔ）転送長で［０，０］〜［０，２５５］の画素をＤＲＡＭから読み出す。  そしてタイル走査が進むにつれ、画像処理装置は、［１，０］〜［１，２５５］の画素、［２，０］〜［２，２５５］と、主走査方向に必要な画素を順次読み出していく。最終的に画像処理装置は、［０，０］〜［６３，２５５］の画素を読み出して、１番目のタイル領域［０，０］〜［６３，６３］を処理する。
【０１１７】
次に画像処理装置は、２番目のタイル領域が［６４，０］〜［１２７，６３］を処理するが、キャッシュメモリに格納されている画素はすべて使えないため、ＤＲＡＭから、新たに［６４，０］〜［１２７，２５５］の画素を読み出す必要がある。画像処理装置は、順次、タイル領域をタイル処理するが、主走査方向にタイル領域が進む度にキャッシュミスして画素を読み出すこととなる。このときタイル領域の大きさが６４×６４画素であるため、［０，０］〜［０，６３］の画素は使用されるが、［０，６４］〜［０，２５５］の画素は、ＤＲＡＭから読み出されても使用されずに破棄される。
【０１１８】
そこで本実施の形態では、ラスター画像を９０度回転する際、タイル領域の大きさに合わせて、キャッシュ装置の転送長を小さくする。タイル領域の大きさが６４×６４画素の場合、キャッシュ装置の転送長を６４Ｂｙｔｅ（４ｂｅａｔ）転送とし、１回のリフィルで６４画素の画像データを読み出すこととする。その結果、上記のように使用されず破棄されるだけの画素（［０，６４］〜［０，２５５］）が少なくなるように、キャッシュ装置の転送長を切り替えてキャッシュメモリに一時記憶される画素の数を制御する。
【０１１９】
上記では、９０度回転の制御について説明したが、右回りの回転角度（回転の度合い）に応じて適切な転送長を選択することが望ましい。例えば、最大転送長を２５６Ｂｙｔｅ（１６ｂｅａｔ）とし、上記の画像形式のとき、最大転送画素数を２５６画素とする。次にタイル領域の高さＴＨと回転角度θから、下記の式（３）を用いて画素数ＴＰを算出する。そして、画素数ＴＰを超え、最大転送画素数２５６画素より小さくなるような転送長を選択すればよい。
画素数ＴＰ＝タイル領域の高さＴＨ／ｓｉｎθ
（ＴＨ：タイル領域の高さ、θ：右回りの回転角度）
…（３）
【０１２０】
一例をあげると、タイル領域の高さが６４画素、回転角度が３０度のとき、画素数ＴＰは１２８画素となり、この画素数は最大転送画素数２５６より小さい。そのため転送長は、１２８画素を転送できる１２８Ｂｙｔｅ（８ｂｅａｔ）とすればよい。
【０１２１】
●本実施の形態の効果
本実施の形態によると、回転角度に応じて適切な転送長を選択することにより、画像処理で利用しない画素の無駄な読み出しを抑制できる。その結果、外部メモリへのメモリアクセスを適正化し、外部メモリへのアクセス帯域（メモリ帯域）を改善することができる。
【０１２２】
（第５の実施の形態）
第５の実施の形態では、図１６（ａ）〜（ｌ）および図１７を参照し、画像データの領域分割手法として１次元分割を採用したときの画像データのバンド領域ごとの画像処理について説明する。
【０１２３】
●バンド処理
本実施の形態における画像データの領域分割手法として画像データの１次元分割を採用する。以下、１次元分割により得られるバンド領域ごとの処理であるバンド処理について説明する。
【０１２４】
バンド処理では、図１６（ａ）〜（ｄ）に示されるように、１枚の画像データ３００を帯状のバンド領域３０１〜３０４に分割し、この領域毎に逐次、画像処理を行う。バンド領域は、分割された細長い領域である。バンド領域は、画像データを主走査方向または副走査方向のいずれかに分割したものであるから、バンド領域と画像データとは、主走査方向または副走査方向のいずれかにおいて長さが一致する。図１６（ａ）の例では、画像データは副走査方向に対して分割され、画像データとバンド領域とは、主走査方向で同一の長さを有し、副走査方向では異なる長さを有する。以下、バンド領域が展開される記憶領域をバンドメモリ、画像データを分割する行為をバンド分割と呼ぶ。バンドメモリは、システム上の適切な記憶領域に確保されればよいが、ここでは説明を簡潔にするために、バンドメモリをＤＲＡＭ１０６内の記憶領域（グローバルバッファ）として確保する。
【０１２５】
また以下では、図１６（ｅ）に示されるように、画像データの座標系（主走査方向−副走査方向）を、長さ方向と高さ方向という座標系（バンド領域座標系）によって定義し、バンド領域を長さＢｄｌ×高さＢｄｈで表現する。バンド領域の長さＢｄｌ、すなわちバンド領域の長さ方向の一辺の大きさは、画像データの主走査方向の長さ、または副走査方向の長さの何れかの値とする。また、バンド領域の高さＢｄｈ、すなわちバンド領域の高さ方向の一辺の大きさは任意の値となる。図１６（ａ）〜（ｄ）の例では、長さ方向は主走査方向であり、高さ方向は副走査方向である。これに対し、図１６（ｉ）〜（ｋ）に示されるように画像データを主走査方向において分割した場合、図１６（ｌ）に示されるように、長さ方向が副走査方向となり、高さ方向が主走査方向となる。図１６（ｉ）〜（ｋ）に示されるバンド分割は、例えば画像データの主走査方向の大きさが副走査方向の大きさより大きい場合に行うようにしてもよい。
【０１２６】
図１６（ａ）〜（ｄ）に示されるバンド処理では、まず第１のバンド領域３０１を、ＤＲＡＭ１０６上のバンドメモリに展開して画像処理を行う。次に第２のバンド領域３０２を、第１のバンド領域３０１が展開されたＤＲＡＭ１０６上のバンドメモリに上書き展開して、画像処理を行なう。その後、第３のバンド領域３０３を、第２のバンド領域３０２が展開されたＤＲＡＭ１０６上のバンドメモリに上書き展開し、画像処理を行なう。最後に第４のバンド領域３０４を、第３のバンド領域３０３が展開されたＤＲＡＭ１０６上のバンドメモリに上書き展開して画像処理を行なう。図１６（ａ）〜（ｄ）からも分かるように、バンド領域３０１〜３０４の長さは同じであるが、高さは同じでなくてもよい。したがって、バンドメモリの高さは、高さ方向の一辺の大きさが最も大きいバンド領域（図１６（ａ）〜（ｄ）ではバンド領域３０１〜３０３）に応じて決定される。
【０１２７】
なお、本実施の形態のバンド処理では、バンド領域間で隙間なく空間フィルタ処理等の局所（近傍）画像処理を行なうために、図１６（ｆ）〜（ｈ）に示されるように、各バンド領域が、隣接するバンド領域と部分的に重なり合うように設定される。
【０１２８】
●画像データの入出力
以下、本実施の形態における画像データの入出力、すなわちＤＲＡＭ１０６から画像入出力部１５２への、または画像入出力部１５２からＤＲＡＭ１０６への画像データの転送処理について、図１７を用いて詳細に説明する。本実施の形態に係る画像処理装置は、１つの画像データ３００からバンド領域３０１（幅Ｂｄｌ×高さＢｄｈ）を抜き出し、入力画像データとしてＤＲＡＭ１０６に格納する。このバンド領域の入力画像データは、図９で説明したように、ＤＲＡＭ１０６で取り扱いやすくなるよう、所定の転送長を単位としたデータ構造を有する。
【０１２９】
図１７においてＤＭＡＣ１９４が起動される。ＤＭＡＣ１９４は、このバンド領域の入力画像データ２１０を、図１に示される共有バス１９０を介してＤＲＡＭ１０６から読み出し、画像処理部１５０へ入力する。入力画像データ２１０は、上述したデータ構造にしたがって、幅３２Ｂｙｔｅ×高さＢｄｈ＿ｉｎの処理単位で、領域（１）２１１から領域（Ｍ）２１９までのＭ個の画素領域（小領域）に分けられる。そして、ＤＭＡＣ１９４は、このＭ個の小領域の入力画像データを、小領域（１）２１１から小領域（Ｍ）２１９まで順次読み出し、画像処理部１５０に入力する。画像処理部１５０は、この小領域の入力画像データを受け取り、この小領域単位で画像処理を実行する。
【０１３０】
入力画像データは、図２のスイッチ１９４１を切り替えることで、画素生成部１５３１に入力される。本実施の形態に係る画素生成部１５３１は、入力画像データの画素値を、画像データの座標値に変換し、座標変換部１５３２に出力する。なお、座標変換部１５３２以降の変形・回転処理は第１の実施の形態と同様である。
【０１３１】
画像入出力部１５２の画像入力部１５２１は、ＤＭＡＣ１９４から入力画像データを受け取りながら、そのデータを中間バッファ制御部１５２２へ転送する。中間バッファ制御部１５２２は、中間バッファ調停回路２３０と中間バッファ２３２とを有する。本実施の形態では、共有メモリ（複数のローカルメモリ）の一部に、図１７に示されるように中間バッファの領域を割り当てる。中間バッファ２３２は、入力画像データを格納する領域である入力領域２３４と、後述する出力画像データを格納する領域である出力領域２３６とで構成される。
【０１３２】
ＣＰＵ１０２は、変形の態様、変形量、回転角度、画像形式、画素補間形式などをもとに転送長を定め、共有メモリにキャッシュメモリの領域を割り当てる。ＣＰＵ１０２は、次に残りの共有メモリ領域の容量に従い、中間バッファ２３２の入力領域および出力領域を割り当てる。具体的には、残りの共有メモリ領域の容量をもとに、入力バンド高さＢｄｈ＿ｉｎと出力バンド高さＢｄｈ＿ｏｕｔを決定する。そしてＣＰＵ１０２は、決定した入力バンド高さと、出力バンド高さに基づいて、中間バッファ２３２の入力領域および出力領域の先頭アドレスを、それぞれ入力領域先頭アドレスおよび出力領域先頭アドレスとして設定する。
【０１３３】
中間バッファ調停回路２３０は、受け取った入力画像データを、中間バッファ２３２の入力領域２３４へ一時的に格納する。その後、画像入力部１５２１は、中間バッファ調停回路２３０を介して、一時的に記憶された小領域の入力画像データを読み出し、１画素ずつ入力画素値１５５を順次生成して、画像処理実行部１５３へ入力する。なお、画像入力部１５２１と画像出力部１５２３とは非同期で動作してもよく、例えば入力画像データにおける小領域（１）２１１と小領域（２）の一部を用いて、出力画像データの小領域（１）２５１が生成され、出力されてもよい。
【０１３４】
画像処理実行部１５３は、入力された１つ以上の画素からなる画素領域に画像処理を施す。画像処理実行部１５３は、画素領域をバンド領域の高さ方向にスライドさせながらこのような処理を進め、高さ方向に１列分の画素値を出力すると、次の列の画素を出力するための処理を実行する。処理後の画素値は１画素ずつ、画像入出力部１５２の画像出力部１５２３へ出力される。
【０１３５】
画像出力部１５２３では、処理後の出力画素値１５６から出力画像データを生成し、３２Ｂｙｔｅ単位で、中間バッファ調停回路２３０を介して中間バッファ２３２の出力領域２３６へ格納する。ここで、生成済みの出力画像データのデータ構造は図９に示される画像形式のままであるが、出力画像データ２５０ではその形式が変わっていてもよい。画像処理実行部１５３では、入力画素領域のサイズと出力画素領域のサイズとが異なる様々な画像処理が実行されるため、入力画像データ２１０の画素数と出力画像データ２５０の画素数とは異なる。したがって、出力画像データ２５０の出力バンド領域の高さおよび幅は入力画像データ２１０のそれとは異なり、高さＢｄｈ＿ｏｕｔ、幅３２×Ｎとなる。このように、入力画像データ２１０と出力画像データ２５０とでは、バンド領域の高さが異なるため、処理単位である小領域の容量が異なる。さらにバンド領域の幅も異なるため、小領域の数もＭ個からＮ個に変化する。
【０１３６】
画像出力部１５２３は、小領域（１）２５１の出力画像データが中間バッファ２３２の出力領域２３６に揃った時点で、画像処理実行部１５３からの出力画素値１５６の受け取りを停止する。画像出力部１５２３は、出力領域２３６の出力画像データを順次読み出し、ＤＭＡＣ１９６へ送出する。ＤＭＡＣ１９６は、ＣＰＵ１０２からの指示信号２２５に従って、処理後の画像データをＤＲＡＭ１０６へ書き込む。ＤＭＡＣ１９６は、同様の動作を小領域（２）から小領域（Ｎ）まで順次実行し、出力バンド領域の出力画像データをすべてＤＲＡＭ１０６へ書き戻す。
【０１３７】
●本実施の形態の効果
本実施の形態では、外部メモリ（ＤＲＡＭ等）の規格や画像形式、画素補間形式に応じて転送長を定め、転送長に応じて共有メモリにキャッシュメモリ領域を割り当てる。共有メモリからキャッシュメモリ領域を除いた残りの領域に対し、適切なバンド高さを算出して設定する。入力画像の領域と出力画像の領域とを共有メモリに割り当て回路規模を削減する。これらの手法により、外部メモリ（ＤＲＡＭ等）から変形座標を入力して複雑な画像変形を実現することができる。
【０１３８】
（第６の実施の形態）
第１から第５の実施の形態を利用して、複数枚の画像に異なる変形もしくは回転処理を施し、同一形状にした上で、複数枚の画像を合成することができる。図２の画素生成部１５３１は、複数枚の画像の画素を順次、生成する。例えば、５枚の画像を合成するとき、画素生成部１５３１は、１枚目の画像の座標［０，０］、２枚目の画像の座標［０，０］、…、５枚目の画像の座標［０，０］のように同一座標に対して、５枚の画像の画素を順次、生成して座標変換部１５３２に送付する。画素生成部１５３１は画像識別情報も同時に送付する。５枚の画像の画素を送付すると画素生成部１５３１は、次の座標［１，０］について５枚の画像の画素を順次、生成する。座標変換部１５３２は画像識別情報をもとにレジスタを切り替え、画像に応じた座標変換を順次、実施する。キャッシュ装置１８０は、画像識別情報に応じてキャッシュタグやキャッシュメモリを切り替え、複数枚の画像の各々に対して別のキャッシュ手段を利用する。キャッシュ装置１８０は、順次入力される同一座標の５枚の画像の画素に対して、フィルタ処理で必要な画素セグメントを読み出し、画素サンプリング部１５３５へ順番に送付する。画素サンプリング部１５３５は、順次入力される５枚の画像の画素に対するフィルタ処理に必要な複数の画素を抽出して、画素補間部１５３６に送付する。画素補間部１５３６は順次入力される５枚の画像の画素に対するフィルタ処理を施し、順次、画素合成部１５３７へ送付する。画素合成部１５３７は、５枚の画像の画素に対するフィルタ処理後の画素値を順次、受け取り、５枚の画像の画素をすべて受け取った際に、画像合成の演算を行い、１画素の画像合成値を算出する。そして、画素合成部１５３７は、ＷＤＭＡＣ１９６へ画像合成後の画素値を送付する。同一座標に対して、画像合成の枚数分の一連の画素を連続して処理していくことで任意の枚数の画像合成が実現できる。
【０１３９】
●本実施の形態の効果
本実施の形態によると、複数の画像に対し異なる変形もしくは回転を施して同一形状の画像にし、複数の画像を合成することができる。
【０１４０】
以上、実施の形態に係る画像処理装置の構成と動作について説明した。これらの実施の形態は例示であり、その各構成要素や各処理の組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【０１４１】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１４２】
１０  画像処理装置、  １００  ＣＰＵ回路部、  １０６  ＤＲＡＭ、  １５０  画像処理部、  １８８  キャッシュメモリ。
【図１】
2018060471.tif 000003
【図２】
2018060471.tif 000004
【図３】
2018060471.tif 000005
【図４】
2018060471.tif 000006
【図５】
2018060471.tif 000007
【図６】
2018060471.tif 000008
【図７】
2018060471.tif 000009
【図８】
2018060471.tif 000010
【図９】
2018060471.tif 000011
【図１０】
2018060471.tif 000012
【図１１】
2018060471.tif 000013
【図１２】
2018060471.tif 000014
【図１３】
2018060471.tif 000015
【図１４】
2018060471.tif 000016
【図１５】
2018060471.tif 000017
【図１６】
2018060471.tif 000018
【図１７】
2018060471.tif 000019