以下、本発明の実施形態について図面を参照して詳細に説明する。なお、以下で説明する実施形態は、本発明を具体的に実施した場合の一例を示すものであり、これに限るものではない。
<第1の実施形態>
図1は、本実施形態のシステム概要図である。本実施形態ではタブレット型の画像処理装置を想定しており、画像処理装置100は、タッチスクリーン101を装備する。
画像102は、本実施形態に適用されるブラウザによって複数のオブジェクトが階層的に表示された画像を示す。この画像102は、タッチスクリーン101に表示されている。ここで表示されている構造については後述する。操作者はタッチスクリーン101に表示されたオブジェクトを、操作者の指またはスタイラスなどの物体103を用いて操作する。タッチスクリーン101にはスクリーン画面上への上記物体の接触を検知するタッチセンサが搭載されている。本実施形態では、以下、物体103によるタッチ操作をタッチセンサが検知することによって、オブジェクトを移動(スクロール)しながら閲覧する場合を説明する。
図2は、本実施形態における画像処理装置100のハードウェア構成図である。同図において、CPU200は、バス203を介して接続する各デバイスを統括的に制御する。CPU200は、読み出し専用メモリ(ROM)202もしくはストレージ207に記憶された処理ステップやプログラムを読み出して実行する。オペレーティングシステム(OS)をはじめ、本発明に係る各処理プログラム、デバイスドライバ等はROM202に記憶されており、ランダムアクセスメモリ(RAM)201に一時記憶され、CPU200によって適宜実行される。RAM201は高速にアクセス可能なCPU200の主メモリ、ワークエリア等の一時記憶領域として用いられる。ここでOSおよび各処理プログラム等はストレージ207に記憶されていてもよく、その場合は電源投入時にRAM201に適宜読み込まれ、CPU200によって起動される。また、ディスプレイI/F204は、画像処理装置100内部で作成される表示画像をタッチスクリーン101が処理可能な信号に変換する。入力I/F205は、タッチスクリーン101のセンサが検知したタッチ位置情報を入力信号として受信し、画像処理装置100が処理可能な情報に変換する。ストレージI/F206は、画像処理装置100内部で利用可能なデータ形式とストレージ207に記憶するためのデータ形式を互いに変換する。ストレージ207は、画像処理装置100で閲覧するための大量のオブジェクトデータを格納できる大容量の情報記憶装置である。本実施形態では、ストレージ207自体は、画像処理装置100内部に搭載されるハードディスクドライブ装置である。ただし、ストレージ207としては、例えば、ディスクデバイスやUSBメモリなどの記憶媒体や、インターネット(登録商標)やまたはUSBなどの各種インタフェースを介して接続される外部装置を適用することもできる。さらに複数台のストレージ207が並列に適用されていても構わない。これらの場合には、画像処理装置100は各種ネットワークI/Fや外部メモリI/Fなどのインタフェースを含み、それを利用する。
以下、他図を用いて実質的に同じものを説明する場合には同一の符号を付し、その説明を省略する。
図2(B)は本実施形態における画像処理装置100の機能ブロック図である。画像処理装置100は、取得部300、生成部301、表示制御部302、操作検出部303、伝搬部304から構成される。本実施形態では、これらの各機能ブロックは上述したCPU200の一部の機能に相当する。本実施形態では、ストレージ207には静止画像が記憶されており、これら静止画像をオブジェクトとしてタッチスクリーン101に表示し、この画像をユーザが閲覧する。また、これらオブジェクトにはメタデータが付与されている。本実施形態では、少なくとも日付(撮影された「年」「月」「日」および「時間」)の情報を含むメタデータが付与されている。
取得部300は、表示部としてのタッチスクリーン101にオブジェクト群を所定の配列で表示するため、複数のオブジェクトからなるオブジェクト群をストレージ207から読み出す。本実施形態では、ローカルに接続された記憶部としてのストレージ207の例を示す。ただし、上述したようにネットワーク上に存在するストレージやインターネット上から表示されるオブジェクトをネットワーク経由で読み出すことも可能である。読み出したオブジェクト群およびそのメタデータはRAM201に保持される。この時、読み出したデータがRAM201に対して大きすぎる場合は、読み込むデータを複数に分割し、個々の分割データを順次読み込んで処理しても構わない。または、即座に読み出し可能なスワップデータとしてストレージ207に退避させておいても構わない。
生成部301は、RAM201に保持されている日付のメタデータを利用して集合させたオブジェクトを整列し、階層構造に従って同位階層内のオブジェクトをグルーピングし、オブジェクト配列として表示させるための配列データを生成する。本実施形態では、また生成部301は、生成した配列データの情報をRAM201に保持する。図4は、生成部301が生成する配列データの一例である。
表示制御部302は、タッチスクリーン101に表示するべき表示画像(画像データ)を生成し、タッチスクリーン101に出力する。オブジェクトをオブジェクト配列として表示させる際にはRAM201に保持されているオブジェクト、生成部301が生成した配列データの情報を基に、表示画像を生成する。図5(A)に示す画像500は、表示制御部302が生成し、初期画像としてタッチスクリーン101に表示される画像の一例である。図5(A)では、オブジェクト501は、Year/Month、Day、Contentsの3つのオブジェクト配列502、503、504に階層化され、表示される。さらにオブジェクト配列中の各オブジェクトは、それぞれグルーピングされている。具体的な例で示すと、Day階層のオブジェクト配列503のオブジェクト501eの下位階層に相当するContents階層(オブジェクト配列504)中のオブジェクトは、2011年1月15という日付情報のメタデータによってグルーピングされている。すなわち、オブジェクト501eは2011年1月15日のグループを示す代表オブジェクトである。同様に、オブジェクト501eは、2011年1月という日付情報のメタデータによってグルーピングされ、2011年1月を示すオブジェクト501bの下位階層に属する。このような、各階層のオブジェクトの親子関係は矢印バー505a、505bのインジケータによって表現されている。
表示制御部302は、表示されたオブジェクトに対して、タッチセンサによる検知を介して物体103から移動操作が行われた場合には、伝搬部304から得た移動量の情報を基に、新たな画像を生成し、タッチスクリーン101に出力する。これにより、本実施形態では、ユーザが表示された画像中のあるオブジェクト配列に対して行う移動操作が、他のオブジェクト配列に伝搬する。そして、直接操作していない配列も含めて全てのオブジェクト配列が、操作したオブジェクトの上下階層に相当するオブジェクトの数に基づいた量だけ連動して移動するように表示画像が更新される。移動と同時に、上下階層のオブジェクトの親子関係を示すインジケータと、各オブジェクトの相対位置が変化し、常に閲覧中のオブジェクトが親であるオブジェクト群全体の中で、どの辺りに存在するのかを明確に表現するように表示画像が生成される。一連のオブジェクト表示処理については後で詳細を説明する。
画像処理装置100に対する操作は、タッチスクリーン101に表示されたオブジェクトを物体103でタッチすることによって行う。従ってタッチセンサを搭載したタッチスクリーン101は操作部として機能する。操作検出部303は、タッチセンサの出力情報に基づいて、オブジェクトに対して行われたフリックやスワイプ、ドラッグなどのタッチ操作を検出し、操作されたオブジェクトとその操作量を示す情報を伝搬部304に与える。ここでフリックとは、画面を軽くはじくように指を動かす操作であり、スワイプとは、タッチスクリーン101上をタッチした(触れた)状態で指を一定方向にスライドさせる操作である。またドラッグとは、タッチスクリーン101をタッチした(触れた)状態のまま指を任意の方向に移動させる操作である。本実施形態における操作検出部303は、表示された各オブジェクトをオブジェクト配列の平行方向に、上述したようなタッチ操作することによって、配列内のオブジェクトをスクロール移動させる移動操作を検出する。なお、本実施形態では、オブジェクトを物体103でタッチ操作する例を示した。ただし、タッチスクリーン上に物体103に見立てたポインタを表示させ、マウスや他のポインティングデバイスを使ってそのポインタを操作することで上記タッチ操作と同様の操作を実行することも可能である。
伝搬部304は、検出部303から得た情報に従い、RAM201の配列データを参照して、ユーザによって操作されたオブジェクトが属する階層およびグループを特定する。そして、タッチ操作されたオブジェクトに関連する上位および下位の階層のグループに含まれるオブジェクト数を取得する。伝搬部304は、取得したオブジェクト数に従い、各階層のオブジェクト配列毎に表示上の移動量を求め、表示制御部302に情報を伝える。
次に、図3(A)のフローチャートに従い、本実施形態における画像処理装置100のオブジェクト表示処理を説明する。
本実施形態では、画像処理装置100の電源が投入されたのに従って、オブジェクト表示処理がスタートする。まず、ステップS10において、取得部300は、表示するオブジェクト群とそのメタデータを取得し、RAM201に保持する。次にステップS11において、生成部301は、取得したオブジェクト群の日付のメタデータを利用して、オブジェクトを「年(Year)」、「月(Month)」、「日(Day)」、とオブジェクトそのものの一覧に階層化した配列データを生成する。図4は、生成された配列データの一例である。本実施形態のオブジェクトは、デジタルカメラで撮影された静止画像であるとする。各オブジェクトには、デジタルカメラによって、撮影された年月日および時間を示す情報がメタデータとして付与されている。生成部301は、まずこの情報を利用し、「年」「月」「日」「時間」という階層毎に、同位階層において付与されたメタデータが共通するそれぞれの画像群を1つのグループとしてグループ化する。そして、階層毎に、各オブジェクトが対応するグループを示すテーブルを配列データとして生成する。例えば、図4の配列データでは、3021.jpgという画像は、「年」の階層では2011年のグループ、「月」の階層では1月のグループ、「日」の階層では15日のグループ、そして「時間」の階層では「9時台」のグループに対応している。さらに、本実施形態では、ステップS12において、生成部301は配列データとともに各グループのオブジェクト数をRAM201に保持する。そしてステップS13において、表示制御部302は、RAM201に保持されているオブジェクトの情報、配列データに基づいて表示されるべき画像を生成し、初期画像としてタッチスクリーン101に出力する。この時、タッチスクリーン101に表示される初期画像の一例が図5(A)である。
図5(A)では、オブジェクト群が、配列データの「月」の階層をグループ毎に表示する配列502、「日」の階層をグループ毎に表示する配列503、および読み出されたオブジェクトが1枚ずつ表示される配列504の3つのオブジェクト配列として表示される。例えば、Year/Monthと表示された配列502のオブジェクト501a、オブジェクト501b、オブジェクト501cは、それぞれ2011年2月のグループ、2011年1月のグループ、2010年12月のグループを示す。同様にDayと表示された配列503のオブジェクト501d〜501gは、それぞれ左上に白抜き文字で表示された日付のグループを示す。なお、本実施形態でタッチスクリーン101上に表示される初期画像では、図4に示される配列データのうち、事前に設定された「月」「日」「オブジェクト」の3階層を表示するものとする。従ってここでは、「年」「時間」の階層は表示されていない。しかしながら、変形例として配列データに含まれる階層を全て表示してもよく、初期画像の表示前に表示する階層をユーザが選択できるようにしてもよい。この場合、配列データに基づいて得られる全ての情報を反映した表示画像をユーザに提供しているので、ユーザが所望のオブジェクトを検索する上で利用できる情報が最も多いという利点がある。また例えば、オブジェクトが10以上含まれるグループが存在しない階層は表示しない、などの閾値を決定することもできる。この場合は、後述するように上位階層のオブジェクト配列を移動させることによって下位階層の配列を高速スクロールさせる機能において、上下階層のオブジェクト配列におけるオブジェクトの数の差が小さいために効率が低下することを防ぐという効果がある。さらに、本実施形態では、複数の位置をタッチするマルチタッチ操作を利用することによって、表示されていない階層を表示させることができる。この機能については後で詳細を説明する。
ここまで説明したように、本実施形態では、隣り合うオブジェクト配列について、画面に向かって左側に表示される配列が上位階層に属する第1オブジェクトの集合となり、右側に表示される配列が下位階層に属する第2オブジェクトの集合となる。このとき、第1オブジェクトは、複数の第2オブジェクトからなるグループを示すオブジェクトである。本実施形態の表示画像において、上位階層における各グループを示す第1オブジェクトは、各グループに含まれる下位階層の複数の第2オブジェクトのうち、代表となるオブジェクトのサムネイル画像である。さらに本実施形態では、各グループに含まれる複数の画像オブジェクトのうち、最も古い画像オブジェクト(撮影された日時が最も古い画像)を代表オブジェクトとして表示している。ただし、例えば最も新しいオブジェクトを代表オブジェクトとしても良いし、ユーザが予め設定したオブジェクトや、閲覧回数が多いオブジェクトを代表オブジェクトにしても構わない。
矢印バー505aおよび矢印バー505bは、上下階層のオブジェクトの親子関係を表現するインジケータである。図5(A)の例では、オブジェクト501iは、オブジェクト501eのグループに属し、さらにオブジェクト501eは、オブジェクト501bのグループに属していることを示す。すなわち、オブジェクト501iは、2011年1月15日に撮影された画像であることが矢印バー505aと矢印バー505bによって直感的に把握できる。さらに、インジケータは、下位階層の第2オブジェクトの、上位階層の第1オブジェクトが示すグループに含まれるオブジェクト群全体に対する相対位置を表現する。本実施形態では、上位階層のグループを示すサムネイル画像(第1オブジェクト)の下位階層側(右側)の短辺の長さが、そのグループに含まれる下位階層の第2オブジェクトの数に対応する。そして、インジケータが、短辺のどの辺りを指し示すかによって、第1オブジェクトが示すグループ全体のうちどの程度の位置に存在する第2オブジェクトを閲覧しているかを視認できる。
図5(B)で示す表示状態を例に、具体的にインジケータの役割を説明する。表示制御部302は、RAM201から、上位階層の第1オブジェクトが示すグループに含まれるオブジェクト数を取得する。第1オブジェクトとして、オブジェクト501eが示す2011年1月15日のグループを例に説明すると、図4の配列データの通り、グループに含まれる第2オブジェクトの数は15である。そして表示制御部302は、オブジェクト501eの下方の端点506aをオブジェクト群の先頭、上方の端点506bをオブジェクト群の終点に相当させて、矢印バー505eを表示する。このとき、矢印バー505bが示す位置が、どちらの端点上あるいは端点の間のいずれの点を指し示しているかが、グループの中の15のオブジェクト(第2オブジェクト)のうち、大凡どの辺り(何番目)に存在するオブジェクトを閲覧しているかを表現する。例えば、図5(B)では、矢印バー505bは、オブジェクト501(head)を起点に、オブジェクト501eの下方の端点506aを指し示している。従って、オブジェクト501(head)は、2011年1月15日グループの15のオブジェクトの中の最初のオブジェクト、すなわち図4の配列データで15日の先頭に対応している3021.jpgのサムネイル画像である。本実施形態では、各グループの最も古いオブジェクトを代表オブジェクトとして表示するので、オブジェクト501eとオブジェクト501(head)は同じ3021.jpgのサムネイル画像が表示されていることになる。同様に、図5(C)で示すような表示状態では、表示制御部302によって、矢印バー505aは、オブジェクト501(tail)を起点に、オブジェクト501eの下方の端点506aを指し示すように表示されている。従って、オブジェクト501(head)は、2011年1月15日グループの15のオブジェクトの中の最後のオブジェクト、すなわち図4の配列データで15日の先頭に対応している3035.jpgのサムネイル画像である。なお、図5(B)および(C)では、わかりやすいようにオブジェクト501(head)およびオブジェクト501(tail)には、白抜き文字でグループの先頭および最後の画像であることを表示している。ただし、サムネイル画像の視認性を高めるため、表示を省略することもできる。矢印バー505なお、本実施形態では、各オブジェクトに当たるサムネイル画像は、図5(D)に示すように、幅320pixel、高さ240pixelの長方形として表示される。また、オブジェクト配列において縦に並んだオブジェクトの表示上の間隔(ギャップ値)のギャップは、25pixelであるとする。もちろん、各オブジェクトの表示サイズはこれに限られず、タッチスクリーン101の大きさなどによって好ましいサイズで表示することができる。
初期画像の表示が終了すると、ステップS14では、操作検出部303によって表示中のオブジェクトに対する移動操作が検出されたかを確認する。表示中のオブジェクトに対する移動操作は、図5(A)の初期画像が表示されている状態で、ユーザが指などの物体103で移動(スクロール)したいオブジェクトが属する配列を上下方向にフリックすることによって行う。このとき、必ずしも注目するオブジェクト自体をタッチする必要はなく、オブジェクト配列が表示されている領域に対して操作を行うことで配列内のオブジェクトを移動させることができる。なお、移動操作はスワイプもしくはドラッグでも可能である。いずれの操作も、タッチされた位置に対して移動方向を示すという点で同様に考えることができるので、以降の説明ではフリック操作に基づいて記述する。なお、本実施形態のように、フリックによってオブジェクト配列をスクロールさせる操作が行われる場合には、タッチスクリーン101に物体103が接触している間の移動量を操作量としてタッチセンサが検出する。スワイプやドラッグによって操作される場合には、タッチ位置の移動を所定間隔で検出し、タッチ位置が更新される毎にステップS14からステップS17の処理を繰り返す。そして所定間隔の間のタッチ位置の移動量を操作量とする。オブジェクトが操作されていない場合(ステップS14でNO)は、更にステップS17へ処理が移行する。オブジェクトが操作された場合(ステップS14でYES)は、ステップS15において、オブジェクト移動処理が開始される。
本実施形態のオブジェクト移動処理では、ユーザがあるオブジェクト配列に対して行う移動操作が他のオブジェクト配列に伝搬し、直接操作していない配列も含めて全てのオブジェクト配列がオブジェクト数に基づいた量移動するように表示画像を更新する。このとき、下位階層と上位階層の間に表示されるインジケータは、表示画像の上下方向の中央に固定されているため、各オブジェクト配列が移動するのに伴い、インジケータが指し示す位置が変化する。この変化する量は、各グループに属するオブジェクト数に基づいて決まるオブジェクトの移動量に従うため、インジケータは常に、下位階層のオブジェクトの、上位階層のグループに分類されたオブジェクト群全体に対する相対位置を表現する役割を果たす。図3(B)のフローチャートに基づいて、本実施形態のオブジェクト移動処理(ステップS15)の処理を具体的に説明する。
オブジェクト移動処理が開始されると、まずステップS20において、操作検出部303は、タッチスクリーン101のタッチセンサから、タッチされた位置と操作方向、及び操作量の情報を取得する。続けて、操作検出部303は、取得した位置情報から操作されているオブジェクト配列を特定する。そして、操作されたオブジェクト配列において注目するオブジェクトと、取得した操作量に基づいて注目するオブジェクトを表示上移動させる移動量の情報をRAM201に保持する。ここで、注目するオブジェクトとは、タッチ操作されたオブジェクト配列において、インジケータの隣に表示されているオブジェクトである。
次に、ステップS21において、伝搬部304は、RAM201上の情報から、注目するオブジェクトが属する階層とグループを特定する。さらにステップS22では、RAM201に保持された配列データから、注目するオブジェクトの上下階層に相当するオブジェクト数Nを取得する。注目するオブジェクトの上下階層に相当するオブジェクト数Nとは、注目するオブジェクトが属する上位階層のグループに含まれる全オブジェクト数、および注目するオブジェクトの下位階層に相当する全てのオブジェクト数である。図4の配列データによると、2011年01月15日のグループはオブジェクト数が15個であるのでN=15である。同様に、図4では省略されているが、2011年01月グループのオブジェクト数は10個であって、N=10であるとする。
続いて、伝搬部304は、各オブジェクト配列の表示上の移動量を求める。本実施形態では、上位階層において注目するオブジェクト(第1オブジェクト)がタッチ操作によって1オブジェクト分移動すると、その下位階層のオブジェクト配列は、注目するオブジェクトの下位階層に相当する全ての第2オブジェクトの分、平行移動する。また、下位階層において注目するオブジェクト(第2オブジェクト)が1オブジェクト分移動すると、その上位階層のオブジェクト配列(第1オブジェクト)は、注目するオブジェクトが属するグループの全オブジェクト数に分割された1分割分だけ平行移動する。このように、上下階層のオブジェクト配列が、従属関係にあるグループに含まれるオブジェクト数のギアを有する仮想的な歯車が噛合うように連動する。
ステップS23において、まず伝搬部304は、RAM201から操作されたオブジェクト配列および注目するオブジェクトを表示上移動させる移動量を取得する。そして、その他のオブジェクト配列に対して、伝搬による移動量を決定する。伝搬による移動量は、操作に基づく移動量と注目するオブジェクトの上下階層に相当するオブジェクト数Nに基づいて決定される。例えば、図5(B)から図5(C)のように、Day階層のオブジェクト配列503のオブジェクト501eを1つ分下方向に移動させる場合を説明する。このとき、オブジェクト501eが示す2011年1月15日のグループのオブジェクト数はN=15である。下位階層のオブジェクト配列504では、オブジェクト501eの移動に伴い、矢印バー505bが2011年1月15日のグループの先頭のオブジェクトを示していた状態から、最後のオブジェクトを示す状態までスクロール移動する。つまり、オブジェクト配列504はオブジェクト配列503の略N倍(N=15)のスピードでスクロールされる。また、下位階層が連動する際に、下位階層のオブジェクト配列におけるオブジェクト間のギャップがインジケータを通過する場合には、そのギャップ値の分の補正を連動による移動量に考慮する必要がある。具体的には、本実施形態では、オブジェクトは縦240pixelのサムネイル画像として表示されているため、このときの操作によって移動されるオブジェクト配列503の移動量は240pixelである。そして、連動するオブジェクト配列504の移動量は、240pixelをN=15倍した量となる3600pixelに、インジケータを通過するオブジェクト間のギャップ値を考慮した3950pixelと決定される。このように、上位階層において注目する第1オブジェクトを移動させるのに連動して、下位階層の第2オブジェクトが移動する移動量は、Nに基づいて第1オブジェクトの移動量よりも大きくなる。
また、このとき、上位階層のオブジェクト配列も連動してスクロールされる。オブジェクト501eが属する上位階層の2011年1月のグループのオブジェクト数はN=10である。上位階層のオブジェクト配列502では、下位階層でのオブジェクト501eの移動に伴い、矢印バー505aが2011年1月グループの10のオブジェクトのうち1つ目と2つ目の間を表現する位置を示すように移動する。つまり、オブジェクト配列504はオブジェクト配列503の略1/N倍(N=10)のスピードでスクロールされる。また、下位階層のオブジェクト配列におけるオブジェクト間のギャップがインジケータを通過する場合には、そのギャップ値の分の補正を連動による上位階層の移動量に考慮する必要がある。具体的には、下位階層の移動に連動したオブジェクト配列502の移動量は、240pixelの1/N倍、すなわち1/10倍である24pixelに決定される。この場合には、下位階層におけるオブジェクト間のギャップがインジケータを通過することがないので、ギャップ値の補正は必要ない。このように、下位階層において注目する第2オブジェクトを移動させるのに連動して、上位階層の第1オブジェクトが移動する移動量は、Nに基づいて第2オブジェクトの移動量よりも小さくなる。
このように、伝搬部304によって、任意の階層のオブジェクトおよびオブジェクト配列に対する操作が、他の階層のオブジェクト配列に伝搬するように、各オブジェクト配列の移動量が決定される。
次に、ステップS24において、伝搬部304は、一連の移動に伴い、最下位層のオブジェクト配列においてグループの境界に相当するオブジェクト間のギャップがインジケータを通過し、インジケータがグループの境界を越える移動が行われるかを判定する。すなわち、上位階層のオブジェクト配列において、少なくもと1つのオブジェクトがインジケータを通過することにより、注目するオブジェクトが変更されるかどうかを判定する。上位階層において注目するオブジェクトが変わると、移動量の決定に用いるべきオブジェクト数Nも変更される。従って、最下位層のオブジェクト配列において、グループの境界に相当するオブジェクト同士の間のギャップがインジケータを通過する場合(ステップS24でYES)は、ステップS23に戻る。そして、途中からNが変わることを考慮して、再び各オブジェクト配列の移動量を決定する。なお、インジケータがグループの境界を通過するような移動が行われる場合には、上位階層において注目するオブジェクトが必ず特定できるように表示状態を調整する。例えば、図6(A)のように、インジケータがグループの境界であるギャップ507を示して停止する表示状態が生じると、オブジェクト配列503において、いずれのオブジェクトに注目するかが特定されない。そのため、次に移動操作を行う際に上位階層のオブジェクト401eまたはオブジェクト401fのいずれのグループのオブジェクト数Nに基づいて移動量を決定すべきか判断ができない。このような表示状態を避けるため、最下位層においてグループの境界に相当するオブジェクトがインジケータを通過する移動が行われる場合には、インジケータがグループの境界で停止することがないように補正を加えて移動量を決定する。例えば、図6(B)で示すように、2011年1月7日を示すグループの境界に相当するオブジェクト508bに注目している状態で、配列504を下方向にスクロールする場合を考える。このとき、インジケータがグループの境界507を示した状態で停止しないように、配列504および上位階層の配列503の移動量にギャップ値を考慮して調整する。グループ境界のギャップを考慮した上で、配列504を下方向に少しでも移動させた場合には、以降のオブジェクト移動処理は図6(C)で示す表示状態からの操作と見なされて実行される。図6(C)では、オブジェクト508b、501fの親子関係をしていた矢印バー505bが、オブジェクト508a、501eの親子関係を示す状態に変化している。初期画像がいかなる表示状態であっても、最下位層のオブジェクト配列において、グループの境界に相当するオブジェクト同士の間のギャップがインジケータを通過する場合には同様の調整を行う。これにより、図6(A)で示したような、上位階層において注目するオブジェクトが特定できない表示状態は発生しない。なお、最下位階層において、インジケータがグループの境界には相当しないオブジェクト同士の間のギャップを指し示す位置で停止したとしても、上位階層における注目オブジェクトは特定可能であるので、本実施形態においてはそのような表示状態は禁止されない。
最下位層のオブジェクト配列において、グループの境界に相当するオブジェクトがインジケータを通過しない場合(ステップS24でNO)は、ステップS25に処理が移行する。ステップS25において、表示制御部302は、ステップS23で決定された各オブジェクト配列の移動量に基づいて、移動後の画像を生成する。ここで、各オブジェクト配列の移動経過も表示させる場合には、それぞれの移動量を複数分割し、分割された数の画像を生成してもよい。これら複数の画像をタッチスクリーン101に順次出力することによって、各オブジェクト配列の移動経過もアニメーション表示可能となる。以上のステップS25までの処理が完了すると、オブジェクト移動処理(ステップS15)は完了し、呼び出し元の処理にその結果がリターンされる。
オブジェクト移動処理(ステップS15)が終了すると、ステップS16において、表示制御部302は、生成した画像をタッチスクリーン101に出力して表示画像を更新する。表示画像の更新(ステップS16)が終了すると、ステップS17において、オブジェクトの表示処理が終了されたかどうかを判断する。アプリケーションから終了の指示があった場合や、操作検出部303がユーザによる所定の終了操作を検出する場合やタッチ位置の移動が検出されなくなった場合には、オブジェクトの表示処理を終了する(ステップS17でYES)。引き続きタッチ位置の移動が検出される場合や新たにオブジェクトを移動する操作を検出した場合など、オブジェクト表示処理を終了しない場合(ステップS17でNO)は、再びステップS14に処理が移行する。そして、オブジェクトの表示処理が終了されるまで、オブジェクト移動処理(ステップS15)、表示画像の更新(ステップS16)の処理を繰り返す。なお、本実施形態では、画像処理装置100の電源が投入されたのに従って、オブジェクト表示処理がスタートした。ただし、アプリケーションの起動時やメニューが選択された事に従って、オブジェクト表示処理をスタートしても構わない。
本実施形態で述べたように、上位階層のグループに含まれる全オブジェクト数に基づいて各オブジェクト配列を連動して移動させることにより、閲覧しているオブジェクトの、上位階層のオブジェクト群全体に対する相対位置を容易に把握できる。さらに、各階層のオブジェクト配列とともに表示されるインジケータによって、上下階層のオブジェクト配列の移動に伴う表示変化を直感的に理解しやすくなる。また本実施形態で示す表示方法は、オブジェクトと離れた所定位置にスクロールバーや通し番号を表示する一般的な方法と比較して、視線移動が少なく、視認負荷が少ないという効果を奏する。
また、本実施形態において、各階層は上述の仮想的な歯車のように連動するため、任意の階層に対する操作が他階層へも波及する。つまり、上位階層のオブジェクト配列を移動操作によってスクロールする場合、下位階層のオブジェクト配列は、上位階層と比較して高速にスクロールさせることが可能となる。これを利用することで、所望のオブジェクトを表示させたい場合等に、別途スクロールバーなどの補助手段を必要とせず、多くのオブジェクトを高速にスクロールさせることが可能となる。さらに、上位階層のオブジェクトを、インジケータとの相対位置を調整して移動させれば、下位階層において所望とするオブジェクトを検索しやすくなる。
本実施形態では、生成部301が5階層の配列データを生成し、表示制御部302がそのうち3階層のオブジェクト配列を表示する初期画像を生成する例を説明したが、この限りではない。N個の階層を生成部301で生成し、全てを表示したり、上述したように表示する階層を選択したりすることができる。但し、Nは2以上の整数である。さらに、本実施形態では、操作検出部303がユーザによるタッチまたは複数の位置へのタッチ(以下、マルチタッチ)操作を検知し、表示されていない階層を挿入して表示させたり、表示されている階層を隠したりすることができる。以下、この機能について説明する。
図3(A)のフローチャートのステップS14において、操作検出部303は、オブジェクトに対して行われたタッチ操作を検出し、その操作量を求める。このとき、操作検出部303は、さらにユーザによるタッチまたはマルチタッチの操作とその操作量を算出し、どのような操作が行われたのかを判定する。検知された操作が表示するオブジェクト配列を変更するための操作であると判定された場合、ステップS15において、表示制御部302は、検知した操作に応じて、オブジェクト配列の挿入・削除を行った表示画像を生成する。
図7は、本実施形態による画像処理装置100の表示画像の一例である。図7(A)は図5(A)と同様の初期画像であって、配列502はMonth、配列503はDay、配列504がContentsの階層を示す。初期画像においては、表示されていないオブジェクト配列のデータがRAM201には存在することをわかりやすく示すためのチェックマーク701a、701bを、該当する配列間に表示させることもできる。まず、図7(A)の3階層が表示されている初期画像において、ユーザはチェックマーク701aが表示されていることにより、配列502よりも左にさらに上位階層の配列を表示可能であることを視認できる。そして、図7(A)での物体103のように表示画像500の左端をタッチして、矢印702の方向にドラッグする。すると、図7(B)で示すように、上位階層であるYearの階層を示す配列705が新たに表示されて、Contentsは画面外に追い出される。そして、表示範囲外に下位階層の配列が存在することを示すチェックマーク701c、およびYear階層のグループとMonthの階層のオブジェクトの親子関係を示す矢印バー505eが新たに表示される。Contentsの階層を表示させたい場合には、表示画像500の右端をタッチして逆方向にドラッグすればよい。また、図7(C)、図7(D)で示すように、マルチタッチによる操作によって中間の階層の配列を表示させることもできる。ここでは、DayとContentsの間をピンチアウトする操作(タッチスクリーンを並列にタッチした指等の2つの物体によるタッチ位置の間隔を、それぞれのタッチ状態を維持したまま広げる操作)を行うことによって、新たな軸を挿入することも可能である。図7(C)は、矢印703の方向に指を広げる様子を示している。すると、図3(D)のように、DayとContentsの間に新たにHourの階層であるオブジェクト配列が挿入され、Monthの階層は画面外に押し出される。また、対象とするオブジェクト配列にピンチ操作(タッチスクリーンを並列に指等の2つの物体でタッチし、つまむように2点のタッチ位置の間隔を狭める操作)を行うことで、表示中の階層のオブジェクト配列の表示を省略することもできる。この場合の表示画像の遷移は、図7(D)から図7(C)への遷移に等しくなる。
本実施形態では、図4で示したように、生成部301にて、予め時間階層のグループを配列データとして生成していることで、速やかに挿入されたオブジェクト配列を表示させることができる。ただし、ユーザがオブジェクトを閲覧しているバッググラウンドで、表示されていない階層の配列データを生成してもよい。このようにすると、画像処理装置100を起動してから初期画像が表示されるまでの処理負荷を軽くし、ユーザは速やかにオブジェクトの閲覧を始めることができる。従って、表示する必要が生じるかどうか不明な配列データを多数生成するために初期画像の生成までに時間がかかり、ユーザにストレスを感じさせることを防ぐ効果がある。この際、バックグラウンドでは、表示中の階層における1グループ単位に属する下位階層のオブジェクトが所定の数より少なければ、いくつかのグループをまとめた上位階層の配列データを用意するようにすることができる。逆に、表示中の階層において、1グループ単位に属する下位階層のオブジェクト数が所定の数よりも多いことに応じて、更に詳細な分類による下位階層の配列データを用意するようにすることもできる。例えば、図7(A)の初期画像において、Dayの階層のグループには、平均して100枚以上のオブジェクトが含まれているとする。このような場合、Contents階層において数個ずつオブジェクトをスクロールしていては、ユーザが所望とするオブジェクトを検索したい時には効率がよくない。しかし、上位のDay階層をスクロールすると、100枚以上の画像がまとまって移動してしまい、その中に含まれる所望とするオブジェクトを見つけるのは返って困難になる。このような課題を解決するため、ユーザがオブジェクトを閲覧している間に、バックグラウンド処理として、生成部301が、メタデータを用いて下位階層のオブジェクトをグループ化し、Hour階層の配列データを生成する。そして、そのバックグラウンド処理の完了にともなってチェックマーク701bを表示させるように構成することも可能である。これにより、ユーザは、Contents階層よりは大まかに、かつDay階層よりは詳細に、オブジェクト配列をスクロールすることが可能となるので、所望とするオブジェクトを見つけやすい。
上述したように、本発明によれば、スクロールする階層によってオブジェクトのスクロール量を調節することができる。従って、このように、適宜表示画像を変更し、表示中の階層よりも上位もしくは下位の階層を表示させられることで、ユーザの希望に沿ったスクロール操作が可能な環境を提供することができる。なお、本実施形態ではタッチスクリーン101を操作部とするため、マルチタッチ操作を利用する。ただし、マウスやその他のポインティングデバイスを利用する画像処理装置においては、チェックマーク701をダブルクリックするなどの操作で、同じように階層の挿入、削除を指示できる。
なお、本実施形態では、日付のメタデータを用いて配列データを生成するが、日付を用いた配列データの生成以外の実施形態にも適用可能である。例えば、オブジェクトの名前を利用し、アルファベット順でオブジェクトを整列することによって階層やグループを生成する場合にも適用できる。その他の適用例として、オブジェクトにGPSによる位置情報や、ユーザの嗜好、カテゴリといったメタデータが付与されている場合は、それらの情報を利用してオブジェクトを整列させることも考え得る。
また、本実施形態では、ステップS13で表示される初期画像は、前回使用時に最後に表示されていた画像である。これは、公知の履歴機能を用いて実現される。例えば、使用終了時に最下位階層に表示されていたオブジェクトを履歴情報としてストレージ207に記憶し、起動時に表示制御部302が履歴情報を取得する。そして、今回作成した配列データから該当するオブジェクトを選択し、表示画像に反映させるようにできる。ただし本発明の画像処理装置100の初期画像は、前回使用時の最後の表示画像に限られず、例えば表示ステップS10において取得されたオブジェクト群のうち、最も新しいオブジェクトを閲覧する状態を表示することもできる。この場合は、履歴情報を保持する必要はなく、配列データを参照する際、常に最も新しいオブジェクトをタッチスクリーン101に表示させるために選べばよい。
また、本実施形態では、オブジェクト配列に対する移動操作を縦に整列したオブジェクト配列の上下方向のスクロールとしたが、オブジェクトの集合を表示させる方法はこれに限らない。例えば、図1の102で示したように、オブジェクト配列を仮想的な回転体を模して表示し、回転を指示する操作によってオブジェクトを移動させ、伝搬部304によって回転量を伝搬するような表示をしてもよい。また、オブジェクト配列はオブジェクトを左右に整列させても構わない。いずれの表示方法においても、ユーザが直感的な操作によって階層的に整理されたオブジェクトの集合を閲覧し、表示されたオブジェクトを移動させることができる。
ここまで説明した第1の実施形態の変形例として、オブジェクトを移動操作する前の段階でオブジェクト配列の表示形態を変更する処理ステップを加えることで、より操作性を向上させることができる。このような変形例の一例として、ユーザが操作対象とするオブジェクト配列を、その階層において注目するオブジェクトを中心に上下方向の中央に表示させるように表示画像を整える例を説明する。
オブジェクトを移動する操作の前に、操作対象となる階層においてオブジェクト配列の表示を変更し、注目するオブジェクトを中心に上下対称に表示するのは、ユーザに対してより操作しやすい環境を提供するためである。上述したように、第1の実施形態では、注目するオブジェクトの上下階層に相当するオブジェクトが、インジケータによって関連付けられ表示される。注目するオブジェクトを指し示すインジケータは、表示画像の上下方向の中央に固定されている。従って、インジケータが短辺の中心を指し示すように、注目するオブジェクトを積極的に移動させることにより、ユーザにとっては視認性が高まり、いずれのグループに属するオブジェクトを閲覧しているのかが直感的に分かりやすいという効果を奏する。また、第1の実施形態では、注目オブジェクトの上下階層に相当するオブジェクトの数に基づいて、移動操作を行った際の各オブジェクト配列の移動量が変化する。従って、所望の結果を得るためには、操作対象となる階層においていずれのオブジェクトに注目しているのかを明確に把握できることが好ましい。注目するオブジェクトの視認性を高めることで、ユーザは所望の結果を得るためのより直感的な操作がしやすくなる。
図8(A)のフローチャートは、変形例における画像処理装置100のオブジェクト表示処理の処理ステップを示すもので、図3(A)と重複する内容については同番号を付し、説明を省略する。
図8(A)のフローチャートで示されるステップS10からステップS14までの処理は、図3(A)と同様である。この変形例では、ステップS14において、操作検出部303が、オブジェクトが操作されたことを検出した場合にはオブジェクト配列が操作された(ステップS14でYES)は、ステップS15Aに進む。そして、オブジェクトが操作されていない場合(ステップS14でNO)には、操作が行われるまで待機する。ステップS15Aでは、オブジェクト表示変更処理を行う。図8(B)は、ステップS15Aにおけるオブジェクト表示変更処理の処理フローを示すフローチャートである。図8(B)を用いて、本実施形態のオブジェクト表示処理の詳細を説明する。
まずステップS200において、画像処理装置100の操作検出部303は、操作されたオブジェクトが属する階層(オブジェクト配列)を特定する。そして、続くステップS201において、操作されたオブジェクト配列が既に操作対象として設定されているかどうかの判定を行う。ここで、既に操作対象として設定されているとは、直近で移動操作を行った階層と同じであることをいう。画像処理装置の起動直後の操作であれば、常にNOの判定をする。ただし、前回使用時の最後の表示画像と操作情報を、履歴情報として利用可能であれば、それを用いてステップS201の判定をすることができる。タッチされたオブジェクト配列が既に操作対象として設定済みである場合(ステップS201でYES)は、オブジェクト表示変更処理(ステップS19)は完了し、呼び出し元の処理にその結果がリターンされる。
タッチされた階層が操作対象として設定されている階層ではなかった場合(ステップS201でYES)は、ステップS202においてタッチされた階層を操作対象の階層として設定し、RAM201に設定情報を保持する。さらに、ステップS203において、画像処理装置100の伝搬部403は、操作対象階層における注目するオブジェクトを、上下方向の中央に表示させるように、該当するオブジェクト配列の移動量を求める。この移動に伴い、操作対象のオブジェクト配列は上下対称に表示されるようになる。続くステップS204では、注目するオブジェクトの上下階層のオブジェクト数Nを、RAM201上の配列データから取得する。ステップS204を処理した後は、ステップS23からS25の処理が順次行われる。図8(B)のステップS23からステップS25までの処理は、図3(B)を用いて説明した第一の実施形態と同様である。そして、ステップS205において、オブジェクト表示変更処理のために生成した画像を出力し、タッチスクリーン101上の表示を更新する。すると、オブジェクト表示変更処理(ステップS15A)は完了し、呼び出し元の処理にその結果がリターンされる。続くステップS15以降の処理ステップは、図3(A)、(B)のフローチャートにおける処理ステップと同様であるため、説明省略する。
図9は、オブジェクト表示変更処理による表示画像500の遷移と、各表示状態でのタッチスクリーン101と物体103の位置関係を示す概要図である。この変形例による表示変更処理による表示画像の遷移を、図9を用いて説明する。図9(A)で示すように、例えば最初に、Contents階層のオブジェクト配列504を移動操作していたとする。そして、図9(B)で示すように、一旦オブジェクト配列に対するタッチ操作を中止するとする。その場合、特に表示は変更されず、操作が中止された時点での表示状態が保持される。次にこの状態で、Day階層を操作するために、オブジェクト配列503をタッチしたとする。この時、伝搬部304と表示制御部302は、タッチされたオブジェクト配列503のオブジェクトが、注目するオブジェクトを中心に上下対称に表示されるように移動させる。また同時に伝搬部304は、オブジェクト配列503の移動量とオブジェクト数Nに基づいて、オブジェクト配列502、オブジェクト配列504も連動して移動させる。そして各オブジェクト配列の移動量に基づいて、表示制御部302において図9(C)で示す表示画像が生成され、各オブジェクト配列のオブジェクトが注目するオブジェクトを中心に上下対称となって表示更新される。
以上説明した変形例では、オブジェクトを移動操作する前の段階でオブジェクト配列の表示形態を変更する処理として、操作対象オブジェクト配列を注目するオブジェクトを中心に上下対称に表示させた。ただし、表示形態を変更は、この限りではなく、例えば、オブジェクトのサイズを変更することができる。このような変形例の一例として、操作対象とする階層によって、ユーザの閲覧対象となる階層の配列におけるオブジェクトの表示サイズを変更する変形例を説明する。
図面を参照しながら変形例を詳細に説明する。尚、第1の実施形態および既に述べた変形例に準ずる箇所については、その説明を省略する。この変形例においても、図8(A)のフローチャートに従い、オブジェクト表示処理を行う。図3(A)と重複するステップについては同様の処理を行い、ステップS15AおよびステップS15では、次のように処理する。
ステップS15Aにおいては、図10(A)のフローチャートに示すオブジェクト表示変更処理を実行する。図10(A)のフローチャートにおいて、まずステップS300では、画像処理装置100の操作検出部303が操作されたオブジェクトが属する階層を特定する。そして、ステップS301において、RAM201上の配列データを参照し、特定した階層が最下位の階層であるかが判定される。最下位の階層である場合(ステップS301でYES)には、ステップS302で変数Mに1より大きい数を割り当てる。最下位の階層でなければ(ステップS301でNO)、ステップS303において変数Mに0<M<1の数を割り当てる。そして、続くステップS304において、最下位の階層で表示される第2オブジェクトの表示サイズを、上位階層で表示される第1オブジェクトのM倍に変更する。ただし、ここで表示サイズとは、サムネイル画像の面積である。ステップS305においては、変更された表示サイズに基づいて、新たな表示画像を生成する。そして、ステップS306において、生成された画像を表示制御部302がタッチスクリーン101に出力し、表示を更新する。図11(A)は、ユーザが最下位階層の配列504のオブジェクトに対して操作を行った場合に更新された表示画像の一例である。オブジェクト508を始め、オブジェクト配列504の第2オブジェクトが上位階層の第1オブジェクトより大きい表示サイズに変更されている。また、図11(B)は、ユーザが上位階層の配列503の第1オブジェクトに対して操作を行った場合に更新された表示画像の一例である。オブジェクト509を始め、オブジェクト配列504の第2オブジェクトが上位階層の第1オブジェクトより小さい表示サイズに変更されている。図11(B)のように、表示サイズを変更するのは、上位階層において注目する第1オブジェクトが示すグループに属する下位階層の第2オブジェクトのみであってもよい。ステップS15Aにおける処理が終了したら、ステップS15のオブジェクト移動処理に進む。この変形例におけるオブジェクト移動処理は、図10(B)のフローチャートに従う。図10(B)のフローチャートにおいて、ステップS23A以外の処理は全て第1の実施形態と同様に、まず操作されたオブジェクトの移動量を求め(ステップS20)、階層とグループを特定し(ステップ21)、上位階層のオブジェクト数Nを取得する(ステップS22)。
図10(B)のステップS23Aでは、ステップS22で取得したオブジェクト数Nとともに、ステップS304において表示サイズを決定した変数Mを利用して、下位階層の第2オブジェクトの移動量を決定する。最下位階層に属する第2オブジェクトが操作によって移動された場合に(1<M)、上位階層に属する第1オブジェクトを連動して移動させる移動量は、図3(B)のステップS23の方法で決定した移動量に対してさらに1/M倍した量に基づいて決定される。また、上位階層に属する第1オブジェクトが操作によって移動された場合に(0<M<1)、最下位階層に属する第2オブジェクトを連動して移動させる移動量は、図3(B)のステップS23の方法で決定した移動量に対してさらにM倍した量に基づいて決定される。このとき、表示変更されたオブジェクトの表示上の配置やオブジェクト間のギャップ値を考慮した調整が必要となる場合もある。本実施形態において表示サイズが変更されるのは最下位階層のみであるので、最下位階層と隣り合わない上位階層のオブジェクト配列の移動量は、図3(B)のステップS23の方法で決定される。以降、図8(B)と同様、ステップS24において、一連の移動に伴い、最下位層のオブジェクト配列においてグループの境界に相当するオブジェクト間のギャップがインジケータを通過し、インジケータがグループの境界を越える移動が行われるかを判定する。そしてステップS25において、移動後の表示画像を生成し、オブジェクト移動処理を終了する。そして、図8(A)のフローチャートに戻り、オブジェクト表示処理が引き続き実行される。
この変形例は、以下のような場合に、特に操作性を向上させる効果を奏する。例えば、オブジェクト配列の第1の実施形態およびその変形例のように、オブジェクトが画像である場合、最も下位のContents階層は、ユーザが1つ1つの画像を閲覧するための階層である。従って、ユーザがContents階層をスクロールする場合には、オブジェクトは内容を詳細に確認できるように大きく表示されることが望ましい。一方で、ユーザが上位階層をスクロールする場合は、下位階層の画像を高速にスクロールしたい場合である。このとき、下位階層のオブジェクトの表示サイズは大きい必要はなく、むしろ小さければ、上位階層におけるスクロール移動量が小さくて済むため、効率が良いという効果がある。変数Mを用いることで下位階層のオブジェクト配列における移動量が極端に大きくなることを避ければ、上述したように下位階層におけるスクロール移動の過程を分割してアニメーション等で表示出力する場合にも、ハードウェアにかかる負荷を軽くすることもできる。
なお、ユーザが操作対象とした階層が、最下位の階層であるかどうかによって、最下位階層に表示されるオブジェクトの表示サイズを変更する変形例を説明したが、表示サイズを変更する際の条件は、これに限らない。例えば、上位階層において注目するオブジェクトの下位階層に相当するオブジェクト数がある閾値より大きい場合に、表示サイズを上位階層よりも小さくするように設定することもできる。この場合も同様に、下位階層を高速にスクロールする際の効率をよくするという効果がある。また、同様の効果を得るために、ユーザが最下層のオブジェクト配列のオブジェクトをピンチまたはピンチアウトする操作により、表示サイズを任意に変更させても良い。この場合には、ユーザ自信が直感的な操作で、適切な変数Mを設定できるという利点がある。もちろん、下位階層のスクロールの過程を表示せず、一旦オブジェクト配列の表示をリセットして、移動後のオブジェクト配列を表示させることによっても、高速に移動するオブジェクトを表示させるために生じる処理負荷は低減できる。リセットしている間は、背景を表示してもよいし、テキストや仮の画像等を表示させることによって、スクロール中であることを示してもよい。
なお、ここまで説明した第1の実施形態とその変形例では、オブジェクト(画像)が有する撮影日時のメタデータを利用することで階層構造を有する配列データを生成したが、これに限られない。例えば、音楽ファイル(曲)が有するメタデータを利用して階層・グループを生成することもできる。この場合、生成部301は、音楽ファイルに付加されているメタデータを利用して、ジャンル、アーティスト、アルバム、曲の順序で配列データを生成し、生成した配列データをRAM201に保持する。表示制御部302は、RAM201に保持されている配列データから表示画像を生成し、タッチスクリーン101に出力する。表示制御部302で生成される表示画像1200の一例を図12に示す。オブジェクト配列1202からオブジェクト配列1205は、配列データの各階層に対応するものとする。ユーザは、適当な階層のオブジェクト配列をスクロールして、所望とする音楽ファイル(曲)を示すオブジェクト最下位階層の配列1205に表示させる。なお、表示されるオブジェクトは、テキストであっても、アーティストの写真やアルバムジャケットなどのサムネイル画像であってもよい。そして例えば、配列1205において注目するオブジェクトに対応する音楽ファイルを、再生させる。または、配列1205に表示させた中からタッチ操作などにより選択したオブジェクトに対応する音楽ファイルを再生させる。このような構成によって、新しいミュージックブラウザのインタフェースを提供することが可能となる。また、同様に書籍ファイルのジャンルや著作者名、出版元などの情報のメタデータを利用すれば、電子ブック端末における書籍ファイルの管理用インタフェースを提供することも可能である。
<第2の実施形態>
第1の実施形態では、画像オブジェクトが有する撮影日時という1種類のメタデータを利用し、階層構造の配列データを生成した。これに対し、第2の実施形態では、オブジェクトが有する複数種類のメタデータを分類条件として階層化およびグループ化に利用し、階層構造を有する配列データを生成する実施形態を説明する。第2の実施形態においても、システム概要図、ハードウェア構成図、機能ブロック図、メインのフローチャートは、図1〜図3を用いて説明した第1の実施形態と同様である。第2の実施形態においても、他図を用いて説明されたものには同一の符号を付し、その説明を省略する。
図13は、第2の実施形態において、生成部301が生成する配列データ(ステップS11)の一例である。生成部301は、画像オブジェクトが有する撮影日時を示す情報および撮影されたイベントを示す情報の2種類のメタデータを分類条件として階層化・グループ化に利用する。ここで、撮影されたイベントを示す情報のメタデータは、デジタルカメラに搭載された撮影画像のカテゴライズ機能等、公知の技術によって予め画像オブジェクトに付与されたメタデータである。これらのようなメタデータを用い「年、イベント、オブジェクト」ならびに「イベント、年、オブジェクト」についてもそれぞれ階層化・グループ化を行い、配列データを生成する。このように、2種類のメタデータを利用した場合では、いずれのメタデータを上位階層とするかによって、階層化に2つのパターンが生じる。図13(A)に示す「年、イベント、オブジェクト」の配列データの場合には、まず最上位の階層1301aは、撮影日時の情報によって撮影年毎にグループ化されている。さらに、その下位に相当する階層1302aは、各撮影年グループの中でそれぞれ、撮影されたイベントを示す情報によってイベント毎にグループ化されている。そして、最下位の階層13030aでは、上位階層のグループに対応する2つのメタ―データの条件を満たすオブジェクトが対応付けられている。ただし、本実施形態において、同じグループ内の複数のオブジェクトは、撮影日時順に並べることとする。一方、図13(B)で示す「イベント、年、オブジェクト」の配列データの場合には、まず最上位の階層1301bは、撮影されたイベントを示す情報によってイベント毎にグループ化されている。そして、その下位に相当する、各イベントグループの中でそれぞれ、撮影日時を示す情報によって撮影年毎にグループ化されている。そして、最下位の階層1303bでは、上位階層のグループに対応する2つのメタ―データの条件を満たすオブジェクトが対応付けられている。同じ2つの条件を満たすオブジェクトは同じになるが、前後のグループに対応するオブジェクトは異なる。例えば、図13(A)の配列データでは、2010年の運動会の前には2010年の花火大会の画像のグループが対応する。一方で、図13(B)の配列データでは、2010年の運動会の前は2009年の運動会のグループが対応する。
表示制御部302が、図13(A)の配列データを用いて生成する表示画像(ステップS25)がタッチスクリーン101に出力され、表示されたものが、図14(A)である。階層1301a、1302a、1303aは、オブジェクト配列1401a、1402a、1403aに対応している。そして、Yearの階層においては2010年のグループが、Eventの階層においては運動会のグループが注目するオブジェクトとして、インジケータに関連付けられて表示されている。同様に、図13(B)の配列データを用いて生成する表示画像が表示されたものが、図14(B)である。第2の実施形態においても、上位階層において注目する第1オブジェクトを移動させるのに連動して、下位階層の第2オブジェクトが移動する移動量は、Nに基づいて第1オブジェクトの移動量よりも大きくなる。また、下位階層において注目する第2オブジェクトを移動させるのに連動して、上位階層の第1オブジェクトが移動する移動量は、Nに基づいて第2オブジェクトの移動量よりも小さくなる。すなわち、各階層のオブジェクト配列を移動(スクロール)させたときの移動量が、注目するオブジェクトの上下階層に属するオブジェクトの数Nに応じて、他の階層に伝搬し、全てのオブジェクト配列が連動して移動する。これを利用して、上位階層のオブジェクト配列を移動操作することで、下位階層のオブジェクト配列を高速にスクロールさせることが可能となる。また、インジケータは、上位階層において注目する第1オブジェクトと、その下位階層に属する第2オブジェクトの親子関係を示すとともに、閲覧している第2オブジェクトの、グループ全体に対する相対位置を表現する。従って、上位階層のオブジェクトを、インジケータとの相対位置を調整して移動させれば、下位階層において所望とするオブジェクトを検索しやすくなる。
本実施形態では、上述したように、配列データに2つのパターンがあるため、図14(A)の表示画像、あるいは図14(B)の表示画像においてオブジェクト配列をスクロールしたそれぞれの場合では、閲覧できるオブジェクトの順序が異なる。従って、ユーザは「どのような画像を見たいか」によって、いずれの配列データに基づいたオブジェクト配列の配置を用いるかを切替えることが可能である。本実施形態において、表示中のオブジェクト配列を入れ替える操作は、マルチタッチ操作によって行う。例えば、図14(A)の画像で、2010年の運動会の画像を閲覧しているとする状態で、ユーザが「運動会の写真を数年分まとめて見たい」という希望があったとする。ことのとき、ユーザはYearの階層の配列1401aとEventの階層の配列1402aを同時にタッチし、矢印1404の方向に回転させる。すると、画像が図14(B)のように遷移する。このとき、Yearの階層においては2010年のグループが、Eventの階層においては運動会のグループが注目するオブジェクトとして、変わらずにインジケータに関連付けられて表示されている。従って、図14の例では、Contents階層である配列1403aと配列1403bに表示されているオブジェクトは、マルチタッチによる操作直後では変化しない。表示されるオブジェクト配列を入れ替えた後に、いずれかのオブジェクト配列に対し移動操作を行うと、並び合うグループが変化したため、2010年の運動会に続いて2009年、2008年の運動会の画像を閲覧することが可能になる。ただし、例えば、マルチタッチ操作の際にタッチしたオブジェクトを、遷移後の表示画像における注目オブジェクトとしても構わない。この場合には、遷移後の表示画像において、注目するオブジェクトを改めて選択する必要がなくなるという利点がある。
なお、図13(B)の配列データの例には、2011年の運動会の写真は含まれていない。従って本実施形態では、2010年の運動会の後には、配列データの順序に従って2008年のクリスマスの画像のグループが表示される。ただし、本実施形態の構成は上位階層のメタデータによる条件にあう画像のうち、下位階層のメタデータによる条件にあう画像を絞り込んで所望の構成の画像を検索する画像処理装置に利用することも可能である。その場合には、最上位のEventの階層において運動会のグループに注目すると、下位の、Yearの階層のオブジェクト配列においては2008年、2009年、2010年のそれぞれ運動会を示す3つのグループしか表示されない。
以上、本実施形態で述べたように、複数の種類のメタデータを有するオブジェクトを階層化およびグループ化した配列データを生成することで、ユーザは所望の条件に合う画像をまとめて閲覧することができる。さらに、マルチタッチ操作を用いた軸の入れ換えを実現することによって、意図に合わせて画像を並べる条件を変更することができ、さらに操作性を高めることができる。なお、本実施形態においても第1の実施形態同様の変形例を用いることができる。すなわち、オブジェクトを移動操作する前の段階でオブジェクト配列の表示形態を変更する処理ステップを加えることで、より操作性を向上させることができる。その際、操作対象となるオブジェクト配列を、注目するオブジェクトを中心とした上下対象に表示させることで、注目するオブジェクトをより明確に示すことができる。また、操作対象となるオブジェクト配列に応じて、最下位階層に属するオブジェクトの表示サイズを変更することで、画像オブジェクトの内容をより詳細に確認できたり、効率よくスクロールさせたりすることができる。
なお、ここまで説明した本実施形態では、画像オブジェクトを扱ったが、例えば、テレビ放送の番組情報が持つメタデータを利用して階層・クループを生成することもできる。この場合、生成部301は、TV番組に付加されているメタデータを利用して、配列データを生成しRAM201に保持する。表示制御部302は、RAM201に保持されている情報から表示画像を生成し、タッチスクリーン101に出力する。
図15に、表示制御部302で作成される表示画像1500の例を示す。図15(A)は、生成部301が、チャンネル、時間、番組の順序で、番組情報を階層化した配列データに基づく表示画像1500である。従って、ユーザは同じチャンネルで放送されるテレビ番組の情報を時系列順に閲覧していくことができる。一方で、図15(B)は、生成部301が、時間、チャンネル、番組の順序で、番組情報を階層化した配列データに基づく表示画像1500である。この場合、ユーザは同じ時間帯に放送されているテレビ番組の情報をチャンネル順に閲覧していくことができる。本実施形態では、生成部301が、これらの配列データの複数パターンを予め生成してくため、ユーザはマルチタッチ操作によって、オブジェクト配列を入れ替える操作を行うと、速やかに表示画像が更新される。また、配列データに用いるメタデータの種類は時間、チャンネルに限らず、様々なメタデータを利用することでユーザの利便性を向上させることができる。例えば、生成部301にて、ジャンル、日時、番組/chの順序で配列データを生成した場合に、表示制御部302で生成される表示画像は図15(C)のようになる。第1の実施形態のように、予め、表示されるよりも多くの階層の配列データを生成しておき、マルチタッチ操作によって、適宜オブジェクト配列を挿入・削除して表示画像をカスタマイズすることが可能であってもよい。その場合、ユーザの嗜好に合わせた多くのパターンの表示画像を提供できる。以上、本変形形態で示した構成にすることによって、新しい電子番組表(EPG:Electronic Program Guide)のインタフェースを提供することが可能となる。
<他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。