図1は、本発明の実施例にかかる画像処理システム1の使用環境を示す。画像処理システム1は、入力装置20と、画像処理ソフトウェアを実行する画像処理装置10と、画像処理装置10による処理結果を出力する表示装置12とを備える。表示装置12は、画像を出力するディスプレイおよび音声を出力するスピーカを備えたテレビであってよい。また表示装置12は、コンピュータディスプレイであってもよい。表示装置12は、画像処理装置10に有線ケーブルで接続されてよく、また無線LAN(Local Area Network)などで無線接続されてもよい。なお画像処理装置10、入力装置20および表示装置12は、一体に形成されてもよく、たとえば画像処理機能を搭載した携帯端末装置として構成されてもよい。
画像処理システム1において、画像処理装置10は、ルータ15を介してインターネットなどの外部のネットワーク16に接続する。ネットワーク16には、画像データを提供する提供サーバ18が接続されている。提供サーバ18は、対象物の画像を階層化した圧縮画像データを提供する。たとえば提供サーバ18は、出版社などにより運営され、動物の写真を含む図鑑の画像データをユーザに提供する。画像処理装置10は、提供サーバ18との間で通信接続を確立することで、階層化された圧縮画像データをダウンロードして取得できる。
画像処理装置10は、たとえばゲーム装置であってよく、画像処理用のアプリケーションプログラムをロードすることで画像処理機能を実現してもよい。なお画像処理装置10は、パーソナルコンピュータであってもよく、画像処理用のアプリケーションプログラムをロードすることで画像処理機能を実現してもよい。
画像処理装置10は、ユーザから入力装置20に入力される要求に応じて、表示装置12のディスプレイに表示する画像の拡大/縮小処理や、上下左右方向への移動処理など、表示画像を変更する処理を行う。ユーザが、ディスプレイに表示された画像を見ながら入力装置20を操作すると、入力装置20が、表示画像の変更要求を画像処理装置10に送信する。
圧縮画像データには、対象物画像を表示装置12に表示する際の寸法データが記録されている。複数の対象物が含まれる場合には、それぞれの対象物に対して寸法データが記録されている。なお寸法データは、すべての階層の画像データに対して設定されていてもよく、また複数階層を代表して、たとえば第0階層の画像データに対して設定されていてもよい。また画像データにおける座標値と寸法データとを対応付けたファイルが、圧縮画像データとは別に用意されていてもよい。
本実施例では、寸法データが、対象物の実サイズを表現するように設定される。寸法データは、たとえば高さ方向または横方向のいずれかの長さで定義されてよい。画像処理装置10は、対象物画像の実物大表示の要求を受け付けると、ディスプレイ上において寸法データで指定される大きさとなるように画像データを調整して、表示画像を生成する。これにより、ユーザは、指定した対象物の実物大画像を、ディスプレイ上で見ることができる。
たとえば動物図鑑を開いてみると、開いたページには、様々な動物の写真が載っているが、多くの場合、動物の縮尺は異なって表現されている。たとえば同じページにゾウとネズミの写真があれば、実寸大に対するゾウの縮尺は、ネズミの縮尺よりも小さい。ゾウとネズミは極端に大きさが異なる例ではあるが、鳥図鑑でオームとインコの写真が同じページに載せられる場合も、やはりオームとインコは、それほど変わらない大きさで表現されるため、オームの縮尺は、インコの縮尺よりも小さくなる。このように図鑑では、相対的な大きさよりも、各動物の見やすさを重視して、それぞれの動物の写真が含められるのが通常である。なお、写真図鑑だけでなく、手書き図鑑も同様に、見やすさを重視して作成されている。
そのため、本実施例では、図鑑に含まれる各対象物に対して実寸法を予め設定しておき、各対象物画像を実寸法で表示して、ユーザに対象物の大きさを実感させることのできる画像処理装置10を提供する。なお、以下ではゾウとネズミを並べた動物図鑑を例に説明するが、たとえば画像処理装置10は、絵画や彫刻などの美術品の画像を実物大表示するものであってもよく、また商品カタログに含まれる商品画像を実物大表示するものであってもよい。また本実施例では、対象物の実物大表示を前提に説明するが、たとえば対象物を所定の縮小率または拡大率で表示してもよい。
図2は、入力装置20の外観構成を示す。入力装置20は、ユーザが操作可能な操作手段として、十字キー21、アナログスティック27a、27bと、4種の操作ボタン26を備える。4種の操作ボタン26は、○ボタン22、×ボタン23、□ボタン24および△ボタン25から構成される。
画像処理システム1において、入力装置20の操作手段には、表示画像の拡大/縮小要求、および上下左右方向へのスクロール要求を入力するための機能が割り当てられる。たとえば、表示画像の拡大/縮小要求の入力機能は、右側のアナログスティック27bに割り当てられる。ユーザはアナログスティック27bを手前に引くことで、表示画像の縮小要求を入力でき、また手前から押すことで、表示画像の拡大要求を入力できる。また、表示画像のスクロール要求の入力機能は、左側のアナログスティック27aに割り当てられる。ユーザはアナログスティック27aを上下左右に倒すことで、倒した方向のスクロール要求を入力できる。このようにアナログスティック27a、27bは、表示画像を連続的にスクロールさせ、また連続的に拡大/縮小するために用いられる。
本実施例においては、対象物画像に、ディスプレイに表示する際の寸法データが予め設定されており、入力装置20の操作手段には、指定した対象物画像を実物大表示させる要求を入力するための機能が割り当てられる。たとえば、□ボタン24に、対象物を実物大表示させる要求を入力するための機能が割り当てられてよい。対象物の指定は、ディスプレイに表示された対象物画像上に、たとえばマウスポインタなどのカーソルを動かし、□ボタン24を押下することで行われてもよい。またディスプレイ上の所定位置、たとえば中央位置に対象物画像を動かすことで、対象物の指定が行われるようにしてもよい。
入力装置20は、入力された要求を画像処理装置10に伝送する機能をもち、本実施例では画像処理装置10との間で無線通信可能に構成される。入力装置20と画像処理装置10は、Bluetooth(ブルートゥース)(登録商標)プロトコルやIEEE802.11プロトコルなどを用いて無線接続を確立してもよい。なお入力装置20は、画像処理装置10とケーブルを介して接続して、入力要求を画像処理装置10に伝送してもよい。
図3は、画像処理システム1において使用する画像データの階層構造を示す。画像データは、深さ(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において、階層データは、所定の圧縮形式で圧縮された状態で提供サーバ18から供給される。階層データの階層構造は、図3に示すように、左右方向をX軸、上下方向をY軸、深さ方向をZ軸として設定され、仮想的な3次元空間を構築する。X軸およびY軸は、原点を等しくする共通の座標系を定義する。画像処理装置10は、入力装置20から供給される画像変更要求から表示画像の変更量を導出すると、その変更量を用いて、階層を特定する情報と、その階層におけるテクスチャ座標(UV座標)を導出する。この階層特定情報およびテクスチャ座標の組み合わせを、空間座標と呼ぶ。仮想空間における空間座標は、表示画像の生成処理に利用される。なお画像処理装置10は、表示画像の変更量を用いて仮想空間におけるフレームの4隅の座標を導出してもよい。この4隅のフレーム座標も、空間座標と呼ぶ。
図4は、画像処理装置10の機能ブロック図を示す。画像処理装置10は、無線インタフェース40、スイッチ42、表示処理部44、ハードディスクドライブ50、記録媒体装着部52、ディスクドライブ54、メインメモリ60、バッファメモリ70および制御部100を有して構成される。表示処理部44は、表示装置12のディスプレイに表示するデータをバッファするフレームメモリを有する。
スイッチ42は、イーサネットスイッチ(イーサネットは登録商標)であって、外部の機器と有線または無線で接続して、データの送受信を行うデバイスである。スイッチ42は、ルータ15を介してネットワーク16に接続し、提供サーバ18から階層化された圧縮画像データを受信してもよい。またスイッチ42は無線インタフェース40に接続し、無線インタフェース40は、所定の無線通信プロトコルで入力装置20と接続する。入力装置20においてユーザから入力された要求は、無線インタフェース40、スイッチ42を経由して、制御部100に供給される。
ハードディスクドライブ50は、データを記憶する補助記憶装置として機能する。スイッチ42を介して受信された圧縮画像データは、ハードディスクドライブ50に格納されてもよい。表示処理の実行時、ハードディスクドライブ50に格納された圧縮画像データは、メインメモリ60に読み出される。記録媒体装着部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に接続されて、ユーザからの要求に応じた画像処理結果を出力する。
図5は、階層間の関係を説明するための説明図を示す。この階層データ構造において、各階層はL0(第0階層30)、L1(第1階層32)、L2(第2階層34)、L3(第3階層36)、L4(第4階層)、L5(第5階層)、L6(第6階層)、L7(第7階層)と表現されている。図5に示す階層データ構造において、深さ(Z軸)方向における位置は、解像度を示し、L0に近い位置ほど解像度が低く、L7に近い位置ほど解像度は高い。ディスプレイに表示される画像の大きさに注目すると、深さ方向における位置は、拡大率に対応し、L0の表示画像の拡大率を1とすると、L1における拡大率は4、L2における拡大率は16、L3における拡大率は64、L4における拡大率は256、L5における拡大率は1024、L6における拡大率は4096、L7における拡大率は16384となる。したがって深さ方向において、表示画像がL0側からL7側へ向かう方向に変化する場合、表示画像は拡大していき、L7側からL0側へ向かう方向に変化する場合は、表示画像は縮小していく。
L1〜L7の拡大率は、L0を基準として定義され、表示画像の生成に使用するタイル画像の階層を定めるための判定基準として利用される。第1境界81は拡大率2に設定され、表示画像の要求拡大率が2より小さければ、L0タイル画像が使用される。第2境界82は拡大率8に設定され、表示画像の要求拡大率が2以上であり且つ8より小さければ、L1タイル画像が使用される。第3境界83は拡大率32に設定され、表示画像の要求拡大率が8以上であり且つ32より小さければ、L2タイル画像が使用される。第4境界84は拡大率128に設定され、表示画像の要求拡大率が32以上であり且つ128より小さければ、L3タイル画像が使用される。第5境界85は拡大率512に設定され、表示画像の要求拡大率が128以上であり且つ512より小さければ、L4タイル画像が使用される。第6境界86は拡大率2048に設定され、表示画像の要求拡大率が512以上であり且つ2048より小さければ、L5タイル画像が使用される。第7境界87は拡大率8192に設定され、表示画像の要求拡大率が2048以上であり且つ8192より小さければ、L6タイル画像が使用される。また表示画像の要求拡大率が8192以上であれば、L7タイル画像が使用される。したがって画像処理装置10は、これから表示する画像の要求拡大率が定まれば、その拡大率に対応する解像度のタイル画像をメインメモリ60から読み出して、その拡大率に調整した表示画像を生成することができる。
図6は、画像処理装置10における制御部100の構成を示す。制御部100は、入力信号処理部120および表示画像処理部140を備える。入力信号処理部120は、要求取得部122、対象物特定部124、拡大率決定部126、実寸比算出部128およびディスプレイ解像度導出部130を有する。入力信号処理部120は、ユーザからの入力要求を受け付け、表示処理に必要な情報を表示画像処理部140に供給する。表示画像処理部140は、画像データ取得部142、デコード部144、変更量導出部146、空間座標決定部148、情報付加部150および表示画像生成部152を有する。表示画像処理部140は、タイル画像をメインメモリ60から読み出してデコードし、要求される拡大率に調整した表示画像を生成する。
図6において、さまざまな処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、CPU(Central Processing Unit)、メモリ、その他のLSIで構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。既述したように、制御部100は1つのPPUと複数のSPUとを有し、PPUおよびSPUがそれぞれ単独または協同して、各機能ブロックを構成できる。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
図7は、ゾウとネズミが並んだ画像データの一例を示す。このように動物図鑑では、体長の違うゾウとネズミが似たような大きさに描かれる。実際にはゾウ(たとえばアジアゾウ)の体長は約600cm、ネズミ(たとえばハツカネズミ)の体長は約15cmであり、ネズミの体長はゾウの体長の1/40程度である。このサイズの違いを動物図鑑で忠実に再現すると、ネズミはゾウに比して非常に小さく描かれ、非常に見にくいものとなる。そこで、通常、動物図鑑では、各対象物(動物)の縮尺は統一されず、図7に示すように、大体同じような大きさで描かれることが多い。この画像データのUV座標は、左上隅を(0,0)、左下隅を(0,1)、右上隅を(1,0)、右下隅を(1,1)とする。以下の説明において、画像データのレイアウトは、解像度の異なる各階層において変わりはないものとする。
画像データには、対象物画像の寸法データが埋め込まれている。本実施例において、寸法データは対象物の実寸法を指定するデータである。寸法データは、横方向(U軸)の大きさで表現されてもよく、また縦方向(V軸)の大きさで表現されてもよい。一般に動物は横方向の体長で大きさを表現されることが多いため、本実施例の動物図鑑では、寸法データが全て横方向の大きさで表現されるものとする。なお、キリンなど背の高い動物は、縦方向の体高で大きさを表現されてもよい。
図8は、寸法データが割り当てられる対象物画像の領域を示す。領域200は、ゾウの寸法データが割り当てられるゾウ画像の領域である。領域200は、ゾウ画像を囲む矩形領域として設定され、4隅の座標(u1,v1)、(u1,v2)、(u2,v1)、(u2,v2)で特定される。領域200には、ゾウの寸法データ(600cm)が対応付けられている。領域202は、ネズミの寸法データが割り当てられるネズミ画像の領域である。領域202は、ネズミ画像を囲む矩形領域として設定され、4隅の座標(u3,v3)、(u3,v4)、(u4,v3)、(u4,v4)で特定される。領域202には、ネズミの寸法データ(15cm)が対応付けられている。画像データのデータ構造は、対象物画像の座標情報および寸法データを含んで構成される。既述したように、寸法データは、画像データに埋め込まれていてもよいが、画像データとは別に、対象物画像の寸法データを、対象物画像を囲む矩形領域を特定する座標情報に対応付けて記録したファイルが用意されてもよい。
図9は、寸法データが割り当てられる対象物画像の領域の別の例を示す。領域204は、ゾウの寸法データが割り当てられるゾウ画像の領域である。領域204は、ゾウ画像の輪郭線で閉じた領域として設定される。領域204には、ゾウの寸法データ(600cm)が対応付けられている。領域206は、ネズミの寸法データが割り当てられるネズミ画像の領域である。領域206は、ネズミ画像の輪郭線で閉じた領域として設定される。領域206には、ネズミの寸法データ(15cm)が対応付けられている。なお、以下では理解を容易にするために、図8に示すように対象物画像の領域を設定した例に基づいて説明する。
図10は、図7に示す画像データを表示装置12のディスプレイに表示したときの初期画面例を示す。この初期画面例では、ゾウとネズミとがディスプレイ上で大きく見えるように、画像データの拡大率が調整されている。なお、図7に示す画像データのレイアウトで、初期画面が構成されてもよい。初期画面の生成処理については、後述する。図10において、寸法データが割り当てられている領域200、202を点線で示している。
ディスプレイ上では、ユーザが動かすことのできるマウスポインタなどのカーソル210が表示される。ユーザは入力装置20を操作して、ディスプレイ上でカーソル210を動かす。カーソル210が領域200内に動かされ、所定のボタン、たとえば□ボタン24が押下されると、ゾウ画像が指定され、指定したゾウ画像を実物大表示させる表示要求が生成される。またカーソル210が領域202内に動かされ、□ボタン24が押下されると、ネズミ画像が指定され、指定したネズミ画像を実物大表示させる表示要求が生成される。このように画像処理装置10では、ユーザが入力装置20を操作して対象物画像を指定すると、指定した対象物画像を実物大表示させる表示要求が生成される。
要求取得部122は、生成された表示要求を受け付ける。この表示要求には、実物大表示に関する指示と、□ボタン24が押下されたときのカーソル210の座標情報とが含まれる。対象物特定部124は、カーソル210の座標情報から、指定された対象物画像を特定する。なお、表示要求に、カーソル210の座標情報ではなく、指定された対象物画像を特定する情報が含まれていてもよい。この場合、対象物特定部124は、表示要求に含まれる対象物画像を特定する情報を取得することで、対象物画像を特定する。
拡大率決定部126は、対象物特定部124により特定された対象物画像の寸法データを取得する。たとえば、対象物特定部124によりゾウ画像が特定された場合、拡大率決定部126は、ゾウ画像の寸法データ(600cm)を取得する。拡大率決定部126は、対象物画像がディスプレイ上において寸法データで指定される大きさとなるように、拡大率を決定する。本実施例では、図5に示すように、第0階層の画像データの解像度を拡大率の基準に設定する。拡大率決定部126は、ディスプレイの解像度をもとに、対象物画像の拡大率を決定する。
ディスプレイサイズ保持部132は、ディスプレイのサイズを保持する。ディスプレイサイズは、ディスプレイの対角線の長さおよびアスペクト比で定義されてもよい。アスペクト比は、横と縦の画素数または長さの比であり、たとえば、SDTV用のディスプレイのアスペクト比は4:3、HDTV用のディスプレイは16:9である。なおコンピュータディスプレイのアスペクト比は4:3、5:4などのタイプがある。ディスプレイサイズは、たとえば画像処理装置10に表示装置12を接続したときに、ユーザにより入力されてもよい。なお、ディスプレイサイズは、ディスプレイの対角線の長さと、たとえば縦および横の画素数で定義されてもよい。また対角線の長さではなく、ディスプレイの縦および横の長さであってもよい。
ディスプレイ解像度導出部130は、ディスプレイサイズ保持部132に保持されたディスプレイサイズから、ディスプレイ解像度を導出する。ディスプレイ解像度は、画素密度であって、単位長さ当たりの画素数で定義されてもよい。ディスプレイ解像度の代表的な単位はdpi(ドットパーインチ)であるが、これに限るものではない。
具体的にディスプレイ解像度導出部130は、ディスプレイサイズから、ディスプレイの縦および横の長さを導出する。たとえばディスプレイサイズとして、ディスプレイ対角線の長さと、アスペクト比が保持されている場合、ディスプレイ解像度導出部130は、それらの情報を用いて縦および横の長さをそれぞれ導出できる。さらにディスプレイサイズとして、縦および横の画素数が保持されていれば、縦方向と横方向のディスプレイ解像度(画素密度)がそれぞれ導出される。
たとえば対角線の長さが46インチ、アスペクト比16:9のいわゆるHDTV用のディスプレイは、縦長さが573mm、横長さが1018mmとして導出される。ここで、縦画素数が1080、横画素数が1980であれば、縦方向および横方向ともに、47.9dpiのディスプレイ解像度が導出される。
ディスプレイ解像度保持部134は、ディスプレイ解像度導出部130により導出されたディスプレイの縦方向および横方向の解像度を保持する。なおディスプレイ解像度が既知である場合は、ディスプレイ解像度導出部130が上記した演算により算出する必要はなく、ディスプレイ解像度保持部134は、既知の解像度を保持すればよい。
ディスプレイサイズ保持部132およびディスプレイ解像度保持部134は、ハードディスクドライブ50に形成された格納領域であってよい。なお表示装置12がHDMI機器である場合は、画像処理装置10が表示装置12に問い合わせることで、表示装置12がディスプレイサイズおよび解像度を画像処理装置10に知らせてもよい。
拡大率決定部126は、対象物特定部124により特定された対象物画像の寸法データと、ディスプレイの解像度をもとに、対象物画像の拡大率を決定する。本実施例においてタイル画像は256×256画素で形成されており、したがって1枚のタイル画像から構成される第0階層は、256×256画素のデータをもつ。第0階層におけるゾウ画像の横方向の画素数が100であるとする。第0階層におけるゾウ画像の横方向の画素数は、ここでは領域200を区画するu軸方向の幅(u2−u1)から導出されてもよく、また画像データに埋め込まれていてもよい。上記した46インチHDTV用ディスプレイで説明すると、縦横方向ともにディスプレイ解像度は47.9dpiであり、したがって体長600cmのゾウ画像を実物大表示するためには、横方向に11316画素を必要とする。なお、この画素数は、
11316=(1cm当たりの画素数)×実寸法
=(47.9dpi/2.54)×600cm
で算出される。
したがって、第0階層に対する横方向の拡大率は、
(ゾウ画像実物大表示時の横方向画素数/L0におけるゾウ画像の横方向画素数)
=11316/100=113.2
となる。
したがって、拡大率決定部126は、対象物画像の拡大率を、拡大率12805(=113.2の2乗)と決定する。
実寸比算出部128は、拡大率決定部126により決定された拡大率で対象物画像をディスプレイに表示したときの実寸比を算出する。ここで、この拡大率は、ゾウ画像に対して実物大表示させるために算出したものであるため、ゾウ画像をディスプレイに表示したときの実寸比は1となる。一方、ネズミ画像については、ゾウ画像の寸法データとの関係から、実寸比算出部128は、ネズミ画像の実寸比を40(=600cm/15cm)と算出する。実物大表示する対象物画像ではない対象物画像の実寸比は、単純に寸法データの比として導出されてよい。
画像処理装置10の起動後、ユーザが動物図鑑のあるページを選択すると、画像データ取得部142がL0タイル画像を取得し、デコード部144がデコードして、バッファメモリ70に保持させる。表示画像生成部152は、バッファメモリ70に保持された画像データを用いて、ディスプレイに収まるようにL0タイル画像を拡大または縮小して表示画像を生成してフレームメモリ90に供給し、表示処理部44がディスプレイに表示する。これにより、表示装置12のディスプレイに動物図鑑のページが表示される(図10参照)。
なお画像データ取得部142は、ディスプレイの縦および横の画素数から、それに応じた階層のタイル画像を取得してもよい。画像データにおいて、たとえば領域200の左端から領域202の右端の領域と、さらに左右にマージンum1とum2とを加えた(u4−u1+um1+um2)領域を表示対象とする。L1におけるu軸方向の(u4−u1+um1+um2)の画素数がたとえば196であり、ディスプレイの横方向の画素数が1960であるとき、拡大率(1960/196)2は100となる。図5を参照すると、拡大率100は第3境界83と第4境界84の間に位置しており、画像データ取得部142は、第3階層のタイル画像を取得する。適切な解像度のタイル画像で初期画面を生成することで、初期画面の精細度を高めることができる。この点については、図11に関連して詳述する。
ユーザが入力装置20を操作すると、実物大表示させる表示要求(以下、単に「表示要求」ともよぶ)が画像処理装置10に送信される。要求取得部122は、入力装置20から、表示要求を受け付ける。
具体的に、ユーザがカーソルを領域200(図10参照)上に移動して、入力装置20の□ボタン24を押下すると、要求取得部122は、生成された表示要求を受け付ける。この表示要求には、実物大表示に関する指示と、領域200内の座標情報とが含まれる。対象物特定部124は、座標情報から、指定された対象物画像がゾウ画像であることを特定する。
拡大率決定部126は、対象物特定部124により特定されたゾウ画像の寸法データ(600cm)を取得する。この場合、上記したように拡大率決定部126は、ゾウ画像がディスプレイ上において寸法データで指定される大きさとなる拡大率12805を決定する。また実寸比算出部128は、拡大率12805で画像データを表示したときのゾウ画像の実寸比が1、ネズミ画像の実寸比が40であることを算出する。
図11は、図5に示す要求拡大率と使用するタイル画像の階層との関係表を示す。表示画像処理部140において、画像データ取得部142は、拡大率決定部126で決定された拡大率を受け取ると、決定された拡大率に対応する解像度のタイル画像をメインメモリ60から読み出す。画像データ取得部142は、図11に示す関係表をテーブル形式で保持しており、決定された拡大率に応じて、使用する階層を決定し、決定した階層においてカーソル210で指定された座標周辺のタイル画像をメインメモリ60から取得する。ここでは決定された拡大率が12805であるため、画像データ取得部142は、使用する階層がL7であることを決定し、タイル画像を取得する。デコード部144は、タイル画像をデコードし、バッファメモリ70に保持させる。
空間座標決定部148は、拡大率決定部126により決定された拡大率と、カーソル210が配置された画像データ上の座標(以下、カーソル座標とよぶ)を受け取ると、拡大率およびカーソル座標に対応したテクスチャ座標を導出して、空間座標を決定する。空間座標決定部148は、ディスプレイの中心にカーソル座標が配置されるように空間座標を決定する。表示画像生成部152は、バッファメモリ70に保持された画像データを用いて、決定された拡大率に調整した表示画像を生成し、フレームメモリ90に供給する。以上により、ディスプレイには、ゾウ画像が実物大表示される。
以上のように本実施例の画像処理装置10は、ユーザからの表示要求を受け付けると、対象物画像の実寸表示モードに移行する。実寸表示モードでは、画像データに埋め込まれている寸法データを用いて、対象物画像を実寸表示するように画像処理される。つまり、実寸表示モードは、ユーザが□ボタン24を押下することで開始され、たとえばユーザが×ボタン23を押下すると、実寸表示モードは終了される。
図12は、決定された拡大率(12805)に調整されたゾウ画像を示す。この画像は、ユーザがゾウの目付近にカーソル210を配置し、□ボタン24を押下したときに生成される例であり、ゾウの目がディスプレイ中心に配置されている。これによりユーザは、ゾウの目の大きさをディスプレイを通じて認識できるようになる。
対象物画像を実物大表示させる際、情報付加部150は、実寸法で表示する対象物画像に対して、実寸法で表示していることを示す情報を表示画像に付加する。図12においては、実物大表示情報220が表示画像に付加されている。実物大表示情報220は、「実物大」としたテキスト表示であってもよく、また「実寸比:1」として、実寸法で表示していることを示してもよい。情報付加部150は、実物大表示情報220を表示画像生成部152に供給し、表示画像生成部152が、実物大表示情報220をゾウ画像に重畳させた表示画像を生成する。なお、このとき表示画像生成部152は、実物大表示情報220がディスプレイ中の所定位置に配置されるようにしてもよい。また、表示画像生成部152は、対象物画像の領域内または領域の直下に、この実物大表示情報220が配置されるようにしてもよい。
対象物画像を実物大表示させた状態で、ユーザは、入力装置20の左側のアナログスティック27aを上下左右に倒すことで、倒した方向のスクロール要求を入力できる。たとえばユーザがアナログスティック27aを右方向に倒すと、表示画像が左方向に連続的にスクロールする。要求取得部122は、スクロール要求を受け付けると、変更量導出部146が、スクロール要求をもとに、要求される表示画像の変更量を導出する。表示画像の変更量は、1フレームごとの上下左右方向の移動量である。空間座標決定部148は、前回フレームのテクスチャ座標から、導出された変更量により移動する今回フレームのテクスチャ座標を決定する。表示画像生成部152は、テクスチャ画像をもとに、バッファメモリ70に保持された画像データを用いて、表示画像を生成し、フレームメモリ90に供給する。
実寸表示モードにおいて、要求取得部122は、表示画像のスクロール中、常に実寸表示させる表示要求を受け付ける。対象物特定部124は、ディスプレイ中の所定位置に表示される画像データ上の座標を特定し、その座標が対象物の領域に含まれるか判定する。たとえば対象物特定部124は、ディスプレイの中心位置に表示される画像データ上の座標を特定する。
図12に示す表示画像を左方向にスクロールさせると、ディスプレイ中心位置に対応する画像データ上のUV座標は、V座標固定で、U座標が増える方向に動く。
図13は、スクロールされる表示画像の中心位置に対応する画像データ上の座標の動きを示す。実寸表示開始点230は、実寸表示を開始した点を示し、移動ライン232は、ディスプレイ中心位置に表示される画像データにおける画素の動きを示す。
対象物特定部124は、ディスプレイ中心に表示される画素の画像データ上の座標を特定し、その座標(以下、中心座標とよぶ)が対象物の領域、具体的には領域200または領域202に含まれているか判定する。中心座標は、実寸表示開始点230から移動ライン232上を移動し、境界234を超えるまでの間は領域200内に含まれている。なお境界234は、領域200の区分け線上に存在する。この期間、対象物特定部124は、中心座標情報から、ゾウ画像が指定されていることを判定する。拡大率決定部126は、指定されている対象物画像がゾウ画像であることを対象物特定部124から通知されると、対象物画像に変更がないことを判定して、既に決定した拡大率を変更せずに維持する。
中心座標が境界234を超えると、境界234から境界236までの間の画像データには、寸法データが埋め込まれていない。なお境界236は、領域202の区分け線上に存在する。このとき対象物特定部124は、対象物を特定できず、したがって拡大率決定部126は寸法データを取得できない。対象物特定部124が対象物を特定できなくなると、表示画像生成部152は、初期画面の解像度で表示画像を生成する。したがって、表示画像生成部152は、ゾウ画像を実物大表示していた画像から、図10に示す初期画面の解像度の画像に遷移させる。このときディスプレイ中心には、境界234が表示される。なお実寸表示モードは継続される。
ユーザがアナログスティック27aを右方向に倒した状態を維持すると、表示画像は継続して左方向にスクロールされ、中心座標が境界236を超えると、対象物特定部124は、中心座標が領域202に含まれていることを判定する。これにより対象物特定部124は、ネズミ画像が指定されていることを特定する。
拡大率決定部126は、対象物特定部124により特定されたネズミ画像の寸法データ(15cm)を取得し、ネズミ画像がディスプレイ上において寸法データで指定される大きさとなるように、拡大率を決定する。第0階層におけるネズミ画像の横方向の画素数が80であるとする。第0階層におけるネズミ画像の横方向の画素数は、ここでは領域202を区画するu軸方向の幅(u4−u3)から導出されてもよく、また画像データに埋め込まれていてもよい。ゾウ画像の実物大表示の処理に関して説明したように、拡大率決定部126は、体長15cmのネズミ画像を実物大表示するために、横方向に283画素を必要とすることを算出する。なお、この画素数は、
283=(1cm当たりの画素数)×実寸法
=(47.9dpi/2.54)×15cm
で算出される。
したがって、第0階層に対する横方向の拡大率は、
(ネズミ画像実物大表示時の横方向画素数/L0におけるネズミ画像の横方向画素数)
=283/80=3.5
となる。
したがって、拡大率決定部126は、対象物画像の拡大率を、拡大率12.5(=3.5の2乗)と決定する。
実寸比算出部128は、拡大率決定部126により決定された拡大率でネズミ画像をディスプレイに表示したときの実寸比を算出する。このときの拡大率は、ネズミ画像に対して実物大表示させるために算出したものであるため、ネズミ画像をディスプレイに表示したときの実寸比は1となる。一方、ゾウ画像については、ネズミ画像の寸法データとの関係から、実寸比算出部128は、ゾウ画像の実寸比を1/40(=15cm/600cm)と算出する。
画像データ取得部142は、拡大率決定部126で決定された拡大率を受け取ると、決定された拡大率に対応する解像度のタイル画像をメインメモリ60から読み出す。ここでは決定された拡大率が12.5であるため、画像データ取得部142は、使用する階層がL2であることを決定し、タイル画像を取得する。デコード部144は、タイル画像をデコードし、バッファメモリ70に保持させる。
空間座標決定部148は、拡大率決定部126により決定された拡大率と、中心座標情報を受け取ると、テクスチャ座標を導出して、空間座標を決定する。空間座標決定部148は、ディスプレイの中心に境界236近傍の領域202中の画素が配置されるように空間座標を決定する。表示画像生成部152は、バッファメモリ70に保持された画像データを用いて、決定された拡大率に調整した表示画像を生成し、フレームメモリ90に供給する。以上により、ディスプレイには、ネズミ画像が実物大表示される。
図14は、決定された拡大率(12.5)に調整されたネズミ画像を示す。これによりユーザは、ネズミの大きさをディスプレイを通じて認識できるようになる。
情報付加部150は、実寸法で表示するネズミ画像に対して、実寸法で表示していることを示す実物大表示情報220を表示画像に付加する。また図14に示すように複数の対象物画像がディスプレイに表示される際、情報付加部150は、実寸法で表示されていない対象物画像に対して、実寸法で表示されていないことを示す情報を表示画像に付加する。図14においては、実寸比情報222がゾウ画像に対応付けられて、表示画像に付加されている。実寸比情報222は、実寸法に対する拡大率を表現する情報であってよく、ここでは「実寸比:1/40」として表示画像に付加されている。なお、たとえば実寸法で表示されていないことを示す情報として、「実物大」という文字をグレーアウト表示することで、実物大でないことをユーザに知らしめるものであってもよい。いずれにしても実物大表示される対象物画像に対しては、実寸法で表示していることを示す情報が対応付けられ、実物大表示されていない対象物画像に対しては、実寸法で表示していないことを示す情報が対応付けられる。これらの情報により、ユーザは、両者の大きさの違いを認識することが可能となる。
表示画像生成部152は、実物大表示情報220および実寸比情報222を、それぞれの対象物画像との関連性がユーザに認識されるように表示する。具体的には、実物大表示情報220および実寸比情報222は、各対象物画像の領域内に配置されてもよく、また領域の直下に配置されてもよい。図14に示す例では、各領域の直下において、実物大表示情報220および実寸比情報222の表示位置を、ディスプレイ高さ方向の同じ位置に揃えている。
次に、図13を参照して、画像解像度切替時の表示処理について説明する。実寸表示モードにおいて、ディスプレイ中心座標が実寸表示開始点230から移動ライン232上を右方向に移動する場合、境界234、236において表示画像の拡大率が切り替わる。具体的には、実寸表示開始点230から境界234までの間は、拡大率が12805であり、境界234から境界236までの間は、拡大率が100であり、境界236より右側の領域202内は、拡大率が12.5である。各境界234、236を超えたときに瞬時にタイル画像の階層を切り替えると、表示画像が大きく変更されることになり、表示画像の連続性が担保されなくなる。
そこで拡大率決定部126は、拡大率の変更を判定すると、変更された拡大率を表示画像処理部140に伝えるのではなく、変更前の拡大率と変更後の拡大率の間を補間する拡大率を新たに決定してもよい。具体的には、境界234で拡大率12805から拡大率100に変更されたことを判定すると、拡大率決定部126は、所定時間の間に、拡大率12805から拡大率100にスムーズに遷移するように拡大率をフレーム単位で下げていくように決定してもよい。これにより、滑らかな画面遷移を実現でき、ユーザに違和感を生じさせない表示画像を提供できる。
また、階層データの作成者側が、対象物画像の実寸大表示に使用する階層または使用しない階層を指定する解像度指定情報を予め階層データに埋め込んでもよい。この解像度指定情報は、メインメモリ60に保持される。たとえば総画素数が同じで、大きさの異なるテレビディスプレイに実物大表示する場合を想定すると、ディスプレイサイズが大きければ、画像の拡大率は小さく、ディスプレイサイズが小さければ、画像の拡大率は大きくなる。そのため、ディスプレイサイズに応じて、使用する階層を指定する解像度指定情報を予め設定しておくことで、画像データ取得部142は、ディスプレイサイズをもとに、解像度指定情報で特定される解像度のタイル画像を読み出すようにしてもよい。たとえば、17インチと60インチのディスプレイで比較すると、17インチ用の解像度指定情報は、60インチ用の解像度指定情報よりも高い階層を指定する。なお、この解像度指定情報は、対象物画像ごとに設定されてもよい。この場合、解像度指定情報は、ディスプレイサイズが大きいほど低い階層を指定し、また対象物画像の寸法データが大きいほど高い階層を指定するように設定される。このときも表示画像生成部152は、読み出された解像度のタイル画像を拡大率決定部126により決定された拡大率に調整した表示画像を生成する。
また、階層データにおいて、全ての階層の画像データが、同一のレイアウトであれば問題はないが、たとえばある階層の画像データは、レイアウトが異なったり、または特定の情報が付加、削除されていることもある。そこで、メインメモリ60は、使用しないタイル画像の解像度を特定する解像度指定情報を保持し、画像データ取得部142は、解像度指定情報で特定される解像度のタイル画像は読み出さないようにしてもよい。このとき画像データ取得部142は、解像度指定情報を参照して、使用する階層を決定する。
解像度指定情報により、拡大率決定部126により決定された拡大率に対応する階層の画像データが使用できない場合、画像データ取得部142は、それよりも1つ下の階層の画像データまたはそれよりも1つ上の階層の画像データを取得する。バッファメモリ70のメモリサイズを考慮すると、画像データ取得部142は、下階層の画像データを取得して、表示画像生成部152が、決定された拡大率に調整した表示画像を生成することが好ましい。なおバッファメモリ70のメモリサイズに余裕がある場合には、画像データ取得部142は、上階層の画像データを取得してもよく、これにより表示画像生成部152は、高精細な表示画像を生成することが可能となる。なお、画像データ取得部142は、バッファメモリ70のメモリサイズを取得し、上階層の画像データを取得できるか判定した上で、上階層または下階層のいずれの画像データを取得するか決定してもよい。
なお、表示画像生成部152は、下階層の画像データを決定された拡大率に調整し、上階層の画像データを決定された拡大率に調整して、両者をアルファブレンドで重ね合わせて合成してもよい。なお、下階層の画像データを用いるか、上階層の画像データを用いるか、または両方の画像データを用いるかを指定する指定情報が画像データに予め埋め込まれていてもよく、この場合、画像データ取得部142は、その指定情報にしたがって画像データを取得し、また表示画像生成部152も、その指定情報にしたがって表示画像を生成する。
図15は、本実施例における画像処理のフローチャートを示す。まず要求取得部122が、対象物画像の実物大表示の要求を受け付ける(S10)。拡大率決定部126は、対象物画像に対応付けられた寸法データをもとに、第0階層を基準とした拡大率を決定する(S12)。画像データ取得部142は、決定された拡大率をもとに図11に示す関係表を用いて階層を決定し(S14)、その階層の画像データを取得する(S16)。表示画像生成部152は、決定された拡大率を用いて、取得された画像データを拡大または縮小して、対象物画像を実物大に表示する(S18)。
以上、本発明を実施例をもとに説明した。この実施例は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
実施例では、寸法データが対象物の実寸法を指定するものとしたが、別のスケールの寸法を指定してもよい。たとえば電車の実物大表示を想定すると、実物大表示することが不可能であることは確実である。そこで、電車図鑑では、各対象物(電車)に対して統一的な縮尺を寸法データとして設定し、それぞれの電車の大きさを比較できるようにしてもよい。たとえば全ての電車に対して、実寸法に対する拡大率(実寸比)1/20の寸法データを設定することで、ユーザは、1/20スケールの電車画像を楽しむことが可能となる。このとき、情報付加部150は、実寸比を表示することで、ユーザは、実際の大きさを想像できるようになる。
また実施例では、ユーザによる入力装置20の□ボタン24の押下操作により、実寸表示モードに移行することとしたが、要求取得部122が、ディスプレイ中の所定位置に表示される画像データ上の座標を特定し、その座標が対象物の領域に含まれている場合に、実寸表示モードに移行することとしてもよい。
なお、本実施例では、ゾウとネズミとを並列に並べた動物図鑑のページを示したが、ページによっては、数多くの動物が配置されているものもある。上記した変形例は、たとえばディスプレイの中心位置に表示された対象物画像をなかば自動的に実寸表示させるものであるが、個々の対象物画像を実寸表示させるよりも、図鑑のページ全体をスクロールして見たいユーザも想定される。そこで要求取得部122は、たとえば空間座標決定部148により前フレームに対して決定されている空間座標から、ページが全体表示されているか判定して、ページが全体表示されている場合には、ディスプレイ中心位置に対象物画像が配置されても、実物大表示の要求を受け付けないようにする。なお、全体表示されていることは、ページの所定割合(たとえば50%)以上が表示されていることで、判定されてもよい。
このとき、要求取得部122は、表示画像に用いられているタイル画像の階層から、実物大表示の要求の有無を判定してもよい。低階層のタイル画像が用いられている場合、高階層のタイル画像が用いられる場合と比較して、表示画像の拡大率は小さく、すなわちページ内で表示されている割合は大きくなる。したがって、低階層のタイル画像が用いられている場合は、ユーザがページを全体表示していることを判定し、要求取得部122は、実物大表示の要求を受け付けない。たとえば、画像データに、実物大表示の禁止解像度を指定する情報として、第0階層と第1階層の情報が埋め込まれている場合、要求取得部122は、使用されるタイル画像が第2階層以上となった場合に、実物大表示の要求を受け付けるようにする。
また、実物大表示をしたときに、対象物画像がディスプレイに収まりきらない場合、入力信号処理部120は、対象物画像をたとえば90度回転することで、ディスプレイに収まるか否か判定する判定部を備えてもよい。まず判定部は、ディスプレイサイズと、対象物画像の寸法データとから、対象物画像がディスプレイに収まるか否かを判定する。この場合、対象物画像の寸法データは、縦横の両方が用意されていることを前提とする。具体的に判定部は、ディスプレイの縦方向のサイズと対象物画像の縦の寸法データとを比較し、縦の寸法データの方が長ければ、ディスプレイの縦方向のサイズと対象物画像の横の寸法データとを比較する。このとき、ディスプレイの縦方向のサイズの方が長ければ、判定部は、さらにディスプレイの横方向のサイズと対象物画像の縦の寸法データとを比較する。このときディスプレイの横方向のサイズの方が長ければ、判定部は、対象物画像を90度回転することで、ディスプレイ内に、実物大表示した対象物画像が収まることを判定する。この情報は表示画像生成部152に伝えられ、表示画像生成部152は、対象物画像を90度回転した表示画像を生成する。