図1は、本発明の実施の形態にかかる画像処理システム1の使用環境を示す。画像処理システム1は、画像処理ソフトウェアを実行する画像処理装置10と、画像処理装置10による処理結果を出力する表示装置12とを備える。表示装置12は、画像を出力するディスプレイおよび音声を出力するスピーカを有するテレビであってよい。表示装置12は、画像処理装置10に有線ケーブルで接続されてよく、また無線LAN(Local Area Network)などにより無線接続されてもよい。画像処理システム1において、画像処理装置10は、ケーブル14を介してインターネットなどの外部ネットワークに接続し、階層化された圧縮画像データをダウンロードして取得してもよい。なお画像処理装置10は、無線通信により外部ネットワークに接続してもよい。
画像処理装置10は、たとえばゲーム装置であってよく、画像処理用のアプリケーションプログラムをロードすることで画像処理機能を実現してもよい。なお画像処理装置10は、パーソナルコンピュータであってもよく、画像処理用のアプリケーションプログラムをロードすることで画像処理機能を実現してもよい。
画像処理装置10は、ユーザからの要求に応じて、表示装置12のディスプレイに表示する画像の拡大/縮小処理や、上下左右方向への移動処理などを行う。以後、これらの処理を総じて「表示画像の移動処理」と呼ぶ。ユーザが、ディスプレイに表示された画像を見ながら入力装置を操作すると、入力装置が、表示画像の移動要求信号を画像処理装置10に送信する。
図2は、入力装置20の外観構成を示す。入力装置20は、ユーザが操作可能な操作手段として、十字キー21、アナログスティック27a、27bと、4種の操作ボタン26を備える。4種の操作ボタン26は、○ボタン22、×ボタン23、□ボタン24および△ボタン25から構成される。
画像処理システム1において、入力装置20の操作手段には、表示画像の拡大/縮小要求、および上下左右方向へのスクロール要求を入力するための機能が割り当てられる。たとえば、表示画像の拡大/縮小要求の入力機能は、右側のアナログスティック27bに割り当てられる。ユーザはアナログスティック27bを手前に引くことで、表示画像の縮小要求を入力でき、また手前から押すことで、表示画像の拡大要求を入力できる。また、表示領域の移動要求の入力機能は、十字キー21に割り当てられる。ユーザは十字キー21を押下することで、十字キー21を押下した方向への移動要求を入力できる。なお、画像移動要求の入力機能は別の操作手段に割り当てられてもよく、たとえばアナログスティック27aに、スクロール要求の入力機能が割り当てられてもよい。
入力装置20は、入力された画像移動要求信号を画像処理装置10に伝送する機能をもち、本実施の形態では画像処理装置10との間で無線通信可能に構成される。入力装置20と画像処理装置10は、Bluetooth(ブルートゥース)(登録商標)プロトコルやIEEE802.11プロトコルなどを用いて無線接続を確立してもよい。なお入力装置20は、画像処理装置10とケーブルを介して接続して、画像移動要求信号を画像処理装置10に伝送してもよい。
図3は、本実施の形態において使用する画像データの階層構造例を示す。画像データは、深さ(Z軸)方向に、第0階層30、第1階層32、第2階層34および第3階層36からなる階層構造を有する。なお同図においては4階層のみ示しているが、階層数はこれに限定されない。以下、このような階層構造をもつ画像データを「階層データ」とよぶ。
図3に示す階層データは4分木の階層構造を有し、各階層は、1以上のタイル画像38で構成される。すべてのタイル画像38は同じ画素数をもつ同一サイズに形成され、たとえば256×256画素を有する。各階層の画像データは、一つの画像を異なる解像度で表現しており、最高解像度をもつ第3階層36の原画像を複数段階に縮小して、第2階層34、第1階層32、第0階層30の画像データが生成される。たとえば第N階層の解像度(Nは0以上の整数)は、左右(X軸)方向、上下(Y軸)方向ともに、第(N+1)階層の解像度の1/2であってよい。
画像処理装置10において、階層データは、所定の圧縮形式で圧縮された状態で記憶装置に保持されており、ディスプレイに表示される前に記憶装置から読み出されてデコードされる。本実施の形態の画像処理装置10は、複数種類の圧縮形式に対応したデコード機能を有し、たとえばS3TC形式、JPEG形式、JPEG2000形式の圧縮データをデコード可能とする。階層データにおいて、圧縮処理は、タイル画像単位に行われていてもよく、また同一階層または複数の階層に含まれる複数のタイル画像単位に行われていてもよい。
階層データの階層構造は、図3に示すように、左右方向をX軸、上下方向をY軸、深さ方向をZ軸として設定され、仮想的な3次元空間を構築する。画像処理装置10は、入力装置20から供給される画像移動要求信号から表示画像の移動量を導出すると、その移動量を用いて仮想空間におけるフレームの4隅の座標(フレーム座標)を導出する。仮想空間におけるフレーム座標は、後述する表示画像の生成処理に利用される。なお、仮想空間におけるフレーム座標の代わりに、画像処理装置10は、階層を特定する情報と、その階層におけるテクスチャ座標(UV座標)を導出してもよい。以下、階層特定情報およびテクスチャ座標の組み合わせも、フレーム座標と呼ぶ。
図4は画像処理装置10の構成を示している。画像処理装置10は、無線インタフェース40、スイッチ42、表示処理部44、ハードディスクドライブ50、記録媒体装着部52、ディスクドライブ54、メインメモリ60、バッファメモリ70および制御部100を有して構成される。表示処理部44は、表示装置12のディスプレイに表示するデータをバッファするフレームメモリを有する。
スイッチ42は、イーサネットスイッチ(イーサネットは登録商標)であって、外部の機器と有線または無線で接続して、データの送受信を行うデバイスである。スイッチ42は、ケーブル14を介して外部ネットワークに接続し、画像サーバから階層化された圧縮画像データを受信してもよい。またスイッチ42は無線インタフェース40に接続し、無線インタフェース40は、所定の無線通信プロトコルで入力装置20と接続する。入力装置20においてユーザから入力された画像移動要求信号は、無線インタフェース40、スイッチ42を経由して、制御部100に供給される。
ハードディスクドライブ50は、データを記憶する記憶装置として機能する。スイッチ42を介して受信された圧縮画像データは、ハードディスクドライブ50に格納される。記録媒体装着部52は、メモリカードなどのリムーバブル記録媒体が装着されると、リムーバブル記録媒体からデータを読み出す。ディスクドライブ54は、読出専用のROMディスクが装着されると、ROMディスクを駆動して認識し、データを読み出す。ROMディスクは、光ディスクや光磁気ディスクなどであってよい。圧縮画像データはこれらの記録媒体に格納されていてもよい。
制御部100は、マルチコアCPUを備え、1つのCPUの中に1つの汎用的なプロセッサコアと、複数のシンプルなプロセッサコアを有する。汎用プロセッサコアはPPU(Power Processing Unit)と呼ばれ、残りのプロセッサコアはSPU(Synergistic-Processing Unit)と呼ばれる。
制御部100は、メインメモリ60およびバッファメモリ70に接続するメモリコントローラを備える。PPUはレジスタを有し、演算実行主体としてメインプロセッサを備えて、実行するアプリケーションにおける基本処理単位としてのタスクを各SPUに効率的に割り当てる。なお、PPU自身がタスクを実行してもよい。SPUはレジスタを有し、演算実行主体としてのサブプロセッサとローカルな記憶領域としてのローカルメモリを備える。ローカルメモリは、バッファメモリ70として使用されてもよい。
メインメモリ60およびバッファメモリ70は記憶装置であり、RAM(ランダムアクセスメモリ)として構成される。SPUは制御ユニットとして専用のDMA(Direct Memory Access)コントローラをもち、メインメモリ60とバッファメモリ70の間のデータ転送を高速に行うことができ、また表示処理部44におけるフレームメモリとバッファメモリ70の間で高速なデータ転送を実現できる。本実施の形態の制御部100は、複数のSPUを並列動作させることで、高速な画像処理機能を実現する。表示処理部44は、表示装置12に接続されて、ユーザからの要求に応じた画像処理結果を出力する。
本実施の形態の画像処理装置10は、表示画像の拡大/縮小処理や表示領域の移動処理を行う際に表示画像を円滑に変更させるために、後述する規則によって決定した圧縮画像データの一部をハードディスクドライブ50からメインメモリ60にロードしておく。また、ユーザからの画像移動要求をもとに、将来表示させる画像を予測し、メインメモリ60にロードした圧縮画像データのさらに一部をデコードしてバッファメモリ70に格納しておく。これにより、後の必要なタイミングで、表示画像の生成に使用する画像を瞬時に切り替えることが可能となる。以下において、将来表示させるタイル画像を予測して、バッファメモリ70に前もって展開しておく処理を、「先読み処理」とよぶ。
図5は、先読み処理を説明するための図を示す。図5は、階層データの構造を示しており、各階層はL0(第0階層)、L1(第1階層)、L2(第2階層)、L3(第3階層)と表現されている。図5に示す階層データ構造において、深さ(Z軸)方向における位置は、解像度を示し、L0に近い位置ほど解像度が低く、L3に近い位置ほど解像度は高い。なおディスプレイに表示される画像の大きさに注目すると、深さ方向における位置は、縮尺率に対応し、L3の表示画像の縮尺率を1とすると、L2における縮尺率は1/4、L1における縮尺率は1/16となり、L0における縮尺率は1/64となる。
したがって深さ方向において、表示画像がL0側からL3側へ向かう方向に変化する場合、表示画像は拡大していき、L3側からL0側へ向かう方向に変化する場合は、表示画像は縮小していく。矢印80は、ユーザからの画像移動要求信号が、表示画像の縮小を要求しており、縮尺率1/4(L2)をまたいだ様子を示している。本実施例の画像処理装置10では、タイル画像38として用意しているL1、L2の深さ方向の位置を、深さ方向の先読み境界として設定し、画像変更要求信号が先読み境界をまたぐと、先読み処理が開始される。
表示画像の縮尺率がL2の近傍にある場合、表示画像は、L2(第2階層)のタイル画像を用いて作成される。具体的には、表示する画像の縮尺率が、L1タイル画像とL2タイル画像の切替境界82と、L2タイル画像とL3タイル画像の切替境界84の間にある場合に、L2タイル画像が利用される。したがって、矢印80に示すように画像の縮小処理が要求されると、L2のタイル画像が拡大された画像から、縮小された画像に変換されて表示される。画像処理装置10は、入力装置20からの画像移動要求信号と伝達関数を畳み込み演算して、画像移動要求信号が要求する表示画像の生成を遅延させ、その間に、画像移動要求信号から予測される将来必要なタイル画像38を特定して、メインメモリ60から先読みしておく。図5の例では、画像移動要求信号による要求縮尺率がL2をまたいだときに、画像処理装置10が、縮小方向にあるL1の対応するタイル画像38をメインメモリ60から先読みしてデコードし、バッファメモリ70に書き込む。
なお以上は深さ方向の先読み処理について説明したが、上下左右方向の先読み処理についても同様に処理される。具体的には、バッファメモリ70に展開されている画像データに先読み境界を設定しておき、画像変更要求信号による表示位置が先読み境界をまたいだときに、先読み処理が開始されるようにする。
図6は本実施の形態における画像データの流れを模式的に示している。まず階層データはハードディスクドライブ50に格納されている。ハードディスクドライブ50に代わり、記録媒体装着部52やディスクドライブ54に装着された記録媒体が保持していてもよい。あるいは、画像処理装置10がネットワークを介して接続した画像サーバから階層データをダウンロードするようにしてもよい。ここでの階層データは上述のとおり、S3TC形式などによる固定長圧縮、あるいはJPEG形式などによる可変長圧縮がなされている。
この階層データのうち、一部の画像データを圧縮した状態のままメインメモリ60にロードする(S10)。ここでロードする領域は、現在の表示画像の仮想空間における近傍や、画像の内容、ユーザの閲覧履歴等に基づいて、高頻度で表示要求がなされると予測される領域など、あらかじめ定めた規則によって決定する。ロードは、画像変更要求がなされたときのみならず、例えば所定の時間間隔で随時行う。これによりロード処理が一時期に集中しないようにする。
また、ロードする圧縮画像データはおよそ一定のサイズを有するブロック単位とする。そのためハードディスクドライブ50が保持する階層データは所定の規則でブロックに分割しておく。このようにすることでメインメモリ60におけるデータ管理が効率よく行える。すなわち、圧縮画像データが可変長圧縮されたものであっても、ブロック(以後、「画像ブロック」と呼ぶ)単位であればロードするデータサイズがほぼ等しいため、基本的にメインメモリ60にそれまで格納されていたブロックのいずれかを上書きすることによって新たなロードが完了する。そのためフラグメンテーションが発生しにくく、メモリを効率的に使用できるうえ、アドレス管理も容易になる。
次に、メインメモリ60に格納されている圧縮画像データのうち、表示に必要な領域の画像、または必要と予測される領域の画像のデータをデコードし、バッファメモリ70に格納する(S12)。バッファメモリ70は、少なくとも2つのバッファ領域72、74を含む。各バッファ領域72、74のサイズは、フレームメモリ90のサイズよりも大きく設定され、入力装置20から画像移動要求信号が入力された場合に、ある程度の量の変更要求に対しては、バッファ領域72、74に展開した画像データで表示画像を生成できるようにする。
バッファ領域72、74の一方は、表示画像の生成に用いる画像を保持するために利用される表示用バッファであり、他方は、以後、必要と予測される画像を準備するために利用されるデコード用バッファである。図6の例では、バッファ領域72が表示用バッファ、バッファ領域74がデコード用バッファで、表示領域68が表示されているものとする。先読み処理によってデコード用バッファに格納する画像は、表示用バッファに格納されている画像と同一階層の画像でもよいし、縮尺の異なる別階層の画像でもよい。
次に、表示用バッファであるバッファ領域72に格納された画像のうち表示領域68の画像を、フレームメモリ90に描画する(S14)。この間に、新たな領域の画像が必要に応じてデコードされ、バッファ領域74に格納される。格納が完了したタイミングや表示領域68の移動量などに応じて、表示用バッファとデコード用バッファを切り替える(S16)。これにより、表示領域の移動や縮尺率の変更などに対し表示画像をスムーズに切り替えることができる。
これまで述べた処理は、ある画像の表示領域の移動、拡大縮小を行うために、図5で示したような一つの階層データによって構成される仮想空間において、ユーザからの画像移動要求に従いフレーム座標を移動させる態様であった。本実施の形態ではさらに、複数の階層データを表示対象として用意し、表示画像が階層データ間を行き来することを可能にする。図7はそのような態様において表示対象となる複数の階層データの関係を模式的に示している。
図中、2つの三角形は異なる階層データ150および152を示している。それぞれの階層データ150、152は実際には、図3に示すように解像度の異なる複数の画像データが図のZ軸方向に離散的に存在する構成を有する。図5で説明したのと同様に、ユーザが画像移動要求信号により表示画像の拡大縮小を指示すると、表示画像は図のZ軸方向に移動することになる。一方、表示領域を上下左右に移動させる場合は、図の水平面を移動することになる。本実施の形態では、このような仮想空間において、2つの階層データ150および152が図のように重なり合った状態を生成する。
このような状態で、階層データ150の画像を表示中、ユーザが拡大指示を行い、表示画像が矢印aのように移動した場合、当該表示画像は階層データ152の領域に入る、すなわち階層データ間を移動することになる。仮想空間での当該移動をこれまでに述べた階層データの表示手順に含めることにより、異なる階層データの画像をシームレスにつないだ表示を行うことができる。階層データ150と152の画像は同じ対象物を異なる解像度の範囲で表すデータでもよいし、全く異なる対象物を表すデータでもよい。例えば階層データ150を世界地図のデータ、階層データ152を日本地図のデータとすると、ユーザが世界地図の日本の領域を拡大していくことにより、階層データ150から階層データ152への遷移が起こり、日本地図のさらに詳細な表示が行える。また、階層データ150をメニュー画面のデータ、階層データ152をメニュー画面に表示された各アイコンについて説明したマニュアルのデータとすると、ユーザがメニュー画面の所望のアイコンを拡大することにより、当該アイコンに対応する機能について説明したマニュアル画像に切り替わる、といったことが可能になる。
このように本実施の形態では、仮想空間における表示画像の移動、すなわち拡大、縮小を含む表示画像移動要求の入力をきっかけとして、描画に用いる階層データを切り替える。このような切り替えを、現在表示中の画像に対する基本操作のみで行えるため、切り替えのためのメニュー画面を表示させたり選択したりするなどの段階を経ることがなく、操作性のよいユーザインターフェースを提供できる。また、例えば世界地図の画像から建物や道路が確認できるような高解像度の画像まで連続して拡大できるコンテンツを作成する場合、解像度の範囲に応じて階層データを別に保持することにより、海洋領域など拡大の必要の少ない領域のデータを省くことができ、一つの巨大な階層データを構築するよりデータサイズを格段に削減できる。また、全く異なる画像を連続的に表示することが容易であり、さまざまな画像表現への応用、コンテンツの作成が容易になる。
表示中の画像のどの領域およびどの解像度で別の階層データへ切り替えるかは、図7中、線154で表される「リンク情報」としてあらかじめ設定しておく。同図の例では、Z軸がz1なる解像度、線154が表す水平面(図3参照)上の位置において、階層データ150から階層データ152への切り替えが行われる。以後、このような階層データ間の切り替えを「リンク」と呼ぶ。
図8は階層データ間にリンクを設定したときの表示画像の様子を例示している。同図では、画像156、158、160なる3つの階層データを表示対象としている。そして画像156の領域162と画像158の領域163にリンクが設定されており、画像156の領域164と画像160の領域165にリンクが設定されているとする。このような領域を以後、「リンク領域」と呼ぶ。リンク領域は、図7の線154に相当する。画像156の階層データを用いて表示画像を生成中、ユーザの表示画像移動要求により表示画像がリンク領域162に重なると、画像156から画像158へ表示に用いる階層データが切り替わり、画像158内のリンク領域163が表示画像となる(矢印A)。
図8の例では、画像156のうち主に5角形を中心とする領域についてさらに解像度を上げた画像を別の画像158の階層データとしてハードディスクドライブ50に保持している。そしてリンク領域162とリンク領域163は同じ視野角を有するように設定する。すると、画像156の階層データでもっとも高い解像度の画像よりさらに高解像度の画像を、画像158の階層データを用いて連続的に表示することができる。このとき外観上は五角形にズームインしていくのみで、図7の矢印aの遷移が起こるため、階層データの切り替わりが行われたことをユーザが意識することはない。
またリンク領域162とリンク領域163は、図に示すように矢印Aと逆方向のリンク、矢印Bも設定されている。この場合、矢印Aの遷移後、画像158の所望の領域を拡大表示などしたユーザが、表示画像を縮小し、当該表示画像が再びリンク領域163に重なったとき、画像158から画像156へ表示に用いる階層データが切り替わり、画像156内のリンク領域162が表示画像となる(矢印B)。この場合も、画像158における表示画像を縮小していくのみで、階層データの切り替わりを意識することなく、連続的な縮小が可能となる。
リンク領域164からリンク領域165への遷移(矢印C)も同様に、画像156を表示中、楕円形をズームインしていき表示画像がリンク領域164と重なったときに、階層データが切り替わり、画像160のリンク領域165が表示画像となる。これにより、画像156より高解像度の画像表示が可能となる。なお表示画像がリンク領域に「重なる」という状態は、厳密に重なっていなくてもよいため、表示画像がリンク領域から所定の範囲内に入ったときを重なったと見なす、といった規則をあらかじめ設定しておけばよい。
図9は制御部100の構成を詳細に示している。制御部100は入力装置20からユーザが入力した情報を取得する入力情報取得部102、階層データを画像ブロックに分割する圧縮データ分割部104、新たにロードすべき画像ブロックを決定するロードブロック決定部106、必要な画像ブロックをハードディスクドライブ50からロードするロード部108を含む。制御部100はさらに、先読み処理を行う先読み処理部110、ロードすべきデータ、あるいはデコードすべきデータがリンク先の階層データ内にあるか否かを判定するリンク判定部116、圧縮画像データをデコードするデコード部112、および表示画像を描画する表示画像処理部114を含む。制御部100はさらに、設定されたシナリオ情報を解釈してリンク判定部116、ロード部108、表示画像処理部114を制御するシナリオ解釈部117を含む。
図9において、さまざまな処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、CPU(Central Processing Unit)、メモリ、その他のLSIで構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。既述したように、制御部100は1つのPPUと複数のSPUとを有し、PPUおよびSPUがそれぞれ単独または協同して、各機能ブロックを構成できる。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
まずハードディスクドライブ50にはリンクが設定された複数の階層データ101を格納しておく。またメインメモリ60には、ハードディスクドライブ50からロードした画像ブロックを格納する領域120のほか、リンク設定ファイル118をあらかじめ格納しておく。リンク設定ファイル118は、設定されたリンク情報を記録したファイルであり、階層データ101本体に付加されたものをハードディスクドライブ50からロードしてもよい。なおメインメモリ60に格納されたシナリオ設定ファイル119については後に説明する。
入力情報取得部102は、ユーザが入力装置20に対して入力した、画像表示の開始/終了、表示領域の移動、表示画像の拡大、縮小などの指示情報を取得する。入力情報取得部102はさらに、あらかじめ設定した表示画像を移動する速度の最大値、画像移動要求信号と畳み込み演算する伝達関数などに基づき、画像移動要求信号を遅延させてもよい。伝達関数は、たとえばガウシアン関数であってもよい。画像処理装置10は、この遅延時間を利用して、画像データの先読み処理に要する時間、後述するリンク先の画像や動画再生、アプリケーションの起動に要する時間を確保する。これにより、ユーザの要求に対応したスムーズな画像表示が可能となる。
圧縮データ分割部104は、ハードディスクドライブ50などから階層データを読み出し、所定の規則により分割して画像ブロックを生成し、ハードディスクドライブ50に格納する。例えばユーザが入力装置20に対し、ハードディスクドライブ50に格納されている階層データのいずれかを選択すると、入力情報取得部102から当該情報を取得し、分割処理を開始する。または元から画像ブロックに分割された階層データをハードディスクドライブ50に格納してもよい。このような階層データを表示対象とする場合には、圧縮データ分割部104は動作しなくてよい。
ロードブロック決定部106は、ハードディスクドライブ50からメインメモリ60へ新たにロードすべき画像ブロックの有無の確認、および次にロードする画像ブロックの決定を行い、ロード部108にロード要求を発行する。ロードブロック決定部106はその際、ロードすべき画像ブロックに、リンク先の別の階層データの画像ブロックが含まれていないかをリンク判定部116に問い合わせる。ロードブロック決定部106は、ロード部108がロード処理中でない状態において、例えば所定の時間間隔、あるいは、ユーザが画像の移動要求を行った際など、所定のタイミングで上記確認、決定の処理を行う。ロード部108は、ロードブロック決定部106からの要求に従い、実際のロード処理を行う。
ユーザが表示画像の移動要求を行った際、もし移動先の画像領域を含む画像ブロックがメインメモリ60に格納されていなかったら、ハードディスクドライブ50からの画像ブロックのロード、必要領域のデコード、表示画像の描画、といった処理を一度に行う必要がある。この場合、ロード処理がボトルネックとなり、ユーザの要求に対する応答性が損なわれることが考えられる。本実施の形態では、(1)今後表示される可能性の高い領域を網羅するように画像ブロックをロードしておく、(2)ロード処理が一時期に集中しないように随時ロードしていく、というポリシーの元でロードを行う。これによりロード処理が表示画像の変更処理の妨げになることが少なくなる。
先読み処理部110は、現在の表示画像のフレーム座標とユーザが入力した表示画像移動要求の情報に従い、将来表示画像の描画に必要とされるであろう画像領域を予測し、その情報をデコード部112に供給する。ただし画像表示開始直後や、バッファメモリ70に格納済みの画像では変更先の画像が描画できない場合などは、予測をせずに、その時点の表示画像の描画に必要な画像を含む所定領域の情報をデコード部112に供給する。また先読み処理部110は、予測した画像領域や現在表示画像の描画に必要な画像領域がリンク先の別の階層データに含まれていないかをリンク判定部116に問い合わせる。
リンク判定部は、メインメモリ60にあらかじめ格納したリンク設定ファイル118を参照し、ロードブロック決定部106の問い合わせに応じて、ロードすべき画像ブロックにリンク先の階層データの画像ブロックが含まれているか否かを判定する。含まれている場合は、現在表示中の階層データにおけるロードすべきポイントの座標を、リンク先の階層データにおける座標に変換し、変換前の座標、リンク先の階層データのファイル名とともにロードブロック決定部106に返す。また先読み処理部110の問い合わせに応じて、描画に必要な領域にリンク先の階層データの領域が含まれているか否かを判定する。含まれていたら、リンク先のリンク領域の座標に係る情報を返す。リンクの設定例は後に示す。
デコード部112は、先読み処理部110から取得した画像領域の情報に基づき、メインメモリ60から圧縮画像データの一部を読み出しデコードし、デコード用バッファまたは表示用バッファにデコード後のデータを格納する。表示画像処理部114は、ユーザが入力した表示画像移動要求に従い新たな表示画像のフレーム座標を決定し、バッファメモリ70の表示用バッファから対応する画像データを読み出し、表示処理部44のフレームメモリ90に描画する。シナリオ解釈部117は、メインメモリ60に格納したシナリオ設定ファイル119を解釈して、表示画像の連続的な誘導を行うために表示画像の制御を行う。詳細は後に述べる。
次にリンクの設定例について説明する。図10〜13は画像内の領域(フレーム)の定義方法を説明する図である。図10は基準となるフレームと画像の位置関係を示している。図10で画像156に対する基準フレーム264は、画像156の中心と同一の中心を有し、画像156に外接する、縦横比が所定の値の矩形とする。ここで縦横比は所定の値でよく、例えば、表示するディスプレイあるいはディスプレイ上の表示領域の縦横比と同一とする。表示画像を拡大、縮小しても、フレームは常に当該比率を保持するとする。このようなフレームを基準としたときの、横方向オフセット、縦方向オフセット、拡大率、回転角、の4つのパラメータでフレームを指定する。基準フレーム264は、(横方向オフセット,縦方向オフセット,拡大率,回転角)=(0,0,1.0,0)である。
図11は基準フレームを平行移動させた場合のフレームの定義を説明する図であるこの場合、縦方向オフセットおよび横方向オフセットのパラメータに値が代入される。具体的にはフレームの中心272から画像156の中心、すなわち基準フレームの中心270への距離の横方向成分offset_x、縦方向成分offset_yが横方向オフセット、縦方向オフセットの値となる。したがってフレーム262は(offset_x, offset_y,1.0,0)と表現される。
図12は基準フレームを平行移動させずに拡大率を変化させた場合のフレームの定義を説明する図である。この場合、フレーム266の基準フレームに対する比率が拡大率のパラメータに代入される。図12のフレーム266が図10の基準フレームの0.5倍であれば、フレーム266は(0,0,0.5,0)と表現される。
図13は基準フレームを平行移動させずに回転させた場合のフレームの定義を説明する図である。この場合、フレーム280の基準フレームからの回転角282が回転角のパラメータに代入される。例えば回転角282が0.25pであれば、フレーム280は(0,0,1.0,0.25)と表現される。図11〜13のオフセット、拡大率、回転角を組み合わせることにより、表示画像のフレームはいずれも、4つのパラメータで表現できる。以後、この4つのパラメータセットを「フレーム定義パラメータ」と呼ぶ。
図14はリンク設定ファイル118のデータ構造例を示している。リンク設定ファイル118は、一行が一つのリンク、すなわちある階層データから別の階層データへの切り替えの記述に対応し、リンク元画像フレームフィールド302、有効スケール範囲フィールド304、リンク先ファイルフィールド306、およびリンク先画像フレームフィールド308、の4種類のフィールドによって構成される。リンク元画像フレームフィールド302は表示中の画像において、階層データの切り替えが発生するときの表示画像、すなわちリンク領域のフレームを上述のフレーム定義パラメータで指定する。当該フレームは、例えば図8における矢印Bのリンクにおけるリンク領域163のフレームに相当する。
有効スケール範囲フィールド304は、リンク元画像フレームフィールド302における拡大率を始点としてリンクが有効となる拡大率の幅を指定する。図14の1行目では、リンク元画像フレームフィールド302に示されたリンク領域の拡大率が「2.0」であり、有効スケール範囲フィールド304の値が「98.0」であるため、拡大率が2.0〜100.0までの表示画像であればリンクを有効とし、階層データを切り替える、という設定となる。
例えば図8における矢印Bのリンクは、表示画像をズームアウト、すなわち画像158のリンク領域163より小さいフレームから、フレームの拡大率を上げていき、リンク領域163と重なったときに画像156へと切り替わる。したがって、拡大率が「2.0」以上となったときにリンクを有効とするために、有効スケール範囲フィールド304の値を正の値とする。これにより、画像158の表示において拡大率を十分上げた後にリンク領域163の近傍に移動させたとしてもリンクを有効とすることができる。
一方、図8における矢印Aのリンクは、表示画像をズームイン、すなわち画像156のリンク領域162より大きいフレームから、フレームの拡大率を下げていき、リンク領域162と重なったときに画像158へと切り替わる。したがって、図14の2行目のように、有効スケール範囲フィールド304を「ー1.0」など負の値とする。リンク先ファイルフィールド306は、リンク先の階層データのファイル名を指定する。図8における矢印Bのリンクの例では、画像156の階層データのファイル名に相当する。リンク先画像フレームフィールド308は、階層データの切り替え後の表示画像、すなわちリンク先のリンク領域のフレームのフレーム定義パラメータを指定する。
リンク設定ファイルはリンク元の階層データごとに作成する。すなわち図8における矢印AおよびCのリンクの情報は画像156の階層データのリンク設定ファイル、矢印Bのリンク情報は画像158の階層データのリンク設定ファイルに、それぞれ記述される。各ファイルは対応する階層データと関連づけて保存する。このようにすることで、双方向にリンクが設定されていてもその動きは独立とすることができる。例えば図8において矢印Aの遷移におけるリンク領域A、Bと、矢印Bの遷移におけるリンク領域A、Bは領域や解像度を異ならせることができる。図8の例では画像160にリンク設定ファイルが付加されていないため、画像160へ遷移した後はその中で画像表示その他で楽しむことになる。
このようなリンク設定ファイルをあらかじめ作成しておくことにより、リンク判定部116は、先読み処理部110からの問い合わせに応じて、先読み処理によって予測された領域が、リンク設定ファイルにおいて設定されたリンク領域を含むか否かを確認する。含む場合はリンク先の階層データのファイル名、リンク先のリンク領域のフレーム定義パラメータを返す。先読み処理部110はリンク領域を含まない場合と同様に当該情報をデコード部112に渡す。デコード部112はリンク先のリンク領域のデータをメインメモリ60より読み込みデコードする。
同様にリンク判定部116は、ロードブロック決定部106からの問い合わせに応じて、ロードすべきポイントがリンク領域に含まれるか否かを確認する。含まれる場合はリンク先の階層データのファイル名を返す。この際、ロードすべきポイントのリンク元の画像における座標をリンク先の画像における座標に変換して当該情報も返信する。ロードブロック決定部106は、リンク先画像の階層データのうち、座標変換されたロードすべきポイントを含む画像ブロックをハードディスクドライブ50からメインメモリ60にロードする。
ここで、ロードブロック決定部106およびリンク判定部116が行う、画像ブロックのロード処理について説明する。図15は2つの階層データにリンクが設定されているときのロードすべきポイントを模式的に示している。メインメモリ60には、基本的には現在表示されている表示画像の周辺の画像の圧縮データがロードされていることが望ましい。ここで「周辺」とは、同一階層の画像における上下左右(X軸、Y軸)方向と、階層構造の深さ(Z軸)方向の周辺を含んでよい。Z軸方向の周辺とは、表示画像およびその近傍を含む拡大画像および縮小画像を意味する。
図15において、2つの三角形は図7と同様、階層データ184および186を表している。またこれらの階層データ184、186には線188のようなリンクが設定されている。現在の表示画像を線190とすると、例えば同図の白丸192および黒丸194のポイントを含む画像ブロックをメインメモリ60にロードするようにする。すなわち、表示中の階層を中心とした上下の所定数の階層において、現在の表示画像の領域から所定の範囲内にある数ポイントをロードすべきポイントとして決定する。
図15の例では、表示画像と同一階層では5つのポイント、それより1つ上、または下の階層では3つのポイント、2つ上、または2つ下の階層では1つのポイントが白丸192および黒丸194で表されている。実際には図の水平面上にさらにポイントが存在する。ここで図のように線188でリンクが設定されている場合、現在の表示画像が階層データ184のものであっても、一つ下の階層において決定したポイントがリンク領域に含まれるため、階層データ186のうち、階層データ184の当該ポイントに対応するポイントを含む画像ブロックをロードする。2つ下の階層のロードすべきポイントも同様である。同図では、現在表示中の階層データ184におけるロードすべきポイントを白丸192、上述のようにリンク先の階層データ186の座標へ変換されたポイントを黒丸194で示している。
ロードすべきポイントの決定および当該ポイントを含む画像ブロックのロードは、所定の時間間隔で随時行ってよい。必要な領域のデータをロードするために、ハードディスクドライブ50に画像ブロックを格納する際、各画像ブロックの画像上の領域と画像ブロックの格納領域とを対応付けた情報もハードディスクドライブ50に格納しておく。同様に、ロードされた画像ブロックも、各画像ブロックの画像上の領域と画像ブロックの格納領域とを対応付けた情報をメインメモリ60に格納しておく。ロードブロック決定部106は定期的に、ロードすべきポイントを含む画像ブロックがメインメモリ60に格納されているか否かを確認し、格納されていなければ当該画像ブロックをロード対象として決定する。このように画像ブロックの単位でのロードを随時行うことにより、ロード処理による表示の待ち時間発生を抑制できる。
また、図15のように、ロードすべきポイントがリンク先の画像の階層データ186に新たに含まれる場合は、現在表示中の階層データ184のデータより優先して当該リンク先のデータをロードするようにしてもよい。これにより、すぐにリンク先への移行が発生しても、リンク先の新たな画像を円滑に表示させることができる。
次にリンク元の階層データにおけるロードすべきポイントの座標を、リンク先の階層データにおけ座標に変換する手法について説明する。図16はリンク元画像からリンク先画像へのXY座標の変換手法を説明するための図である。同図において、画像156のリンク領域200が画像158のリンク領域204に切り替わるようにリンクが設定されており、画像156のポイント196は、画像158のポイント198に対応するとする。ここでポイント196の座標を(Pa_x,Pa_y)、リンク領域200の辺の長さを(La_sx,La_sy)、当該領域の中心座標を(La_x,La_y)とし、ポイント198の座標を(Pb_x,Pb_y)、リンク領域204の辺の長さを(Lb_sx,Lb_sy)、当該領域の中心座標を(Lb_x,Lb_y)とすると、次のような式が成り立つ。
La_sx:(Pa_x−La_x)=Lb_sx:(Pb_x−Lb_x) (式1)
La_sy:(Pa_y−La_y)=Lb_sy:(Pb_y−Lb_y) (式2)
よってポイント198の座標は次のように求められる。
Pb_x=(Lb_sx/La_sx)×(Pa_x−La_x)+Lb_x (式3)
Pb_y=(Lb_sy/La_sy)×(Pa_y−La_y)+Lb_y (式4)
図17はリンク元画像からリンク先画像へのZ座標の変換手法を説明するための図である。階層データ184と階層データ186は線208においてリンクが設定されているとする。すなわち線208の位置は、階層データ184のリンク領域および階層データ186のリンク領域を示している。ここで変数「lod」を次のように定義する。
lod=log2Np
ここでNpは、対象となる解像度の画像の1画素の幅に含まれる、各階層データにおいて最も下層の画像、すなわち最も解像度の高い画像の画素数である。したがって変数lodは、階層データを表す三角形において底辺からの隔たりを表す指標であり、各階層データに含まれる階層の数などに依存しない、Z軸方向の共通の軸を有する。
一方、線208で表されるリンク領域の拡大縮小率から、変換したいポイントの拡大縮小率までの隔たりは、階層データに依存しない。ここでリンク領域のlodの値は、当該領域を画面いっぱいに表示した時のものとする。図17において、階層データ184、186双方における、リンク領域のlodの値をLa_lod、Lb_lodとし、変換したいポイント210のlodの値をPa_lod、Pb_lodとすると、上記の性質によって次の式が成り立つ。
Pa_lod−La_lod=Pb_lod−Lb_lod (式5)
したがって、
Pb_lod=Lb_lod+(Pa_lod−La_lod) (式6)
となる。
式3、4、および6により、現在表示中の画像の階層データにおけるロードすべきポイントの座標を、リンク先の階層データにおける座標に置き換えることができる。ただし得られたPb_lodは階層データ186のうち画像データを有する階層上にあるとは限らないため、実際にはPb_lodから得られる位置に最も近い階層のデータをロードすることになる。
これまで述べた例では、2つの階層データ表示対象として扱い、一方の画像においてあらかじめ設定された領域および拡大率に表示画像が到達すると、他方の画像が表示された。すなわち他方の画像によって表示されている物をさらに拡大したり、全く別のコンテンツを表示させたり、といったことを、表示画像移動の指示入力をきっかけとして行うことができる。ここで同時に表示対象とする階層データは3つ以上としてもよく、また、拡大率を変化させていくと元の画像に戻るなど、循環させるようにリンクを設定してもよい。この場合、リンクが設定された複数の階層データを順に拡大していくと元の階層データに戻ったり、ある階層データで拡大していくと、当該階層データの縮小画像に戻ったり、といった表示ができる。後者の場合、自らのリンク設定ファイルのリンク先ファイルフィールドで自らのファイル名を指定すればよい。
このような機構を用いて例えば以下のような表示を行うことができる。
1.世界地図を拡大していくことにより、日本、県、市、町、建物へ表示を移行させるなど、同一の対象物であるがスケールが著しく異なる画像の連続移行
2.情報処理装置、ゲーム装置などのメニュー画面において表示された選択肢たるアイコンを拡大していくと、説明書など当該アイコンに関連する情報表示に移行
3.雑誌のバックナンバーなど書籍の表紙一覧画面からある表紙を拡大していくと、書籍の内容表示に移行
4.人物の瞳など画像中の対象物を拡大していくと、当該対象物の中や写っている風景などに表示が移行、移行先の画像を縮小していくと元の画像とは異なる画像へと移行
本実施の形態では、上記の先読み処理によりリンク領域へ表示画像が変更されることを予測する。さらに現在の表示画像の仮想空間における周囲を、階層データに関わらずメモリにロードしておく。これらの機構により、異なる階層データの画像へ表示を移行する場合であっても、ロード処理、デコード処理による表示の遅れが発生しにくく、連続的な移行が可能となる。
また、上述のようにユーザからの画像変更要求信号と伝達関数を畳み込み演算することにより表示画像の生成を遅延させる場合、伝達関数を調整することにより、画像の切り替えをより円滑に行うように見せることができる。さらにマニュアル表示など、リンク元の画像とリンク先の画像が異なる内容の場合は特に、それらの画像をクロスフェード、ディゾルブ、ワイプ、ポリゴンメッシュを用いたページめくり状表現など、動画のスイッチャーに一般的に用いられる効果のいずれかを施すことにより円滑な切り替えを表現するようにしてもよい。
またリンク先として動画データを設定してもよい。この場合リンク先を、1階層の動画のデータからなる階層データ、と捉えることができる。例えばある静止画像の一領域に動画データへのリンクを設定しておく。リンク設定ファイルは図14で示したデータ構造を利用することができる。リンク先ファイルフィールド306には動画ファイルのファイル名を指定する。リンク先画像フレームフィールド308は、動画の解像度や表示領域を固定とする場合は無効としてもよい。このようにリンクを設定しておき、上述の先読み処理により表示中の画像のリンク領域に表示画像が移ると予測された際に、指定しておいた動画ファイルのエンコードを開始する。または予測とは関係なくエンコード処理のみ継続させておいてもよい。
例えば画面中にいくつかの静止画像、例えばグラビア写真などを表示し、ある静止画像をズームインしていくと当該画像中の動物が動き出す、などの演出を行うことができる。同様に、リンク情報のリンク先ファイルフィールド306にアプリケーションファイルを指定しておき、画像中のある領域をズームインすると当該アプリケーションが起動するようにしてもよい。
図18はリンク領域が設定されている画像の例を示している。画像350にはリンク領域352a、352b、352cなど複数のリンク領域が設定されている。例えばリンク領域352aへズームインしていくと、上述のような機構により、当該領域のより詳細な画像や関連情報、あるいは動画再生やアプリケーション起動が行われる。画像350のようにリンク領域が限定的な場合、ユーザの位置合わせの手間を削減するために表示画像の移動を誘導してもよい。この機能はリンク領域が限定的でない場合でも、表示画像を意図的に誘導したい場合などに有効である。
この誘導機能を提供するため、上述のリンク情報で用いたフレーム定義パラメータを利用する。すなわち誘導したい領域(以後、誘導領域と呼ぶ)ごとに、(横方向オフセット,縦方向オフセット,拡大率,回転角)で表されるフレーム定義パラメータを、リンク情報と同様にファイルとして作成しておく。当該ファイルは図9のメインメモリ60においてシナリオ設定ファイル119として格納されている。そして表示領域がシナリオ設定ファイルで設定されたフレームに対し仮想空間において所定の範囲内に入ったら誘導領域へ表示画像を誘導する。当該処理は、仮想的に誘導領域への画像移動要求信号を発生させれば上述と同様の処理によって実現できる。また「所定の範囲」もフレーム定義パラメータでシナリオ設定ファイルに定義しておく。
これによりユーザが表示画像をリンク領域352a近傍に近づけるのみで、表示画像がリンク領域へ誘導され、その結果、設定されたリンク先へ容易に移行することができ、操作性が向上する。本実施の形態では、表示画像の仮想空間内での移動をきっかけとして、リンク先である別の画像への移行、動画再生、アプリケーションの起動などを行うため、上述のような移動の先読み処理により、あらかじめユーザの意向を予測することができる。したがって、別の画像データのデコード、動画データのデコード、アプリケーションの起動処理を、実際にリンク先へ表示を切り替える前に投機的に実行しておくことが可能である。これにより、ポインタなどによってアイコンを選択してから処理を開始する従来の手法に比べ、実際の画像の切り替え指示から出力までに要する時間を格段に削減することができる。
上記の例はリンク先へ移行したいというユーザの意図を検知して表示画像をリンク領域へ誘導するものであった。一方、同様の機構により、リンク領域か否かに関わらず表示画像を誘導するようにしてもよい。図19は一つの階層データにおいて表示画像を誘導しながら、表示する階層を移行していく様子を示している。同図において階層データ360は画像362に対応する。そして上述のフレーム定義パラメータによって、線368および線370で表される誘導領域374および376がシナリオ設定ファイル119に設定されており、現在表示中の領域372が線366に対応するとする。
ユーザが領域372から表示画像を拡大していき、誘導領域374から所定の範囲に表示画像が入った際、表示画像を誘導領域374に誘導する(矢印D)。さらに拡大していき、誘導領域376から所定の範囲に表示画像が入った際、表示画像を誘導領域376に誘導する(矢印E)。この態様は、表示する画像の内容によって様々な目的で利用することができる。
例えば風景写真やボートレートなどでは、ユーザが拡大したい領域は限定的である場合が多い。ところが画面を拡大縮小する従来の技術では、所望の領域を拡大したつもりが表示画像がずれており、そのときの拡大率では所望の領域を探すことが困難な場合がある。本実施の形態で拡大が予測される領域についてはあらかじめシナリオ設定ファイルに登録しておけば、ユーザが表示画像を当該領域におよそ移動させて拡大指示を入力することにより、当該領域を正確に拡大することができる。なお表示画像の誘導領域への誘導は、表示画像が誘導領域の近傍にある場合ばかりでなく、例えば所定のボタンを押下すると現在の表示画像の位置に関わらず誘導領域へ移動するようにしてもよい。
上述の誘導は必ずしも異なる階層への誘導でなくてもよく、例えば同一階層内で表示順序を誘導するようにすることもできる。図20は異なる階層への誘導と同一階層における別領域への誘導を組み合わせた場合の表示画像の移行の様子を示している。例えば新聞記事や雑誌などの1ページを階層データ380を用いて表示する場合を考える。このとき、拡大して閲読されるであろう文字の領域を、記事ごとに誘導領域として設定しておく。同図では線386で表される誘導領域392がそれにあたる。さらにその下の階層、すなわち文字を判読できる程度の解像度を有する階層において、記事の最初から最後までを追えるように複数の誘導領域を設定しておく。線388で表される誘導領域394と、線390で表される誘導領域396がそれにあたる。
ユーザはまず線384で表されるページ全体の領域382を表示した後、所望の記事へ表示画像を近づけつつ拡大していく。すると当該記事の誘導領域392へ誘導される(矢印F)。そこでさらに拡大していくと当該記事の文頭の誘導領域394へ誘導される(矢印G)。誘導領域394内の文章を読んだユーザが方向指示や所定のボタンを押下する入力を行うことにより、続きの文章が記載された誘導領域396へ誘導される(矢印H)。
同一階層内での表示領域の移行では、フレーム定義パラメータとともに表示順序も設定する。また上述のように表示領域の移動を指示するための操作キーも定義しておく。例えば新聞記事など段組で記載されている文章は、表示領域を右から左に移動させた後、その下方を再度右から左に移動させる必要がある。このような場合に表示領域と順序とをあらかじめ設定しておけば、拡大画像において次にどの位置へ表示画像を移動させればよいかユーザが探す必要がなくなる。また同一階層内の移動であっても、上述のとおり現在の表示画像が誘導領域の所定範囲に入ったときに誘導するようにしてもよい。
なお図19、20では、簡単のために一つの階層データにおける表示画像の移行を示したが、移行の途中に別の階層データへのリンクが設定されている場合は、当然当該別の階層データへ表示を移行させてよい。また上記の例は、ユーザが拡大縮小を含む画像移動要求を行った際に表示画像を誘導するものであった。本実施の形態ではさらに、所定時間ごとにあらかじめ登録しておいた誘導領域へ表示画像を移行する機能を設ける。この場合ユーザは、そのようなモードを実行する旨の指示入力を行うのみでよい。この機能により、雑誌の販売促進用画像や写真の連続閲覧など、静止画からなる素材を利用した動画に近い新たな表現手法を提供することができる。
このように自動的に表示画像を移行する場合は、フレーム定義パラメータ、表示順序、および各画像の表示時間などをシナリオ設定ファイル119として作成する。この場合のシナリオ設定ファイル119は、より細かく画像の移行を制御する処理をXMLなどのマークアップ言語で記述してもよい。このとき、シナリオ解釈部117は、当該記述をメインメモリ60より読み出し解釈したうえ、表示画像処理部114、リンク判定部116、ロード部108に適宜処理要求を行うことにより、表示画像を制御する。図21はこのとき記述される処理の流れを示すフローチャートである。
まず階層データを指定する(S20)。ここで指定する階層データは一つの画像を表す一つの階層データでもよいし、リンクが設定された複数の階層データのまとまりでもよい。次に、表示する画像をフレーム定義パラメータで指定する(S22)。さらに当該画像を表示する際のエフェクト処理を適宜指定する(S24)。それ以前に別の画像が表示されていれば、例えばクロスフェードの処理を指定したり、前の画像を徐々に小さくしつつ今回の画像を大きくしていく処理を指定したりする。そして、次の画像へ表示を移行するまでの時間、およびその時間における今回の画像と次の画像の補完処理を指定する(S26)。ここで「次の画像」は例えば今回の画像の拡大画像や縮小画像など、同一の階層データにおいて階層の異なる画像やリンク先の画像であってもよいし別の階層データ内の画像でもよい。
画像の補完手法は、今回の画像と次の画像をキーフレームとした場合にアニメーション技術などで一般的に用いられる手法を適用することができる。S20からS26までの処理を一単位として、異なる階層データで連続して表示したい画像があればそれを繰り返すように記述する。このように記述したシナリオ設定ファイル119を先読み処理部110が読み込むことにより、ユーザが画像移動要求を入力した場合と同様に仮想の画像移動要求を生成して、リンク判定部116に問い合わせつつデコード部112にデコード処理を依頼する。これによって、指定した画像が表示画像として次々変化する態様が容易に実現できる。なお、このときのシナリオ設定ファイルには、フレーム定義パラメータと別に、画像描画に用いる階層データの階層数を指定するようにしてもよい。
以下にXMLで記述されたシナリオ設定ファイル119の例を示す。
(1)<?xml version="1.0" encoding="utf-8"?>
(2)<Viewer>
(3) <FileList>
(4) <File name="INDEX"/>
(5) <File name="hyoshi"/>
(6) <File name="ichiran"/>
(7) </FileList>
(8) <InitCameraPosition x="-0.219" y="0.32" scale="0.28"/>
(9) <Section>
(10) <Event type="change" name="INDEX" wait="0.0">
(11) <CameraPosition x="-0.219" y="0.32" scale="0.28"/>
(12) </Event>
(13) </Section>
(14) <Section>
(15) <Event type="camera" name="camera1" wait="0.0">
(16) <Interpolator
(17) duration='4.0'
(18) type='linear'
(19) key='0 0.5 1.0'
(20) keyValue='
(21) -0.219 0.32 0.28
(22) -0.115955 0.29424 0.2
(23) -0.115955 0.29424 0.155553
(24) '/>
(25) </Event>
(26) </Section>
(27) <Section>
(28) <Event type="change" name="hyoshi" wait="0.0">
(29) <CameraPosition x="0.01257207987839" y="-0.00214762229374"
scale="0.94793879664622"/>
(30) </Event>
(31) </Section>
(32) <Section>
(33) <Event type="change" name="09france-ichiran" wait="2.0">
(34) <CameraPosition x="-0.007705" y="-0.008650" scale="0.508980"/>
(35) <VideoPosition name="video:sample.m2v" x="0.135605" y="-0.035605"
scale="0.061268"/>
(36) <Effect type="fade0"/>
(37) </Event>
(38) </Section>
(39) <Section>
(40) <Event type="image" name="tbs01.png" wait="0.0">
(41) <Position x="0.971875" y="-0.95" alpha="0.0" layer="1003"
cardinal="rightbottom"/>
(42) </Event>
(43) </Section>
(44) </Story>
(45)</Viewer>
上記記述において、(3)〜(7)はコンテンツ中で使用する階層データを指定している。(8)は画像の初期位置を指定している。(9)〜(13)は最初に使用する画像をインデックス表示した階層データの画像としており、表示する階層データの画像とその表示位置を指定している。(14)〜(31)は、本の表紙の階層データの画像にカメラアニメーションしながらズームしていきデータを移り変わらせている。そのうち(14)〜(26)はキーフレーム表記にてカメラアニメーションを指定している。(27)〜(31)は表示する階層データの画像とその表示位置を指定し、当該表示位置を利用してリンクを張っている。(32)〜(38)は、動画像へのリンクを含んだ階層データの画像に切り替わり動画をアップで写している。そのうち(32)〜(35)は階層データの画像へのリンクと同様に動画像へのリンクを張っている。(36)は画面切り換え時の描画効果を指定している。(39)〜(43)は動画像表示中に動画像の著作権表示画像を表示している。そのうち(40)〜(41)は、 階層構造を持たない普通の画像の表示を指定している。
本実施の形態は、上述のようなリンク設定ファイルやシナリオ設定ファイルを作成することにより、複数の階層データを素材として様々な画像表現を容易に実現することができる。したがって一般的なユーザが、ネットワーク上や記録媒体などでコンテンツとして提供された階層データを用いて、独自のコンテンツを作成することも考えられる。また、そのようにして作成したコンテンツ自体が流通する場合も考えられる。
図22は本実施の形態を実現する際のデータの流通態様の例を模式的に示している。この例では、サーバ400、402、および404がネットワーク420を介して接続している。各サーバはコンテンツ制作業者のサーバでもよいし、一般ユーザの情報端末などでもよい。またサーバに代わりCD−ROMやDVDなどの記録媒体でもよい。サーバ400は、階層データ406aとそれに付加した属性ファイル408aからなるコンテンツを提供する。属性ファイル408aについては後に述べる。サーバ402は複数の階層データからなる階層データ406bと、それらのリンク情報を設定したリンク設定ファイル410b、410c、シナリオ設定ファイル412b、属性ファイル408bを付加したコンテンツを提供する。
なお同図のように、階層データ406bにリンクが設定されている場合、上述のようにリンク設定ファイル410b、410cは階層データごとに付加される。一方、シナリオ設定ファイルは当該リンクを前提に階層データを跨いだ設定が可能であるためリンクが設定されている階層データ全体に対して付加される。
サーバ404は、シナリオ設定ファイル412cのみを提供する。なお同図のデータ構造はあくまで例示であり、例えばリンクが設定されていない単独の階層データにシナリオ設定ファイルが付加されていてもよいし、逆にシナリオ設定ファイルが付加されずにリンク設定ファイルが付加されていてもよい。サーバ400やサーバ402が保持するコンテンツは、それのみでも表示が可能であるが、サーバ404のシナリオ設定ファイル412cにおける設定に含まれていれば、当該シナリオ設定ファイル412cと、それにより指定された階層データ406aや406bとを入手することにより、ひとつのコンテンツが生成されることになる。したがって図22で表されたデータ構造はそのいずれもが一つのコンテンツとして流通の単位になり得る。
このような場合を考慮し、階層データには属性ファイルを付加しておく。属性ファイルに記録する情報としては例えば、当該コンテンツの内容に係る情報、例えばコンテンツの名称、作者、発行者、協賛者、作成日、修正日、版、記述言語などの基本情報、コンテンツや素材データの権利者、課金の還元のための情報、二次利用の際の制御のための情報、有効期限、コピー可能回数、譲渡可能回数などの所有権・著作権情報、レイティングなどが挙げられる。
また、当該コンテンツの制御属性、例えば接続やデータ利用の許可、暗号化の方式、署名などの認証制御情報、従量課金か否か、上限を設定するか、無料とするか、仮想通貨か否かを含む通貨の指定、チャージか引き落としか小切手方式かといった決済方法といった課金に係る情報、プラットフォーム、OS、推奨リソースなどの動作環境、対象利用者、有効地域、国などのアクセス制御情報などを付加してもよい。さらに、属性情報の領域と階層データの領域、外部参照リンク情報などコンテンツの構造、コンテンツの名称、代表画像、課金案内、属性のサマリーなどを表したサムネイルの情報、フレーム情報の格納場所の情報、といったデータ構造情報を付加してもよい。
これらの属性を個々の階層データに付加しておくことにより、例えばその階層データをリンク先とした複数の階層データからなるコンテンツを作成して表示する際、リンク先ごとに適切な処置を講じることができる。例えば著作権の対象であるコンテンツをリンク先として移行する場合はその旨の表示を必ず行うようにしたり、認証の必要が設定されているコンテンツはまず認証のためのダイアログを表示したりする。またレイティングと閲覧者のプロフィールなどによって表示の可、不可を決定し、不可であれば当該画像は表示しないようにしてもよい。表示を不可とする場合は、リンク領域に表示画像があってもリンク先への遷移はせず、元の階層データの画像が単に拡縮されるのみとしてもよい。属性情報に従った各種処理は、一般的なコンテンツの表示における処理と同様の機構により実施することができる。
なお、リンクを設定した複数の階層データは全体として一つのコンテンツを形成するため、属性ファイルは個々の階層データに付加するほか、当該複数の階層データ全体にも付加する。
次に、これまで述べた実施形態を含む、階層データを利用したコンテンツをユーザが制作するための支援技術について説明する。図23は、本実施の形態におけるコンテンツ制作支援機能を有する画像処理装置の構成を示している。なお同図に示す画像処理装置500は、実際には図4に示した画像処理装置10と同じ構成を有していてよいが、ここでは本実施の形態を実現するために備える機能ブロックのみを示している。したがって図21の制御部502は、図9に示した制御部100と同一のプロセッサで実現してもよい。あるいは別個の装置としてもよい。
画像処理装置500は、以下に述べる機能のいずれかまたは組み合わせを有する。
1.誘導領域の設定を受け付け、シナリオ設定ファイルを生成、更新する
2.リンク領域の設定を受け付け、リンク設定ファイルを生成、更新する
3.複数の画像選択を受け付け、それらの画像を選択できるインデックス画像を、リンクを設定したうえで生成する
画像処理装置500は、入力装置520、制御部502、ハードディスクドライブ550、およびメインメモリ560を備える。ハードディスクドライブ550には、既存の階層データ551が格納されている。階層データ同士にリンクが設定されていてもよい。入力装置520は、上述した機能の選択、画像領域の選択、各種設定の指示をユーザが入力するためのインターフェースであり、例えば図2に示した外観構成を有していていよい。制御部502は、入力情報取得部504、設定画像表示部506、設定情報登録部508を含む。入力情報取得部504は、ユーザが入力装置520へ入力した情報を取得し、その内容に応じて設定画像表示部506および設定情報登録部508へ適宜処理要求を行う。
設定画像表示部506は、ユーザが誘導領域、あるいはリンク領域を設定したい旨の入力を行った場合に、ユーザが選択した画像の階層データをハードディスクドライブ550から読み出し、表示する。またユーザからの画面移動要求に従い表示画像を移動させたり、領域を指定するための矩形をポインタの位置情報に合わせて表示したりする。設定情報登録部508は、ユーザが画像内の領域を指定してリンク領域あるいは誘導領域の設定指示を行った場合に、当該領域のフレーム定義パラメータを取得し、リンク設定ファイル562またはシナリオ設定ファイル564を生成してメインメモリ560に格納する。
設定情報登録部508はまた、ユーザが複数の画像を選択した場合に、当該画像の解像度を適宜選択して所定のフォーマットに並べたインデックス画像データ566を例えば階層データとして生成してメインメモリ560に格納する。このとき、生成したインデックス画像の階層データとそれに含まれる個々の画像(以後、「個別画像」と呼ぶ)の階層データとの間にリンクを設定したリンク設定ファイル562も同時に生成してメインメモリ560に格納する。なお上述のように、リンク設定ファイル562、シナリオ設定ファイル564、インデックス画像データ566はメインメモリ560に格納して画像の表示に用いるばかりでなく、ハードディスクドライブ550や別の記録媒体に記録してもよい。このとき、設定対象の階層データ本体とまとめて一つのコンテンツとしてもよい。
図24は上記1の、誘導領域の設定を受け付け、シナリオ設定ファイルを生成、更新する処理の手順例を説明する図である。まずユーザは入力装置520に対し対象となる画像の階層データを選択する。入力情報取得部504から当該情報を得た設定画像表示部506は、ハードディスクドライブ550から階層データを読み出して表示する。図24の画像570は選択された画像の全体を表している。ユーザは設定画像表示部506の表示を確認しながら画像移動要求を入力装置520に対して行い、例えば誘導領域として設定したい領域572が画面いっぱいに表示されるようにしたあと所定の設定用ボタンを押下する。この処理に代わりポインタ操作により領域を囲む矩形を描画させて設定用ボタンを押下するようにしてもよい。
すると設定情報登録部508は、当該領域のフレーム定義パラメータを取得し、シナリオ設定ファイル564に記録する。ユーザは必要に応じてまた別の領域574を選択し設定用ボタンを押下する。すると設定情報登録部508は、当該領域のフレーム定義パラメータをシナリオ設定ファイル564の次の行に追加する。これを繰り返すことにより、所望の領域を全てシナリオ設定ファイル564に記録する。このようにして生成されたシナリオ設定ファイル564によって、上述のように、表示したい領域を、領域572、574、・・・といった順序で、所望の解像度で順次表示していくことができる。
また、上述のように各領域の表示時間、画像を補間するアニメーション処理、エフェクト処理など表示を制御する処理を記述したマークアップ言語を生成するようにしてもよい。そのためにあらかじめ、サンプル画像による画像処理のバリエーションを表示して、ユーザにより所望の処理を選択させるようにしてもよい。選択された処理は、誘導領域のフレーム定義パラメータとともにシナリオ設定ファイル564に記録する。
図25は上記2の、リンク領域の設定を受け付け、リンク設定ファイルを生成、更新する処理の手順例を説明する図である。まずユーザは入力装置520に対し、リンクを設定する対象となる2つの画像の2つの階層データを選択する入力を行う。入力情報取得部504から当該情報を得た設定画像表示部506は、ハードディスクドライブ550から当該階層データを読み出して2画面表示する。図25の画像582および画像584は、選択された画像を表している。ユーザは設定画像表示部506の表示を確認しながら画像582の画像移動要求を入力装置520に対して行い、リンク領域として設定したい領域586を含む画像を表示させる。そしてポインタ操作により領域を囲む矩形を描画させて領域選択を行う。画像584についても同様に領域588を選択する。その後、所定の設定用ボタンを押下する。
すると設定情報登録部508は、領域586、588のフレーム定義パラメータを取得し、図14に示したようなデータ構造でリンク設定ファイル562に記録する。例えばリンク元画像を設定画像表示部506の左側、リンク先画像を設定画像表示部506の右側に表示するように規則づける、当該リンクが画像の拡大方向か縮小方向かをユーザに選択させる、などの措置により、有効スケール範囲フィールド304およびリンク先ファイルフィールド306に指定する情報も取得して記録する。このようにして生成されたリンク設定ファイル562によって、画像582と画像584間にリンクが設定され、上述のように領域586にズームインしていくと、画像584の階層データへ画像表示に用いるデータが移行し、さらなる拡大率の画像を表示することができる。
なお上述の例は画像のデータ同士にリンクを設定する場合を示したが、リンク先は画像に限らず、動画、アプリケーション、音声、音楽、テキストなどのデータでもよい。この場合はリンク元の画像を画像582のように表示し、リンク先となり得るデータを表すアイコンなどを画像584に代わり表示してユーザに選択させるようにしてもよい。このときリンク設定ファイル562には上述のように、選択されたアイコンに対応するデータのファイル名がリンク先ファイルフィールド306に記録され、リンク先画像フレームフィールド308は無効でよい。
また、領域586および588がユーザより選択された際、各領域に表示されている対象物の特徴点を抽出しマッチングを行うことにより、対象物が2つの画像で完全に重なるようにフレーム定義パラメータを仮想空間上で微調整するようにしてもよい。これにより、リンクによる画像移行時に対象物にずれが生じ、切り替え処理が明らかになるのを防止できる。この処理は、2つの画像の対象物が同一の場合に限らず、ある対象物が変化していくように2つの画像をクロスフェードしてつなげる場合にも有効である。また、図25では2つの画像からそれぞれ1つずつ領域を選択してリンクを設定したが、画像の数は3つ以上でもよく、1つの画像内でリンク領域を複数個設定するようにしてもよい。この場合も上述の処理を繰り返せば実現できる。
さらに、リンク設定対象の階層データに上述のように属性情報が付加されている場合は、当該情報のうち必要なものをどこで表示するか、といった情報をユーザに入力させるためのダイアログを表示するようにしてもよい。ユーザにより当該情報が入力されたら、この情報もリンク設定ファイル562に記録しておき、リンク先への表示画像の移行の際には適宜表示するようにしてもよい。
図26は上記3の、複数の画像選択を受け付け、それらの画像を選択できるインデックス画像を、リンクを設定したうえで生成する処理態様を説明する図である。このときユーザは入力装置520に対しインデックスを生成したい複数の個別画像の階層データを選択する。すると設定情報登録部508は、例えば選択された階層データの最も解像度の低い画像など、インデックスとして適当な解像度の個別画像を埋め込んだインデックス画像、例えば図18で示した画像350の如き画像をインデックス画像データ566として生成し、メインメモリ560に格納する。同図において領域352a、352b、352cなどはユーザが選択した個別画像である。
階層データ590は既存のものをユーザが選択するようにしてもよい。例えば美術館の壁の画像を階層データ590として選択し、個別画像を壁の額縁内に配置するようにすれば、美術館の壁に個別画像が飾られている画像が生成されることになる。インデックス画像のどこに個別画像を配置するか、各画像のサイズといった情報も、さらにユーザから受け付けてもよい。この場合、設定情報登録部508は、ユーザの指定に応じた位置、サイズで個別画像を埋め込んだインデックス画像データを生成する。
設定情報登録部508はさらに、生成したインデックス画像の階層データ590において個別画像を埋め込んだ位置に、各個別画像の階層データ592a、592b、・・・、592nへのリンクを設定したリンク設定ファイル562を生成してメインメモリ560に格納する。このようにして生成されたインデックス画像データ566およびリンク設定ファイル562によって、インデックス画像内のある個別画像へズームインしていくと、当該個別画像の階層データ592aなどへ表示が移行し、さらなる拡大率の画像を表示したり、動画を再生したりすることができる。インデックス画像データ566、リンク設定ファイル562、および個別画像の階層データを1つのコンテンツとしてハードディスクドライブ550に格納してもよい。
なお、個別画像の階層データ592aなどとインデックス画像の階層データ590との間にリンクを設定せず、個別画像の階層データを全て包含したインデックス画像の階層データを生成するようにしてもよい。また、既存の複数のインデックス画像を埋め込んだインデックス画像を生成してもよい。この場合の処理も、個別画像の代わりにインデックス画像を選択可能とすることにより同様に実現できる。
以上述べた本実施の形態によれば、2つの画像の階層データにリンクを設定し、平行移動、拡大、縮小の指示入力のみで、表示画像の描画に用いる階層データを移行する。このようにすることで、拡大すると無意味になってしまう領域の高解像度画像など余分なデータを省くことができるためデータサイズを縮小することができる。また世界地図と、あるビルの周辺の地図、といったスケールの著しく異なる画像を別の階層データとすることにより、階層ごとに表示画像の位置制御用の数値を設定しなおすことができ、位置の精度を保持しやすい。
一方、メニューの画像と、当該メニュー上の各アイコンのマニュアルなど、全く異なる画像にリンクを設定した場合などは、拡大、縮小の操作のみで画像の相互移行を実現できることにより、切り替え前の画像における位置情報を念頭に置いたまま別の画像を見ることができる。例えばあるアイコンの機能を調べようと、ヘルプ画面などを表示させ、アイコンの表示と関係のありそうな記述を探し出して読む、といった従来の手法では、アイコンの表示からヘルプ内の記述の表示までにすべき処理が煩雑で、ユーザの思考が途切れやすい。その結果、結局最初に目的としていたことを失念してしまう、といったことも発生する。しかし本実施の形態では、アイコンとマニュアルとが直接結びつくため、直感的な把握が可能となり、作業の効率が向上する。
さらに、拡大、縮小、平行移動などのユーザの操作は、以後の動きを予測できるため、本実施の形態ではそれを先読みすることにより、前もってリンク先の画像のデコードを行う。これにより実際に画像の切り替えが指示されたときには円滑にリンク先の画像の描画が行え、デコード処理待ち時間を削減することができる。このことは、リンク先を動画再生やアプリケーション起動としても同様に有効である。すなわち先読み処理によって、動画再生やアプリケーション起動を前もって行っておくことにより、実際にユーザがリンク先への移行を指示した時点で円滑に出力を行うことができる。このことは、アイコンをクリックすることによって起動を行う従来の手法と比較して格段に処理待ち時間が減り、ユーザのストレスを軽減する効果がある。
また、ユーザの表示画像変更要求信号の入力から画像表示までの時間を、畳み込み演算によって遅延させたり、クロスフェードさせるなど切り替え時に適切な画像エフェクト処理を施すことにより、画像の切り替えが円滑に行われているように演出することができる。結果的に、静止画、動画を問わず、また、画像に限らず音楽やテキストデータなどでも、表示画像の移動操作を利用した新たな入力ツールを提供することができる。
リンクの設定はリンク元およびリンク先の階層データ内のリンク領域を、仮想空間上において定義することによって行うため、一見複雑に見えるリンク構造であっても容易に設定でき、一般ユーザが手軽にコンテンツを制作することができる。当該定義を利用して、階層データ内の領域をいくつか記憶させておくことにより、表示画像を当該領域へ誘導することができる。例えば、表示画像をおよそ位置合わせするのみで、設定されたリンク領域へ誘導することができるため、リンク先への画像の切り替えを短時間に行うことができる。また画像内で見せたい部分などを複数記録したシナリオ設定ファイルを作成することにより、そのような部分を連続表示させることができ、プロモーションやプレゼンテーションなどに効果的なコンテンツを制作することができる。あるいは、段組の記事や閲覧順序が決まっている雑誌のページなどにおいて、文字を判読できる程度に拡大したままで次の領域へ移動することができる。
このようにして制作した、リンク設定がなされた階層データや、シナリオ設定ファイルなど誘導領域の設定がなされた階層データは、それを一つのパッケージとして流通させることができる。一方で、階層データのみ、あるいはシナリオ設定ファイルのみ、といったモジュール単位で流通させることもできる。階層データやコンテンツには、内容に係る情報、制御に係る情報、データの構造情報などの属性情報を各単位ごとに付加しておく。これにより、コンテンツ内に別の著作者による階層データやコンテンツが含まれていた場合に、リンク先への移行を制限したり課金したりすることができる。また各単位で統一的な属性情報のフォーマットを決めておくことにより、それを利用した二次的なコンテンツの作成を効率的に行うことができる。
さらに、コンテンツの制作を支援するために、リンク領域や誘導領域を、実際の画面を表示したうえで選択できるようにし、当該選択によってリンク設定ファイルやシナリオ設定ファイルを所定のフォーマットで生成する。このようにすることで、ユーザは実際の画像を確認しながらイメージをふくらませたうえで設定を容易に行うことができる。リンク領域の設定にあたっては、特徴点の抽出やマッチング処理により2つの画像のリンク領域の位置を微調整する。これにより、画像切り替え時に位置ずれなどを起こさず連続的な移行が可能となり、見る者に画像の切り替わりを気づかせることが少なくなる。
また、ユーザが選択した複数の個別画像を埋め込んだインデックス画像を生成する。そしてインデックス画像と個別画像とのリンク設定ファイルを生成する。これにより、雑誌のバックナンバーの中味を確認しながら所望の一冊を選択するコンテンツ、様々なアプリケーション、動画を起動できるメニュー画面のあるコンテンツ、絵画、小説、人物写真などの解説対象とその解説が切り替わるコンテンツなど、様々なコンテンツを、画像を選択するのみで容易に制作することができる。
以上、本発明を実施の形態をもとに説明した。上記実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
1 画像処理システム、 10 画像処理装置、 12 表示装置、 20 入力装置、 30 第0階層、 32 第1階層、 34 第2階層、 36 第3階層、 38 タイル画像、 44 表示処理部、 50 ハードディスクドライブ、 60 メインメモリ、 70 バッファメモリ、 90 フレームメモリ、 100 制御部、 102 入力情報取得部、 104 圧縮データ分割部、 106 ロードブロック決定部、 108 ロード部、 110 先読み処理部、 112 デコード部、 114 表示画像処理部、 116 リンク判定部、 117 シナリオ解釈部、 118 リンク設定ファイル、 119 シナリオ設定ファイル、 408a 属性ファイル、 500 画像処理装置、 502 制御部、 504 入力情報取得部、 506 設定画像表示部、 508 設定情報登録部、 520 入力装置、 550 ハードディスクドライブ、 560 メインメモリ、 562 リンク設定ファイル、 564 シナリオ設定ファイル、 566 インデックス画像データ。