(57)【要約】ブロック単位の方法を用いて画像データを回転する装置、プログラムプロダクト、及び方法であり、画像（１２０）を定義する画像データの複数のブロック（１２２）の各々に対して、並進ベクトルを前記ブロック（１２２）に適用して、回転ポイントの回りを所望の回転角度でブロック（１２２）を並進、例えばブロック（１２２）に対するアンカー位置を開始ポイントから終了ポイントへと並進させる。さらに、回転した画像データがブロックの終了ポイントに格納される際に、ブロック（１２２）内の画像データが所望の位置で効果的に回転するように、ブロック（１２２）内の画像データを所望の回転角度で回転させる。
2005539323.tif 000002
【特許請求の範囲】
【請求項１】
画像データを回転する方法であって、画像（１２０）を定義する画像データの複数のブロック（１２２）の各々に対して、前記ブロック（１２２）に並進ベクトルを適用して回転ポイントを中心とする所望の回転角度で前記ブロックを並進させることと、前記所望の回転角度により前記ブロック（１２２）内で前記画像データを回転すること、を含む方法。
【請求項２】
前記回転ポイントが、前記複数のブロック（１２２）に共通であり、前記並進ベクトルの適用が、前記回転ポイントと前記ブロックのアンカー位置との間の距離を示す開始点回転ベクトル（１２４）を生成することを含むことを特徴とする、請求項１に記載の方法。
【請求項３】
前記並進ベクトルの適用がさらに、前記回転の所望角度に関連する終了点回転ベクトルと前記開始点回転ベクトル（１２４）との距離に基づいて前記並進ベクトルを生成することを含むことを特徴とする、請求項２に記載の方法。
【請求項４】
前記回転ポイントが座標（Ｘｃ，Ｙｃ）を有し、前記複数のブロック（１２２）からのブロックｎの前記アンカー位置が座標（Ｘｎ，Ｙｎ）を有し、ブロックｎに対する前記開始点回転ベクトルが座標（Ｘｓｎ，Ｙｓｎ）を有し、
ＸＳｎ＝Ｘｎ−Ｘｃ；及び
ＹＳｎ＝Ｙｎ−Ｙｃ
であることを特徴とする、請求項３に記載の方法。
【請求項５】
前記回転角度が９０度、１８０度、２７０度からなるグループから選択され、９０度の回転角度に対応する前記終了点回転ベクトルが（Ｙｓｎ，−Ｘｓｎ）に等しく、１８０度の回転角度に対応する前記終了点回転ベクトルが（−Ｘｓｎ，−Ｙｓｎ）に等しく、２７０度の回転角度に対応する前記終了点回転ベクトルが（−Ｙｓｎ，Ｘｓｎ）に等しいことを特徴とする、請求項４に記載の方法。
【請求項６】
前記ブロック（１２２）に対する並進ベクトルの適用がさらに、前記ブロックの前記アンカー位置と前記並進ベクトルとを合計することにより、前記ブロックの並進したアンカー位置を生成することを含むことを特徴とする、請求項３に記載の方法。
【請求項７】
回転ポイントが座標（Ｘｃ，Ｙｃ）を有する前記複数のブロック（１２２）に共通であり、前記ブロック（１２２）が座標（Ｘｎ，Ｙｎ）を有するアンカー位置を有する前記複数のブロック（１２２）からのブロックｎであり、前記回転角度が９０度であり、前記ブロック（１２２）に前記並進ベクトルを適用することが、座標（Ｘｄｎ，Ｙｄｎ）を有する前記ブロックｎに対する並進したアンカー位置を生成することを含み、
Ｘｄｎ＝Ｙｎ＋Ｘｃ−Ｙｃ；及び
Ｙｄｎ＝−Ｘｎ＋Ｘｃ＋Ｙｃ
であることを特徴とする、請求項１に記載の方法。
【請求項８】
前記回転ポイントが座標（Ｘｃ，Ｙｃ）を有する前記複数のブロック（１２２）に共通であり、前記ブロック（１２２）が座標（Ｘｎ，Ｙｎ）を有するアンカー位置を有する前記複数のブロック（１２２）からのブロックｎであり、前記回転角度が１８０度であり、前記ブロック（１２２）に前記並進ベクトルを適用することが、座標（Ｘｄｎ，Ｙｄｎ）を有する前記ブロックｎに対する並進したアンカー位置を生成することを含み、
Ｘｄｎ＝２Ｘｃ−Ｘｎ；及び
Ｙｄｎ＝２Ｙｃ−Ｙｎ
であることを特徴とする、請求項１に記載の方法。
【請求項９】
前記回転ポイントが座標（Ｘｃ，Ｙｃ）を有する前記複数のブロック（１２２）に共通であり、前記ブロック（１２２）が座標（Ｘｎ，Ｙｎ）を有するアンカー位置を有する前記複数のブロック（１２２）からのブロックｎであり、前記回転角度が２７０度であり、前記ブロック（１２２）に前記並進ベクトルを適用することが、座標（Ｘｄｎ，Ｙｄｎ）を有する前記ブロックｎに対する並進したアンカー位置を生成することを含み、
Ｘｄｎ＝−Ｙｎ＋Ｘｃ＋Ｙｃ；及び
Ｙｄｎ＝Ｘｎ−Ｘｃ＋Ｙｃ
であることを特徴とする、請求項１に記載の方法。
【請求項１０】
各ブロック（１２２）が矩形のピクセルアレイとして構成されることを特徴とする、請求項１に記載の方法。
【請求項１１】
各ブロック（１２２）が正方形のピクセルアレイとして構成されることを特徴とする、請求項１０に記載の方法。
【請求項１２】
前記複数のブロック（１２２）が同一のサイズであることを特徴とする、請求項１に記載の方法。
【請求項１３】
前記複数のブロック（１２２）が異なるサイズであることを特徴とする、請求項１に記載の方法。
【請求項１４】
前記所望の回転角度による前記ブロック（１２２）内の画像データの回転が、前記ブロック（１２２）内の画像データを９０度、１８０度、２７０度のうちの１つの角度で回転させることを含むことを特徴とする、請求項１に記載の方法。
【請求項１５】
前記所望の回転角度による前記ブロック（１２２）内の画像データの回転が、回転バッファ（４４）を用いて行われることを特徴とする、請求項１に記載の方法。
【請求項１６】
前記画像（１２０）から前記複数のブロック（１２２）を生成することをさらに含むことを特徴とする、請求項１に記載の方法。
【請求項１７】
前記複数のブロック（１２２）を生成することが、各ブロック（１２２）に対するアンカー位置を決定することを含むことを特徴とする、請求項１６に記載の方法。
【請求項１８】
前記複数のブロック（１２２）を生成することが、各ブロック（１２２）に対する開始点回転ベクトル（１２４）を決定することを含み、前記開始点回転ベクトル（１２４）が各ブロック（１２２）に対する前記回転ポイントと前記アンカー位置との差を表すことを特徴とする、請求項１６に記載の方法。
【請求項１９】
前記複数のブロック（１２２）が順序付きリスト（３６，３８）内に配列されることを特徴とする、請求項１に記載の方法。
【請求項２０】
前記複数のブロック（１２２）を前記順序付きリスト（３６，３８）に配列することをさらに含むことを特徴とする、請求項１９に記載の方法。
【請求項２１】
前記複数のブロック（１２２）が、前記複数のブロック（１２２）の回転中にオーバーラップを検出することを最少化するように前記順序付きリスト（３６，３８）に配列されることを特徴とする、請求項１９に記載の方法。
【請求項２２】
前記並進ベクトル（１２２）を前記ブロックに適用し、前記ブロック（１２２）内の画像データを回転させた後、前記順序付きリスト（３６，３８）からブロック（１２２）を除外することをさらに含むことを特徴とする、請求項１９に記載の方法。
【請求項２３】
並進したブロック（１２２）が前記複数のブロック（１２２）中の別のブロックとオーバーラップするか否かを判断し、オーバーラップすると判断した場合に、オーバーラップしたブロックを回転バッファ（４４）にコピーすることをさらに含むことを特徴とする、請求項１９に記載の方法。
【請求項２４】
前記オーバーラップしたブロックを前記回転バッファ（４４）にコピーした後、前記オーバーラップしたブロックに並進ベクトルを適用して、前記オーバーラップしたブロックを前記回転ポイントの回りで前記所望の回転角度で並進させ、前記所望の回転角度により前記オーバーラップしたブロック内の画像データを回転させることを更に含むことを特徴とする、請求項２３に記載の方法。
【請求項２５】
前記並進したブロックが別のブロックとオーバーラップするか否かを判断することが、前記並進したブロックが複数のブロックとオーバーラップすることを検出することを含み、前記オーバーラップしたブロックを前記回転バッファ（４４）にコピーすることが、少なくとも１つの回転バッファ（４４）に前記複数のブロックをコピーすることを含むことを特徴とする、請求項２３に記載の方法。
【請求項２６】
開始点メモリ（２１０）から前記ブロック（１２２）を取り出すことと、前記並進したブロックを終了点メモリ（２１８）に格納することをさらに含むことを特徴とする、請求項１に記載の方法。
【請求項２７】
前記開始点メモリ（２１０）及び前記終了点メモリ（２１８）の各々が、フレームバッファ（４２）と外部メモリ（１６）からなるグループから選択される、請求項２６に記載の方法。
【請求項２８】
前記開始点メモリ（２１０）及び前記終了点メモリ（２１８）が異なるメモリであることを特徴とする、請求項２６に記載の方法。
【請求項２９】
前記開始点メモリ（２１０）及び前記終了点メモリ（２１８）が同一のメモリであることを特徴とする、請求項２６に記載の方法。
【請求項３０】
前記複数のブロック（１２２）が前記画像（１２０）の非矩形の境界を定義することを特徴とする、請求項１に記載の方法。
【請求項３１】
前記画像（１２０）が少なくとも１つのオブジェクトを含み、前記複数のブロック（１２２）が前記オブジェクトの第１のビューに関連する、請求項１に記載の方法。
【請求項３２】
ブロック（１２２）の原位置をバックフィルすることをさらに含むことを特徴とする、請求項１に記載の方法。
【請求項３３】
各ブロック（１２２）に対する画像データを回転バッファ（４４）にロードすること；ブロック（１２２）によりオーバーラップされた各ブロックに対する画像データが前記回転バッファ（４４）にロードされた後にのみ、前記回転バッファ（４４）から終了点メモリ（２１８）へとブロック（１２２）に対する画像データを書き込むこと；をさらに含むことを特徴とする、請求項１に記載の方法。
【請求項３４】
画像データを回転する方法であって；
回転させる画像（１２０）からの画像データの複数のブロック（１２２）中の第１ブロック（１２２）を回転させること；
回転した前記第１のブロックが前記複数のブロック（１２２）中の別のブロックとオーバーラップするか否かを判断すること；
回転した前記第１のブロックが別のブロック（１２２）とオーバーラップする場合、回転した前記第１のブロックをフレームバッファ（４２）に格納する前に、オーバーラップするブロックを回転バッファ（４４）にコピーすること；
前記オーバーラップするブロックを前記回転バッファ（４４）に格納した後に、前記オーバーラップするブロックを回転すること；
前記回転したオーバーラップブロックを前記フレームバッファ（４２）に格納すること；
を含むことを特徴とする、画像データを回転する方法。
【請求項３５】
前記複数のブロック（１２２）が順序付きリスト（３６，３８）に配列され、前記回転した第１のブロックが前記フレームバッファ（４２）に格納された後に前記順序付きリスト（３６，３８）から前記第１のブロック（１２２）を除外することをさらに含むことを特徴とする、請求項３４に記載の方法。
【請求項３６】
画像（１２０）を定義する画像データの複数のブロック（１２２）を格納するように構成されるメモリ（１６）；及び
前記メモリ（１６）に結合されると共に、前記ブロック（１２２）に並進ベクトルを適用することにより回転ポイントの回りで前記複数のブロック（１２２）の中の各ブロック（１２２）を所望の回転角度で並進させ、各ブロック（１２２）内の画像データを前記所望の回転角度で回転させるように構成される回路構成（１４，２２）；
を含む装置。
【請求項３７】
前記回転ポイントが前記複数のブロック（１２２）に共通であり、前記回路構成（１４，２２）が；前記ブロック（１２２）の前記回転ポイントとアンカー位置との間の距離を表す開始点回転ベクトル（１２４）を生成し；前記所望の回転角度に関連する終了点回転ベクトルと前記開始点回転ベクトル（１２４）との差に基づいて前記並進ベクトルを生成し；前記ブロック（１２２）のアンカー位置に前記並進ベクトルを加算することにより前記ブロック（１２２）の並進したアンカー位置を生成する；ことにより前記並進ベクトルを適用するように構成されることを特徴とする、請求項３６に記載の装置。
【請求項３８】
前記回転ポイントが座標（Ｘｃ，Ｙｃ）を有し、前記複数のブロック（１２２）からのブロックｎの前記アンカー位置が座標（Ｘｎ，Ｙｎ）を有し、ブロックｎに対する前記開始点回転ベクトルが座標（Ｘｓｎ，Ｙｓｎ）を有し、
ＸＳｎ＝Ｘｎ−Ｘｃ；及び
ＹＳｎ＝Ｙｎ−Ｙｃ
であり、前記回転角度が９０度、１８０度、２７０度からなるグループから選択され、９０度の回転角度に対応する前記終了点回転ベクトルが（Ｙｓｎ，−Ｘｓｎ）に等しく、１８０度の回転角度に対応する前記終了点回転ベクトルが（−Ｘｓｎ，−Ｙｓｎ）に等しく、２７０度の回転角度に対応する前記終了点回転ベクトルが（−Ｙｓｎ，Ｘｓｎ）に等しいことを特徴とする、請求項３７に記載の装置。
【請求項３９】
各ブロック（１２２）が矩形のピクセルアレイとして構成されることを特徴とする、請求項３６に記載の装置。
【請求項４０】
前記回路構成（１４，２２）が、前記ブロック内の画像データを９０度、１８０度、２７０度のうちの１つの角度で回転させることにより、前記ブロック（１２２）内の前記画像データを前記所望の回転角度で回転させるように構成されることを特徴とする、請求項３６に記載の装置。
【請求項４１】
前記回路構成（１４，２２）が、前記ブロック（１２２）内の前記画像データを回転させるように構成される回転バッファ（４４）を含むことを特徴とする、請求項３６に記載の装置。
【請求項４２】
前記回路構成（１４，２２）が、前記画像（１２０）から前記複数のブロック（１２２）を生成すると共に、各ブロック（１２２）に対するアンカー位置を決定するようにさらに構成されることを特徴とする、請求項３６に記載の装置。
【請求項４３】
前記回路構成（１４，２２）がさらに、各ブロック（１２２）に対する前記回転ポイントと前記アンカー位置との差を表す、各ブロック（１２２）に対する開始点回転を決定するように構成されることを特徴とする、請求項４２に記載の装置。
【請求項４４】
前記複数のブロック（１２２）が、前記順序付きリスト（３６，３８）内に配列されることを特徴とする、請求項３６に記載の装置。
【請求項４５】
前記複数のブロック（１２２）が、前記複数のブロック（１２２）の回転中にオーバーラップが検出されることを最少化するように前記順序付きリスト（３６，３８）内に配列されることを特徴とする、請求項４４に記載の方法。
【請求項４６】
前記回路構成（１４，２２）がさらに、ブロック（１２２）に並進ベクトルが適用され、前記ブロック（１２２）内の前記画像データが回転した後に、前記順序付きリスト（３６，３８）から前記ブロック（１２２）を除外するように構成されることを特徴とする、請求項４４に記載の装置。
【請求項４７】
前記回路構成（１４，２２）がさらに、並進したブロック（１２２）が前記複数のブロック（１２２）中の別のブロック（１２２）とオーバーラップするか否かを判断し、オーバーラップすると判断した場合に、オーバーラップしたブロックを回転バッファ（４４）にコピーするように構成されることを特徴とする、請求項４４に記載の装置。
【請求項４８】
前記回路構成（１４，２２）がさらに、前記オーバーラップしたブロック（１２２）を前記回転バッファ（４４）にコピーした後、前記オーバーラップしたブロック（１２２）に並進ベクトルを適用して、前記オーバーラップしたブロック（１２２）を前記回転ポイントの回りを前記所望の回転角度で並進させ、前記オーバーラップしたブロック（１２２）内の画像データを前記所望の回転角度で回転させるように構成されることを特徴とする、請求項４７に記載の装置。
【請求項４９】
前記回路構成（１４，２２）がさらに、前記メモリ（１６）から前記ブロック（１２２）を取り出し、前記並進したブロック（１２２）を異なるメモリ（１６）に格納するように構成されることを特徴とする、請求項３６に記載の装置。
【請求項５０】
前記回路構成（１４，２２）がさらに、前記メモリ（１６）から前記ブロック（１２２）を取り出し、前記並進したブロック（１２２）を前記メモリ（１６）に格納することを特徴とする、請求項３６に記載の装置。
【請求項５１】
前記メモリ（１６）が、フレームバッファ（４２）及び外部メモリ（１６）からなるグループから選択されることを特徴とする、請求項３６に記載の装置。
【請求項５２】
回路構成であって、
回転バッファ（４４）と、
前記回転バッファ（４４）に結合される回路（１４，２２）と、を含み、前記回路（１４，２２）が、前記画像（１２０）を定義する画像データの複数のブロック（１２２）の各々に対して、前記回転バッファ（４４）内に前記ブロック（１２２）に対する画像データを取り出し、前記ブロック（１２２）に並進ベクトルを適用して、回転ポイントの回りを所望の回転角度で前記ブロック（１２２）を並進させ、前記所望の回転角度により前記回転バッファ（４４）内の画像データを回転させることによって、前記画像（１２０）を回転させるように構成される、回路構成。
【請求項５３】
前記回路（１４，２２）が、プロセッサ（１０）とプログラムコード（２８）とを含み、前記プログラムコード（２８）が前記ブロックに前記並進ベクトルを適用し、前記回転バッファ（４４）内で前記画像データの回転を開始するように前記プロセッサ（１０）上で実行するように構成されることを特徴とする、請求項５２に記載の回路構成。
【請求項５４】
請求項５２の前記回路構成を含む集積回路。
【請求項５５】
プログラムプロダクトであって、請求項５２の前記回路構成を定義するハードウェア定義プログラムと、前記ハードウェア定義プログラムを保持する信号保持媒体とを含み、前記信号保持媒体が記録媒体と伝送媒体のうちの少なくとも１つを含むプログラムプロダクト。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概してデジタル画像データの操作に関し、詳細には画像データの回転に関する。
【背景技術】
【０００２】
コンピュータや他のデータ処理システムにおける図形データ或いは画像データの処理は、相当量のメモリとプロセッサ資源を必要とするため、コンピュータを利用した場合には非常に費用がかかることが多い。多くのデータ処理システムでは、画像はピクセルエレメント又は「ピクセル」アレイによって表され、各ピクセルは、各ピクセルにおいて表すことのできるカラーバリエーションの総数を定義する「色の深み」を有している。画像の解像度および色の深みの少なくとも一方が増すにつれ、知覚される画像の質も良くなり、そのことは写実性、正確性、画質、画像鮮度等に反映され得る。従って、解像度および色の深み少なくとも一方を増大させるように画像をデータ処理システムでサポートすることが要求され続けている。
【０００３】
一般的な法則として、画像の解像度および色の深み少なくとも一方が増すほど、画像を表現するのに必要な画像データの量も増す。さらに、画像データを表現するのに使用される画像データの量が増すほど、画像の格納、伝送及び操作に必要なコンピュータ資源の量も増大する。
【０００４】
一般にかなりの量のコンピュータ資源を必要とする図形操作の特定のタイプの１つは、画像の回転である。例えばディスプレイ、ファックス、コピー、印刷の目的で横長および縦長に画像を変換することにおいて、画像の回転は多くの利点を有する。また、CAD、図形デザイン、画像処理並びに他のビデオ及び図形制作環境では、画像の回転を使用して、ユーザの作成したドキュメントの画像データを操作することは頻繁にあることである。さらに、携帯用の電子デバイスがより普及するにつれ、デバイスにおける多くの形状を受け入れるよう、様々な視角で画像を表示できる、よりフレキシブルなディスプレイの必要性も生じるであろう。
【０００５】
従来の画像回転アルゴリズムはソフトウェアにおいて実行され、コンピュータを利用した場合に費用のかかる多数のマトリックス変換操作を含むのが一般的である。かかるアルゴリズムは一般的に、フレームバッファに格納される全体画像等の矩形の画像を用いた操作に制限される。さらに、かかるマトリックス変換の実行にはコンピューティング資源が相当量必要であるため、ソフトウェア・ベースのアルゴリズムの多くは、例えば携帯用デバイスや、ワイヤレス遠隔通信デバイス、デジタルカメラ等の低出力機器での使用にはあまり適していない。
【０００６】
多くのソフトウェア・ベースのアルゴリズムの過大な資源要求を処理するため、特殊なハードウェアを用いて幾つかの画像回転機能を実行する試みがなされてきた。例えば、ディスプレイ上で９０度回転した画像を効果的に生成するため、フレームバッファを行毎ではなく列毎に読み出すように、フレームバッファに不連続のアクセスを行うよう特殊化したメモリアクセスを使用することもある。しかし、メモリバッファに不連続のアクセスを行うことは多くの場合効果がなく、例えばメモリキャッシュ、プリフェッチ回路等の他の性能向上回路を迂回する可能性もあるため、性能に悪影響を及ぼすおそれがある。さらに、かかるハードウェアの加速化はしばしば、非常に特殊な用途に限定され、特別なサイズの矩形画像のみに対する作用に限定されることが多い。
【０００７】
従来の画像回転アルゴリズムを矩形画像に焦点を置いて適用することは多くの用途において大抵は十分であるが、用途によってはこのように焦点を置くことが画像回転処理中に無効となることもある。例えば従来の画像回転アルゴリズムを用いた場合、かかるアルゴリズムによる処理に対して、画像は矩形領域を境界としなければならない。１つの画像中の適切な（非背景）画像データが全く矩形でない場合、このような領域に矩形の境界を付けることで、相当量の余白データ又は背景データが発生する可能性がある。しかし従来の画像回転アルゴリズムでは、画像データが１つの画像に対して密接な関係を有している場合や、かかる画像データが背景色を構成している場合を判断できないため、矩形領域中の全ての画像データが略同様に処理されることとなる。従って、実際に回転する画像に特別関係のない画像データを回転するために、かなりの処理資源が費やされる可能性がある。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
従って、様々な用途にわたって幅広く適用可能でフレキシブルな画像回転アルゴリズムが極めて必要とされている。特に、画像の多様なサイズと形状を含む様々なタイプの画像と共に使用することができ、多様なハードウェアおよびソフトウェア少なくとも一方の能力を有するデータ処理システムに適用可能な画像回転アルゴリズムが必要とされている。
【課題を解決するための手段】
【０００９】
本発明は、ブロック単位の方法を用いて画像データを回転させる装置、プログラムプロダクト、及び方法を提供することにより、従来技術に関連する上記及びその他の問題を解決する。前記ブロック単位の方法では、画像を定義する画像データの複数のブロックの各々に対して並進ベクトルを適用し、前記ブロックを回転ポイントの回りで所望の回転角度で並進、例えばブロックのアンカー位置を開始ポイントから終了ポイントへと並進させる。さらに、ブロック内の画像データを所望の回転角度によって回転、例えば、回転した画像データがブロックの終了ポイントに格納されると、ブロック内の画像データは所望の位置で効果的に回転する。
【００１０】
さらに、本発明による幾つかの実施形態では、画像データのオーバーラップしたブロックを一時的に格納することにより、画像データのブロックの回転を簡易化するために、回転バッファを用いることもある。多くの場合、そのようにすることで、画像の回転はメモリ内の原位置で実行されるため、画像の回転中に別の開始点メモリと終了点メモリを設ける必要性を排除できる。
【００１１】
本発明を特徴づける上記及びその他の利点及び特徴は、添付の請求の範囲に記載され、発明のさらなる部分を形成する。しかし、本発明とその利用を通じて得られる利点及び目的をより良く理解するため、図面及び本発明を例示する実施の形態を記載した以下の記述を参照されたい。
【発明を実施するための最良の形態】
【００１２】
ここで示す本発明の実施形態は、ブロック単位の画像回転を実行し、電子デバイスにおける画像データの高速且つ有効な回転を簡易化する。以下の記載からより明らかになるように、本明細書中に記載する実施形態は、低コストおよび低出力用途の少なくとも一方を含む、多くの用途に対応することができるように、ハードウェア及びソフトウェアにおける異なる範囲まで実行されることが多いため、例えばＰＤＡ、携帯電話等の手持ち式及びワイヤレスの遠隔通信デバイスにおいて望ましいものである。さらに、本明細書に記載する実施形態は矩形画像からの画像データを回転するように用いられているが、画像自体の境界線或いは画像を定義するように使用されるブロックの境界線が非矩形の形状を有する非矩形画像を含む、あらゆる任意の形状の画像に対して本発明の原理を適用することができる。
【００１３】
以下の記載から明らかになるように、本発明による実施形態は、複数のブロックで編成された画像データを処理することによって画像を回転する。個々の各ブロックに対して並進ベクトルを適用し、回転ポイントの回りを所望の回転角度でブロックを並進させる。さらに、一般には専用の回転加速化回路を備える回転バッファを使用することにより、各ブロック内の画像データを所望の回転角度分回転させる。ブロックの並進とブロック内の画像データの回転とを組み合わせることにより、画像データのブロックを、その所望の位置で効果的に回転させる。
【００１４】
ここで図面を参照するが、同じ部材には複数の図面にわたって同じ番号を付与している。図１は本発明によるブロック単位の画像回転を実行する装置１０のハードウェア及びソフトウェア環境を示す。本発明の目的のために、装置１０は実際にはクライアントコンピュータ、サーバコンピュータ、ポータブルコンピュータ、携帯サイズのコンピュータ、組み込みコントローラ等を含む任意のタイプのコンピュータ、コンピュータシステム、或いは他のプログラム可能な電子デバイスを示すことが可能である。さらに、装置１０は例えばクラスタ若しくは他の分散コンピュータシステムにおいて１つ以上のネットワークコンピュータを用いて実行可能である。「装置」という用語は本発明によるその他の適切なプログラム可能な電子デバイスを含み得るが、装置１０は以後「コンピュータ」と呼ぶこともある。
【００１５】
コンピュータ１０は典型的にはシステムバス１２を含み、かかるシステムバス１２は、メモリ１６と結合する１つ以上のマイクロプロセッサを含む中央処理ユニット（ＣＰＵ）１４に結合される。メモリ１６は、コンピュータ１０の主記憶装置を含むランダムアクセスメモリ（ＲＡＭ）を示しても、キャッシュメモリ、不揮発性又はバックアップメモリ（例えばプログラム可能メモリ又はフラッシュメモリ）、読取専用メモリ等の任意の補助レベルのメモリを示してもよい。さらに、メモリ１６はコンピュータ１０内の別の場所に物理的に位置される記憶装置、例えばＣＰＵ１４のプロセッサ内の任意のキャッシュメモリや、例えば大容量記憶装置上又はコンピュータ１０に結合される別のコンピュータ上に格納される仮想メモリとして使用される任意の記憶容量を含むと考えることもできる。
【００１６】
さらに、システムバス１２には記憶制御装置１８が結合され、該記憶制御装置１８は、フロッピー(R)又はその他のリムーバブルディスクドライブ、ハードディスクドライブ、ダイレクトアクセス記憶デバイス（ＤＡＳＤ）、光学デバイス（例えばＣＤドライブ、ＤＶＤドライブ等）およびテープ装置の不揮発性記憶装置の種々のソースへのアクセスを提供するように使用される。さらに、コンピュータ１０はまた、１つ以上の外部ネットワーク（例えばとりわけＬＡＮ、ＷＡＮ、ワイヤレスネットワーク、およびインターネットの少なくとも１つ）とのインタフェースを提供するネットワークコントローラ２０を含み得る。またコンピュータ１０は一般的に、例えばとりわけキーボード、マウス、トラックボール、ジョイスティック、タッチパッド、およびマイクの少なくとも１つを介して、ユーザからの入力を受信する。ユーザに対する情報の表示は、例えばＣＲＴモニタ、ＬＣＤディスプレイパネル等のディスプレイ２４を駆動するグラフィックスエンジン２２を含むグラフィックスシステムを通して行われるのが一般的である。ネットワークコントローラ２０を介して別のコンピュータ或いは端末から、及び別のコンピュータ或いは端末へと、更なるユーザの入力及び出力を送受信することが可能である。
【００１７】
本発明によるブロック単位の画像回転を実行するために、コンピュータ１０では多様なハードウェアコンポーネント及びソフトウェアコンポーネントの組み合わせを使用する。詳細には、グラフィックスエンジン２２は、コンピュータ１０においてグラフィックス又はビデオアダプタカード上に配置されるグラフックスコントローラとして使用される。メモリ１６のプログラム空間に存在するように示されるオペレーティングシステム２６は、コンピュータ内で入出力操作の多くを処理するディスプレイドライバ２８を含む、多様なデバイスドライバを使用する。ディスプレイドライバ２８は具体的には、グラフィックスエンジン２２と共に使用されるように編成され、ブロック単位の画像回転と協働するソフトウェア・ベースの機能の多くが発生するのはディスプレイドライバにおいてである。
【００１８】
ディスプレイドライバ２８における機能は一般的に、１つ以上のアプリケーションプログラム３０によりアクセスされ、技術的に良く知られたプロセスで、ディスプレイ２４上に所望の画像データを最終的に描画又はペイントする。かかる動作と関連して、ディスプレイドライバ２８は一般的に、メモリ１６のデータ空間に常駐するように示される１つ以上のバーチャルフレームバッファ３２において、表示される所望の画像を構築する。
【００１９】
本発明によるブロック単位の画像回転と関連して使用される多様な追加のソフトウェアコンポーネントもメモリ１６内に示されており、それらには、汎用オブジェクト記述装置３４、及び複数のビューＡ．．．Ｘに対して定義される複数のオブジェクトブロックリスト３６、３８が含まれる。
【００２０】
ハードウェアの観点から見ると、グラフィックスエンジン２２は、回転／並進コントローラ４０、ローカルフレームバッファ４２及び回転バッファ４４を含む多くのハードウェアコンポーネントに依存する。コントローラ４０は、画像データの回転及び並進のハードウェア処理を管理するために使用される。ローカルフレームバッファ４２は、ディスプレイ２４を駆動するために別のコントローラにより読み出される画像データを記憶するように使用される高速メモリである。回転バッファ４４は画像データを一時的に記憶するように使用され、多くの周知の画像データ回転回路のいずれかを使用して記憶された画像データを回転させる回転促進回路を含み得る。ここで述べる実施形態では各側が数個のピクセルのみからなるブロックサイズを処理するが、幾つかの実施形態では所与のブロック中の画像データのハードウェア・ベースの回転を使用して、比較的単純でコンパクトなハードウェア回路において極めて高速の回転を提供することができる。
【００２１】
以下の記載から明らかになるように、本発明によるブロック単位の画像回転は、回転バッファを使用して、開始点メモリ内に記憶した画像データを回転し、終了点メモリにおいて回転した画像データを記憶することが可能である。正確にどのハードウェアコンポーネントが開始点メモリ及び終了点メモリに対して使用されるかは実施形態により異なるが、図１に示すコンピュータ１０の形態でサポートすることができる。
【００２２】
例えば図２Ａに示すように、回転バッファ５０と共に使用される開始点メモリ及び終了点メモリの両メモリは外部メモリ５２を用いて実行され、例えばバーチャルフレームバッファに格納された画像データの回転をサポートすることができる。さらに、画像データが読み出され再度書き込まれる外部メモリの特定の領域は同一であっても異なっても良く、以下に詳述するオーバーラップに対する処理は開始点領域と終了点領域が同一である例を使用する。
【００２３】
代替例では図２Ｂに示すように、回転バッファ５４は外部メモリ５６を開始点メモリとして使用し、ローカルフレームバッファ５８を終了点メモリとして使用することができる。さらに別の実施形態では、例えば図２Ｃで示すように、回転バッファ６０は画像回転に関する使用に対し、ローカルフレームバッファ６２を開始点メモリと終了点メモリの両目的で使用することが可能である。他の形状の開始点メモリ及び終了点メモリを、本発明とともに使用することが可能である。
【００２４】
再度図１を参照する。本開示内容を享受する当業者には十分に理解されるが、本発明によるグラフィックスエンジン２２は、多様な２Ｄ及び３Ｄ処理エンジンを含むその他の機能を備えてもよい。さらに、ハートウェアコンポーネントとソフトウェアコンポーネントのその他の組み合わせを用いて、本明細書中に述べる本発明によるブロック単位の回転機能を実行してもよい。従って、本発明はここで述べる特定の実行に限定されない。
【００２５】
一般にソフトウェアの観点から、本発明の多様な実施形態で使用する機能のいずれかを提供するように実行されるルーチンは、動作システム或いは特定の用途、コンポーネント、プログラム、オブジェクト、モジュール又は命令のシーケンスの一環として、又はそれらの一部として実行されるに関らず、本明細書中では「コンピュータプログラムコード」又は単純に「プログラムコード」と呼ぶ。プログラムコードは一般的に、コンピュータ内の多様なメモリ及び記憶デバイスにおいて様々な時に存在する１つ以上の命令を含み、コンピュータ内の１つ以上のプロセッサにより読み出されて実行される際に、本発明の多様な態様を実施するステップ又はエレメントを実行するのに必要なステップをコンピュータに実行させる。さらに、ここまでは完全に機能するコンピュータ及びコンピュータシステムの状況に基づき本発明を説明し、以後もかかる状況に基づいて本発明を説明するが、本発明の多様な実施形態を多様な形態のプログラムプロダクトとして提供でき、本発明が、実際にその提供されるものを実行するために使用される信号保持媒体の特定のタイプに関らず等しく適用されることは、当業者には理解されよう。信号保持媒体の例としては、揮発性メモリデバイス及び不揮発性メモリデバイス等の記録可能なタイプのメディア、フロッピー(R)及び他のリムーバブルディスク、とりわけハードディスクドライブ、磁気テープ、光学ディスク（例えばＣＤ−ＲＯＭ、ＤＶＤ等）、並びにデジタル及びアナログ通信リンク等の伝送タイプメディアが含まれるが、それらに限定されない。
【００２６】
さらに、以後述べる多様なプログラムコードは、本発明の特定の実施形態において実行される用途に基づいて識別され得る。しかしながら、本発明は、任意の特定のプログラム用語を便宜上使用するだけで、かかる用語によって識別もしくは含意される任意の特定の用途のみにその使用が限定される訳ではないことが理解されるべきである。さらに、コンピュータプログラムがルーチン、手続、方法、モジュール、オブジェクト等に組織化され得る手法は、一般には無数であるばかりでなく、典型的なコンピュータ（例えばオペレーティングシステム、ライブラリ、ＡＰＩ、アプリケーション、アプレット等）内に常駐するソフトウェア層の中でプログラム機能が割り当てられ得る手法も多様であり、当然ながら本発明は、本明細書に述べるプログラム機能の特定の組織化及び割り当てには限定されない。
【００２７】
さらにハードウェアの観点からは、本明細書中に述べるハードウェア・ベースの機能のいずれの機能も典型的に、１つ以上の集積回路デバイスだけでなく追加支援的な電子コンポーネントも具備する回路構成において実行される。また当該分野では周知の通り、集積回路デバイスは一般に１つ以上のコンピュータデータファイルを用いて設計及び製造され、該コンピュータデータファイルに関して、本明細書中では、デバイスにおいて回路の構成のレイアウトを定義するハードウェア定義プログラムとして言及している。プログラムは一般にデザインツールにより生成され、その後に製造中に使用されて半導体ウェハに用いられる回路構成を定義するレイアウトマスクを作成する。一般に、プログラムは、ＶＨＳＬ、ベリログ、ＥＤＩＦ等のハードウェア記述言語（ＨＤＬ）を用いて定義済みフォーマットで提供される。完全に機能する集積回路デバイス及びかかるデバイスを使用するデータ処理システムにおいて回路構成が実行される、という内容に基づき本発明をここまで説明し、以後もかかる内容で本発明を記載するが、本発明による回路構成は多様な形状のプログラムプロダクトとして提供でき、また本発明が、実際にその提供されるものを実行するために使用される信号保持媒体特定のタイプに関らず等しく適用されることが、当業者には理解されよう。
【００２８】
当業者であれば、図１及び図２Ａ〜２Ｃに示す環境の一例が、本発明を制限する意図ではないことを認識されよう。実際、本発明の範囲を逸脱することなく、その他の別のハードウェアおよびソフトウェア環境の少なくとも一方を使用することができることは、当業者には理解されよう。
【００２９】
ここで、ブロック単位の画像回転ルーチン１００の一例の概略をより詳細に示す図３を参照する。例示のルーチンは、任意の形状の画像、画像の回転の中心Ｃ、この回転の中心の回りを回転する所望の回転角度（９０度ずつ増分されるのが一般的である）を含むピクセルの仕様を定めることから始まる。
【００３０】
ルーチン１００は、ピクセル画像の仕様を、オリジナル画像を完全に定義する各々がｍ×ｎ個のピクセルの面積を有する矩形ブロック（ＡｌｙＡｎ）からなる順序付きリストに変換することにより、ブロック１０２で始まる。上記のように、各ブロックリストは一般に、回転の中心点Ｃ（この回りを画像中の各ピクセルが回転する）と所望の回転角度とを含む。ブロックは互いにサイズが等しくても、個々にサイズが異なってもよい。回転ハードウェア資源、システムデータ伝送特性（例えばメモリアクセスバーストサイズ）、メモリ技術（例えばＤＲＡＭ）、及びその他の項目を最適化するように特定のサイズ及び形状のブロックを選択することが望ましい。
【００３１】
さらに、或る画像に対する開始点メモリ及び終了点メモリが同じである場合には、オーバーラップするブロック同士の衝突の可能性を最小化するように、ブロックのリストを順序付けることが望ましい。オーバーラップするブロックは、回転した時に終了点の座標がリスト中の１つ以上の後続のブロックからのピクセルと同じである、１つ以上のピクセルを有するリストからのブロックである。リスト中の後続のブロックとオーバーラップするブロックを識別することは、ブロックリストの処理中の実時間に作成される。ブロックは複数のピクセルを含むと共に、互いに部分的にのみオーバーラップする可能性があるため、単一のオーバーラップブロックは、複数のブロックとオーバーラップする可能性があることが理解されるべきである。
【００３２】
次に、ブロック１０４は順序付きリスト内の各ブロックを処理するループを開始し、全てのブロックが処理された時にルーチンを終了する。このような各ブロックに対して、ブロック１０６はブロックに対する並進ベクトルを生成し、回転中心Ｃの回りで、所望の角度ブロックを回転させる。次にブロック１０８は、所望の回転角度でブロック内の画像データを回転させる。その後ブロック１１０において、ブロック１０６で生成された並進ベクトルをブロックに適用し、ブロックに対する終了点の位置を決定する。次いでこの終了点の位置がアンカー位置として使用され、ブロックをその新しい位置に回転させたブロック１０８において生成された回転画像データを格納する。ブロック１１２は処理されたブロックをリストから除外し、リスト内の未処理のブロックを処理するように、ブロック１０４に制御を戻す。全てのブロックを処理するとリストは空になり、ルーチン１００が完了する。
【００３３】
１つの画像を定義する多様なブロックに対する並進ベクトルの生成及び適用は、以下のように発生し得る。ブロックは各ブロックに対する単一の開始点の位置を表すアンカー位置を割り当てられる。これらのアンカー位置から、ここでは開始点回転ベクトルと称する回転中心Ｃに対するベクトルがブロックに対して定義され得る。ブロックに対する開始点回転ベクトルは、ブロックに対するアンカー位置と回転中心Ｃとの距離を表す１組の（ｘ，ｙ）座標である。言い換えれば、座標（Ｘｎ，Ｙｎ）を有するブロックｎに対して、座標（Ｘｃ，Ｙｃ）を有する回転中心Ｃに対する開始点回転ベクトル（ＸＳｎ，ＹＳｎ）は以下のように計算され得る。
【００３４】
ＸＳｎ＝Ｘｎ−Ｘｃ；及び
ＹＳｎ＝Ｙｎ−Ｙｃ
例えば、図４はＡ１〜Ａ６と表示される複数の２×２ピクセルブロック１２２により定義される画像１２０の一例を示す。ブロックの左上の位置がそのアンカー位置であり、回転中心は座標（８，８）を有すると仮定すると、開始点回転ベクトルがベクトル１２４は表１のように示される。
【００３５】
【表１】
2005539323.tif 000003
表I：開始点回転ベクトルの一例
【００３６】
開始点回転ベクトルＳｎがタプル（ＸＳｎ，ＹＳｎ）を有する場合、回転角度９０度、１８０度、２７０度に対応する終了点回転ベクトルＤａｎはそれぞれ（ＹＳｎ，−ＸＳｎ），（−ＸＳｎ，−ＹＳｎ），（−ＹＳｎ，ＸＳｎ）である。開始点回転ベクトル及び終了点回転ベクトルから、ブロックの開始点の位置からその終了点の位置までの水平方向のピクセル数と垂直方向のピクセル数を定義する並進ベクトルＴａｎを計算することができる。並進ベクトルは以下に定義されるように終了点回転ベクトルと開始点回転ベクトルとの計算上の差である。
【００３７】
９０度回転の場合：
Ｔ９０ｎ＝Ｄ９０ｎ−Ｓｎ＝（ＹＳｎ−ＸＳｎ，−ＸＳｎ−ＹＳｎ）
１８０度回転の場合：
Ｔ１８０ｎ＝Ｄ１８０ｎ−Ｓｎ＝（−ＸＳｎ−ＸＳｎ，−ＹＳｎ−ＹＳｎ）＝（−２ＸＳｎ，−２ＹＳｎ）
２７０度の回転の場合：
Ｔ２７０ｎ＝Ｄ２７０ｎ−Ｓｎ＝（−ＹＳｎ−ＸＳｎ，ＸＳｎ−ＹＳｎ）
【００３８】
各ブロックの終了点座標（Ｘｄｎ，Ｙｄｎ）は、領域と所望の回転角度に対応する並進ベクトルＴａｎとブロックの開始点座標との合計である。９０度の回転の場合、ブロックのアンカー位置に対する終了点座標は以下のようになる：
Ｘｄｎ＝Ｙｎ＋Ｘｃ−Ｙｃ；及び
Ｙｄｎ＝−Ｘｎ＋Ｘｃ＋Ｙｃ
【００３９】
同様に、１８０度回転の場合にはブロックに対する終了点座標は：
Ｘｄｎ＝２Ｘｃ−Ｘｎ；及び
Ｙｄｎ＝２Ｙｃ−Ｙｎ
である。
【００４０】
２７０度回転するブロックの終了点座標は：
Ｘｄｎ＝−Ｙｎ＋Ｘｃ＋Ｙｃ；及び
Ｙｄｎ＝Ｘｎ−Ｘｃ＋Ｙｃ
である。
【００４１】
従って、図４に例示する画像の場合、９０度、１８０度、２７０度の回転に対するブロック終了点座標は、図５の１２０Ａ，１２０Ｂ，１２０Ｃで示され、表IIで以下のように表される：
【００４２】
【表２】
2005539323.tif 000004
表II：ブロックの終了点座標の一例
【００４３】
回転による並進ベクトルに加えて、別個の位置ベクトルも各ブロックの座標に加算され、回転画像はその最終的な終了点の位置に配置される。
【００４４】
上述の基本的なブロック単位の画像回転ルーチン１００は、ブロック間のオーバーラップの可能性はないものと仮定している。しかし、オーバーラップの可能性はあり（例えば開始点メモリと終了点メモリが同一であることによる）、多重回転バッファ（又は単一回転バッファにおける複数のブロックエントリ）を使用して、画像回転中のオーバーラップの処理を容易に行うことが望ましい。例えば、図６は画像回転ルーチン１４０を示す。この画像回転ルーチン１４０は、ＲＢＵＦ＿Ａ及びＲＢＵＦ＿Ｂとして識別されるとともに、共通のフレームバッファが開始点メモリ及び終了点メモリとして使用される実施形態との関連で使用される２つの回転バッファを使用する。ルーチン１４０はまた、一度に最大でも１つのブロックがオーバーラップを生じると仮定する。オーバーラップがさらに生じる可能性がある場合には、回転バッファを追加して使用することが可能であるが、このことは、本開示内容を享受する当業者には明らかであろう。
【００４５】
ルーチン１４０は、フレームバッファ又はその他の開始点メモリからリスト内の第１ブロックに関連するピクセルデータを読み込み、これをＲＢＵＦ＿Ａに格納することにより、ブロック１４２において開始する。ブロック１４４においてＲＢＵＦ＿Ａにおけるピクセルデータは回転し、次いで意図される終了点がリスト内の別のブロックと衝突又はオーバーラップするかどうかを判断するテストが実行される。衝突が生じない場合には、回転したブロックは、回転の中心と所望の回転角度により決定された位置（ブロック１４６において上述の方法で計算される）においてフレームバッファに書き込まれる。次いでブロックはリストから除外され、制御はブロック１４８に移行し、リストが完了したかどうかが判断される。完了していない場合には、制御はブロック１５０に移り、ピクセルデータの次のブロックが読み込まれてピクセルデータが回転し、その後ブロック１４４において新たなブロックと衝突が発生しないかどうかが判断される。衝突が発生せず、リストが完了すると、ルーチン１４０は終了する。
【００４６】
ブロック１４４に戻ると、オーバーラップ衝突が検出されると、ブロック１５２において衝突を起こすブロックのピクセルデータがＲＢＵＦ＿Ｂに読み込まれ、その後回転する。次いで、ブロック１５４においてＲＢＵＦ＿Ａにおける回転データがその終了点に対して書き込まれ、リストから除外される。制御はブロック１５６に移り、ＲＢＵＦ＿Ｂにおけるピクセルデータの意図される終了点がリスト内の別のブロックと衝突又はオーバーラップするか否かが判断される。衝突又はオーバーラップしない場合には、制御はブロック１５８に移行し、回転ブロックが要求通りの終了点の位置でフレームバッファに書き込まれ、当該ブロックはリストから除外される。その後制御はブロック１４８に移行し、必要であればリスト内のさらなるブロックが処理される。
【００４７】
ブロック１５６に戻ると、ＲＢＵＦ＿Ｂにおいてピクセルデータのオーバーラップが検出されると、衝突を起こすブロックからのピクセルデータは、ブロック１６０においてＲＢＵＦ＿Ａに読み込まれ、その後回転する。ＲＢＵＦ＿Ｂにおける回転データはブロック１６２においてその終了点に書き込まれ、リストから除外される。制御はブロック１４４に移行し、ＲＢＵＦ＿Ａにおけるピクセルデータの意図される終了点がリスト内の別のブロックと衝突又はオーバーラップするか否かが判断され、前述した方法で操作が行われる。上記処理シーケンスは、リスト内の全てのブロックが回転及び並進するまで継続する。
【００４８】
次に、ハードウェアとソフトウェアの組み合わせを用いる本発明の或る特定の実行について述べる。ここで示す実行では、ブロックリストの作成、回転の監視及びポインタのイネーブリング、画像データの初期生成等の機能はソフトウェアに割り当てられ、ブロックからの画像データの実際の回転、ブロックリストの処理、メモリへのアクセス等の機能はハードウェアにおいて処理される。しかし、別の実施形態では、ハードウェア及びソフトウェアのその他の区分けを用いることも可能であることが理解されるべきである。
【００４９】
この実行の目的に対しては、画像が汎用オブジェクトの記述により定義される複数のオブジェクトから構成されると仮定する。例えば、本発明のこの実行は、ユーザとの対話を提供するために複合的なデスクトップ画像上にアイコン、ウィンドウ、ツールバー等のオブジェクトが配置されるウインドウズ・ベースのグラフィカルユーザインタフェースにおいて適用可能である。従ってこれらのオブジェクトの各々は、所望のディスプレイを生成するため、要求次第で別個に表示したり組み合わせられたりすることができる。
【００５０】
汎用オブジェクト記述は、図１に参照番号３４で示すメモリ内に記憶され得る。さらに汎用オブジェクトは、例えば異なる状況に対するオブジェクトの異なるレイアウトをサポートするために、異なるビューに対するインスタンスを作成することが可能である。一例として、例えばユーザに対する２つの異なる方向性で配置される手持ちサイズコンピュータをサポートするために、横方向のビューと縦方向のビューとを切り替え可能なディスプレイについて考える。このような状況においては、各ビューの異なるロケーションで要求通りに配置されるオブジェクトのインスタンスを作成して、個別のビューを定義することが望ましい。
【００５１】
多様なビューによるオブジェクトの配置をサポートするため、ここでは一般的な汎用オブジェクト記述に基づいて各ビューに対するオブジェクトを例示する。オブジェクトを特定のビューによる特定的な例示は、特定のオブジェクトがビューのどこにどの角度で位置づけられるかを示す、所定の回転および並進の少なくとも一方である。従ってオブジェクトの各ビュー又は例示は、図１で参照番号３６及び３８で示すように、本明細書中で述べる実施の形態においては、オブジェクトのブロックリストによって示される。
【００５２】
従って図７のルーチン１７０は、複数のオブジェクトからなるマルチビュー画像を生成するように使用される。このマルチビュー画像は各々、特定のビューでの特定の位置付けおよび方向付けの少なくとも一方で配置されるその汎用表現の並進および回転の少なくとも一方を有する。
【００５３】
ルーチン１７０は、例えばオブジェクトを表わす画像データの生成等、第１オブジェクトに対する汎用オブジェクト記述を生成することにより、特定のビューと関連する任意の特定の並進又は回転とは無関係に、ブロック１７２において開始する。
【００５４】
汎用オブジェクト記述が作成されると、ブロック１７４はオブジェクトを矩形ブロックの順序付きリストに分解する。上記の通り、ブロックは要求に応じてサイズが同じであっても異なっていてもよい。ブロックは一般的に、１つの全体的なオブジェクトを網羅するようにレイアウトされるが、この全体的なオブジェクトは矩形である場合もあれば、より一般的には非矩形であることもある。各ブロックのサイズは任意の数の要因に基づいて選択され得る。例えば、グラフィックスハードウェアによってサポートされるバースト長に基づいてデータ伝送性能を最適化するようにブロックのサイズを選択することもできる。ブロックサイズを小さくすれば、開始点メモリの読取りと終了点メモリの書込み中に要求される回転バッファメモリの量が減少する傾向がある。
【００５５】
上述のように、ブロックのリストを作成することに加えて、回転中にブロック同士の間のオーバーラップを最少化するように、ブロックのリストを順序付けすることが望ましい。ブロックがオーバーラップする場合、回転してオーバーラップを生じたブロックのすぐ後に続くブロックリストにおいて、各オーバーラップしたブロックを配置することが望ましい。この順序付けの法則により、ブロックリストの処理が簡便化される。しかし、開始点メモリと終了点メモリが異なる実施形態では、オーバーラップは問題ではなく、例えばページの境界、相対的なメモリアクセス速度、特性の先読み等のメモリの性能等に関するその他の事項をブロックのリストの順序付けに使用することもできる。
【００５６】
オブジェクトが矩形ブロックの順序付きリストに分解されると、制御はブロック１７６に移行してブロックリストヘッダが作成される。ブロックリストヘッダは、例えばリスト内のブロック数、所望の回転角度、開始点メモリと終了点メモリの間のピッチ、回転の中心、位置ベクトル（複合画像上に例示されたオブジェクトを並進するためのｘ，ｙ距離を表す）等を含む、オブジェクトの多数のパラメータを格納する。
【００５７】
次に、ブロック１７８が任意に実行され、ブロックの回転を実行することに対する、回転の所望の角度及び中心に基づく上述の方法により、ブロックリスト内の第１ブロックに対するブロック終了点アドレスが計算される。さらに位置ベクトルが適用され、画像上の特定の並進位置に終了点アドレスが配置される。しかし或る実施形態では、ブロック１７８がルーチン１７０から省略され、グラフィックスエンジン２２による各ブロックの処理中に各ブロックに対する終了点アドレスの計算が動的に実施される。
【００５８】
次にブロック１８０は、回転の結果ブロックによりオーバーラップしたブロック数に等しくなるように、現行ブロックに対するオーバーラップフラグを設定する。多くても１つのブロックのみがオーバーラップする実施形態では、オーバーラップフラグはバイナリフラグであり得る。別の方法では、特定ブロックのオーバーラップフラグに対するゼロ値はオーバーラップがないことを意味し、非ゼロ値は、現行ブロックによりオーバーラップされる順序付きリスト内のその後のブロックの数を示す。
【００５９】
次にブロック１８２は、ブロックの原位置のバックフィルが必要である場合にブロックに対するバックフィルフラグを設定する。詳細には、ブロックリストの分析から、ブロックの回転後にそのブロックの原位置が画像の別のブロックによりカバーされるかどうかが判断される。カバーされない場合には、幾つかの実施形態においてはブロックの原位置において透明色又はバックフィル色等の背景色をペイントすることが望ましい。このように、ブロック１８２は特定ブロックに関連し得る随意的なバックフィル特徴をサポートするものである。
【００６０】
ブロック１８２が完了すると、制御はブロック１８４に移行してルーチン１７０により処理されている現行の順序付きリスト内のさらなるブロックを処理する。さらなるブロックの各々に対して、制御はブロック１７８に戻り当該ブロックに対する終了点アドレスが計算される。順序付きリスト内の全ブロックが処理されると、ブロック１８４は制御をブロック１８６に移行し、現行オブジェクトをさらなるビューで生成する必要があるか否かを判断する。このようなさらなるビューの各々に対して、ブロック１８６はブロック１７４に制御を移行し、新たなビューに対して最適化される矩形ブロックの別の順序付きリストにオブジェクトを分解する。全ビューが処理されると、ブロック１８６はブロック１８８に制御を移行する。
【００６１】
ブロック１８８は作成されるべきオブジェクトが残っているかどうかを判断する。残っている場合には、ブロック１８８はブロック１７２に制御を移行し、新しいオブジェクトに対する新たな汎用オブジェクト記述を作成する。全てのオブジェクトが作成されると、ルーチン１７０は完了する。
【００６２】
以上のように、ルーチン１７０は１つ以上の複合画像を構成することにおいて使用される複数のオブジェクトの多様なビューを作成するために用いられる。一般的に、ルーチン１７０の機能はソフトウェアにおいて実行されるが、アプリケーションソフトウェアのランタイム中に動的に発生されることもあれば、例えば実行される時毎にアプリケーションソフトウェアによって或るオブジェクトのセットが使用されることが分かった際、ソフトウェアアプリケーションの開発中に実行されることもある。
【００６３】
図８及び図９は、図７のルーチン１７０によって生成され得る、一対の順序付きリスト１９０、２００を示す。オブジェクトリスト１９０は、ブロックリスト内の多様なブロックに対して終了点アドレスを動的に生成することのできるグラフィックスエンジンと共に使用されるようにルーチン１７０により生成され得るタイプからなる。オブジェクトリスト１９０はヘッダ１９２を含み、このヘッダ１９２は、リスト内のブロック数、所望の回転角度、回転の中心、ｘｙ座標においてブロックを並進するための量を表す位置ベクトル、及び、異なるサイズのディスプレイをサポートすることを可能にするバッファにおけるコラム数を格納する開始点／終了点ピッチパラメータを表すフィールドを含む。さらに、ヘッダ１９２はメモリ内に格納される次のオブジェクトリストへのリンクを含み得る。
【００６４】
オブジェクトリスト１９０はまた、リスト内の各ブロックに対する識別データを格納する複数のブロックレコード１９４を含む。かかる各ブロックに対して、レコード１９４は未回転の状態のブロックのアンカー位置を示す開始点アドレスと、ｍ×ｎ座標におけるブロックのサイズを表すブロックサイズと、回転時にブロックによりオーバーラップされた他のブロックの数を示すオーバーラップフラグと、回転後に元のブロック位置をバックフィルすべきかどうかを示すバックフィルフラグと、を含む。
【００６５】
一方図９のオブジェクト２００は、グラフィックスエンジンがオブジェクトブロックの終了点アドレスを動的に生成せずに、ルーチン１７０により終了点アドレスが予め生成されオブジェクトリスト自体に格納される状況において使用される。この実行では、ヘッダ２０２はブロックの数、回転角度、開始点／終了点ピッチ、及びもしあれば次のリストへのリンクのみを格納する。一方、各ブロックレコード２０４は、開始点アドレス、ブロックサイズ、オーバーラップフラグ、バックフィルフラグの他に、ルーチン１７０による予め計算された終了点アドレスを格納する。
【００６６】
本発明による方法でオブジェクトリストを表現するためには、実際にはいかなるデータ構造を使用しても良いことが理解されるべきである。従って、本発明は本明細書中で述べる特定のデータ構造に限定されない。
【００６７】
次に図１０は、ルーチン１７０により作成されたブロックリストを処理するために使用されるブロックリスト処理コンポーネントを示す。ここで示す実施形態では、図１０における多様なコンポーネントはハードウェアにおいて実行される。詳細には、開始点メモリ２１０は、ブロック読取プロセス２１２に画像データを供給するように示される。ブロック読取プロセスは次いで回転バッファ／先入れ先出し（ＦＩＦＯ）バッファ２１４にデータを出力し、該バッファ２１４は１つ以上のブロックに対する画像データを格納すると共に、必要に応じてかかる画像データを回転させるために使用される。回転した画像データはブロック書込みプロセス２１６に提供され、該プロセス２１６は終了点メモリ２１８に画像を提供する。バッファ２１４はまた、ＦＩＦＯのフル信号及び空信号をプロセス２１２、２１６に提供する。さらに、プロセス２１６は回転バッファ２１４にピクセルアドレスを提供するが、この使用に関しては以下により詳細に説明する。
【００６８】
ここで示す実施形態では、プロセス２１２、２１６は図１のコントローラ４０のような回転／並進コントローラにおいて実行される。さらに、開始点メモリ２１０と終了点メモリ２１８は別個のメモリであっても、例えば図１のローカルフレームバッファのように同一のメモリであっても良い。
【００６９】
さらに、回転バッファ２１４はブロック毎に画像データのハードウェアに基づいた回転を任意にサポートする。あるいは、ブロックデータの回転は、従来のハードウェア・ベースの画像回転アルゴリズムと同様の方法で、回転バッファデータの非連続的なアクセスを介して提供することもできる。しかし、回転バッファがＳＲＡＭ等の高速メモリにおいて実行される場合には、外部メモリによるパフォーマンスペナルティは、ハードウェア・ベースの回転回路がバッファ２１４に備わっていない場合にも発生する可能性はない。
【００７０】
図１１はブロック読取プロセス２１２をより詳細に示す。プロセス２１２は、開始点メモリから本プロセスへのブロックリストの入力に対するブロックリストヘッダ情報を読み取ることにより、ブロック２２２で開始する。次に、ブロック２２４はブロックリストから第１ブロックに対するブロック記述情報を読み取る。次いでブロック２２６は回転バッファによりＦＩＦＯフル信号がアサートされたかどうかを判断し、ＦＩＦＯがフルでないと判断されればブロック２３０に制御を移行する。
【００７１】
ブロック２３０は、ＦＩＦＯにブロック制御語を書き込む。ブロック制御語は例えば、ブロック記述からの終了点アドレス、ブロックサイズ、オーターラップフラグ、及びバックフィルフラグを含む。次にブロック２３２は開始点メモリからのブロックから画像データを、ブロック記述において特定された開始点／終了点に格納されたものとして読み取る。次いで制御はブロック２３４に移り、ＦＩＦＯが現在フルであるかどうかを確認するためのチェックを行う。ＦＩＦＯがフルでないと判断すると、制御はブロック２３８に移行し、ブロックに対する画像データをＦＩＦＯに書き込む。ブロック２４０は書き込まれる必要のあるデータがブロックにまだ存在するかどうかを判断する。存在しない場合には、制御はブロック２４２に移行し、ブロックリスト内にまだブロックが残っているかどうかを判断する。残っている場合には、ブロック２４２は制御をブロック２２４に移し、リスト内の次のブロックに対するブロック記述を読み取る。残っていなければ、ブロック２４２は制御をブロック２４４に移行し、開始点メモリからオブジェクトを受け取る必要があるかどうかを判断する。受け取る必要がある場合には、制御はブロック２２２に戻り、次のオブジェクトに対するブロックリストヘッダ情報を読み取る。受け取る必要がない場合には、ブロック２４４はルーチン２１２を終結する。
【００７２】
図１２はブロック書込みプロセス２１６を詳細に示す。ルーチン２１６は、ＦＩＦＯから次のブロック制御語を読み取ることによってブロック２５２において開始する。次いで、ブロック２５４はブロック制御語に対するバックフィルフラグが設定されたか否かを判断する。設定されたと判断した場合、制御はブロック２５６に移行し、終了点メモリにおけるブロック開始点アドレスに対して背景色を書き込み、ブロックの原位置に対する画像データがクリアされる。次いで制御はブロック２５８に移り、オーバーラップフラグがゼロに等しいかどうかが判断される。さらに、ブロック２５４に戻って、バックフィルフラグが設定されない場合には、ブロック２５６は迂回され、制御はブロック２５８に直接進む。
【００７３】
オーバーラップフラグがゼロに設定されていない場合には、ブロック２５８はブロック２６０に制御を移行し、オーバーラップしたブロック全てがＦＩＦＯに現在格納されているか否かを判断する。この判断は、例えば順序付きリスト内のｎ個のブロックがＦＩＦＯに受け渡されたかどうかの判断に基づいており、ここでｎは現在の処理ブロックに対するオーバーラップフラグの値である。全てのオーバーラップブロックがＦＩＦＯにない場合には、ブロック２６０は、かかるブロック全てＦＩＦＯに格納されるまで待機する。そこで制御はブロック２６４に移行して、ブロックの終了点アドレスが任意に計算される。かかる計算は、グラフィックスエンジンが動的に生成されたブロック終了点アドレスに対する能力をサポートする実施の形態において発生する。その他の実施形態では、ブロック終了点アドレスは図７のルーチン１７０のような作成ブロックリストルーチンにより計算され、ブロック２６４はプロセス２１６から省略される。
【００７４】
次にブロック２６６はブロックに対する終了点アドレスにブロックの画像データを回転し、書き込みを行う。画像データの回転は、プロセス２１６の出力として示される非連続ピクセルアドレスを選択することによりプロセス２１６の制御の下で発生しても、或いは、単にＦＩＦＯに回転角度が提供された時のＦＩＦＯ２１４の出力の結果であってもよい。両方の場合において、終了点メモリに書き込まれたデータは終了点メモリの書込み性能を最適化するデータ幅を用いて順番に書き込まれる。
【００７５】
次にブロック２６８は、ＦＩＦＯ２１４からＦＩＦＯ空信号をポーリングすることによりＦＩＦＯが空であるか否かを判断する。空である場合には、ブロック２６８は空でない状態を待ち、ブロック２７２に制御を移行してＦＩＦＯ内のさらなるデータがさらなるブロックデータであるかどうかを判断する。そうでない場合には、制御はブロック２５２に戻りＦＩＦＯから次のブロック制御語を読み取る。
【００７６】
したがって、プロセッサ２１２、２１６の相互作用を通して、別のブロックの回転によりオーバーラップすることのできるブロックは、その終了点アドレスへのオーバーラップブロックの書込みの前に、ＦＩＦＯへロードされなければならない。
【００７７】
上述したように、プロセッサ２１６のブロック２６６における終了点アドレスへのブロックの画像データの書込みは、本発明による多くの方法で発生することができる。例えば、図１３は回転バッファアドレス生成回路３００の一例を示す。かかる回路３００はプロセッサ２１６により使用され、回転バッファ２１４内のブロックからピクセルを非連続的に読み取ることにより、ピクセルアドレスを生成することができる。
【００７８】
回路３００は一対のアップカウンタ３０２及びダウンカウンタ３０４を含み、これらはそれぞれマルチプレクサ３０６及び加算器３０８に出力する。カウンタ３０２は回転前の画像のブロックにおける横列の数を表す値ｎを入力として受信するＭｏｄ−ｎカウンタである。カウンタ３０４は回転前の画像データのブロックにおける縦列の数を表す値ｍを入力として受信するＭｏｄ−ｍカウンタである。各カウンタ３０２、３０４はそれぞれ、ｎＣｎｔＵｐ信号及びｍＣｎｔＵｐ信号により制御され、これらの信号はバイナリ１に設定されるとカウンタをカウントアップさせ、バイナリ０に設定されるとカウンタダウンさせる。上述のように、カウンタ３０２の出力はマルチプレクサ３０６への出力であり、ｍの値によりカウンタ３０２の出力を乗算し、その結果は加算器３０８に提供されて、カウンタ３０４の出力と合計される。加算器３０８の出力は回転バッファから読取りを行うために使用されるアドレスであり、画像データのブロックへのインデックスとして機能する。
【００７９】
各カウンタ３０２、３０４はまたキャリーイン（ＣＩ）入力及びキャリーアウト（ＣＯ）出力を含む。カウンタ３０４のＣＯ出力はＡＮＤゲート３１０の１つの入力に結合され、ＡＮＤゲート３１０の他の入力はｎＣｎｔｒＭＳ信号を受信するように結合され、ＡＮＤゲート３１０の出力はカウンタ３０２のＣＩ入力に結合される。カウンタ３０２のＣＯ出力は別のＡＮＤゲート３１２の１つの入力に結合され、ＡＮＤゲート３１２の他の入力はｍＣｎｔｒＭＳ信号を受信するように結合され、ＡＮＤゲート３１２の出力はカウンタ３０４のＣＩ入力に結合される。ｎＣｎｔｒＭＳ信号及びｍＣｎｔｒＭＳ信号は相互排他的手法でアサートされ、カウンタ３０２と３０４のどちらが回転バッファアドレスの最上位ビットを表しているかを制御するように使用される。
【００８０】
回路３００を用いた回転バッファへの適切な非連続的読取りを達成するために、制御信号ｎＣｎｔｒＭＳ及びｍＣｎｔｒＭＳ、及びｍＣｎｔｒＵｐは、回転の所望の角度に基づいて、表IIIで以下に示すように設定される。
【００８１】
【表３】
2005539323.tif 000005
表III：回転バッファアドレス生成回路制御設定
【００８２】
カウンタがカウントアップするように構成されている場合には、カウンタは値０に初期化される。一方、カウンタがカウントダウンするように構成されている場合には、カウンタは最大値（例えばカウンタ３０２の場合ｎ−１）に初期化される。
【００８３】
回路３００の動作の一例を示すものとして、以下に示す表IVは回転角度９０度、１８０度、２７０度に対して４×３ブロック（ｍ＝４、ｎ＝３）を例として回路３００により生成されるアドレス値を示す。非回転状態でブロックが左から右、上から下へと読み取られ、アドレス値は０(上左)から１１（下右）である。
【００８４】
【表４】
2005539323.tif 000006
表IV：４×３ブロックに対する回転バッファ読取りアドレス
【００８５】
プロセス２１６のブロック２６６において回転バッファから画像データを書き出すと、終了点メモリへの連続的な書込みが実行され、これによりプロセスは終了点メモリの典型的なバースト力を利用できることが理解されるべきである。カウンタ及びコンパレータの集合体が回転後のブロックの方向付けにより適切に書込みアドレスを増分することにより、書込みアドレスが生成され得る。例えば、以下の表Ｖは上記と同じ４×３ブロックサイズに対する終了点メモリへの書込みに対して生成される書込みアドレスのシーケンスを示しており、終了点アドレスを１００、終了点ピッチを４８０としている。
【００８６】
【表５】
2005539323.tif 000007
表Ｖ：４×３ブロックに対する終了点メモリの書込みアドレス
【００８７】
上記のように、ブロックがリスト中に順序付けされる方法は、資源のオーバーヘッド及び本発明による画像回転の効率の両方に大きく影響する可能性がある。このことを示すために、図１４は回転中心Ｃの回りで回転する１セットの１２個のブロックＡ−１〜Ａ−１２を含むオブジェクト２８０の一例を示す。かかるオブジェクトはｎ−アレイのツリーデータ構造の形態でブロックリストを表わすことが望ましく、ブロックＡ−１〜Ａ−１２はツリーデータ構造におけるノードとして示される。図７〜図１３で示す実施形態では、各ブロックはオブジェクトリストに対して定義されたツリー構造に基づいて、左〜右の横型順序付けで開始点メモリからＦＩＦＯへと読み取られる。同様に、各ブロックはその従属するもの全てがＦＩＦＯ内に格納された後にのみ、その終了点の位置に書き込まれる。図１４のオブジェクト２８０におけるブロックの集まりの場合、多数の異なるツリーデータ構造を用いて、順序付きオブジェクトリストにおけるブロックの相互依存性を表すことができる。
【００８８】
例えば図１５は、回転中心Ｃの回りで９０度回転させた結果生成され得る、ツリーデータ構造２９０の一例を示す。このツリー構造の下では、ブロックＡ１がブロックＡ２，Ａ４，Ａ６，Ａ８とオーバーラップするように示され、同様にブロックＡ２がブロックＡ９，Ａ１０，Ａ１１，Ａ１２とオーバーラップするように示されている。かかる構成の下で、これらのブロックが図１０のプロセッサ２１２，２１６によりＦＩＦＯにロードされ、ＦＩＦＯから書き出されるロード／格納（Ｌ／Ｓ）及び順序を以下に示す：
Ｌ１，Ｌ２，Ｌ４，Ｌ６，Ｌ８，Ｓ１，Ｌ９，Ｌ１０，Ｌ１１，Ｌ１２，Ｓ２，Ｓ４，Ｓ６，Ｓ８，Ｓ９，Ｓ１０，Ｓ１１，Ｓ１２，Ｌ３，Ｓ３，Ｌ５，Ｓ５，Ｌ７，Ｓ７
【００８９】
このシーケンスにおいて注目すべきは、ブロックＡ２が終了点メモリに記憶される前に、ＦＩＦＯ２１４が８個のブロック（Ａ２，Ａ４，Ａ６，Ａ８，Ａ９，Ａ１０，Ａ１１，及びＡ１２）を格納する必要があることである。従って、画像データに値する８個のブロックを格納するためには、最小のＦＩＦＯサイズでも十分である。
【００９０】
対照的に、図１６で示すツリーデータ構造２９２は、図１４のオブジェクト２８０に対して同一のオブジェクトリストを表すために使用され得るものである。注目すべきは、ツリーデータ構造２９２において、ブロックＡ２，Ａ４，Ａ６，Ａ８が再配列されており、この配列では、これらのブロックはオーバーラップブロックＡ９，１０，Ａ１１，Ａ１２のみを有することができる。このようにツリーを再配列することにより、プロセッサ２１２及び２１６によるＦＩＦＯに対するロード／格納の順序付けは以下の通りである：
Ｌ１，Ｌ８，Ｌ６，Ｌ４，Ｌ２，Ｓ１，Ｌ９，Ｓ８，Ｌ１０，Ｓ６，Ｌ１１，Ｓ４，Ｌ１２，Ｓ２，Ｓ９，Ｓ１０，Ｓ１１，Ｓ１２，Ｌ３，Ｓ３，Ｌ５，Ｓ５，Ｌ７，Ｓ７
【００９１】
この構成では、任意の所与の時間にわずか５つのブロックさえＦＩＦＯ内に残っていればよいことに留意されたい。このように、より小さいＦＩＦＯを用いて、ツリーデータ構造２９２対ツリーデータ構造２９０を処理することが可能である。
【００９２】
ここに記載する実施形態は、従来のソフトウェア技術及びハードウェア技術を超える多くの利点を提供する。上記のように、従来のソフトウェア技術は回転した画像の各ピクセルに対してマトリクスによる乗算を必要とするのが一般的であるが、それでは計算のための資源を大幅に消費する可能性があり、より重要なこととして、モバイル及び携帯用デバイスの場合には、大幅に電力を消費することとなる。対照的に、本明細書に記載の方法で実行する場合には、加速化ハードウェアを備える回転バッファ内で回転を実行することができ、管理可能なサイズのブロックでの画像の回転が簡便化される。多様なディスプレイの方向付けをサポートする必要のあるモバイル及び情報家電に適用する場合には、異なるブロックリストを用いることにより単一の画像から作成されるアプリケーション及び幾つかの方向付けに対して単一のフレームバッファ画像を作成することができるため、ソフトウェアの開発時間を減少できる。
【００９３】
また、フレームバッファの不連続アクセスを実行する従来のハードウェアの手法では、フレームバッファを用いてサポートされるメモリのタイプ及びバス構成が著しく制限される。例えばＤＲＡＭにおいてフレームバッファを実行するならば、不連続アドレスからピクセルデータをアクセスする際、性能に不利な重大な条件が加わるであろう。本来回転動作は不連続のデータアクセスを生じるが、ここに記載したバッファ内で回転を実行することにより、不連続アクセスの多くが削減される。また、従来のハードウェアの手法は、クロマキー（ブルースクリーン）及びフィルタリング／スケーリング等の他の２Ｄグラフィクス操作とうまく統合されない傾向がある。ここに記載した方法は２Ｄグラフィクス操作のようにフレームバッファ内のデータに直接実行されることができるため、他の２Ｄ機能とも容易に統合でき、同一のハードウェア資源（例えば回転操作を実行するのに必要なバッファ等）の幾つかを共有することができる。フレームバッファの不連続アクセスに基づく従来のハードウェアの手法は、表示電子回路によってピクセルが処理される正確な順序でディスプレイ制御装置にピクセルを出力することを要求することに制約される。本明細書に記載する方法は、同様の制約を受けることはなく、例えば任意のサイズおよび形状の少なくとも一方の画像の回転をサポートすることができる。
【００９４】
さらに、任意の形状の画像をサポートするため、本明細書に記載するアルゴリズムは、画像が本来矩形であるという仮定に基づいて画像が処理される場合には、従来のアルゴリズム以上の性能を発揮する。詳細には、画像は矩形の境界線により囲まれる場合、相当量の空白部を含むため、従来のアルゴリズムによって画像を回転させると、不必要な画像データを回転させてしまう可能性がある。対照的に、本実施形態に記載した方法では任意の形状の画像を回転させることができ、オブジェクトリストは重要な画像データのみに境界付けするように定義されるため、ブロック数対矩形領域が減少され、画像データの回転に関連する処理のオーバーヘッドの減少が可能である。
【００９５】
開示された以外の利点及びその変更は、本明細書で開示した内容を享受する当業者には明らかであろう。本発明は添付の請求の範囲に記載される。
【図面の簡単な説明】
【００９６】
【図１】本発明によるブロック単位の画像回転を実行する装置のブロック図。
【図２Ａ】本発明によるブロック単位の画像回転とともに用いられるのに適した、それぞれ異なる開始点／終了点メモリ構成を示すブロック図。
【図２Ｂ】本発明によるブロック単位の画像回転とともに用いられるのに適した、それぞれ異なる開始点／終了点メモリ構成を示すブロック図。
【図２Ｃ】本発明によるブロック単位の画像回転とともに用いられるのに適した、それぞれ異なる開始点／終了点メモリ構成を示すブロック図。
【図３】図１の装置による実行され得る画像回転ルーチンの一例における基本的な操作を示すフローチャート。
【図４】図３のルーチンを使用する回転の中心点の回りで回転する画像の一例を示すブロック図。
【図５】図４の画像を回転の中心点の回りを９０度、１８０度、及び２７０度回転させたブロック図。
【図６】１つの画像中のブロック同士の間のオーバーラップを処理するための、図３とは別の画像回転ルーチンを示すフローチャート。
【図７】図１の装置により実行可能な作成ブロックリストルーチンを示すフローチャート。
【図８】図７のルーチンによって生成され得る、ブロック終了点アドレスの動的生成とともに使用するのに適した、ブロックリストデータ構造の一例を示すブロック図。
【図９】図７のルーチンによって生成され得るとともに、予め格納されたブロック終了点アドレスと組み合わせて使用するのに適した、ブロックリストデータ構造の別の例を示すブロック図。
【図１０】図１の装置における開始点メモリと終了点メモリとの間のデータフローを示すブロック図。
【図１１】図１０で示すブロック読取プロセスのプログラムフローを示すフローチャート。
【図１２】図１０で示すブロック書込みプロセスのプログラムフローを示すフローチャート。
【図１３】図１２のブロック書込みプロセスで使用する回転バッファアドレス計算回路の一例を示すブロック図。
【図１４】図１の装置を用いて回転の中心の回りを回転する画像の別の例を示すブロック図。
【図１５】図１４の例の画像に対する、ブロックの順序付けの一例を示すツリーグラフ。
【図１６】図１４の例の画像に対する、ブロックの順序付けの別の例を示すツリーグラフ。
【図１】
2005539323.tif 000008
2005539323.tif 000009
【図３】
2005539323.tif 000010
【図４】
2005539323.tif 000011
【図５】
2005539323.tif 000012
【図６】
2005539323.tif 000013
【図７】
2005539323.tif 000014
【図８】
2005539323.tif 000015
【図９】
2005539323.tif 000016
【図１０】
2005539323.tif 000017
【図１１】
2005539323.tif 000018
【図１２】
2005539323.tif 000019
【図１３】
2005539323.tif 000020
【図１４】
2005539323.tif 000021
【図１５】
2005539323.tif 000022
【図１６】
2005539323.tif 000023
【国際調査報告】
2005539323.tif 000024
2005539323.tif 000025
2005539323.tif 000026
2005539323.tif 000027