(57)【特許請求の範囲】
【請求項１】
入力画像に変形処理を行って出力画像を生成する画像処理装置であって、
入力画像の画素データを取得する取得手段と、
前記入力画像の変形パラメータに基づく変形後の変形画像の分割領域ごとに、前記変形画像の画素データを、前記入力画像の画素データのうちの一部を記憶するキャッシュメモリを参照して求める変形手段と、
前記分割領域のサイズを前記キャッシュメモリの容量と前記変形パラメータに基づいて決定する決定手段とを有し、
前記キャッシュメモリには、所定画素数を単位として、前記入力画像の画素データのうち一部が記憶され、
前記決定手段は、第１サイズの分割領域に対応する変形画像の画素データを確定するために前記所定画素数を単位として前記キャッシュメモリから参照される入力画像の画素データのデータ量が前記キャッシュメモリの容量を超え、前記第１サイズよりも所定サイズ小さい第２サイズの分割領域に対応する変形画像の画素データを確定するために前記所定画素数を単位として前記キャッシュメモリから参照される入力画像の画素データのデータ量が前記キャッシュメモリの容量を超えない場合、前記第２サイズを前記分割領域のサイズとして決定する
ことを特徴とする画像処理装置。
【請求項２】
前記決定手段は、前記分割領域の幅と高さのうち一方は、一定のサイズとし、他方を前記キャッシュメモリの容量に基づいて決定することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記変形手段は、前記分割領域の座標に対応する前記入力画像の座標を算出し、当該算出された座標の入力画像の画素データを前記キャッシュメモリにアクセスして取得し、前記分割領域の画素データを確定すると共に、前記算出された座標の入力画像の画素データが前記キャッシュメモリに記憶されていない場合、前記入力画像の画素データをフレーム単位で記憶可能なフレームメモリであって、前記キャッシュメモリよりもアクセス時間が長いフレームメモリから、前記算出された座標の入力画像の画素データを取得し、
前記フレームメモリから前記入力画像の画素データが取得された場合、当該取得された入力画像の画素データに対応する分割領域の入力画像の画素データを、前記フレームメモリから前記キャッシュメモリへ格納させる制御手段を有することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記変形処理には、前記入力画像の拡大、縮小、及び、回転のうち、少なくとも何れかが含まれ、
前記変形手段は、前記変形の種別と当該変形の度合いに応じた前記変形パラメータに基づいて、前記変形画像の座標に対応する前記入力画像の座標を特定し、当該特定された座標の画素データを前記キャッシュメモリから取得して前記変形画像の画素データを求めることを特徴とする請求項１乃至３のうちいずれか１項に記載の画像処理装置。
【請求項５】
入力画像に変形処理を行って出力画像を生成する画像処理装置の制御方法であって、
入力画像の画素データを取得する取得工程と、
前記入力画像の変形パラメータに基づく変形後の変形画像の分割領域ごとに、前記変形画像の画素データを、前記入力画像の画素データのうちの一部を記憶するキャッシュメモリを参照して求める変形工程と、
前記分割領域のサイズを前記キャッシュメモリの容量と前記変形パラメータに基づいて決定する決定工程とを有し、
前記キャッシュメモリには、所定画素数を単位として、前記入力画像の画素データのうち一部が記憶され、
前記決定工程では、第１サイズの分割領域に対応する変形画像の画素データを確定するために前記所定画素数を単位として前記キャッシュメモリから参照される入力画像の画素データのデータ量が前記キャッシュメモリの容量を超え、前記第１サイズよりも所定サイズ小さい第２サイズの分割領域に対応する変形画像の画素データを確定するために前記所定画素数を単位として前記キャッシュメモリから参照される入力画像の画素データのデータ量が前記キャッシュメモリの容量を超えない場合、前記第２サイズを前記分割領域のサイズとして決定する
ことを特徴とする制御方法。
【請求項６】
コンピュータを請求項１乃至４のうちいずれか１項に記載の画像処理装置として動作させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理技術に関し、特に、画像変形処理における処理制御技術に関する。
【背景技術】
【０００２】
拡大縮小処理、アフィン変形処理、及びキーストーン補正処理などの画像変形処理では、出力画像の各座標についての画素データは、入力画像の対応する座標についての画素データから求められる。具体的には、入力画像データをフレームメモリに格納し、出力画像の各座標に対応する入力画像の画素データを読み出す。このとき、入力画像の画素データの読み出しは、ランダムアクセスによって行われることが多い。メモリへのランダムアクセスを高速化するための一般的な技術として、キャッシュ技術がある（例えば特許文献１）。キャッシュ技術によれば、外部メモリから、高速にアクセスできる内部メモリ（キャッシュ）へとデータが複製される。キャッシュに必要なデータが存在する場合には、時間のかかる外部メモリへのアクセスが必要ない。このため、キャッシュを用いることによりデータへのアクセス速度が向上する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−５１６８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
キャッシュ技術を用いる際には、キャッシュメモリに必要なデータが存在する確率（キャッシュヒット率）を高めることが、データアクセス速度向上のために必要である。図１（Ａ）に、キャッシュヒット率を高めるための技術の１つを示す。図１（Ａ）の例では、入力画像１０１に対して画像変形処理を行うことにより、変形画像１０３が得られる。１０２は、外部メモリに格納された入力画像１０１を示す。
【０００５】
図１（Ａ）の例で行われている画像変形処理は、縦方向への縮小処理である。ここで、変形画像の画像領域が複数のタイルに分割される。そして、それぞれのタイルについて順番にタイル内の画像が求められる。例えばタイル１０５内の画像を求める場合には、領域１０４内の画像のみが参照されるため、領域１０４内の画像データにのみアクセスが行われる。このように、小さい領域内の画像データに対して集中的にアクセスを行う（局所性を高める）ことにより、キャッシュヒット率を高めることができる。
【０００６】
しかしながら、タイルが大きすぎると、タイルに対応する入力画像データのデータ量が、キャッシュメモリの容量を超えてしまうことがある。例えば図４の場合、タイル４０４には入力画像４０５の領域４０８が対応する。しかしながら、キャッシュメモリの容量は領域４０９の画像データ量と同等であり、キャッシュメモリは領域４０８内の画像データを全て格納できない。すなわち、外部メモリからキャッシュに複製したデータ（データＡと呼ぶ）を次に再利用するまでに、このデータＡが破棄される可能性がある。このような場合、キャッシュのヒット率は著しく低下し、処理時間も著しく長くなってしまう。特に動画に対して画像変形処理を行う場合、画像表示処理に画像変形処理が追いつけなる可能性がある。この場合、コマ落ちなどの画像劣化が発生する可能性がある。
【０００７】
本発明は、キャッシュ技術を用いて画像変形処理を行う際に、処理速度を向上させることを目的とする。
【課題を解決するための手段】
【０００８】
本発明の目的を達成するために、例えば、本発明の画像処理装置は以下の構成を備える。すなわち、
入力画像に変形処理を行って出力画像を生成する画像処理装置であって、
入力画像の画素データを取得する取得手段と、
前記入力画像の変形パラメータに基づく変形後の変形画像の分割領域ごとに、前記変形画像の画素データを、前記入力画像の画素データのうちの一部を記憶するキャッシュメモリを参照して求める変形手段と、
前記分割領域のサイズを前記キャッシュメモリの容量と前記変形パラメータに基づいて決定する決定手段とを有し、
前記キャッシュメモリには、所定画素数を単位として、前記入力画像の画素データのうち一部が記憶され、
前記決定手段は、第１サイズの分割領域に対応する変形画像の画素データを確定するために前記所定画素数を単位として前記キャッシュメモリから参照される入力画像の画素データのデータ量が前記キャッシュメモリの容量を超え、前記第１サイズよりも所定サイズ小さい第２サイズの分割領域に対応する変形画像の画素データを確定するために前記所定画素数を単位として前記キャッシュメモリから参照される入力画像の画素データのデータ量が前記キャッシュメモリの容量を超えない場合、前記第２サイズを前記分割領域のサイズとして決定する
ことを特徴とする。
【発明の効果】
【０００９】
キャッシュ技術を用いて画像変形処理を行う際に、処理速度を向上させることができる。
【図面の簡単な説明】
【００１０】
【図１】従来技術を示す図。
【図２】実施例１に係るステップＳ１０１０の詳細なフローチャート。
【図３】実施例１に係るタイル分割方法の一例を示す図。
【図４】従来技術における課題を示す図。
【図５】実施例１に係る画像処理装置５００の構成例を示すブロック図。
【図６】画像変形処理の説明図。
【図７】本実施例に係るタイルの大きさを決定する処理の説明図。
【図８】実施例２に係るタイル分割方法の一例を示す図。
【図９】実施例３に係るコンピュータの構成例を示すブロック図。
【図１０】実施例１に係る処理のフローチャート。
【発明を実施するための形態】
【００１１】
以下、添付の図面を参照して、本発明をその好適な実施形態に基づいて詳細に説明する。なお、以下の実施形態において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
【実施例１】
【００１２】
本実施例によれば、変形画像の画像領域を複数の部分領域（タイル）に分割し、それぞれのタイル内の変形画像データを求める場合に、適切なタイルの大きさを決定することができる。すなわち、タイルに対応する入力画像データをキャッシュメモリに格納できるように、タイルの大きさが決定される。こうして、キャッシュヒット率を向上させることができ、画像変形処理の速度を向上させることができる。さらに本実施例によれば、タイルの大きさを小さくしすぎることも防止することができる。タイルが小さすぎる場合、処理順序は例えば通常のラスタスキャンに近くなってしまうため、かえってキャッシュヒット率は低くなってしまう可能性がある。
【００１３】
図５は実施例１に係る画像処理装置の構成を表す。画像処理装置５００は入力画像５２０を、変形パラメータ５１３に基づき変形して変形画像５２６（出力画像）として出力するための装置である。本実施例における画像変形には、拡大縮小処理、アフィン変形処理、及びキーストーン補正処理などが含まれる。
【００１４】
画像処理装置５００について、まず大まかな処理の流れを説明する。本実施例において、画像処理装置５００が出力する変形画像５２６のそれぞれの画素は、画像処理装置５００に入力される入力画像５２０の画素に対応付けられている。この対応関係は、変形パラメータ５１３として格納されてメモリ（不図示）に格納されている。
【００１５】
例えば座標変換部５０９は、変形パラメータ５１３に基づいて、変形画像５２６のそれぞれの画素の座標を、対応する入力画像５２０の画素の座標に変換することができる。本明細書では、変形画像５２６の画素の座標を変形後座標５２９と呼ぶ。また、変形後座標５２９を持つ変形画像５２６の画素に対応する、入力画像５２０の画素の座標を、変形前座標５２８と呼ぶ。
【００１６】
カウンタ５０８は、変形画像５２６の各画素を順次走査する。ここで、カウンタ５０８の走査方法について説明する。図３に示すように、本実施例において変形画像５２６は、複数の領域（タイル３０４）に分割される。各タイルの大きさは、後述するようにタイル決定部５１０が決定する。カウンタ５０８は、分割された各タイルのそれぞれを、順に走査する。
【００１７】
カウンタ５０８は、走査されている画素の変形後座標５２９に対応する変形前座標５２８を、座標変換部５０９から取得する。そしてカウンタ５０８は出力部５５０に、走査されている画素の変形後座標５２９と、変形後座標５２９に対応する変形前座標５２８とを、出力部５５０に送信する。
【００１８】
出力部５５０は、変形前座標５２８に従って、フレームメモリ５０１における画像のデータ（イメージデータ）のアドレスを示すリードアドレス情報５２７を算出する。すなわち、変形前座標５２８を持つ画素を含むイメージデータのアドレスを、出力部５５０は算出する。そして出力部５５０は、算出したリードアドレス情報５２７をキャッシュ制御部５０６に送信する。フレームメモリ５０１には、複数のイメージデータに分割された入力画像５２０が格納されている。ＤＭＡＣ５０４は、イメージデータ単位で、フレームメモリ５０１に格納された入力画像５２０を読み出すことができる。
【００１９】
キャッシュ制御部５０６は、リードアドレス情報５２７の示すイメージデータが、キャッシュメモリ５０７に格納されているか否かを判定する。リードアドレス情報５２７の示すイメージデータがキャッシュメモリ５０７に格納されている場合、キャッシュ制御部５０６はリードアドレス情報５２７の示すイメージデータ５２５をキャッシュメモリ５０７から取得する。リードアドレス情報５２７の示すイメージデータがキャッシュメモリ５０７に格納されていない場合、キャッシュ制御部５０６はリードアドレス情報５２７の示すイメージデータ５２４を、ＤＭＡＣ５０４を介してフレームメモリ５０１から取得する。キャッシュメモリ５０７のデータ読み出し速度はフレームメモリ５０１のデータ読み出し速度よりも高速である。キャッシュ制御部は、読み出したイメージデータ５２４，５２５を、出力部５５０へと出力する。
【００２０】
出力部５５０は、変形前座標５２８に対応する画素値をイメージデータ５２４，５２５から取得し（変形手段）、変形画像５２６の変形後座標５２９における画素値として、メモリ５６０に出力する（出力手段）。このように、変形画像５２６の各画素の画素値を出力部５５０が出力することにより、メモリ５６０内に変形画像５２６が生成される。
【００２１】
次に、画像処理装置５００が行う動作について、図１０のフローチャートを参照して詳細に説明する。ステップＳ１００５においてメモリ格納部５０５は入力画像５２０を入力し（入力手段）、フレームメモリ５０１に入力画像５２０を格納する（格納手段）。具体的には、メモリ格納部５０５は入力画像５２０をピクセル単位で順次取得する。メモリ格納部５０５は、ピクセル単位で入力された入力画像５２０を一旦バッファする。そしてメモリ格納部５０５は、入力画像５２０を複数のイメージデータ５２１に分割し、それぞれのイメージデータ５２１をＤＭＡＣ５０３に出力する。イメージデータ５２１とは、上述のようにメモリアクセスのためのデータ単位である。すなわちメモリ格納部５０５は、入力画像５２０をブロック単位（イメージデータ単位）で格納する。
【００２２】
入力画像５２０とイメージデータ５２１との関係について、図７を用いて説明する。図７（Ｂ）は入力画像５２０の例である。また、図７（Ａ）は複数のイメージデータに分割された入力画像５２０の例である。図７の例では１つのイメージデータは縦１画素×横６画素を有するが、イメージデータの大きさは異なっていてもよい。
【００２３】
またメモリ格納部５０５は、ＤＭＡＣ５０３に対してＤＭＡＣ制御情報５２２を出力する。ＤＭＡＣ制御情報５２２は、イメージデータ５２１をフレームメモリ５０１のどの領域に配置するかを指定するためのアドレス情報を含む。ＤＭＡＣ５０３は、Ｂｕｓ５０２を介して、フレームメモリ５０１のＤＭＡＣ制御情報５２２で指定されるアドレスに、入力されたイメージデータ５２１を書き込む。
【００２４】
ステップＳ１０１０でタイル決定部５１０は、タイルの大きさを示すタイル高情報５３２及びタイル幅情報５３３を生成する（決定手段）。本実施例においては、１つの入力画像５２０を処理する際には、１組のタイル高情報５３２及びタイル幅情報５３３のみが用いられるものとする。ステップＳ１０１０のこの処理については後述する。
【００２５】
ステップＳ１０１５でカウンタ５０８は、タイル高情報５３２及びタイル幅情報５３３に従って、変形画像５２６の画像領域を複数のタイルに分割する（分割手段）。例えばカウンタ５０８は、変形画像５２６の画像領域を、タイル高情報５３２が示す高さ及びタイル幅情報５３３が示す幅を持つ複数の矩形領域に分割することができる。もっとも、画素領域の周辺部において、タイルの大きさは、タイル高情報５３２及びタイル幅情報５３３が示す大きさより小さくてもよい。
【００２６】
ステップＳ１０２０でカウンタ５０８は、タイルのうち１つを選択する。選択は任意の方法で行うことができる。例えばカウンタ５０８は、ラスタ順にタイルを選択してもよい。
【００２７】
ステップＳ１０２５でカウンタ５０８は、選択されたタイルに含まれる画素（部分領域内の画素、着目画素）を１つ選択する（選択手段）。選択は任意の方法で行うことができる。例えばカウンタ５０８は、ラスタ順に画素を順次選択してもよい。以降で、ステップＳ１０２５で選択された画素の座標を、変形画像５２６の変形後座標５２９と呼ぶ。
【００２８】
ステップＳ１０３０でカウンタ５０８は、変形後座標５２９に対応する、入力画像５２０の座標である、変形前座標５２８を取得する。以下に、この処理について詳しく説明する。本実施例において変形前座標５２８のそれぞれは、１つの変形後座標５２９と対応している。変形後座標５２９と変形前座標５２８の関係は、変形パラメータ５１３で指定されている。そして、変形画像５２６の変形後座標５２９の画素値は、入力画像５２０の対応する変形前座標５２８の画素値から求められる。カウンタ５０８は、変形後座標５２９から変形前座標５２８への変換を、座標変換部５０９に行わせる。
【００２９】
座標変換部５０９の処理について、具体的な一例を用いて説明する。本実施例においては画像処理装置５００で行う変形処理は、拡大縮小、回転、及びシフトのうちの少なくとも１つを含むアフィン変形である。この場合、変形後座標５２９から変形前座標５２８への変換は、以下の式に従って行うことができる。
【数１】
0005739723.tif 000002
上式において、ｘｓｒｃ，ｙｓｒｃは変形前座標５２８であり、ｘｄｓｔ，ｙｄｓｔは変形後座標５２９である。上式のように、変形パラメータ５１３はＤｓｔ２Ｓｒｃ［０］［０］〜Ｄｓｔ２Ｓｒｃ［１］［２］の６つの係数で表現される。
【００３０】
ステップＳ１０３５で出力部５５０は、カウンタ５０８から変形前座標５２８及び変形後座標５２９を取得する。そして出力部５５０は、変形前座標５２８に対応するイメージデータのアドレスを計算し、算出されたアドレスを含むリードアドレス情報５２７を生成する。出力部５５０はさらに、リードアドレス情報５２７をキャッシュ制御部５０６に出力する。変形前座標５２８とイメージデータのアドレスとの関係は、出力部５５０が予め知っていてもよい。代わりに出力部５５０は、変形前座標５２８とイメージデータのアドレスとの関係を、例えばＤＭＡＣ５０４のようなメモリ制御部に問い合わせてもよい。
【００３１】
ステップＳ１０４０でキャッシュ制御部５０６は、リードアドレス情報５２７が示すイメージデータが、キャッシュメモリ５０７に格納されているか否かを判定する（制御手段）。格納されている場合、処理はステップＳ１０４５に進む。格納されていない場合、処理はステップＳ１０５０に進む。
【００３２】
ステップＳ１０４５でキャッシュ制御部５０６は、キャッシュメモリ５０７から、リードアドレス情報５２７が示すイメージデータ５２５を取得する。
【００３３】
ステップＳ１０５０でキャッシュ制御部５０６は、フレームメモリ５０１から、リードアドレス情報５２７が示すイメージデータ５２４を取得する。具体的にはキャッシュ制御部５０６は、ＤＭＡＣ５０４を介してフレームメモリ５０１からイメージデータ５２４取得するために、ＤＭＡＣ５０４に対してＤＭＡＣ制御情報５２３を出力する。ＤＭＡＣ５０４は、入力されたＤＭＡＣ制御情報５２３に従って、フレームメモリ５０１から、リードアドレス情報５２７が示すイメージデータ５２４を取得する。ステップＳ１０５５でキャッシュ制御部５０６は、ＤＭＡＣ５０４を介して取得したイメージデータ５２４を、キャッシュメモリ５０７に格納する。例えばキャッシュ制御部５０６は、イメージデータ５２４をリードアドレス情報５２７と関連づけて、キャッシュメモリ５０７に格納することができる。
【００３４】
ステップＳ１０６０で出力部５５０は、イメージデータ５２４，５２５から変形前座標５２８に対応する画素値を取得する。そして出力部５５０は、変形後座標５２９における画素値として、取得した画素値をメモリ５６０に出力する（出力手段）。
【００３５】
ステップＳ１０６５でカウンタ５０８は、ステップＳ１０２５で、ステップＳ１０２０で選択したタイル内の全ての画素を選択しているか否かを判定する。全ての画素を選択している場合、処理はステップＳ１０６５に進む。全ての画素を選択していない場合、処理はステップＳ１０２５に戻る。ステップＳ１０２５〜ステップＳ１０６５の処理の繰り返しによって、ステップＳ１０２０で選択したタイル内の変形画像（部分画像）が生成される。
【００３６】
ステップＳ１０７０でカウンタ５０８は、ステップＳ１０２０で、変形画像５２６の全てのタイルが選択されているか否かを判定する。全てのタイルを選択している場合、処理は終了する。全ての画素を選択していない場合、処理はステップＳ１０２０に戻る。ステップＳ１０２０〜ステップＳ１０７０の処理の繰り返しによって、それぞれのタイルによって構成される変形画像５２６が生成される。
【００３７】
次に、ステップＳ１０１０の処理について、以下に詳しく説明する。まず、ステップＳ１０１０の概略を説明する。ステップＳ１０１０においてタイル決定部５１０は、タイルのタイル幅Ｓｗ及びタイル高Ｓｈを決定する。図６（Ｃ）にタイル幅Ｓｗ及びタイル高Ｓｈを持つタイル６３０を示す。図６（Ｃ）に示す変形画像内のタイル６３０は、図６（Ｂ）に示す入力画像内の領域６２０に対応する。すなわち、領域６２０内の画像を変形処理することにより、タイル６３０内の画像が得られる。
【００３８】
また上述のように、フレームメモリ５０１及びキャッシュメモリ５０７において、入力画像は複数のイメージデータに分割されている。したがって、タイル６３０内の画像を生成するためには、図６（Ａ）に示すように、領域６２０内の画像を全て含むイメージデータ群６１０を参照することになる。タイル６３０内の画像を生成する際には、イメージデータ群６１０を繰り返し参照する可能性が高いため、イメージデータ群６１０をキャッシュすることにより、タイル６３０内の画像を高速に生成することができる。
【００３９】
ところが、キャッシュメモリの容量は予め定められているので、タイル６３０に対応するイメージデータ群６１０の全てをキャッシュできないことがある。図７を用いて、このことを詳しく説明する。図７（Ａ）は、タイル高がＳｈ１である場合の例を示す。図７（Ａ）において、変形画像内のタイル７１０は、入力画像内の領域７２０に対応する。ところが、図７（Ａ）の場合、キャッシュメモリ５０７の容量は、イメージデータ群７３０のデータ量に一致する。したがってキャッシュメモリ５０７は、領域７２０内の画像を全て含むイメージデータ群を格納することができない。この場合、タイル７１０内の画像を生成する際に、処理に必要なイメージデータがキャッシュメモリ５０７に入っている可能性が下がってしまう。このことは、処理速度の低下につながる。
【００４０】
図７（Ｂ）は、タイル高をＳｈ１からＳｈ２に減らした場合の例を示す。ここで、Ｓｈ１＜Ｓｈ２である。図７（Ｂ）において、変形画像内のタイル７４０は、入力画像内の領域７５０に対応する。この場合もキャッシュメモリ５０７は、領域７５０内の画像を全て含むイメージデータ群を格納することができない。
【００４１】
図７（Ｃ）は、タイル高をＳｈ２からＳｈ３に減らした場合の例を示す。ここで、Ｓｈ２＜Ｓｈ３である。図７（Ｂ）において、変形画像内のタイル７７０は、入力画像内の領域７８０に対応する。この場合キャッシュメモリ５０７は、領域７５０内の画像を全て含むイメージデータ群を格納することができる。したがって、タイル７１０内の画像を生成する際に、処理に必要なイメージデータがキャッシュメモリ５０７に入っている可能性が高くなり、処理速度が向上することが期待される。
【００４２】
このように、タイルの大きさを小さくすることにより、キャッシュメモリ５０７に、タイルに対応する入力画像を含むイメージデータ群を全て格納させることができるようになる。ステップＳ１０１０においてタイル決定部５１０は、キャッシュメモリ５０７がタイルに対応する入力画像を含むイメージデータ群を全て格納できるように、タイル幅Ｓｗ及びタイル高Ｓｈを決定する。
【００４３】
次にステップＳ１０１０について、図２のフローチャートを参照して詳しく説明する。本実施例においては、タイル幅Ｓｗは固定値とし、タイル高さＳｈを決定するものとする。ステップＳ２０１においてタイル決定部５１０は、初期設定処理を行う。具体的にはタイル決定部５１０は、タイル上限情報５１１及びキャッシュサイズ情報５１２を取得する。タイル上限情報には、タイル高上限値Ｓｈｍａｘと、タイル幅上限値Ｓｗｍａｘとが含まれる。もっとも、Ｓｈｍａｘは変形画像５２６の高さであってもよいし、Ｓｗｍａｘは変形画像５２６の幅であってもよい。
【００４４】
また、タイル決定部５１０は、タイル高ＳｈをＳｈｍａｘとし、タイル幅ＳｗをＳｗｍａｘとする。すなわち本実施例においては、タイル高Ｓｈｍａｘ及びタイル幅Ｓｗｍａｘを初期値として用いる。さらにタイル決定部５１０は、変形画像５２６の画像領域のうち任意の画素を原点（１，１）に設定する。本実施例においては、右方向をＸ軸正方向、下方向をＹ軸正方向とし、変形画像５２６の画像領域の左上隅の画素を原点（１，１）に設定するものとする。このようにしてタイル決定部５１０は、変形画像５２６の画像領域）に高さＳｈ、幅Ｓｗの領域を設定する。
【００４５】
ステップＳ２０２ａ〜Ｓ２０２ｂはタイル高Ｓｈが０以上の間繰り返されるループである。ステップＳ２０２ａ〜Ｓ２０２ｂの間にＳｈが０となった場合にはループ処理を中断し、タイル高Ｓｈ＝１を出力する。もっとも、ステップＳ２０２ａ〜Ｓ２０２ｂの間にＳｈが０となった場合にはエラーを通知してもよい。
【００４６】
ステップＳ２０３でタイル決定部５１０は、イメージデータリストを初期化する。具体的にはタイル決定部５１０は、イメージデータリストに含まれるアドレスをクリアする。そしてタイル決定部５１０は、イメージデータリストに含まれるアドレスの数を示すイメージデータ数を０にセットする。イメージデータリストとは、後に説明されるように、タイルに対応するアドレスを記憶するためのリストである。
【００４７】
ステップＳ２０４ａ〜Ｓ２０４ｂは、タイル内の全ての画素に対して行われる処理のループである。具体的には、ステップＳ２０１で設定された原点座標（１，１）と、座標（Ｓｗ，Ｓｈ）と、を頂点とする矩形領域内の全ての画素に対して、ステップＳ２０４ａ〜Ｓ２０４ｂの処理が行われる。以下では、座標（ｘ，ｙ）を有する画素に対して処理を行う場合について説明する。
【００４８】
ステップＳ２０５でタイル決定部５１０は、変形画像５２６における座標（ｘ，ｙ）の画素を含む、イメージデータのアドレスを取得する。アドレスの取得方法については前に説明した。このようにタイル決定部５１０は、矩形領域内のそれぞれの画素について、この画素を含むイメージデータを特定する。
【００４９】
ステップＳ２０６でタイル決定部５１０は、ステップＳ２０５で取得したアドレスがイメージデータリストに含まれているか否かを判定する。含まれている場合、処理はステップＳ２０４ｂに進む。含まれていない場合、処理はステップＳ２０７に進む。
【００５０】
ステップＳ２０７でタイル決定部５１０は、ステップＳ２０５で取得したアドレスをイメージデータリストに追加する。さらにタイル決定部５１０は、イメージデータ数に１を追加する。そして、まだ処理されていない画素がある場合には、処理はステップＳ２０４ｂからＳ２０４ａに戻る。ステップＳ２０４ａ〜ステップＳ２０４ｂの処理を繰り返すことによって、タイルに含まれる画素に対応するイメージデータの数が求められる。
【００５１】
ステップＳ２０８でタイル決定部５１０は、ステップＳ２０４ａ〜ステップＳ２０４ｂの処理を繰り返すことによって求められたイメージデータの数（イメージデータのデータ量）を、所定の閾値と比較する。ここでこの所定の閾値は、キャッシュメモリ５０７が記憶できるイメージデータの数であり、イメージデータのデータ量がキャッシュメモリ５０７の容量以下であるか否かが判定される。イメージデータの数が閾値以下である場合、処理はステップＳ２０２ａ〜Ｓ２０２ｂのループを抜け、ステップＳ２１０に進む。イメージデータの数が閾値を超える場合、処理はステップＳ２０９に進む。
【００５２】
ステップＳ２０９でタイル決定部５１０は、タイル高Ｓｈから所定値を減らす。本実施例ではタイル決定部５１０は、タイル高Ｓｈから１を減じるものとする。このようにしてタイル決定部５１０は、変形画像５２６の画像領域内に高さＳｈ、幅Ｓｗの領域を再設定する。もっとも、この所定の値は任意の値であってよい。所定の値が大きいほどタイルの大きさをより高速に決定することができる。また、所定の値が小さいほどキャッシュメモリ５０７の容量によりよく適合したタイルの大きさを決定することができる。そして、処理はステップＳ２０２ｂからＳ２０２ａに戻る。
【００５３】
ステップＳ２１０でタイル決定部５１０は、得られたタイル高Ｓｈを含むタイル高情報５３２と、タイル幅Ｓｗを含むタイル幅情報５３３とを生成する。以上の処理によってタイル決定部５１０は、タイル高Ｓｈ及びタイル幅Ｓｗを求める。
【００５４】
上述の実施例１でタイル決定部５１０は、タイル幅Ｓｗは固定値とし、タイル高Ｓｈを決定した。しかしながらタイル決定部５１０は、タイル高Ｓｈを固定値とし、タイル幅Ｓｗを決定してもよい。またタイル決定部５１０は、タイル幅Ｓｗとタイル高Ｓｈとの双方を決定してもよい。
【００５５】
［実施例１の変形例］
実施例１では、ステップＳ２０１において、変形画像５２６の画像領域の左上隅の画素を原点（１，１）に設定した。しかしながら上述のように、変形画像５２６の画像領域の任意の画素を原点（１，１）に設定することができる。例えば、変形画像５２６の画像領域の中央を原点に設定してもよい。また、変形画像５２６の画像領域の四隅の画素のいずれかを原点に設定してもよい。例えば、変形画像５２６の左方向をＸ軸正方向、下方向をＹ軸正方向として、右上隅の画素を原点（１，１）に設定してもよい。変形画像５２６の右方向をＸ軸正方向、上方向をＹ軸正方向として、左下隅の画素を原点（１，１）に設定してもよい。さらに、変形画像５２６の左方向をＸ軸正方向、上方向をＹ軸正方向として、右下隅の画素を原点（１，１）に設定してもよい。
【００５６】
原点の位置は、変形の種類に応じて予め設定されていてもよいし、ユーザによって設定されてもよい。例えば、タイルに対応する入力画像内の領域がより大きくなるように原点の位置を定めることにより、決定されるタイルの大きさが大きすぎることを防止することができる。従って、より縮小率が高い変形画像５２６の一領域が原点となるように、原点の位置が予め設定されていてもよい。
【００５７】
［実施例２］
実施例１においては、１つの入力画像５２０を処理する際には、１組のタイル高情報５３２及びタイル幅情報５３３のみが用いられた。すなわち１つの入力画像５２０は、同じ大きさの複数のタイルに分割された。実施例２では、１つの入力画像５２０を、異なる大きさの複数のタイルに分割する。
【００５８】
図８を参照して実施例２について説明する。図８において、８００は入力画像を表し、８０１は変形画像を表す。図８の変形画像８０１は、入力画像８００に対してピンクッション変形をかけることにより得られる。８００’は、変形画像８０１において、入力画像８００に対応する領域を示す。
【００５９】
ピンクッション変形の場合、変形画像８０１の四隅により近い領域はより強く縮小される。逆に、変形画像８０１の中心により近い領域はより弱く縮小される。縮小率の高い領域は、より多くのイメージデータに対応する。したがってキャッシュヒット率を高めるためには、縮小率の高い領域においてはタイルの大きさをより小さくする必要がある。逆に縮小率の低い領域においては、タイルの大きさはより大きくてもよい。本実施例によれば、このように画像の縮小率に応じてタイルの大きさを設定することができる。
【００６０】
本実施例の具体的な処理について説明する。本実施例に係る画像処理装置５００は、実施例１に係る画像処理装置５００と同様の構成をとりうる。また、本実施例に係る処理も、ステップＳ１０１０を除いて実施例１と同様に行うことができる。本実施例においては、ステップＳ１０１０において、ステップＳ２０１〜Ｓ２１０を繰り返すことにより、分割領域８０２，８０３，…の高さをそれぞれ決定する。
【００６１】
まずタイル決定部５１０は、ステップＳ２０１で原点の座標を変形画像５２６の画像領域の上端の任意の画素に設定する。そしてタイル決定部５１０は、ステップＳ２０２ａ〜Ｓ２１０の処理を行う。この処理によって得られるタイル高Ｓｈが、分割領域８０２の高さＳｈ８０２となる。タイル幅Ｓｗは固定値であるから、Ｓｈ８０２とＳｗとを用いて分割領域８０２を複数のタイルに分割することができる。
【００６２】
次にタイル決定部５１０は、分割領域８０３の高さを決定するために、ステップＳ２０１〜Ｓ２１０を繰り返す。ここでタイル決定部５１０は、既に高さが決定している分割領域（分割領域８０２）の下に隣接する任意の画素に、原点の座標を設定する。そしてタイル決定部５１０は、ステップＳ２０２ａ〜Ｓ２１０の処理を行う。この処理によって得られるタイル高Ｓｈが、この分割領域８０３の高さＳｈ８０３となる。
【００６３】
同様にステップＳ２０１〜Ｓ２１０を繰り返すことにより、タイル決定部５１０は分割領域８０４以降の高さを決定することができる。高さが決定している分割領域の高さの合計が変形画像５２６の画像領域の高さ以上となった際に、タイル決定部５１０は、ステップＳ２０１〜Ｓ２１０の繰り返しを終了する。図８の例では、分割領域８０６の高さを決定すると、ステップＳ１０１０の処理は終了する。
【００６４】
本実施例においては、分割領域の高さＳｈ８０２，Ｓｈ８０３，…はタイル高Ｓｈに一致する。すなわち、１つの分割領域８０２，８０３，…には、横１行のタイルが含まれている。しかしながら、例えば分割領域の高さＳｈ８０２，Ｓｈ８０３，…を、タイル高Ｓｈの複数倍としてもよい。この場合、１つの分割領域には複数行のタイルが含まれる。
【００６５】
［実施例３］
本実施形態では、上述の各実施形態に係る処理をコンピュータにより行わせる。図９はコンピュータの基本構成を示す図である。このコンピュータにおいて上述の各実施形態の機能を実行するためには、各機能構成をプログラムにより表現し、このコンピュータに読み込ませればよい。こうして、このコンピュータで上述の実施形態の全ての機能を実現することができる。この場合、図９をはじめとする構成要素の各々は関数、若しくはＣＰＵが実行するサブルーチンで機能させればよい。
【００６６】
また、コンピュータプログラムは通常、ＣＤ−ＲＯＭ等のコンピュータが読み取り可能な記憶媒体に格納されている。この記憶媒体を、コンピュータが有する読み取り装置（ＣＤ−ＲＯＭドライブ等）にセットし、システムにコピー若しくはインストールすることで実行可能になる。従って、係るコンピュータが読み取り可能な記憶媒体も本発明の範疇にあることは明らかである。
【００６７】
図９においてＣＰＵ９０１は、コンピュータ全体の動作をコントロールする。例えばＣＰＵ９０１は、一次記憶９０２に格納されたプログラムの実行等を行う。一次記憶９０２は、主にＲＡＭ等のメモリであり、二次記憶９０３に記憶されたプログラム等を読み込んで格納する。二次記憶９０３は、例えばハードディスク、ＣＤ−ＲＯＭ等がこれに該当する。本実施形態では、実施形態の処理手順を実現するプログラムは二次記憶９０３に格納し、プログラム実行時に一次記憶９０２に読み込んで、ＣＰＵ９０１が実行処理を行う。
【００６８】
入力デバイス９０４とはコンピュータに情報を入力するデバイスであって、例えばマウスやキーボード等がこれに該当する。入力デバイス９０４を用いることにより、ユーザがコンピュータに情報を入力することが可能であってもよい。出力デバイス９０５とはコンピュータが情報を出力するデバイスであって、モニタ及びプリンタを含む。読込デバイス９０６は、外部の情報を取得するためのデバイスである。読込デバイス９０６は、メモリカードリーダ及びネットワークカードを含む。バス９０８は、上述の各部を接続し、データのやりとりを可能とする。
【００６９】
［その他の実施例］
上述の実施例では、フレームメモリ５０１及びキャッシュメモリ５０７に格納した画像データには、イメージデータ単位でアクセスできるものとした。また、フレームメモリ５０１とキャッシュメモリ５０７とについて、一度にアクセスできるデータ量（イメージデータの大きさ）は同じであるものとした。しかしながら、フレームメモリ５０１とキャッシュメモリ５０７とについて、一度にアクセスできるデータ量は異なっていてもよい。
【００７０】
また上述の実施例において、１つの変形前座標５２８には１つの変形後座標５２９が対応しているものとした。しかしながら、１つの変形前座標５２８に１つの変形後座標５２９が対応していなくてもよい。例えば、変形後座標５２９は、複数の変形前座標５２８を用いた補間処理によって求められてもよい。補間処理を行う場合には、補間処理を行わない場合と比べて、入力画像へのアクセス回数がより増えることから、上述の実施例を適用することは処理速度向上のためにより有利である。
【００７１】
上述の実施例においては画像変形処理について説明した。一般的に、画像変形処理を行った後に、さらにフィルタ処理を行うことがよくある。フィルタ処理においても、画像を複数のタイルに分割し、それぞれのタイルに対して順番にフィルタ処理を行うことにより、キャッシュヒット率を高めることができる。この場合、画像変形処理が完全に終了してからフィルタ処理を開始する必要はない。すなわち、画像の一部分について画像変形処理が終了したら、その部分のフィルタ処理を開始することができる。このようにして一連の画像処理をより高速に行うことができる。このとき、２つの処理における走査順序を整合させるために、画像変形処理とフィルタ処理とにおいて同じ方法で画像領域を分割することが有利である。すなわち、同じ方法でタイルの大きさを決定することが有利である。
【００７２】
このためには、上述の実施例の方法でタイルの大きさを決定し、決定されたタイルの大きさに従って変形画像の画像領域を分割する。そして、こうして分割されたそれぞれのタイルに対して、画像変形処理を行い、さらにフィルタ処理を行えばよい。またタイル決定部５１０は、画像変形処理で用いられるキャッシュメモリの容量を考慮してタイルの大きさを決定してもよい。例えばステップＳ２０８においてタイル決定部５１０は、ステップＳ２０４ａ〜ステップＳ２０４ｂの処理を繰り返すことによって求められたイメージデータの数を、所定の閾値と比較する。ここでの所定の閾値を、キャッシュメモリ５０７が記憶できるイメージデータの数と、画像変形処理で用いられるキャッシュメモリが記憶できるイメージデータの数とのうち、小さい方としてもよい。
【００７３】
タイルの大きさが大きすぎないことは、フィルタ処理においてもキャッシュヒット率を高めるために有利である。また、タイルの大きさが小さすぎないことも、フィルタ処理においてキャッシュヒット率を高めるために有利である。したがって、上述の実施例の方法を、画像変形処理とフィルタ処理とを組み合わせた画像処理に適用することは、いっそう有利となる。
【００７４】
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）をネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムコードを読み出して実行する。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【図１】
0005739723.tif 000003
【図２】
0005739723.tif 000004
【図３】
0005739723.tif 000005
【図４】
0005739723.tif 000006
【図５】
0005739723.tif 000007
【図６】
0005739723.tif 000008
【図７】
0005739723.tif 000009
【図８】
0005739723.tif 000010
【図９】
0005739723.tif 000011
【図１０】
0005739723.tif 000012