以下、図面を参照して、本発明の実施例を詳細に説明する。
本発明に係る画像閲覧システムの一実施例は、Webサーバ機能を有するカメラと、当該カメラの記録画像を閲覧する外部の閲覧装置(クライアント装置)とからなる。図1は、閲覧装置(クライアント装置)となる携帯端末100の概略構成ブロック図を示す。
携帯端末100は、制御部101、ROM102、RAM103、無線通信部104、表示部105、操作部106及び記録部107を備える。これらの構成要素は、データの伝送路としての内部バス108によって相互に接続される。
制御部101は、携帯端末100の全体を制御する処理ブロックであり、例えばCPUで構成され、ROM102に格納されたプログラムを実行することにより各種機能を実現する。
ROM102は不揮発性の読み出し専用メモリであり、制御部101によって実行される処理プログラム及びデータを格納するメモリである。
RAM103は揮発性の読み書き可能なメモリであり、制御部101のワーキングメモリ及びデータの一時記憶領域として使用される。
無線通信部104は、IEEE802.11方式を用いた無線LAN通信を行う処理ブロックである。無線通信部104は、ベースバンド/MACコントローラ回路、RFモジュール及びアンテナ等によって構成される。
表示部105は、ユーザに情報を表示出力する処理ブロックであり、例えば液晶パネル又は有機ELパネル等によって構成される。
操作部106は、ユーザからの指示入力を受け付ける処理ブロックであり、タッチパネル及び操作ボタン等によって構成される。
記録部107は、内蔵フラッシュメモリまたは着脱可能なメモリカード等の大容量の記録媒体等にデータを読み書きする処理ブロックである。
図2は、携帯端末100の制御部101によって実行されるWebブラウザ機能のソフトウエア構成図である。携帯端末100のWebブラウザ機能は、Webブラウザアプリケーションを実行するWebブラウザ部201と、無線通信部104を制御して無線LANによるデータ通信処理を実行するネットワーク部202で構成される。Webブラウザ部201は、ユーザインターフェース部203、ブラウザエンジン部204、レンダリングエンジン部205、データストレージ部206、JavaScriptインタプリタ部207、HTTPクライアント部208で構成される。「JavaScript」は登録商標である。
ユーザインターフェース部203は、アドレスバー、戻る/進むボタン、ブックマーク及びメニューなど、ブラウザ画面においてユーザによる操作指示を受け付けるモジュールである。
ブラウザエンジン部204は、ユーザインターフェース部203とレンダリングエンジン部205の間の処理を整理するモジュールである。
レンダリングエンジン部205は、要求されたコンテンツの表示を担当するモジュールである。たとえば、レンダリングエンジン部205は、ネットワーク部202より取得したHTMLデータとCSSデータを解析し、解析結果のページを表示部105の画面に表示する。
データストレージ部206は、Cookie及びキャッシュなどさまざまなデータを記憶するモジュールである。データストレージ部206は、ROM102からのデータ読出し、RAM103へのデータの読み書き、及び記録部107による記録媒体へのデータ読み書きを実行する。
JavaScriptインタプリタ部207は、JavaScriptコードの解析と実行を担当するモジュールである。
HTTPクライアント部208は、HTTPリクエストの生成処理及びHTTPレスポンスの解析処理を実行するモジュールである。
図3は、外部の携帯端末100で閲覧されるべき画像を記録・保持する画像記録装置(サーバ装置)としてのカメラ300のハードウエアの概略構成ブロック図を示す。カメラ300は、制御部301、ROM302、RAM303、無線通信部304、表示部305、操作部306、記録部307及び撮像部308を備える。これらの構成要素は、データの伝送路としての内部バス309によって相互に接続される。
制御部301は、カメラ300の全体を制御する処理ブロックであり、例えばCPUで構成され、ROM302に格納されたプログラムを実行することにより各種機能を実現する。
ROM302は不揮発性の読出し専用メモリであり、制御部301によって実行される処理プログラムやデータ、および後述するWebコンテンツデータを格納するメモリである。
RAM303は揮発性の読み書き可能メモリであり、制御部301のワーキングメモリ及びデータの一時記憶領域として使用される。
無線通信部304は、IEEE802.11方式を用いた無線LAN通信を行う処理ブロックである。無線通信部304は、ベースバンド/MACコントローラ回路、RFモジュール及びアンテナ等によって構成される。
表示部305は、ユーザに情報を表示出力する処理ブロックであり、例えば液晶パネル又は有機ELパネル等によって構成される。
操作部306は、ユーザからの指示入力を受け付ける処理ブロックであり、タッチパネル及び操作ボタン等によって構成される。
記録部307は、内蔵フラッシュメモリまたは着脱可能なメモリカード等の大容量の記録媒体にデータを読み書きする処理ブロックである。記録媒体には、撮像部308によって撮影された画像データが記録される。
撮像部308は、光学レンズ、CMOSセンサ及びデジタル画像処理部等で構成される撮影画像生成ブロックである。撮像部308では、CMOSセンサが、光学レンズを介して入力する光学像をアナログ画像信号に変換し、デジタル画像処理部がCMOSセンサからのアナログ画像信号にデジタル画像データに変換する。
図4は、カメラ300の制御部301によって実行されるWeb機能に関するソフトウエアの構成ブロック図である。カメラ300のWeb機能は、Webサーバアプリケーションを実行するWebサーバ部401と、無線通信部304を制御して無線LANによるデータ通信処理を実行するネットワーク部402で構成される。Webサーバ部401は、メディアコンテンツ部403、画像連結部404、Webコンテンツ部405及びHTTPサーバ部406で構成される。
メディアコンテンツ部403は、静止画、動画及びサムネイル画像などの画像データを管理するモジュールである。メディアコンテンツ部403は、記録部307を制御して画像データを記憶媒体から読み出し、記憶媒体に格納する。
画像連結部404は、メディアコンテンツ部403から取得した複数のサムネイル画像データを連結してひとつの画像(連結画像)を生成するモジュールである。画像連結部404は、連結画像を生成するとともに、連結の元となる画像(ここではサムネイル画像)の位置情報を示す位置情報データも生成する。
図5は、画像連結部404による連結例を示す。幅160ピクセル、高さ120ピクセルのサムネイル画像が4枚連結された連結画像、および位置情報データの例を示す。図5(a)が4枚のサムネイル画像が連結されて出来た連結画像を示し、図5(b)は対応する位置情報データを示す。位置情報データは、各画像データをユニークに示す画像ID(識別子)、ファイル名、X方向のオフセット、Y方向のオフセット、X方向のサイズ(長さ)及びY方向のサイズからなる。オフセットは、連結画像の左上の位置を基点として、当該起点からの画素数を示す。
Webコンテンツ部405は、ROM302に格納されているWebコンテンツデータを管理するモジュールである。Webコンテンツデータは、一般に、HTMLデータ、JavaScriptデータ、CSSデータ及びボタン画像データなどからなる。
HTTPサーバ部406は、HTTPリクエストの解析処理及びHTTPレスポンスの生成処理を実行するモジュールである。
本実施例では、図6に示すように、携帯端末100とカメラ300を無線LANなどのネットワークを介して接続する。
携帯端末100とカメラ300は、無線LANによってピアツーピアで接続される。例えばカメラ300が無線LANのアクセスポイントとなり、携帯端末100が無線LANのステーションになることにより、ピアツーピアでインフラストラクチャーモードによって接続可能である。アクセスポイントとステーションの関係は逆でもよいし、それぞれがステーションとなりアドホックモードによって接続してもよい。
図6に示すネットワークシステム構成において携帯端末100とカメラ300の間でやりとりされるサムネイル一覧画面表示の処理シーケンスを、図7を参照して説明する。
ステップS701において、携帯端末100とカメラ300の間の無線LAN通信接続が確立され、それぞれにIPアドレスが設定される。例えば、ユーザがカメラ300を操作してカメラ300のアクセスポイント機能を有効化し、その後、携帯端末100の無線LAN設定画面等を操作して、カメラ300のアクセスポイント機能が生成した無線ネットワークに参加する。
ステップS702において、携帯端末100の制御部101は、操作部106によりユーザからの接続操作を受け付ける。例えば、ユーザの操作は、携帯端末100上のWebブラウザアプリケーションを起動し、そのWebブラウザ画面において、サムネイル一覧画面を取得するためのURL(Uniform Resource Locator)を入力する操作である。
ステップS703において、携帯端末100の制御部101は、無線通信部104からカメラ300にサムネイル一覧画面のHTMLデータの取得を要求する。カメラ300の制御部301は、無線通信部304を介して、このサムネイル一覧画面取得要求を受信する。
ステップS704において、カメラ300の制御部301は、ROM302に格納されるサムネイル一覧画面のHTMLデータを読み出し、無線通信部304によって携帯端末100に送信する。携帯端末100の制御部101は、無線通信部104によって、カメラ300から送信されるサムネイル一覧画面のHTMLデータを受信する。ここで受信されるHTMLデータには、JavaScriptデータの取得先を示すURL、およびCSSデータの取得先を示すURLが記述される。
ステップS705において、携帯端末100の制御部101は、ステップS704で受信したHTMLデータに記述されたJavaScriptデータの取得先を示すURLに対して、JavaScriptデータの取得要求を送信する。カメラ300の制御部301は、無線通信部304を介して、この取得要求を受信する。
ステップS706において、カメラ300の制御部301は、ROM302に格納されるJavaScriptデータを読み出し、無線通信部304によって送信する。携帯端末100の制御部101は、無線通信部104によって、カメラ300から送信されるJavaScriptデータを受信する。ステップS709以降のHTTP処理は、ここで受信したJavaScriptデータを実行することによって実現される。
ステップS707において、携帯端末100の制御部101は、ステップS704で受信したHTMLデータに記述されたCSSデータの取得先を示すURLに対して、CSSデータの取得要求を送信する。カメラ300の制御部301は、無線通信部304を介して、この取得要求を受信する。
ステップS708において、カメラ300の制御部301は、ROM302に格納されるCSSデータを読み出し、無線通信部304によって送信する。携帯端末100の制御部101は、無線通信部104によって、カメラ300から送信されるCSSデータを受信する。以降の画面表示処理は、ここで受信したCSSデータを利用して実行される。
ステップS709において、カメラ300の制御部301は、接続後の最初の画面に表示するサムネイル画像を指定する画像連結条件を決定する。画像連結条件は、前述したように、カメラ300の画像連結部404によって行われる画像連結処理において連結対象とする画像を示す情報である。画像連結条件は、携帯端末100から見ると、一覧表示すべきサムネイル画像を指定する画像閲覧条件でもある。本実施例では、先頭のサムネイル画像の画像IDとそれに続く画像の数を、画像連結条件のパラメータとする。
最初に表示される画面における先頭画像の画像IDを説明上、”1”とする。このため、本ステップで決定される画像連結条件の先頭画像IDは1となる。画像数は携帯端末100の表示画面に一度に表示できるサムネイル画像数であり、サムネイルの画像サイズと、携帯端末100の表示画面サイズ(使用する表示領域の大きさ)とにより算出される。算出処理はJavaScriptにより可能である。本実施例では、画像数が6であるものとする。図8は、想定する最初の画面例を示す。図8に示す例に対応する画像連結条件は、「先頭画像ID:1、画像数:6」となる。
ステップS710において、携帯端末100の制御部101は要求送信手段として、ステップS709で決定した画像連結条件(先頭画像IDと画像数)の情報を含めた連結画像取得要求をカメラ300に送信する。例えば、“GET /api/getimage?startid=1&num=6”のようなリクエストラインのHTTP要求を送信することにより、連結画像取得要求のなかに画像連結条件を含ませることが可能である。カメラ300の制御部301は要求受信手段として、無線通信部304を介して、この取得要求を受信する。
ステップS711において、カメラ300の制御部301は、指定された画像連結条件にもとづき記録部307から必要な画像データを読み出し、連結画像と位置情報を生成し、携帯端末100に送信する。すなわち、制御部301は、連結画像と位置情報の生成手段であるとともに、連結画像と位置情報を携帯端末100に送信する情報送信手段である。ここで生成される連結画像と位置情報データの例を、図9に示す。携帯端末100の制御部101は、無線通信部304を介して連結画像と位置情報データを受信する。
カメラ300が指定された画像数の連結画像を一度に生成できない状況を想定しうる場合、カメラ300が段階的に応答できるようにしてもよい。このためには、例えば、次のようにすればよい。カメラ300は、HTTPレスポンスの中に、レスポンスで送信される連結画像に含まれるサムネイル画像IDの情報をテキストデータで含める。このレスポンスを受信した携帯端末100は、当該テキストデータを解析し、送信されなかった残りのサムネイル画像を含む画像連結条件を改めて指定した連結画像取得要求を発行し、カメラ300に送信する。これを繰り返す。
ステップS712において、携帯端末100の制御部101の分離手段が、ステップS711で受信した位置情報データを用いて、関連して受信した連結画像から個々のサムネイル画像を実質的に分離する。制御部101は、分離したサムネイル画像をデータストレージ部206などに記憶し、サムネイル一覧画面に配置して表示部105に表示する。一覧画面へのはめ込み又は割り当て自体は、CSSスプライト技術を利用することによって、位置情報データに基づいてCSSで表示範囲を指定することにより実現可能である。本ステップでは、図8で示すような画面が表示部105に表示される。理解を容易にするために、表示される個々のサムネイル画像に画像IDを付記してある。
ステップS712以降のステップS713〜S720は、表示部105の表示画面の変更・切替えに伴い、繰り返される。
ステップS713において、携帯端末100の制御部101は、次のユーザ操作によって表示されるべきサムネイル画像を決定し、操作パターン管理テーブルを更新する。サムネイル一覧画面におけるユーザ操作のパターンは複数考えられ、本実施例では、複数パターンのサムネイル画像が決定される。図10は、操作パターン管理テーブルの例を示す。図10に示すように、操作パターン管理テーブルは、操作パターンID、サムネイル画像ID、連結画像ID及び不足サムネイル画像IDから構成される。図10(a)は、本ステップで更新された内容を示す。
操作パターンIDは、各操作パターンを識別するためのIDである。本実施例では、ユーザの操作パターンとして4種類用意している。次ページへの切り替えを操作パターンID:1とする。前ページへの切り替えを操作パターンID:2とする。同一ページ上における上方向のスクロールを操作パターンID:3とする。同一ページ上における下方向のスクロールを操作パターンID:4とする。
サムネイル画像IDは、操作パターンIDに対応するユーザ操作が実行された場合に表示されるサムネイル画像のIDである。ここで、上述した4種類の操作パターンに対応するサムネイル画像IDの変遷を、現在ページ、前ページ及び次ページの3つのページ間の遷移例で説明する。図11Aは現在ページを示し、図11Bは次ページを示し、図11Cは前ページを示す。図11A、図11B及び図11Cは何れも、1ページあたり18枚のサムネイル画像を表示するサムネイル一覧ページを例示している。ID=1〜18が前ページに含まれるサムネイル画像を示す。ID=19〜36が現在ページに含まれるサムネイル画像を示す。ID=37〜54が次ページに含まれるサムネイル画像を示す。1画面に表示されるサムネイル画像数は6枚である。
図11Aに示す現在ページで、符号1101に示すID=27〜32のサムネイル画像が、現在、画面に表示されているとする。表示状態1101で操作パターンID=1のユーザ操作(次ページへの切り替え)が実行された場合、次ページ(図11B)の符号1102に示すID=37〜42の6枚のサムネイル画像が表示される。すなわち、操作パターンID=1のユーザ操作に対応して取得すべきサムネイル画像IDは、ID=37〜42となる。
サムネイル画像の表示状態1101で、操作パターンID=2のユーザ操作(前ページへの切り替え)が実行された場合、前ページ(図11C)の符号1103に示す範囲のサムネイル画像が表示されるべきである。従って、操作パターンID=2のユーザ操作に対応して取得すべきサムネイル画像IDは、ID=1〜6となる。
携帯端末100の制御部101は、ユーザ操作が一覧表示をスクロールする操作である場合に、スクロール方向の端までの未表示の画像に基づき画像閲覧条件を決定する。例えば、サムネイル画像の表示状態1101で操作パターンID=3のユーザ操作(上方向へのスクロール)が実行された場合、現在ページ(図11A)のページ先頭から直前の画像までの、符号1104に示すID=19〜26の8枚のサムネイル画像が取得される。すなわち、操作パターンID=3のユーザ操作に対応して取得すべきサムネイル画像は、同じページ内で現在の表示画像に先行する8枚のサムネイル画像(ID=21〜26)となる。
サムネイル画像の表示状態1101で操作パターンID=4のユーザ操作(下方向へのスクロール)が実行された場合、現在ページ(図11A)の符号1105に示すID=33〜36の4枚のサムネイル画像が表示される。すなわち、操作パターンID=4のユーザ操作に対応して取得すべきサムネイル画像は、同じページ内で現在の表示画像の次からページ最後までの画像、すなわち、4枚のサムネイル画像(ID=33〜36)となる。
図10の説明に戻ると、連結画像IDは、該当する連結画像IDを示す。本ステップでは、まだ該当する連結画像を取得していないので、「なし」となる。
不足サムネイル画像IDは、サムネイル画像ID欄に示すサムネイル画像のうち、連結画像ID欄に示す連結画像に含まれないサムネイル画像のIDを示す。本ステップでは、該当する連結画像がないので、不足サムネイル画像ID欄とサムネイル画像ID欄には同じIDが記入される。
ステップS714において、携帯端末100の制御部101は、ステップS713で決定したサムネイル画像IDに基づいて画像連結条件を決定する。ここでは、想定される各操作パターンに応じた画像連結条件が決定される。図11A、図11B及び図11Cに示す例では、操作パターンID=1に対応する画像連結条件は「先頭画像ID:37、画像数:6」である。操作パターンID=2に対応する画像連結条件は「先頭画像ID:1、画像数:6」である。操作パターンID=3に対応する画像連結条件は「先頭画像ID:19、画像数:8」である。操作パターンID=4に対応する画像連結条件は「先頭画像ID:33、画像数:4」である。
ステップS715において、携帯端末100の制御部101は、ステップS714で決定した4つの画像連結条件の情報を含めた連結画像取得要求をカメラ300に送信する。カメラ300の制御部301は、無線通信部304を介して、この取得要求を受信する。
ステップS716において、カメラ300の制御部301は、指定された画像連結条件にもとづいて、記録部307から画像連結条件で指定される画像データを読み出し、連結画像と位置情報データを生成し、携帯端末100に送信する。携帯端末100の制御部101は、無線通信部304を介して、連結画像と位置情報データを受信する。
ステップS717において、携帯端末100の制御部101は、ステップS716で受信した連結画像と位置情報データを、ユーザ操作パターンと関連付けて、記録部107の記録媒体又はRAM103などの情報記憶手段に記憶する。ここで制御部101は、記録した連結画像を管理するための連結画像管理テーブルと、前述した操作パターン管理テーブルを更新する。
ステップS716からステップS717までの処理は、画像連結条件ごとに実行される。この説明では、操作パターンが4つあるので、ステップステップS715〜S717は、4回実行されることになる。ステップS715で、連結画像取得要求が単一の画像連結情報のみを含む場合には、ステップS715も4回繰り返されることになる。
4つの連結画像に対してステップS717で更新された連結画像管理テーブルの例を図12に、操作パターン管理テーブルの例を図10(b)に示す。
図12に示す連結画像管理テーブルは、連結画像ID及びサムネイル画像IDから構成される。連結画像IDは、連結画像を識別するためのIDであり、サムネイル画像IDは、連結画像に含まれるサムネイル画像のIDを示す。連結画像管理テーブルは、連結画像が記録部307に記録されるかまたは削除されるタイミングで更新される。図12(a)は、前述した4種類の操作パターンに対応する連結画像が記録された例を示す。連結画像ID=11は現在表示している画面に表示されるサムネイル画像を含む連結画像であり、連結画像ID=2〜5が、本ステップにおいて記録された連結画像である。
このステップS717で、操作パターン管理テーブルの連結画像IDの欄と、不足サムネイル画像IDの欄が、図10(b)に示すように、更新される。
ステップS718において、携帯端末100の制御部101は、操作部106を介して、ユーザからの操作を受け付ける。ここで受け付けるユーザの操作は、前述した4種類の操作パターンのいずれかとなる。
ステップS719において、携帯端末100の制御部101は、操作パターン管理テーブルを参照し、ステップS718で受け付けたユーザ操作パターンに対応する連結画像を読み出す。例えば、受け付けたユーザ操作が操作パターンID=1であれば、制御部101は、連結画像ID=1の連結画像と位置情報データを読み出す。
ステップS720において、携帯端末100の制御部101は、ステップS719で読み出した連結画像と位置情報データを用いて、サムネイル一覧画面を表示部105に表示する。本ステップでは、ステップS712と同様の技術が利用される。
ステップS720の後、携帯端末100の制御部101は、ステップS713に戻る。携帯端末100の制御部101は、サムネイル一覧表示の処理が停止されない限り、ステップS713からステップS720を繰り返す。
本実施例により、エイリアス画像を個別に転送するのではなく、複数のエイリアス画像を連結した連結画像としてHTTPプロトコルでカメラ300から携帯端末100に転送するので、HTTP処理の回数を最小限にできる。また、ユーザ操作により必要になるエイリアス画像数を考慮して連結画像を構成するエイリアス画像数を決定することで、一回のHTTP処理の転送データ量を最適化できる。
画像連結条件として、先頭画像のIDとこの画像に続く画像数を指定したが、必要な画像をそのIDにより個別に指定しても良い。
図7のステップS713の処理を変更した実施例を説明する。実施例1とは異なる動作部分を詳細に説明し、同じ動作部分については説明を省略する。
ステップS713では、上方向又は下方向へのスクロール操作に対して、上端までのサムネイル画像又は下端までのサムネイル画像を要求するので、連結画像が大きく成り過ぎる。図11Aに示す例では、操作パターンID=3(上方向へのスクロール)に対して伝送すべきサムネイル画像は、符号1104で示す8枚となる。1ページを構成するサムネイル画像の数が例えば100枚などと多い場合は、より多くのサムネイル画像からなる連結画像をカメラから携帯端末に伝送することになり、連結画像のデータサイズも大きくなる。これにより、HTTP処理における転送時間が長くなって性能に影響するとともに、ステップS717において記録媒体に記録するデータ量も増大し、容量を圧迫する。
これに対し、実施例2では、上方向又は下方向へのスクロール操作に対して、連結画像で一度に伝送するサムネイル画像数を所定数に限定するようにした。図13を参照して、その動作を説明する。
図13は、現在表示中の領域1301に対して、上側又は下側の8つのサムネイル画像を連結画像による伝送に設定する例を示す。この場合、操作パターンID=3に対応する画像連結条件は、「先頭画像ID:7、画像数:8」となり、該当するサムネイル画像IDは、7〜14となる。同様に、操作パターンID=4に対応する画像連結条件は、「先頭画像ID:21、画像数:8」となり、該当するサムネイル画像IDは、22〜28となる。このように、上下スクロール操作の場合に連結画像で取得する画像数を制限することで、連結画像のサイズが大きくなり過ぎることを防止できる。
図13に示す例では、連結画像のサイズをサムネイル画像の8つ分で固定としたが、ユーザのスクロール操作速度が速い場合、ステップS715〜S717における連結画像取得処理がユーザ操作速度に追いつかなくなる可能性がある。この対策として、連結画像により取得するサムネイル画像数を、ユーザの操作速度に応じて動的に設定してもよい。携帯端末100の操作部106がタッチパネルで構成され、ユーザ操作はフリック操作であることを想定した場合、ユーザのフリック操作の速度は、JavaScript技術の利用により算出可能である。具体的には、指がタッチパネルに接触したときと接触したまま動かしたときの、タイミング情報と座標情報を検出し、検出した座標の差分から求められる移動距離とタイミングの差分とによって、フリックの操作速度を算出できる。また、ステップS718におけるユーザ操作が発生する前後の時間間隔を計測することで、フリック操作の頻度を時間で計測できる。そして、フリック操作の速度が速いほど、あるいはフリック操作の時間間隔が短いほど、連結画像で取得するサムネイル画像数を多くする。
以上、1ページを構成するサムネイル画像の数が多い場合でも、画像連結条件における画像数を制限することで、一回のHTTP処理において転送されるデータ量を最適化できる。また、ユーザのスクロール操作速度に応じて連結する画像数を設定することで、ユーザの操作感を改善できる。
携帯端末100が、一度取得した連結画像を再利用し、不要になった連結画像を削除するように、携帯端末100の機能を変更してもよい。図14は、この動作を実現するための、図7に示すシーケンスの変更部分、具体的には、点A,B以降のステップS713〜S720に代替する部分の処理シーケンスを示す。ステップS714,S717をステップS1401〜S1405で代替する。
ステップS713に続くステップS1401で、携帯端末100の制御部101は連結画像管理テーブルを参照し、ステップS714で決定したサムネイル画像IDのなかから現在記憶している連結画像に含まれないサムネイル画像IDを特定する。そして、制御部101は、特定したサムネイル画像IDで操作パターン管理テーブルの連結画像ID欄および不足サムネイル画像ID欄を更新する。
図10(c)を参照して、ステップS1401の動作を説明する。図10(c)は、現在の表示画面が符号1102で示す範囲(図11A)になっている場合において、このステップS1401で更新される操作パターン管理テーブルを示す。なお、この状態における連結画像管理テーブルを図12(a)に示す。
図10(c)に示すように、操作パターンID=1に対応するサムネイル画像IDは、55〜60となる。ここで、制御部101は、連結画像管理テーブル(図12(a))を参照するが、これらのサムネイル画像(ID=55〜60)を含む連結画像が無い。従って、図10(c)において、連結画像ID欄は「なし」となり、不足サムネイル画像ID欄は55〜60となる。一方、操作パターンID=2に対応するサムネイル画像ID(=19〜24)は、連結画像ID4に含まれる。従って、図10(c)において、連結画像ID欄は4となり、不足サムネイル画像ID欄は「なし」となる。同様に、操作パターンID=3,4に対する連結画像ID欄と不足サムネイル画像ID欄が更新される。
ステップS1402において、携帯端末100の制御部101は、ステップS1401で更新された操作パターン管理テーブルの不足サムネイル画像ID欄を参照する。制御部101は、不足サムネイル画像IDがある場合、ステップS1403に進み、無い場合、ステップS1405に進む。図10(c)に示す操作パターン管理テーブルの場合、制御部101は、ステップS1403に進む。
ステップS1403において、携帯端末100の制御部101は、不足サムネイル画像IDに基づいて画像連結条件を決定する。図10(c)に示す操作パターン管理テーブルの場合、画像連結条件は、「先頭画像ID:55、画像数:6」か「先頭画像ID:43、画像数:12」の2種類となる。
ステップS1404において、携帯端末100の制御部101は、記録部107を制御して、ステップS716で受信した連結画像と位置情報データを、ユーザ操作パターンと関連付けて記録する。ここで、制御部101は、連結画像管理テーブルと操作パターン管理テーブルを更新する。図12(b)は更新後の連結画像管理テーブルを示し、図10(d)は更新後の操作パターン管理テーブルを示す。
ステップS1405において、携帯端末100の制御部101は、記録部107を制御して、不要な連結画像を削除し、連結画像管理テーブルを更新する。図10(d)に示す操作パターン管理テーブルの場合、図12(b)に示す連結画像管理テーブルにおいて連結画像ID=1,3,5は次の操作で表示される可能性のあるサムネイル画像を含まないので、不要と判断され、削除される。図12(c)は、この削除後の連結画像管理テーブルを示す。
図14を参照して説明した処理シーケンスを実施することにより、一度取得した連結画像を再利用でき、不要になった連結画像を効果的に削除できる。これにより、不要なHTTP処理を削減してサムネイル一覧ページの表示性能を向上させるとともに、記録部107における記録容量要件の削減が可能となる。ままた、得済みの画像の再伝送を抑制することで、画像表示を高速化できる。
本実施例は、Webサーバ機能付きカメラと、当該カメラのWebサーバを介してカメラの記録画像のサムネイル画像を閲覧する閲覧装置サムネイル画像閲覧システムである。図15は閲覧装置としての携帯端末の概略構成ブロック図を示し、図16はWebサーバ機能付きカメラの概略構成ブロック図を示す。
図15に示す携帯端末1500の構成と基本動作を説明する。携帯端末1500の液晶パネル1501は、画像や各種情報を表示する表示部である。液晶ドライバ1502は、SDRAM1503に格納されている画像表示用データを液晶表示信号に変換して液晶パネル1501に供給する。SDRAM1503は、カメラ1600から受信した画像データを展開するための作業メモリ空間として、また、液晶パネル1501のためのビデオメモリとして機能する。
1504は、液晶パネル1501と一体に実装されるタッチパネルである。タッチパネル1504は、液晶パネル1501に表示されるソフトウエアスイッチの位置でのユーザのタッチ操作を検知し、ユーザの各種操作を受け付けるスイッチ手段として機能する。
記録媒体1506は、カメラ1600等から受信した画像データ(実際には、JPEG静止画データ及びMPEG動画データ等)を保存用に記録する媒体である。
無線LAN送受信部1508は、アンテナ1507を通じてWebサーバ機能付きカメラ1600と通信し、画像データ及び各種制御信号などを送受信する。
操作キー1510は、ユーザからの操作を受け付ける操作手段であり、電源ボタン及びホームボタンなどのいわゆるハードウェアスイッチからなる。
ROM1511は、電気的に消去・記録可能な不揮発性メモリ、例えばEEPROM等からなり、CPU1509のOS及び制御プログラム等を記憶する。ここでいう、プログラムは、後述する各種シーケンスを実行するためにCPU1509により実行されるコンピュータプログラムであり、後述する各処理又は機能を実現する。CPU1509は、液晶ドライバ1502等を制御することにより液晶パネル1501のメニュー表示等を制御する。
データバス1512は、液晶ドライバ1502、無線LAN送受信部1508、CPU1509及びSDRAM1503間でデータ及び制御信号を伝送するのに使用される。
図16に示すカメラ1600の構成と基本動作を説明する。Webサーバ機能付きカメラ1600の撮影レンズ1601は、被写体の光学像を絞り1602を介して撮像素子1603の撮像面上に入射する。絞り1602は、撮像素子1603に入射する光量を制限する。撮像素子1603は入射した光学像を電気画像信号に変換する。A/D変換器1604は撮像素子1603から出力されるアナログ画像信号をデジタル信号に変換する。画像処理部1605は、A/D変換器1604からの画像データにガンマ補正、ホワイトバランス補正及びノイズリダクション処理等を施し、非圧縮画像データのままデータバス1607に出力する。
JPEGコーデック1608は、非圧縮画像データを静止画として圧縮符号化し、JPEG静止画データを生成する。MPEGコーデック1609は、非圧縮画像データを動画として圧縮符号化し、MPEG動画データを生成する。
液晶パネル1611は、画像や各種情報を表示する表示部である。液晶ドライバ1612は、SDRAM1613に格納されている画像表示用データを表示信号に変換して液晶パネル1611を駆動する。こうして、SDRAM1613に書き込まれた表示用の画像データが液晶ドライバ1612を介して液晶パネル1611に供給され、液晶パネル1611の画面に画像として表示される。
液晶パネル1611はまた、電子ビューファインダとしても使用されうる。即ち、液晶ドライバ1612は、A/D変換器1604から出力されSDRAM1613に書き込まれた画像データの解像度を液晶パネル1611のドット数に削減した後に表示信号に変換し、当該表示信号で液晶パネル1611を逐次駆動する。これにより、液晶パネル1611は、電子ビューファインダとして機能し、いわゆるスルー画像を表示する。
SDRAM1613は、JPEGコーデック1608で生成されるJPEG静止画データ及びMPEGコーデック1609で生成されるMPEG動画データを、記録媒体1614に書き込むためのバッファメモリ空間を提供する。SDRAM1613はまた、撮影画像から再生時のインデックス表示で使用するサムネイル画像を生成する画素数変換部1610の作業メモリ空間を提供し、液晶パネル1611のビデオメモリとしての空間も提供する。
記録媒体1614は、カメラ1600の本体に着脱可能な、例えばNAND型フラッシュメモリ等で構成されているメモリカードである。記録媒体1614には、JPEG静止画データおよびMPEG動画データが、パーソナルコンピュータ(PC)と互換性を持つファイルシステムの下で記録される。
無線LAN送受信部1616は、アンテナ1615を通じて、Web閲覧端末としての携帯端末1500と通信し、画像データ及び制御信号などを送受信する。
操作キー1618は、ユーザからの各種操作を受け付ける各種スイッチであり、静止画の撮影操作を行うシャッターボタン及びカメラ撮影モードと再生モードを切り替えるモードスイッチを含む。
ROM1619は、電気的に消去・記録可能なEEPROMを含む不揮発性メモリからなる。ROM1619には、CPU1617の動作用の定数及びプログラム等が格納される。ここでいうプログラムは、後述する各種シーケンスを実行するためのプログラムであり、後述する各処理を実現する。また、CPU1617は、液晶ドライバ1612等を制御することにより表示制御も行う。
カメラ1600の記録媒体1614には、説明例として、図19A及び図19Bに示すような画像がメタ情報と共に記録されているものとする。携帯端末1500は、閲覧条件として「画像種別」と「画像の並び順」を設定可能であるとする。「画像種別」の選択肢として「すべて」、「動画」及び「静止画」があり、「画像の並び順」の選択肢として「撮影日時(昇順)」と「撮影日時(降順)」があるとする。
図17A及び図17Bは、本実施例の動作シーケンスを示す。S1700で、カメラ1600と携帯端末1500の間で通信が確立すると、S1701で、携帯端末1500はカメラ1600にサムネイル一覧取得要求を画像閲覧条件付きで送信する。ここでは例えば、画像種別として「すべて」、画像の並び順として「撮影日時(昇順)」がユーザによって指定されているとする。例えば、携帯端末1500はカメラ1600に、“http://camera/api/getthumblist?type=all&order=ascending”というURLを送信する。
ステップS1702にて、カメラ1600は、携帯端末1500からのサムネイル一覧取得要求(S1701)に対し、画像閲覧条件に合致する複数のサムネイル画像からなる連結画像を作成する。
図18は、連結画像作成要否判定/連結画像作成処理(ステップS1702,S1713,S1724)の詳細なフローチャートを示す。図18を参照して、ステップS1702の処理の詳細を説明例に即して説明する。
ステップS1801で、カメラ1600のCPU1517は、カメラ1600と携帯端末1500の通信が確立されてから最初の処理であるかどうかを判定する。この段階では、ステップS1702は、通信確立から最初の処理であるので、ステップS1801での判定は真となり、ステップS1803〜S1806からなる連結画像作成工程S1807に移行する。
S1803で、カメラ1600のCPU1517は、携帯端末1500から受信した画像閲覧条件(ここで、「画像種別」)に合致する画像ファイルを抽出する。説明例では「すべて」が指定されているので、図19A及び図19Bに示す10個の画像ファイルのうち、IMG_0001.JPG乃至IMG_0010.JPGの全てが、連結画像作成の対象となる。
S1804で、カメラ1600のCPU1517は、ステップS1803で抽出した画像ファイルを記録媒体1614から読み出し、非圧縮画像データにデコードする。
S1805で、カメラ1600のCPU1517は、デコードで得られた非圧縮画像データのサイズを縮小(又は間引き)して、サムネイル画像データを生成し、SDRAM1613の画像メモリ空間に書き込む。サムネイル画像のサイズは、例えば、横160×縦120ピクセルである。
S1806で、カメラ1600のCPU1517は、SDRAM1613に書き込まれた1以上のサムネイル画像データを1枚の画像としてJPEGコーデック1608にJPEG符号化させる。図20(a)は、このように作成された、10枚のサムネイル画像からなる連結画像の例を示す。JPEGコーデック1608は、図20(a)に示すような連結画像を1枚の静止画としてJPEG符号化したJPEGデータを出力する。
ステップS1804,S1805で、携帯端末1500からの画像取得要求を受信したときに、その画像取得要求に負荷された画像閲覧条件で指定される画像のサムネイル画像を生成するとしている。しかし、撮影画像(JPEGデータ又はMPEGデータ)を記録媒体に記録する際に、そのサムネイル画像を記録媒体に記録しておいても良い。この場合、画像閲覧条件で指定される画像のサムネイル画像を読み出してSDRAM1613の画像メモリ空間の所定位置に並置し、1枚の画像として圧縮符号化することで、連結画像を生成できる。
S1703で、カメラ1600のCPU1517は、連結画像を構成する各サムネイル画像の、連結画像上での位置情報を作成する。図20(b)は、図20(a)に示す連結画像に対する位置情報の例を示す。図20(b)において、サムネイル番号は、連結画像を構成するサムネイル画像を管理する番号である。ファイルは、サムネイル画像と関連付けられる原画像が格納されているファイルの名称である、種別は、原画像が動画か静止画かを示す情報である。Xオフセットは、連結画像ファイル内での該当サムネイル画像の左上のピクセル位置のX座標を示す数値である。Yオフセットは、連結画像ファイル内での該当サムネイル画像の左上のピクセル位置のY座標を示す数値である。Xサイズはサムネイル画像の横方向のピクセル数である。Yサイズはサムネイル画像の縦方向のピクセル数である。撮影日時は、該当する原画像が撮影された日時である。以上の情報が画像ファイルごとに作成される。
S1704で、カメラ1600のCPU1517は、携帯端末1500で表示するためのHTML(Hyper Text Markup Language)で記述されるページ情報を作成する。図21は、図20(a)に示す連結画像及び図20(b)に示す位置情報に対して作成されるページレイアウトのイメージを示す。ページ情報は、ユーザが閲覧条件を設定するUI、各サムネイル画像を表示するためのレイアウト情報、及び、連結画像から目的のサムネイル画像を切り出す位置を指定する記述を含む。切出し位置の記述は、CSS(Cascading Style Sheets)スプライトのbackground−imageプロパティにより表現される。例えば、図20(b)に示すサムネイル画像IMG−1が図21に示すレイアウト内のIMG−1で示す枠内に表示されるようにする内容が、CSSで記述されている。
S1705で、カメラ1600は、図21に示すレイアウトに対応するページ情報(HTMLファイル)を携帯端末1500に送信する。
S1706で、携帯端末1500はカメラ1600に連結画像の取得要求を送信する。S1707で、カメラ1600は、携帯端末1500からの要求に応じて、図20(a)に示す連結画像のJPEGデータを端末1500に送信する。さらに、S1708で、携帯端末1500はカメラ1600に位置情報の取得要求を送信する。S1709で、カメラ1600は、携帯端末1500からの要求に応じて、図20(b)に示す内容の位置情報を端末1500に送信する。
S1710で、携帯端末1500は、カメラ1600からのページ情報(S1705)、連結画像(S1707)及び位置情報(S1709)に従い、液晶パネル1501の表示を更新する。具体的には、携帯端末1500は、CSSスプライトのXオフセット、Yオフセット、Xサイズ及びYサイズの値を用いて連結画像からサムネイル画像を切り出し、HTMLファイルに記述されるレイアウト情報に従った表示に更新する。
先の説明例では、サムネイル画像IMG−1のパラメータは、Xオフセット=0、Yオフセット=0、Xサイズ=160、Yサイズ=120となっている。そこで、図20(a)に示す連結画像からX=0、Y=0の座標を左上の頂点とするX=160、Y=120の範囲を切り出し、図21に示すIMG−1の位置に配置する。他のサムネイル画像も同様に切り出し、レイアウト上の指定位置に配置する。これにより、図22に示すような画面が、液晶パネル1501に表示される。
ステップS1711で、携帯端末1500のユーザは、図22に示す画面上で閲覧条件を変更できる。例えば、ユーザは、画像種別として「静止画」を選択したとする。
S1712で、携帯端末1500はカメラ1600にサムネイル一覧取得要求を画像閲覧条件付きで送信する。送信されるURLは、例えば“http://camera/api/getthumblist?type=still&order=ascending”となる。
ステップS1713で、カメラ1600は、携帯端末1500からのサムネイル一覧取得要求(S1712)に対し、図18に示すフローで画像閲覧条件に合致する複数のサムネイル画像からなる連結画像を作成する。
ステップS1801で、カメラ1600のCPU1517は、カメラ1600と携帯端末1500の通信が確立されてから最初の処理であるかどうかを判定する。ここでは、ステップS1702は通信確立から2回目の処理であるので、ステップS1801での判定は偽となり、CPU1517は、ステップS1802に移行する。
ステップS1802で、カメラ1600のCPU1517は、画像閲覧条件の「画像種別」が前回から変更されたか否かを判定する。この説明例では、「画像種別」が変更されているので、判定結果は真となり、CPU1517は、ステップS1803〜S1806からなる連結画像作成工程S1807に移行する。
S1803で、カメラ1600のCPU1517は、携帯端末1500から受信した画像閲覧条件(ここでは「画像種別」)に合致する画像ファイルを抽出する。説明例では「静止画」が指定されているので、図19A及び図19Bに示す10個の画像ファイルのうち、IMG_0001.JPG乃至IMG_0004.JPGおよびIMG_0006.JPGが連結画像作成の対象となる。
S1804で、カメラ1600のCPU1617は、ステップS1803で抽出した画像ファイルを記録媒体1614から読み出し、JPEGコーデック1608を使って非圧縮画像データに復号化する。
S1805で、カメラ1600のCPU1617はサムネイル生成手段として、得られた非圧縮画像データのサイズを縮小(又は間引き)し、サムネイル画像データを生成する。CPU1617は、生成した差旨いる画像データをSDRAM1613の画像メモリ空間に書き込む。サムネイル画像のサイズは、例えば、横160×縦120ピクセルである。
S1806で、カメラ1600のCPU1517は、SDRAM1613に書き込まれた1以上のサムネイル画像データを1枚の画像としてJPEGコーデック1608にJPEG符号化させる。図23(a)は、このように作成された5枚のサムネイル画像からなる連結画像の例を示す。JPEGコーデック1608は、図23(a)に示すような連結画像を1枚の静止画としてJPEG符号化したJPEGデータ(圧縮画像データ)を出力する。SDRAM1613の連結画像の圧縮に利用可能な空きメモリ空間が小さい場合、CPU1517は、より高い圧縮率で連結画像を圧縮符号化してもよい。すなわち、利用可能な空きメモリ空間が狭いほど、より高い圧縮率を適用する。
S1714で、カメラ1600のCPU1517は、連結画像を構成する各サムネイル画像の、連結画像上での位置情報を作成する。図23(b)は、図23(a)に示す連結画像に対する位置情報の例を示す。図23(b)に示す位置情報の構成は、図20(b)のそれと同じであるので、詳細な説明を省略する。
S1715で、カメラ1600のCPU1517は、携帯端末1500で表示するためのHTML(Hyper Text Markup Language)で記述されるページ情報を作成する。図24は、図23(a)に示す連結画像及び図23(b)に示す位置情報に対して作成されるページレイアウトのイメージを示す。
S1716で、カメラ1600は、図24に示すレイアウトに対応するページ情報(HTMLファイル)を携帯端末1500に送信する。
S1717で、携帯端末1500はカメラ1600に連結画像の取得要求を送信する。S1718で、カメラ1600は、携帯端末1500からの要求に応じて、図23(a)に示す連結画像のJPEGデータを端末1500に送信する。さらに、S1719で、携帯端末1500はカメラ1600に位置情報の取得要求を送信する。S1720で、カメラ1600は、携帯端末1500からの要求に応じて、図23(b)に示す内容の位置情報を端末1500に送信する。
S1721で、携帯端末1500は、カメラ1600からのページ情報(S1716)、連結画像(S1718)及び位置情報(S1720)に従い、ステップS1710と同様に、液晶パネル1501の表示を更新する。これにより、図25に示すような画面が、液晶パネル1501に表示される。
ステップS1722で、携帯端末1500のユーザは、図25に示す画面上で閲覧条件を変更できる。例えば、ユーザは、画像の並び順として「撮影日時(降順)」を選択したとする。
S1723で、携帯端末1500は、カメラ1600にサムネイル一覧取得要求を画像閲覧条件付きで送信する。送信されるURLは、例えば“http://camera/api/getthumblist?type=still&order=descending”となる。
ステップS1724で、カメラ1600は、携帯端末1500からのサムネイル一覧取得要求(S1723)に対し、図18に示すフローで画像閲覧条件に合致する複数のサムネイル画像からなる連結画像を作成する。
ステップS1801で、カメラ1600のCPU1517は、カメラ1600と携帯端末1500の通信が確立されてから最初の処理であるかどうかを判定する。ここでは、ステップS1702は通信確立から3回目の処理であるので、ステップS1801での判定は偽となり、CPU1517は、ステップS1802に移行する。
ステップS1802で、カメラ1600のCPU1517は、画像閲覧条件の「画像種別」が前回から変更されたか否かを判定する。この説明例では、「画像種別」が変更されていないので、判定結果は偽となり、CPU1517は、連結画像を再作成せずに戻る。換言すると、必要なサムネイル画像が全て送信済みの場合には、連結画像を作成しない。
S1725で、カメラ1600のCPU1517は、連結画像を構成する各サムネイル画像の、連結画像上での位置情報を作成する。図26は、ここで作成される位置情報の例を示す。位置情報を構成するサムネイル画像は図23(b)のそれと同じである。但し、閲覧条件として、画像の並び順が変更されているので、変更後の画像の並び順に従った順番で各サムネイル画像が配列される。
S1726で、カメラ1600のCPU1517は、携帯端末1500で表示するためのHTML(Hyper Text Markup Language)で記述されるページ情報を作成する。図27は、図26に示す位置情報に対して作成されるページレイアウトのイメージを示す。
S1727で、カメラ1600は、図27に示すレイアウトに対応するページ情報(HTMLファイル)を携帯端末1500に送信する。
S1728で、携帯端末1500はカメラ1600に連結画像の取得要求を送信する。S1729で、カメラ1600は、携帯端末1500からの要求に応じて、新たな連結画像を送信しない旨を示す情報(未更新情報)を端末1500に送信する。さらに、S1730で、携帯端末1500はカメラ1600に位置情報の取得要求を送信する。S1731で、カメラ1600は、携帯端末1500からの要求に応じて、図26に示す内容の位置情報を端末1500に送信する。
S1732で、携帯端末1500は、ページ情報(S1727)、非更新情報(S1329)及び位置情報(S1720)に従い、直前の連結画像(S1718)を使って液晶パネル1501の表示を更新する。これにより、図28に示すような画面が、液晶パネル1501に表示される。
本実施例では、連結画像に付随して、当該連結画像を構成するサムネイル画像のファイル名、動画/静止画、アスペクト比及び撮影日時等の属性情報を、連結画像からの切出し位置を示す位置情報に含めて伝送している。これにより、携帯端末側で表示順序のみを変更する場合のように、必要なサムネイル画像を取得できている場合には、連結画像の再作成と伝送を省略でき、携帯端末は、ユーザ指定の並びで迅速にサムネイル画像を表示できる。
閲覧条件の変更(S1722)であっても、変更後の一覧表示に必要なサムネイル画像に変更が無く、且つ、必要なサムネイル画像を既に携帯端末1500が取得している場合、ステップS1723〜S1731を省略できる。すなわち、単に、携帯端末1500は、変更後の一覧表示に必要なサムネイル画像を、変更後の一覧表示条件で表示し直せば良い。
図17A及び図17Bに示すシーケンスでは、カメラ1600は、携帯端末1500との間の通信を確立し、携帯端末1500から閲覧条件を受信してから連結画像を作成する。これに対し、通信が確立した直後に、記録媒体1614に記録されている全画像による連結画像の作成を開始してもよい。この構成では、閲覧条件の受信から連結サムネイルの作成終了に要する時間を短くすることが出来るので、通信確立後に携帯端末のユーザが最初のサムネイル画像の閲覧を開始できるまでの時間を短縮出来る。
図18に示すフローでは、2回目以降の連結画像取得要求で要求するサムネイル画像が、直前に送信した連結画像に含まれるサムネイル画像と全て一致する場合に、連結画像の作成を省略している。これに対して、直前に送付済みか、通信開始後に送付済みのサムネイル画像については、連結画像に含めないようにしてよい。例えば、ステップS1803で抽出する画像ファイルから除外すればよい。この場合、携帯端末1500は、直前に受信し又は通信開始後に受信したサムネイル画像の内の該当するものを読み出し、カメラ1600から今回受信した連結画像に含まれるサムネイル画像と組み合わせて表示する。
このように変更すると、同じサムネイル画像を複数回送信する必要が無くなるので、携帯端末1500でのサムネイル画像の表示とその更新を迅速化でき、操作性が改善する。
カメラ1600が連結画像を作成する際に利用できるSDRAM1613の容量には制限がある。従って、携帯端末1500からその制限を超えるサムネイル画像数の連結画像を要求された場合、そのままでは、カメラ1600は、要求された連結画像を携帯端末1500に送信できない。
図29A及び図29Bは、そのような制限の下で、複数のサムネイル画像からなる連結画像を効率的にカメラ1600から携帯端末1500に転送する動作シーケンスを示す。ここでは、SDRAM1613は、連結画像作成のために3枚までのサムネイル画像データを記憶できるとする。
S2900で、カメラ1600と携帯端末1500の間で通信が確立すると、S2901で、携帯端末1500はカメラ1600にサムネイル一覧取得要求を画像閲覧条件付きで送信する。ここでは例えば、画像種別として「すべて」、画像の並び順として「撮影日時(昇順)」がユーザによって指定されているとする。例えば、携帯端末1500はカメラ1600に、“http://camera/api/getthumblist?type=all&order=ascending”というURLを送信する。
ステップS2902で、カメラ1600のCPU1517は、携帯端末1500からのサムネイル一覧取得要求(S2901)に対し、画像閲覧条件に合致する画像ファイルを抽出する。説明例では「画像種別」=「すべて」が指定されているので、図19A及び図19Bに示す10個の画像ファイルのうち、IMG_0001.JPG乃至IMG_0010.JPGの全てが、連結画像作成の対象となる。対象画像数は10となる。
S2903で、カメラ1600のCPU1517は、携帯端末1500で表示するための、HTMLで記述されるページ情報を作成する。ここで作成されるページ情報によるページレイアウトイメージを図30に示す。ページ情報は、ユーザが閲覧条件を設定するUI、各サムネイル画像を表示するためのレイアウト情報、及び、連結画像から目的のサムネイル画像を切り出す位置を指定する記述を含む。切出し位置の記述は、CSS(Cascading Style Sheets)スプライトのbackground−imageプロパティにより表現される。例えば、図32(b)に示すサムネイルIMG−1が図30に示すレイアウト内のIMG−1で示す枠内に表示されるようにする内容が、CSSで記述されている。
S2904で、カメラ1600のCPU1517は、作成されたページ情報を携帯端末1500に送信する。携帯端末1500は、ここでカメラ1600から送信されたページ情報を、ページ情報が更新されるまでは、以後に受信する連結画像から切り出した個々のサムネイル画像を表示画面に配置するのに適用する。
S2905で、携帯端末1500はカメラ1600に連結画像取得要求を送信する。
S2906で、カメラ1600のCPU1517は、携帯端末1500からの連結画像取得要求(S2905)に対し、連結画像作成の要否を判定する。カメラ1600のCPU1517は、必要な場合に、画像閲覧条件に合致する複数のサムネイル画像からなる連結画像を作成する。
図31は、連結画像作成要否判定/連結画像作成処理(ステップS2906,S2919)の詳細なフローチャートを示す。図31を参照して、ステップS2906の処理の詳細を説明例に即して説明する。
ステップS3101で、カメラ1600のCPU1517は、カメラ1600と携帯端末1500の通信が確立されてから最初の処理であるかどうかを判定する。この段階では、ステップS3101は通信確立から最初の処理であるので、ステップS3101での判定は真となり、ステップS3103〜S3109からなる連結画像作成工程S3114に移行する。
ステップS3103で、カメラ1600のCPU1517は、ステップS2902で取得した対象画像数を取得し、変数Nにセットする。CPU1517はまた、処理済みの画像数を示すカウンタ変数Cに0をセットする。
ステップS3104で、カメラ1600のCPU1517は、対象画像のうち1つをデコードする。ここでは、指定されている画像の並び順に従って、このステップS3105を通過するごとに1枚ずつ撮影日時順に対象画像の画像ファイルを記録媒体1614から読み出し、非圧縮画像データにデコードする。
ステップS3105で、カメラ1600のCPU1517は、デコードした画像データを縮小してサムネイル画像を作成し、SDRAM1613の画像メモリ空間に格納する。なお、サムネイル画像のサイズは、横160×縦120ピクセルであるとする。
ステップS3106で、カメラ1600のCPU1517は、カウンタ変数Cをインクリメントする。ステップS3107で、カメラ1600のCPU1517は、変数Cが対象画像数Nと一致するかどうかを調べる。ここでは、カウンタC=1なので、CはNと一致しない。
ステップS3107でC=Nでないので、ステップS3108で、カメラ1600のCPU1517は、SDRAM1613が提供する画像メモリ空間に空きがあるかどうかを判定する。カメラ1600のCPU1517は、空きがある場合、ステップS3104に戻り、空きが無い場合、ステップS3109に進む。説明上、SDRAM1613の画像メモリ空間には、サムネイル画像を3枚分、格納可能であるとしており、連結画像は3枚までのサムネイル画像から作成可能である。
ステップS3104〜S3106を3回繰り返すと、3枚分のサムネイル画像がSDRAM1613の画像メモリ空間に格納される。すると、ステップS3108で、カメラ1600のCPU1517は、SDRAM1613に空き空間がないと判定し、ステップS3109に進む。
S3109で、カメラ1600のCPU1517は、SDRAM1613の画像メモリ空間に並べられたサムネイル画像を1枚の画像にまとめて圧縮符号化し、図31に示す処理を終了する。図32(a)は、このようにして作成された連結画像のイメージを示す。
ステップS2907に戻り、カメラ1600のCPU1517は、連結画像を構成する各サムネイル画像の、連結画像上での位置情報を作成する。図32(b)は、図32(a)に示す連結画像に対する位置情報の例を示す。図32(b)において、サムネイル番号は、連結画像を構成するサムネイル画像を管理する番号である。ファイルは、サムネイル画像と関連付けられる原画像が格納されているファイルの名称である。種別は、原画像が動画か静止画かを示す情報である。Xオフセットは、連結画像ファイル内での該当サムネイル画像の左上のピクセル位置のX座標を示す数値である。Yオフセットは、連結画像ファイル内での該当サムネイル画像の左上のピクセル位置のY座標を示す数値である。Xサイズはサムネイル画像の横方向のピクセル数である。Yサイズはサムネイル画像の縦方向のピクセル数である。撮影日時は、該当する原画像が撮影された日時である。以上の情報が画像ファイルごとに作成される。
ステップS2908で、カメラ1600は、図32(a)に示す連結画像を携帯端末1500に送信する。後述するが、カメラ1600は、この段階で携帯端末1500に送信する連結画像にサムネイル終了フラグを付加していない。
ステップS2909で、携帯端末1500のCPU1509は、カメラ1600に位置情報取得要求を送信する。ステップS2910で、カメラ1600は、図32(b)に示す位置情報を携帯端末1500に送信する。
S2911で、携帯端末1500のCPU1509は、カメラ1600からの連結画像にサムネイル終了フラグが付加されているか否かを調べる。サムネイル終了フラグが付加されている場合(S2911)、携帯端末1500のCPU1509は、ステップS2912に進む。サムネイル終了フラグが付加されていない場合、携帯端末1500のCPU1509は、ステップ2905を再度、実行する。ここでは、サムネイル終了フラグが付加されていないので、ステップS2905で、携帯端末1500のCPU1509は、再度、連結画像取得要求をカメラ1600に送信する。
このようにして、カメラ1600は、それぞれ3枚のサムネイル画像を収容する連結画像を3回送信し、それぞれの連結画像に対応する位置情報も3回送信する。図32(a)は1枚目の連結画像を示し、図32(b)はその位置情報を示す。図33(a)は2枚目の連結画像を示し、図33(b)はその位置情報を示す。図34(a)は3枚目の連結画像を示し、図34(b)はその位置情報を示す。
4回目の連結画像作成の際に、ステップS3106でカウンタC=10となり、ステップS3107で、C=N=10となる。カメラ1600のCPU1517は、ステップS3110でカウンタCをクリアし、ステップS3111で、SDRAM1613の画像メモリ空間に並べられたサムネイル画像を1枚の画像にまとめて圧縮符号化する。ステップS3112で、カメラ1600のCPU1517は、連結画像(JPEGデータ)にサムネイル終了フラグを付加して、図29A及び図29Bに示すシーケンスに戻る。
ステップS2907で、カメラ1600のCPU1517は、図31で作成した連結画像(図35(a))に対応する位置情報(図35(b))を作成する。
ステップS2908で、カメラ1600は、図35(a)に示す連結画像を、サムネイル終了フラグ付きで携帯端末1500に送信する。ステップS2909で、携帯端末1500のCPU1509は、カメラ1600に位置情報取得要求を送信する。ステップS2910で、カメラ1600は、図35(b)に示す位置情報を携帯端末1500に送信する。
カメラ1600から携帯端末1500に伝送される4つ目の連結画像(図35(a))にはサムネイル終了フラグが付加されている。従って、ステップS2911で、携帯端末1500のCPU1509は、サムネイル終了フラグを検出し、S2912に移行する。サムネイル終了フラグにより、携帯端末1500は、画像閲覧条件(S2901)で指定した全サムネイル画像を取得したことを知る。
ステップS2912で、携帯端末1500のCPU1509は、受信した10枚のサムネイル画像の一覧を図22に示すように液晶パネル1501に表示する。
ステップS2913で、携帯端末1500のユーザは、図22に示す画面上で閲覧条件を変更できる。例えば、ユーザは、画像種別として「静止画」を選択したとする。例えば、ユーザは、画像種別として「静止画」を選択したとする。
ステップS2914で、携帯端末1500はカメラ1600にサムネイル一覧取得要求を画像閲覧条件付きで送信する。送信されるURLは、例えば“http://camera/api/getthumblist?type=still&order=ascending”となる。
ステップS2915で、カメラ1600のCPU1517は、携帯端末1500からのサムネイル一覧取得要求(S2914)に対し、画像閲覧条件に合致する画像ファイルを抽出する。説明例では「画像種別」=「静止画」が指定されているので、図19A及び図19Bに示す10個の画像ファイルのうち、IMG_0001.JPG乃至IMG_0004.JPGおよびIMG_0006.JPGがサムネイル画像作成の対象となる。対象画像数は5となる。
S2916で、カメラ1600のCPU1517は、携帯端末1500で表示するための、HTMLで記述されるページ情報を作成する。ここで作成されるページ情報によるページレイアウトイメージを図36に示す。
S2917で、カメラ1600のCPU1517は、作成されたページ情報を携帯端末1500に送信する。携帯端末1500は、ここでカメラ1600から送信されたページ情報を、ページ情報が更新されるまでは、以後に受信する連結画像から切り出した個々のサムネイル画像を表示画面に配置するのに適用する。
S2918で、携帯端末1500はカメラ1600に連結画像取得要求を送信する。
S2919で、ステップS2906と同様に、カメラ1600のCPU1517は、連結画像取得要求(S2918)に対し連結画像作成の要否判定と、必要な連結画像の作成を実行する。ここでも、図31を参照して、ステップS2919の処理の詳細を説明例に即して説明する。
ステップS3101で、カメラ1600のCPU1517は、カメラ1600と携帯端末1500の通信が確立されてから最初の処理であるかどうかを判定する。この段階では、ステップS3101は通信確立から最初の処理ではないので、ステップS3101での判定は偽となり、ステップS3102に移行する。
ステップS3102で、カメラ1600のCPU1517は、画像閲覧条件における「画像種別」の変更の有無を判定する。カメラ1600のCPU1517は、変更があった場合には、ステップS3103〜S3109からなる連結画像作成工程S3114に移行し、変更が無い場合にはステップS3112に移行する。
ステップS3103で、カメラ1600のCPU1517は、ステップS2902で取得した対象画像数を取得し、変数Nにセットする。CPU1517はまた、処理済みの画像数を示すカウンタ変数Cに0をセットする。
ステップS3104で、カメラ1600のCPU1517は、対象画像のうち1つをデコードする。ここでは、指定されている画像の並び順に従って、このステップS3105を通過するごとに1枚ずつ撮影日時順に対象画像の画像ファイルを記録媒体1614から読み出し、非圧縮画像データにデコードする。
ステップS3105で、カメラ1600のCPU1517は、デコードした画像データを縮小して横160×縦120ピクセルのサムネイル画像を作成し、SDRAM1613の画像メモリ空間に格納する。
ステップS3106で、カメラ1600のCPU1517は、カウンタ変数Cをインクリメントする。ステップS3107で、カメラ1600のCPU1517は、変数Cが対象画像数Nと一致するかどうかを調べる。ここでは、カウンタC=1なので、CはNと一致しない。
ステップS3107でC=Nでない場合、ステップS3108で、カメラ1600のCPU1517は、SDRAM1613が提供する画像メモリ空間に空きがあるかどうかを判定する。カメラ1600のCPU1517は、空きがある場合、ステップS3104に戻り、空きが無い場合、ステップS3109に進む。ここでは、SDRAM1613の画像メモリ空間に空きがあるので、CPU1517は、ステップS3104に戻る。
ステップS3104〜S3106を3回繰り返すと、3枚分のサムネイル画像がSDRAM1613の画像メモリ空間に格納される。すると、ステップS3108で、カメラ1600のCPU1517は、SDRAM1613に空き空間がないと判定し、ステップS3109に進む。
S3109で、カメラ1600のCPU1517は、SDRAM1613の画像メモリ空間に並べられたサムネイル画像を1枚の画像にまとめて圧縮符号化し、図31に示す処理を終了する。図37(a)は、このようにして出来上がった連結画像のイメージを示す。
ステップS2920に戻り、カメラ1600のCPU1517は、連結画像を構成する各サムネイル画像の、連結画像上での位置情報を作成する。図37(b)は、図37(a)に示す連結画像に対する位置情報の例を示す。
ステップS2921で、カメラ1600は、図37(a)に示す連結画像(JPEGデータ)を携帯端末1500に送信する。後述するが、カメラ1600は、この段階で携帯端末1500に送信する連結画像にサムネイル終了フラグを付加していない。
ステップS2922で、携帯端末1500のCPU1509は、カメラ1600に位置情報取得要求を送信する。ステップS2923で、カメラ1600は、図37(b)に示す位置情報を携帯端末1500に送信する。
S2924で、携帯端末1500のCPU1509は、カメラ1600からの連結画像にサムネイル終了フラグが付加されているか否かを調べる。サムネイル終了フラグが付加されている場合(S2924)、携帯端末1500のCPU1509は、ステップS2925に進む。サムネイル終了フラグが付加されていない場合(S2924)、携帯端末1500のCPU1509は、ステップ2418を再度、実行する。ここでは、サムネイル終了フラグが付加されていないので、ステップS2918で、携帯端末1500のCPU1509は、再度、連結画像取得要求をカメラ1600に送信する。
携帯端末1500からの2回目の連結画像取得要求に対し、ステップS2919で、カメラ1600は、2枚目の連結画像を作成する。サムネイル作成工程S3113で、SDRAM1613に2枚目のサムネイル画像を格納した段階でC=Nとなる。これにより、ステップS3111でカメラ1600のCPU1517は、図38(a)に示す連結画像を作成し、ステップS3112でサムネイル終了フラグを付加する。
ステップS2920で、カメラ1600のCPU1517は、図38(a)に示す連結画像に対応する、図38(b)に示す内容の位置情報を作成する。
ステップS2921でカメラ1600のCPU1517は、図38(a)に示す連結画像を携帯端末1500に送信する。この連結画像には、サムネイル終了フラグが付加される。ステップS2923で、図38(b)に示す位置情報を携帯端末1500に送信する。
S2924で、携帯端末1500のCPU1509は、カメラ1600からの連結画像にサムネイル終了フラグが付加されているか否かを調べる。ここでは、サムネイル終了フラグが付加されており、携帯端末1500のCPU1509は、ステップS2925に進む。
ステップS2925で、携帯端末1500のCPU1509は、受信したサムネイル画像を図25に示すように一覧表示する。以降、同様に動作する。
本実施例では、連結画像を作成するためのSDRAMのメモリ空間が小さい場合、連結サムネイルを複数回に分けて携帯端末1500に送信する。これにより、メモリ容量の少ないSDRAMを実装するローコストな機器であっても、複数のサムネイル画像をまとめて閲覧装置に伝送する利点を享受できる。
カメラ1600は、携帯端末1500との通信が確立すると直ぐに、各記録画像のサムネイル画像の生成、例えば携帯端末1500の表示能力等に応じた画質での生成を開始しても良い。サムネイル画像の生成は、カメラ撮影モードから他の動作モードへの変更に応じて開始しても良い。
携帯端末1500からの画像閲覧条件をカメラ1600が受信したときにカメラ1600が静止画を撮影中か、撮影した画像データを符号化中か、符号化した画像データを記録媒体に記録する最中である場合がある。このような状況にあるとき、カメラ1600は、撮影画像の記録媒体への記録を終了してから、必要なサムネイル画像の作成と連結を実行する。動画撮影中の場合には、記録中の動画の存在を無視して連結画像を作成してもよいし、撮影終了後にその動画のサムネイル画像を作成した上で連結画像を作成しても良い。
本発明の目的は、前述した実施例の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を装置に供給することによっても、達成される。このとき、供給された装置の制御部を含むコンピュータ(またはCPUやMPU)は、記憶媒体に格納されたプログラムコードを読み出し実行する。記憶媒体から読み出されたプログラムコード自体が、上述の実施例の機能を実現することになり、プログラムコード自体及びそのプログラムコードを記憶した記憶媒体は、本発明を構成することになる。
プログラムコードを供給するための記憶媒体としては、例えば、磁気ディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード又はROM等を用いることができる。
上述のプログラムコードの指示に基づき、装置上で稼動しているOS(基本システムやオペレーティングシステム)などが処理の一部又は全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれる。
さらに、記憶媒体から読み出されたプログラムコードが、装置に挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれ、前述した実施形態の機能が実現される場合も含まれる。このとき、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部又は全部を行う。
以上、本発明の好ましい実施例を説明したが、本発明は、これらの実施例に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。