JP2015216538A - 撮像装置及びその制御方法及びプログラム及び記憶媒体 - Google Patents

撮像装置及びその制御方法及びプログラム及び記憶媒体 Download PDF

Info

Publication number
JP2015216538A
JP2015216538A JP2014098889A JP2014098889A JP2015216538A JP 2015216538 A JP2015216538 A JP 2015216538A JP 2014098889 A JP2014098889 A JP 2014098889A JP 2014098889 A JP2014098889 A JP 2014098889A JP 2015216538 A JP2015216538 A JP 2015216538A
Authority
JP
Japan
Prior art keywords
file
data
still image
recording
size
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
JP2014098889A
Other languages
English (en)
Inventor
智成 阿部
Tomonari Abe
智成 阿部
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 JP2014098889A priority Critical patent/JP2015216538A/ja
Publication of JP2015216538A publication Critical patent/JP2015216538A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Studio Devices (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Television Signal Processing For Recording (AREA)

Abstract

【課題】無駄な空きクラスタの発生を抑制しながら、連続して撮影した静止画ファイルを記憶媒体に記録する。【解決手段】撮像部により連続して静止画を撮像した場合、静止画ファイルが生成されるたびに、各静止画ファイルのサイズ以下であってメモリカードが有する記録単位であるRUの最大整数倍のデータを独立した中間ファイルとしてメモリカードに記録する。このとき、その静止画ファイルの後端に位置しRUのサイズに満たない端数データをバッファ領域内に格納する。中間ファイルを記録中にバッファ領域内にRUサイズ分のデータが格納された場合、当該バッファ領域内のRUサイズのデータを独立した端数データファイルとしてメモリカードに記録する。静止画の連続撮像が終了したとき、メモリカードに記録された中間ファイルそれぞれに端数データファイル内の該当する端数データを格納しているクラスタを結合することで完成された静止画ファイルを生成する。【選択図】図1

Description

本発明は、撮像した静止画像を不揮発性の記憶媒体へ記録する技術に関するものである。
従来、メモリカードなどの記録媒体に動画や静止画を記録する撮像装置が知られている(例えば、特許文献1参照)。動画データは単位時間当たりのデータ量が多い。そこで、SDカードなどのフラッシュメモリカードでは、スピードクラスが規定されている。スピードクラスでは、フラッシュメモリにおける複数のクラスタに対応した、AU(allocation Unit),或いはRU(Recording Unit)といった単位でデータの書き込みを行うことにより、データの書き込み速度が保証される。
特開2000−267904号公報
デジタルカメラでは、動画の撮影中に静止画の撮影を行う機能を持つものが登場している。静止画データのデータ量は動画に比べて少ない。そのため、動画撮影中に静止画を記録する場合、スピードクラスによる記録を一旦停止し、クラスタ単位で静止画データを書き込む。
しかしながら、スピードクラスによる書き込みから、一旦、クラスタ単位での書き込みに切り替え、再度、スピードクラスに戻る場合、切り替えに時間がかかってしまう。そこで、切り替えの間、動画を保持しておくための大容量のバッファメモリが必要になる。
また、静止画をスピードクラスに従って書き込むようにすれば、書き込み方式を切り替えることなく、動画の撮影中に静止画を記録することが可能となる。しかしながら、スピードクラスは、AU或いはRUの単位での書き込みになる。AUはRUを包含する関係にあり、RUは一般にメモリカードにおけるファイルシステムのクラスタサイズよりも大きい。従って、AUあるいはRU単位に、連続して撮像した個々の静止画ファイルを記録する場合には、メモリカードには無駄な空き領域が発生する。
本発明は、上記問題点に鑑みなされたものであり、無駄な空きクラスタの発生を抑制しながら、連続して撮影した静止画ファイルを記憶媒体に記録することを可能ならしめる技術を提供しようとするものである。
この課題を解決するため、例えば本発明の撮像装置は以下の構成を備える。すなわち、
撮像手段と、
前記撮像手段により得られた静止画データを含む静止画ファイルを、所定のファイルシステムに従って記録媒体に書き込む記録手段と、
前記記録媒体における、前記所定のファイルシステムに規定された記録単位の整数倍のサイズを書き込み単位として前記静止画ファイルの書き込みを行うように、前記記録手段を制御する制御手段と、
メモリとを備え、
前記制御手段は、連続して複数の画面の静止画データを前記記録媒体に記録する所定の記録モードにおいて、一つの前記静止画ファイルについて、前記静止画ファイルのサイズ以下で、前記書き込み単位の整数倍の最大値となる第1のデータと、前記静止画ファイルのうち前記第1のデータを除いた第2のデータとを生成し、前記第1のデータを含む第1のファイルを前記記録媒体に書き込むように前記記録手段を制御するとともに、前記第2のデータを前記メモリに記憶し、前記所定の記録モードにおける静止画データの記録中に、前記メモリに記憶された、複数の前記静止画ファイルから生成された前記第2のデータのサイズが前記書き込みサイズに達したことに応じて、複数の前記静止画ファイルから生成された前記第2のデータを含む第2のファイルを記録するように前記記録手段を制御し、
前記所定の記録モードにおける静止画データの記録が終了した後、複数の前記第1のファイルそれぞれに対し、前記第2のファイルに格納された前記第2のデータを結合することにより、複数の静止画ファイルを生成する制御を行うことを特徴とする。
本発明によれば、無駄な空きクラスタの発生を抑制しながら、連続して撮影した静止画ファイルを記憶媒体に記録することが可能になる。
第1の実施形態における画像処理装置100の概略構成を示すブロック図。 メモリカードのファイルシステムにおけるファイルの断片化と速度低下を説明するための図。 メモリカードにおけるスピードクラスの概念を説明する図。 第1の実施形態に係る静止画連続撮影処理の概要を示す図。 第1の実施形態に係る端数クラスタ情報の一例を示す図。 第1の実施形態に係る、ファイル結合の一例を示す図。 一般的なDCF画像ファイル構造を模式的に示す図。 第1の実施形態に係るマウント処理を例示したフローチャート。 第1の実施形態に係る静止画連続撮影処理のフローチャート。 第1の実施形態に係る静止画撮影処理のフローチャート。 第1の実施形態に係る端数クラスタデータ処理のフローチャート。 第1の実施形態に係る端数クラスタデータ結合処理のフローチャート。 第2の実施形態に係る動画記録処理のフローチャート。 第2の実施形態に係るストリームデータ書込み処理のフローチャート。 第2の実施形態に係る動画ファイル保存処理のフローチャート。 第3の実施形態に係る静止画ファイル回復処理の図。 第3の実施形態に係る端数クラスタ情報の一例を示す図。 第3の実施形態に係る端数クラスタデータ結合処理のフローチャート。 第3の実施形態に係る静止画ファイル回復処理のフローチャート。 第3の実施形態に係るファイル回復処理のフローチャート。
以下、添付図面を参照して、本発明の実施形態を説明する。なお、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。また、実施形態の中で説明されている特徴の組み合わせすべてが、本発明に必須とは限らない。
実施形態の説明に先立ち、メモリカードについて考察する。
ハードディスクなどの記憶装置に採用されているファイルシステムでは、ファイルの書込みと削除を繰り返していると、使用領域と未使用領域が混在してしまい、書込まれたファイルが分断される。空き領域もまた、分断されるので、連続した大きな空き領域を確保するのが難しい。これは一般に、フラグメンテーション、或いは断片化と呼ばれる現象である。ファイルの断片化は、アクセス速度の低下を招くので、動画記録などのリアルタイム性が要求され、かつ、単位時間当たりに書き込むデータ量が大きい場合に問題となる。
フラッシュメモリを使用するメモリカードに上記ファイルシステムを適用した場合にも、断片化によるアクセス速度の低下が起こりうる。フラッシュメモリは、書き換え回数に制限があり、消去単位(書き換えの単位サイズ)がハードディスクのそれと比較して大きい(数キロバイト〜数十キロバイトのブロック単位)ことから、ハードディスクとは異なる対応が必要となる。
図2(A),(B)を参照して、簡単に説明する。一般にフラッシュメモリの消去単位又は書き換え単位(以下、単に記録単位という)は、上述のファイルステムの空き領域管理単位(クラスタサイズ)よりも大きい。図2(A)に示す例は、フラッシュメモリの記録単位が、ファイルシステムの管理単位であるクラスタの4倍のサイズを有する例を示している。図2(B)では、記録領域Aに記録されるデータに変更を加えることで、記録領域Bに書き換える場合を図示している。すなわち、図2(A)が書き換え前の状態を示し、同(B)が書き換え中と書き換え後の状態を示している。
図2(A)では、記録領域A内に未使用クラスタと使用済みクラスタが混在している。記録領域Aの論理アドレスは、0x100000から0x13ffff(「0x」は16進数を示している)に設定されている。
ここで、論理アドレス0x110000から始まるクラスタ2に新データを書込む必要が生じたとする。フラッシュメモリでは、記録領域Aに対する部分的な上書きが不可能であるので、カード内部で、データの移動と論理アドレスの割当の変更が行なわれる。即ち、記録領域Aの記憶データ(旧データ)を読み出して新データと合成し、記録領域Aとは物理的に異なる位置にある記録領域Bに書込む。そして、記録領域Aに割り当てていた論理アドレス0x100000から0x13ffffを記録領域Bに割り当てる。論理アドレス0x110000に書込まれるべきデータは、実際には記録領域Bのクラスタ2’に書込まれることになる。記録領域Aのクラスタ1,3のデータは、それぞれ領域Bのクラスタ1’,3’にコピーされる。つまり、本来、新データは1つのクラスタに書き込むだけで良いはずが、図示の場合、領域A内の他の2つ(クラスタ1、3)のコピーを行うための記録が必要となる。このような書き換え時の内部的なコピー動作が、書込み速度の低下を招く。勿論、物理アドレスで見ても断片化が進行することになる。読み込みについては、断片化していても上記のようなコピー動作を伴わないので、速度低下はごくわずかである。
近年、フラッシュメモリを使用するメモリカードでは、フラグメンテーションによる速度低下を考慮に入れた、最低記録保証レートを規定するものが現れている。例えば、SDカードでは、動画に代表されるリアルタイムデータを破綻なく記録可能とするためのスピードクラスが規定されている。
図3を参照して、そのスピードクラスを説明する。メモリカード上の記録領域301をAU(Allocation Unit)と呼ばれる単位で区切り、各AUに対して断片化の程度を測定する。AUの大きさは、メモリカード内部のフラッシュメモリの記録単位に合わせてカード毎に決められている。また、スピードクラスを適用した記録におけるリアルタイムデータの最小記録単位を、RU(Recording Unit)と呼ぶ。RUは、クラスタサイズの整数倍と定められている。RU内の全クラスタが未使用クラスタである場合、そのRUを未使用RU303として扱う。また、RU内のクラスタが1つでも使用されている場合、そのRUを使用済みRU304として扱う。
AUは複数個のRUからなる。AUを構成する全てのRUの中における使用済みRUの割合に応じて、そのAU内の未使用RUへの最低記録速度が規定されている。使用済みRUの割合が低いほど、高速に記録が可能となる。記録データのビットレートよりも高速に記録可能なAUを選択することで、リアルタイムデータを確実にカードに記録することが可能となる。例えば、図3のAU302は、未使用RU303と使用済みRU304の割合が等しく、RU率が50%となる。また、AU内の空きRU率が100%の場合に書込み可能速度は符号305に示すごとく6MB/secに設定されているものとする。同様に、75%の場合に符号306に示すように4MB/sec、50%の場合に符号307に示すように2MB/sec、25%の場合に符号308のように1MB/secと設定されている。このメモリカードに、今、ビットレート3MB/secのストリームをリアルタイムに記録する場合、未使用RUの割合が100%又は75%の領域を使用することで、ストリームデータのビットレートでの記録が破綻せず継続できることになる。
<第1の実施形態>
先ず、本第1の実施形態の概要を簡単に説明すると、次の通りである。本第1の実施形態では、撮像部を有する画像処理装置(撮像装置)に適用するものであり、所謂、デジタルカメラ、デジタルビデオカメラ、撮像機能を有する携帯端末に適用可能である。そして、この装置は、撮像部で撮像して得られた静止画像から静止画像ファイルを生成する生成部と、生成された静止画ファイルを前記記憶媒体に記録する記録制御部を有する。そしてこの記録制御部は、メモリカードにおけるファイルシステムの最小記録単位であるクラスタを複数内包し、少なくとも前記記憶媒体の記録単位である1ブロック分の容量のバッファメモリ(又はRAMなどのメモリにバッファ領域として確保する)を有する。そして、記録制御部は、撮像部により連続して静止画を撮像して静止画ファイルが生成されるたびに、その静止画ファイルのサイズ以下であってブロックの容量の最大整数倍のデータを、独立した中間ファイルとしてメモリカードに記録すると共に、その静止画ファイルの後端に位置しブロックのサイズに満たない端数データをバッファメモリ内(又はバッファ領域内)の該当するクラスタ領域に格納する。そして、記録制御部は、メモリカード内に中間ファイルを記録中に、バッファメモリ内(又はバッファ領域内)にブロック分のデータが格納された場合、当該ブロック内のデータを独立した端数データファイルとしてメモリカードに記録する。この静止画の連続撮像の終了後、記録制御部は、メモリカードに記録された中間ファイルそれぞれに、端数データファイル内の該当する端数データを格納しているクラスタを結合することで、完成された静止画ファイルを生成する。以下、係る点の具体例を説明する。
図1は、第1の実施形態に係る画像処理装置100の概略構成を示すブロック図である。画像処理装置100は、撮影した動画または静止画などのファイルをメモリカード110に記録するデジタルカメラ(撮像装置)でもある。
メモリカード110は、AUまたはRU単位でのアクセスが可能なスピードクラスモードとクラスタ単位でのアクセスが可能な通常モードの二つの機能を有し、脱着可能な半導体の不揮発性記録媒体である。
撮像素子101は、光電変換により入射光量に応じた電荷を生成して出力するCMOSセンサであり、全画素の信号を読み出す以外に、特定の画素の加算及び特定の行又は列おきに間引いて電荷を読み出すこともできる。撮像素子駆動回路102は、CPU(プロセッサ)114による制御に基づいて、動画モードまたは静止画モードで撮像素子101を駆動することができる。画像処理回路103は、撮像素子101からの画像信号をA/D変換し、ガンマ補正、色バランス調整及び色変換等の所定の画像処理を施す。画像メモリ104は、画像処理回路103からの動画または静止画の画像データを表示用及び記録処理用に一時記憶するのに使用される。
マイク105は、外部の音声を取り込み、音声信号を出力する。音声処理回路106は、マイク105からの音声信号をA/D変換し、PCM符号化方式で符号化する。PCMバッファ107は、音声処理回路106からのPCM音声データを記録処理用に一記記憶する。
画像変換回路115は、動画記録時には、画像メモリ104に格納される動画の画像データとPCMバッファ107に格納されるPCM音声データを圧縮符号化及び多重化し、所定形式のストリームデータを生成する。生成されたストリームデータは、ストリームバッファ108に格納する。また、画像変換回路115は、静止画記録時には、画像メモリ104に格納される静止画の画像データを圧縮符号化し、JPEG画像データを生成する。生成されたJPEG画像データは、静止画バッファ109に格納する。更に、画像変換回路115は、再生モードで、メモリカード110から読み出されたストリームデータの圧縮画像データ及び圧縮音声データを伸長(復号)する。
静止画バッファ109は、少なくとも一つ以上のJPEG画像データを格納するメモリ領域を持つ。ストリームバッファ108は、一定期間のストリームデータを格納することができるだけのメモリ領域を持つ。記録媒体制御回路111は、メモリカード110の接続状態の監視とメモリカード110へのアクセスを制御する。操作部112は、レリーズボタン、動画記録ボタン、静止画連続撮影モードと動画記録モードなどを切り替えるモード切り換えダイヤルなどを有し、ユーザが種々の指示を画像処理装置100に入力ために使用される。表示部113は、液晶表示パネルからなり、記録時は撮像素子101によって撮像される画像を表示し、再生時には再生画像を表示する。表示部113はまた、画像処理装置100に対する設定メニュー等、記録時間、及びバッテリ残量等の情報を表示する。
CPU114は、中央演算処理装置であり、画像処理装置100の各部を制御する。メモリ118は、CPU114、ファイルシステム116、書込み管理部117の作業領域として使用する。ファイルシステム116は、メモリカード110へのファイルの書込みと読出しに必要な情報を提供する。書込み管理部117は、ファイルシステム116と連携して、メモリカード110への書込みを管理し、記録シーケンス決定手段として機能する。具体的には、メモリカード110の断片化の状態およびメモリカード110の性能情報からメモリカード110内の各領域の書込み可能速度を算出する。また、書込み管理部117は、データ書込み要求に対し、データのビットレートや静止画連続時の連続撮影可能枚数に応じてメモリカード110上の書込み領域を決定する。なお、画像メモリ104、PCMバッファ107、ストリームバッファ108、静止画バッファ109、メモリ118はRAMで構成される。
[静止画連続撮影処理の概要]
次に、後述する本第1の実施形態の静止画連続撮影処理における、静止画ファイル書込みの概要を、図4を用いて説明する。
CPU114は、RUと同一サイズ以上のメモリ領域を、図4に示す端数クラスタ格納バッファとしてメモリ118に確保する。図4に示す例では、RUのサイズは3クラスタ分のサイズであり、端数クラスタ格納バッファのサイズはRUサイズと同じ例である。
操作部112から静止画連続撮影の要求がなされると、CPU114は、撮像素子駆動回路102、画像処理回路103を制御し、撮像して得た静止画の画像データを画像メモリ104に格納させる。画像変換回路115は、CPU114の制御の下、画像メモリ104の画像データを圧縮符号化し、JPEG画像データやサムネイル画像を静止画バッファ109に格納する。CPU114は、静止画バッファ109のJPEG画像データに、サムネイル画像やヘッダ情報などのファイル情報を付加し、静止画ファイルを生成する。本実施形態では、静止画の連続撮影処理においては、静止画データをスピードクラスに従ってメモリカード110に書き込む。即ち、CPU114は、メモリカード110における、RUの先頭クラスタのアドレスを指定し、静止画データの書き込みを指示する。記録媒体制御回路111は、メモリカード110における、RUの先頭クラスタのアドレスを指定し、静止画データの書き込みコマンドを送信する。
また、CPU114は、生成された静止画ファイルのサイズを、RUのサイズで除算して余ったサイズを求める。そして、その静止画ファイルの後端に位置する、「余り」分のデータを端数クラスタデータとして図4に示す端数クラスタ格納バッファに格納する。この端数クラスタデータは、この時点ではメモリカード110に書き込まれず、RUの整数倍のデータのみ中間ファイルとして、メモリカード110に記録される。
このように、1画面の静止画データのうち、端数クラスタデータを除くデータがスピードクラスに従って記録される。また、1画面の静止画データのうち、端数クラスタデータを除くデータが、一つのファイル(中間ファイル)として記録される。
なお、RUが3個のクラスタで構成され、余り分のデータのサイズが、2クラスタサイズ以上である場合は、中間ファイルとして記録されるデータと合わせて、最終的な静止画ファイルとして記録される。即ち、この場合は、中間ファイル、端数ファイル共に記録されない。
また、各静止画ファイルの端数クラスタデータは、端数クラスタバッファにおけるクラスタの単位で記憶される。また、端数クラスタバッファに対し、次の静止画ファイルの端数クラスタデータが新たに記憶された結果、1RUサイズを超えた場合は、RUサイズ分のデータが端数ファイルとして記録される。そして、RUサイズを超える分の端数クラスタデータが、端数クラスタバッファに保持される。
続いて、次の静止画データが記録されるが、この静止画データの余り分のデータも、同様に端数クラスタ格納バッファに記憶される。このように、静止画撮影が繰り返され、端数クラスタ格納バッファのデータがRUと同一サイズになると、CPU114は、端数クラスタ格納バッファ内のデータを、図4に示す端数クラスタファイルとして、メモリカード110に記録する。また、CPU114は、端数クラスタファイル内のクラスタが、実際はどのファイルの後端に位置するかを示す端数クラスタ情報をメモリ118に作成しておく。
静止画連続撮影が終了した時点で、CPU114は、端数クラスタ情報を参照して、後述するファイル結合によって、端数クラスタファイル内の端数クラスタデータと、各静止画の中間ファイルの結合を行い、静止画ファイルとして成立させる。このようにすることで、ファイルの断片化を回避することができる。
[静止画ファイルフォーマット]
図7は一般的なDCF(Design rule for Camera File system)画像ファイルの構造を示した図である。DCF画像ファイル700は現在、最も多くのデジタルカメラが出力可能なファイルであり、DCFヘッダ部701、サムネイル画像部702、JPEG画像部703で構成されている。DCFヘッダ部701はDCFヘッダ情報を格納する領域であって、予め所定のデータサイズが与えられている。DCFヘッダ情報には、JPEG画像部703に格納される画像データに関連する撮影情報やパラメータなど符号704で示されるメタデータAが含まれると共に、サムネイル画像までの符号705で示されるオフセット値B、ならびに、符号706で示されるJPEG画像までのオフセット値Cが含まれる。このオフセット値B、Cにより各画像データの開始位置が特定されることになる。サムネイル画像部702は、表示部516に表示を行う際などにその画像の大まかなインデックスとして利用する画像を格納する領域であり、JPEG画像部703に格納されているJPEG画像などを間引いてリサイズしたサムネイル画像である。JPEG画像部703は、画像処理回路103で画像処理した後、画像変換回路115で圧縮して得られたJPEG画像を格納する領域であり、一般の多くのアプリケーションで扱うことが可能なデータである。EOI707は、DCF画像ファイルの終端を示すEOIマーカである。
[端数クラスタ情報]
次に、本第1の実施形態の静止画連続撮影処理における、端数クラスタ情報を、図5を用いて説明する。
端数クラスタ情報は、静止画ファイルに対する中間ファイルと、端数クラスタデータの関連を示す情報であり、複数の端数クラスタファイル情報で構成される。また、端数クラスタファイル情報は、1つの端数クラスタファイルに対して1つ存在し、端数クラスタファイル名505と中間ファイル名506と使用クラスタ507から構成される。端数クラスタファイルに格納される、余り分のデータに対応した中間ファイルのファイル名の情報が、中間ファイル名506として格納されている。
使用クラスタには、各中間ファイルに対する余り分のデータである端数クラスデータが、端数クラスタファイルのどのクラスタに格納されているかを示す情報が格納されている。具体的には、端数クラスデータが格納されている開始クラスタ番号と終了クラスタ番号が格納されている。
実施形態の場合、RUは3クラスタ分の容量を有するものであるから、端数クラスタファイル情報には、最大3個の中間ファイル名が記述可能である。これまでの説明からわかるように、静止画ファイルAをメモリカード110に格納する際に、静止画ファイルAのサイズを、RUのサイズで除算した余りが1クラスタのサイズ未満の場合、その静止画ファイルAは端数クラスタを1個利用することを意味する。余りが1クラスタのサイズより大きく2クラスタ分のサイズ未満の場合には、静止画ファイルAは端数クラスタを2個利用することを意味する。そして、余りが2クラスタ分のサイズより大きく3クラスタ分のサイズ未満の場合には、計算上は端数クラスタが3個あることになるが、実施形態の場合、RUは3クラスタ分のサイズであるので、端数クラスタを含まないと判断する。
上記のようにして端数クラスタ情報を生成することで、後述するファイル結合時に端数クラスタファイル内の端数クラスタデータと中間ファイルを結合することができる。上記実施形態は、端数クラスタ情報の一例であり、端数クラスタファイル内の端数クラスタデータと中間ファイルが結合できればよく、これに限られるものではない。
[ファイル結合]
次に、後述する本実施形態の静止画連続撮影処理における、ファイル結合に係る処理を、図6を用いて説明する。
図6(a)は、ファイル結合前のメモリカード110の状態を示す。図6(a)には、2つの静止画ファイルの中間ファイルと、それぞれの静止画ファイルに対応する端数クラスタデータが格納された1つの端数クラスタファイルが格納されていることを示している。つまり、連続撮影モードにて、2枚の画像を連写した場合である。それぞれのファイルの使用領域とクラスタチェーンの情報はメモリカード110の管理テーブル(File Allocation Table)に記述されている。
一方、図6(b)は、ファイル結合により、中間ファイルと端数クラスタデータが結合され、静止画ファイルとして成立させた状態を示す。端数ファイルに格納された、各静止画ファイルに対する端数クラスタデータは、クラスタの先頭アドレスから記録される。そのため、中間ファイルに後続して、端数クラスタデータが存在するように管理テーブルのクラスタチェーンの情報を変更することで、中間ファイルに対して端数クラスタデータを結合することができる。例えば、図6(a)の状態では、端数クラスタ情報には、静止画ファイル1の後端に接続すべき端数クラスが1つ存在し、静止画ファイル2の後端に接続すべき端数クラスが2つ存在することが記述されている。従って、CPU114は、静止画ファイル1の中間データの最後の「クラスタ3」に、クラスタ7が後続し、そのクラスタ7で記録が終了していること示すように管理テーブルを更新する。同様に、CPU114は、静止画ファイル2の中間データの最後の「クラスタ6」に、クラスタ8,9が後続し、そのクラスタ9で記録が終了していること示すように管理テーブルを更新する。上記の結果、図6(b)に示すように、連写モードで撮影した場合に、RU内に無駄な空き領域を発生せず、静止画像ファイルを詰めて記録することが可能になる。なお、この際に、中間ファイルの拡張子を、“.JPG”等に変更することも行う。なお、拡張子の文字列は、符号化方式に依存して決めることになるので、必ずしも“.JPG”である必要はない。例えば、実施形態における符号化方式がJPEG2000の場合には、拡張子を“.J2K”とすることになる。
[マウント処理]
次に、第1の実施形態に係る画像処理装置100のメモリカード110のマウント処理について、図8のフローチャートを用いて具体的な処理を説明する。
該フローチャートに対応する処理は、例えば画像処理装置100にメモリカード110の接続されている状態で、マウント開始指示に対応する制御信号をCPU114が受信し、書込み管理部117に対してマウント処理を要求したものとして説明する。
まずS801で、書込み管理部117は、メモリカード110から必要な情報を取得し、スピードクラスを適用可能な状態にする。次いで、S802で、書込み管理部117は、接続されたメモリカード110のファイルシステムをマウントする。次に、S803で、書込み管理部117は、メモリカード110からAUサイズを取得する。S804で、書込み管理部117は、RUサイズを決定する。RUサイズは、クラスタサイズ以上、AUサイズ未満であり、記録レートに応じて最小サイズが規格で定められているので、これを満たすように決定される。S805で、書込み管理部117は、メモリカード110から使用領域と未使用領域の管理テーブル(File Allocation Table)を読出し、FAT管理テーブルとして、メモリ118上に保持する。
FAT管理テーブルをメモリ118上に保持するのは、静止画連続撮影時にメモリカード110が通常書込みに移行するのを回避するためである。FAT管理テーブルは、RU未満のサイズとなりえる。また、FAT管理テーブルは、静止画ファイルなどのファイル保存時などに更新される可能性がある。即ち、通常モードによるクラスタ単位での書込みとなる可能性がある。
そのため、ファイル保存要求発生時、書込み管理部117はメモリ118上のFAT管理テーブルのみを更新し、FAT書込み要求が発生した場合のみ、メモリカード110の管理テーブルを更新するものとする。先に説明した、連写モードにおける管理テーブルも係る処理を経て行い、それが最終的に確定してから、実際に管理テーブルでメモリカード110を更新する処理を行う。また、ファイル保存時にクラスタ単位の書込みが発生する管理情報として、FAT管理テーブルとしたが、これに限られるものではなく、必要であればその他の管理情報もメモリカード110に保持するものとする。
[静止画連続撮影処理]
次に、第1の実施形態に係る画像処理装置100の静止画連続撮影処理について、図9のフローチャートを用いて具体的な処理を説明する。該フローチャートに対応する処理は、例えば前述したマウント処理が完了し、ユーザが操作部112を操作して、画像処理装置100が静止画連続撮影モードに設定させ、静止画連続撮影開始指示の入力を検知した場合にCPU114が実行するものである。
S901で、CPU114は、書込み管理部117が決定したRUサイズを取得し、メモリ118に、RUサイズ以上の端数クラスタ格納バッファの領域を確保する。次に、CPU114は、S902で、メモリ118に、端数クラスタ情報を格納するための領域を確保する。
S903で、操作部112からレリーズボタン押下の制御信号を検出したか否かを判断する。レリーズボタンの押下を示す制御信号を受信した場合は処理をS904に移し、なされていないと判断した場合は処理をS906に移す。S904で、1枚の静止画撮影を行う静止画撮影処理を実行する。そして、その撮影処理を終えて、S905にて、操作部112からレリーズボタン押下中の制御信号を検出したか否かを判断し、それ検出している限り、ステップS904の処理を実行する。また、レリーズボタンが非押下状態にあると判断した場合は、連続撮影が終了したものと判断し、処理をS906に移す。
S906にて、CPU114は、操作部112から静止画連続撮影モードの制御信号を検出したか否かを判断する。静止画連続撮影モードである判断とした場合は処理をS903に処理を戻し、なされていないと判断した場合は処理をS907に移す。
S907で、記録媒体制御回路111を介して、メモリカード110を通常モードに移行させる。即ち、メモリカード110に対し、クラスタ単位での書込みを可能とする。そして、S908で、中間ファイルと、端数クラスタファイル内の端数クラスタとの結合所処理である端数クラスタデータ結合処理を実行する。そして、S909で、記録媒体制御回路111を介して、メモリカード110をスピードクラスモードに移行させる。S910で、メモリ118に確保した端数クラスタ情報の領域を解放する。S911で、メモリ118に各方確保した端数クラスタ格納バッファの領域も解放する。
[静止画撮影処理]
ここで、S904で実行される静止画撮影処理について、図10のフローチャートを用いて詳述する。
まず、CPU114は、S1001にて、撮像素子駆動回路102、画像処理回路103を制御し、撮像した静止画に対して各種処理(ホワイトバランス処理等)を行い、画像データを画像メモリ104に格納させる。次いで、CPU114は、ステップS1002にて、画像変換回路115を制御し、画像メモリ104にある画像データの符号化処理を行い、JPEG画像データやサムネイル画像を生成する。そして、CPU114は、S1003で、前述した静止画ファイルフォーマットの静止画ファイルを作成する。ついて、CPU114は、作成した静止画ファイルのファイルサイズを取得する。S1005で、取得したファイルサイズに、端数クラスタデータが存在するか否かを判断する。
端数クラスタデータが存在する判断した場合は、処理をS1006に移し、存在しないと判断された場合にはS1007に移す。具体的には、ファイルサイズがRUサイズの整数倍かどうかを調べる。そして、整数倍でない場合は、ファイルサイズ以下で、RUサイズの整数倍の最大値となるサイズと、ファイルサイズとの差が、2クラスタ以上であるか否かを判別する。ファイルサイズ以下で、RUサイズの整数倍の最大値となるサイズと、ファイルサイズとの差分が、2クラスタ以上である場合は、端数クラスタデータが存在しないと判断する。ファイルサイズ以下で、RUサイズの整数倍の最大値となるサイズと、ファイルサイズとの差分が、2クラスタより小さい場合は、端数クラスタデータが存在すると判断する。
S1006に処理を進めた場合、CPU114は、静止画ファイルを中間ファイルと端数クラスタデータに分割する端数クラスタデータ処理を実行する。また、一方、S1007に進んだ場合、CPU114は、静止画ファイルをメモリカード110にファイル保存する。S1007での静止画ファイルはRUサイズの整数倍であるため、ファイル保存はスピードクラスで書き込むことができる。また、この場合、静止画ファイルの最後のデータが書き込まれるRUにおいて、空きとなるのは1クラスタ未満であるので、メモリカード110の記録領域を無駄にすることが無い。
[端数クラスタデータ処理]
ここで、S1006で実行される端数クラスタデータ処理について、図11のフローチャートを用いて詳述する。
CPU114は、S1101で、中間ファイルを保存する。具体的には、先に生成した画像ファイルの先頭から、ファイルサイズ以下で、RUサイズの整数倍の最大値で示される位置までを中間ファイルとし、メモリカード110に記録する。
次に、S1102には、CPU114は、端数クラスタデータを端数クラスタ格納バッファに格納する。端数クラスタデータは、中間ファイルとして保存されていない静止画ファイルの終端に位置する2クラスタ以下のデータである。また、端数クラスタ格納バッファは、端数クラスタデータをクラスタ単位毎に管理する。
S1103では、CPU114は、端数クラスタ格納バッファにRUサイズ分のデータが格納されたか否かを判断する。RUサイズ分のデータが格納されたと判断した場合は、処理をS1104に移し、なされていないと判断した場合は処理をS1105に移す。
S1104で、端数クラスタ格納バッファのRUサイズ分のデータを端数クラスタファイルとしてメモリカード110に記録する。そして、S1105で、端数クラスタ情報を更新する。具体的には、端数クラスタ情報の端数クラスタデータに対する情報(中間ファイル名506、使用クラスタ507)を更新する。また、S1104で、端数クラスタ格納ファイルを記録したのであれば、端数クラスタファイル名505の情報も更新も行う。
[端数クラスタデータ結合処理]
ここで、S909で実行される端数クラスタデータ結合処理について、図12のフローチャートを用いて詳述する。
先ず、S1202にて、CPU114は、メモリ118に端数クラスタ情報が存在するか否かを判断する。端数クラスタ情報が存在すると判断した場合は、処理をS1203に移し、存在しなければ、本端数クラスタデータ結合処理を完了する。
S1203に処理を進めた場合、CPU114は、端数クラスタ格納バッファに、端数クラスタデータが存在するか否かを判断する。端数クラスタデータが存在すると判断した場合は、処理をS1204に移し、存在しないと判断した場合は処理をS1206に移す。S1204では、端数クラスタ格納バッファの端数クラスタデータを端数クラスタファイルとしてメモリカード110に記録する。そして、S1205で、端数クラスタ情報を更新する。
CPU114は、S1206で、端数クラスタがどの中間ファイルと結合すべきなのかを調べるため、端数クラスタ情報から端数クラスタファイル情報を取得する。そして、S1207で、CPU114は、端数クラスタファイル情報内に格納された端数クラスタファイル名505を取得する。そして、S1208で、端数クラスタファイル情報にある中間ファイルの情報を取得する。具体的には、中間ファイル名506と使用クラスタ507を取得する。そして、CPU1209にて、S1209で、ファイル結合を実行する。具体的には、中間ファイルと、端数クラスタファイル内の中間ファイルに対応した端数クラスタデータを前述したファイル結合により、1つの静止画ファイルとして成立させる。また、中間ファイルに対応した端数クラスタデータの位置は、端数クラスタファイル情報の使用クラスタ507にある開始クラスタ番号と終了クラスタ番号によって特定する。なお、結合処理では、着目中間ファイルに後続して、端数クラスタファイルの該当するクラスタが接続されるように、メモリ118に用意されたFAT管理テーブルを更新する処理を行うものである。
S1210では、着目端数クラスタファイル情報にある全ての中間ファイルのファイル結合が完了した否かを判断する。完了したと判断した場合は、処理をS1211に移し、なされていないと判断した場合は処理をS1208に移す。
S1211にて、CPU114は、端数クラスタファイル情報に対する処理が完了した否かを判断する。完了したと判断した場合は、処理をS1212に移し、未処理の端数クラスタファイル情報があれば、処理をS1206に移す。S1212で、CPU114は、書込み管理部117にメモリ118内の更新後のFAT管理領域をメモリカード110に書込みするよう要求する。
以上説明したように、本実施形態によれば、静止画連続撮影時において、ファイルの断片化を回避したスピードクラスによる静止画の書込みを実現することができる。具体的には、静止画ファイルのRUサイズの整数倍のデータを中間ファイル、RUサイズに満たないデータを端数クラスタデータとして分割し、先に中間ファイルのみファイル保存する。また、静止画連続撮影終了時に中間ファイルと端数クラスタデータをファイル結合することで静止画ファイルとして成立させる。
<第2の実施形態>
上記第1の実施形態では、画像処理装置100は、静止画連続撮影時において、ファイルの断片化を回避したスピードクラスによる静止画の書込みについて説明した。本第2の実施形態では、動画像記録中に静止画撮影が実行されても、記録媒体内に断片化の発生することを抑制し、動画のストリームデータをスピードクラスで書込み続けることを特徴とする画像処理装置について説明する。
なお、本第2の実施形態において画像処理装置100の構成は第1の実施形態(図1参照)と同様であるため、その説明を省略する。
[動画記録中の静止画記録処理]
第2の実施形態に係る動画記録中の静止画記録処理について、図13のフローチャートを用いて詳述する。なお、このフローチャートに対応する処理は、例えば前述したメモリカード110のマウント処理が完了し、画像処理装置100が動画モードに設定されている状態で、動画記録開始指示に対応する制御信号をCPU114が操作部112から受信した際に開始されるものとして説明する。また、図13中のステップS1306、S1313の処理は、第1の実施形態で説明した図10、図12と同様であるため、その説明を省略する。
先ずS1301にて、CPU114は、書込み管理部117が決定したRUサイズを取得し、メモリ118内に、RUサイズ以上の端数クラスタ格納バッファの領域を確保する。次いで、S1302で、CPU114は、メモリ118に、端数クラスタ情報を格納するための領域を確保する。そして、S1303にて、動画記録を開始する。具体的には、CPU114が、撮像素子駆動回路102、画像処理回路103を制御し、動画の画像データを画像メモリ104に格納するように要求する。また、CPU114は、音声処理回路106を制御し、PCMバッファ107にPCM音声データを記録するように要求する。更に、CPU114は、画像変換回路115を制御し、符号化された動画像と音声とを多重化したストリームデータの生成を要求する。この結果、生成されたストリームデータはストリームバッファ108に一時的に格納され、記録媒体制御回路111によりメモリカード110に動画像ファイルとして記録処理が行われる。
S1304で、操作部112から、静止画の記録紙を指示するためのレリーズボタン押下(記録指示)の制御信号を検出したか否かを判断する。レリーズボタンが押下されていると判断した場合は処理をS1305に移し、なされていないと判断した場合は処理をS1308に移す。
S1305では、CPU114は動画記録を停止する。具体的には、CPU114が、撮像素子駆動回路102、画像処理回路103を制御し、動画の画像データの取得を停止する。また、音声処理回路106を制御し、PCM音声データの記録を停止する。更に、画像変換回路115を制御し、ストリームデータの生成を停止させる。そして、CPU114は、S1306にて静止画撮影処理を実行し、S1307にて動画記録を再開する。また、S1308に処理が進んだ場合には、ストリームデータ書込み処理を継続する。
S1309では、CPU114は操作部112から動画記録停止ボタンの制御信号を検出したか否かを判断する。動画記録停止ボタンが押下されていると判断した場合は処理をS1310に移し、なされていないと判断した場合は処理をS1304に移す。ステップS1310に移行した場合、CPU114は動画記録を停止する。そして、S1311で、CPU114は、記録媒体制御回路111を介して、メモリカード110を通常モードに移行させる。そして、S1312にて、動画ファイル保存処理を実行する。ステップ1313では、CPU114は、端数クラスタデータ結合処理を実行する。この端数クラスタデータ結合処理は第1の実施形態の説明を参照されたい。そして、S1314で、記録媒体制御回路111を介して、メモリカード110をスピードクラスモードに移行させる。そして、CPU114は、S1315にて、端数クラスタ情報の領域を解放し、S1316で、端数クラスタ格納バッファの領域を解放する。
[ストリームデータ書込み処理]
ここで、S1308で実行されるストリームデータ書込み処理について、図14のフローチャートを用いて詳述する。
先ず、CPU114は、S1401で、ストリームバッファ108に格納されているデータサイズを取得する。そして、S1402で、データサイズがRUサイズ以上か否かを判定する。データサイズがRUサイズ以上と判断した場合は処理をS1403に移し、データサイズがRUサイズ未満と判断した場合は本処理を終える。
S1403では、CPU114は、書込みサイズを算出する。具体的には、ストリームバッファ108に格納されているデータのうち、RUサイズの整数倍を書き込み対象のサイズとして決定する。そして、S1404で、CPU114は、ストリームバッファのデータをS1403で算出した書込みサイズだけ、ファイル書込みする。なお、ストリームバッファのデータ書込みが完了した時点で、ストリームバッファ108に格納されているデータサイズを、書込みを終えたサイズ分だけ減算する。例えば、RUサイズのN倍のサイズを1回の書き込み対象のサイズとした場合、記録媒体制御回路111は、N個の空きRUを指定して、書き込みコマンドを送信する。
[動画ファイル保存処理]
S1312で実行される動画ファイル保存処理について、図15のフローチャートを用いて詳述する。この時点で、動画の撮影は停止されており、未記録の動画データがストリームバッファ108に格納されていることになる点に注意されたい。
CPU114は、S1501にて、記録媒体制御回路111を介して、メモリカード110を通常モードに移行させる。そして、S1502で、ストリームバッファ108に格納されている残りのデータをファイル書込みする。そして、S1503にて、ストリームデータに動画記録情報などを付加して、動画ファイルを生成する。そして、S1504で、動画ファイルとしてメモリカード110に記録する。
以上説明したように、本第2の実施形態の画像処理装置は、動画撮影において、動画記録中に静止画の記録を行う場合に、ファイルの断片化を回避し、動画のストリームデータをスピードクラスで書込み続けることができる。具体的には、動画記録中に静止画撮影が実行された場合、静止画ファイルのRUサイズの整数倍のデータを中間ファイル、RUサイズに満たないデータを端数クラスタデータとして分割し、先に中間ファイルを記録する。そして、動画記録中に、複数回、静止画記録が指示され、端数クラスタデータが1RUのサイズに達した時点で端数クラスタファイルがメモリカード110に記録される。また、動画記録撮影終了時に中間ファイルと端数クラスタデータをファイル結合することで静止画ファイルとして成立させる。
[第3の実施形態]
上記第1、第2の実施形態では、画像処理装置100は、静止画連続撮影時、または、動画記録中の静止画記録時時に静止画ファイルのRUサイズの整数倍のデータを中間ファイル、RUサイズに満たないデータを端数クラスタデータとして分割する。また、先に中間ファイルを記録し、端数クラスタデータは、複数の静止画の端数クラスタデータがRUサイズとなった場合に端数クラスタファイルとして記録する。更に、静止画連続撮影、または、動画記録が完了した時点で、中間ファイルと端数クラスタファイル内の端数クラスタデータのファイル結合を行い、静止画ファイルとして成立させるものとした。
例えば、メモリカード110やバッテリが抜かれる可能性があることを検知した場合やバッテリ残量が少なくなったなどの場合には、静止画連続撮影や動画記録を速やかに終了させることが望ましい。そのためには、メモリ118上に保持しているFAT管理テーブルをメモリカード110に書込み、それまでに保存したファイルを正式に保存した状態にする必要がある。更に、中間ファイルと端数クラスタファイル内の端数クラスタデータのファイル結合をする必要がある。しかしながら、ファイル結合が間に合わず、メモリカード110に中間ファイルと端数クラスタファイルが残されたままの状態となり、静止画ファイルとして成立していないファイルが存在する可能性がある。
そこで、第3の実施形態では、メモリカード110に中間ファイルと端数クラスタファイルが残されていた場合、ユーザの指示、或いは、電源投入時にそのファイル結合し、静止画ファイルとして成立させること(静止画ファイル回復処理)を特徴とする画像処理装置について説明する。なお、本第3の実施形態において画像処理装置100の構成は第1の実施形態(図1参照)と同様であるため、その説明を省略する。
[静止画ファイル回復処理の概要]
まずは、本実施形態の静止画ファイル回復処理に係る処理の概要を、図16を用いて説明する。図16は、メモリカード110の構成を示した図である。
なお、本実施形態において、メモリカード110の構成をDCFメディア規定に準拠した構成として説明するが、これに限られるものではない。例えば、ファイルの名前を「4文字の英数字+4桁の連番数字(0001〜9999).拡張子」で構成するが、これに限られるものではない。
図示における符号1601は、静止画ファイルまたは動画ファイルを保存するためのフォルダ1601である。フォルダ1601には、完成された静止画ファイル1602、未完状態の中間ファイル1603、1604、1605、1607.1608、1610が存在していることを示している。また、端数クラスタファイル1606、1609が格納されていることも示している。中間ファイルのファイル名は、静止画ファイルの拡張子を「DAT」に変えたものとする。
ここで、端数クラスタファイル1606、1609のファイル名は、端数クラスタファイルに格納されている端数クラスタデータと関連を持つ中間ファイルの2組の4桁の連番数字から構成されているものとする。具体的には、端数クラスタファイルの上位4桁は、端数クラスタファイルの先頭に格納されている端数クラスタデータと関連を持つ中間ファイルの4桁の連番数字である。また、端数クラスタファイルの下位4桁は、端数クラスタファイルの終端に格納されている端数クラスタデータと関連を持つ中間ファイルの4桁の連番数字である。即ち、図16における端数クラスタファイル1606のファイル名は、“00020004,DAT”となっているので、その端数クラスタファイル1606には、中間ファイル1603乃至1605の端数クラスタデータが格納されていることを示す。なお、上記の端数クラスタファイルのファイル名は一例であって、これ以外でも良いのはもちろんである。
符号1650は、端数クラスタファイル1606に格納されているデータを例を示している。この端数クラスタファイル1606には、中間ファイル1603、1604、1605の端数クラスタデータが格納されていること示す。符号1651は、端数クラスタファイル1609に格納されているデータを例を示している。この端数クラスタファイル1609には、中間ファイル1605、1607、1608の端数クラスタデータが格納されていること示す。中間ファイル1605(中間ファイル名“IMG_0004.DAT”)の端数クラスタは、2つの端数クラスタファイル1606,1609に格納されていることに注意されたい。
符号1670は、中間ファイル1603と端数クラスタファイル1606の中の端数クラスタデータを結合し、静止画ファイルとして成立させた場合のファイル構成である。符号1671は、中間ファイル1605と端数クラスタファイル1606、及び、1609の中の端数クラスタデータを結合し、静止画ファイルとして成立させた場合のファイル構成である。
まず、操作部112から静止画ファイル回復の要求がなされると、画像処理装置100のCPU114は、端数クラスタファイルを検索する。次に、端数クラスタファイルのファイル名を調べる。図16の例では、端数クラスタファイル1606、1609の2つが発見されることになる。それぞれのファイル名の上位4ケタは“0002”,“0004”であるので、値の小さい順に端数クラスタファイルを順序つける。ここで、端数クラスタファイル1606の上位4ケタは“0002”であるので、その端数クラスタファイルの先頭(最初)には、中間ファイル1603(“IMG_0002.DAT”)の端数クラスタデータが格納されていることがわかる。次に、中間ファイル1603(“IMG_0002.DAT”)に格納されているDCFヘッダ部を参照し、静止画ファイルとしてのファイルサイズを取得する。次に、取得したファイルサイズと中間ファイル1603のサイズから端数クラスタファイル1606に格納されている端数クラスタデータのサイズ(使用しているクラスタ数とも言える)を調べる。最後に、中間ファイル1603の後端に、端数クラスタファイル1606の端数クラスタデータ(不足分)の結合を行い静止画ファイルとして成立させる。
これを端数クラスタファイル1606のファイル名の下位4桁“0004”に対応する中間ファイル1605(“IMG_0004.DAT”)まで繰り返すことで、静止画ファイルを回復させる。ただし、中間ファイル1605に端数クラスタファイル1606内の端数クラスタを結合しても、中間ファイル1605のDCFヘッダに格納されたファイルサイズに満たない。この場合、CPU114は残りの端数クラスタは別の端数クラスタファイル内に格納されていると判定する。実施形態の場合、2番目に順序付けられた端数クラスタファイル1609が存在し、しかも、そのファイル名の上位4ケタが“0004”である。よって、CPU114は、中間ファイル1605の不足分が、端数クラスタファイル1609に存在するとして判定でき、今度は、端数クラスタファイル1609を基準に上記処理を行う。そして、発見した端数クラスタファイルの数だけ、上記処理を行う。なお、結合処理を終えた場合、発見した端数クラスタファイル1606、1609をメモリカード110から削除する。
上記の結果、メモリカード110に中間ファイルと端数クラスタファイルが残されたままの状態であった場合、成立可能な中間ファイルについては可能な限り、完成された静止画像ファイルに復元できることとなる。
なお、図16において、中間ファイル1610(ファイル名“IMG_0006.DAT”)の端数クラスタを格納することになっていた端数クラスタファイルはメモリカード110には存在しない。よって、この中間ファイル1619を、完成された静止画像ファイルに復元することはできない。また、中間ファイル1608(ファイル名“IMG_0006.DAT”)を完成させるための端数クラスタが、端数クラスタファイル1609内のデータだけで足りない場合も同様である。このように、完成された静止画ファイルに復元できない中間ファイルが存在した場合には、そのファイルを削除するものとする。ただし、ユーザに確認メッセージを表示して、削除許可があった場合に削除処理を行ってもよい。
[端数クラスタ情報]
次に、本第3の実施形態に係る端数クラスタ情報を、図17を用いて説明する。図17中の符号1701、1702、1703は、第1の実施形態の図5における符号505、506、507と同様であるため、その説明を省略する。符号1704は、保存フラグであり、端数クラスタファイル名1701が、メモリカード110に保存されたかどうかを示す。保存した場合は、保存フラグを保存済みとし、保存していない場合は、未保存とする。図17の状態で、例えばバッテリ切れとなって、端数クラスタファイル名“00060007.DAT”をメモリカード110に保存できなかった状態が、図16に示す状態であったものと理解されたい。
[静止画ファイル回復における静止画連続撮影処理]
次に、第3の実施形態に係る画像処理装置100の静止画連続撮影処理、その処理における端数クラスタデータ処理を除き、図9、図10、図12のフローチャートと同じである。この処理はフローチャートに対応する処理は、例えば前述したメモリカード110のマウント処理が完了し、画像処理装置100が静止画連続撮影モードに設定されている状態で、静止画連続撮影の開始指示に対応する制御信号をCPU114が受信した際に開始されるものとして説明する。なお、上記の通り、本第3の実施形態における処理は、第1の実施形態における図9、図10、図12と同じであるため、以下では端数クラスタデータ処理を図18のフローチャートに従って説明する。
先ず、S1801で、CPU114は中間ファイルを保存する。具体的には、静止画ファイルのサイズ内であって、RUサイズの整数倍の最大値を中間ファイルサイズとし、静止画ファイルの先頭からその中間ファイルサイズ分だけ、中間ファイルとしてメモリカード110に記録する。次いでS1802にて、CPU114は、静止画ファイルの終端の未保存部分の端数クラスタデータを端数クラスタ格納バッファに格納する。また、端数クラスタ格納バッファは、端数クラスタデータをクラスタ単位毎に管理する。
CPU114は、S1803にて、端数クラスタ情報の保存フラグ1704を参照し、未保存の端数クラスタファイル情報が存在するか否かを判断する。未保存の端数クラスタファイル情報が存在すると判断した場合は、処理をS1804に移し、存在しないと判断した場合は、処理をS1807に移す。
S1804において、CPU114は、端数クラスタファイル情報の端数クラスタファイル名1701の上位4桁が“FFFF”が存在するか否かを判断する。上位4桁が“FFFF”が存在すると判断した場合は、処理をS1805に移し、存在しないと判断した場合は、処理をS1806に移す。なお、“FFFF”は、端数クラスタ格納バッファに1つの端数クラスタデータしか存在しないことを示す識別子であるが、識別可能であればよいので、これに限定されるものはない。
S1805に処理が進んだ場合、CPU114は端数クラスタファイル名1701の上位4桁を下位4桁の開始連番数字として認識し、S1806にて、端数クラスタファイル名1701の下位4桁を中間ファイルの終端連番数字と認識する。
一方、未保存の端数クラスタファイル情報が存在しないと判断した場合は、CPU114は、S1807にて、新たな端数クラスタファイル情報を作成し、S1808で、保存フラグを未保存とする。また、CPU114は、S1809にて、端数クラスタファイル名1701の上位4桁を“FFFF”、下位4桁を中間ファイルの連番数字とする。
S1810では、CPU114は、端数クラスタ格納バッファにRUサイズ分のデータが格納されたか否かを判断する。RUサイズ分のデータが格納されたと判断した場合は、処理をS1811に移し、なされていないと判断した場合は、処理をS1813に移す。そして、S1811にて、CPU114は、端数クラスタ格納バッファのRUサイズ分のデータを端数クラスタファイルとしてファイル保存する。ファイル保存する際のファイル名は、端数クラスタファイル名1701に格納されているファイル名とする。S1812で、端数クラスタ情報の保存フラグ1704を保存済みとする。
S1813にて、CPU114は、全ての端数クラスタデータを端数クラスタ格納バッファに格納されたか否かを判断する。格納されたと判断した場合は、端数クラスタデータ結合処理を完了し、なされていないと判断した場合は、処理をS1802に移す。なお、全ての端数クラスタデータを端数クラスタ格納バッファに格納できていないと判断した場合は、端数クラスタデータが複数の端数クラスタファイルを跨いで格納されることを示す。
[静止画ファイル回復処理]
次に、第3の実施形態に係る画像処理装置100の静止画ファイル回復処理を、図19、図20のフローチャートを用いて具体的な処理を説明する。該フローチャートに対応する処理は、例えば前述したメモリカードのマウント処理が完了し、ユーザが操作部112から静止画ファイル回復指示入力を行い、それに対応するボタン押下の制御信号をCPU114が受信した際に開始されるものとして説明する。また、メモリカードのマウント処理にて、この処理を自動的に開始しても構わない。この場合、以下の説明から明らかになるように、電源オンやメモリカードを装着等によって、マウント処理が開始され、静止画ファイルを回復する処理が行われることになる。
先ず、S1901にて、CPU114は、メモリカード110内にて端数クラスタファイルを検索し、S1902にて、処理すべき端数クラスタファイルが存在するか否かを判断する。端数クラスタファイルが存在すると判断した場合は、処理をS1903に移し、存在しないと判断した場合は、ステップS1913に進む。
S1903では、CPU114は、端数クラスタファイル名の上位4桁と下位4桁の連番数字を取得する。そして、S1904にて上位4桁が“FFFF”であるか否かを判断する。“FFFF”であると判断した場合は、処理をS1905に移し、“FFFF”でないと判断した場合は、処理をS1906に移す。S1905にて。CPU114は、上位4桁を下位4桁の開始連番数字と認識し、S1906で、上位4桁の連番数字をカウンタ値に格納する。
S1907にて。CPU114は、カウンタ値と一致する中間ファイルが存在するか否かを判断する。中間ファイルが存在すると判断した場合は、処理をS1908に移し、存在しないと判断した場合は、処理をS1910に移す。例えば、カウンタ値が“0002”であれば、"IMG_0002.DAT"の中間ファイルを検索し、存在するか否かを判断する。もし、該当するファイルが存在した場合には、CPU114は、S1908にて、ファイル回復処理を実行する。
S1909で、ファイル回復が完了したか否かを判断する。完了したと判断した場合は、処理をS1910に移し、完了していない判断した場合は、処理をS1912に移す。なお、ファイル回復が完了していないと判断した場合は、端数クラスタデータが複数の端数クラスタファイルを跨いで格納されていることを示す。よって、次の端数クラスタファイルを検索する処理に移行する。
S1910にて、CPU114は、次の中間ファイルを検索するためにカウンタ値をインクリメントし、S1911にて、カウンタ値が下位4桁の連番数字に対して大きいか否かを判定する。カウンタ値が下位4桁の連番数字に対して大きいと判断した場合は、処理をS1912に移し、カウンタ値に対して小さい、もしくは等しいと判定した場合は、処理をS1907に移す。S1912にた、CPU114は、端数クラスタファイルの端数クラスタデータに対する全てのファイル結合が完了したと判断し、端数クラスタファイルを削除する。
上記のようにして、全端数クラスタファイルについての処理を終えると、CPU114はS1913に処理を進め、完成された静止画ファイルに復元できなかった中間ファイルの削除処理を行い、本処理を終える。なお、ここでは、未完成の中間ファイルを自動的に削除するものとしたが、そのファイルのサイズ内で復号処理を行えば、大部分の画像を復元できる可能性は残っている。そこで、削除しても良いか否かをユーザに問い合わせるメッセージを表示し、ユーザから削除了解の指示を受けて削除するようにしても良い。
また、DCFファイルヘッダの解析から、本来のファイルサイズは判明しているので、予め設定した色(例えば白)を示すダミーデータのクラスタを作成して、未完の中間データと結合して、見かけ上の完成された静止画ファイルを復元してもよい。この結果、通常のデコーダで、画像の端部が欠けるものの、エラー無く復号することも可能になる。
[ファイル回復処理]
ここで、S1908で実行されるファイル回復処理について、図20のフローチャートを用いて詳述する。
先ず、S2001にて、CPU114は着目中間ファイルのDCFヘッダ部からファイルサイズを取得する。具体的には、着目中間ファイルのDCFヘッダ部における、図7に示す撮影情報やパラメータなどのメタデータA(704)からファイルサイズを取得する。そして、CPU114は、S2002にて、上記のS2001で取得したファイルサイズから、着目中間ファイルが占有しているRU数に基づくサイズを減算し、不足分のクラスタ数を算出する。そして、S2003では、CPU114は、着目端数クラスタファイル内に、着目中間ファイルの不足分の全クラスタが含まれるか否かを判定する。具体的には、S2002で算出したクラスタ数と、着目端数クラスタファイル内の未結合処理のクラスタ数とを比較し、前者が後者以下であるか否かを判定する。
S2003の判定がYesの場合、処理はS2004に進み、CPU114は、着目端数クラスタファイル内の未結合処理の先頭のクラスタから不足分のクラスタ数のデータを、着目中間ファイルへの結合対象として決定する。そして、S2005にて、着目中間ファイルが回復されるものとして完了する。
一方、S2003の判定がNo、すなわち、着目端数クラスタファイル内の未結合クラスタだけでは不十分である場合にはS2007に進み、着目端数クラスタファイル内の未結合処理の先頭のクラスタから最後のクラスタまでのデータを、着目中間ファイルへの結合対象として決定する。ただし、着目中間ファイルはこの結合処理を行っても完成しないので、CPU114は未回復として決定する。この結果、着目中間ファイルは、次回、本処理が実行される場合にも結合処理を行う対象として扱われる。
S2006では、着目中間ファイルの後端に、上記S2004、またはS2007で決定したクラスタが後続するものとして、メモリ118の管理領域を更新する。なお、S2004経た場合には、ファイル名の拡張子も“.JPG”に変更する。
以上説明したように、本第3の実施形態によれば、メモリカード110に中間ファイルと端数クラスタファイルが残されたままの状態となり、静止画ファイルとして成立していないファイルが存在しても、端数クラスタファイル内に不足分のクラスタが存在する限り、その中間ファイルを正式な静止画像ファイルとして回復させることができる。
上記の通り、本第1乃至第3の実施形態によれば、スピードクラスを用いてストリームデータを記録中に静止画を撮影する際、また、スピードクラスを用いた静止画の連続撮影の際に、スピードクラスによる書込みを継続しながら、記録媒体の断片化を回避し、空き領域を有効に利用することが可能になる。
(その他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
100…画像処理装置、101…撮像素子、102…撮像素子駆動回路、103…画像処理回路、104…画像メモリ、105…マイク、106…音声処理回路、107…PCMバッファ、108…ストリームバッファ、109…静止画バッファ、110…メモリカード、111…記録媒体制御回路、112…操作部、113…表示部、114…CPU、115…画像変換回路、116…ファイルシステム、117…書込み管理部、118…メモリ

Claims (12)

  1. 撮像手段と、
    前記撮像手段により得られた静止画データを含む静止画ファイルを、所定のファイルシステムに従って記録媒体に書き込む記録手段と、
    前記記録媒体における、前記所定のファイルシステムに規定された記録単位の整数倍のサイズを書き込み単位として前記静止画ファイルの書き込みを行うように、前記記録手段を制御する制御手段と、
    メモリとを備え、
    前記制御手段は、連続して複数の画面の静止画データを前記記録媒体に記録する所定の記録モードにおいて、一つの前記静止画ファイルについて、前記静止画ファイルのサイズ以下で、前記書き込み単位の整数倍の最大値となる第1のデータと、前記静止画ファイルのうち前記第1のデータを除いた第2のデータとを生成し、前記第1のデータを含む第1のファイルを前記記録媒体に書き込むように前記記録手段を制御するとともに、前記第2のデータを前記メモリに記憶し、前記所定の記録モードにおける静止画データの記録中に、前記メモリに記憶された、複数の前記静止画ファイルから生成された前記第2のデータのサイズが前記書き込みサイズに達したことに応じて、複数の前記静止画ファイルから生成された前記第2のデータを含む第2のファイルを記録するように前記記録手段を制御し、
    前記所定の記録モードにおける静止画データの記録が終了した後、複数の前記第1のファイルそれぞれに対し、前記第2のファイルに格納された前記第2のデータを結合することにより、複数の静止画ファイルを生成する制御を行うことを特徴とする撮像装置。
  2. 撮像手段と、
    前記撮像手段により得られた静止画データを含む静止画ファイルと、前記撮像手段により得られた動画データを含む動画ファイルとを、所定のファイルシステムに従って記録媒体に書き込む記録手段と、
    前記記録媒体における、前記所定のファイルシステムに規定された記録単位の整数倍のサイズを書き込み単位として書き込みを行うように、前記記録手段を制御する制御手段と、
    メモリとを備え、
    前記制御手段は、前記動画データの記録中における静止画の記録指示に応じて、前記記録指示に応じて記録する一つの静止画ファイルについて、前記静止画ファイルのサイズ以下で、前記書き込み単位の整数倍の最大値となる第1のデータと、前記静止画ファイルのうち前記第1のデータを除いた第2のデータとを生成し、前記動画ファイルの書き込みを停止して前記第1のデータを含む第1のファイルを前記記録媒体に書き込み、前記第1のファイルの書き込み終了後に前記動画ファイルの書き込みを再開するように前記記録手段を制御するとともに、前記第2のデータを前記メモリに記憶し、前記動画データの記録中に前記メモリに記憶された、複数の前記静止画ファイルから生成された前記第2のデータのサイズが前記書き込みサイズに達したことに応じて、複数の前記静止画ファイルから生成された前記第2のデータを含む第2のファイルを記録するように前記記録手段を制御し、
    前記動画データの記録が終了した後、複数の前記第1のファイルそれぞれに対し、前記第2のファイルに格納された前記第2のデータを結合することにより、複数の静止画ファイルを生成する制御を行うことを特徴とする撮像装置。
  3. 前記制御手段は、前記結合処理を終えたときに前記第2のファイルを削除する手段を更に有することを特徴とする請求項1又は2に記載の撮像装置。
  4. 前記記録媒体内に、前記第1のファイル、前記第2のファイルが存在するか否かを判定する判定手段と、
    該判定手段で第2のファイルが存在すると判定した場合、当該第2のファイル内に格納されたクラスタが結合すべき第1のファイルを特定し、当該特定した第1のファイルに前記クラスタを結合することで、前記第1のファイルを完成された静止画ファイルとして回復する回復手段と
    を更に有することを特徴とする請求項1乃至3のいずれか1項に記載の撮像装置。
  5. 前記判定手段は、ユーザからの所定の指示入力があった場合に行われることを特徴とする請求項4に記載の撮像装置。
  6. 前記判定手段は、電源投入した際の前記記録媒体のファイルシステムのマウント処理にて実行されることを特徴とする請求項4に記載の撮像装置。
  7. 前記第1のファイルのファイル名は、予め設定された第1の文字列と、連番を示す第2の文字列、並びに、第1のファイルであることを示す所定の拡張子を表す文字列で構成され、
    前記第2のファイルのファイル名は、当該第2のファイル内に格納された端数データが結合されるべき第1のファイルちの最初の第1のファイルにおける前記第2の文字列と最後の第1のファイルにおける前記第2の文字列とする
    ことを特徴とする請求項1乃至6のいずれか1項に記載の撮像装置。
  8. 前記記憶媒体はメモリカードであることを特徴とする請求項1乃至7のいずれか1項に記載の撮像装置。
  9. 撮像装置におけるプロセッサに読み込ませ実行させることで、前記撮像装置を請求項1乃至8のいずれか1項に記載の撮像装置として機能させるためのプログラム。
  10. 請求項9に記載のプログラムを格納した、コンピュータが読み取り可能な記憶媒体。
  11. 撮像手段と、前記撮像手段により得られた静止画データを含む静止画ファイルを、所定のファイルシステムに従って記録媒体に書き込む記録手段と、メモリとを備える撮像装置の制御方法であって、
    制御手段が、前記記録媒体における、前記所定のファイルシステムに規定された記録単位の整数倍のサイズを書き込み単位として前記静止画ファイルの書き込みを行うように、前記記録手段を制御する制御工程とを有し、
    当該制御工程は、
    連続して複数の画面の静止画データを前記記録媒体に記録する所定の記録モードにおいて、一つの前記静止画ファイルについて、前記静止画ファイルのサイズ以下で、前記書き込み単位の整数倍の最大値となる第1のデータと、前記静止画ファイルのうち前記第1のデータを除いた第2のデータとを生成し、前記第1のデータを含む第1のファイルを前記記録媒体に書き込むように前記記録手段を制御するとともに、前記第2のデータを前記メモリに記憶し、前記所定の記録モードにおける静止画データの記録中に、前記メモリに記憶された、複数の前記静止画ファイルから生成された前記第2のデータのサイズが前記書き込みサイズに達したことに応じて、複数の前記静止画ファイルから生成された前記第2のデータを含む第2のファイルを記録するように前記記録手段を制御し、
    前記所定の記録モードにおける静止画データの記録が終了した後、複数の前記第1のファイルそれぞれに対し、前記第2のファイルに格納された前記第2のデータを結合することにより、複数の静止画ファイルを生成する制御を行う
    ことを特徴とする撮像装置の制御方法。
  12. 撮像手段と、前記撮像手段により得られた静止画データを含む静止画ファイルと前記撮像手段により得られた動画データを含む動画ファイルとを所定のファイルシステムに従って記録媒体に書き込む記録手段と、メモリとを備える撮像装置の制御方法であって、
    制御工程が、前記記録媒体における、前記所定のファイルシステムに規定された記録単位の整数倍のサイズを書き込み単位として書き込みを行うように、前記記録手段を制御する制御工程を有し、
    当該制御工程は、
    前記動画データの記録中における静止画の記録指示に応じて、前記記録指示に応じて記録する一つの静止画ファイルについて、前記静止画ファイルのサイズ以下で、前記書き込み単位の整数倍の最大値となる第1のデータと、前記静止画ファイルのうち前記第1のデータを除いた第2のデータとを生成し、前記動画ファイルの書き込みを停止して前記第1のデータを含む第1のファイルを前記記録媒体に書き込み、前記第1のファイルの書き込み終了後に前記動画ファイルの書き込みを再開するように前記記録手段を制御するとともに、前記第2のデータを前記メモリに記憶し、前記動画データの記録中に前記メモリに記憶された、複数の前記静止画ファイルから生成された前記第2のデータのサイズが前記書き込みサイズに達したことに応じて、複数の前記静止画ファイルから生成された前記第2のデータを含む第2のファイルを記録するように前記記録手段を制御し、
    前記動画データの記録が終了した後、複数の前記第1のファイルそれぞれに対し、前記第2のファイルに格納された前記第2のデータを結合することにより、複数の静止画ファイルを生成する制御を行う
    ことを特徴とする撮像装置の制御方法。
JP2014098889A 2014-05-12 2014-05-12 撮像装置及びその制御方法及びプログラム及び記憶媒体 Pending JP2015216538A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014098889A JP2015216538A (ja) 2014-05-12 2014-05-12 撮像装置及びその制御方法及びプログラム及び記憶媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014098889A JP2015216538A (ja) 2014-05-12 2014-05-12 撮像装置及びその制御方法及びプログラム及び記憶媒体

Publications (1)

Publication Number Publication Date
JP2015216538A true JP2015216538A (ja) 2015-12-03

Family

ID=54753031

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014098889A Pending JP2015216538A (ja) 2014-05-12 2014-05-12 撮像装置及びその制御方法及びプログラム及び記憶媒体

Country Status (1)

Country Link
JP (1) JP2015216538A (ja)

Similar Documents

Publication Publication Date Title
JP4913085B2 (ja) マルチ画像ファイル編集装置、マルチ画像ファイル編集プログラム、マルチ画像ファイル編集方法
JP6429588B2 (ja) 画像処理装置及び画像処理方法
JP2010154506A (ja) 画像ファイル生成装置、カメラ、および画像ファイル生成プログラム
JP2009118215A (ja) 撮像装置
US8913159B2 (en) Recording apparatus for storing a data file of image data according to a predetermined file name
JP5268569B2 (ja) 記録装置及び記録方法
JP5021546B2 (ja) マルチ画像ファイル作成装置、マルチ画像ファイル作成プログラム、マルチ画像ファイル作成方法
JP2005109648A (ja) 撮像装置及び動画生成方法
CN105407282A (zh) 一种照相和回放的实现方法
US8761573B2 (en) Recording device, imaging and recording device, recording method, and program
JP2015216538A (ja) 撮像装置及びその制御方法及びプログラム及び記憶媒体
CN103905694A (zh) 一种关键帧处理方法及系统
JP4724551B2 (ja) 動画像処理装置及び動画像処理方法
JP2015216539A (ja) 撮像装置及びその制御方法及びプログラム及び記憶媒体
JP6278353B2 (ja) 記録装置、記録方法、プログラム、ならびに撮像装置
JP2004363825A (ja) 記録再生装置、記録再生方法、その記録媒体およびプログラム
JP2007200306A (ja) 記録装置、記録方法および記録プログラム
JP2006319993A (ja) デジタルカメラ
JP5414844B2 (ja) 撮像装置
JP5369647B2 (ja) 画像処理装置、および画像処理プログラム
JP5396760B2 (ja) 記録制御装置及び撮像装置
JP4693735B2 (ja) 静止画ファイル記録編集装置
JP2007134910A (ja) 撮像装置、そのメモ情報付加方法、メモ情報候補リスト作成方法、プログラム及びコンピュータ読み取り可能な記録媒体
JP2010009205A (ja) 記録制御装置
JP4203960B2 (ja) 映像音声ファイル生成装置およびノンリニアビデオ編集装置