JP2006087050A - 撮像装置及びその制御方法 - Google Patents

撮像装置及びその制御方法 Download PDF

Info

Publication number
JP2006087050A
JP2006087050A JP2004272525A JP2004272525A JP2006087050A JP 2006087050 A JP2006087050 A JP 2006087050A JP 2004272525 A JP2004272525 A JP 2004272525A JP 2004272525 A JP2004272525 A JP 2004272525A JP 2006087050 A JP2006087050 A JP 2006087050A
Authority
JP
Japan
Prior art keywords
information
image
object information
folder
treedatatable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2004272525A
Other languages
English (en)
Other versions
JP2006087050A5 (ja
Inventor
Takashi Mizuno
高志 水野
Takashi Aizawa
隆志 相沢
Kenichiro Hara
健一郎 原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2004272525A priority Critical patent/JP2006087050A/ja
Priority to CNA200580030996XA priority patent/CN101023413A/zh
Priority to EP05785824A priority patent/EP1784730A4/en
Priority to KR1020077008120A priority patent/KR100886692B1/ko
Priority to US11/572,395 priority patent/US8280975B2/en
Priority to PCT/JP2005/017427 priority patent/WO2006030962A1/en
Publication of JP2006087050A publication Critical patent/JP2006087050A/ja
Publication of JP2006087050A5 publication Critical patent/JP2006087050A5/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】 撮像装置内の記録媒体(内蔵メモリや着脱可能なメモリカードなど)に記録されたオブジェクトの操作(読み出し、削除、情報の取得など)に要する時間を短縮すること。
【解決手段】 記録媒体における論理フォルダ階層を構成する各オブジェクトについて、論理フォルダ階層における少なくとも親オブジェクトを特定する情報を含むオブジェクト情報を生成する。そして、外部機器から受信した、例えばPTPに準拠した撮影画像ファイルについてのコマンドを、予め生成したオブジェクト情報を用いて処理する。
【選択図】 図2

Description

本発明は、CCDなどの撮像素子を用いた撮像装置及びその制御方法に関し、特に撮影されたオブジェクトの階層構造の効率的な作成およびオブジェクトの効率的な検索を行うことの可能な撮像装置及びその制御方法に関する。
パーソナルコンピュータ等の情報端末と、撮像装置との通信規格としてUSB (Universal Serial Bus)が知られている。また、最近では、USBのスチルイメージクラスインターフェースに基づいて作成されたUSBの上位層の通信規格として、PTP(Picture Transfer Protocol)がPIMA(Photographic and Imaging Manufactures Association, INC.)によって提案されている。この規格は、デジタルカメラや、スキャナ等を対象としたデータ転送方式を定める。この規格により、ユーザは、画像ファイルがどのようなディレクトリ構造で格納されるかを意識せずに、簡単に撮像又はスキャンした画像のデータファイルをパーソナルコンピュータに取り込むことが可能となる。
また、PTPには例えば画像ファイルのサムネイル画像を表示する機能が用意されている。なお、PTPにはコマンドが用意されていて、そのコマンドには、標準のコマンドとベンダ拡張のコマンドがある。
また、撮像装置とプリンタとを直接接続し、相互に通信を行うことにより撮像装置内部に記録された画像データを直接プリンタから印刷する所謂ダイレクトプリント技術も知られている(例えば特許文献1参照)。
デジタルカメラで撮影した画像の管理方法を定めた規格としてDCF(Design rule for Camera File System)が社団法人日本電子工業振興協会によって策定された。DCFではフォルダ構成、フォルダ名、オブジェクトのファイル名、オブジェクトの構成方法が定められていて、オブジェクトは「DCIM」フォルダの下のあるフォルダに保存されることになっている。
オブジェクトを検索する際は、各オブジェクトとそのオブジェクトのフルパス(オブジェクトの存在位置を、ディレクトリ構造の最上位階層から全て記載したもの)とを1対1に対応付けたデータテーブルをデジタルカメラ内の一時記憶装置に作成し、そのデータテーブルを参照して先頭のエントリからデータテーブルのアドレス順に検索する方法がよく行われる。
特開2004−15234号公報
オブジェクトとそのフルパスとが1対1に対応したデータテーブルを利用し、先頭のエントリからデータテーブルのアドレス順(先頭から順番)にオブジェクトを検索することを考える。撮像装置に内蔵もしくは装着された記録媒体に多数の画像がある場合、データテーブルには多くのエントリが存在する。このようなデータテーブルを先頭のエントリから順に検索すると、最悪な場合にはデータテーブル内の全エントリを検索することになり、検索に時間がかかってしまう問題がある。
本発明はこのような従来技術の課題に鑑みてなされたものであり、撮像装置内の記録媒体(内蔵メモリや着脱可能なメモリカードなど)に記録されたオブジェクトの操作(読み出し、削除、情報の取得など)に要する時間を短縮することを目的とする。
上述の目的は、外部機器との通信手段を有し、着脱可能もしくは内蔵した記録媒体に、階層的な論理フォルダ構成に従って撮影画像ファイルを記録する撮像装置であって、記憶領域を提供する記憶手段と、記録媒体における論理フォルダ階層を構成する各オブジェクトについて、論理フォルダ階層における少なくとも親オブジェクトを特定する情報を含むオブジェクト情報を生成し、記憶手段に記憶するオブジェクト情報生成手段と、外部機器から受信した、撮影画像ファイルについてのコマンドを、記憶手段に記憶したオブジェクト情報を用いて処理する処理手段とを有することを特徴とする撮像装置によって達成される。
また、上述の目的は、記憶領域を提供する記憶手段と、外部機器との通信手段を有し、着脱可能もしくは内蔵した記録媒体に、階層的な論理フォルダ構成に従って撮影画像ファイルを記録する撮像装置の制御方法であって、記録媒体における論理フォルダ階層を構成する各オブジェクトについて、論理フォルダ階層における少なくとも親オブジェクトを特定する情報を含むオブジェクト情報を生成し、記憶手段に記憶するオブジェクト情報生成ステップと、外部機器から受信した、撮影画像ファイルについてのコマンドを、記憶手段に記憶したオブジェクト情報を用いて処理する処理ステップとを有することを特徴とする撮像装置の制御方法によっても達成される。
以上の構成により、本発明によれば、撮像装置内の記録媒体(内蔵メモリや着脱可能なメモリカードなど)に記録されたオブジェクトの操作(読み出し、削除、情報の取得など)に要する時間を短縮することができる。
以下、添付図面を参照して本発明をその好適な実施形態に基づいて詳細に説明する。
<第1の実施形態>
図1は、本実施形態に係る撮像装置としてのデジタルカメラ100の構成例を示すとともに、デジタルカメラ100と通信可能な外部情報端末(以下、単に「端末」と呼ぶことがある)としてのパーソナルコンピュータ(PC)101とデジタルカメラ(以下、単に「カメラ」と呼ぶ)100とを接続した状態を示している。
デジタルカメラ100は、端末101との通信を行うための通信制御装置102、デジタルカメラ100全体の動作制御を行う演算装置(CPU)103、撮影画像の圧縮符号化や輪郭強調、ノイズ除去等の処理を行う信号処理装置104、レンズやオートフォーカス、ズーム駆動用モータなどを含む光学ユニット105、CPU103の一時記憶領域などに用いられる一時記憶装置(DRAM)106、フラッシュメモリ(登録商標)などの不揮発性記憶装置である二次記憶装置107、カーソルキーや設定/実行ボタン、メニューキーなど、ユーザがデジタルカメラ100に各種指示を与えるための操作部108、LCDを代表とする表示部109、CPU103が実行する制御プログラムを記憶する読み出し専用メモリ(ROM)110、メモリカードを代表とする着脱可能な記録媒体111及びその読み書き装置(例えばカードリーダライタ、光学ドライブ等)112とを有している。
なお、本実施形態においては、デジタルカメラ100と端末101とはUSBインタフェースで接続され、PTPに準拠した通信、すなわちPTPに準拠したコマンドを用いた通信が行われるものとする。しかし、デジタルカメラ100と端末101とをUSB以外の接続方法で接続しても良い。具体的には、IEEE1394を代表とする有線接続や、Bluetooth、IEEE802.11xを代表とする無線接続を用いることができる。なお、上述のように、PTPに準拠したコマンドには、標準のコマンドおよびベンダ拡張のコマンドがある。
(TreeDataTableの説明)
図2は本実施形態におけるデジタルカメラ100がPC101との通信開始時に、一時記憶装置106に作成するTreeDataTableの構造を示す図である。
TreeDataTableはカメラ内に記録されているオブジェクト情報(ファイル情報、ディレクトリ情報)を記録するためのテーブルである。このテーブルのサイズは固定である。TreeDataTableはそれぞれが固定サイズを有し、1つのオブジェクトに対応するAssociation情報あるいは画像情報単位で記録される。従って、1つのテーブルに記憶できるオブジェクトの数は固定である。
上述のように、TreeDataTableは、フォルダなど画像以外のオブジェクトについての情報であるAssociation情報と、画像オブジェクトについての情報が記録される画像情報とによって構成される。図2においては、Association情報の例としてA1が、画像情報の例としてI1がそれぞれ例示されている。なお、TreeDataTableにおいて、Association情報と画像情報が格納される順序は任意である。
次に、Association情報の各フィールドについて説明する。フィールドUsedFlagはオブジェクト情報が有効かどうかを示すフラグである。UsedFlagは例えば初期状態(有効状態)で真値(TRUE)をとり、対応するオブジェクトが削除されると無効状態(FALSE)に書き換えられる。
フィールドFormatCodeにはオブジェクト情報の形式(Association情報か画像情報かを識別可能な情報で、例えば画像情報であればそのオブジェクトの種類(JPEG,GIF,bmp等)を示す値)が格納される。フィールドInitStateはオブジェクト情報の状態を示す。PC101との通信が開始され、TreeDataTableが作成された時点ではフォルダ構成状態になる。そして、PCからのPTPコマンドに応答してオブジェクト情報を初めて取得しようとするとInitStateはオブジェクト情報詳細記録状態になり、画像情報の一部フィールドがTreeDataTableに記録される。
後述するように、フォルダ構成状態とは、端末との通信開始時に親オブジェクト、先頭の子オブジェクトおよび1つの同階層のオブジェクトについての情報がTreeDataTableに記録される状態である。オブジェクト情報詳細記録状態とは、オブジェクトのヘッダを参照して更新日時、ファイルサイズ等そのオブジェクトについての情報がTreeDataTableに記録されている状態である。
フィールドDriveNoはボリュームの番号を示す。フィールドHandleはこのオブジェクトへのハンドル(オブジェクトハンドル)であり、後述するようにTreeDataTableのインデックス番号と等しい。
フィールドParentObjectHandleは親オブジェクトへのハンドル(親オブジェクトに対応するオブジェクトハンドルの値、すなわちインデックス番号)である。フィールドPreviousSiblingObjectHandleは同じ階層にある前のオブジェクトへのハンドルである。フィールドNextSiblingObjectHandleは同じ階層にある次のオブジェクトへのハンドルである。フィールドChildObjecthandleは先頭の子オブジェクトへのハンドルである。これら4つのフィールドにより、オブジェクトの階層構造の再現及び把握が可能である。
フィールドFileNameはオブジェクト名である。DCF規約に準じた文字列が入り、13文字以内とする。フィールドAttributeはファイルの属性(アクセス権など)を示す。フィールドFileStampはファイルの更新日時を示す。フィールドFileSizeはファイルのサイズであり、ヘッダを含むオブジェクト全体のサイズである。フィールドChildNumは子オブジェクトの数である。フィールドChildStateは子オブジェクトのオブジェクトハンドルが連番であるどうかを示す。フィールドReserveは予約領域である。
次に、TreeDataTableの画像情報の各フィールドについて説明する。フィールドUsedFlag,FomatCode,InitState,DriveNo,Handle,ParentObjectHandle,PreviousSiblingObjectHandle,nextSiblingObjectHandle,ChildObjectHandle,FileName,Attribute,FileStamp,FileSizeはそれぞれAssociation情報の同一名フィールドと同じ用途で使用される。
フィールドYear,Month,Day,Hour,Min,Secは撮影日時(年、月、日、時、分、秒)を示すために使用される。ThumbSizeはサムネイル画像のデータサイズである。PixWidthは本画像データ幅方向の画素数、PixHeightは高さ方向の画素数である。Offsetはサムネイル画像データと本画像データとを含む画像ファイルオブジェクトにおいて、本画像データが始まる位置を示す値(バイト数)である。Sizeは本画像のデータサイズである。Reserveは予約領域である。
なお、本実施形態においては、Association情報及び画像情報のフィールドHandle(オブジェクトハンドル)に格納される値が、TreeDataTableにおけるインデックス番号と等しくなるようにTreeDataTableを作成する。つまり、TreeDataTableを構成するAssociation情報及び画像情報のフィールドHandleは、そのオブジェクト情報がTreeDataTable中何番目に存在するかを表す値と等しい。
上述のように、Association情報及び画像情報とは等しい固定サイズ(例えばnバイトとする)を有するため、オブジェクトハンドル(インデックス番号)が1から始まる整数であるとした場合、TreeDataTable中、オブジェクトハンドル(インデックス番号)aのオブジェクト情報の開始位置は、(n×a+1)バイト目として直ちに求めることができる。
従って、オブジェクトハンドルを用いるPTPコマンドでの検索が要求された場合、直ちに検索対象のAssociation情報又は画像情報を読み出すことができ、検索の高速化を実現している。
(TreeDataTableの生成処理)
図4はデジタルカメラ100内の記憶媒体111又は二次記憶装置107に記録されているオブジェクトの論理的な階層構成の例を示したものである。なお、以下の説明において、画像オブジェクトは着脱可能な記憶媒体111に記録されるものとするが、着脱できない二次記憶装置107に記録されていても動作は同じである。
このような記録媒体111が装着された状態において、利用者が例えばUSBやIEEE1394などの有線インタフェースや、Bleutooth等の無線インタフェースを通じて図1のようにデジタルカメラ100とPC101とを接続する。それにより、デジタルカメラ100と端末101との通信が開始する。
通信の開始により、デジタルカメラ100のCPU103は、記録媒体111の内容を参照しながら一時記憶装置106の所定領域にTreeDataTableを生成する以下、TreeDataTableの生成、書き込み処理について図8のフローチャートを用いて説明する。
まず、CPU103は、インデックス番号iを1に初期化する(ステップST101)。そして、記録媒体111を参照し、ルートディレクトリD以下の階層から順に参照する。そして、まずフォルダ「DCIM」を参照し、このオブジェクトが画像オブジェクトかどうか判定する(ステップST105)。「DCIM」はフォルダであるため、ステップST107へ進み、フォルダ「DCIM」のオブジェクト情報(Association情報)を図2に示した各フィールドに記録する。なお、ステップST105での判別方法であるが、デジタルカメラ100の記録媒体111に生成されるフォルダ名や階層構造は規格により定められているため、CPU103は記録媒体111中の階層構造におけるフォルダと画像ファイルとを、例えばそのファイルがルートディレクトリDから何番目の階層に存在するかにより判別することができる。
「DCIM」のオブジェクト情報を、TreeDataTableへ書き込むと、ステップST111でインデックス番号を1インクリメントし、ステップST103へ戻る。なお、フォルダ「DCIM」のオブジェクト情報は、InitStateがフォルダ構成状態、Handle=1、FileName=”DCIM”、ChildNum=1、ChildObjectHandle=2を有するAssociation情報である。
そして、次は、Handle=2を有するオブジェクト情報として、「DCIM」の1つ下の階層に存在するフォルダ「100GANON」の情報が、Association情報としてTreeDataTableに記録される。フォルダ「100GANON」のオブジェクト情報は、InitStateがフォルダ構成状態、Handle=2、ParentObjectHandle=1、NextSiblingObjectHandle=6、ChildObjectHandle=3、FileName=”100GANON”、ChildNum=3、を有するAssociation情報である。
次に、Handle=3を有するオブジェクト情報として、フォルダ「100GANON」の下の階層に存在する画像オブジェクト「IMG_0001.JPG」について処理する。画像オブジェクトであるため、ステップST105からST109へ進み、画像情報としてオブジェクト情報を記録する。ただし、この時点ではInitState状態はフォルダ構成であるから、図2に示す各フィールドのうち、先頭のUsedFlagからFileSizeまでを書き込み、フィールドYear以降には何も書き込まれない。
画像オブジェクト「IMG_0001.JPG」のオブジェクト情報は、InitStateがフォルダ構成状態、Handle=3、ParentObjectHandle=2、NextSiblingObjectHandle=4、ChildObjectHandle=NULL、FileName=”IMG_0001.JPG”を有する画像情報である。
同様にして、次に画像オブジェクト「IMG_0002.JPG」のオブジェクト情報がHandle=4を有するオブジェクト情報として記録される。画像オブジェクト「IMG_0002.JPG」のオブジェクト情報は、InitStateがフォルダ構成状態、Handle=4、ParentObjectHandle=2、PreviousSiblingObjectHandle=3、NextSiblingObjectHandle=5、ChildObjectHandle=NULL、FileName=”IMG_0002.JPG”を有する画像情報である。
次いで、Handle=5の「IMG_0003.JPG」のオブジェクト情報が、InitStateがフォルダ構成状態、Handle=5、ParentObjectHandle=2、PreviousSiblingObjectHandle=4、NextSiblingObjectHandle=NULL、ChildObjectHandle=NULL、FileName=”IMG_0003.JPG”を有する画像情報としてTreeDataTableに記録される。
次に、フォルダ「101GANON」のオブジェクト情報がAssociation情報として、下の階層に存在する画像オブジェクト「IMG_0005.JPG」及び「IMG_0006.JPG」のオブジェクト情報が画像情報としてTreeDataTableに記録される。
最後に、フォルダ「MISC」およびその内部のオブジェクトの情報についても、フォルダ「DCIM」とその内部のオブジェクト情報が記録されたのと同様にして、TreeDataTableに記録される。
そして、ステップST111において、記録媒体111内に未登録オブジェクトが存在しないと判定されると、TreeDataTableの作成処理を終了する。なお、ここでは後述する処理に用いる主要なフィールドへの書き込みについてのみ説明したが、他のフィールドについてもそれぞれ適切な値を格納することは言うまでもない。
このように、記録媒体111内の各オブジェクトについて、フォルダ/ディレクトリについてはAssociation情報を、画像ファイルについては画像情報を、それぞれTreeDataTableに登録(追加)してゆく。また、この時点において各オブジェクト情報のフィールドInitStateはフォルダ構成状態である。
以下、このようにして作成したテーブルを用いることで、PC101からのPTPコマンドをどのようにして処理し、応答するかについての具体的な例を説明する。
(フォルダ内のオブジェクト数取得処理)
PC101からPTPコマンドGetNumObjectsを受信し、コマンドで特定されるフォルダに含まれるオブジェクトの数を取得する場合の処理について説明する。
ここでは、図4の状態、すなわち、フォルダ「100GANON」内には「IMG_0001.JPG」、「IMG_0002.JPG」、「IMG_0003.JPG」の3つのオブジェクトがある状態で、フォルダ「100GANON」内のオブジェクト数を取得を要求されたものとする。
まず、CPU103は、PTPコマンドに含まれるオブジェクトハンドル(フォルダ「100GANON」を指定する情報)を取り出し、その値に等しい値をフィールドHandleに持つオブジェクト情報をTreeDataTableから検索する。
見つかった場合、そのオブジェクト情報(ここではフォルダのオブジェクト情報であるからAssociation情報)の中のフィールドChildNumが示す数を「100GANON」内のオブジェクト数として取得し、PC101に返送する。
(オブジェクト情報取得処理)
次に、PC101からPTPコマンドGetObjectInfoを受信し、コマンドで特定されるオブジェクトについての情報を取得する際の処理について説明する。
ここでは、図4のフォルダ「100GANON」内にある画像オブジェクト「IMG_0001.JPG」のオブジェクト情報取得が要求されたものと仮定する。
まず、CPU103は、PTPコマンドに含まれるオブジェクトハンドル(画像オブジェクト「IMG_0001.JPG」を指定する情報)を取り出し、その値に等しい値をフィールドHandleに持つオブジェクト情報をTreeDataTableから検索する。
見つかった場合、そのオブジェクト情報(ここでは画像情報)の中のフィールドInitStateを参照する。InitStateがオブジェクト情報詳細記録状態である場合、画像情報内の全フィールドに情報が格納されているため、画像情報の必要なフィールドからこの画像オブジェクトの情報を取得し、PC101へ返送する。
一方、TreeDataTableが作成されてから「IMG_0001.JPG」のオブジェクト情報が一度も取得されていない場合、InitStateはフォルダ構成状態にある。この場合、この画像オブジェクトのファイルヘッダをデジタルカメラ100内の記憶媒体111から読み込み、この画像オブジェクトの情報を取得する。この画像オブジェクトの情報を取得後、画像情報のフィールドYear以降(撮影日時、サムネイル画像のサイズ、画像の横サイズ、画像の縦サイズを画像情報の中のフィールドYear、Month、Day、Hour、Min、Sec、ThumbSize、PixWidth、PixHeight)にヘッダから取得した情報を書き込むとともに、この画像情報のInitStateをオブジェクト情報詳細記録状態に変更する。そして、PC101へオブジェクト情報を返送する。
(オブジェクトデータ取得処理)
次に、PC101からPTPコマンドGetObjectを受信し、コマンドで特定されるオブジェクトデータを取得する際の処理について説明する。
ここでは、図4のフォルダ「100GANON」内にある画像オブジェクト「IMG_0001.JPG」のオブジェクトデータ取得が要求されたものと仮定する。
まず、CPU103は、PTPコマンドに含まれるオブジェクトハンドル(画像オブジェクト「IMG_0001.JPG」を指定する情報)を取り出し、その値に等しい値をフィールドHandleに持つオブジェクト情報をTreeDataTableから検索する。
見つかった場合、そのオブジェクト情報(画像情報)の中のフィールドFileNameを参照する。
フィールドParentObjectHandleを参照し、「IMG_0001.JPG」の親オブジェクト(フォルダ「100GANON」)のオブジェクトハンドル「2」を取得する。
このオブジェクトハンドルをフィールドHandleに有するオブジェクト情報をTreeDataTableから検索する。
見つかった場合、そのオブジェクト情報(フォルダ「100GANON」のオブジェクト情報)のフィールドFileNameを参照する。
フィールドParantObjectHandleを参照し、「100GANON」の親オブジェクト(フォルダ「DCIM」)のオブジェクトハンドル「1」を取得する。
このオブジェクトハンドルをフィールドHandleに有するオブジェクト情報をTreeDataTableから検索する。
見つかった場合、そのオブジェクト情報(フォルダ「DCIM」のオブジェクト情報)のフィールドFileNameを参照する。
フィールドParentObjectHandleを参照し、「DCIM」の親オブジェクト(ボリューム「D」)のオブジェクトハンドル「0」を取得する。
このオブジェクトハンドルをフィールドHandleに有するオブジェクト情報をTreeDataTableから検索する。
見つかった場合、そのオブジェクト情報(ボリューム「D」のオブジェクト情報)のフィールドFileNameを参照する。
ボリューム「D」は最上位階層であるため、これ以上の上位階層の探索は行われない。
以上のステップにより参照したFilenameを順に並べることで、「IMG_0001.JPG」のフルパス「D:\DCIM\100GANON\IMG_0001.JPG」を得ることができる。このフルパスによりデジタルカメラ100内の記憶媒体111に記録されている「IMG_0001.JPG」にアクセスし、画像データ「IMG_0001.JPG」をPC101上に転送する。
このように、本実施形態のTreeDataTableを用いることで、PTPコマンドで指定されるオブジェクトハンドルから直ちにオブジェクト情報を参照でき、また、オブジェクト情報には少なくとも親オブジェクトを特定可能な情報が含まれているため、その後は最上位階層まで順にファイル名を取得していけばオブジェクトのフルパスを取得することができる。図4のフォルダ構成を有する記録媒体111の場合、画像オブジェクトの数によらず、どの画像オブジェクトも4回TreeDataTableを参照することでそのフルパスを得ることが可能である。これに対し、従来技術で説明した方法では、オブジェクトハンドルをテーブルの最初から順に探索していく必要があるため、オブジェクト数が増加するに従ってテーブルの参照回数が増加し、フルパスの取得に時間を要することになる。
(オブジェクトの削除処理)
次に、PC101からPTPコマンドDeleteObjectを受信し、コマンドで特定されるオブジェクトを削除する場合の処理について説明する。
ここでは、図4のフォルダ「100GANON」内にある画像オブジェクト「IMG_0001.JPG」の削除が要求されたものと仮定する。
まず、CPU103は、PTPコマンドに含まれるオブジェクトハンドル(画像オブジェクト「IMG_0001.JPG」を指定する情報)を取り出し、その値に等しい値をフィールドHandleに持つオブジェクト情報をTreeDataTableから検索する。
見つかった場合、そのオブジェクト情報(画像情報)の中のフィールドUsedFlagの値をFALSE(無効)に書き換え、デジタルカメラ100内の記憶媒体111から画像オブジェクト「IMG_0001.JPG」を削除する。
そして、他のオブジェクトの、関連するフィールドの変更処理を行う。具体的には、削除されたオブジェクトの親オブジェクトのオブジェクト情報については、フィールドChildNumを1減らし、また削除されたオブジェクトが先頭の子オブジェクトであれば、ChildObjectHandleを削除されたオブジェクトのNextSiblingObjectHandleに格納されたハンドルに書き換える。また、削除されたオブジェクトのNextSiblingObjectHandleで特定されるオブジェクトのPreviousObjectHandleをNULLに変更する。また削除されたオブジェクトが先頭あるいは末尾の子オブジェクト以外の場合は、(次の子オブジェクトのハンドル)−(子オブジェクトのハンドル)=1が成り立たなくなるため、オブジェクトハンドルの連番を示すChildStateをFALSEに更新する。ただし、ChildStateがFALSEでオブジェクトの削除を行うことで子オブジェクトの数が1となった場合、ChildStateをTRUEに更新する。
また、削除されたオブジェクトが親オブジェクトである場合には、その子オブジェクト以下の全オブジェクトのオブジェクト情報のUsedFlagをFALSEに設定する。
(PCからのオブジェクト情報の登録処理)
次に、PC101からPTPコマンドSendObjectInfoを受信し、TreeDataTableにオブジェクト情報を登録する処理について説明する。
ここでは、カメラの記録媒体111に存在しない画像オブジェクトのオブジェクト情報をがPC101からカメラ100に送信され、記録媒体111内のフォルダ「100GANON」内にあるオブジェクト「IMG_0006.JPG」のオブジェクト情報として登録する場合を想定する。また、ここではTreeDataTableにはオブジェクト情報がまだ登録可能である(最終インデックスまで記録されていない)とする。
以下、図5に示すフローチャートを参照しながら、PTPコマンドSendObjectInfoを受信した際のTreeDataTableへの登録処理について説明する。
TreeDataTableにおいて、オブジェクト情報が記録されている最後のインデックスの次のインデックスに画像オブジェクト「IMG_0006.JPG」の画像情報を書き込む(ステップST501)。
フィールドHandleを参照し、オブジェクト「100GANON」のオブジェクトハンドルであるかどうか判定する(ステップST502)。
ST502でオブジェクト「100GANON」のオブジェクトハンドルでないと判定された場合、ステップST503で、参照したオブジェクト情報のインデックスがTreeDataTableの最終インデックスであるか判定する。
ステップST503で最終インデックスでないと判定された場合、ステップST504で次のインデックス(オブジェクト情報)を参照する。次にステップST502へ戻る。
ステップST503で最終インデックスであると判定された場合、処理を終了する。
ステップST502でオブジェクト「100GANON」のハンドルであると判断された場合、すなわち、「100GANON」のオブジェクト情報がTreeDataTableから見つかったら、ステップST505で、そのHandleが含まれるAssociation情報のフィールドChildObjectHandleとフィールドChildNumを参照する。また、ChildNumの値を1増やす。
ステップST506でフィールドChildObjectHandleがNULLであるかどうか判定する。
ステップST506でフィールドChildObjectHandleがNULLでないと判定された場合、すなわち、フォルダ「100GANON」に他の画像ファイルが既に存在する場合には、ステップST507でフィールドChildObjectHandleが指し示すインデックスのオブジェクト情報を参照する。
参照先の画像情報のフィールドNextSiblingObjectHandleを参照し、フィールドNextSiblingObjectHandleが指し示すインデックスのオブジェクト情報を参照する。この処理を(フィールドChildNumに記録されている値−1)回分繰り返す(ステップST508)。これにより、フォルダ「100GANON」に含まれる(フォルダ「100GANON」の1階層下の)画像ファイルに対応する最後のオブジェクト情報に到達する。
ステップST509で、このオブジェクト情報のフィールドNextSiblingObjectHandleに、ステップST501で「IMG_0006.JPG」の画像情報を記録したインデックス(Handleの値)を書き込む。これにより、「IMG_0006.JPG」がフォルダ「100GANON」の1階層下に存在するものとしてTreeDataTableへ登録されたことになる。
一方、ステップST506でオブジェクト「100GANON」のフィールドChildObjectHandleがNULLと判定された場合(すなわち、フォルダ「100GANON」にまだ画像ファイルが存在しない場合)、ステップST510でフィールドChildObjectHandleに「IMG_0006.JPG」の画像情報を記録したインデックスを書き込む。
なお、ステップST507での判定はフィールドChildNumが0かどうかを調べてもよい。
(オブジェクトサイズとオフセット取得処理)
次に、PC101から拡張PTPコマンドGetPartialObjectInfoを受信し、コマンドで特定されるオブジェクトについてオブジェクトのサイズと、オブジェクトデータが始まるオフセットを取得する際の処理について説明する。ここで、GetPartialObjectInfoとは、オブジェクト中の構成要素の種類を指定し、その構成要素のサイズおよび構成要素のオブジェクトの先頭からのオフセットを取得するコマンドである。
ここでは、図4のフォルダ「100GANON」内にある画像オブジェクト「IMG_0001.JPG」のJPEG全画像データ(サムネイル画像ではない、実際の画像データ)について、そのサイズとオブジェクト「IMG_0001.JPG」の先頭からのオフセット情報(すなわち、フィールドOffset,Sizeの値)取得が要求されたものと仮定する。
まず、CPU103は、PTPコマンドに含まれるオブジェクトハンドル(画像オブジェクト「IMG_0001.JPG」を指定する情報)を取り出し、その値に等しい値をフィールドHandleに持つオブジェクト情報をTreeDataTableから検索する。
見つかった場合、そのオブジェクト情報の中のフィールドInitStateを参照する。
参照の結果、InitStateがオブジェクト情報詳細記録状態であれば、上述の通りフィールドOffset, Sizeには既に値が読み込まれているため、画像情報中のフィールドSizeおよびOffsetからオブジェクト「IMG_0001.JPG」の構成要素であるJPEG全画像のサイズおよび、JPEG全画像についてオブジェクト「IMG_0001.JPG」の先頭からのオフセットを取得する。
一方、InitStateがファイル構成状態の場合には、フィールドOffset, Sizeに値が読み込まれていないため、上述のオブジェクトデータ取得処理で説明したようにしてオブジェクト「IMG_0001.JPG」のフルパスを取得し、記憶媒体111に記録されているオブジェクト「IMG_0001.JPG」のヘッダファイルを参照して、オブジェクト「IMG_0001.JPG」の構成要素であるJPEG全画像のバイト数および、JPEG全画像についてオブジェクト「IMG_0001.JPG」の先頭からのオフセットを取得する。そして、PC101へこれら情報を返送する。
(フルパスからのオブジェクトハンドル取得処理)
次に、PC101から拡張PTPコマンドGetObjectHandleByNameを受信し、コマンドで特定されるパス名からオブジェクトハンドルを取得する際の処理について説明する。ここで、GetObjectHandleByNameとは、パス名で示されるオブジェクトのハンドルを取得するPTP拡張コマンドである。この拡張コマンドでは、オブジェクトハンドルではなくフルパスでオブジェクトが指定される。
ここでは、コマンド中、フルパス「D:\DCIM\100GANON\IMG_0001.JPG」で指定されたオブジェクトのハンドル取得を要求されたものと仮定する。
以下、図6に示すフローチャートを参照しながら処理について説明する。
まず、ステップST601〜ST604において、TreeDataTableから、「DCIM」に対応するオブジェクト情報を探索する。
すなわち、ステップST601でTreeDataTableの各オブジェクト情報のフィールドFileNameを参照する。なお、「DCIM」は画像オブジェクトでないことが明らかであるから、オブジェクト情報のフィールドFormatCodeがAssociation情報であるオブジェクトデータのみフィールドFileNameを参照しても良い。
次に、ステップST602でフィールFileNameが「DCIM」であるかどうか判定する。
ステップST602で「DCIM」フォルダでないと判定された場合、ステップST603で最終インデックス(最終オブジェクトデータ)かどうか判定する。
ステップST603で最終インデックスでないと判定された場合、ステップST604で次のオブジェクトデータのフィールドFileNameを参照し、ステップST602に戻る。
ステップST603で最終インデックスであると判定された場合、処理を終了する。
ステップST602でFileNameが「DCIM」のオブジェクトデータが見つかったら、ステップST605でそのオブジェクト情報のフィールドChildObjectHandleおよびChildNumを参照する。
次に、ステップST606で、フィールドChildObjectHandleに記述されているハンドル(インデックス番号)で示されるオブジェクト情報を参照する。
次に、ステップST607でフィールドFileNameを参照する。
次に、ステップST608でFileNameが「100GANON」であるかどうか判定する。
ステップST608でFileNameが「100GANON」でないと判定された場合、ステップST609でNextSiblingObjectHandleに記述されているインデックス番号で示されるオブジェクト情報(すなわち、同階層の別フォルダのオブジェクト情報)を参照する。次にステップST607に戻り、「100GANON」のオブジェクト情報を参照するまで最大ChildNum回(図4の例では2回)TreeDataTableを探索する。
一方、ステップST608でFileNameが「100GANON」であると判定された場合には、ステップST610でフィールドChildObjectHandleおよびChildNumを参照する。
次に、ステップST611でChildObjectHandleに記述されているインデックス番号で示されるオブジェクト情報を参照する。
次に、ステップST612でフィールドFileNameを参照する。
次に、ステップST613でFileNameが「IMG_0001.JPG」フォルダかどうか判定する。ステップST613でFileNameが「IMG_0001.JPG」でないと判定された場合、ステップST614でNextSiblingObejctHandleに記述されているインデックス番号で示されるオブジェクト情報を参照する。次にステップST612に戻り、「IMG_0001.JPG」の画像情報を参照するまで、最大「100GANON」オブジェクト情報のChildNum回だけ、TreeDataTableを探索する。
ステップST613でFileNameが「IMG_0001.JPG」であると判定された場合、ステップST615でそのオブジェクト情報のフィールドHandleを参照し、パス名「D:\DCIM\100GANON\IMG_0001.JPG」に対応するオブジェクトハンドルをPC101に転送する。
(ストレージ内の全オブジェクトハンドルの取得)
次に、PC101からPTPコマンドGetObjectHandlesを受信し、ストレージ内の指定されたオブジェクトフォーマットの全オブジェクトハンドルを取得する際の処理について説明する。ここで、GetObjectHandlesとは、ストレージ内の全オブジェクトのハンドルを取得するPTPコマンドである。
ここでは、取得するオブジェクトのフォーマットは全オブジェクトとする。
以下、図9に示すフローチャートを参照しながら説明する。
ステップST901で、TreeDataTableのフィールドFileNameを参照する。
ステップST902で、「DCIM」か判定する。
ステップST902で「DCIM」でないと判定された場合、最終インデックスかどうか判定する(ステップST903)。
ステップST903で最終エントリと判定されない場合、TreeDataTableの次のインデックスを参照し(ステップST904)、ステップST901に戻る。
ステップST903で最終エントリと判定された場合、処理を終了させる。
ステップST901で「DCIM」であると判断された場合、フィールドHandleを参照しその値を取得する(ステップST905)。
次にステップST906で、フィールドChildHandleを参照し、TreeDataTableの「100GANON」のインデックスを参照する。
次にステップST907で、フィールドHandleを参照し、フォルダ「100GANON」のオブジェクトハンドルを取得する。その値をhとする。
次にステップST908で、フィールドChildNumを参照する。その値をNとする(図4では3となる)。
次にステップST909で、フィールドChildStateを参照する。
次にステップST910で、ChildStateが「TRUE」かどうか判定する。
ステップST910で「TRUE」と判定された場合、ステップ907で取得したフォルダ「100GANON」のオブジェクトハンドルの値hとステップST908で取得した子オブジェクトの数Nから、フォルダ「100CANON」内のオブジェクトハンドルの値として、h+1,h+2, ...,h+N、のN個取得できる(ステップST911)。次に、ステップST918に進む。
ステップST910で「FALSE」と判定された場合、ステップST912で、フィールドChildHandleを参照し、TreeDataTableの画像オブジェクト「IMG_0001.JPG」のエントリを参照する。
ステップST913で、フィールドHandleを参照し、画像オブジェクト「IMG_0001.JPG」のオブジェクトハンドルを取得する。
ステップST914で、Nが1かどうか判定する。
ステップST914でNが1と判定された場合、処理を終了させる。
ステップST914でNが1と判定された場合、フィールドNextSiblingObjectHandleに記述されている画像オブジェクトのインデックスを参照する(ステップST915)。
次にステップST916でフィールドHandleを参照し、その値を取得する。
ステップST917で、ステップST915及びステップST916を(N−1)回行ったか判定する。
ステップST917でステップST915及びステップST916を(N−1)回行ったと判定されない場合、ステップST915に戻る。
ステップST917でステップST915及びステップST916を(N−1)回行ったと判定された場合、ステップST918に進む。
ステップST918で、子オブジェクトに画像オブジェクトを持つフォルダ(図4の例ではフォルダ「100GANON」)のNextSiblingObjectHandle(図4の例ではフォルダ「101GANON」)を参照し、そのインデックスを参照する。
ステップST919で、NextSiblingObjectHandleがNULLか判定する。
ステップST919でNextSiblingObjectHandleがNULLだと判断された場合は、全てのオブジェクトハンドルを取得したので処理を終了させる。
ステップST919でNextSiblingObjectHandleがNULLでないと判断された場合は、ステップST907からステップST917の処理が行われる(ステップST920)。つまりステップST920により、図4のフォルダ「101GANON」内の全てのオブジェクトハンドルを取得することができる。次に、ステップST108に戻る。
以上の処理により、ストレージ内に存在する全てのオブジェクトのハンドルを取得することができる。そのとき、1つ下の階層に画像オブジェクトがあるフォルダのTreeDataTableのフィールドChildStateが「TRUE」である場合、子のオブジェクトのハンドルをたどり、さらにN個の同階層の画像オブジェクトのハンドルをたどる必要がないため、処理を高速化することができる。
(TreeDataTableの無効領域再利用処理)
上述のように、本実施形態においてはTreeDataTableのサイズは固定であり、1つのTreeDataTableにオブジェクト情報を記録できるオブジェクトの数も固定である。そのため、最大数のオブジェクトについてオブジェクト情報が記録されている場合(最終インデックスまで使用されている場合)には、新たなオブジェクトについてのオブジェクト情報を記録することが出来ない。
しかし、削除されたオブジェクトについてのオブジェクト情報のように、無効なオブジェクト情報(フィールドUsedFlagがFALSEの情報)があれば、その領域を再利用することが可能である。
以下、この再利用処理について図7のフローチャートを参照して説明する。
ここでは、TreeDataTableには最終インデックスまでオブジェクト情報が記録されている状態にあり、そこに新たな画像オブジェクト「IMG_0010.JPG」の情報をTreeDataTableに記録することを試みるものと仮定する。
ステップST701で、記録されていないオブジェクト情報インデックスをTreeDataTableの終端まで検索する。
次に、記録されていないオブジェクト情報領域がある場合、その領域に新しいオブジェクトのオブジェクト情報を書き込む(ステップST702)。このように、ステップST701〜ST702の処理は、まだ空き領域がある状態での新規オブジェクト情報の追加処理に相当する。
ここでは、既に空き領域がないので、ステップST703へ進み、TreeDataTableの先頭から、フィールドUsedFlagがFALSEであるオブジェクト情報を探索する。すなわち、UsedFlagがTRUEであれば、ステップST706で、このオブジェクト情報が最終インデックスかどうか判定し、最終インデックスでないと判定された場合、ST707で次のインデックスにアクセスし、ステップST703に戻る。
ステップST706で最終インデックスであると判定された場合、TreeDataTableの全インデックスのフィールドUsedがTRUEであることになり、新しいオブジェクト情報の追加は出来ないため、未処理として終了する。
一方、ステップST703において、UsedFlagがFLASEである場合、そのオブジェクト情報に画像オブジェクト「IMG_0010.JPG」のオブジェクト情報を上書きする(ステップST704)。
そして、ステップST705で、そのオブジェクト情報のフィールドUsedFlagをTRUEに変更する。
このように、UsedFlagを用いることで、有限の領域を無駄なく再利用することができる。
以上説明したように、本実施形態によれば、記録媒体に含まれる個々のオブジェクトについて、少なくとも他の1つのオブジェクトとの相対位置関係を表す情報、具体的には論理的階層フォルダ構成における少なくとも親オブジェクトを特定可能な情報を含むオブジェクトの情報を格納したテーブルを作成することにより、記録媒体に含まれるオブジェクトの数、具体的には画像ファイルの数が多くなっても高速に検索が可能である。
また、さらにオブジェクト情報として先頭の子オブジェクトを特定可能な情報を含めるとともに、論理的階層構造において同階層に属する共通の親オブジェクトを有する複数の子オブジェクトについては、他の1つの子オブジェクトを特定する情報を記録することにより、ある親オブジェクトの複数の子オブジェクトの中から特定の子オブジェクトを容易に探索することができる。
さらに、親オブジェクトについては、子オブジェクトの数に関する情報をオブジェクト情報に含めることで、子オブジェクトの数をカウントする従来の方法よりも、子オブジェクトの数を高速に把握することが可能である。
また、オブジェクトハンドルとテーブルのインデックスが1対1に対応している(同一値又は所定の関係により対応づけされている)ため、PTPコマンドでオブジェクトハンドルを指定してオブジェクトを検索する際、検索時間が短くなる利点がある。特に、テーブルの各オブジェクト情報が固定サイズの領域に記録される場合、オブジェクトハンドルから直ちにオブジェクト情報の開始位置が求まるため、検索が高速化される。
また、画像オブジェクトのファイルヘッダに含まれるオブジェクト情報については、最初に要求があった時点で取得し、テーブルに登録することで、当初のテーブル作成に係る時間を短縮すると共に、その後同じ情報の要求があった場合には再度ファイルへアクセスすることなくオブジェクト情報を得ることができる。
また、オブジェクトの全子オブジェクトのハンドルを取得する際、全子オブジェクトのハンドルの値が連番であることが示されている場合、そのオブジェクトのハンドルから計算で求めることができる。そのため、個々の子オブジェクトのにアクセスして子オブジェクトのハンドルを1つづつ取得する従来の方法よりも、全子オブジェクトのハンドルの値を高速に求めることが可能となる。
<第2の実施形態>
(StrageInfoTableの利用)
上述した実施形態の撮像装置において、さらにストレージ情報を記録するためのテーブルStrageInfoTableをさらに作成することも可能である。
図3は本実施形態のデジタルカメラ100が、TreeDataTable作成後にカメラ内の一時記憶装置106に作成可能なStorageInfoTableの例を示す図である。
StorageInfoTableはデジタルカメラに挿入される記録媒体111と、PTPで定められる、一時記憶装置106に作られるの論理的な記録媒体のストレージ情報とを記録するためのテーブルである。StorageInfoTableは図2のTreeDataTableとは別のテーブルである。StorageInfoTableはストレージIDごとの情報STと、全体についての情報MTとの2種類がある。PTPの規格に従い、論理的なストレージ情報を生成する必要があるので、1つの記録媒体に対してSTは2つ作成される。ここで、ストレージIDごとの情報ST1エントリ当たりのサイズは固定サイズであるため、図2のTreeDataTableのフィールドDriveNoを指定することで、StorageInfoテーブル上のどのストレージID情報のエントリかを指定できる。
フィールドValidFlagはこの情報が有効かどうかを示すフラグである。フィールドNumはStorageInfoTableに記録されているSTの数である。フィールドTotalObjectNumはStorageInfoTableに記録されている全STに対応するストレージに存在するオブジェクト数(各STのObjectNumを合計したもの)である。RollStateは図2のTreeDataTableが最終インデックスまで書き込まれ、図2において無効になったフィールドUsedFlagが再利用される可能性がある状態を示す。
AccessCapabilityはそのSTに対応するストレージ(記録媒体又はその論理的ストレージ情報)に対して読み書き可能か否かを示す。DriveNameはボリューム名であり、1文字である。DriveNameは図2のTreeDataTableのフィールドFileNameと同じものとなる。StorageIDはストレージIDである。RootHandleはルートディレクトリへのハンドル(図4の例では、ディレクトリDに対応するオブジェクトハンドル)である。ObjectNumはこのSTに対応するストレージに含まれるオブジェクトの数である。Reserveは予約領域である。
(StrageInfoTable作成処理)
上述したように、本実施形態のデジタルカメラ100は、TreeDataTableを作成した後、StorageInfoTableを一時記憶装置106に作成することができる。
この場合、CPU103はカメラ100に装着されたメモリカード111を参照し、メモリカード111のストレージ情報ST1と、論理的なストレージ情報ST2とを作成するとともに、全体のストレージ情報としてMT1を生成し、各フィールドに適切な値を格納する。
なお、ボリューム情報については、StorageInfoTableのフィールドDriveNameとTreeDataTableのフィールドFileNameは同じ文字となり、StorageInfoTableのフィールドRootHandleとTreeDataTableのフィールドHandleは同じ値となる。図4の例では、ボリューム「D」についての情報がこのように作成される。
(StorageInfoTableとTreeDataTableの関連)
以下では、StorageInfoTableとTreeDataTableの2つのテーブルを使用する例について説明する。
(1.ファイルサイズの取得)
記憶媒体にアクセスして画像オブジェクトのファイルサイズを取得しようとする例について説明する。
ここでは、図4のボリューム「D」内のフォルダ「100GANON」内に存在する画像オブジェクト「IMG_0001.JPG」のファイルサイズを取得するものと仮定する。
TreeDataTableから画像オブジェクト「IMG_0001.JPG」エントリにアクセスする。
次に、フィールドDriveNoを参照する。
次に、TreeDataTableから取得した画像オブジェクト「IMG_0001.JPG」のDriveNoから、StorageInfoTableのボリューム「D」のエントリにアクセスする。
次に、ボリューム「D」のStorageInfoTable上のフィールドStorageIDを参照する。
得られたStorageIDの上位2バイトを見る。
StorageIDの上位2バイトが0x0001であれば、実ストレージ上にデータが存在するので、実ストレージ上に存在する画像オブジェクト「IMG_0001.JPG」のヘッダからファイルサイズを取得する。
StorageIDの上位2バイトが0x8000であれば、仮想ストレージ上にデータが存在するので、実ストレージとは別のメモリに存在する画像オブジェクト「IMG_0001.JPG」のヘッダからファイルサイズを取得する。
(2.アクセス属性によるオブジェクトの削除禁止)
ストレージのアクセス属性が書き込み禁止になっている際に、オブジェクトを削除しようとする例について説明する。
ここでは、図4のボリューム「D」は書込み禁止属性になっていて、フォルダ「100GANON」内に存在する画像オブジェクト「IMG_0001.JPG」を削除するものと仮定する。
TreeDataTableから画像オブジェクト「IMG_0001.JPG」エントリにアクセスする。
次に、フィールドDriveNoを参照する。
次に、TreeDataTableから取得した画像オブジェクト「IMG_0001.JPG」のDriveNoから、StorageInfoTableのボリューム「D」のエントリにアクセスする。
次に、ボリューム「D」のStorageInfoTable上のフィールド「AccessCapacity」を参照する。
フィールド「AccessCapacity」が属性が書き込み禁止属性であるため、画像オブジェクト「IMG_0001.JPG」を削除する処理は中止される。
この実施形態ではボリューム内の画像オブジェクトの削除について説明したが、ボリューム内のフォルダの削除についても同様である。また、オブジェクトの追加についても同様である。
<他の実施形態>
上述の実施形態においては、画像オブジェクトのオブジェクト情報(画像情報)がフォルダ構成状態からオブジェクト情報詳細記録状態に遷移するタイミングを、そのオブジェクト情報が実際に要求された時点としていた。このようにすることで、必要な場合にのみ画像オブジェクトのファイルにアクセスし、カメラの処理負荷の軽減やTreeDataTableの作成に係る時間短縮を実現できる。しかし、例えばカメラがアイドル状態にある場合など、負荷が少ない状態にあるとき、順次画像オブジェクトファイルにアクセスし、ファイルヘッダから情報を取得してテーブルへ書き込んでおくようにしてもよい。
尚、前述した実施形態の機能を実現するソフトウェアのプログラムを、記録媒体から直接、或いは有線/無線通信を用いて当該プログラムを実行可能なCPU他の構成を備えた撮像装置や情報処理装置(まとめてコンピュータという)に供給し、それら装置が該供給されたプログラムを実行することによって同等の機能が達成される場合も本発明に含む。
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータに供給、インストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明の機能処理を実現するためのコンピュータプログラム自体も本発明に含まれる。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等、プログラムの形態を問わない。
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、磁気テープ等の磁気記録媒体、MO、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−R、DVD−RW等の光/光磁気記憶媒体、不揮発性の半導体メモリなどがある。
有線/無線通信を用いたプログラムの供給方法としては、コンピュータネットワーク上のサーバに本発明を形成するコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイル等、クライアントコンピュータ上で本発明を形成するコンピュータプログラムとなりうるデータファイル(プログラムデータファイル)を記憶し、接続のあったクライアントコンピュータにプログラムデータファイルをダウンロードする方法などが挙げられる。この場合、プログラムデータファイルを複数のセグメントファイルに分割し、セグメントファイルを異なるサーバに配置することも可能である。
つまり、本発明の機能処理をコンピュータで実現するためのプログラムデータファイルを複数のユーザに対してダウンロードさせるサーバ装置も本発明に含む。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件を満たしたユーザに対して暗号化を解く鍵情報を、例えばインターネットを介してホームページからダウンロードさせることによって供給し、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
本発明の実施形態に係るデジタルカメラのハードウェア構成例及びPCとの接続状態を示す図である。 本発明の実施形態に係るデジタルカメラが生成するTreeDataTableのデータ構造を示す図である。 本発明の第2の実施形態に係るデジタルカメラが生成するStorageInfoTabelのデータ構造を示す図である。 デジタルカメラに装着された記録媒体内のオブジェクトの階層構成の例を示す図である。 第1の実施形態において、SendObjectInfoコマンドをTreeDataTableを用いて実行する際の処理を説明するフローチャートである。 第1の実施形態において、GetObjectHandleByNameコマンドをTreeDataTableを用いて実行する際の処理を説明するフローチャートである。 第1の実施形態において、TreeDataTableにオブジェクト情報を追加する際の処理を説明するフローチャートである。 第1の実施形態において、TreeDataTableを作成する処理を説明するフローチャートである。 第1の実施形態において、ストレージ内の全オブジェクトハンドルを取得する処理を説明するフローチャートである。

Claims (15)

  1. 外部機器との通信手段を有し、着脱可能もしくは内蔵した記録媒体に、階層的な論理フォルダ構成に従って撮影画像ファイルを記録する撮像装置であって、
    記憶領域を提供する記憶手段と、
    前記記録媒体における前記論理フォルダ階層を構成する各オブジェクトについて、前記論理フォルダ階層における少なくとも親オブジェクトを特定する情報を含むオブジェクト情報を生成し、前記記憶手段に記憶するオブジェクト情報生成手段と、
    前記外部機器から受信した、前記撮影画像ファイルについてのコマンドを、前記記憶手段に記憶したオブジェクト情報を用いて処理する処理手段とを有することを特徴とする撮像装置。
  2. 前記オブジェクト情報として記憶する情報の内容が、前記論理フォルダ階層を構成するフォルダオブジェクトと、画像オブジェクトとで異なることを特徴とする請求項1記載の撮像装置。
  3. 前記フォルダオブジェクトのオブジェクト情報にのみ含まれる情報には、前記論理フォルダ階層における先頭の子オブジェクトのオブジェクト情報を特定する情報及び子オブジェクトの総数についての情報が含まれることを特徴とする請求項2記載の撮像装置。
  4. 前記画像オブジェクトのオブジェクト情報にのみ含まれる情報には、親オブジェクトを共通とする、同階層の他のオブジェクトのオブジェクト情報を特定する情報が含まれることを特徴とする請求項2又は請求項3記載の撮像装置。
  5. 前記画像オブジェクトのオブジェクト情報にのみ含まれる情報は、前記撮影画像ファイルに記録された情報であることを特徴とする請求項2乃至請求項4のいずれか1項に記載の撮像装置。
  6. 前記画像オブジェクトのオブジェクト情報にのみ含まれる情報には、撮像日時に関する情報が含まれることを特徴とする請求項5記載の撮像装置。
  7. 前記撮影画像ファイルには、サムネイル画像と、本画像とが含まれ、
    前記画像オブジェクトのオブジェクト情報にのみ含まれる情報には、前記サムネイル画像に関する情報及び前記本画像に関する情報が含まれることを特徴とする請求項5又は請求項6記載の撮像装置。
  8. 前記画像オブジェクトのオブジェクト情報にのみ含まれる情報は、前記画像オブジェクトの情報要求コマンドを最初に処理する際に前記オブジェクト情報生成手段が取得し、記録することを特徴とする請求項2乃至請求項7のいずれか1項に記載の撮像装置。
  9. 前記記憶手段が提供する前記記憶領域の大きさ及び、前記各オブジェクトについてのオブジェクト情報を記憶する領域の大きさがいずれも固定であることを特徴とする請求項1乃至請求項8のいずれか1項に記載の撮像装置。
  10. 前記オブジェクト情報の各々には固有の情報が含まれ、当該固有の情報が、前記コマンドにおいてオブジェクトを特定するために用いられる情報と1対1で対応するように定められていることを特徴とする請求項1乃至請求項9のいずれか1項に記載の撮像装置。
  11. 前記オブジェクト情報生成手段が、前記外部機器との通信開始時に前記オブジェクト情報を生成、記憶することを特徴とする請求項1乃至請求項10のいずれか1項に記載の撮像装置。
  12. 請求項1又は請求項3において、オブジェクトの追加、あるいは削除により、親オブジェクト及び子オブジェクトの情報を更新する機能を備えることを特徴とする撮像装置。
  13. 前記オブジェクト情報には子オブジェクトの総数の情報が含まれ、子オブジェクト数を取得する際に子オブジェクトをカウントしないで、前記オブジェクト情報の子オブジェクトの総数情報を参照することで取得できることを特徴とする撮像装置。
  14. 前記オブジェクト情報には全子オブジェクトのハンドルが連番であるかどうかを示す情報が含まれ、子オブジェクト全体のハンドルを取得する際、全子オブジェクトのハンドルが連番である場合に、子オブジェクトを検索せずに、計算により全子オブジェクトのハンドルを取得できることを特徴とする撮像装置。
  15. 記憶領域を提供する記憶手段と、外部機器との通信手段を有し、着脱可能もしくは内蔵した記録媒体に、階層的な論理フォルダ構成に従って撮影画像ファイルを記録する撮像装置の制御方法であって、
    前記記録媒体における前記論理フォルダ階層を構成する各オブジェクトについて、前記論理フォルダ階層における少なくとも親オブジェクトを特定する情報を含むオブジェクト情報を生成し、前記記憶手段に記憶するオブジェクト情報生成ステップと、
    前記外部機器から受信した、前記撮影画像ファイルについてのコマンドを、前記記憶手段に記憶したオブジェクト情報を用いて処理する処理ステップとを有することを特徴とする撮像装置の制御方法。
JP2004272525A 2004-09-16 2004-09-17 撮像装置及びその制御方法 Pending JP2006087050A (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2004272525A JP2006087050A (ja) 2004-09-17 2004-09-17 撮像装置及びその制御方法
CNA200580030996XA CN101023413A (zh) 2004-09-16 2005-09-15 在与图像有关的装置和信息装置之间的通信
EP05785824A EP1784730A4 (en) 2004-09-16 2005-09-15 COMMUNICATION BETWEEN AN IMAGE-ASSOCIATED DEVICE AND AN INFORMATION DEVICE
KR1020077008120A KR100886692B1 (ko) 2004-09-16 2005-09-15 파일 송신 장치와, 파일 송신 장치의 제어 방법 및, 통신 시스템
US11/572,395 US8280975B2 (en) 2004-09-16 2005-09-15 Image supply apparatus and imaging apparatus, an information processing apparatus and control method thereof, and communication system
PCT/JP2005/017427 WO2006030962A1 (en) 2004-09-16 2005-09-15 Communication between image-related apparatus and information apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004272525A JP2006087050A (ja) 2004-09-17 2004-09-17 撮像装置及びその制御方法

Publications (2)

Publication Number Publication Date
JP2006087050A true JP2006087050A (ja) 2006-03-30
JP2006087050A5 JP2006087050A5 (ja) 2007-11-01

Family

ID=36165136

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004272525A Pending JP2006087050A (ja) 2004-09-16 2004-09-17 撮像装置及びその制御方法

Country Status (1)

Country Link
JP (1) JP2006087050A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7805539B2 (en) 2007-03-30 2010-09-28 Canon Kabushiki Kaisha Data transfer apparatus and data receiving apparatus, and data transfer system
JP2012256365A (ja) * 2012-09-04 2012-12-27 Canon Inc データ転送装置及びその制御方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002369106A (ja) * 2001-04-06 2002-12-20 Sony Corp ディジタルカメラおよびデータ転送方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002369106A (ja) * 2001-04-06 2002-12-20 Sony Corp ディジタルカメラおよびデータ転送方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7805539B2 (en) 2007-03-30 2010-09-28 Canon Kabushiki Kaisha Data transfer apparatus and data receiving apparatus, and data transfer system
JP2012256365A (ja) * 2012-09-04 2012-12-27 Canon Inc データ転送装置及びその制御方法

Similar Documents

Publication Publication Date Title
KR100886692B1 (ko) 파일 송신 장치와, 파일 송신 장치의 제어 방법 및, 통신 시스템
US7386576B2 (en) Data file storage device with automatic filename creation function, data file storage program and data file storage method
US8271544B2 (en) Data file having more than one mode of operation
US7777789B2 (en) Information management apparatus defining a replay sequence of new image data added to groups of images
JP2004215231A (ja) ファイル管理プログラム
US7755661B2 (en) Image data transfer control in digital imaging system
JP4764808B2 (ja) 画像ファイル管理装置及び画像ファイル管理方法
JP4886551B2 (ja) 画像処理システム、情報処理装置及びその制御方法、記憶媒体、プログラム
JP5441349B2 (ja) 画像投射装置及びその制御方法
JP2006087050A (ja) 撮像装置及びその制御方法
Parulski et al. Digital camera image storage formats
JP2005244614A (ja) 電子カメラ装置、及び記録媒体
JP2009135685A (ja) プログラム及び画像ファイル管理装置
JP2000092440A (ja) 電子スチルカメラおよびサムネイル画像と記録画像の整合性自動メンテナンス方法
JP2002354309A (ja) デジタルカメラ連携システムおよび画像データ処理プログラムを記録した記録媒体
JP4054629B2 (ja) 画像変換サーバ、画像データ処理方法、記憶媒体、プログラム
JP5089353B2 (ja) プログラム、ファイル管理装置及びファイル管理方法
JP2005277669A (ja) ファイル処理装置、及び電子カメラ装置
JP2005010950A (ja) ファイル管理装置、ファイル管理方法、プログラム及び記録媒体
CN1726475A (zh) 文件管理程序
JP2005326908A (ja) 画像データ処理方法、画像処理装置、画像処理プログラム、画像データ管理方法、および画像管理システム
CN1627795A (zh) 图像记录装置
JP2005159902A (ja) 画像管理装置及び画像管理方法
JP2005092756A (ja) 情報記録装置及び情報記録方法並びに記録プログラム
JP2008085683A (ja) 静止画ファイル記録編集装置

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070914

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070914

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20070914

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100723

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100917

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101015