JP2010010809A - 画像ファイル編集装置、画像ファイル編集方法、プログラム - Google Patents

画像ファイル編集装置、画像ファイル編集方法、プログラム Download PDF

Info

Publication number
JP2010010809A
JP2010010809A JP2008164811A JP2008164811A JP2010010809A JP 2010010809 A JP2010010809 A JP 2010010809A JP 2008164811 A JP2008164811 A JP 2008164811A JP 2008164811 A JP2008164811 A JP 2008164811A JP 2010010809 A JP2010010809 A JP 2010010809A
Authority
JP
Japan
Prior art keywords
image
file
jpeg
image file
recorded
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
JP2008164811A
Other languages
English (en)
Inventor
Manabu Ichikawa
学 市川
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.)
Olympus Imaging Corp
Original Assignee
Olympus Imaging Corp
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 Olympus Imaging Corp filed Critical Olympus Imaging Corp
Priority to JP2008164811A priority Critical patent/JP2010010809A/ja
Publication of JP2010010809A publication Critical patent/JP2010010809A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Television Signal Processing For Recording (AREA)

Abstract

【課題】複数の画像ファイルから1つのマルチ画像ファイルを作成する処理を少ない空き容量の記録媒体でも高速に行い得る画像ファイル編集装置等を提供する。
【解決手段】ファイルをクラスタ単位で記録するファイルシステムにおいて、複数の画像ファイルの各々に含まれる画像データが記録されているクラスタを全て含むようにファイルアロケーションテーブルにおけるマルチ画像ファイルに関するクラスタチェーンを作成し(S1102)、マルチ画像ファイルのファイル名とクラスタチェーンにおける先頭クラスタの番号とを含むディレクトリエントリを作成して、ファイルアロケーションテーブルとディレクトリエントリとを記録媒体に記録する(S1105)ことにより画像データのコピーや移動を行うことなく複数の画像ファイルを統合して1つのマルチ画像ファイルを構成する画像ファイル編集装置。
【選択図】図11

Description

本発明は、複数の画像ファイルから複数の画像データを含むマルチ画像ファイルを生成する画像ファイル編集装置、画像ファイル編集方法、プログラムに関する。
現在市販されているデジタルカメラにおいて、画像を記録する主な手法となっているのは、撮影した画像データをJPEG方式で圧縮してJPEG画像データを作成し、Exif形式に則した形式の情報から構成されるJPEGヘッダを付加し、拡張子を「JPG」としたJPEGファイルとして記録する手法である。このJPEGファイルは、1つのファイル内に1つの画像(ただし、サムネイル画像を除く)のみを格納する規格のものとなっている。
これに対して例えば特開2005−252754号公報には、JPEGファイルの規格を拡張して、1つのファイル内に複数のJPEG画像データを格納することができるようにする技術が記載されている。該公報に記載の技術により複数のJPEG画像データをまとめて1つのファイルに格納する場合には、格納元の画像データの圧縮方式も格納先の画像データの圧縮方式も何れも同じJPEGであるために、格納元の個別のファイルとして記録されているJPEGファイル内のJPEG画像データを、圧縮方式を変更することなく格納先においてもそのまま格納することが可能である。
ところで、複数のファイルから、これら複数のファイルをまとめた1つのファイルを作成する場合には、一般に、個別のファイルの内容をコピーして1つのファイルを作成することが行われる(そして、元ファイルが不要である場合には、削除される)。従って、元ファイルがJPEGファイルである場合にも、一般には、個別のJPEGファイルにおけるJPEG画像データをそれぞれコピーして、複数のJPEG画像データが格納されたマルチ画像ファイルを作成し、マルチ画像ファイルを作成した後でJPEGファイルを削除する手法がとられると考えられる。
特開2005−252754号公報
しかしながら、上述したようなマルチ画像ファイルの作成方法では、全てのJPEG画像データの読み込みと書き込みとが発生することになるが、JPEG画像データは比較的データサイズが大きいために、処理に時間を要することになる。特に、データを記録する記録媒体のアクセス速度が遅い場合や、大量のJPEGファイルを1つのマルチ画像ファイルにまとめる場合などにおいては、処理時間が非常に長くなってしまうことになる。また、上述したようなマルチ画像ファイルの作成方法では、1つのファイルにまとめようとしている複数のJPEGファイルの合計サイズと同等以上のサイズの空き領域が記録媒体になければ、処理を行うことができないという課題もある。
本発明は上記事情に鑑みてなされたものであり、複数の画像ファイルを統合して1つのマルチ画像ファイルを作成する処理を、空き領域がマルチ画像ファイルのデータサイズよりも少ない記録媒体においても高速に行うことができる画像ファイル編集装置、画像ファイル編集方法、プログラムを提供することを目的としている。
上記の目的を達成するために、本発明の第1の態様による画像ファイル編集装置は、所定サイズの記録単位であるクラスタに分割して記録されていて、各々が画像データを含む複数の画像ファイルから、該複数の画像ファイルの各画像データを含む1つのマルチ画像ファイルを生成する画像ファイル編集装置であって、上記マルチ画像ファイルを生成する元となる上記複数の画像ファイルが記録されている上記クラスタの内の、少なくとも上記画像データが記録されているクラスタの全てを含むように、クラスタのつながり順序を示すファイルアロケーションテーブルを作成するファイルアロケーションテーブル作成部と、上記マルチ画像ファイルのファイル名と、上記ファイルアロケーションテーブルにおける該マルチ画像ファイルに関するクラスタチェーンの先頭クラスタを示す情報と、を含むディレクトリエントリを作成するディレクトリエントリ作成部と、上記ファイルアロケーションテーブルと上記ディレクトリエントリとを記録することにより上記マルチ画像ファイルを構成する画像情報記録部と、を具備したものである。
また、本発明の第2の態様による画像ファイル編集方法は、所定サイズの記録単位であるクラスタに分割して記録されていて、各々が画像データを含む複数の画像ファイルから、該複数の画像ファイルの各画像データを含む1つのマルチ画像ファイルを生成する画像ファイル編集方法であって、上記マルチ画像ファイルを生成する元となる上記複数の画像ファイルが記録されている上記クラスタの内の、少なくとも上記画像データが記録されているクラスタの全てを含むクラスタのつながり順序を示すファイルアロケーションテーブルと、上記マルチ画像ファイルのファイル名と上記ファイルアロケーションテーブルにおける該マルチ画像ファイルに関するクラスタチェーンの先頭クラスタを示す情報とを含むディレクトリエントリと、を作成するステップと、上記ファイルアロケーションテーブルと上記ディレクトリエントリとを記録することにより上記マルチ画像ファイルを構成するステップと、を含む方法である。
さらに、本発明の第3の態様によるプログラムは、所定サイズの記録単位であるクラスタに分割して記録されていて、各々が画像データを含む複数の画像ファイルから、該複数の画像ファイルの各画像データを含む1つのマルチ画像ファイルを生成する処理をコンピュータに実行させるためのプログラムであって、上記マルチ画像ファイルを生成する元となる上記複数の画像ファイルが記録されている上記クラスタの内の、少なくとも上記画像データが記録されているクラスタの全てを含むクラスタのつながり順序を示すファイルアロケーションテーブルと、上記マルチ画像ファイルのファイル名と上記ファイルアロケーションテーブルにおける該マルチ画像ファイルに関するクラスタチェーンの先頭クラスタを示す情報とを含むディレクトリエントリと、を作成するステップと、上記ファイルアロケーションテーブルと上記ディレクトリエントリとを記録することにより上記マルチ画像ファイルを構成するステップと、をコンピュータに実行させるためのプログラムである。
本発明の画像ファイル編集装置、画像ファイル編集方法、プログラムによれば、複数の画像ファイルを統合して1つのマルチ画像ファイルを作成する処理を、空き領域がマルチ画像ファイルのデータサイズよりも少ない記録媒体においても高速に行うことが可能となる。
実施形態を説明するに当たって、まず、本明細書において使用される用語の幾つかについて説明する。
画像データは、任意の1つの画像に関するデータである。JPEG画像データは、画像データをJPEG圧縮したデータである。JPEGヘッダは、JPEGファイルを構成するためにJPEG画像データに付加されるヘッダである。JPEGファイルは、1つのJPEG画像データと、このJPEG画像データに対応するJPEGヘッダと、を含むファイルである。マルチ画像ファイルは、複数のJPEGファイルのデータを含む構成のファイルである。主画像は、マルチ画像ファイルに含まれる複数の画像を代表する1つの画像である。この主画像は、JPEG画像データとJPEGヘッダとを1つずつ含んでいる。そして、主画像ヘッダは、マルチ画像ファイル内の最初の位置に配置されていて、主画像のJPEG画像データも、基本的にはマルチ画像ファイル内の主画像ヘッダに続く位置に配置されている。副画像は、マルチ画像ファイルに含まれる複数の画像の内の、主画像以外の画像である。この副画像は、JPEG画像データとJPEGヘッダとを1つずつ含んでいる。
以下、図面を参照して本発明の実施の形態を説明する。
[実施形態1]
図1から図11は本発明の実施形態1を示したものであり、図1は画像ファイル編集装置の一例としてのデジタルスチルカメラの構成を示すブロック図である。
このデジタルスチルカメラ(以後、単にデジタルカメラなどという)は、図1に示すように、カメラ本体100と、レンズ101と、を備えて構成されている。
カメラ本体100は、撮像素子102と、アナログ処理部103と、アナログ/デジタル(A/D)変換部104と、バス105と、SDRAM106と、画像処理部107と、AE処理部108と、AF処理部109と、JPEG処理部110と、メモリインタフェース(I/F)111と、記録媒体112と、LCDドライバ113と、LCD114と、マイクロコンピュータ115と、操作部116と、フラッシュメモリ117と、を備えている。
レンズ101は、被写体の光学像を撮像素子102に集光させる光学系である。また、このレンズ101から撮像素子102に至る光路上には、図示しない絞り機構およびメカニカルシャッタ機構が設けられている。絞り機構は、マイクロコンピュータ115からの指示に応じて駆動され、レンズ101により撮像素子102上に結像される被写体の光学像の光量を調節するものである。また、メカニカルシャッタ機構は、マイクロコンピュータ115からの指示に応じて撮影時に駆動され、レンズ101から撮像素子102に到達する光学像の到達時間、すなわち撮像素子102の露光時間を制御するものである。
撮像素子102は、画素を構成するフォトダイオードの前面にベイヤー配列のカラーフィルタが配置された撮像素子である。ベイヤー配列のRGBカラーフィルタは、水平方向にR画素とG(Gr)画素とが交互に配置されたラインと、水平方向にG(Gb)画素とB画素とが交互に配置されたラインと、を有し、さらにこれら2つのラインを垂直方向にも交互に配置することにより構成されている(なお、R画素に垂直方向に隣接するのがGb画素、B画素に垂直方向に隣接するのがGr画素となる)。この撮像素子102は、レンズ101により集光された光を、画素を構成するフォトダイオードで受光して光電変換することにより、光の量を電荷量としてアナログ処理部103へ出力する。なお、撮像素子102はCMOS方式でもCCD方式でも良いし、その他の方式であっても構わない。
アナログ処理部103は、撮像素子102から読み出された電気信号(アナログ画像信号)に対して、リセットノイズ等を低減した上で波形整形を行い、さらに目的の明るさとなるようゲインアップを行う。
A/D変換部104は、アナログ処理部103から出力されるアナログ画像信号をデジタル画像信号(以降、画像データという)に変換する。
バス105は、デジタルカメラ内のある部分で発生した各種データを、デジタルカメラ内の他の部分へ転送するための転送路である。このバス105には、A/D変換部104と、SDRAM106と、画像処理部107と、AE処理部108と、AF処理部109と、JPEG処理部110と、メモリI/F111と、LCDドライバ113と、マイクロコンピュータ115と、が接続されている。
A/D変換部104により得られた画像データは、バス105を介して、SDRAM106に一旦記憶される。
SDRAM106は、A/D変換部104において得られた画像データや、画像処理部107において処理された画像データ、あるいはJPEG処理部110において処理された画像データ等の各種データが一時的に記憶される記憶部である。また、このSDRAM106は、マイクロコンピュータ115による作業用のメモリとしても用いられる。
画像処理部107は、SDRAM106に記憶されている画像データに対して、各種の画像処理を行うものである。この画像処理部107は、図示はしないが機能部として、ホワイトバランス補正処理を行うホワイトバランス補正部、同時化処理を行う同時化部、色変換処理を行う色変換処理部、色再現処理を行う色再現処理部、ノイズ低減処理を行うノイズ低減処理部等を含んでいる。ここに、同時化処理は、1画素当たりに1つの色成分のみが得られているベイヤー配列の画像データから、1画素当たりにRGBの3つの色成分の全てが揃っている画像データ(RGB画像データ)へ変換する処理(欠落色成分の補間処理)である。こうして、画像処理部107により画像処理して得られたRGB画像データは、SDRAM106に再び記憶される。
AE処理部108は、A/D変換部104から得られた画像データを用いて、被写体輝度を算出する。なお、AE処理部108が被写体輝度を算出するために用いるデータとしては、撮像素子102から得られたデータに限るものではなく、別途に専用の測光センサを設けた場合にはこの測光センサの出力データであっても構わない。
AF処理部109は、A/D変換部104から得られた画像データから、高周波成分の信号を取り出して、AF(オートフォーカス:Auto Focus)積算処理を行うことにより合焦評価値を取得する。なお、AF処理部109が合焦評価値を算出するために用いるデータとしては、撮像素子102から得られたデータに限るものではなく、別途に専用のAFセンサを設けた場合にはこのAFセンサの出力データであっても構わない。
JPEG処理部110は、画像データを記録するときには、SDRAM106からRGB画像データを読み出して、読み出した画像データをJPEG圧縮方式に従って圧縮する。このJPEG処理部110により圧縮された画像データは、SDRAM106に一旦記憶される。さらに、JPEG処理部110は、JPEGヘッダに格納される量子化テーブルやハフマンテーブル等の情報も出力して、SDRAM106に一旦記憶させる。なお、このJPEG処理部110は、後述するように、記録媒体112から読み出されたJPEG圧縮された画像データを伸張する処理も行う。
メモリI/F111は、画像データを含む各種データの記録媒体112への記録や、記録媒体112からの各種データの読み出しを行うものである。
記録媒体112は、例えばカメラ本体100に着脱可能なメモリカードなどとして構成される記録媒体であるが、この例に限定されるものではない。
LCDドライバ113は、LCD114に画像を表示させる制御を行うものである。ここに、LCDドライバ113により表示される画像の例としては、撮像素子102により撮像されて画像処理部107により処理された画像データ、記録媒体112に既に記録されているJPEG画像データ、などが挙げられる。ここに、記録媒体112に記録されている画像ファイルを再生する場合には、まず、記録媒体112に記録されている画像ファイル内のJPEG画像データをメモリI/F111を介して読み出して、SDRAM106に一旦記憶する。次に、このJPEG画像データをJPEG処理部110により伸張処理して、伸張した画像データを再びSDRAM106に記憶させる。LCDドライバ113は、この伸張された画像データをSDRAM106から読み出して、読み出した画像データを映像信号へ変換してからLCD114へ出力し、画像の表示を行わせる。
マイクロコンピュータ115は、制御部としての機能を備えており、カメラ本体100の各種シーケンスを統括的に制御するものである。このマイクロコンピュータ115は、JPEGヘッダを作成し、さらにJPEG画像データと統合して画像ファイルを作成する処理も行い、ファイルアロケーションテーブル作成部、ディレクトリエントリ作成部、画像情報記録部を兼ねたものとなっている。すなわち、マイクロコンピュータ115は、撮影時に得られた各種のデータや、JPEG処理部110から出力されてSDRAM106に記憶されている量子化テーブルおよびハフマンテーブル等に、さらにファイル形式に従った情報を付加して、JPEG画像データを管理するためのJPEGヘッダを作成する。ここで作成されたJPEGヘッダは、SDRAM106に一旦記憶される。さらに、マイクロコンピュータ115は、SDRAM106に記憶されているJPEGヘッダとJPEG画像データとを読み出して、メモリI/F111を介して記録媒体112に画像ファイルとして記録させる。なお、後で詳しく説明するように、本実施形態においては、1つの画像ファイル内に、JPEGヘッダとJPEG画像データとでなる組を複数組を記録することも可能となっている。このような複数組のJPEGヘッダおよびJPEG画像データを構成要素として含む画像ファイルを、上述したように、マルチ画像ファイルと呼ぶことにする。
また、このマイクロコンピュータ115には、操作部116とフラッシュメモリ117とが接続されている。
操作部116は、デジタルカメラの電源をオン/オフする指示入力を行うための電源ボタン、撮影の指示入力を行うための2段式の押圧ボタンでなるレリーズボタン、各種キー入力デバイス等を含んで構成されている。ここに、レリーズボタンは、半押しによってオンする1stレリーズスイッチと、全押しによってオンする2ndレリーズスイッチと、を備えて構成されている。
フラッシュメモリ117は、ホワイトバランス補正値やローパスフィルタ係数等のデジタルカメラの動作に必要な各種パラメータや、デジタルカメラを特定するための製造番号などを不揮発に記憶するとともに、マイクロコンピュータ115により実行される処理プログラムを不揮発に記憶する記録媒体である。
そして、ユーザにより操作部116が操作されると、マイクロコンピュータ115は、フラッシュメモリ117に記憶されている処理プログラムに従って、ユーザからの操作に応じた各種のシーケンスを実行するために必要なパラメータをフラッシュメモリ117から読み込んで、その各種シーケンスを実行し、カメラ本体100内の各部に対して必要な命令を発行するようになっている。例えば、電源ボタンが押されると、マイクロコンピュータ115は、このデジタルカメラの電源をオンまたはオフする。また例えば、レリーズボタンが半押しされて1stレリーズスイッチがオンされると、マイクロコンピュータ115は、AE処理部108にAE処理を行わせると共に、AF処理部109にAF処理を行わせる等の撮影準備シーケンスを実行する。さらに例えば、レリーズボタンが全押しされて2ndレリーズスイッチがオンされると、マイクロコンピュータ115は、撮影シーケンスを実行して撮影を行う。
次に、図2は、デジタルカメラにおける画像ファイル記録時の処理を示すフローチャートである。この図2においては、特に、JPEGファイルを記録するときの処理を示している。
JPEGファイルを記録するのに先立って、マイクロコンピュータ115は、一連の撮影シーケンスに基づき撮影を行う(ステップS201)。このステップS201における撮影の処理は、通常のデジタルカメラにおいて行われている撮影の処理と基本的に同様であるために、ここでは簡単に説明する。
すなわち、ステップS201において、ユーザによって操作部116のレリーズボタンが半押しされると、マイクロコンピュータ115は、AF処理およびAE処理を実行する。AF処理において、マイクロコンピュータ115は、撮像素子102から取り込まれた画像データに基づいてAF処理部109により算出される合焦評価値から、撮像素子102に集光される被写体の像が最も鮮明になるようにレンズ101のフォーカスを調整する。また、AE処理において、マイクロコンピュータ115は、撮像素子102から取り込まれた画像データに基づいてAE処理部108により算出される被写体輝度と、予めフラッシュメモリ117に記憶されている絞り値・シャッタ速度決定テーブルとに基づき、絞り値とシャッタ速度とを算出する。AF処理およびAE処理が行われた後に、ユーザによりレリーズボタンが全押しされると、マイクロコンピュータ115は、算出した絞り値に基づき図示しない絞り機構を制御すると共に、算出したシャッタ速度に基づき図示しないメカニカルシャッタ機構を制御して、撮影を行う。
撮影が行われた後に、マイクロコンピュータ115は、撮像素子102から取り込まれた画像データを画像処理部107およびJPEG処理部110により処理させ、JPEG画像データを作成させてSDRAM106に記憶させると共に、JPEGヘッダ作成に必要な情報(上述した量子化テーブル等)を取得する。そして、マイクロコンピュータ115は、取得した情報に基づきExif規格に準拠したJPEGヘッダを作成して、作成したJPEGヘッダをSDRAM106に記憶させる(ステップS202)。
次に、マイクロコンピュータ115は、ステップS202において作成されたJPEG画像データとJPEGヘッダとを用いて、後述するExif規格に準拠したJPEGファイルを作成する(ステップS203)。
さらに、マイクロコンピュータ115は、メモリI/F111を制御して、ステップS203において作成したJPEGファイルを記録媒体112へ記録させる(ステップS204)。
図3は、図2のステップS203において作成する、JPEGファイルのファイルフォーマットの例を示す図である。
この図3に示すファイルフォーマットにおいては、ファイルのデータは、SOI(Start Of Image)を始端とし、EOI(End Of Image)を終端とする。そして、SOIとEOIとの間には、画像データに関する情報がExif規格に準拠した形式で記録されたJPEGヘッダと、JPEG画像データと、が順次記録される。ここで、画像データに関する情報とは、画像の幅や高さ、JPEG画像データの形式、JPEGファイルにおけるJPEGヘッダの先頭からJPEG画像データへのオフセット情報、サムネイル画像、上述した量子化テーブルやハフマンテーブルなどである。
図4は、記録媒体112に構成されている、ファイルやファイルに記録されるデータを管理するためのファイルシステムの概要を示す図である。
図4に示すファイルシステムにおいては、記録媒体112の記録領域を、クラスタと呼ばれる一定サイズの記録単位(ファイルシステムにおける最小の記録単位)に分割して管理を行うようになっている。従って、クラスタよりも小さいサイズのデータを記録媒体112に記録する場合であっても、必ず1つのクラスタが使用されることになる。なお、以下の説明においては、1つのクラスタのデータサイズをクラスタサイズと呼ぶ。また、記録媒体112に構成されるそれぞれのクラスタには、1から始まる番号が順に付されて、管理されるようになっている。
さらに、記録媒体112は、図4に示すように、ファイルアロケーションテーブル(以下、FATという)記録領域と、ディレクトリエントリ記録領域と、データ記録領域と、を有するように構成されていて、各領域は1つ以上のクラスタ(通常は複数のクラスタ)により構成されている。
まず、FAT記録領域は、FATを記録する領域である。このFATは、記録媒体112の総クラスタ数と同じ数の要素のそれぞれに整数を記録することができるように構成されたテーブルであり、このテーブルにおける各要素の位置を示す番号(以下、インデックスという)とクラスタの番号とが一致している。すなわち、FATにおけるインデックスがnの要素は、クラスタ番号nに関する情報を保持している。テーブルの要素に記録される整数は、対応するクラスタが未使用である場合には「0」、使用されている場合には0以外の数が記録される。
さらに、テーブルの要素に記録されている整数が0以外の数であって、かつ、1以上の数である場合には、その数が、このインデックスに該当するクラスタに記録されているファイルのデータの続きが記録されているクラスタの番号を指し示している。
また、テーブルの要素に記録されている整数が「−1」である場合には、このクラスタにおいてファイルのデータが終端することを示している。
従って、FATにおいて、ファイルの開始を示すある要素から順次要素を参照していくことを、要素に記録されている整数が−1になるまで行うことにより、ファイルを構成するクラスタのつながり順序を示すクラスタチェーンを参照することができる。
次に、ディレクトリエントリ記録領域は、ディレクトリエントリを記録するための領域である。このディレクトリエントリ記録領域には、1つ以上の(通常は、複数の)ディレクトリエントリが記録される。ここに、1つのディレクトリエントリには、1つのファイルに関する情報が記録されるようになっている。このディレクトリエントリに記録される情報としては、ファイル名、データサイズ(ファイルサイズ)、ファイルを構成するデータが記録されている先頭のクラスタ番号などがある。
また、データ記録領域は、ファイルを構成するデータを記録するための領域である。
上述したように、ファイルを構成するデータがクラスタサイズ以下である場合には、データ記録領域内の1つのクラスタを使用してファイルのデータが記録される。一方、ファイルを構成するデータがクラスタサイズより大きい場合には、データ記録領域内の複数のクラスタを使用してファイルのデータが記録される。
例えば、図4に示すように、「Sample.jpg」というファイル名のJPEGファイルが存在して、このJPEGファイルのファイルサイズがS、データ記録領域においてこのJPEGファイルの記録が開始されている先頭クラスタがCであるものとする。このときには、このJPEGファイルに対応するディレクトリエントリには、ファイル名として「Sample.jpg」が、サイズ情報として画像ファイル全体のデータサイズであるSが、先頭のクラスタ番号としてCが、それぞれ記録される。なお、FATのさらなる詳細については、後で説明する。
次に、図5は、図4に示すようなファイルシステムにおいて、ファイルを記録媒体112に書き込むときの処理を示すフローチャートである。この図5においては、ファイルのデータサイズがLである場合を例に挙げて説明する。
この処理を開始すると、マイクロコンピュータ115は、まず最初に、記録するファイルのデータサイズLを取得して、取得したデータサイズLを変数Rへ代入する(ステップS501)。
次に、マイクロコンピュータ115は、FATを参照して要素の値が0であるインデックス、すなわち空きクラスタに対応したインデックスを検索する。ここで、要素の値が0であるインデックスを発見した場合には、そのインデックスを変数Cnへ代入する(ステップS502)。
続いて、マイクロコンピュータ115は、書き込みサイズを算出する(ステップS503)。この処理においては、変数Rの値とクラスタサイズとを比較して、大きくない方(等しくない場合には、何れか小さい方)を書き込みサイズとする。
書き込みサイズを算出した後に、マイクロコンピュータ115は、変数Cnが示すクラスタへ、ステップS503において算出した書き込みサイズ分だけのデータを記録する(ステップS504)。
その後に、マイクロコンピュータ115は、変数RからステップS503で算出した書き込みサイズを減算する(ステップS505)。この減算により得られる値は、まだ書き込みが終了していないデータのデータサイズを示すものとなる。
次に、マイクロコンピュータ115は、変数Rの値が0より大きいか否かを判定する(ステップS506)。
ここで、変数Rの値が0より大きいと判定した場合には、書き込むデータがまだ残っていることになる。このときには、マイクロコンピュータ115は、ステップS502の処理と同様に、FATからインデックスCn以外で且つ値が0の要素を有するインデックス、すなわちステップS504においてデータを記録した空きクラスタとは別の空きクラスタを検索する。そして、検索したインデックスを、FATにおけるインデックスCnの要素へ記録した後に変数Cnへ代入する(ステップS507)。さらに、マイクロコンピュータ115は、ステップS503へ戻って上述したような処理を再び実行する。
一方、ステップS506において、変数Rの値が0以下であると判定された場合には、書き込むデータが残っていないことになる。この場合には、マイクロコンピュータ115は、FATにおけるインデックスCnの要素に、ファイルの終端のデータが記録されているクラスタであることを示す「−1」を記録する(ステップS508)。
次に、マイクロコンピュータ115は、ファイル名を取得する(ステップS509)。このファイル名の取得は、撮影日時や撮影順等に基づく自動的なファイル名の付与、あるいは操作部116を介したユーザからのファイル名の入力、等に基づき行われる。
ファイル名を取得した後に、マイクロコンピュータ115は、取得したファイル名と、ステップS501において取得したデータサイズLと、ステップS502において検索したインデックス、すなわちファイルの先頭のデータが記録されているクラスタを示す番号とを、記録したファイルに対応するディレクトリエントリとしてディレクトリエントリ記録領域へ記録する(ステップS510)。
その後に、マイクロコンピュータ115は、この図5に示す処理を終了する。
次に、図6は、JPEGファイルを構成するデータとこのデータが記録される各クラスタとの関係を示す図、図7は、図6に示すクラスタ構成に該当するFATのデータを示す図である。これら図6および図7においては、図5に示したような処理に従って、JPEG1からJPEG4までの4つのJPEGファイルを記録した場合の例を示している。
図6に示すように、JPEGファイルを構成するデータは、データ記録領域内の1つ以上のクラスタ(通常は、複数のクラスタ)を使用して記録される。ここで、データの記録は、必ずしも連続したクラスタを使用して行われるものとは限らない。例えば、連続したクラスタが既に他のデータの記録に使用されている場合には、別の未使用となっているクラスタが記録に使用されることになる。
この図6に示す例においては、JPEG1のファイルの先頭データはクラスタmに記録され、続くデータはクラスタm+1に記録される。この場合に、FATのインデックスmの要素には、図7に示すように、クラスタmに続いてデータが記録されるクラスタの番号であるm+1が記録される。そして、図示の例では、JPEG1のファイルの終端は、クラスタm+7の途中に記録される。つまり、JPEG1のデータはクラスタm+7で終わるために、FATのインデックスm+7には終端を示す整数「−1」が記録される。
また、図6におけるJPEG2のファイルの記録例は、クラスタm+9の後に連続してデータを記録することができず、クラスタm+9に記録されているデータに続くデータを、クラスタm+9とは連続していないクラスタnに記録した例となっている。この場合には、FATのインデックスm+9の要素には整数「n」が記録される。
ここで、図6に示すようにして、クラスタにデータを記録した場合には、ディレクトリエントリ記録領域におけるJPEG1からJPEG4までの4つのJPEGファイルに対応するファイルのディレクトリエントリには、m、m+8、n+5、pがそれぞれ記録される。
次に、図8は、図4に示すようなファイルシステムを用いて記録されたファイルからデータを読み込むときの処理を示すフローチャートである。
最初に、マイクロコンピュータ115は、読み込むファイルのファイル名を取得する(ステップS801)。
そして、マイクロコンピュータ115は、ディレクトリエントリ記録領域に記録されているディレクトリエントリの中から、ファイル名がステップS801において取得したファイル名と一致するディレクトリエントリを検索する(ステップS802)。
その後に、マイクロコンピュータ115は、取得したファイル名に対応したディレクトリエントリが見つかったか否かを判定する(ステップS803)。このステップS803の判定において、取得したファイル名に対応するディレクトリエントリが見つからなかった場合には、マイクロコンピュータ115は、この図8に示す処理を終了させる。この場合には、データの読み込みが失敗したことになる。なお、処理を終了する前、または処理を終了した後に、例えばエラーメッセージ等を表示するなどして、データの読み込みが失敗した旨をユーザに通知するようにしても良い。
一方、ステップS803の判定において、取得したファイル名に対応するディレクトリエントリが見つかった場合には、マイクロコンピュータ115は、そのディレクトリエントリを参照して、読み込むファイルのファイルサイズを読み取り、読み取ったファイルサイズを変数Rへ代入する(ステップS804)。
さらに、マイクロコンピュータ115は、ステップS802の検索により発見されたディレクトリエントリから、読み取るファイルの先頭データが記録されているクラスタの番号を取得して、その値を変数Cnへ代入する(ステップS805)。
次に、マイクロコンピュータ115は、変数Cnの値が0より大きいか否かを判定する(ステップS806)。上述したように、記録媒体112に構成されているクラスタには1から始まる番号がつけられている。従って、先頭データが記録されているクラスタの番号が代入されている変数Cnの値(初回の変数Cnの値)が0以下となることはあり得ない。このステップS805の判定において、変数Cnの値が0以下である場合には、何等かのエラーが発生していると判定して、マイクロコンピュータ115は、この図8に示す処理を終了させる。なお、この図8に示す処理を終了させる前、または終了させた後に、エラーが発生した旨をユーザに通知するようにしても良いことは上述と同様である。また、2回目以後のこのステップS805の判定においても、変数Cnの値が−1となる場合があり得る。この場合にも同様にして、この図8に示す処理を終了させる。
また、ステップS806の判定において、変数Cnの値が0より大きい場合には、マイクロコンピュータ115は、読み込みサイズを算出する(ステップS807)。ここでは、変数Rの値とクラスタサイズとを比較して、大きくない方(等しくない場合には、何れか小さい方)を読み込みサイズとする。
次に、マイクロコンピュータ115は、変数Cnによって示されるクラスタからステップS807で算出した読み込みサイズ分のデータを読み込む(ステップS808)。
さらに、マイクロコンピュータ115は、変数Rから読み込みサイズの値を減算する(ステップS809)。
そして、マイクロコンピュータ115は、変数Rの値が0より大きいか否かを判定する(ステップS810)。
このステップS810の判定において、変数Rの値が0よりも大きい場合には、まだデータの読み込みが終了していない。従って、マイクロコンピュータ115は、FATからインデックスCnの要素の値を読み取り、読み取った値を変数Cnへ代入する(ステップS811)。その後に、マイクロコンピュータ115は、ステップS806へ戻って上述したような処理を再び行う。
一方、ステップS810の判定において、変数Rの値が0以下となった場合には、データの読み込みが終了したとして、マイクロコンピュータ115は、図8に示す処理を終了させる。
図9は、マルチ画像ファイルのファイルフォーマットの例を示す図である。
この図9に示すファイルフォーマットにおいては、マルチ画像ファイルの最初に記録される画像を主画像と呼び、主画像の後に記録される画像を副画像と呼ぶ。マルチ画像ファイルに記録される主画像と副画像とは、何れも、図3に示すJPEGファイルのファイルフォーマットと同様に、SOI(Start Of Image)を始端とし、EOI(End Of Image)を終端とする。そして、SOIとEOIとの間には、画像データに関する情報がExif規格に準拠した形式で記録されたJPEGヘッダと、JPEG画像データと、が順次記録される。すなわち、マルチ画像ファイルは、JPEGファイルの集合と考えることもできる。
また、図9に示すフォーマットにおいては、主画像のJPEGヘッダに、同一のマルチ画像ファイル内に記録されている各副画像に対するオフセット情報をさらに記録する。副画像位置情報としてのオフセット情報は、例えば、主画像中のある基準位置(例えば先頭位置)から各副画像のSOIまでの距離(後述する図11のステップS1103において説明するように、例えばバイト数を単位とした、クラスタチェーンに沿った距離)を示す情報である。このオフセット情報の記録されている数が、マルチ画像ファイルに記録されている副画像の数となる。このようなオフセット情報を主画像のJPEGヘッダに記録しておくことにより、任意の副画像へアクセスすることが可能となっている。
ここで、オフセット情報を適切に設定することにより、マルチ画像ファイルにおいて、主画像と副画像との間に任意の空白領域を設けたり、あるいは副画像と副画像との間に任意の空白領域を設けたりすることもできる。
次に、図10は図7に示したようなFATを備える図6に示したようなJPEGファイルを結合して作成されるマルチ画像ファイルのFAT構成を示す図、図11はマルチ画像ファイルを作成する処理を示すフローチャートである。なお、図11に示す処理は、図2に示したような処理に従って記録された図3に示したようなJPEGファイルから、図9に示したようなマルチ画像ファイルを作成するときの処理を示したものである。
図11に示す処理を開始すると、マイクロコンピュータ115は、まず最初に、JPEG処理部110やLCDドライバ113などを制御することにより、記録媒体112に記録されているJPEGファイルの画像をLCD114に表示する。そして、表示されている画像を見ながらユーザが操作部116を操作することにより、マルチ画像ファイルに格納しようとするJPEGファイルを選択する(ステップS1101)。ここでは、一例として、最初に選択したJPEGファイルを主画像とし、その後に選択された他のJPEGファイルを副画像として、選択した順にマルチ画像ファイル内に格納するものとする。
次に、マイクロコンピュータ115は、ステップS1101において選択したJPEGファイルが1つのマルチ画像ファイルになるようにFATを修正する(ステップS1102)。
ここで、上述したように、マルチ画像ファイルにおける主画像のJPEGヘッダには各副画像に対するオフセット情報が含まれることになるために、主画像にしようとする元のJPEGファイルにおけるJPEGヘッダのデータサイズよりも、マルチ画像ファイル化されたときの主画像のJPEGヘッダサイズの方が大きくなる。
そこで、主画像と対応するJPEGファイルのJPEGヘッダサイズと、主画像のJPEGヘッダサイズとの差分をΔ、追加するクラスタ数をn、クラスタサイズをcとしたときに、
c×n≧Δ
を満たす最小のnを求めて、主画像とするJPEGファイルのクラスタチェーンの先頭にn個の空きクラスタを追加する。
クラスタを追加する場合には、追加するクラスタ番号が例えばkおよびk+1であった場合に、FATにおけるインデックスkの要素としてk+1を、インデックスk+1の要素として主画像に対応するJPEGファイルの先頭クラスタ番号(図6、図7、および図10に示す例においてはm)を記録することにより、主画像とするJPEGファイルの先頭にクラスタkおよびk+1を追加することができる。同様の処理を行えば、より多くの数のクラスタを先頭に追加することができる。
そして、主画像とするJPEGファイルのクラスタチェーンの末尾に、ステップS1101において2番目に選択されたJPEGファイルのクラスタチェーンがつながるように、FATの要素を変更する。図6、図7、および図10に示す例においては、要素の値「−1」が格納されていたインデックスm+7に、2番目のJPEGファイルの先頭クラスタ番号であるm+8を格納する。同様にして、ステップS1101において選択された全てのJPEGファイルのクラスタチェーンが順次つながるように、FATの要素を変更する。このようにして変更されたFATの様子を示すのが図10である。
次に、マイクロコンピュータ115は、主画像の先頭からの各副画像に対するオフセットを算出する(ステップS1103)。ステップS1101において選択された全てのJPEGファイルのデータは、各JPEGファイルに対応するディレクトリエントリにおける先頭クラスタ番号から記録されている。従って、各副画像に対するマルチ画像ファイルの先頭からのオフセットの算出は、ステップS1102において作成したマルチ画像ファイルに対応するクラスタチェーンを先頭から順次スキャンしながら、その先頭クラスタ番号直前までのクラスタ数をカウントして、そのカウント値にクラスタサイズを乗算することにより行うことができる。
そして、マイクロコンピュータ115は、主画像のJPEGヘッダを作成して記録する(ステップS1104)。ここでは、マイクロコンピュータ115は、主画像に対応するJPEGファイルのSOIとJPEGヘッダとをSDRAM106に一旦読み込んで、ステップS1103において算出したオフセット値を副画像数分追加する。また、主画像のJPEG画像データの開始位置は、主画像に対応するJPEGファイルにおける開始位置よりも、ステップS1102において追加したクラスタ分だけ後方になるために、マイクロコンピュータ115は、その位置を指し示すように、SDRAM106に読み込んだJPEGヘッダにおけるJPEG画像データへのオフセット情報を修正する。そして、ステップS1102において追加したクラスタにおける先頭クラスタからSOIとJPEGヘッダとが順に記録されるように、SDRAM106に記憶されているJPEGヘッダを記録媒体112に記録する。
最後に、マイクロコンピュータ115は、ディレクトリエントリ記録領域におけるディレクトリエントリの追加と削除とを行う(ステップS1105)。ここでは、作成するマルチ画像ファイルにおける先頭クラスタ、すなわち、ステップS1102において追加したクラスタにおける先頭クラスタ(図10に示す例においてはクラスタ番号k)、マルチ画像ファイル名、およびマルチ画像ファイルの合計データサイズに基づいて、マルチ画像ファイルに対するディレクトリエントリを作成する。ここで、合計データサイズは、作成したマルチ画像ファイルの総クラスタ数、すなわち、ステップS1102で作成したクラスタチェーンの総クラスタ数に、クラスタサイズを乗算したサイズとする。さらに、マイクロコンピュータ115は、ステップS1101において選択したJPEGファイルに対応するディレクトリエントリを全て削除する。
なお、上述においては、マルチ画像ファイルの元となったJPEGファイルのディレクトリエントリを全て削除する例を示したが、これに限るものではなく、JPEGファイルのディレクトリエントリを残しておいても構わない。すなわち、本発明は、同一のJPEG画像データを、マルチ画像ファイル内の画像データとしても参照することができ、かつJPEGファイル内の画像データとしても参照することができるような構成を妨げるものではない。
このような実施形態1によれば、FATの変更と主画像のヘッダ情報の変更とディレクトリエントリ記録領域の変更とを行うが、JPEG画像データ自体はコピーも移動も行うことなく、複数のJPEGファイルを統合して1つのマルチ画像ファイルを作成することができる。このときに変更されるデータの合計サイズは、一般に、JPEG画像データの合計サイズに比べて非常に小さいために、マルチ画像ファイルを極めて高速に作成することが可能となる。さらに、JPEG画像データのコピーを記録媒体に作成することがないために、記録媒体の空き領域がマルチ画像ファイルのデータサイズよりも小容量であっても処理を行うことが可能となる利点がある。
また、上述では、マルチ画像ファイルの元となるJPEGファイルが同一の記録媒体内に全て存在する例を示したが、これに限るものではなく、マルチ画像ファイルの元となるJPEGファイルが少なくとも1つ以上存在する記録媒体であれば、マルチ画像ファイルの作成をより高速化することが可能となる。すなわち、マルチ画像ファイル化しようとする複数のJPEGファイルが幾つかの記録媒体内に分かれて存在していて、これらの内の何れかの記録媒体(以下ではターゲット記録媒体という)にマルチ画像ファイルを作成しようとする場合には、まず、マルチ画像ファイル化しようとする複数のJPEGファイルの内のターゲット記録媒体以外の記録媒体に記録されているJPEGファイルを、全てターゲット記録媒体へコピーまたは移動する。その後に、上述と同様の処理を行えばよい。この場合であっても、ターゲット記録媒体に元々記録されていたJPEGファイルのJPEG画像データはコピーも移動も行われることはないために、処理の高速化を図ることができる。
[実施形態2]
図12から図15は本発明の実施形態2を示したものであり、図12はマルチ画像ファイルのファイルフォーマットの例を示す図である。この実施形態2において、上述の実施形態1と同様である部分については同一の符号を付して説明を省略し、主として異なる点についてのみ説明する。
本実施形態において、画像ファイル編集装置が適用されるデジタルカメラの構成は実施形態1の図1に示したものと同様であり、撮影時における処理は図2に示したものと同様であり、記録されるJPEGファイルの構成は図3に示したものと同様である。
次に、本実施形態におけるマルチ画像ファイルのファイルフォーマットは、図12に示すようになっている。この図12に示すファイルフォーマットは、基本的には実施形態1の図9に示したファイルフォーマットと同様であるが、主画像および副画像のJPEGヘッダに、これら主画像および副画像が含まれるマルチ画像ファイルを識別するための情報(マルチ画像ファイル識別情報)が付加されている点が異なっている。このマルチ画像ファイル識別情報は、マルチ画像ファイル内に含まれるJPEG画像データに基づいて別のJPEGファイルを作成した場合に、このJPEGファイルの作成元となったマルチ画像ファイルを特定することができるようにするための情報である。このマルチ画像ファイル識別情報は、例えば、フラッシュメモリ117に記録されている製造番号やマルチ画像ファイルが生成された日時などを組み合わせることに得られる重複がない番号である。
次に、図13はマルチ画像ファイルを作成する処理を示すフローチャートである。この図13に示す処理は、図2に示したような処理に従って記録された図3に示したようなJPEGファイルから、図12に示すようなマルチ画像ファイルを作成するときの処理を示したものである。なお、この図13において、図11における処理と同様の処理を行う部分については同一の符号を付して説明を省略する。
上述したようなステップS1101の処理が行われた後に、マイクロコンピュータ115は、このステップS1101において選択されたJPEGファイルが1つのマルチ画像ファイルになるようにFATを修正する(ステップS1302)。
ここでは、まず、主画像に対応するJPEGファイルに対して、上述したステップS1102と同様に、クラスタチェーンの先頭にクラスタを追加する処理を行う。このときのヘッダ情報の増加に伴う必要に応じたクラスタの追加は、ステップS1102において説明したのと同様である。
次に、本実施形態においては、副画像のJPEGヘッダに対して、副画像に対応するJPEGファイルのJPEGヘッダには存在しないマルチ画像ファイル識別情報を付加することになる。このために、副画像に対するJPEGヘッダサイズも、増加することになる。そこで、主画像に対して行った処理と同様の処理を行うことにより、副画像に対応するJPEGファイルに対して、クラスタチェーンの先頭に空きクラスタを追加する処理を行う。
そして、主画像とするJPEGファイルのクラスタチェーンの末尾に、ステップS1101において2番目に選択されたJPEGファイルのクラスタチェーンがつながるように、FATの要素を変更する。同様にして、ステップS1101において選択された全てのJPEGファイルのクラスタチェーンが順次つながるように、FATの要素を変更する。
ステップS1303の処理を行った後に、マイクロコンピュータ115は、各副画像のJPEGヘッダを修正しながら、主画像の先頭からの各副画像に対するオフセットを算出する(ステップS1303)。このステップS1303における処理の詳細は、次のようになっている。
すなわち、マイクロコンピュータ115は、まず、副画像のSOIとJPEGヘッダとをSDRAM106に読み込む。
次に、マイクロコンピュータ115は、マルチ画像ファイル識別情報をJPEGヘッダ内に追加して、追加したデータサイズ分だけ後方を指すようにJPEG画像データへのオフセット情報を修正する。
続いて、マイクロコンピュータ115は、追加したデータサイズ分だけマルチ画像ファイルにおける前方の位置から、SOIとJPEGヘッダとを記録媒体112へ記録する。
最後に、マイクロコンピュータ115は、JPEGヘッダを記録した位置を示す、マルチ画像ファイルの先頭からのオフセットを算出する。オフセット算出の対象とする副画像に対応するJPEGファイルは、対応するディレクトリエントリにおける先頭クラスタ番号から記録されていた。そのために、ステップS1302において作成したマルチ画像ファイルに対応するクラスタチェーンを先頭から順次スキャンしながら、その先頭クラスタ番号直前までのクラスタ数をカウントして、そのカウント値にクラスタサイズを乗算することにより、JPEGヘッダ修正前のオフセットが求まる。そして、追加したデータサイズ分だけそのオフセットから減算することにより、その副画像に対するオフセットを算出することができる。
マイクロコンピュータ115は、このステップS1303の処理において、全ての副画像に対して、1番目の副画像から順に、上述したような処理を行うようになっている。
次に、マイクロコンピュータ115は、主画像のJPEGヘッダを作成して記録する(ステップS1304)。このステップS1304において、上述したステップS1104と異なるのは、マルチ画像ファイル識別情報をJPEGヘッダ内にさらに追加するという点である。
その後に、上述したステップS1105の処理を行って、この処理を終了する。
ここで、図14および図15を参照して、副画像に対応するJPEGファイルと、このJPEGファイルをマルチ画像ファイル内に組み込んだときの副画像と、のJPEGヘッダの変化およびクラスタチェーンの変化の様子を説明する。
図14は、ある副画像に対応するJPEGファイルと、このJPEGファイルが記録されているクラスタとの関係を示す図である。この図14に示す例においては、JPEGファイルは、クラスタmからクラスタm+6までの連続する7つのクラスタに記録されている。
図15は、図14に示したJPEGファイルをマルチ画像ファイル内に副画像として組み込んだときのクラスタチェーンの様子を示す図である。この図15に示す例においては、上述したステップS1302において1つのクラスタ(クラスタ番号がnのクラスタ)が先頭に追加され、上述したステップS1303においてJPEGヘッダが修正されてマルチ画像ファイル識別情報が追加されている。このようなJPEGヘッダの拡張を行ったために、この副画像のSOIは、先頭クラスタであるクラスタ番号nのクラスタの(先頭からではなく)途中から、記録されている。
このような実施形態2によれば、FATの変更と主画像および各副画像のヘッダ情報の変更とディレクトリエントリ記録領域の変更とを行うが、JPEG画像データ自体はコピーも移動も行うことなく、複数のJPEGファイルを統合して、マルチ画像ファイルに必要なヘッダを構成しながら、マルチ画像ファイルを作成することができる。このときに変更されるデータの合計サイズは、一般に、JPEG画像データの合計サイズに比べて非常に小さいために、マルチ画像ファイルを極めて高速に作成することが可能となる。さらに、JPEG画像データのコピーを記録媒体に作成することがないために、記録媒体の空き領域がマルチ画像ファイルのデータサイズよりも小容量であっても処理を行うことが可能となる利点がある。加えて、マルチ画像ファイルに含まれるJPEG画像データから別途のJPEGファイルを作成したときに、JPEGヘッダ内にマルチ画像ファイル識別情報が含まれているために、元のマルチ画像ファイルを識別することができる。
[実施形態3]
図16から図18は本発明の実施形態3を示したものであり、図16はJPEGファイルのファイルフォーマットの例を示す図である。この実施形態3において、上述の実施形態1,2と同様である部分については同一の符号を付して説明を省略し、主として異なる点についてのみ説明する。
本実施形態において、画像ファイル編集装置が適用されるデジタルカメラの構成は実施形態1の図1に示したものと同様であり、撮影時における処理は図2に示したものと同様であり、ファイルシステムも実施形態1において説明したものと同様である。
ただし、本実施形態におけるマルチ画像ファイルを作成する元となるJPEGファイルの構成は、実施形態1の図3に示したものとは異なっている。
本実施形態におけるJPEGファイルのファイルフォーマットの例について、図16を参照して説明する。なお、このJPEGファイルは、図2のステップS203の処理により作成される。
この図16に示すファイルフォーマットにおいては、ファイルのデータはSOI(Start Of Image)を始端とし、EOI(End Of Image)を終端とする。そして、SOIとEOIとの間には、画像データに関する情報(実施形態1の説明参照)がExif規格に準拠した形式で記録されたJPEGヘッダと、空白情報と、JPEG画像データと、が順に記録される。
これらの内の空白情報とは、例えば0で埋められた情報である。JPEGヘッダにおけるJPEG画像データへのオフセット情報を、JPEGヘッダの最終データよりもさらにファイル後方を指すように設定して、その位置からJPEG画像データを記録することにより、JPEGヘッダとJPEG画像データとの間にこの空白情報を設けることができる。
この空白情報であるが、主画像のJPEGヘッダの最大データサイズをM、副画像のJPEGヘッダの最大データサイズをS、JPEGファイルにおけるJPEGヘッダサイズをJとしたときに、
max[M,S]−J
により算出されるサイズである。ここに、記号max[x,y]は、xとyとの内の小さくない方(x≠yの場合には、xとyとの内の大きい方)の値をとることを示す。すなわち、具体的に書き下せば、M>SのときにM−J、M≦SのときにS−Jの値となることを示している。
ここで、マルチ画像ファイルに含まれる副画像の数に応じてオフセット情報の個数が変わるために、主画像のJPEGヘッダサイズは変動することになるが、例えば、マルチ画像ファイルに含まれ得る副画像の最大数を予め規格等として定めておけば、最大のJPEGヘッダサイズを予め決めることができる。
図17は、本実施形態におけるマルチ画像ファイルのファイルフォーマットの例を示す図である。
この図17に示すファイルフォーマットは、基本的には実施形態2の図12に示したファイルフォーマットと同様であるが、主画像および副画像に空白情報が含まれている点が異なっている(ただし、JPEGヘッダが理論上の最大値をとる場合には、空白情報が含まれていないこともあり得る)。この空白情報は、図16を参照して説明したような形式のJPEGファイルに含まれる空白情報よりも、マルチ画像ファイルに格納するためにJPEGヘッダに新たに加えた情報の分だけデータサイズが減少した空白情報となっている。
続いて、図18は、マルチ画像ファイルを作成する処理を示すフローチャートである。この図18に示す処理は、図2に示したような処理に従って記録された図16に示すようなJPEGファイルから、図17に示すようなマルチ画像ファイルを作成するときの処理を示したものである。なお、この図18において、図11、図13における処理と同様の処理を行う部分については同一の符号を付して説明を省略する。
上述したようなステップS1101の処理が行われた後に、マイクロコンピュータ115は、このステップS1101において選択されたJPEGファイルが1つのマルチ画像ファイルになるようにFATを修正する(ステップS1802)。
ここで、JPEGファイルのJPEGヘッダとJPEG画像データとの間には適切なサイズの空白情報が予め記録されているために、マルチ画像ファイルにおいてJPEGファイルに対応する主画像または副画像のJPEGヘッダおよびJPEGデータのサイズは、もとのJPEGファイルサイズを超えることはない。そのために、この処理では、主画像に対応するJPEGファイルのクラスタチェーンの末尾に、ステップS1101において2番目に選択されたJPEGファイルのクラスタチェーンがつながるように、FATの要素を変更し、同様に、ステップS1101において選択された全てのJPEGファイルのクラスタチェーンが順次つながるように、FATの要素を変更すれば足りる。
次に、マイクロコンピュータ115は、各副画像のJPEGヘッダを修正しながら、主画像の先頭からの各副画像に対するオフセットを算出する(ステップS1803)。
すなわち、マイクロコンピュータ115は、まず、副画像のJPEGヘッダをSDRAM106に読み込む。
次に、マイクロコンピュータ115は、マルチ画像ファイル識別情報をJPEGヘッダ内に追加する。
続いて、マイクロコンピュータ115は、マルチ画像ファイルにおいて元々記録されていた位置から上書きするように、JPEGヘッダを記録する。
最後に、マイクロコンピュータ115は、JPEGヘッダを記録した位置を示す、マルチ画像ファイルの先頭からのオフセットを算出する。オフセット算出の対象とする副画像に対応するJPEGファイルは、対応するディレクトリエントリにおける先頭クラスタ番号から記録されている。そのために、ステップS1802において作成したマルチ画像ファイルに対応するクラスタチェーンを先頭から順次スキャンしながら、その先頭クラスタ番号直前までのクラスタ数をカウントして、そのカウント値にクラスタサイズを乗算することにより、オフセットを求めることができる。
マイクロコンピュータ115は、このステップS1803の処理において、全ての副画像に対して、1番目の副画像から順に、上述したような処理を行うようになっている。
その後は、上述したようなステップS1304およびステップS1105の処理を行って、この処理を終了する。
このような実施形態3によれば、JPEGファイルを記録する際に予め適切なサイズの空白情報を含むようにしたために、FATの変更と主画像および各副画像のヘッダ情報の変更とディレクトリエントリ記録領域の変更とを行うが、JPEG画像データ自体はコピーも移動も行うことなく、複数のJPEGファイルを統合して、マルチ画像ファイルに必要なヘッダを構成しながら、マルチ画像ファイルを作成することができる。このときに変更されるデータの合計サイズは、一般に、JPEG画像データの合計サイズに比べて非常に小さいために、マルチ画像ファイルを極めて高速に作成することが可能となる。さらに、JPEG画像データのコピーを記録媒体に作成することがなく、かつ、作成されるマルチ画像ファイルのファイルサイズが、作成元のJPEGファイルの合計ファイルサイズよりも大きくなることはなく、かつJPEGヘッダは上書きにより記録されるために、記録媒体に空き領域がない場合であっても処理を行うことができる利点がある。
[実施形態4]
図19は本発明の実施形態4を示したものであり、マルチ画像ファイルを作成する処理を示すフローチャートである。この実施形態4において、上述の実施形態1〜3と同様である部分については同一の符号を付して説明を省略し、主として異なる点についてのみ説明する。
本実施形態において、画像ファイル編集装置が適用されるデジタルカメラの構成は実施形態1の図1に示したものと同様であり、撮影時における処理は図2に示したものと同様であり、記録されるJPEGファイルの構成は図3に示したものと同様である。
次に、図19を参照して、マルチ画像ファイルを作成する処理を説明する。この図19に示す処理は、図2に示したような処理に従って記録された図3に示したようなJPEGファイルから、JPEGヘッダとJPEG画像データとの間に空白情報が存在するようなマルチ画像ファイル(例えば、図17に示したようなマルチ画像ファイル)を作成するときの処理を示したものである。なお、この図19において、図11における処理と同様の処理を行う部分については同一の符号を付して説明を省略する。
上述したようなステップS1101の処理が行われた後に、マイクロコンピュータ115は、選択されたJPEGファイルの中から、これから処理対象にしようとするJPEGファイル(処理対象JPEGファイル)を選択する(ステップS1902)。ここでは、マイクロコンピュータ115は、ステップS1101においてユーザにより選択された順に、処理対象JPEGファイルとして選択するものとする。
次に、JPEGヘッダを作成する(ステップS1903)。
この処理では、ステップS1902において選択した処理対象JPEGファイルから、SOIおよびJPEGヘッダをSDRAM106に読み込む。
そして、処理対象JPEGファイルがステップS1101において最初に選択されたファイルであった場合には主画像のJPEGヘッダを、それ以外の場合には副画像のJPEGヘッダを、それぞれ作成する。ここで、主画像のヘッダを作成する場合には、この時点では各副画像に対するオフセットがまだ不明であるために、副画像の数だけオフセット情報を書き込むための領域を確保して、オフセット情報自体には任意の情報(例えば、0)を記録しておく。
また、この処理では、JPEG画像データへのオフセット情報も変更する。ここでは、処理対象JPEGファイルに記録されていたオフセット情報から求まる処理対象JPEGファイルにおけるJPEG画像データの開始位置をp、クラスタサイズをc、SOIと作成したJPEGヘッダとの合計サイズをsとした場合に、
p≧c×n
を満たす最大の整数nと、
s≦c×m
を満たす最小の整数mと、を求めて、
p−c×n+c×m
の演算により求められる位置を示すようなオフセット情報にする。
このオフセット情報は、処理対象JPEGファイルにおけるJPEG画像データ以外の情報が記録されているクラスタをクラスタチェーンの先頭から全て開放して、SOIおよびマルチ画像ファイル用のJPEGヘッダを記録するためのクラスタをクラスタチェーンの先頭に追加してできるファイルにおける、JPEG画像データへのオフセット情報と同じである。そして、このようにしてオフセット情報を作成した場合には、ヘッダサイズなどの関係から、JPEGヘッダとJPEG画像データとの間に空白領域を含むことがある(pおよびsが両方ともクラスタサイズの丁度整数倍となるような特別な場合を除いては、通常は空白領域が含まれることになる。)(なお、空白領域が含まれるマルチ画像ファイルの構成については、例えば図17を参照)。
次に、FATを変更する(ステップS1904)。まず、ステップS1903において求めたnを用いて、処理対象JPEGファイルに対応するクラスタチェーンにおける先頭クラスタからnクラスタまでを開放する。この開放は、開放したいクラスタ番号と同一のインデックス番号のFATにおける要素を0に変更することにより行われる。そして、ステップS1903において求めたmを用いて、m個の空きクラスタをクラスタチェーンの先頭に追加して、追加後のクラスタチェーンの先頭クラスタを記憶しておく。次に、ここまでの処理により作成されたクラスタチェーンを、処理対象JPEGファイルがステップS1101において最初に選択されたJPEGファイル(つまり、主画像に対応するJPEGファイル)であった場合にはマルチ画像ファイルのクラスタチェーンとし、処理対象JPEGファイルがステップS1101において2番目もしくはそれ以降に選択されたファイルであった場合にはマルチ画像ファイルのクラスタチェーンの末尾に追加する。
続いて、SDRAM106に記憶されているSOIとJPEGヘッダ(ステップS1903において作成されたJPEGヘッダ)とを、ステップS1904において記憶した先頭クラスタの最初からmクラスタを使用して記録する(ステップS1905)。
そして、ステップS1904において記憶した先頭クラスタまでのオフセットを算出する(ステップS1906)。
さらに、ステップS1101において選択されたJPEGファイルの中に未処理のJPEGファイルが存在するか否かを確認して(ステップS1907)、まだ未処理のJPEGファイルが存在する場合にはステップS1902に戻って未処理のJPEGファイルを処理対象JPEGファイルとして選択してから上述したような処理を繰り返して行う。
一方、ステップS1907において、未処理のJPEGファイルが存在しない場合には、ステップS1101において選択された全てのJPEGファイルの結合が完了していることになる。そこで、ステップS1906において各副画像に対応して算出した各オフセットを、その副画像に対するオフセット情報として主画像JPEGヘッダに記録する(ステップS1908)。ここで、主画像JPEGヘッダにおける副画像に対するオフセット情報を記録する領域は、上述したステップS1903において予め確保され任意の情報が記録されているために、この任意の情報に上書きしてオフセット情報が記録される。
その後に、マイクロコンピュータ115は、上述したステップS1105の処理により、ディレクトリエントリ記録領域におけるディレクトリエントリの追加と削除とを行う。
このような処理により作成されたマルチ画像ファイルは、上述したように、JPEGファイルにおけるJPEGヘッダサイズや、主画像および副画像におけるJPEGヘッダサイズなどの関係から、空白領域を含む場合も含まない場合もある。
このような実施形態4によれば、JPEGファイルにおいてデータサイズの大部分を占めるJPEG画像データをコピーも移動も行うことなく、複数のJPEGファイルを統合してマルチ画像ファイルを作成することができるために、極めて高速な処理を行うことが可能となる。また、JPEGファイルにおけるJPEGヘッダが、例えば実施形態3の図16に示したような空白領域を含むものである場合には、この空白領域を縮小することが可能となり、さらに、JPEGファイルのJPEGヘッダサイズよりもマルチ画像ファイルにおいて該当するJPEGヘッダサイズをより小さくすることが可能となる場合があって、この場合には、上述した実施形態3よりも記録領域を有効に用いてマルチ画像ファイルのファイルサイズを小さくすることが可能となる。その他、本実施形態によれば、上述した実施形態1〜3とほぼ同様の効果を奏することができる。
なお、本発明は上述した実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除しても良い。さらに、異なる実施形態にわたる構成要素を適宜組み合わせても良い。このように、発明の主旨を逸脱しない範囲内において種々の変形や応用が可能であることは勿論である。
本発明の実施形態1において、画像ファイル編集装置の一例としてのデジタルカメラの構成を示すブロック図。 上記実施形態1において、デジタルカメラにおける画像ファイル記録時の処理を示すフローチャート。 上記実施形態1の図2のステップS203において作成する、JPEGファイルのファイルフォーマットの例を示す図。 上記実施形態1において、記録媒体に構成されている、ファイルやファイルに記録されるデータを管理するためのファイルシステムの概要を示す図。 上記実施形態1の図4に示すようなファイルシステムにおいて、ファイルを記録媒体に書き込むときの処理を示すフローチャート。 上記実施形態1において、JPEGファイルを構成するデータとこのデータが記録される各クラスタとの関係を示す図。 上記実施形態1の図6に示すクラスタ構成に該当するFATのデータを示す図。 上記実施形態1の図4に示すようなファイルシステムを用いて記録されたファイルからデータを読み込むときの処理を示すフローチャート。 上記実施形態1におけるマルチ画像ファイルのファイルフォーマットの例を示す図。 上記実施形態1の図7に示したようなFATを備える図6に示したようなJPEGファイルを結合して作成されるマルチ画像ファイルのFAT構成を示す図。 上記実施形態1においてマルチ画像ファイルを作成する処理を示すフローチャート。 本発明の実施形態2におけるマルチ画像ファイルのファイルフォーマットの例を示す図。 上記実施形態2においてマルチ画像ファイルを作成する処理を示すフローチャート。 上記実施形態2において、ある副画像に対応するJPEGファイルと、このJPEGファイルが記録されているクラスタとの関係を示す図。 上記実施形態2の図14に示したJPEGファイルをマルチ画像ファイル内に副画像として組み込んだときのクラスタチェーンの様子を示す図。 本発明の実施形態3におけるJPEGファイルのファイルフォーマットの例を示す図。 上記実施形態3におけるマルチ画像ファイルのファイルフォーマットの例を示す図。 上記実施形態3においてマルチ画像ファイルを作成する処理を示すフローチャート。 本発明の実施形態4においてマルチ画像ファイルを作成する処理を示すフローチャート。
符号の説明
100…カメラ本体
101…レンズ
102…撮像素子
103…アナログ処理部
104…A/D変換部
105…バス
106…SDRAM
107…画像処理部
108…AE処理部
109…AF処理部
110…JPEG処理部
111…メモリI/F
112…記録媒体
113…LCDドライバ
114…LCD
115…マイクロコンピュータ(ファイルアロケーションテーブル作成部、ディレクトリエントリ作成部、画像情報記録部)
116…操作部
117…フラッシュメモリ

Claims (10)

  1. 所定サイズの記録単位であるクラスタに分割して記録されていて、各々が画像データを含む複数の画像ファイルから、該複数の画像ファイルの各画像データを含む1つのマルチ画像ファイルを生成する画像ファイル編集装置であって、
    上記マルチ画像ファイルを生成する元となる上記複数の画像ファイルが記録されている上記クラスタの内の、少なくとも上記画像データが記録されているクラスタの全てを含むように、クラスタのつながり順序を示すファイルアロケーションテーブルを作成するファイルアロケーションテーブル作成部と、
    上記マルチ画像ファイルのファイル名と、上記ファイルアロケーションテーブルにおける該マルチ画像ファイルに関するクラスタチェーンの先頭クラスタを示す情報と、を含むディレクトリエントリを作成するディレクトリエントリ作成部と、
    上記ファイルアロケーションテーブルと、上記ディレクトリエントリと、を記録することにより、上記マルチ画像ファイルを構成する画像情報記録部と、
    を具備することを特徴とする画像ファイル編集装置。
  2. 上記マルチ画像ファイルは、上記複数の画像ファイルの内の少なくとも1つの画像ファイルについて新たな情報を追加して含むように構成されるものであり、
    上記ファイルアロケーションテーブル作成部は、さらに、上記新たな情報を記録するためのクラスタを含むクラスタのつながり順序を示すファイルアロケーションテーブルを作成するものであることを特徴とする請求項1に記載の画像ファイル編集装置。
  3. 上記マルチ画像ファイルは、上記複数の画像ファイルの内の、1つの画像ファイルに含まれる画像データを主画像とし、該主画像以外の画像ファイルに含まれる画像データをそれぞれ副画像として含むものであって、
    上記新たな情報は、当該マルチ画像ファイルにおける上記複数の副画像それぞれの位置を示すオフセット情報を含むことを特徴とする請求項2に記載の画像ファイル編集装置。
  4. 上記新たな情報は、さらに、上記主画像および上記副画像が同一のマルチ画像ファイルに属する画像であることを識別するための識別情報を含むことを特徴とする請求項3に記載の画像ファイル編集装置。
  5. 上記マルチ画像ファイルは、上記複数の画像ファイルの内の少なくとも1つの画像ファイルについて新たな情報を追加して含むように構成されるものであり、
    上記複数の画像ファイルの内の任意の画像ファイルは、上記新たな情報を追加するための領域を予め空白情報として有していることを特徴とする請求項1に記載の画像ファイル編集装置。
  6. 上記複数の画像ファイルは、それぞれ、上記画像データと、該画像データに係る情報を含むヘッダ情報と、上記空白情報と、を有するものであり、
    上記マルチ画像ファイルは、上記複数の画像ファイルの内の、1つの画像ファイルに含まれる画像データを主画像とし、該主画像以外の画像ファイルに含まれる画像データをそれぞれ副画像として、該主画像と、該主画像のヘッダ情報と、該副画像と、該副画像のヘッダ情報と、を含み、さらに、必要に応じて上記主画像に係る空白情報と上記副画像に係る空白情報との何れか一以上を含み得るものであって、
    上記複数の画像ファイルの各々は、該各々の画像ファイルにおける上記ヘッダ情報と上記空白情報とを合計したデータサイズが、上記副画像のヘッダ情報として規定され得る最大のデータサイズ以上となるように構成されたものであることを特徴とする請求項5に記載の画像ファイル編集装置。
  7. 上記複数の画像ファイルの各々は、さらに、該各々の画像ファイルにおける上記ヘッダ情報と上記空白情報とを合計したデータサイズが、上記主画像のヘッダ情報として規定され得る最大のデータサイズ以上となるように構成されたものであることを特徴とする請求項6に記載の画像ファイル編集装置。
  8. 上記空白情報は、上記複数の画像ファイルの各々に含まれる画像データよりも、上記クラスタのつながり順序が示す方向における前方に配置されたものであることを特徴とする請求項5から請求項7の何れか一項に記載の画像ファイル編集装置。
  9. 所定サイズの記録単位であるクラスタに分割して記録されていて、各々が画像データを含む複数の画像ファイルから、該複数の画像ファイルの各画像データを含む1つのマルチ画像ファイルを生成する画像ファイル編集方法であって、
    上記マルチ画像ファイルを生成する元となる上記複数の画像ファイルが記録されている上記クラスタの内の、少なくとも上記画像データが記録されているクラスタの全てを含むクラスタのつながり順序を示すファイルアロケーションテーブルと、上記マルチ画像ファイルのファイル名と上記ファイルアロケーションテーブルにおける該マルチ画像ファイルに関するクラスタチェーンの先頭クラスタを示す情報とを含むディレクトリエントリと、を作成するステップと、
    上記ファイルアロケーションテーブルと、上記ディレクトリエントリと、を記録することにより、上記マルチ画像ファイルを構成するステップと、
    を含むことを特徴とする画像ファイル編集方法。
  10. 所定サイズの記録単位であるクラスタに分割して記録されていて、各々が画像データを含む複数の画像ファイルから、該複数の画像ファイルの各画像データを含む1つのマルチ画像ファイルを生成する処理をコンピュータに実行させるためのプログラムであって、
    上記マルチ画像ファイルを生成する元となる上記複数の画像ファイルが記録されている上記クラスタの内の、少なくとも上記画像データが記録されているクラスタの全てを含むクラスタのつながり順序を示すファイルアロケーションテーブルと、上記マルチ画像ファイルのファイル名と上記ファイルアロケーションテーブルにおける該マルチ画像ファイルに関するクラスタチェーンの先頭クラスタを示す情報とを含むディレクトリエントリと、を作成するステップと、
    上記ファイルアロケーションテーブルと、上記ディレクトリエントリと、を記録することにより、上記マルチ画像ファイルを構成するステップと、
    をコンピュータに実行させるためのプログラム。
JP2008164811A 2008-06-24 2008-06-24 画像ファイル編集装置、画像ファイル編集方法、プログラム Pending JP2010010809A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008164811A JP2010010809A (ja) 2008-06-24 2008-06-24 画像ファイル編集装置、画像ファイル編集方法、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008164811A JP2010010809A (ja) 2008-06-24 2008-06-24 画像ファイル編集装置、画像ファイル編集方法、プログラム

Publications (1)

Publication Number Publication Date
JP2010010809A true JP2010010809A (ja) 2010-01-14

Family

ID=41590827

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008164811A Pending JP2010010809A (ja) 2008-06-24 2008-06-24 画像ファイル編集装置、画像ファイル編集方法、プログラム

Country Status (1)

Country Link
JP (1) JP2010010809A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011193110A (ja) * 2010-03-12 2011-09-29 Nikon Corp 画像記録装置、および画像記録プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011193110A (ja) * 2010-03-12 2011-09-29 Nikon Corp 画像記録装置、および画像記録プログラム

Similar Documents

Publication Publication Date Title
JP4913085B2 (ja) マルチ画像ファイル編集装置、マルチ画像ファイル編集プログラム、マルチ画像ファイル編集方法
US10122947B2 (en) Image pickup apparatus and image processing method
JP4861302B2 (ja) 画像ファイル作成装置、画像ファイル作成方法
US9413922B2 (en) Photographing apparatus and method for synthesizing images
JP2006262451A (ja) 画像記録装置及び方法
JP2010130437A (ja) 撮像装置、及び、プログラム
US9609167B2 (en) Imaging device capable of temporarily storing a plurality of image data, and control method for an imaging device
JP4671053B2 (ja) 画像記録装置及び画像記録方法
JP5021546B2 (ja) マルチ画像ファイル作成装置、マルチ画像ファイル作成プログラム、マルチ画像ファイル作成方法
JP4349288B2 (ja) 撮像装置、画像処理方法及びプログラム
JP2010021710A (ja) 撮像装置、画像処理装置およびプログラム
JP6775386B2 (ja) 撮像装置、その制御方法、プログラムならびに記録媒体
JP4918513B2 (ja) マルチ画像ファイル編集方法及びプログラム
JP2010010809A (ja) 画像ファイル編集装置、画像ファイル編集方法、プログラム
JP5828251B2 (ja) 画像処理装置およびデジタルカメラ
JP4966680B2 (ja) 動画再生装置、動画再生方法及び撮影装置
JP2008054128A (ja) 撮像装置、画像表示装置及びそのプログラム
JP5195317B2 (ja) カメラ装置、及び撮影方法、撮影制御プログラム
JP4535089B2 (ja) 撮像装置、画像処理方法及びプログラム
JP2006287588A (ja) 画像処理装置、画像処理方法、データファイル構造、コンピュータプログラム及び記憶媒体
JP2007124150A (ja) 画像処理装置、画像処理方法、画像データファイル処理装置、画像データファイル処理方法、コンピュータプログラム及び記憶媒体
JP2020188417A (ja) 画像処理装置、画像処理方法、及び、コンピュータプログラム
JP2009219028A (ja) 画像記録方法及び撮像装置
JP2007213231A (ja) 画像処理装置
JP2009225051A (ja) 画像ファイル編集装置