JP4578241B2 - 任意形状画像のブロック単位の回転 - Google Patents

任意形状画像のブロック単位の回転 Download PDF

Info

Publication number
JP4578241B2
JP4578241B2 JP2004537397A JP2004537397A JP4578241B2 JP 4578241 B2 JP4578241 B2 JP 4578241B2 JP 2004537397 A JP2004537397 A JP 2004537397A JP 2004537397 A JP2004537397 A JP 2004537397A JP 4578241 B2 JP4578241 B2 JP 4578241B2
Authority
JP
Japan
Prior art keywords
block
rotation
blocks
image data
buffer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004537397A
Other languages
English (en)
Other versions
JP2005539323A5 (ja
JP2005539323A (ja
Inventor
ケビン、ロッカー
ジャドソン、レーマン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NXP BV
Original Assignee
NXP BV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=31992229&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP4578241(B2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by NXP BV filed Critical NXP BV
Publication of JP2005539323A publication Critical patent/JP2005539323A/ja
Publication of JP2005539323A5 publication Critical patent/JP2005539323A5/ja
Application granted granted Critical
Publication of JP4578241B2 publication Critical patent/JP4578241B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/60Rotation of whole images or parts thereof
    • G06T3/606Rotation of whole images or parts thereof by memory addressing or mapping

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)
  • Editing Of Facsimile Originals (AREA)

Description

本発明は概してデジタル画像データの操作に関し、詳細には画像データの回転に関する。
コンピュータや他のデータ処理システムにおける図形データ或いは画像データの処理は、相当量のメモリとプロセッサ資源を必要とするため、コンピュータを利用した場合には非常に費用がかかることが多い。多くのデータ処理システムでは、画像はピクセルエレメント又は「ピクセル」アレイによって表され、各ピクセルは、各ピクセルにおいて表すことのできるカラーバリエーションの総数を定義する「色の深み」を有している。画像の解像度および色の深みの少なくとも一方が増すにつれ、知覚される画像の質も良くなり、そのことは写実性、正確性、画質、画像鮮度等に反映され得る。従って、解像度および色の深み少なくとも一方を増大させるように画像をデータ処理システムでサポートすることが要求され続けている。
一般的な法則として、画像の解像度および色の深み少なくとも一方が増すほど、画像を表現するのに必要な画像データの量も増す。さらに、画像データを表現するのに使用される画像データの量が増すほど、画像の格納、伝送及び操作に必要なコンピュータ資源の量も増大する。
一般にかなりの量のコンピュータ資源を必要とする図形操作の特定のタイプの1つは、画像の回転である。例えばディスプレイ、ファックス、コピー、印刷の目的で横長および縦長に画像を変換することにおいて、画像の回転は多くの利点を有する。また、CAD、図形デザイン、画像処理並びに他のビデオ及び図形制作環境では、画像の回転を使用して、ユーザの作成したドキュメントの画像データを操作することは頻繁にあることである。さらに、携帯用の電子デバイスがより普及するにつれ、デバイスにおける多くの形状を受け入れるよう、様々な視角で画像を表示できる、よりフレキシブルなディスプレイの必要性も生じるであろう。
従来の画像回転アルゴリズムはソフトウェアにおいて実行され、コンピュータを利用した場合に費用のかかる多数のマトリックス変換操作を含むのが一般的である。かかるアルゴリズムは一般的に、フレームバッファに格納される全体画像等の矩形の画像を用いた操作に制限される。さらに、かかるマトリックス変換の実行にはコンピューティング資源が相当量必要であるため、ソフトウェア・ベースのアルゴリズムの多くは、例えば携帯用デバイスや、ワイヤレス遠隔通信デバイス、デジタルカメラ等の低出力機器での使用にはあまり適していない。
多くのソフトウェア・ベースのアルゴリズムの過大な資源要求を処理するため、特殊なハードウェアを用いて幾つかの画像回転機能を実行する試みがなされてきた。例えば、ディスプレイ上で90度回転した画像を効果的に生成するため、フレームバッファを行毎ではなく列毎に読み出すように、フレームバッファに不連続のアクセスを行うよう特殊化したメモリアクセスを使用することもある。しかし、メモリバッファに不連続のアクセスを行うことは多くの場合効果がなく、例えばメモリキャッシュ、プリフェッチ回路等の他の性能向上回路を迂回する可能性もあるため、性能に悪影響を及ぼすおそれがある。さらに、かかるハードウェアの加速化はしばしば、非常に特殊な用途に限定され、特別なサイズの矩形画像のみに対する作用に限定されることが多い。
従来の画像回転アルゴリズムを矩形画像に焦点を置いて適用することは多くの用途において大抵は十分であるが、用途によってはこのように焦点を置くことが画像回転処理中に無効となることもある。例えば従来の画像回転アルゴリズムを用いた場合、かかるアルゴリズムによる処理に対して、画像は矩形領域を境界としなければならない。1つの画像中の適切な(非背景)画像データが全く矩形でない場合、このような領域に矩形の境界を付けることで、相当量の余白データ又は背景データが発生する可能性がある。しかし従来の画像回転アルゴリズムでは、画像データが1つの画像に対して密接な関係を有している場合や、かかる画像データが背景色を構成している場合を判断できないため、矩形領域中の全ての画像データが略同様に処理されることとなる。従って、実際に回転する画像に特別関係のない画像データを回転するために、かなりの処理資源が費やされる可能性がある。
従って、様々な用途にわたって幅広く適用可能でフレキシブルな画像回転アルゴリズムが極めて必要とされている。特に、画像の多様なサイズと形状を含む様々なタイプの画像と共に使用することができ、多様なハードウェアおよびソフトウェア少なくとも一方の能力を有するデータ処理システムに適用可能な画像回転アルゴリズムが必要とされている。
本発明は、ブロック単位の方法を用いて画像データを回転させる装置、プログラムプロダクト、及び方法を提供することにより、従来技術に関連する上記及びその他の問題を解決する。前記ブロック単位の方法では、画像を定義する画像データの複数のブロックの各々に対して並進ベクトルを適用し、前記ブロックを回転ポイントの回りで所望の回転角度で並進、例えばブロックのアンカー位置を開始ポイントから終了ポイントへと並進させる。さらに、ブロック内の画像データを所望の回転角度によって回転、例えば、回転した画像データがブロックの終了ポイントに格納されると、ブロック内の画像データは所望の位置で効果的に回転する。
さらに、本発明による幾つかの実施形態では、画像データのオーバーラップしたブロックを一時的に格納することにより、画像データのブロックの回転を簡易化するために、回転バッファを用いることもある。多くの場合、そのようにすることで、画像の回転はメモリ内の原位置で実行されるため、画像の回転中に別の開始点メモリと終了点メモリを設ける必要性を排除できる。
本発明を特徴づける上記及びその他の利点及び特徴は、添付の請求の範囲に記載され、発明のさらなる部分を形成する。しかし、本発明とその利用を通じて得られる利点及び目的をより良く理解するため、図面及び本発明を例示する実施の形態を記載した以下の記述を参照されたい。
ここで示す本発明の実施形態は、ブロック単位の画像回転を実行し、電子デバイスにおける画像データの高速且つ有効な回転を簡易化する。以下の記載からより明らかになるように、本明細書中に記載する実施形態は、低コストおよび低出力用途の少なくとも一方を含む、多くの用途に対応することができるように、ハードウェア及びソフトウェアにおける異なる範囲まで実行されることが多いため、例えばPDA、携帯電話等の手持ち式及びワイヤレスの遠隔通信デバイスにおいて望ましいものである。さらに、本明細書に記載する実施形態は矩形画像からの画像データを回転するように用いられているが、画像自体の境界線或いは画像を定義するように使用されるブロックの境界線が非矩形の形状を有する非矩形画像を含む、あらゆる任意の形状の画像に対して本発明の原理を適用することができる。
以下の記載から明らかになるように、本発明による実施形態は、複数のブロックで編成された画像データを処理することによって画像を回転する。個々の各ブロックに対して並進ベクトルを適用し、回転ポイントの回りを所望の回転角度でブロックを並進させる。さらに、一般には専用の回転加速化回路を備える回転バッファを使用することにより、各ブロック内の画像データを所望の回転角度分回転させる。ブロックの並進とブロック内の画像データの回転とを組み合わせることにより、画像データのブロックを、その所望の位置で効果的に回転させる。
ここで図面を参照するが、同じ部材には複数の図面にわたって同じ番号を付与している。図1は本発明によるブロック単位の画像回転を実行する装置10のハードウェア及びソフトウェア環境を示す。本発明の目的のために、装置10は実際にはクライアントコンピュータ、サーバコンピュータ、ポータブルコンピュータ、携帯サイズのコンピュータ、組み込みコントローラ等を含む任意のタイプのコンピュータ、コンピュータシステム、或いは他のプログラム可能な電子デバイスを示すことが可能である。さらに、装置10は例えばクラスタ若しくは他の分散コンピュータシステムにおいて1つ以上のネットワークコンピュータを用いて実行可能である。「装置」という用語は本発明によるその他の適切なプログラム可能な電子デバイスを含み得るが、装置10は以後「コンピュータ」と呼ぶこともある。
コンピュータ10は典型的にはシステムバス12を含み、かかるシステムバス12は、メモリ16と結合する1つ以上のマイクロプロセッサを含む中央処理ユニット(CPU)14に結合される。メモリ16は、コンピュータ10の主記憶装置を含むランダムアクセスメモリ(RAM)を示しても、キャッシュメモリ、不揮発性又はバックアップメモリ(例えばプログラム可能メモリ又はフラッシュメモリ)、読取専用メモリ等の任意の補助レベルのメモリを示してもよい。さらに、メモリ16はコンピュータ10内の別の場所に物理的に位置される記憶装置、例えばCPU14のプロセッサ内の任意のキャッシュメモリや、例えば大容量記憶装置上又はコンピュータ10に結合される別のコンピュータ上に格納される仮想メモリとして使用される任意の記憶容量を含むと考えることもできる。
さらに、システムバス12には記憶制御装置18が結合され、該記憶制御装置18は、フロッピー(R)又はその他のリムーバブルディスクドライブ、ハードディスクドライブ、ダイレクトアクセス記憶デバイス(DASD)、光学デバイス(例えばCDドライブ、DVDドライブ等)およびテープ装置の不揮発性記憶装置の種々のソースへのアクセスを提供するように使用される。さらに、コンピュータ10はまた、1つ以上の外部ネットワーク(例えばとりわけLAN、WAN、ワイヤレスネットワーク、およびインターネットの少なくとも1つ)とのインタフェースを提供するネットワークコントローラ20を含み得る。またコンピュータ10は一般的に、例えばとりわけキーボード、マウス、トラックボール、ジョイスティック、タッチパッド、およびマイクの少なくとも1つを介して、ユーザからの入力を受信する。ユーザに対する情報の表示は、例えばCRTモニタ、LCDディスプレイパネル等のディスプレイ24を駆動するグラフィックスエンジン22を含むグラフィックスシステムを通して行われるのが一般的である。ネットワークコントローラ20を介して別のコンピュータ或いは端末から、及び別のコンピュータ或いは端末へと、更なるユーザの入力及び出力を送受信することが可能である。
本発明によるブロック単位の画像回転を実行するために、コンピュータ10では多様なハードウェアコンポーネント及びソフトウェアコンポーネントの組み合わせを使用する。詳細には、グラフィックスエンジン22は、コンピュータ10においてグラフィックス又はビデオアダプタカード上に配置されるグラフックスコントローラとして使用される。メモリ16のプログラム空間に存在するように示されるオペレーティングシステム26は、コンピュータ内で入出力操作の多くを処理するディスプレイドライバ28を含む、多様なデバイスドライバを使用する。ディスプレイドライバ28は具体的には、グラフィックスエンジン22と共に使用されるように編成され、ブロック単位の画像回転と協働するソフトウェア・ベースの機能の多くが発生するのはディスプレイドライバにおいてである。
ディスプレイドライバ28における機能は一般的に、1つ以上のアプリケーションプログラム30によりアクセスされ、技術的に良く知られたプロセスで、ディスプレイ24上に所望の画像データを最終的に描画又はペイントする。かかる動作と関連して、ディスプレイドライバ28は一般的に、メモリ16のデータ空間に常駐するように示される1つ以上のバーチャルフレームバッファ32において、表示される所望の画像を構築する。
本発明によるブロック単位の画像回転と関連して使用される多様な追加のソフトウェアコンポーネントもメモリ16内に示されており、それらには、汎用オブジェクト記述装置34、及び複数のビューA...Xに対して定義される複数のオブジェクトブロックリスト36、38が含まれる。
ハードウェアの観点から見ると、グラフィックスエンジン22は、回転/並進コントローラ40、ローカルフレームバッファ42及び回転バッファ44を含む多くのハードウェアコンポーネントに依存する。コントローラ40は、画像データの回転及び並進のハードウェア処理を管理するために使用される。ローカルフレームバッファ42は、ディスプレイ24を駆動するために別のコントローラにより読み出される画像データを記憶するように使用される高速メモリである。回転バッファ44は画像データを一時的に記憶するように使用され、多くの周知の画像データ回転回路のいずれかを使用して記憶された画像データを回転させる回転促進回路を含み得る。ここで述べる実施形態では各側が数個のピクセルのみからなるブロックサイズを処理するが、幾つかの実施形態では所与のブロック中の画像データのハードウェア・ベースの回転を使用して、比較的単純でコンパクトなハードウェア回路において極めて高速の回転を提供することができる。
以下の記載から明らかになるように、本発明によるブロック単位の画像回転は、回転バッファを使用して、開始点メモリ内に記憶した画像データを回転し、終了点メモリにおいて回転した画像データを記憶することが可能である。正確にどのハードウェアコンポーネントが開始点メモリ及び終了点メモリに対して使用されるかは実施形態により異なるが、図1に示すコンピュータ10の形態でサポートすることができる。
例えば図2Aに示すように、回転バッファ50と共に使用される開始点メモリ及び終了点メモリの両メモリは外部メモリ52を用いて実行され、例えばバーチャルフレームバッファに格納された画像データの回転をサポートすることができる。さらに、画像データが読み出され再度書き込まれる外部メモリの特定の領域は同一であっても異なっても良く、以下に詳述するオーバーラップに対する処理は開始点領域と終了点領域が同一である例を使用する。
代替例では図2Bに示すように、回転バッファ54は外部メモリ56を開始点メモリとして使用し、ローカルフレームバッファ58を終了点メモリとして使用することができる。さらに別の実施形態では、例えば図2Cで示すように、回転バッファ60は画像回転に関する使用に対し、ローカルフレームバッファ62を開始点メモリと終了点メモリの両目的で使用することが可能である。他の形状の開始点メモリ及び終了点メモリを、本発明とともに使用することが可能である。
再度図1を参照する。本開示内容を享受する当業者には十分に理解されるが、本発明によるグラフィックスエンジン22は、多様な2D及び3D処理エンジンを含むその他の機能を備えてもよい。さらに、ハートウェアコンポーネントとソフトウェアコンポーネントのその他の組み合わせを用いて、本明細書中に述べる本発明によるブロック単位の回転機能を実行してもよい。従って、本発明はここで述べる特定の実行に限定されない。
一般にソフトウェアの観点から、本発明の多様な実施形態で使用する機能のいずれかを提供するように実行されるルーチンは、動作システム或いは特定の用途、コンポーネント、プログラム、オブジェクト、モジュール又は命令のシーケンスの一環として、又はそれらの一部として実行されるに関らず、本明細書中では「コンピュータプログラムコード」又は単純に「プログラムコード」と呼ぶ。プログラムコードは一般的に、コンピュータ内の多様なメモリ及び記憶デバイスにおいて様々な時に存在する1つ以上の命令を含み、コンピュータ内の1つ以上のプロセッサにより読み出されて実行される際に、本発明の多様な態様を実施するステップ又はエレメントを実行するのに必要なステップをコンピュータに実行させる。さらに、ここまでは完全に機能するコンピュータ及びコンピュータシステムの状況に基づき本発明を説明し、以後もかかる状況に基づいて本発明を説明するが、本発明の多様な実施形態を多様な形態のプログラムプロダクトとして提供でき、本発明が、実際にその提供されるものを実行するために使用される信号保持媒体の特定のタイプに関らず等しく適用されることは、当業者には理解されよう。信号保持媒体の例としては、揮発性メモリデバイス及び不揮発性メモリデバイス等の記録可能なタイプのメディア、フロッピー(R)及び他のリムーバブルディスク、とりわけハードディスクドライブ、磁気テープ、光学ディスク(例えばCD−ROM、DVD等)、並びにデジタル及びアナログ通信リンク等の伝送タイプメディアが含まれるが、それらに限定されない。
さらに、以後述べる多様なプログラムコードは、本発明の特定の実施形態において実行される用途に基づいて識別され得る。しかしながら、本発明は、任意の特定のプログラム用語を便宜上使用するだけで、かかる用語によって識別もしくは含意される任意の特定の用途のみにその使用が限定される訳ではないことが理解されるべきである。さらに、コンピュータプログラムがルーチン、手続、方法、モジュール、オブジェクト等に組織化され得る手法は、一般には無数であるばかりでなく、典型的なコンピュータ(例えばオペレーティングシステム、ライブラリ、API、アプリケーション、アプレット等)内に常駐するソフトウェア層の中でプログラム機能が割り当てられ得る手法も多様であり、当然ながら本発明は、本明細書に述べるプログラム機能の特定の組織化及び割り当てには限定されない。
さらにハードウェアの観点からは、本明細書中に述べるハードウェア・ベースの機能のいずれの機能も典型的に、1つ以上の集積回路デバイスだけでなく追加支援的な電子コンポーネントも具備する回路構成において実行される。また当該分野では周知の通り、集積回路デバイスは一般に1つ以上のコンピュータデータファイルを用いて設計及び製造され、該コンピュータデータファイルに関して、本明細書中では、デバイスにおいて回路の構成のレイアウトを定義するハードウェア定義プログラムとして言及している。プログラムは一般にデザインツールにより生成され、その後に製造中に使用されて半導体ウェハに用いられる回路構成を定義するレイアウトマスクを作成する。一般に、プログラムは、VHSL、ベリログ、EDIF等のハードウェア記述言語(HDL)を用いて定義済みフォーマットで提供される。完全に機能する集積回路デバイス及びかかるデバイスを使用するデータ処理システムにおいて回路構成が実行される、という内容に基づき本発明をここまで説明し、以後もかかる内容で本発明を記載するが、本発明による回路構成は多様な形状のプログラムプロダクトとして提供でき、また本発明が、実際にその提供されるものを実行するために使用される信号保持媒体特定のタイプに関らず等しく適用されることが、当業者には理解されよう。
当業者であれば、図1及び図2A〜2Cに示す環境の一例が、本発明を制限する意図ではないことを認識されよう。実際、本発明の範囲を逸脱することなく、その他の別のハードウェアおよびソフトウェア環境の少なくとも一方を使用することができることは、当業者には理解されよう。
ここで、ブロック単位の画像回転ルーチン100の一例の概略をより詳細に示す図3を参照する。例示のルーチンは、任意の形状の画像、画像の回転の中心C、この回転の中心の回りを回転する所望の回転角度(90度ずつ増分されるのが一般的である)を含むピクセルの仕様を定めることから始まる。
ルーチン100は、ピクセル画像の仕様を、オリジナル画像を完全に定義する各々がm×n個のピクセルの面積を有する矩形ブロック(AlyAn)からなる順序付きリストに変換することにより、ブロック102で始まる。上記のように、各ブロックリストは一般に、回転の中心点C(この回りを画像中の各ピクセルが回転する)と所望の回転角度とを含む。ブロックは互いにサイズが等しくても、個々にサイズが異なってもよい。回転ハードウェア資源、システムデータ伝送特性(例えばメモリアクセスバーストサイズ)、メモリ技術(例えばDRAM)、及びその他の項目を最適化するように特定のサイズ及び形状のブロックを選択することが望ましい。
さらに、或る画像に対する開始点メモリ及び終了点メモリが同じである場合には、オーバーラップするブロック同士の衝突の可能性を最小化するように、ブロックのリストを順序付けることが望ましい。オーバーラップするブロックは、回転した時に終了点の座標がリスト中の1つ以上の後続のブロックからのピクセルと同じである、1つ以上のピクセルを有するリストからのブロックである。リスト中の後続のブロックとオーバーラップするブロックを識別することは、ブロックリストの処理中の実時間に作成される。ブロックは複数のピクセルを含むと共に、互いに部分的にのみオーバーラップする可能性があるため、単一のオーバーラップブロックは、複数のブロックとオーバーラップする可能性があることが理解されるべきである。
次に、ブロック104は順序付きリスト内の各ブロックを処理するループを開始し、全てのブロックが処理された時にルーチンを終了する。このような各ブロックに対して、ブロック106はブロックに対する並進ベクトルを生成し、回転中心Cの回りで、所望の角度ブロックを回転させる。次にブロック108は、所望の回転角度でブロック内の画像データを回転させる。その後ブロック110において、ブロック106で生成された並進ベクトルをブロックに適用し、ブロックに対する終了点の位置を決定する。次いでこの終了点の位置がアンカー位置として使用され、ブロックをその新しい位置に回転させたブロック108において生成された回転画像データを格納する。ブロック112は処理されたブロックをリストから除外し、リスト内の未処理のブロックを処理するように、ブロック104に制御を戻す。全てのブロックを処理するとリストは空になり、ルーチン100が完了する。
1つの画像を定義する多様なブロックに対する並進ベクトルの生成及び適用は、以下のように発生し得る。ブロックは各ブロックに対する単一の開始点の位置を表すアンカー位置を割り当てられる。これらのアンカー位置から、ここでは開始点回転ベクトルと称する回転中心Cに対するベクトルがブロックに対して定義され得る。ブロックに対する開始点回転ベクトルは、ブロックに対するアンカー位置と回転中心Cとの距離を表す1組の(x,y)座標である。言い換えれば、座標(X,Y)を有するブロックnに対して、座標(X,Y)を有する回転中心Cに対する開始点回転ベクトル(XSn,YSn)は以下のように計算され得る。
Sn=X−X;及び
Sn=Y−Y
例えば、図4はA1〜A6と表示される複数の2×2ピクセルブロック122により定義される画像120の一例を示す。ブロックの左上の位置がそのアンカー位置であり、回転中心は座標(8,8)を有すると仮定すると、開始点回転ベクトルがベクトル124は表1のように示される。
Figure 0004578241
表I:開始点回転ベクトルの一例
開始点回転ベクトルSnがタプル(XSn,YSn)を有する場合、回転角度90度、180度、270度に対応する終了点回転ベクトルDanはそれぞれ(YSn,−XSn),(−XSn,−YSn),(−YSn,XSn)である。開始点回転ベクトル及び終了点回転ベクトルから、ブロックの開始点の位置からその終了点の位置までの水平方向のピクセル数と垂直方向のピクセル数を定義する並進ベクトルTanを計算することができる。並進ベクトルは以下に定義されるように終了点回転ベクトルと開始点回転ベクトルとの計算上の差である。
90度回転の場合:
T90n=D90n−Sn=(YSn−XSn,−XSn−YSn
180度回転の場合:
T180n=D180n−Sn=(−XSn−XSn,−YSn−YSn)=(−2XSn,−2YSn
270度の回転の場合:
T270n=D270n−Sn=(−YSn−XSn,XSn−YSn
各ブロックの終了点座標(Xdn,Ydn)は、領域と所望の回転角度に対応する並進ベクトルTanとブロックの開始点座標との合計である。90度の回転の場合、ブロックのアンカー位置に対する終了点座標は以下のようになる:
dn=Y+X−Y;及び
dn=−X+X+Y
同様に、180度回転の場合にはブロックに対する終了点座標は:
dn=2X−X;及び
dn=2Y−Y
である。
270度回転するブロックの終了点座標は:
dn=−Y+X+Y;及び
dn=X−X+Y
である。
従って、図4に例示する画像の場合、90度、180度、270度の回転に対するブロック終了点座標は、図5の120A,120B,120Cで示され、表IIで以下のように表される:
Figure 0004578241
表II:ブロックの終了点座標の一例
回転による並進ベクトルに加えて、別個の位置ベクトルも各ブロックの座標に加算され、回転画像はその最終的な終了点の位置に配置される。
上述の基本的なブロック単位の画像回転ルーチン100は、ブロック間のオーバーラップの可能性はないものと仮定している。しかし、オーバーラップの可能性はあり(例えば開始点メモリと終了点メモリが同一であることによる)、多重回転バッファ(又は単一回転バッファにおける複数のブロックエントリ)を使用して、画像回転中のオーバーラップの処理を容易に行うことが望ましい。例えば、図6は画像回転ルーチン140を示す。この画像回転ルーチン140は、RBUF_A及びRBUF_Bとして識別されるとともに、共通のフレームバッファが開始点メモリ及び終了点メモリとして使用される実施形態との関連で使用される2つの回転バッファを使用する。ルーチン140はまた、一度に最大でも1つのブロックがオーバーラップを生じると仮定する。オーバーラップがさらに生じる可能性がある場合には、回転バッファを追加して使用することが可能であるが、このことは、本開示内容を享受する当業者には明らかであろう。
ルーチン140は、フレームバッファ又はその他の開始点メモリからリスト内の第1ブロックに関連するピクセルデータを読み込み、これをRBUF_Aに格納することにより、ブロック142において開始する。ブロック144においてRBUF_Aにおけるピクセルデータは回転し、次いで意図される終了点がリスト内の別のブロックと衝突又はオーバーラップするかどうかを判断するテストが実行される。衝突が生じない場合には、回転したブロックは、回転の中心と所望の回転角度により決定された位置(ブロック146において上述の方法で計算される)においてフレームバッファに書き込まれる。次いでブロックはリストから除外され、制御はブロック148に移行し、リストが完了したかどうかが判断される。完了していない場合には、制御はブロック150に移り、ピクセルデータの次のブロックが読み込まれてピクセルデータが回転し、その後ブロック144において新たなブロックと衝突が発生しないかどうかが判断される。衝突が発生せず、リストが完了すると、ルーチン140は終了する。
ブロック144に戻ると、オーバーラップ衝突が検出されると、ブロック152において衝突を起こすブロックのピクセルデータがRBUF_Bに読み込まれ、その後回転する。次いで、ブロック154においてRBUF_Aにおける回転データがその終了点に対して書き込まれ、リストから除外される。制御はブロック156に移り、RBUF_Bにおけるピクセルデータの意図される終了点がリスト内の別のブロックと衝突又はオーバーラップするか否かが判断される。衝突又はオーバーラップしない場合には、制御はブロック158に移行し、回転ブロックが要求通りの終了点の位置でフレームバッファに書き込まれ、当該ブロックはリストから除外される。その後制御はブロック148に移行し、必要であればリスト内のさらなるブロックが処理される。
ブロック156に戻ると、RBUF_Bにおいてピクセルデータのオーバーラップが検出されると、衝突を起こすブロックからのピクセルデータは、ブロック160においてRBUF_Aに読み込まれ、その後回転する。RBUF_Bにおける回転データはブロック162においてその終了点に書き込まれ、リストから除外される。制御はブロック144に移行し、RBUF_Aにおけるピクセルデータの意図される終了点がリスト内の別のブロックと衝突又はオーバーラップするか否かが判断され、前述した方法で操作が行われる。上記処理シーケンスは、リスト内の全てのブロックが回転及び並進するまで継続する。
次に、ハードウェアとソフトウェアの組み合わせを用いる本発明の或る特定の実行について述べる。ここで示す実行では、ブロックリストの作成、回転の監視及びポインタのイネーブリング、画像データの初期生成等の機能はソフトウェアに割り当てられ、ブロックからの画像データの実際の回転、ブロックリストの処理、メモリへのアクセス等の機能はハードウェアにおいて処理される。しかし、別の実施形態では、ハードウェア及びソフトウェアのその他の区分けを用いることも可能であることが理解されるべきである。
この実行の目的に対しては、画像が汎用オブジェクトの記述により定義される複数のオブジェクトから構成されると仮定する。例えば、本発明のこの実行は、ユーザとの対話を提供するために複合的なデスクトップ画像上にアイコン、ウィンドウ、ツールバー等のオブジェクトが配置されるウインドウズ・ベースのグラフィカルユーザインタフェースにおいて適用可能である。従ってこれらのオブジェクトの各々は、所望のディスプレイを生成するため、要求次第で別個に表示したり組み合わせられたりすることができる。
汎用オブジェクト記述は、図1に参照番号34で示すメモリ内に記憶され得る。さらに汎用オブジェクトは、例えば異なる状況に対するオブジェクトの異なるレイアウトをサポートするために、異なるビューに対するインスタンスを作成することが可能である。一例として、例えばユーザに対する2つの異なる方向性で配置される手持ちサイズコンピュータをサポートするために、横方向のビューと縦方向のビューとを切り替え可能なディスプレイについて考える。このような状況においては、各ビューの異なるロケーションで要求通りに配置されるオブジェクトのインスタンスを作成して、個別のビューを定義することが望ましい。
多様なビューによるオブジェクトの配置をサポートするため、ここでは一般的な汎用オブジェクト記述に基づいて各ビューに対するオブジェクトを例示する。オブジェクトを特定のビューによる特定的な例示は、特定のオブジェクトがビューのどこにどの角度で位置づけられるかを示す、所定の回転および並進の少なくとも一方である。従ってオブジェクトの各ビュー又は例示は、図1で参照番号36及び38で示すように、本明細書中で述べる実施の形態においては、オブジェクトのブロックリストによって示される。
従って図7のルーチン170は、複数のオブジェクトからなるマルチビュー画像を生成するように使用される。このマルチビュー画像は各々、特定のビューでの特定の位置付けおよび方向付けの少なくとも一方で配置されるその汎用表現の並進および回転の少なくとも一方を有する。
ルーチン170は、例えばオブジェクトを表わす画像データの生成等、第1オブジェクトに対する汎用オブジェクト記述を生成することにより、特定のビューと関連する任意の特定の並進又は回転とは無関係に、ブロック172において開始する。
汎用オブジェクト記述が作成されると、ブロック174はオブジェクトを矩形ブロックの順序付きリストに分解する。上記の通り、ブロックは要求に応じてサイズが同じであっても異なっていてもよい。ブロックは一般的に、1つの全体的なオブジェクトを網羅するようにレイアウトされるが、この全体的なオブジェクトは矩形である場合もあれば、より一般的には非矩形であることもある。各ブロックのサイズは任意の数の要因に基づいて選択され得る。例えば、グラフィックスハードウェアによってサポートされるバースト長に基づいてデータ伝送性能を最適化するようにブロックのサイズを選択することもできる。ブロックサイズを小さくすれば、開始点メモリの読取りと終了点メモリの書込み中に要求される回転バッファメモリの量が減少する傾向がある。
上述のように、ブロックのリストを作成することに加えて、回転中にブロック同士の間のオーバーラップを最少化するように、ブロックのリストを順序付けすることが望ましい。ブロックがオーバーラップする場合、回転してオーバーラップを生じたブロックのすぐ後に続くブロックリストにおいて、各オーバーラップしたブロックを配置することが望ましい。この順序付けの法則により、ブロックリストの処理が簡便化される。しかし、開始点メモリと終了点メモリが異なる実施形態では、オーバーラップは問題ではなく、例えばページの境界、相対的なメモリアクセス速度、特性の先読み等のメモリの性能等に関するその他の事項をブロックのリストの順序付けに使用することもできる。
オブジェクトが矩形ブロックの順序付きリストに分解されると、制御はブロック176に移行してブロックリストヘッダが作成される。ブロックリストヘッダは、例えばリスト内のブロック数、所望の回転角度、開始点メモリと終了点メモリの間のピッチ、回転の中心、位置ベクトル(複合画像上に例示されたオブジェクトを並進するためのx,y距離を表す)等を含む、オブジェクトの多数のパラメータを格納する。
次に、ブロック178が任意に実行され、ブロックの回転を実行することに対する、回転の所望の角度及び中心に基づく上述の方法により、ブロックリスト内の第1ブロックに対するブロック終了点アドレスが計算される。さらに位置ベクトルが適用され、画像上の特定の並進位置に終了点アドレスが配置される。しかし或る実施形態では、ブロック178がルーチン170から省略され、グラフィックスエンジン22による各ブロックの処理中に各ブロックに対する終了点アドレスの計算が動的に実施される。
次にブロック180は、回転の結果ブロックによりオーバーラップしたブロック数に等しくなるように、現行ブロックに対するオーバーラップフラグを設定する。多くても1つのブロックのみがオーバーラップする実施形態では、オーバーラップフラグはバイナリフラグであり得る。別の方法では、特定ブロックのオーバーラップフラグに対するゼロ値はオーバーラップがないことを意味し、非ゼロ値は、現行ブロックによりオーバーラップされる順序付きリスト内のその後のブロックの数を示す。
次にブロック182は、ブロックの原位置のバックフィルが必要である場合にブロックに対するバックフィルフラグを設定する。詳細には、ブロックリストの分析から、ブロックの回転後にそのブロックの原位置が画像の別のブロックによりカバーされるかどうかが判断される。カバーされない場合には、幾つかの実施形態においてはブロックの原位置において透明色又はバックフィル色等の背景色をペイントすることが望ましい。このように、ブロック182は特定ブロックに関連し得る随意的なバックフィル特徴をサポートするものである。
ブロック182が完了すると、制御はブロック184に移行してルーチン170により処理されている現行の順序付きリスト内のさらなるブロックを処理する。さらなるブロックの各々に対して、制御はブロック178に戻り当該ブロックに対する終了点アドレスが計算される。順序付きリスト内の全ブロックが処理されると、ブロック184は制御をブロック186に移行し、現行オブジェクトをさらなるビューで生成する必要があるか否かを判断する。このようなさらなるビューの各々に対して、ブロック186はブロック174に制御を移行し、新たなビューに対して最適化される矩形ブロックの別の順序付きリストにオブジェクトを分解する。全ビューが処理されると、ブロック186はブロック188に制御を移行する。
ブロック188は作成されるべきオブジェクトが残っているかどうかを判断する。残っている場合には、ブロック188はブロック172に制御を移行し、新しいオブジェクトに対する新たな汎用オブジェクト記述を作成する。全てのオブジェクトが作成されると、ルーチン170は完了する。
以上のように、ルーチン170は1つ以上の複合画像を構成することにおいて使用される複数のオブジェクトの多様なビューを作成するために用いられる。一般的に、ルーチン170の機能はソフトウェアにおいて実行されるが、アプリケーションソフトウェアのランタイム中に動的に発生されることもあれば、例えば実行される時毎にアプリケーションソフトウェアによって或るオブジェクトのセットが使用されることが分かった際、ソフトウェアアプリケーションの開発中に実行されることもある。
図8及び図9は、図7のルーチン170によって生成され得る、一対の順序付きリスト190、200を示す。オブジェクトリスト190は、ブロックリスト内の多様なブロックに対して終了点アドレスを動的に生成することのできるグラフィックスエンジンと共に使用されるようにルーチン170により生成され得るタイプからなる。オブジェクトリスト190はヘッダ192を含み、このヘッダ192は、リスト内のブロック数、所望の回転角度、回転の中心、xy座標においてブロックを並進するための量を表す位置ベクトル、及び、異なるサイズのディスプレイをサポートすることを可能にするバッファにおけるコラム数を格納する開始点/終了点ピッチパラメータを表すフィールドを含む。さらに、ヘッダ192はメモリ内に格納される次のオブジェクトリストへのリンクを含み得る。
オブジェクトリスト190はまた、リスト内の各ブロックに対する識別データを格納する複数のブロックレコード194を含む。かかる各ブロックに対して、レコード194は未回転の状態のブロックのアンカー位置を示す開始点アドレスと、m×n座標におけるブロックのサイズを表すブロックサイズと、回転時にブロックによりオーバーラップされた他のブロックの数を示すオーバーラップフラグと、回転後に元のブロック位置をバックフィルすべきかどうかを示すバックフィルフラグと、を含む。
一方図9のオブジェクト200は、グラフィックスエンジンがオブジェクトブロックの終了点アドレスを動的に生成せずに、ルーチン170により終了点アドレスが予め生成されオブジェクトリスト自体に格納される状況において使用される。この実行では、ヘッダ202はブロックの数、回転角度、開始点/終了点ピッチ、及びもしあれば次のリストへのリンクのみを格納する。一方、各ブロックレコード204は、開始点アドレス、ブロックサイズ、オーバーラップフラグ、バックフィルフラグの他に、ルーチン170による予め計算された終了点アドレスを格納する。
本発明による方法でオブジェクトリストを表現するためには、実際にはいかなるデータ構造を使用しても良いことが理解されるべきである。従って、本発明は本明細書中で述べる特定のデータ構造に限定されない。
次に図10は、ルーチン170により作成されたブロックリストを処理するために使用されるブロックリスト処理コンポーネントを示す。ここで示す実施形態では、図10における多様なコンポーネントはハードウェアにおいて実行される。詳細には、開始点メモリ210は、ブロック読取プロセス212に画像データを供給するように示される。ブロック読取プロセスは次いで回転バッファ/先入れ先出し(FIFO)バッファ214にデータを出力し、該バッファ214は1つ以上のブロックに対する画像データを格納すると共に、必要に応じてかかる画像データを回転させるために使用される。回転した画像データはブロック書込みプロセス216に提供され、該プロセス216は終了点メモリ218に画像を提供する。バッファ214はまた、FIFOのフル信号及び空信号をプロセス212、216に提供する。さらに、プロセス216は回転バッファ214にピクセルアドレスを提供するが、この使用に関しては以下により詳細に説明する。
ここで示す実施形態では、プロセス212、216は図1のコントローラ40のような回転/並進コントローラにおいて実行される。さらに、開始点メモリ210と終了点メモリ218は別個のメモリであっても、例えば図1のローカルフレームバッファのように同一のメモリであっても良い。
さらに、回転バッファ214はブロック毎に画像データのハードウェアに基づいた回転を任意にサポートする。あるいは、ブロックデータの回転は、従来のハードウェア・ベースの画像回転アルゴリズムと同様の方法で、回転バッファデータの非連続的なアクセスを介して提供することもできる。しかし、回転バッファがSRAM等の高速メモリにおいて実行される場合には、外部メモリによるパフォーマンスペナルティは、ハードウェア・ベースの回転回路がバッファ214に備わっていない場合にも発生する可能性はない。
図11はブロック読取プロセス212をより詳細に示す。プロセス212は、開始点メモリから本プロセスへのブロックリストの入力に対するブロックリストヘッダ情報を読み取ることにより、ブロック222で開始する。次に、ブロック224はブロックリストから第1ブロックに対するブロック記述情報を読み取る。次いでブロック226は回転バッファによりFIFOフル信号がアサートされたかどうかを判断し、FIFOがフルでないと判断されればブロック230に制御を移行する。
ブロック230は、FIFOにブロック制御語を書き込む。ブロック制御語は例えば、ブロック記述からの終了点アドレス、ブロックサイズ、オーターラップフラグ、及びバックフィルフラグを含む。次にブロック232は開始点メモリからのブロックから画像データを、ブロック記述において特定された開始点/終了点に格納されたものとして読み取る。次いで制御はブロック234に移り、FIFOが現在フルであるかどうかを確認するためのチェックを行う。FIFOがフルでないと判断すると、制御はブロック238に移行し、ブロックに対する画像データをFIFOに書き込む。ブロック240は書き込まれる必要のあるデータがブロックにまだ存在するかどうかを判断する。存在しない場合には、制御はブロック242に移行し、ブロックリスト内にまだブロックが残っているかどうかを判断する。残っている場合には、ブロック242は制御をブロック224に移し、リスト内の次のブロックに対するブロック記述を読み取る。残っていなければ、ブロック242は制御をブロック244に移行し、開始点メモリからオブジェクトを受け取る必要があるかどうかを判断する。受け取る必要がある場合には、制御はブロック222に戻り、次のオブジェクトに対するブロックリストヘッダ情報を読み取る。受け取る必要がない場合には、ブロック244はルーチン212を終結する。
図12はブロック書込みプロセス216を詳細に示す。ルーチン216は、FIFOから次のブロック制御語を読み取ることによってブロック252において開始する。次いで、ブロック254はブロック制御語に対するバックフィルフラグが設定されたか否かを判断する。設定されたと判断した場合、制御はブロック256に移行し、終了点メモリにおけるブロック開始点アドレスに対して背景色を書き込み、ブロックの原位置に対する画像データがクリアされる。次いで制御はブロック258に移り、オーバーラップフラグがゼロに等しいかどうかが判断される。さらに、ブロック254に戻って、バックフィルフラグが設定されない場合には、ブロック256は迂回され、制御はブロック258に直接進む。
オーバーラップフラグがゼロに設定されていない場合には、ブロック258はブロック260に制御を移行し、オーバーラップしたブロック全てがFIFOに現在格納されているか否かを判断する。この判断は、例えば順序付きリスト内のn個のブロックがFIFOに受け渡されたかどうかの判断に基づいており、ここでnは現在の処理ブロックに対するオーバーラップフラグの値である。全てのオーバーラップブロックがFIFOにない場合には、ブロック260は、かかるブロック全てFIFOに格納されるまで待機する。そこで制御はブロック264に移行して、ブロックの終了点アドレスが任意に計算される。かかる計算は、グラフィックスエンジンが動的に生成されたブロック終了点アドレスに対する能力をサポートする実施の形態において発生する。その他の実施形態では、ブロック終了点アドレスは図7のルーチン170のような作成ブロックリストルーチンにより計算され、ブロック264はプロセス216から省略される。
次にブロック266はブロックに対する終了点アドレスにブロックの画像データを回転し、書き込みを行う。画像データの回転は、プロセス216の出力として示される非連続ピクセルアドレスを選択することによりプロセス216の制御の下で発生しても、或いは、単にFIFOに回転角度が提供された時のFIFO214の出力の結果であってもよい。両方の場合において、終了点メモリに書き込まれたデータは終了点メモリの書込み性能を最適化するデータ幅を用いて順番に書き込まれる。
次にブロック268は、FIFO214からFIFO空信号をポーリングすることによりFIFOが空であるか否かを判断する。空である場合には、ブロック268は空でない状態を待ち、ブロック272に制御を移行してFIFO内のさらなるデータがさらなるブロックデータであるかどうかを判断する。そうでない場合には、制御はブロック252に戻りFIFOから次のブロック制御語を読み取る。
したがって、プロセッサ212、216の相互作用を通して、別のブロックの回転によりオーバーラップすることのできるブロックは、その終了点アドレスへのオーバーラップブロックの書込みの前に、FIFOへロードされなければならない。
上述したように、プロセッサ216のブロック266における終了点アドレスへのブロックの画像データの書込みは、本発明による多くの方法で発生することができる。例えば、図13は回転バッファアドレス生成回路300の一例を示す。かかる回路300はプロセッサ216により使用され、回転バッファ214内のブロックからピクセルを非連続的に読み取ることにより、ピクセルアドレスを生成することができる。
回路300は一対のアップカウンタ302及びダウンカウンタ304を含み、これらはそれぞれマルチプレクサ306及び加算器308に出力する。カウンタ302は回転前の画像のブロックにおける横列の数を表す値nを入力として受信するMod−nカウンタである。カウンタ304は回転前の画像データのブロックにおける縦列の数を表す値mを入力として受信するMod−mカウンタである。各カウンタ302、304はそれぞれ、nCntUp信号及びmCntUp信号により制御され、これらの信号はバイナリ1に設定されるとカウンタをカウントアップさせ、バイナリ0に設定されるとカウンタダウンさせる。上述のように、カウンタ302の出力はマルチプレクサ306への出力であり、mの値によりカウンタ302の出力を乗算し、その結果は加算器308に提供されて、カウンタ304の出力と合計される。加算器308の出力は回転バッファから読取りを行うために使用されるアドレスであり、画像データのブロックへのインデックスとして機能する。
各カウンタ302、304はまたキャリーイン(CI)入力及びキャリーアウト(CO)出力を含む。カウンタ304のCO出力はANDゲート310の1つの入力に結合され、ANDゲート310の他の入力はnCntrMS信号を受信するように結合され、ANDゲート310の出力はカウンタ302のCI入力に結合される。カウンタ302のCO出力は別のANDゲート312の1つの入力に結合され、ANDゲート312の他の入力はmCntrMS信号を受信するように結合され、ANDゲート312の出力はカウンタ304のCI入力に結合される。nCntrMS信号及びmCntrMS信号は相互排他的手法でアサートされ、カウンタ302と304のどちらが回転バッファアドレスの最上位ビットを表しているかを制御するように使用される。
回路300を用いた回転バッファへの適切な非連続的読取りを達成するために、制御信号nCntrMS及びmCntrMS、及びmCntrUpは、回転の所望の角度に基づいて、表IIIで以下に示すように設定される。
Figure 0004578241
表III:回転バッファアドレス生成回路制御設定
カウンタがカウントアップするように構成されている場合には、カウンタは値0に初期化される。一方、カウンタがカウントダウンするように構成されている場合には、カウンタは最大値(例えばカウンタ302の場合n−1)に初期化される。
回路300の動作の一例を示すものとして、以下に示す表IVは回転角度90度、180度、270度に対して4×3ブロック(m=4、n=3)を例として回路300により生成されるアドレス値を示す。非回転状態でブロックが左から右、上から下へと読み取られ、アドレス値は0(上左)から11(下右)である。
Figure 0004578241
表IV:4×3ブロックに対する回転バッファ読取りアドレス
プロセス216のブロック266において回転バッファから画像データを書き出すと、終了点メモリへの連続的な書込みが実行され、これによりプロセスは終了点メモリの典型的なバースト力を利用できることが理解されるべきである。カウンタ及びコンパレータの集合体が回転後のブロックの方向付けにより適切に書込みアドレスを増分することにより、書込みアドレスが生成され得る。例えば、以下の表Vは上記と同じ4×3ブロックサイズに対する終了点メモリへの書込みに対して生成される書込みアドレスのシーケンスを示しており、終了点アドレスを100、終了点ピッチを480としている。
Figure 0004578241
表V:4×3ブロックに対する終了点メモリの書込みアドレス
上記のように、ブロックがリスト中に順序付けされる方法は、資源のオーバーヘッド及び本発明による画像回転の効率の両方に大きく影響する可能性がある。このことを示すために、図14は回転中心Cの回りで回転する1セットの12個のブロックA−1〜A−12を含むオブジェクト280の一例を示す。かかるオブジェクトはn−アレイのツリーデータ構造の形態でブロックリストを表わすことが望ましく、ブロックA−1〜A−12はツリーデータ構造におけるノードとして示される。図7〜図13で示す実施形態では、各ブロックはオブジェクトリストに対して定義されたツリー構造に基づいて、左〜右の横型順序付けで開始点メモリからFIFOへと読み取られる。同様に、各ブロックはその従属するもの全てがFIFO内に格納された後にのみ、その終了点の位置に書き込まれる。図14のオブジェクト280におけるブロックの集まりの場合、多数の異なるツリーデータ構造を用いて、順序付きオブジェクトリストにおけるブロックの相互依存性を表すことができる。
例えば図15は、回転中心Cの回りで90度回転させた結果生成され得る、ツリーデータ構造290の一例を示す。このツリー構造の下では、ブロックA1がブロックA2,A4,A6,A8とオーバーラップするように示され、同様にブロックA2がブロックA9,A10,A11,A12とオーバーラップするように示されている。かかる構成の下で、これらのブロックが図10のプロセッサ212,216によりFIFOにロードされ、FIFOから書き出されるロード/格納(L/S)及び順序を以下に示す:
L1,L2,L4,L6,L8,S1,L9,L10,L11,L12,S2,S4,S6,S8,S9,S10,S11,S12,L3,S3,L5,S5,L7,S7
このシーケンスにおいて注目すべきは、ブロックA2が終了点メモリに記憶される前に、FIFO214が8個のブロック(A2,A4,A6,A8,A9,A10,A11,及びA12)を格納する必要があることである。従って、画像データに値する8個のブロックを格納するためには、最小のFIFOサイズでも十分である。
対照的に、図16で示すツリーデータ構造292は、図14のオブジェクト280に対して同一のオブジェクトリストを表すために使用され得るものである。注目すべきは、ツリーデータ構造292において、ブロックA2,A4,A6,A8が再配列されており、この配列では、これらのブロックはオーバーラップブロックA9,10,A11,A12のみを有することができる。このようにツリーを再配列することにより、プロセッサ212及び216によるFIFOに対するロード/格納の順序付けは以下の通りである:
L1,L8,L6,L4,L2,S1,L9,S8,L10,S6,L11,S4,L12,S2,S9,S10,S11,S12,L3,S3,L5,S5,L7,S7
この構成では、任意の所与の時間にわずか5つのブロックさえFIFO内に残っていればよいことに留意されたい。このように、より小さいFIFOを用いて、ツリーデータ構造292対ツリーデータ構造290を処理することが可能である。
ここに記載する実施形態は、従来のソフトウェア技術及びハードウェア技術を超える多くの利点を提供する。上記のように、従来のソフトウェア技術は回転した画像の各ピクセルに対してマトリクスによる乗算を必要とするのが一般的であるが、それでは計算のための資源を大幅に消費する可能性があり、より重要なこととして、モバイル及び携帯用デバイスの場合には、大幅に電力を消費することとなる。対照的に、本明細書に記載の方法で実行する場合には、加速化ハードウェアを備える回転バッファ内で回転を実行することができ、管理可能なサイズのブロックでの画像の回転が簡便化される。多様なディスプレイの方向付けをサポートする必要のあるモバイル及び情報家電に適用する場合には、異なるブロックリストを用いることにより単一の画像から作成されるアプリケーション及び幾つかの方向付けに対して単一のフレームバッファ画像を作成することができるため、ソフトウェアの開発時間を減少できる。
また、フレームバッファの不連続アクセスを実行する従来のハードウェアの手法では、フレームバッファを用いてサポートされるメモリのタイプ及びバス構成が著しく制限される。例えばDRAMにおいてフレームバッファを実行するならば、不連続アドレスからピクセルデータをアクセスする際、性能に不利な重大な条件が加わるであろう。本来回転動作は不連続のデータアクセスを生じるが、ここに記載したバッファ内で回転を実行することにより、不連続アクセスの多くが削減される。また、従来のハードウェアの手法は、クロマキー(ブルースクリーン)及びフィルタリング/スケーリング等の他の2Dグラフィクス操作とうまく統合されない傾向がある。ここに記載した方法は2Dグラフィクス操作のようにフレームバッファ内のデータに直接実行されることができるため、他の2D機能とも容易に統合でき、同一のハードウェア資源(例えば回転操作を実行するのに必要なバッファ等)の幾つかを共有することができる。フレームバッファの不連続アクセスに基づく従来のハードウェアの手法は、表示電子回路によってピクセルが処理される正確な順序でディスプレイ制御装置にピクセルを出力することを要求することに制約される。本明細書に記載する方法は、同様の制約を受けることはなく、例えば任意のサイズおよび形状の少なくとも一方の画像の回転をサポートすることができる。
さらに、任意の形状の画像をサポートするため、本明細書に記載するアルゴリズムは、画像が本来矩形であるという仮定に基づいて画像が処理される場合には、従来のアルゴリズム以上の性能を発揮する。詳細には、画像は矩形の境界線により囲まれる場合、相当量の空白部を含むため、従来のアルゴリズムによって画像を回転させると、不必要な画像データを回転させてしまう可能性がある。対照的に、本実施形態に記載した方法では任意の形状の画像を回転させることができ、オブジェクトリストは重要な画像データのみに境界付けするように定義されるため、ブロック数対矩形領域が減少され、画像データの回転に関連する処理のオーバーヘッドの減少が可能である。
開示された以外の利点及びその変更は、本明細書で開示した内容を享受する当業者には明らかであろう。本発明は添付の請求の範囲に記載される。
本発明によるブロック単位の画像回転を実行する装置のブロック図。 本発明によるブロック単位の画像回転とともに用いられるのに適した、それぞれ異なる開始点/終了点メモリ構成を示すブロック図。 本発明によるブロック単位の画像回転とともに用いられるのに適した、それぞれ異なる開始点/終了点メモリ構成を示すブロック図。 本発明によるブロック単位の画像回転とともに用いられるのに適した、それぞれ異なる開始点/終了点メモリ構成を示すブロック図。 図1の装置による実行され得る画像回転ルーチンの一例における基本的な操作を示すフローチャート。 図3のルーチンを使用する回転の中心点の回りで回転する画像の一例を示すブロック図。 図4の画像を回転の中心点の回りを90度、180度、及び270度回転させたブロック図。 1つの画像中のブロック同士の間のオーバーラップを処理するための、図3とは別の画像回転ルーチンを示すフローチャート。 図1の装置により実行可能な作成ブロックリストルーチンを示すフローチャート。 図7のルーチンによって生成され得る、ブロック終了点アドレスの動的生成とともに使用するのに適した、ブロックリストデータ構造の一例を示すブロック図。 図7のルーチンによって生成され得るとともに、予め格納されたブロック終了点アドレスと組み合わせて使用するのに適した、ブロックリストデータ構造の別の例を示すブロック図。 図1の装置における開始点メモリと終了点メモリとの間のデータフローを示すブロック図。 図10で示すブロック読取プロセスのプログラムフローを示すフローチャート。 図10で示すブロック書込みプロセスのプログラムフローを示すフローチャート。 図12のブロック書込みプロセスで使用する回転バッファアドレス計算回路の一例を示すブロック図。 図1の装置を用いて回転の中心の回りを回転する画像の別の例を示すブロック図。 図14の例の画像に対する、ブロックの順序付けの一例を示すツリーグラフ。 図14の例の画像に対する、ブロックの順序付けの別の例を示すツリーグラフ。

Claims (52)

  1. 画像を定義する画像データの複数のブロックの各々に対して画像データを回転する方法であって、
    (a) 前記ブロックに並進ベクトルを適用して回転ポイントを中心とする所望の回転角度で前記ブロックを並進させ、
    (b) 前記所望の回転角度により前記ブロック内で前記画像データを回転させ、
    前記複数のブロックが順序付きリスト内に配列され、並進したブロックが前記複数のブロック中の別のブロックとオーバーラップするか否かを判断し、オーバーラップすると判断した場合に、オーバーラップしたブロックを回転バッファにコピーする、画像データを回転する方法。
  2. 前記回転ポイントが、前記複数のブロックに共通であり、前記並進ベクトルの適用が、前記回転ポイントと前記ブロックのアンカー位置との間の距離を示す開始点回転ベクトルを生成することを含むことを特徴とする、請求項1に記載の方法。
  3. 前記並進ベクトルの適用がさらに、前記回転の所望角度に関連する終了点回転ベクトルと前記開始点回転ベクトルとの距離に基づいて前記並進ベクトルを生成することを含むことを特徴とする、請求項2に記載の方法。
  4. 前記回転ポイントが座標(X,Y)を有し、前記複数のブロックからのブロックnの前記アンカー位置が座標(X,Y)を有し、ブロックnに対する前記開始点回転ベクトルが座標(Xsn,Ysn)を有し、
    Sn=X−X;及び
    Sn=Y−Y
    であることを特徴とする、請求項3に記載の方法。
  5. 前記回転角度が90度、180度、270度からなるグループから選択され、90度の回転角度に対応する前記終了点回転ベクトルが(Ysn,−Xsn)に等しく、180度の回転角度に対応する前記終了点回転ベクトルが(−Xsn,−Ysn)に等しく、270度の回転角度に対応する前記終了点回転ベクトルが(−Ysn,Xsn)に等しいことを特徴とする、請求項4に記載の方法。
  6. 前記ブロックに対する並進ベクトルの適用がさらに、前記ブロックの前記アンカー位置と前記並進ベクトルとを合計することにより、前記ブロックの並進したアンカー位置を生成することを含むことを特徴とする、請求項3に記載の方法。
  7. 回転ポイントが座標(X,Y)を有する前記複数のブロックに共通であり、前記ブロックが座標(X,Y)を有するアンカー位置を有する前記複数のブロックからのブロックnであり、前記回転角度が90度であり、前記ブロックに前記並進ベクトルを適用することが、座標(Xdn,Ydn)を有する前記ブロックnに対する並進したアンカー位置を生成することを含み、
    dn=Y+X−Y;及び
    dn=−X+X+Y
    であることを特徴とする、請求項1に記載の方法。
  8. 前記回転ポイントが座標(X,Y)を有する前記複数のブロックに共通であり、前記ブロックが座標(X,Y)を有するアンカー位置を有する前記複数のブロックからのブロックnであり、前記回転角度が180度であり、前記ブロックに前記並進ベクトルを適用することが、座標(Xdn,Ydn)を有する前記ブロックnに対する並進したアンカー位置を生成することを含み、
    dn=2X−X;及び
    dn=2Y−Y
    であることを特徴とする、請求項1に記載の方法。
  9. 前記回転ポイントが座標(X,Y)を有する前記複数のブロックに共通であり、前記ブロックが座標(X,Y)を有するアンカー位置を有する前記複数のブロックからのブロックnであり、前記回転角度が270度であり、前記ブロックに前記並進ベクトルを適用することが、座標(Xdn,Ydn)を有する前記ブロックnに対する並進したアンカー位置を生成することを含み、
    dn=−Y+X+Y;及び
    dn=X−X+Y
    であることを特徴とする、請求項1に記載の方法。
  10. 各ブロックが矩形のピクセルアレイとして構成されることを特徴とする、請求項1に記載の方法。
  11. 各ブロックが正方形のピクセルアレイとして構成されることを特徴とする、請求項10に記載の方法。
  12. 前記複数のブロックが同一のサイズであることを特徴とする、請求項1に記載の方法。
  13. 前記複数のブロックが異なるサイズであることを特徴とする、請求項1に記載の方法。
  14. 前記所望の回転角度による前記ブロック内の画像データの回転が、前記ブロック内の画像データを90度、180度、270度のうちの1つの角度で回転させることを含むことを特徴とする、請求項1に記載の方法。
  15. 前記所望の回転角度による前記ブロック内の画像データの回転が、回転バッファを用いて行われることを特徴とする、請求項1に記載の方法。
  16. 前記画像から前記複数のブロックを生成することをさらに含むことを特徴とする、請求項1に記載の方法。
  17. 前記複数のブロックを生成することが、各ブロックに対するアンカー位置を決定することを含むことを特徴とする、請求項16に記載の方法。
  18. 前記複数のブロックを生成することが、各ブロックに対する開始点回転ベクトルを決定することを含み、前記開始点回転ベクトルが各ブロックに対する前記回転ポイントと前記アンカー位置との差を表すことを特徴とする、請求項16に記載の方法。
  19. 前記複数のブロックを前記順序付きリストに配列することをさらに含むことを特徴とする、請求項1に記載の方法。
  20. 前記複数のブロックが、前記複数のブロックの回転中にオーバーラップを検出することを最少化するように前記順序付きリストに配列されることを特徴とする、請求項1に記載の方法。
  21. 前記並進ベクトルを前記ブロックに適用し、前記ブロック内の画像データを回転させた後、前記順序付きリストからブロックを除外することをさらに含むことを特徴とする、請求項1に記載の方法。
  22. 前記オーバーラップしたブロックを前記回転バッファにコピーした後、前記オーバーラップしたブロックに並進ベクトルを適用して、前記オーバーラップしたブロックを前記回転ポイントの回りで前記所望の回転角度で並進させ、前記所望の回転角度により前記オーバーラップしたブロック内の画像データを回転させることを更に含むことを特徴とする、請求項1に記載の方法。
  23. 前記並進したブロックが別のブロックとオーバーラップするか否かを判断することが、前記並進したブロックが複数のブロックとオーバーラップすることを検出することを含み、前記オーバーラップしたブロックを前記回転バッファにコピーすることが、少なくとも1つの回転バッファに前記複数のブロックをコピーすることを含むことを特徴とする、請求項1に記載の方法。
  24. 開始点メモリから前記ブロックを取り出すことと、前記並進したブロックを終了点メモリに格納することをさらに含むことを特徴とする、請求項1に記載の方法。
  25. 前記開始点メモリ及び前記終了点メモリの各々が、フレームバッファと外部メモリからなるグループから選択される、請求項24に記載の方法。
  26. 前記開始点メモリ及び前記終了点メモリが異なるメモリであることを特徴とする、請求項24に記載の方法。
  27. 前記開始点メモリ及び前記終了点メモリが同一のメモリであることを特徴とする、請求項24に記載の方法。
  28. 前記複数のブロックが前記画像の非矩形の境界を定義することを特徴とする、請求項1に記載の方法。
  29. 前記画像が少なくとも1つのオブジェクトを含み、前記複数のブロックが前記オブジェクトの第1のビューに関連する、請求項1に記載の方法。
  30. ブロックの原位置の画像データをクリアすることをさらに含むことを特徴とする、請求項1に記載の方法。
  31. 各ブロックに対する画像データを回転バッファにロードすること;ブロックによりオーバーラップされた各ブロックに対する画像データが前記回転バッファにロードされた後にのみ、前記回転バッファから終了点メモリへとブロックに対する画像データを書き込むこと;をさらに含むことを特徴とする、請求項1に記載の方法。
  32. 画像データを回転する方法であって;
    回転させる画像からの画像データの複数のブロック中の第1ブロックを回転させること;
    回転した前記第1のブロックが前記複数のブロック中の別のブロックとオーバーラップするか否かを判断すること;
    回転した前記第1のブロックが別のブロックとオーバーラップする場合、回転した前記第1のブロックをフレームバッファに格納する前に、オーバーラップするブロックを回転バッファにコピーすること;
    前記オーバーラップするブロックを前記回転バッファに格納した後に、前記オーバーラップするブロックを回転すること;
    前記回転したオーバーラップブロックを前記フレームバッファに格納すること;
    を含むことを特徴とする、画像データを回転する方法。
  33. 前記複数のブロックが順序付きリストに配列され、前記回転した第1のブロックが前記フレームバッファに格納された後に前記順序付きリストから前記第1のブロックを除外することをさらに含むことを特徴とする、請求項32に記載の方法。
  34. 画像を定義する画像データの複数のブロックを格納するように構成されるメモリ;及び 前記メモリに結合されると共に、前記ブロックに並進ベクトルを適用することにより回転ポイントの回りで前記複数のブロックの中の各ブロックを所望の回転角度で並進させ、各ブロック内の画像データを前記所望の回転角度で回転させるように構成される回路を含み、
    前記複数のブロックが、順序付きリスト内に配列され、前記複数のブロックが、前記複数のブロックの回転中にオーバーラップが検出されることを最少化するように前記順序付きリスト内に配列されることを特徴とする装置。
  35. 前記回転ポイントが前記複数のブロックに共通であり、前記回路が;前記ブロックの前記回転ポイントとアンカー位置との間の距離を表す開始点回転ベクトルを生成し;前記所望の回転角度に関連する終了点回転ベクトルと前記開始点回転ベクトルとの差に基づいて前記並進ベクトルを生成し;前記ブロックのアンカー位置に前記並進ベクトルを加算することにより前記ブロックの並進したアンカー位置を生成する;ことにより前記並進ベクトルを適用するように構成されることを特徴とする、請求項34に記載の装置。
  36. 前記回転ポイントが座標(X,Y)を有し、前記複数のブロック(122)からのブロックnの前記アンカー位置が座標(X,Y)を有し、ブロックnに対する前記開始点回転ベクトルが座標(Xsn,Ysn)を有し、
    Sn=X−X;及び
    Sn=Y−Y
    であり、前記回転角度が90度、180度、270度からなるグループから選択され、90度の回転角度に対応する前記終了点回転ベクトルが(Ysn,−Xsn)に等しく、180度の回転角度に対応する前記終了点回転ベクトルが(−Xsn,−Ysn)に等しく、270度の回転角度に対応する前記終了点回転ベクトルが(−Ysn,Xsn)に等しいことを特徴とする、請求項35に記載の装置。
  37. 各ブロックが矩形のピクセルアレイとして構成されることを特徴とする、請求項34に記載の装置。
  38. 前記回路が、前記ブロック内の画像データを90度、180度、270度のうちの1つの角度で回転させることにより、前記ブロック内の前記画像データを前記所望の回転角度で回転させるように構成されることを特徴とする、請求項34に記載の装置。
  39. 前記回路が、前記ブロック内の前記画像データを回転させるように構成される回転バッファを含むことを特徴とする、請求項34に記載の装置。
  40. 前記回路が、前記画像から前記複数のブロックを生成すると共に、各ブロックに対するアンカー位置を決定するようにさらに構成されることを特徴とする、請求項34に記載の装置。
  41. 前記回路がさらに、各ブロックに対する前記回転ポイントと前記アンカー位置との差を表す、各ブロックに対する開始点回転を決定するように構成されることを特徴とする、請求項40に記載の装置。
  42. 前記回路がさらに、ブロックに並進ベクトルが適用され、前記ブロック内の前記画像データが回転した後に、前記順序付きリストから前記ブロックを除外するように構成されることを特徴とする、請求項34に記載の装置。
  43. 前記回路がさらに、並進したブロックが前記複数のブロック中の別のブロックとオーバーラップするか否かを判断し、オーバーラップすると判断した場合に、オーバーラップしたブロックを回転バッファにコピーするように構成されることを特徴とする、請求項34に記載の装置。
  44. 前記回路がさらに、前記オーバーラップしたブロックを前記回転バッファにコピーした後、前記オーバーラップしたブロックに並進ベクトルを適用して、前記オーバーラップしたブロックを前記回転ポイントの回りを前記所望の回転角度で並進させ、前記オーバーラップしたブロック内の画像データを前記所望の回転角度で回転させるように構成されることを特徴とする、請求項43に記載の装置。
  45. 前記回路構成がさらに、前記メモリから前記ブロックを取り出し、前記並進したブロックを異なるメモリに格納するように構成されることを特徴とする、請求項34に記載の装置。
  46. 前記回路構成がさらに、前記メモリから前記ブロックを取り出し、前記並進したブロックを前記メモリに格納することを特徴とする、請求項34に記載の装置。
  47. 前記メモリが、フレームバッファ及び外部メモリからなるグループから選択されることを特徴とする、請求項34に記載の装置。
  48. 回転バッファと、
    前記回転バッファに結合される回路部分と、を含み、前記回路部分が、画像を定義する画像データの複数のブロックの各々に対して、前記回転バッファ内に前記ブロックに対する画像データを取り出し、前記ブロックに並進ベクトルを適用して、回転ポイントの回りを所望の回転角度で前記ブロックを並進させ、前記所望の回転角度により前記回転バッファ内の画像データを回転させることによって、前記画像を回転させるように構成され、前記複数のブロックが順序付きリスト内に配列され、前記回路部分は変換されたブロックが前記複数のブロック中の別のブロックとオーバーラップするか否かを判断し、オーバーラップすると判断した場合に、オーバーラップしたブロックを前記回転バッファにコピーすることを特徴とする回路。
  49. 前記回路部分が、プロセッサとプログラムコードとを含み、前記プログラムコードが前記ブロックに前記並進ベクトルを適用し、前記回転バッファ内で前記画像データの回転を開始するように前記プロセッサ上で実行するように構成されることを特徴とする、請求項48に記載の回路。
  50. 請求項48の前記回路を含む集積回路。
  51. コンピュータに、
    (a) 画像を定義する画像データの複数のブロックの各々に対して前記ブロックに並進ベクトルを適用して回転ポイントを中心とする所望の回転角度で前記ブロックを並進させる手順と、
    (b) 前記所望の回転角度により前記ブロック内で前記画像データを回転させる手順と、
    (c) 前記複数のブロックが順序付きリスト内に配列され、並進したブロックが前記複数のブロック中の別のブロックとオーバーラップするか否かを判断し、オーバーラップすると判断した場合に、オーバーラップしたブロックを回転バッファにコピーして、画像データを回転する手順、
    を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
  52. コンピュータに、
    回転させる画像からの画像データの複数のブロック中の第1ブロックを回転させ、
    回転した前記第1のブロックが前記複数のブロック中の別のブロックとオーバーラップするか否かを判断する手順と、
    回転した前記第1のブロックが別のブロックとオーバーラップする場合、回転した前記第1のブロックをフレームバッファに格納する前に、オーバーラップするブロックを回転バッファにコピーする手順と、
    前記オーバーラップするブロックを前記回転バッファに格納した後に、前記オーバーラップするブロックを回転する手順と、
    前記回転したオーバーラップブロックを前記フレームバッファに格納する手順、
    を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
JP2004537397A 2002-09-18 2003-09-12 任意形状画像のブロック単位の回転 Expired - Fee Related JP4578241B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/245,984 US7376286B2 (en) 2002-09-18 2002-09-18 Block-based rotation of arbitrary-shaped images
PCT/IB2003/003912 WO2004027709A2 (en) 2002-09-18 2003-09-12 Block-based rotation of arbitrary-shaped images

Publications (3)

Publication Number Publication Date
JP2005539323A JP2005539323A (ja) 2005-12-22
JP2005539323A5 JP2005539323A5 (ja) 2006-10-26
JP4578241B2 true JP4578241B2 (ja) 2010-11-10

Family

ID=31992229

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004537397A Expired - Fee Related JP4578241B2 (ja) 2002-09-18 2003-09-12 任意形状画像のブロック単位の回転

Country Status (7)

Country Link
US (1) US7376286B2 (ja)
EP (1) EP1563455A2 (ja)
JP (1) JP4578241B2 (ja)
CN (1) CN1329870C (ja)
AU (1) AU2003259470A1 (ja)
TW (1) TWI315056B (ja)
WO (1) WO2004027709A2 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7050071B2 (en) * 2003-05-30 2006-05-23 Intel Corporation Layered rotational graphics driver
US7145566B2 (en) * 2003-07-18 2006-12-05 Microsoft Corporation Systems and methods for updating a frame buffer based on arbitrary graphics calls
US6958757B2 (en) * 2003-07-18 2005-10-25 Microsoft Corporation Systems and methods for efficiently displaying graphics on a display device regardless of physical orientation
JP4072513B2 (ja) 2004-04-16 2008-04-09 ソフトバンクモバイル株式会社 移動体通信端末
US20060103677A1 (en) * 2004-11-18 2006-05-18 Lai Jimmy K L System and method for effectively performing arbitrary angle sprite rotation procedures
US7643038B2 (en) * 2005-06-29 2010-01-05 Qualcomm Incorporated Virtual device buffer for embedded device
EP1915860A2 (en) * 2005-08-12 2008-04-30 Nxp B.V. Method and system for digital image stabilization
US8259135B2 (en) * 2006-07-13 2012-09-04 Intel Corporation Rotated rendering and locking support for tablet computers and portrait displays
TWM328624U (en) * 2007-10-05 2008-03-11 Princeton Technology Corp Image processing apparatus and image display system
TWI394139B (zh) * 2008-10-02 2013-04-21 Mitac Int Corp Display screen adjustment system and method
CN101740006A (zh) * 2008-11-10 2010-06-16 鸿富锦精密工业(深圳)有限公司 移动终端及显示画面的方法
US8584951B2 (en) * 2008-12-11 2013-11-19 Ncr Corporation Apparatus, method and system for extracting pixel data from an image capture device
CN101996550A (zh) * 2009-08-06 2011-03-30 株式会社东芝 用于显示图像的半导体集成电路
CN102098477B (zh) * 2009-12-14 2015-05-20 无锡中星微电子有限公司 一种获得像素值的方法及装置
JP5529568B2 (ja) * 2010-02-05 2014-06-25 キヤノン株式会社 画像処理装置、撮像装置、制御方法及びプログラム
US20110234636A1 (en) * 2010-03-24 2011-09-29 Dsp Group Ltd. Method and integrated circuit for image manipulation
TWI413978B (zh) * 2010-06-15 2013-11-01 Au Optronics Corp 顯示器和其顯示控制電路
CN101958112B (zh) * 2010-10-13 2012-02-15 福州瑞芯微电子有限公司 手持设备屏幕画面同时实现90度和270度旋转的方法
US8797359B2 (en) * 2011-11-29 2014-08-05 Apple Inc. Inline image rotation
CN103377030B (zh) * 2012-04-26 2016-12-21 华为技术有限公司 图像旋转控制方法及装置
KR102069857B1 (ko) * 2013-02-28 2020-01-23 삼성전자주식회사 자체-학습을 통해 원래 이미지를 회전하는 방법과 상기 방법을 수행할 수 있는 장치들
CN105787882A (zh) * 2016-02-26 2016-07-20 广州市赛普电子科技有限公司 一种图片旋转快速呈现的方法
US10249023B2 (en) * 2017-04-27 2019-04-02 Apple Inc. Patch warper circuit for image processing

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4627020A (en) * 1983-12-30 1986-12-02 International Business Machines Corporation Method for rotating a binary image
JPS60231235A (ja) * 1984-04-27 1985-11-16 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション イメ−ジ処理システム
US4829452A (en) * 1984-07-05 1989-05-09 Xerox Corporation Small angle image rotation using block transfers
JPS6370381A (ja) * 1986-09-12 1988-03-30 インターナショナル・ビジネス・マシーンズ・コーポレーション イメ−ジ・デ−タの回転方法
JPS63296475A (ja) * 1987-05-27 1988-12-02 Nec Corp 動画像アフィン変換プロセッサ
US5012434A (en) * 1989-02-21 1991-04-30 Siemens Aktiengesellschaft Apparatus and method for selective rotation of data printed by a matrix printer
US5111192A (en) * 1989-12-20 1992-05-05 Xerox Corporation Method to rotate a bitmap image 90 degrees
JP2695266B2 (ja) * 1990-01-22 1997-12-24 松下電送株式会社 画像の任意角回転方法および装置
CA2121402C (en) * 1994-04-15 1999-02-09 Albert Z. Zhao System for fast 90-degree rotation of bi-level images
KR970703568A (ko) * 1995-04-07 1997-07-03 이시마루 미키오 영상 회전방법 및 장치(method and apparatus for image potation)
US5854641A (en) * 1996-09-27 1998-12-29 Apple Computer, Inc. Method and apparatus for display image rotation
JP3092579B2 (ja) 1997-01-29 2000-09-25 日本電気株式会社 画像データ回転処理方法及び画像データ回転処理装置
JP3104868B2 (ja) * 1997-11-25 2000-10-30 富士ゼロックス株式会社 画像処理装置
US6215494B1 (en) * 1997-12-18 2001-04-10 Mgi Software Corporation Method and system for centering image objects
JPH11306343A (ja) * 1998-04-17 1999-11-05 Toshiba Corp 2次元データ回転処理装置
US6208429B1 (en) * 1998-05-29 2001-03-27 Flashpoint Technology, Inc. Method and system for band printing of rotated digital image data
JP2000032265A (ja) * 1998-07-13 2000-01-28 Oki Data Corp ディザパターンの回転方法と回転装置
US6310986B2 (en) 1998-12-03 2001-10-30 Oak Technology, Inc. Image rotation assist circuitry and method
US6400851B1 (en) * 1999-01-28 2002-06-04 Microsoft Corporation Rotating image data
US6785428B1 (en) * 1999-10-05 2004-08-31 Adobe Systems Incorporated Rotated transform of an image using block transfers
US6486881B2 (en) * 2000-06-15 2002-11-26 Lifef/X Networks, Inc. Basis functions of three-dimensional models for compression, transformation and streaming

Also Published As

Publication number Publication date
US7376286B2 (en) 2008-05-20
CN1329870C (zh) 2007-08-01
CN1685363A (zh) 2005-10-19
US20040052431A1 (en) 2004-03-18
TW200426710A (en) 2004-12-01
JP2005539323A (ja) 2005-12-22
WO2004027709A3 (en) 2005-06-23
WO2004027709A2 (en) 2004-04-01
EP1563455A2 (en) 2005-08-17
AU2003259470A1 (en) 2004-04-08
TWI315056B (en) 2009-09-21

Similar Documents

Publication Publication Date Title
JP4578241B2 (ja) 任意形状画像のブロック単位の回転
US7669033B2 (en) Pretranslating input/output buffers in environments with multiple page sizes
KR101100046B1 (ko) 3차원 그래픽 회로를 위한 픽셀 캐시
US7746351B2 (en) Systems and methods for updating a frame buffer based on arbitrary graphics calls
US7999819B2 (en) Systems and methods for managing texture descriptors in a shared texture engine
JP3219826B2 (ja) 情報処理装置
US20050012753A1 (en) Systems and methods for compositing graphics overlays without altering the primary display image and presenting them to the display on-demand
US9972065B2 (en) Resource layout randomization for GPU execution
JPH10116346A (ja) テクスチャの高速ダウンロード方法
WO2006038718A2 (en) Bit manipulation method, apparatus and system
EP1721298A2 (en) Embedded system with 3d graphics core and local pixel buffer
US7831780B2 (en) Operating system supplemental disk caching system and method
JPS62231382A (ja) イメ−ジ処理方法及び装置
JP4095152B2 (ja) 画像管理装置およびその方法、画像管理システム、記憶媒体
US8836727B2 (en) System level graphics manipulations on protected content
WO2019114044A1 (zh) 图像处理方法、装置、电子设备及计算机可读存储介质
US8095885B1 (en) Counting references to images displayed in multiple views
US20130222398A1 (en) Graphic processing unit and graphic data accessing method thereof
US6972770B1 (en) Method and apparatus for performing raster operations in a data processing system
JP2003196674A (ja) 画像処理方法、画像処理装置及びコンピュータ読み取り可能記憶媒体
WO2007132742A1 (ja) 画像処理装置
JP2000029788A (ja) キャッシュメモリシステム及びそれに用いるキャッシュ制御方法並びにその制御プログラムを記録した記録媒体
AU2013205597A1 (en) Fast rotated bitmap rendering
JPH03216770A (ja) 画像データ処理方式
JPH07320053A (ja) 画像回転処理装置

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060908

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060908

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20080703

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090717

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091008

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091016

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100118

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100226

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100430

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100625

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100726

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100729

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100824

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130903

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130903

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130903

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130903

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees