説明

画像描画装置、画像描画方法およびプログラム

【課題】描画速度を向上する画像描画装置、画像描画方法およびプログラムを提供する。
【解決手段】描画コマンド発生部11は、表示画像中に参照画像を変換して表示する描画領域と座標変換の情報を取得し、座標変換マトリクスをレジスタ21にセットする。描画ブロック設定部22は、描画領域を分割して被覆する矩形領域を、描画領域から参照画像へ座標変換マトリクスで座標変換した領域が、参照画像を読み出した画像キャッシュ15の画像上の形に適合するように、矩形領域の縦と横の画素数を設定する。画素生成部13は、設定した矩形領域で描画領域を走査して画素の位置を生成し、座標変換部14は描画領域の画素に対応する参照画像の画素位置の画像データを外部メモリ20から読み出す。画像キャッシュ15は、外部メモリ20から読み出した画像データを蓄える。描画処理部16は、画像キャッシュ15から画像データを読み出して、描画領域の画素に変換する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像描画装置に関する。より詳しくは、参照画像を変換して表示画像上の描画領域に表示する画像描画装置、画像描画方法およびプログラムに関する。
【背景技術】
【0002】
コンピュータグラフィックスでは、参照画像を拡大/縮小、回転などの変換を施して、表示画像上の描画領域に表示することが行われている。動きのある場合などに画面の描画を速くするために、参照画像の変換を高速に行う技術が提案されている。
【0003】
例えば特許文献1には、ラインベース形式で入力された画像データを、1画像分の画像データ容量よりも小さい容量のバッファメモリに一時記憶させブロックインターリーブ形式で出力する画像処理装置が記載されている。特許文献1の画像処理装置は、バンク単位回転画像データを前記バッファメモリに書き込んで、ブロックインターリーブ形式で出力する回転再配置回路を含む。バンク最終アドレス演算回路は、水平方向入力画素数および垂直方向MCU単位画素数に基づきバンク最終アドレスを求める。書き込み回路は、バンク最終アドレスを書き込み開始アドレスとして、バンク開始アドレス方向に書き込みアドレスをデクリメントさせて1バンク分の画像データを書き込む。読み出し回路は、バンク開始アドレスを読み出し開始アドレスとして最終アドレス方向に画像データを読み出す。
【0004】
特許文献2の画像処理装置では、描画データ解析部は、ソースイメージを解析し、1ピクセルの幅もしくは高さのソースイメージを、そのライン方向に対して垂直方向に並べて拡大したイメージ処理であるかを判定する。描画処理部は、ソースイメージを格納するソースイメージバッファ、1ライン分の画像処理後のイメージを格納するラインバッファおよびデスティネーションイメージバッファを確保し、ラインバッファに1ライン分の描画処理結果を格納し、描画処理結果をライン単位でデスティネーションイメージバッファにコピーすることによりイメージを描画する。
【0005】
特許文献3には、高速に回転処理する画像装置が提案されている。特許文献3の画像処理装置では、画像入力装置に入力された画像データは画像蓄積装置にデータバスを介して転送され、画像蓄積手段に転送された画像データは画像回転手段の入力バッファメモリにデータバスを介して転送される。入力バッファメモリに転送された画像データはライトアドレス生成手段が生成するライトアドレスに従って画像回転用メモリに入力された後、リードアドレス生成手段によって生成されるリードアドレスに従って出力され、出力バッファメモリに供給される。アドレス切換手段はライトアドレスおよびリードアドレスを切り替えて画像回転用メモリに供給する。出力バッファメモリから出力された画像データはデータバスを介して画像出力手段に転送される。
【0006】
特許文献4には、原画像を回転を伴う座標変換により変換した仮想的な画像の全部または一部を出力画像として得るための、画像補間方法が記載されている。特許文献4の画像補間方法は、変換画像の第1方向に配置される参照画素の画素値を基礎として第1方向に補間することによって、中間画素の画素値を求める。複数の行に対して同様の動作を繰り返して、中間画素値配列を出力画素の第2方向に得る。そして、出力画素近傍の中間画素値配列の画素値を基礎として出力画素の第2方向について補間することによって、出力画素を得る。
【0007】
また、特許文献5の2次元データ回転処理装置は、複数ブロックの回転処理を行う場合に、最初に被回転画像データの列方向のブロック書き込みを行い、それ以降は、回転画像データの行方向のブロック読み出しと同時に続くブロックの被回転画像データの列方向のブロック書き込み、回転画像データの列方向のブロック読み出しと同時に続くブロックの被回転画像データの行方向のブロックを書き込む。これらを交互に繰り返すことによって読み出しと書き込みを同時に、しかもブロック画像を連続的に回転処理する。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2005−228073号公報
【特許文献2】特開2007−026285号公報
【特許文献3】特開2008−236085号公報
【特許文献4】特開平11−252353号公報
【特許文献5】特開平11−306343号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
画像の描画手順について、図2を参照して説明する。ここで、拡大・縮小などの座標変換をする前の元画像を、参照画像と呼ぶ。参照画像は外部メモリに置かれている。参照画像を表示画像に描画するには、図2に示すように、表示画像G上の描画領域Dの輪郭を生成し、生成した輪郭内部の画素Pの座標である出力座標(X,Y)を1画素ずつ走査しながら求めていく。この出力座標を1画素ずつ求める処理を画素生成と呼ぶ。次に、図2の座標変換tで示すように、画素生成で生成された出力座標(X,Y)毎に座標変換マトリクスをかけると、参照画像R上のある1点P’の座標、参照座標(X’,Y’)が求められる。このように、座標変換マトリクスには、出力座標(X,Y)から、参照座標(X’,Y’)を算出する値が設定される。座標変換マトリクスは、参照画像Rから表示したい画像の形状を求める画像変換のマトリクスの逆行列である。その後、描画処理fで示すように、参照画像Rの参照座標(X’,Y’)の位置の画像データを参照画像Rのある外部メモリから取得し、表示画像G上の出力座標(X,Y)の位置に描画する。以上の画素生成から表示画像への描画までの処理を描画領域D内部の画素全てに対して行なうと描画処理は完了する。
【0010】
この画像描画手順において、描画処理fの操作時に、外部メモリから参照画像データを1画素ずつ取得するのでは、メモリからデータを転送する時間がかかり、描画速度が遅くなる。そこで、参照画像データを一時保存するためのキャッシュを用意してプリフェッチを行なうことで転送効率を上げたり、そのキャッシュサイズをメモリアドレスが連続にアクセスされるように変更することによって高速に描画ができるように対応していた。
【0011】
しかし、上述の描画処理では、表示画像G上の画素生成の順は、描画領域Dの形状によらず、一定のブロック単位で、左上から右下へ向けて走査するように固定となっているため、画像の座標変換を行なわず単純に参照画像Rを表示画像Gへ1対1で描画した場合に比べて、画像を拡大・縮小・回転させた場合は、キャッシュのヒット率が極端に落ちたり、メモリアクセス量が増えることになる。すなわち画像の拡大・縮小、回転などの座標変換に依存して、キャッシュのヒット率が極端に落ちてしまうという問題点があった。これによって、座標変換の形態により、画像の描画速度が落ちてしまい、外部メモリアクセス量も増えてしまうという問題が生じていた。
【0012】
本発明は、上述の事情に鑑みてなされたもので、キャッシュヒット率を向上し、描画速度を向上する画像描画装置、画像描画方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0013】
本発明の第1の観点に係る画像描画装置は、
表示画像中に参照画像を変換して表示する領域である描画領域を指定する情報を取得する描画領域取得手段と、
前記描画領域に前記参照画像を変換して表示するための、前記描画領域から前記参照画像への座標変換の情報を取得する座標変換取得手段と、
前記描画領域を分割して被覆する矩形領域を、前記描画領域から前記参照画像への座標変換で座標変換した領域が、前記参照画像を読み出した画像データを蓄える所定の画像キャッシュの画像上の形に適合するように、前記矩形領域の縦と横の画素数を設定する設定手段と、
前記設定手段で設定した縦と横の画素数で前記描画領域を分割して被覆する1以上の前記矩形領域を生成する生成手段と、
所定の走査方向の順に前記矩形領域を選択し、該選択した矩形領域内の走査方向の順番に選択した画素から前記座標変換によって前記参照画像内の画素位置を算出する変換手段と、
前記変換手段で算出した画素位置の画像データを、前記参照画像を記憶しているメモリから読み出す画像取得手段と、
前記メモリから読み出した画像データを蓄える前記画像キャッシュと、
前記画像キャッシュから前記画像データを読み出して、前記描画領域の画素に変換する描画手段と、
を備える。
【0014】
本発明の第2の観点に係る画像描画方法は、
表示画像中に参照画像を変換して表示する領域である描画領域を指定する情報を取得する描画領域取得ステップと、
前記描画領域に前記参照画像を変換して表示するための、前記描画領域から前記参照画像への座標変換の情報を取得する座標変換取得ステップと、
前記描画領域を分割して被覆する矩形領域を、前記描画領域から前記参照画像への座標変換で座標変換した領域が、前記参照画像を読み出した画像データを蓄える所定の画像キャッシュの画像上の形に適合するように、前記矩形領域の縦と横の画素数を設定する設定ステップと、
前記設定ステップで設定した縦と横の画素数で前記描画領域を分割して被覆する1以上の前記矩形領域を生成する生成ステップと、
所定の走査方向の順に前記矩形領域を選択し、該選択した矩形領域内の走査方向の順番に選択した画素から前記座標変換によって前記参照画像内の画素位置を算出する変換ステップと、
前記変換ステップで算出した画素位置の画像データを、前記参照画像を記憶しているメモリから読み出す画像取得ステップと、
前記メモリから読み出した画像データを前記画像キャッシュに蓄えるステップと、
前記画像キャッシュから前記画像データを読み出して、前記描画領域の画素に変換する描画ステップと、
を備える。
【0015】
本発明の第3の観点に係るプログラムは、コンピュータに、
表示画像中に参照画像を変換して表示する領域である描画領域を指定する情報を取得する描画領域取得ステップと、
前記描画領域に前記参照画像を変換して表示するための、前記描画領域から前記参照画像への座標変換の情報を取得する座標変換取得ステップと、
前記描画領域を分割して被覆する矩形領域を、前記描画領域から前記参照画像への座標変換で座標変換した領域が、前記参照画像を読み出した画像データを蓄える所定の画像キャッシュの画像上の形に適合するように、前記矩形領域の縦と横の画素数を設定する設定ステップと、
前記設定ステップで設定した縦と横の画素数で前記描画領域を分割して被覆する1以上の前記矩形領域を生成する生成ステップと、
所定の走査方向の順に前記矩形領域を選択し、該選択した矩形領域内の走査方向の順番に選択した画素から前記座標変換によって前記参照画像内の画素位置を算出する変換ステップと、
前記変換ステップで算出した画素位置の画像データを、前記参照画像を記憶しているメモリから読み出す画像取得ステップと、
前記メモリから読み出した画像データを前記画像キャッシュに蓄えるステップと、
前記画像キャッシュから前記画像データを読み出して、前記描画領域の画素に変換する描画ステップと、
を実行させることを特徴とする。
【発明の効果】
【0016】
本発明の画像描画装置によれば、キャッシュが効率的に使用できるようになることにより、キャッシュヒット率が向上し、参照画像を拡大・縮小、および/または回転して表示させる場合の描画速度が向上する。
【図面の簡単な説明】
【0017】
【図1】本発明の実施の形態に係る画像描画装置の構成例を示すブロック図である。
【図2】画像の描画手順を説明する図である。
【図3】座標変換を説明する図である。
【図4A】拡大率が1、回転角度が0度の場合の描画ブロックと画像キャッシュアクセスを説明する図である。
【図4B】描画ブロックを変えずに参照画像を縮小する場合の画像キャッシュアクセスを説明する図である。
【図4C】描画ブロックを変えずに参照画像を拡大する場合の画像キャッシュアクセスを説明する図である。
【図4D】描画ブロックを変えずに参照画像を回転する場合の画像キャッシュアクセスを説明する図である。
【図5A】実施の形態に係る画像キャッシュアクセスを説明する図である。
【図5B】参照画像の縮小に合わせて描画ブロックを変更する場合の画像キャッシュアクセスを説明する図である。
【図5C】参照画像の拡大に合わせて描画ブロックを変更する場合の画像キャッシュアクセスを説明する図である。
【図5D】参照画像の回転に合わせて描画ブロックを変更する場合の画像キャッシュアクセスを説明する図である。
【図6】実施の形態1に係る描画ブロックサイズ設定の動作の一例を示すフローチャートである。
【図7】実施の形態1に係る画像生成の動作の一例を示すフローチャートである。
【図8】画像キャッシュ読み出しを説明する図である。
【図9A】走査方向を一定にして参照画像を90度回転させる場合の画像キャッシュアクセスを説明する図である。
【図9B】参照画像の90度回転に合わせて走査方向を変更する場合の画像キャッシュアクセスを説明する図である。
【図10】実施の形態2における描画領域の座標軸の座標変換と拡大率および回転角度の関係を示す図である。
【図11】回転角度が小さい場合の描画ブロックと画像キャッシュの関係を示す図である。
【図12】走査方向を変えずに参照画像を回転させる場合の画像キャッシュアクセスを説明する図である。
【図13】参照画像の回転角度に合わせて走査方向を変更する場合の画像キャッシュアクセスを説明する図である。
【図14】実施の形態2に係る描画ブロックサイズ設定の動作の一例を示すフローチャートである。
【図15】実施の形態2に係る画像生成の動作の一例を示すフローチャートである。
【図16】本発明の実施の形態に係る画像描画装置のハードウェア構成の例を示すブロック図である。
【発明を実施するための形態】
【0018】
以下、本発明の実施の形態について図を参照して説明する。なお、図中同一または相当する部分には同じ符号を付す。
【0019】
(実施の形態1)
図1は、本発明の実施の形態に係る画像描画装置の構成例を示すブロック図である。本発明の画像描画装置10は、図1に示すように、描画コマンド発生部11、輪郭生成部12、画素生成部13、座標変換部14、画像キャッシュ15、描画処理部16、表示部17、外部メモリ20、レジスタ21および描画ブロック設定部22を備える。描画装置1は、例えばマイクロコンピュータ、FPGA(Field Programmable Gate Array)、DSP(Digital Signal Processor)または専用の論理回路を備えるLSIで構成することができる。
【0020】
描画コマンド発生部11は、表示画像中に表示する参照画像と、参照画像を変換して表示する領域である描画領域を指定する情報を受けて、描画の開始を指示する。描画コマンド発生部11は、参照画像から描画領域への変換の情報から、描画領域から参照画像へ座標変換する座標変換マトリクスを生成する。描画コマンド発生部11は、レジスタ21に座標変換マトリクスを設定し、描画開始命令を輪郭生成部12に発行することで、画像描画処理が開始される。
【0021】
描画ブロック設定部22は、描画処理開始前に、レジスタ21に設定された座標変換マトリクスを用いて画素生成の描画ブロックの縦と横の画素数を設定する。描画ブロックは、描画領域を1または2以上に分割して被覆する矩形の領域である。描画ブロックが描画領域を被覆するとは、描画ブロックの画素の和集合が、描画領域の画素を含むことをいう。通常は、描画領域の全ての画素を含むが、参照画像に無効な画素がある場合など、描画領域の画素のうち描画ブロックに含まれない画素が存在することがあり得る。一般には、描画ブロック同士は画素が重複することなく描画領域を分割するが、画素が重複していても構わない。描画ブロックの縦と横は、表示画像の走査の方向に沿っている。描画ブロックのサイズの設定については後に詳述する。
【0022】
輪郭生成部12は、描画コマンド発生部11から描画領域を指定する情報を受けて、表示画像上の描画したい領域の輪郭を生成する。輪郭生成部12は、画素生成部13に、輪郭座標を送る。画素生成部13は、輪郭内部の画素を走査して、表示画像中の出力座標を求める。画素生成部13は、描画ブロック設定部22が設定した、描画ブロックのサイズを受け取り、そのサイズに従って、1画素ずつ順番に輪郭座標内部の画素の座標を生成し、座標変換部14に、生成された出力座標データを1画素ずつ送る。
【0023】
座標変換部14は、画素生成部13で生成された出力座標に座標変換マトリクスをかけて参照画像の対応する座標を算出する。また、参照画像の対応する座標の画像データを外部メモリ20から読み出しを行なう。座標変換部14は、画像キャッシュ15にある画像データをチェックし、その参照画像の対応する座標の画像データが画像キャッシュ15内に無ければ、外部メモリ20に対して、画像読み出しリクエストを発行する。また、描画処理部16に対しては、読み出した画像データが保存されるキャッシュ番号とそのキャッシュ内のアドレスで構成されたキャッシュ情報をそれぞれ発行する。
【0024】
外部メモリ20は、参照画像の画像データを記憶し、座標変換部14の指令にしたがって、画像キャッシュ15に画像データを供給する。
【0025】
画像キャッシュ15は、外部メモリ20から読み出された画像データを保持する。画像キャッシュ15は、参照画像において縦横が一定の画素数の形状を有するブロックから構成される。画像キャッシュ15は1または複数のブロックから構成される。画像キャッシュ15は、外部メモリ20から、ブロック単位で画像データを読み出して保持する。描画処理部16は、画像キャッシュ15から画像データを取り出して、表示する画素の並びを生成する。描画処理部16は、キャッシュ情報を元に、画像キャッシュ15をチェックし、画像キャッシュ15内に描画に必要な画像データがそろったことを確認後、参照画像データを読み出し、描画処理を行い、表示部17に表示開始命令を発行する。表示部17は、描画処理部16で生成された画素の並びを画面に表示する。
【0026】
画素生成部13が、出力座標データを発行し、描画処理部16が描画処理を行なうまでの一連の処理を繰り返し、輪郭生成部12で生成された輪郭内の全ての画素分の走査が終わり、表示部17に描画する画像データが全て送られると描画処理を終了する。
【0027】
前述のとおり、描画ブロック設定部22は、座標変換マトリクスから描画ブロックの縦と横の画素数を設定する。図3は、座標変換を説明する図である。本実施の形態で言う座標変換はアフィン変換を表し、拡大・縮小、回転および平行移動を組み合わせて1つの座標変換マトリクスで表される。図3に示すように変換前の座標(X,Y)に、座標変換マトリクスをかけることにより、変換後の座標(X’,Y’)を得る。座標変換マトリクスのa,b,c,dは、座標を拡大・縮小または回転するための要素であり、tx,tyは平行移動をするための要素である。この式を座標変換部14での座標変換にあてはめると、座標(X,Y)が出力座標(表示画像上の座標)であり、座標(X’,Y’)が参照画像の座標である。
【0028】
図1の画素生成部13は、描画ブロック設定部22で設定された描画ブロックに従って、描画領域を描画ブロックに分割する。画素生成部13は、走査の方向に従って描画ブロックを選択し、選択した描画ブロックの中の画素を走査して、表示画像中の出力座標を求める。
【0029】
本実施の形態の画像描画装置10では、描画ブロック設定部22は、描画領域から参照画像への座標変換マトリクスで座標変換した領域が、画像キャッシュ15の画像上の形に適合するように、描画ブロックの縦と横の画素数を設定する。
【0030】
図4A〜図5Dは、描画ブロックと画像キャッシュの関係を説明する図である。図4A〜図5Dでは、図中(a)は座標変換マトリクスを表す。ここでは、座標変換の平行移動を省略している。図中、(b)は描画ブロックを示し、(c)は画像キャッシュ15のブロックを示す。なお、画像キャッシュ15の1つのブロックは、横16画素、縦4画素の長方形である。また、図4A〜図4Dでは、描画ブロックは、横16画素、縦16画素の正方形である。以下、画像キャッシュ15のブロックをキャッシュブロックという。
【0031】
図4A〜図5Dの(b)と(c)に示す小さい正方形は、1つの画素を表す。画素中の番号は、キャッシュブロックから描画ブロックへ画像表示される画素の対応を示す。すなわち、例えばキャッシュブロックの“1”の画素は、描画ブロックの同じ番号“1”の画素の位置に表示されることを示す。画素中の番号は、描画ブロック内の走査の順序を示すものではない。描画ブロック内の主走査の方向は実線の矢印、副走査の方向は点線の矢印で示される。
【0032】
図4Aは拡大率が1、回転角度が0度の場合の描画ブロックと画像キャッシュアクセスを説明する図である。図4Aは座標変換無しの場合であり、参照画像の画素と表示画像の画素が1対1に対応しており、キャッシュブロックが1つずつ効率よく使われていることが分かる。
【0033】
図4Bは、描画ブロックを変えずに参照画像を縮小する場合の画像キャッシュアクセスを説明する図である。図4Bは、座標変換のX方向の拡大率が2.0の場合であり、参照画像は横方向に1/2に縮小されて表示されることになる。したがって、描画処理では1つのキャッシュブロック内のX方向16画素のうち、1つ飛びでしか使用されない。描画ブロックは横16画素であるので、描画ブロック内のX方向1ライン分が走査されるたびに、キャッシュブロックは、X方向に2つ使用されることになる。
【0034】
図4Cは、描画ブロックを変えずに参照画像を拡大する場合の画像キャッシュアクセスを説明する図である。図4Cは、座標変換のX方向の拡大率が0.5の場合であり、参照画像は横方向に2倍に拡大されて表示されることになる。描画ブロックは横16画素であるので、1つのキャッシュブロック内のX方向16画素のうち、画素番号1〜8までの半分しか使用されず、残りは破棄されてしまう。その後、現在走査している描画ブロックの右隣の描画ブロックに画素生成処理が移ると、画素番号9〜16が使用されることになるが、このときには、すでに画像キャッシュ15から必要なデータが破棄されている可能性があるため、再度、同じ領域を外部メモリ20から画像キャッシュ15へ読み出す必要があり、メモリアクセスが増加する。
【0035】
図4Dは、描画ブロックを変えずに参照画像を回転する場合の画像キャッシュアクセスを説明する図である。図4Dは、参照画像を反時計方向に90度回転した場合を示す。描画ブロック内の画素が横((b)の実線矢印)方向に走査されると、画像キャッシュ15内では、縦((c)の実線矢印)方向に走査されることになる。キャッシュブロックは、横方向の方が長いサイズであるため、縦方向に走査されると、描画ブロック内の横方向1ライン分が走査されるたびに、縦方向に4つのキャッシュブロックを使用することになる。
【0036】
ここで、図4A〜図4Dの例について、本実施の形態の方法で走査方向、ブロックサイズを変更した場合の例を図5A〜図5Dに示す。図5Aは、実施の形態に係る画像キャッシュアクセスを説明する図である。図5Aは、拡大率が1、回転角度が0度の場合である。描画ブロックは、座標変換マトリクスが単位行列の場合にキャッシュブロックに適合するように決められる。したがって、参照画像の画素と表示画像の画素が1対1に対応しており、キャッシュブロックが1つずつ効率よく使われる。
【0037】
図5Bは、参照画像の縮小に合わせて描画ブロックを変更する場合の画像キャッシュアクセスを説明する図である。図5Bは、座標変換のX方向の拡大率が2.0の場合であり、参照画像は横方向に1/2に縮小されて表示されることになる。そこで、描画ブロックの横画素数を半分の8にすれば、キャッシュブロックがX方向に2つ使用されることがなく、図5Aと同じように、キャッシュブロックが使用され、連続して効率よく読み出すことができるようになる。
【0038】
図5Cは、参照画像の拡大に合わせて描画ブロックを変更する場合の画像キャッシュアクセスを説明する図である。図5Cは、座標変換のX方向の拡大率が0.5の場合であり、参照画像は横方向に2倍に拡大されて表示されることになる。そこで、描画ブロックの横画素数を2倍の32にすれば、画素番号1〜16までが無駄無く使用され、再度、同じ領域を読み出すようなメモリアクセスが行なわれず、連続して効率よく画像データ読み出すことができる。
【0039】
図5Dは、参照画像の回転に合わせて描画ブロックを変更する場合の画像キャッシュアクセスを説明する図である。図5Dは、座標変換が時計方向に90度回転する場合を示す。図5Dの例では、描画ブロックを座標変換した領域が、キャッシュブロックに適合するように、横4画素、縦16画素に設定する。そうすると、描画ブロックの画素の走査は、キャッシュブロック内に収まるので、図4Dの場合のように、縦方向に2つ以上のキャッシュブロックを使用する必要がない。
【0040】
以上より、座標変換の拡大・縮小を表す拡大率が小さいときは、ブロックサイズを大きく、拡大率が大きいときは、ブロックサイズを小さくする方が、画像キャッシュ15を効率よく使用できることが分かる。また、座標変換の回転に合わせて、描画ブロックの縦と横の画素数を設定すれば画像キャッシュ15を効率よく使用できる。
【0041】
本実施の形態1では、図3の座標変換マトリクスの拡大・縮小・回転を表す要素であるa,b,c,dに着目し、ブロックサイズは、その要素のうちの座標変換の拡大・縮小を表す拡大率をみて、拡大率が小さいときは描画ブロックの画素数を大きく、拡大率が大きいときは描画ブロックの画素数を小さくする。また、座標変換の回転についても、描画ブロックを座標変換した領域が、キャッシュブロックに適合するように描画ブロックの縦と横の画素数を設定する。
【0042】
座標変換の拡大率は、描画領域の座標軸X、Yの単位ベクトルを座標変換したベクトルから求めることができる。すなわち出力座標(X,Y)=(0,0)から、X方向に1単位、Y方向に1単位、それぞれ進んだときに、参照座標(X’,Y’)がどれだけ移動したかを調べることで、移動の比率が求まるため、拡大率として使用することができる。つまり、図3の座標変換式において、出力座標を(X,Y)=(1,0)としたときの参照座標(X’,Y’)を座標変換ベクトルX1、(X,Y)=(0,1)としたときの(X’,Y’)を座標変換ベクトルY1とすると、Xの拡大率は、ベクトルX1の大きさ、Yの拡大率は、ベクトルY1の大きさで表すことができる。ここで、図3の座標変換式に、(X,Y)=(1,0)、(X,Y)=(0,1)をそれぞれ代入すると、X1=(a,c)、Y1=(b,d)となるので、これらのベクトルの大きさから、Xの拡大率はa+c、Yの拡大率はb+dでそれぞれ求めることができる。
【0043】
図6は、実施の形態1に係る描画ブロックサイズ設定の動作の一例を示すフローチャートである。描画コマンド発生部11は、参照画像と描画領域を指定する情報を取得すると(ステップS10)、座標変換マトリクスを生成する(ステップS11)。
【0044】
描画ブロック設定部22は、座標変換マトリクスから座標変換ベクトルX1、Y1を計算する(ステップS12)。ここで、座標変換ベクトルX1、Y1は、描画領域の座標軸X、Yの単位ベクトルを座標変換したベクトルである。そして、座標変換ベクトルX1の大きさを求める。
【0045】
求めたベクトルX1からX1の大きさを求めるが、平方根の処理を回避するため、2乗した値を使用し、描画ブロックの横方向の画素数Wを設定する。|X1|の大きさによって分岐する(ステップS13)。例として、ここではキャッシュブロックの横画素数が16の場合に、描画ブロックの横画素数Wを、4,8,16,32の4通りから選択可能としている。すなわち、|X1|が1より小さい場合は、W=32に(ステップS14)、|X1|が1以上4未満の場合は、W=16に(ステップS15)、|X1|が4以上9未満の場合は、W=8に(ステップS16)、|X1|が9以上の場合は、W=4に設定する(ステップS17)。
【0046】
同様に、縦方向の画素数についても設定する。すなわち|Y1|の大きさによって分岐する(ステップS18)。例として、描画ブロックの縦画素数Hを、4,8,16,32の4通りから選択可能としている。すなわち、|Y1|が1より小さい場合は、H=32に(ステップS19)、|Y1|が1以上4未満の場合は、H=16に(ステップS20)、|Y1|が4以上9未満の場合は、H=8に(ステップS21)、|Y1|が9以上の場合は、H=4に設定する(ステップS22)。そして、描画ブロックサイズ設定を終了する。
【0047】
描画ブロックの縦と横の画素数をどのように設定するかは、上述の例に限らない。それぞれの画素数の段階を少なくしてもよいし、多くしてもかまわない。さらに、座標変換ベクトルX1、Y1の大きさに合わせて連続的に設定してもよい。また、縦と横の画素数の段階を同じにしなくてもよい。なお、上述の図6の処理では、図5Dで説明したように、座標変換の回転角度に応じて、描画ブロックの縦と横の画素数を入れ替えたことになっている。
【0048】
図7は、実施の形態1に係る画像生成の動作の一例を示すフローチャートである。描画ブロックサイズ設定を終了すると、描画処理に入る。輪郭生成部12で輪郭生成(ステップS30)した後、画素生成部13は画素生成を開始する。図7のフローチャートは、4つのループの入れ子構造になっている。
【0049】
描画領域を分割して被覆する描画ブロックを設定し、描画ブロックを行ごとに選択して、Y方向(副走査方向)のブロック数分ループ処理(描画領域Yループ:最も外側のループ)を行う(ステップS31〜ステップS40のループ)。描画領域Yループの処理では、描画ブロックの1つの行について、主走査の方向に描画ブロックを選択して、X方向(主走査方向)のブロック数分ループ処理(描画領域Xループ:ブロック処理の内側のループ)を行う(ステップS32〜ステップS39のループ)。描画領域の形状と傾きによって、描画ブロックの行ごとの数(X方向のブロック数)は異なる場合がある。
【0050】
描画領域Xループの処理では、描画ブロック内の画素を行ごとに選択して、Y方向(副走査方向)の画素数Hの分ループ処理(ブロック内Yループ:ブロック内処理の外側のループ)を行う(ステップS33〜ステップS38のループ)。ブロック内Yループの処理では、選択した1行の画素数Wの分ループ処理(ブロックXループ:最も内側のループ)を行う(ステップS34〜ステップS37)。すなわち、X方向(主走査方向)に画素を1つずつ選択し、座標変換して(ステップS35)、描画処理を行う(ステップS36)。これを1行の画素数W分行う。描画領域内の全ての画素数分のループが終わると、画素生成を終了し、描画が完了する。
【0051】
以上説明したように、本実施の形態1に係る画像描画装置10によれば、以下に記載するような効果を奏する。第1の効果は、キャッシュが効率的に使用できるようになることにより、キャッシュヒット率が向上し、描画速度が向上することである。第2の効果は、キャッシュヒット率の向上により、キャッシュ更新回数が減り、メモリアクセス量が低減されることである。
【0052】
(実施の形態2)
実施の形態2では、座標変換の回転角度に応じて、描画領域の走査の方向を変更する。実施の形態2の画像描画装置10の構成は、図1と同じであるが、描画ブロック設定部22は、描画ブロックのサイズの設定に加えて、描画領域の走査の方向を設定する。
【0053】
図8は、画像キャッシュ読み出しを説明する図である。図8の(a)の4つの正方形は描画ブロックを表す。図8の(b)と(d)(中央の列)は、(a)の描画ブロックを座標変換した描画ブロックと画像キャッシュ15の関係を示す。図8の(c)と(e)(右の列)は、それぞれ(b)と(d)の座標変換に対応して、実際に描画される画像の向きを示す。(b)と(c)は、座標変換の回転が0度の場合、(d)と(e)は、座標変換の回転が時計方向に90度の場合である。図8では、描画ブロックの番号を角かっこ数字で表す。また、画像キャッシュ15のブロックの番号を丸かっこ数字で表す。
【0054】
図8では、描画ブロックは横16画素、縦16画素のブロックサイズを想定している。また、キャッシュブロックは横16画素、縦8画素のブロックサイズを想定している。なお、描画ブロックの中の実線の矢印は描画ブロック中の主走査の方向を表し、点線の矢印は副走査の方向を表す。
【0055】
図8の(b)、(c)は、拡大率が1、回転角度が0度の場合である。この場合は、番号[1]と[2]の描画ブロックを描画するときに、外部メモリ20から画像キャッシュ15へのデータ読み出しが、トータル6回(画像キャッシュ15の番号(1)〜(6)のブロック)で描画できる。それに対して、図8の(d)、(e)は、座標変換の拡大率が1であるが、回転角度が時計方向に90度の場合である。この場合は、番号[1]の描画ブロックを描画するときに、画像キャッシュ15の番号(1)〜(4)の4つのブロックを読み出すことになる。同じように番号[2]の描画ブロックを描画するときにも、4つのブロックを読み出すことになる。その結果、キャッシュのヒット率が落ち、番号[1]と[2]の描画ブロックを描画するときに、8回の読み出しを行なわなければならず、描画速度が落ちてしまう。
【0056】
描画ブロック設定部22は、描画領域の水平方向を座標変換した方向と、画像キャッシュ15の水平方向のなす角度の小さい方が45度を超える場合に、描画領域の垂直方向を主走査方向、水平方向を副走査方向とする。その場合画素生成部13は、描画領域を被覆する描画ブロックを列ごとに順に選択し(副走査=水平方向)、かつ、選択した描画ブロック内の画素を垂直方向の列ごとに選択する(副走査=水平方向)。
【0057】
図9Aおよび図9Bは、走査方向と画像キャッシュアクセスの関係を説明する図である。図9Aおよび図9Bは、図4A〜図5Dと同様に、(a)は座標変換マトリクス、(b)は描画ブロック、(c)は画像キャッシュ15の構成を示す。図9A、図9Bの(b)と(c)の小さい正方形は画素を表し、画素内の数字は描画ブロックと画像キャッシュ15の画素の対応を示す。また、実線矢印は主走査の方向を、点線矢印は副走査の方向を示す。なお、キャッシュブロックは、横16画素、縦4画素の長方形であり、描画ブロックは、横16画素、縦16画素の正方形である。
【0058】
図9Aは、走査方向を一定にして参照画像を90度回転させる場合の画像キャッシュアクセスを説明する図である。図9Aは、図4Dと同じである。図9Aは、参照画像を反時計方向に90度回転した場合を示す。描画ブロック内の画素が横((b)の実線矢印)方向に走査されると、画像キャッシュ15内では、縦((c)の実線矢印)方向に走査されることになる。キャッシュブロックは、横方向の方が長いサイズであるため、縦方向に走査されると、描画ブロック内の横方向1ライン分が走査されるたびに、縦方向に4つのキャッシュブロックを使用することになる。
【0059】
図9Bは、参照画像の90度回転に合わせて走査方向を変更する場合の画像キャッシュアクセスを説明する図である。座標変換の回転角度が90度の場合、描画領域の縦方向を主走査の方向、横方向を副走査の方向とする。描画ブロック内の画素が縦((b)の実線矢印)方向に走査されると、画像キャッシュ15内では、横((c)の実線矢印)方向に走査されることになる。そうすると、描画ブロックの画素の走査は、キャッシュブロック内に収まるので、図9Aの場合のように、縦方向に2つ以上のキャッシュブロックを使用する必要がない。
【0060】
描画領域を走査する方向は、通常、主走査が水平方向で画面に向かって左から右へ、副走査が垂直方向で画面に向かって上から下へ向かう方向である。主走査の方向が右から左へ、または、副走査の方向が下から上へ向かう方向の場合もあり得る。走査方向を変更する場合は、図9Bに示すように、主走査と副走査の方向を入れ替えて、主走査を垂直方向で画面に向かって上から下へ、副走査を水平方向で画面に向かって左から右へ向かう方向にする。変更する場合の主走査の方向は垂直方向であれば、画面に向かって下から上へ向かう方向でもよい。また、副走査の方向は水平方向であれば、画面に向かって右から左へ向かう方向でもかまわない。
【0061】
次に、座標変換マトリクスから、上記の判断を行なうための回転角を求める方法について説明する。実施の形態1で説明したように、座標変換の拡大率は、座標変換ベクトルX1、Y1の大きさによって求めることができる。座標変換の拡大率と同じように、描画領域の座標軸X、Yの単位ベクトルを座標変換したベクトルから求めることができる。図3の座標変換式を用いて、回転角は、座標変換の回転が0度の場合(a=d=1、b=c=0)のベクトル(1,0)と、座標変換後のベクトルX1=(a,c)との間の角で求められる。
【0062】
回転角を求めるには、一般的にベクトルの内積などを使用して求める必要があるが、本実施の形態で決定したい走査方向はX方向、Y方向の2種類であるので、回転角(描画領域の水平方向を座標変換した方向と、画像キャッシュ15の水平方向のなす角度の小さい方)が45度以上または以下であることが分かればよい。45度以上か以下であることは、ベクトルX1(a,c)のaの絶対値|a|とcの絶対値|c|の比率によって決めることができる。|a|≧|c|でaの方が長ければ45度以下、|a|≦|c|でcの方が長ければ、45度以上となる。
【0063】
図10は、実施の形態2における描画領域の座標軸の座標変換と拡大率および回転角度の関係を示す。図10の実線の円は単位円である。単位円の中心である原点は、(X,Y)=(0,0)のときの参照画像の座標(X’,Y’)である。拡大率が1.0で拡大縮小無しの場合、ベクトルX1,Y1は、図10の単位円上の点に向かうベクトルになるので、X1,Y1の大きさが拡大率を表すことが分かる。回転が0度の場合のベクトルX1=(a,0)は、X’軸上の点となる。そのため、X’軸とX1との間の角、図10のθが、画像の回転角を表すことが分かる。
【0064】
図10に示されるように、X1は(a,c)であるので、回転角度を−180度〜180度の範囲として、|a|≧|c|のときは、
θ≦−135度、−45度≦θ≦45度 または 135度≦θ
となり、|a|<|c|のときは、
−135度<θ<−45度 または 45度<θ<135度
となる。したがって、|a|と|c|を比較することによって、45度を境とした走査方向を決定することができることが分かる。以上の操作に従って、描画ブロック設定部22では、座標変換ベクトルX1(a,c)、Y1(b,d)から描画ブロックの縦と横の画素数および走査方向を設定する。
【0065】
図11〜図13は、座標変換が回転を含む場合の描画ブロックと画像キャッシュアクセスを説明する図である。図11〜図13において、(a)は、描画領域の描画ブロックを示す。実線の枠は描画領域を表す。破線の矩形は描画ブロックを表す。(b)と(c)は、(a)の描画ブロックを座標変換したものとキャッシュブロックの関係を示す。(b)と(c)の破線の矩形は座標変換した描画ブロックを表す。太い実線の矩形はキャッシュブロックを表す。細い実線の枠は参照画像を表す。図11〜図13では、角かっこ数字は描画ブロックの番号を示す。また、丸かっこ数字は画像キャッシュ15のブロックの番号を示す。なお、実線の矢印は主走査の方向、点線の矢印は副走査の方向を表す。
【0066】
図11は、回転角度が小さい場合の描画ブロックと画像キャッシュの関係を示す図である。図11は、参照画像を反時計方向に10度回転させる場合の例を示す。図11(a)に示すように描画領域の描画ブロックの走査の順は、[1]→[4]の順である。描画ブロック内の画素の主走査方向は表示画像の水平方向である。
【0067】
図11の(b)に示すように、番号[1]と[2]の描画ブロックを描画するために、(1)〜(5)のキャッシュブロックがその番号の順で読み込まれる。キャッシュブロックの読み込みは5回必要になっている。同様に、図11(c)を参照すると、番号[3]と[4]の描画ブロックを描画するために、(6)〜(10)のキャッシュブロックがその順で読み込まれる。番号[1]〜[4]の描画ブロックを描画するためにトータルで、10回のキャッシュブロックの読み込みが必要である。参照画像を時計方向に10度回転させる場合も同様である。
【0068】
参照画像を10度回転させるときは、描画ブロックの主走査の方向を表示画像の水平方向とした場合と、垂直方向とした場合とで、画像キャッシュ15のヒット率は変わらない。本実施の形態2の画像描画装置10では、回転角度が45度以下の場合は、描画領域の走査方向を表示画像の水平方向とする。
【0069】
図12は、走査方向を変えずに参照画像を回転させる場合の画像キャッシュアクセスを説明する図である。図12は、参照画像を反時計方向に80度回転させる場合の例を示す。図12(a)に示すように描画ブロックの走査の順は、主走査が水平の[1]→[4]の順である。描画ブロック内の画素の主走査方向は表示画像の水平方向である。
【0070】
図12の(b)に示すように、番号[1]と[2]の描画ブロックを描画するために、(1)〜(7)のキャッシュブロックがその番号の順で読み込まれる。キャッシュブロックの読み込みが7回必要になっている。同様に、図12(c)を参照すると、番号[3]と[4]の描画ブロックを描画するために、(8)〜(12)のキャッシュブロックがその順で読み込まれる。
【0071】
図12(c)の(8)〜(10)、(12)のキャッシュブロックは、(b)の(3)、(4)、(7)および(6)のキャッシュブロックと同じである。しかし、画像キャッシュ15のキャッシュブロックの最大数が4以下である場合、番号[3]の描画ブロックの描画を始めるときには、すでに(3)(=(8))のキャッシュブロックは廃棄されているので、改めて(8)のキャッシュブロックを読み込む必要がある。同様に(9)のキャッシュブロックが必要になるときには、(4)のキャッシュブロックは廃棄されているので、改めて読み込む必要がある。さらに(12)のキャッシュブロックが必要になるときには、(6)のキャッシュブロックは廃棄されているので、改めて読み込む必要がある。図12の例では、番号[1]〜[4]の描画ブロックを描画するためにトータルで、12回のキャッシュブロックの読み込みが必要である。その結果、図11の場合に比べて画像キャッシュ15のヒット率は低下する。
【0072】
図13は、参照画像の回転角度に合わせて走査方向を変更する場合の画像キャッシュアクセスを説明する図である。図13は、参照画像を反時計方向に80度回転させる場合の例を示す。図13(a)に示すように描画ブロックの走査の順は、主走査が垂直の[1]→[4]の順である。描画ブロック内の画素の主走査方向は表示画像の垂直方向である。
【0073】
図13の(b)に示すように、番号[1]と[2]の描画ブロックを描画するために、(1)〜(5)のキャッシュブロックがその番号の順で読み込まれる。キャッシュブロックの読み込みが5回必要になっている。同様に、図13(c)を参照すると、番号[3]と[4]の描画ブロックを描画するために、(6)〜(10)のキャッシュブロックがその順で読み込まれる。
【0074】
図13(c)の(6)と(8)のキャッシュブロックは、(b)の(3)と(5)のキャッシュブロックと同じである。画像キャッシュ15のキャッシュブロックの最大数が4の場合、番号[3]の描画ブロックの描画を始めるときには、まだ(3)のキャッシュブロックが画像キャッシュ15に残っているので、改めて(6)のキャッシュブロックを読み込む必要がない場合がある。同様に(8)のキャッシュブロックが必要になるときには、(5)のキャッシュブロックが残っている可能性があり、改めて読み込む必要がない場合がある。
【0075】
図13の例では、番号[1]〜[4]の描画ブロックを描画するためにトータルで、10回のキャッシュブロックの読み込みが必要である。画像キャッシュ15のキャッシュブロックの最大数が4以上の場合は、さらに読み込み回数が減少する。その結果、図12の場合に比べて画像キャッシュ15のヒット率が向上する。参照画像を時計方向に80度回転させる場合は、図12および図13が対称になるが同様に考えることができる。
【0076】
図14は、実施の形態2に係る描画ブロックサイズ設定の動作の一例を示すフローチャートである。実施の形態2では、描画ブロックの縦と横の画素数を設定したのちに、座標変換の回転角度に応じて、描画領域の走査方向を設定する。図14のフローチャートは、ステップS10〜ステップS22までの動作は、図6のステップS10〜ステップS22の動作と同じである。
【0077】
描画ブロックの縦と横の画素数を設定したのちに、ベクトルX1(a,c)のa,cの関係が、|a|≧|c|であるかどうかを判定する(ステップS23)。|a|≧|c|であれば(ステップS23;YES)、描画領域の水平方向(X方向)を主走査方向とする(ステップS24)。|a|<|c|であれば(ステップS23;NO)、描画領域の垂直方向(Y方向)を主走査方向として、描画ブロックサイズ設定を終了する。
【0078】
図15は、実施の形態2に係る画像生成の動作の一例を示すフローチャートである。描画ブロックサイズ設定を終了すると、描画処理に入る。輪郭生成部12で輪郭生成(ステップS30)したのち、描画ブロックサイズ設定で設定した主走査の方向がX方向かY方向かを判定する(ステップS50)。主走査方向がX方向であれば(ステップS50;X)、描画領域内をY方向から先にループを回す(ステップS31〜ステップS40)。すなわち、図7のステップS31〜ステップS40と同様の処理を行う。
【0079】
主走査方向がY方向であれば(ステップS50;Y)、描画領域内をX方向から先にループを回す(ステップS51〜ステップS60)。すなわち、ステップS31〜ステップS40の処理のX方向とY方向を入れ替える。ステップS51〜ステップS60の処理は、4つのループの入れ子構造になっている。
【0080】
描画領域を分割して被覆する描画ブロックを設定し、描画ブロックを列ごとに選択して、X方向(副走査方向)のブロック数分ループ処理(描画領域Xループ:最も外側のループ)を行う(ステップS51〜ステップS60のループ)。描画領域Xループの処理では、描画ブロックの1つの列について、主走査(Y)の方向に描画ブロックを選択して、Y方向(主走査方向)のブロック数分ループ処理(描画領域Yループ:ブロック処理の内側のループ)を行う(ステップS52〜ステップS59のループ)。描画領域の形状と傾きによって、描画ブロックの列ごとの数(Y方向のブロック数)は異なっているかもしれない。
【0081】
描画領域Yループの処理では、描画ブロック内の画素を列ごとに選択して、X方向(副走査方向)の画素数Wの分ループ処理(ブロック内Xループ:ブロック内処理の外側のループ)を行う(ステップS53〜ステップS58のループ)。ブロック内Xループの処理では、選択した1列の画素数Hの分ループ処理(ブロックYループ:最も内側のループ)を行う(ステップS54〜ステップS57)。すなわち、Y方向(主走査方向)に画素を1つずつ選択し、座標変換して(ステップS55)、描画処理を行う(ステップS56)。これを1列の画素数H分行う。描画領域内の全ての画素分のループが終わると、画素生成を終了し、描画が完了する。
【0082】
以上説明したように、本実施の形態2の画像描画装置10によれば、参照画像を回転して表示する場合に、画像キャッシュが効率的に使用できるようになることにより、キャッシュヒット率が向上し、描画速度が向上する。そして、キャッシュヒット率の向上により、キャッシュ更新回数が減り、メモリアクセス量が低減される。
【0083】
図16は、本発明の実施の形態に係る画像描画装置のハードウェア構成の例を示すブロック図である。画像描画装置10は、図16に示すように、制御部31、主記憶部32、外部記憶部33、操作部34、表示部35および送受信部36を備える。主記憶部32、外部記憶部33、操作部34、表示部35および送受信部36はいずれも内部バス30を介して制御部31に接続されている。
【0084】
制御部31はCPU(Central Processing Unit)等から構成され、外部記憶部33に記憶されている制御プログラム39に従って、画像描画装置10の処理を実行する。
【0085】
主記憶部32はRAM(Random−Access Memory)等から構成され、外部記憶部33に記憶されている制御プログラム39をロードし、制御部31の作業領域として用いられる。
【0086】
外部記憶部33は、フラッシュメモリ、ハードディスク、DVD−RAM(Digital Versatile Disc Random−Access Memory)、DVD−RW(Digital Versatile Disc ReWritable)等の不揮発性メモリから構成され、上述の処理を制御部31に行わせるための制御プログラム39を予め記憶し、また、制御部31の指示に従って、制御プログラム39が記憶するデータを制御部31に供給し、制御部31から供給されたデータを記憶する。図1の外部メモリ20は、外部記憶部33に含まれる。
【0087】
操作部34はキーボードおよびマウスなどのポインティングデバイス等と、キーボードおよびポインティングデバイス等を内部バス30に接続するインタフェース装置から構成されている。操作部34を介して、画像の表示、参照画像の指定、描画領域と座標変換の情報などの入力を受け付ける。
【0088】
表示部35は、CRT(Cathode Ray Tube)またはLCD(Liquid Crystal Display)などから構成され、描画処理部16で生成した表示画像を表示する。
【0089】
送受信部36は、通信装置、およびそれらと接続するシリアルインタフェースまたはLAN(Local Area Network)インタフェースから構成されている。送受信部37は、ネットワーク(図示せず)を通じてサーバ(図示せず)から、表示する画像を含むコンテンツを受信する。
【0090】
図1の描画コマンド発生部11、輪郭生成部12、画素生成部13、座標変換部14、画像キャッシュ15、描画処理部16、表示部17、外部メモリ20、レジスタ21および描画ブロック設定部22の処理は、制御プログラム39が、制御部31、主記憶部32、外部記憶部33、操作部34、表示部35および送受信部36などを資源として用いて処理することによって実行する。
【0091】
本発明の好適な変形として、以下の構成が含まれる。
【0092】
本発明の第1の観点に係る画像描画装置について、
好ましくは、前記設定手段は、前記画像キャッシュのブロックサイズとブロック数に合わせて、少なくとも前記矩形領域に含まれる前記描画領域を座標変換した領域が、前記画像キャッシュの範囲に収まるように、前記矩形領域の縦と横の画素数を設定することを特徴とする。
【0093】
好ましくは、前記設定手段は、前記座標変換の倍率に反比例して、前記矩形領域の縦と横の画素数を設定することを特徴とする。
【0094】
好ましくは、前記変換手段は、前記描画領域の水平方向を座標変換した方向と、前記画像キャッシュの水平方向のなす角度の小さい方が45度を超える場合に、前記描画領域の垂直方向を主走査方向、水平方向を副走査方向として、前記描画領域を被覆する矩形領域を順に選択し、かつ、選択した矩形領域内を走査して画素を選択することを特徴とする。
【0095】
本発明の第2の観点に係る画像描画方法について、
好ましくは、前記設定ステップは、前記画像キャッシュのブロックサイズとブロック数に合わせて、少なくとも前記矩形領域に含まれる前記描画領域を座標変換した領域が、前記画像キャッシュの範囲に収まるように、前記矩形領域の縦と横の画素数を設定することを特徴とする。
【0096】
好ましくは、前記設定ステップは、前記座標変換の倍率に反比例して、前記矩形領域の縦と横の画素数を設定することを特徴とする。
【0097】
好ましくは、前記変換ステップは、前記描画領域の水平方向を座標変換した方向と、前記画像キャッシュの水平方向のなす角度の小さい方が45度を超える場合に、前記描画領域の垂直方向を主走査方向、水平方向を副走査方向として、前記描画領域を被覆する矩形領域を順に選択し、かつ、選択した矩形領域内を走査して画素を選択することを特徴とする。
【0098】
その他、前記のハードウエア構成やフローチャートは一例であり、任意に変更および修正が可能である。
【0099】
制御部31、主記憶部32、外部記憶部33、操作部34、内部バス30などから構成される画像描画処理を行う中心となる部分は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。たとえば、前記の動作を実行するためのコンピュータプログラムを、コンピュータが読み取り可能な記録媒体(フレキシブルディスク、CD−ROM、DVD−ROM等)に格納して配布し、当該コンピュータプログラムをコンピュータにインストールすることにより、前記の処理を実行する画像描画装置を構成してもよい。また、インターネット等の通信ネットワーク上のサーバ装置が有する記憶装置に当該コンピュータプログラムを格納しておき、通常のコンピュータシステムがダウンロード等することで画像描画装置を構成してもよい。
【0100】
また、画像描画装置の機能を、OS(オペレーティングシステム)とアプリケーションプログラムの分担、またはOSとアプリケーションプログラムとの協働により実現する場合などには、アプリケーションプログラム部分のみを記録媒体や記憶装置に格納してもよい。
【0101】
また、搬送波にコンピュータプログラムを重畳し、通信ネットワークを介して配信することも可能である。たとえば、通信ネットワーク上の掲示板(BBS, Bulletin Board System)に前記コンピュータプログラムを掲示し、ネットワークを介して前記コンピュータプログラムを配信してもよい。そして、このコンピュータプログラムを起動し、OSの制御下で、他のアプリケーションプログラムと同様に実行することにより、前記の処理を実行できるように構成してもよい。
【符号の説明】
【0102】
10 画像描画装置
11 描画コマンド発生部
12 輪郭生成部
13 画素生成部
14 座標変換部
15 画像キャッシュ
16 描画処理部
17 表示部
20 外部メモリ
21 レジスタ
22 描画ブロック設定部
31 制御部
32 主記憶部
33 外部記憶部
34 操作部
35 表示部
36 送受信部
39 制御プログラム

【特許請求の範囲】
【請求項1】
表示画像中に参照画像を変換して表示する領域である描画領域を指定する情報を取得する描画領域取得手段と、
前記描画領域に前記参照画像を変換して表示するための、前記描画領域から前記参照画像への座標変換の情報を取得する座標変換取得手段と、
前記描画領域を分割して被覆する矩形領域を、前記描画領域から前記参照画像への座標変換で座標変換した領域が、前記参照画像を読み出した画像データを蓄える所定の画像キャッシュの画像上の形に適合するように、前記矩形領域の縦と横の画素数を設定する設定手段と、
前記設定手段で設定した縦と横の画素数で前記描画領域を分割して被覆する1以上の前記矩形領域を生成する生成手段と、
所定の走査方向の順に前記矩形領域を選択し、該選択した矩形領域内の走査方向の順番に選択した画素から前記座標変換によって前記参照画像内の画素位置を算出する変換手段と、
前記変換手段で算出した画素位置の画像データを、前記参照画像を記憶しているメモリから読み出す画像取得手段と、
前記メモリから読み出した画像データを蓄える前記画像キャッシュと、
前記画像キャッシュから前記画像データを読み出して、前記描画領域の画素に変換する描画手段と、
を備える画像描画装置。
【請求項2】
前記設定手段は、前記画像キャッシュのブロックサイズとブロック数に合わせて、少なくとも前記矩形領域に含まれる前記描画領域を座標変換した領域が、前記画像キャッシュの範囲に収まるように、前記矩形領域の縦と横の画素数を設定することを特徴とする請求項1に記載の画像描画装置。
【請求項3】
前記設定手段は、前記座標変換の倍率に反比例して、前記矩形領域の縦と横の画素数を設定することを特徴とする請求項1または2に記載の画像描画装置。
【請求項4】
前記変換手段は、前記描画領域の水平方向を座標変換した方向と、前記画像キャッシュの水平方向のなす角度の小さい方が45度を超える場合に、前記描画領域の垂直方向を主走査方向、水平方向を副走査方向として、前記描画領域を被覆する矩形領域を順に選択し、かつ、選択した矩形領域内を走査して画素を選択することを特徴とする請求項1ないし3のいずれか1項に記載の画像描画装置。
【請求項5】
表示画像中に参照画像を変換して表示する領域である描画領域を指定する情報を取得する描画領域取得ステップと、
前記描画領域に前記参照画像を変換して表示するための、前記描画領域から前記参照画像への座標変換の情報を取得する座標変換取得ステップと、
前記描画領域を分割して被覆する矩形領域を、前記描画領域から前記参照画像への座標変換で座標変換した領域が、前記参照画像を読み出した画像データを蓄える所定の画像キャッシュの画像上の形に適合するように、前記矩形領域の縦と横の画素数を設定する設定ステップと、
前記設定ステップで設定した縦と横の画素数で前記描画領域を分割して被覆する1以上の前記矩形領域を生成する生成ステップと、
所定の走査方向の順に前記矩形領域を選択し、該選択した矩形領域内の走査方向の順番に選択した画素から前記座標変換によって前記参照画像内の画素位置を算出する変換ステップと、
前記変換ステップで算出した画素位置の画像データを、前記参照画像を記憶しているメモリから読み出す画像取得ステップと、
前記メモリから読み出した画像データを前記画像キャッシュに蓄えるステップと、
前記画像キャッシュから前記画像データを読み出して、前記描画領域の画素に変換する描画ステップと、
を備える画像描画方法。
【請求項6】
前記設定ステップは、前記画像キャッシュのブロックサイズとブロック数に合わせて、少なくとも前記矩形領域に含まれる前記描画領域を座標変換した領域が、前記画像キャッシュの範囲に収まるように、前記矩形領域の縦と横の画素数を設定することを特徴とする請求項5に記載の画像描画方法。
【請求項7】
前記設定ステップは、前記座標変換の倍率に反比例して、前記矩形領域の縦と横の画素数を設定することを特徴とする請求項5または6に記載の画像描画方法。
【請求項8】
前記変換ステップは、前記描画領域の水平方向を座標変換した方向と、前記画像キャッシュの水平方向のなす角度の小さい方が45度を超える場合に、前記描画領域の垂直方向を主走査方向、水平方向を副走査方向として、前記描画領域を被覆する矩形領域を順に選択し、かつ、選択した矩形領域内を走査して画素を選択することを特徴とする請求項5ないし7のいずれか1項に記載の画像描画方法。
【請求項9】
コンピュータに、
表示画像中に参照画像を変換して表示する領域である描画領域を指定する情報を取得する描画領域取得ステップと、
前記描画領域に前記参照画像を変換して表示するための、前記描画領域から前記参照画像への座標変換の情報を取得する座標変換取得ステップと、
前記描画領域を分割して被覆する矩形領域を、前記描画領域から前記参照画像への座標変換で座標変換した領域が、前記参照画像を読み出した画像データを蓄える所定の画像キャッシュの画像上の形に適合するように、前記矩形領域の縦と横の画素数を設定する設定ステップと、
前記設定ステップで設定した縦と横の画素数で前記描画領域を分割して被覆する1以上の前記矩形領域を生成する生成ステップと、
所定の走査方向の順に前記矩形領域を選択し、該選択した矩形領域内の走査方向の順番に選択した画素から前記座標変換によって前記参照画像内の画素位置を算出する変換ステップと、
前記変換ステップで算出した画素位置の画像データを、前記参照画像を記憶しているメモリから読み出す画像取得ステップと、
前記メモリから読み出した画像データを前記画像キャッシュに蓄えるステップと、
前記画像キャッシュから前記画像データを読み出して、前記描画領域の画素に変換する描画ステップと、
を実行させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4A】
image rotate

【図4B】
image rotate

【図4C】
image rotate

【図4D】
image rotate

【図5A】
image rotate

【図5B】
image rotate

【図5C】
image rotate

【図5D】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9A】
image rotate

【図9B】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate