(57)【特許請求の範囲】
【請求項１】
所定時間間隔でフレーム画像データを順次出力する撮像手段と、
前記撮像手段から出力される所定の複数フレーム分の画像データを一時的に保持可能な複数エリアを有するバッファと、
撮影指示を与える撮影指示手段と、を備え、
前記撮影指示手段により撮影指示が与えられたときに、前記バッファに保持されている複数フレーム分の画像データを、間引かずにそのまま記録メディアに転送して保存する撮像装置において、
前記バッファの空きエリアの有無に関わらず、前記撮像手段から出力される最新のフレーム画像データを保持させるために、古いフレーム画像データほど高い間引き率となるように、前記バッファ内のフレーム画像データを削除する削除手段と、
前記削除手段により削除されたフレーム画像データが保持されていたエリアに、前記最新のフレーム画像データを書き込む書込手段と、
を更に備えたことを特徴とする撮像装置。
【請求項２】
前記削除手段により削除されるフレーム画像データの間引き率は、上限及び下限が固定されており、当該上下限間の遷移態様は、ユーザが任意に設定できる、
ことを特徴とする請求項１に記載の撮像装置。
【請求項３】
前記削除手段は、前記撮像手段のフレーム画像データ出力間隔に同期して動作し、１回の動作で複数のフレーム画像データを削除しない、
ことを特徴とする請求項１又は２に記載の撮像装置。
【請求項４】
前記バッファの各エリアに保持されるフレーム画像データの時系列順位を示すためのカウンタを更に備え、
前記バッファに前記最新のフレーム画像データが保持される度に、前記カウンタの内容を更新する、
ことを特徴とする請求項１から３のいずれか１項に記載の撮像装置。
【請求項５】
所定時間間隔でフレーム画像データを順次出力する撮像手段と、
前記撮像手段から出力される所定の複数フレーム分の画像データを一時的に保持可能な複数エリアを有するバッファと、
撮影指示を与える撮影指示手段と、を備え、
前記撮影指示手段により撮影指示が与えられたときに、前記バッファに保持されている複数フレーム分の画像データを、間引かずにそのまま記録メディアに転送して保存する撮像装置において、
前記バッファの空きエリアの有無に関わらず、前記撮像手段から出力される最新のフレーム画像データを保持させるために、古いフレーム画像データほど高い間引き率となるように、前記バッファ内のフレーム画像データを削除し、
削除されたフレーム画像データが保持されていたエリアに、前記最新のフレーム画像データを書き込む、
ことを特徴とする撮像方法。
【請求項６】
所定時間間隔でフレーム画像データを順次出力する撮像手段と、
前記撮像手段から出力される所定の複数フレーム分の画像データを一時的に保持可能な複数エリアを有するバッファと、
撮影指示を与える撮影指示手段と、を備え、
前記撮影指示手段により撮影指示が与えられたときに、前記バッファに保持されている複数フレーム分の画像データを、間引かずにそのまま記録メディアに転送して保存する撮像装置のコンピュータを、
前記バッファの空きエリアの有無に関わらず、前記撮像手段から出力される最新のフレーム画像データを保持させるために、古いフレーム画像データほど高い間引き率となるように、前記バッファ内のフレーム画像データを削除する削除手段と、
前記削除手段により削除されたフレーム画像データが保持されていたエリアに、前記最新のフレーム画像データを書き込む書込手段と、
して機能させるための撮像プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データを撮像する撮像装置、撮像方法および撮像プログラムに関する。
【背景技術】
【０００２】
撮像した画像データをバッファに順次記憶し、画像や音声に変化があると、連続して撮像された複数の連写画像データをバッファから読み出して、記録メディアに記録するカメラが知られている（例えば、特許文献１参照）。このカメラによれば、画像や音声に変化があったことを検出した時点（以下、トリガー検出時点という。）から過去に遡って撮像された画像データを含む連写された画像データを記録メディアに記録することができる。
【０００３】
また、このカメラは、トリガー検出時点からの時間間隔に応じて画像データの間引きパターンを予め設定し、この間引きパターンにより、撮像された画像データを間引いて記録する比率を決めるので、記録メディアに記録される画像データの総データ量を削減しつつ、決定的瞬間を記録した可能性の高いトリガー検出時点の画像データについては品質を維持したまま記録させることができる。
【０００４】
【特許文献１】特開２００４−３０４４１８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１のカメラは、トリガー検出時点の前に撮像された画像データの全てを、一旦バッファに記憶してから間引きを行い、間引かれた画像データを記録メディアに最終的に記録させる。つまり、バッファに記憶される全ての画像データを記憶できる最長時間まで記憶した上で、画像データの間引きを行う。そのため、最終的に記録メディアに記録させる画像データは間引き後の画像データであるにもかかわらず、バッファの容量としては、間引く前の画像データ、つまり、所定時間分の撮像により得られる全画像データ分の記憶容量が必要であった。すなわち、最終的に記録させたい画像データの容量よりも、バッファの容量を大きく設定しなければならないという問題があった。
【０００６】
そこで、本発明は、画像データの間引きを行う撮像において、必要となるバッファの容量を低減することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の撮像装置は、所定時間間隔でフレーム画像データを順次出力する撮像手段と、
前記撮像手段から出力される所定の複数フレーム分の画像データを一時的に保持可能な複数エリアを有するバッファと、
撮影指示を与える撮影指示手段と、を備え、
前記撮影指示手段により撮影指示が与えられたときに、前記バッファに保持されている複数フレーム分の画像データを、間引かずにそのまま記録メディアに転送して保存する撮像装置において、
前記バッファの空きエリアの有無に関わらず、前記撮像手段から出力される最新のフレーム画像データを保持させるために、古いフレーム画像データほど高い間引き率となるように、前記バッファ内のフレーム画像データを削除する削除手段と、
前記削除手段により削除されたフレーム画像データが保持されていたエリアに、前記最新のフレーム画像データを書き込む書込手段と、
を更に備えたことを特徴とする。
【０００８】
好ましくは、本発明の撮像装置は、
前記削除手段により削除されるフレーム画像データの間引き率は、上限及び下限が固定されており、当該上下限間の遷移態様は、ユーザが任意に設定できる、
ことを特徴とする。
【００１０】
好ましくは、
前記削除手段は、前記撮像手段のフレーム画像データ出力間隔に同期して動作し、１回の動作で複数のフレーム画像データを削除しない、
ことを特徴とする。
【００１１】
好ましくは、本発明の撮像装置は、
前記バッファの各エリアに保持されるフレーム画像データの時系列順位を示すためのカウンタを更に備え、
前記バッファに前記最新のフレーム画像データが保持される度に、前記カウンタの内容を更新する、
ことを特徴とする。
【００１７】
また、本発明の撮像方法は、所定時間間隔でフレーム画像データを順次出力する撮像手段と、
前記撮像手段から出力される所定の複数フレーム分の画像データを一時的に保持可能な複数エリアを有するバッファと、
撮影指示を与える撮影指示手段と、を備え、
前記撮影指示手段により撮影指示が与えられたときに、前記バッファに保持されている複数フレーム分の画像データを、間引かずにそのまま記録メディアに転送して保存する撮像装置において、
前記バッファの空きエリアの有無に関わらず、前記撮像手段から出力される最新のフレーム画像データを保持させるために、古いフレーム画像データほど高い間引き率となるように、前記バッファ内のフレーム画像データを削除し、
削除されたフレーム画像データが保持されていたエリアに、前記最新のフレーム画像データを書き込む、
ことを特徴とする。
【００１８】
また、本発明の撮像プログラムは、所定時間間隔でフレーム画像データを順次出力する撮像手段と、
前記撮像手段から出力される所定の複数フレーム分の画像データを一時的に保持可能な複数エリアを有するバッファと、
撮影指示を与える撮影指示手段と、を備え、
前記撮影指示手段により撮影指示が与えられたときに、前記バッファに保持されている複数フレーム分の画像データを、間引かずにそのまま記録メディアに転送して保存する撮像装置のコンピュータを、
前記バッファの空きエリアの有無に関わらず、前記撮像手段から出力される最新のフレーム画像データを保持させるために、古いフレーム画像データほど高い間引き率となるように、前記バッファ内のフレーム画像データを削除する削除手段と、
前記削除手段により削除されたフレーム画像データが保持されていたエリアに、前記最新のフレーム画像データを書き込む書込手段と、
して機能させる。
【発明の効果】
【００１９】
本発明によれば、画像データの間引きを行う撮像において、必要となるバッファの容量を低減できる。
【発明を実施するための最良の形態】
【００２０】
（第１の実施形態）
本発明の第１の実施形態に係る画像データの撮像では、図１に示すように、複数の画像データを連続して撮像し、過去に遡るほど、撮像された画像データをフレームレートが低くなるように間引いて記録する。以下では、これを間引き連写撮像という。
【００２１】
例えば、図１は、カメラにより２３枚の画像データを３０ｆｐｓ（Ｆｒａｍｅ  ｐｅｒ  Ｓｅｃｏｎｄ）のフレームレートで撮像し、１２枚の画像データを記録する場合の間引き連写撮像の例を示す。３０ｆｐｓとは、１／３０秒の間隔で画像データを撮像することを意味する。言い換えると、１秒当たり３０枚撮像することを意味する。図１では、１つの四角が１枚分の画像データを示しており、右側が未来、左側が過去に該当する。１２という番号を付してある画像データが最も新しく撮像されたものである。また、１という番号を付してある画像データが最も過去に撮像されたものである。
【００２２】
図１では、時系列順で最も新しい７枚の画像データについては、撮像された画像データが全て記録される。この場合のフレームレートは３０ｆｐｓである。中間の４枚の画像データは２枚ごとに１枚間引いて記録される。すなわち、２枚ごとに１枚記録される。画像データが記録される比率は１／２である。この場合のフレームレートは１５ｆｐｓである。最も古い１２枚の画像データは４枚ごとに３枚間引いて記録される。すなわち、４枚ごとに１枚記録される。画像データが記録される比率は１／４である。この場合のフレームレートは７．５ｆｐｓである。全部で１２枚の画像データが記録される。
【００２３】
本発明の実施形態に係るカメラ１０は、図２に示すように、イメージセンサ部１と、イメージセンサ制御部２と、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３と、メモリ部４と、記録メディア制御部５と、記録メディア６と、画像処理部７と、シャッター部８と、時計部９とを有している。
【００２４】
イメージセンサ部１は、ＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）やＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）イメージセンサなどの撮像素子を含み、画像データを撮像する。イメージセンサ制御部２はＣＰＵ３からの指示に従って、イメージセンサ部１を制御する。イメージセンサ制御部２は、イメージセンサ部１から撮像された画像データを読み出して、メモリ部４に格納する。
【００２５】
ＣＰＵ３は、プログラマブルなプロセッサである。ＣＰＵ３は、カメラ１０全体を制御する。ＣＰＵ３は、イメージセンサ制御部２に対して撮像開始と撮像終了を指示し、撮像データの格納位置を指示する。また、ＣＰＵ３は、記録メディア制御部５に対して記録メディア６へのデータの保存や読み出しを指示する。ＣＰＵ３は、画像処理に関するパラメータを計算する。ＣＰＵ３は、画像処理部７に対して計算されたパラメータを含む画像処理条件を設定し、画像処理の開始を指示する。
【００２６】
メモリ部４は、ＲＡＭ（Ｒａｎｄａｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ等のメモリを含む。メモリ部４は、撮像された画像データ、プログラムおよびパラメータ等を格納する。メモリ部４は、撮像された画像データを保持するバッファとして働く。
【００２７】
記録メディア制御部５は、ＣＰＵ３の指示に従って、記録メディア６へデータを書き込み、記録メディア６からデータを読み出す。記録メディア６は、例えば、ＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）メモリカード、ハードディスク、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）である。記録メディア６は、例えば、図１に示したような間引き連写撮像された画像データを記録する。
【００２８】
画像処理部７は、イメージセンサ制御部２が格納した画像データの現像処理やリサイズ、ＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）規格に準拠した画像データの圧縮や伸長等の処理を行なう。
【００２９】
シャッター部８は、シャッターキーを含む。ＣＰＵ３は、例えば、シャッターキーがハーフシャッター状態になったことを検出した場合に撮像開始が指示されたと判断する。また、ＣＰＵ３は、例えば、シャッターキーが、ハーフシャッター状態から全押し状態になったとき、撮像終了が指示されたと判断する。
【００３０】
時計部９は、現在時刻を計時する。ＣＰＵ３は、時計部９より現在時刻を取得し、例えば、記録メディア６に画像データを記録する際に、画像データとともにその画像データが撮像された日時を記録する。
【００３１】
なお、イメージセンサ部１とイメージセンサ制御部２は本発明の撮像手段の一例であり、メモリ部４は本発明の保持手段の一例であり、ＣＰＵ３は本発明の更新手段と削除手段と格納手段と選択手段と画像数情報取得手段と初期値算出手段と撮像制御手段と記録制御手段の一例であり、シャッター部８は本発明の第１の検出手段と第２の検出手段の一例であり、記録メディア６は本発明の記録媒体の一例である。
【００３２】
本発明の実施形態では、図３に示すように、連続して撮像された画像データを時系列順に３つのグループに分割する。
【００３３】
第１のグループは、シャッターキーが全押し状態になった時等のトリガー検出時点付近の時間範囲において撮像された画像データであり、最も新しく撮像された画像データを含む。トリガー検出時点は重要な画像が写っている決定的瞬間で有る可能性が高い。このため、ＣＰＵ３は、第１のグループの画像データを全て記録メディア６に記録する。例えば、ＣＰＵ３は、図３に示すように、Ｒ枚撮像された画像データをＲ枚記録する。
【００３４】
一方、ＣＰＵ３は、トリガー検出時点から離れた時間範囲において撮像された画像データを間引いて画像メモリに記録する。
【００３５】
第２のグループは、第１のグループの画像データが撮像される直前に連続して撮像された複数の画像データを含む。第２のグループでは、過去に向かって遡るに連れて、間引かれる画像データが増加する。すなわち記録メディア６に記録される画像データの比率が減少する。
【００３６】
具体的には、ＣＰＵ３は、図３に示すように、第２のグループの画像データを２のＮ乗枚ごとにサブグループに再度分割する。ある一つのサブグループにおいて記録メディア６に記録される画像データの数は、そのサブグループと隣り合う過去に撮像されたサブグループにおいて記録メディア６に記録される画像データの数の２倍であり、そのサブグループと隣り合う未来に撮像されたサブグループにおいて記録メディア６に記録される画像データの数の半分である。
【００３７】
図３に示すように、（Ｎ−Ｃ＋１）個のサブグループがある場合、撮像された画像データ数に対する記録メディア６に記録される画像データ数の比率は、１／１から２Ｃ−Ｎまで減少する。
【００３８】
第３のグループは、第２のグループの画像データが撮像される直前に連続して撮像された複数の画像データを含む。撮像された画像データ数に対する記録メディア６に記録される画像データの数の比率は、第２のグループの中で最も過去に撮像されたサブグループの比率と同一である。例えば、図３では、ＣＰＵ３は、２Ｃ−Ｎの比率で２Ｃ×Ｐ枚の画像データを記録する。
【００３９】
本発明の実施形態において、記録メディア６に記録される画像データの数Ｍは、次の（１）式で表せる。
【００４０】
【数１】
0004561851.tif 000002
【００４１】
ここで、Ｎ＝１，２，３,……、Ｃ＝０，１，２，３,……、Ｒ＝０，１，２，３,……、Ｐ＝０，１，２，３,……である。
【００４２】
第１のグループの撮像枚数はＲ枚である。
第２のグループの撮像枚数は（２Ｃ＋２Ｃ＋１＋……＋２Ｎ−２＋２Ｎ−１＋２Ｎ）枚である。ただし、Ｎ＞Ｃ。
第３のグループの撮像枚数は２Ｃ×Ｐ枚である。
【００４３】
図１に示した間引き連写撮像の例では、１０〜１２の番号が付された画像データが第１のグループであり、３〜９の番号が付された画像データが第２のグループであり、１と２の番号が付された画像データが第３のグループである。更に、第２のグループは、６〜９の番号が付された画像データで構成されるサブグループと、４と５の番号が付された画像データで構成されるサブグループと、３の番号が付された画像データのみからなるサブグループに分割される。
従って、図１に示した間引き連写撮像の例では、Ｎ＝２、Ｃ＝０、Ｐ＝２、Ｒ＝３である。
【００４４】
このように、本実施形態では、撮像された画像データ数に対する記録メディア６に記録される画像データの比率が最高、言い換えると記録メディア６に記録される画像データのフレームレートが最高の画像データの数と、撮像された画像データ数に対する記録メディア６に記録される画像データの比率が最低、言い換えると記録メディア６に記録される画像データのフレームレートが最低の画像データの数を任意に増やすことができる。
更に、本発明の実施形態では、時系列的に中間の時点に撮像された画像データは過去に遡るほど記録される画像データのフレームレートが減少する。
【００４５】
図４は、Ｎ＝３、Ｃ＝０、Ｐ＝０、Ｒ＝１の場合の例である。第１のグループは１枚の撮像された画像データを含む。第２のグループは、３２枚の撮像された画像データを含み、４個のサブグループ１〜４に分割される。第３のグループに含まれる画像データは存在しない。
実線の四角は１枚の画像データを示す。時刻ｔ１〜ｔ８の各時刻において、右端の四角が新しく撮像された画像データであり、左に位置するほどより過去に撮像された画像データである。
時刻ｔ１〜ｔ８の各時刻において新たな画像データが撮像されると、各画像データは左に移動する。このため、時刻ｔ１〜ｔ８を連続して見ると、矢印で示したように、右上から左下に向かって移動する。ＣＰＵ３は、時刻ｔ１〜ｔ８に行う処理を繰り返し実行する。
【００４６】
破線の四角の中に×印が付された画像データは、削除される画像データを示す。
サブグループ２は４枚の画像データを含む。ＣＰＵ３は、時刻ｔ２、時刻ｔ４、時刻ｔ６、時刻ｔ８にサブグループ２に新たに属することになる画像データを削除する。サブグループ３は２枚の画像データを含む。ＣＰＵ３は、時刻ｔ３と時刻ｔ７にサブグループ３に新たに属することになる画像データを削除する。サブグループ４は１枚の画像データを含む。ＣＰＵ３は、時刻ｔ５にサブグループ４に新たに属することになる画像データを削除する。そして、ＣＰＵ３は、時刻ｔ１に第３のグループに新たに属することになる画像データを削除する。
このように、本実施形態では、ＣＰＵ３は各時刻において１枚の画像データを削除する。
【００４７】
本実施形態では、カメラ１０によって新たな画像データが撮像されると、ＣＰＵ３は、第２のグループに含まれるサブグループ２〜４において、各々のサブグループに新しく属することになる画像データを２回に１回の割合で削除する。ただし、ＣＰＵ３は、各々の時刻には１枚の画像データのみを削除すれば良い。
【００４８】
言い換えると、本実施形態では、カメラ１０によって新たな画像データが撮像されると、ＣＰＵ３は、第２のグループに含まれる各々のサブグループにおいて、時系列的に最も後に撮像されたサブグループを除く各サブグループについて、時系列的に後に撮像されたサブグループから時系列的に前に撮像されたサブグループに画像データが２つ移動するごとに１つの画像データを削除する。
【００４９】
これにより、第２のグループに含まれる時系列的に連続した２つのサブグループについて、時系列的に後のサブグループにおいて記録メディア６に記録される画像データの数は、時系列的に前のサブグループにおいて記録メディア６に記録される画像データの数の２倍であるという関係を実現することができる。
【００５０】
上記（１）式において、Ｎ＝３、Ｃ＝１、Ｐ＝１、Ｒ＝１とすると、記録枚数はＭ＝１７となる。この場合に、カメラ１０が画像データを６０ｆｐｓのフレームレートで撮像すると、図５に示すように、間引き連写撮像画像は、６０ｆｐｓ相当で記録される画像データが９（＝８＋１）枚、３０ｆｐｓ相当で記録される画像データが４枚、１５ｆｐｓ相当で記録される画像データが４（＝２＋２）枚となる。
このうち、第１のグループの画像データは６０ｆｐｓ相当で記録される画像データ１枚である。第２のグループの画像データは６０ｆｐｓ相当で記録される画像データ８枚、３０ｆｐｓ相当で記録される画像データ４枚、１５ｆｐｓ相当で記録される画像データ２枚である。また、第３のグループの画像データは１５ｆｐｓ相当で記録される画像データ２枚である。
【００５１】
本実施形態では、画像データを保存するためのバッファをメモリ部４に記録枚数Ｍ分用意する。必要なバッファの容量は、（１枚分の画像データを格納するためのバッファ容量）×記録枚数Ｍとなる。図５の例では、記録枚数Ｍ＝１７であるので、バッファに格納する１枚分の画像が８００万画素のＢａｙｅｒデータであるとすると、８００万×１７＝１３６００万画素となる。１バイト／画素とすると、バッファの容量は１３６００万バイトとなる。このように、本実施形態によれば、間引き連写撮像を適用するアプリケーション毎に、必要なバッファの容量を簡単に計算して求めることができる。
一方、図５の例では、画像データは最長で３３枚×（１／６０）＝３３／６０秒の保持時間が経過するまで保持される。このように、本実施形態によれば、最長の保持時間に比べて必要なバッファの容量を低減することができる。
【００５２】
本実施形態では、記録枚数分のＭ個のバッファに１対１に対応したＭ個のカウンタを設ける。これらのカウンタは、メモリ部４に設けても良いし、メモリ部４とは別に専用のカウンタを設けても良い。
【００５３】
それぞれのカウンタは、次の規則に従って独立に動作する。
（１）新たに撮像された画像データがメモリ部４のバッファに格納されるごとに、その画像データが格納されたバッファに対応するカウンタに下記（２）式に示す初期値Ｖｉｎｉｔが設定される。
（２）値が０のカウンタを除き、その他のカウンタは１ずつディクリメントされる。ただし、カウンタの値が０の場合はディクリメントされない。
【００５４】
【数２】
0004561851.tif 000003
【００５５】
ここで、Ｎ、Ｃ、Ｐ、Ｒの意味は（１）式と同様である。
【００５６】
図５の例では、初期値Ｖｉｎｉｔ＝３３である。メモリ部４のバッファに保持される可能性のある画像データの中で最も過去に撮像された画像データは、１番の番号が付された画像データである。また、最も新しく撮像された画像データは３３番の番号が付された画像データである。初期値Ｖｉｎｉｔは、１番の画像データが撮像されてから３３番の画像データが撮像されるまでに実際に撮像される画像データの枚数である。
本実施形態では、後述するように、カウンタに初期値Ｖｉｎｉｔが設定されるため、各カウンタの値は対応するバッファに格納されている画像データに関する相対的な時刻情報を示す。
【００５７】
本実施形態では、図４で示した削除される画像データを格納しているバッファに新しく撮像された画像データを格納する。ただし、図４の例では第２のグループに含まれるサブグループは４つであったが、図５の例では第２のグループに含まれるサブグループは３つである。図５の例では、図４と異なり、時刻ｔ１〜時刻ｔ３の処理が繰り返し実行される。
【００５８】
ＣＰＵ３は、図４において時刻ｔ２に削除される画像データを格納しているバッファに対応する値２４のカウンタ、時刻ｔ３に削除される画像データを格納しているバッファに対応する値１６のカウンタ、時刻ｔ４に削除される画像データを格納しているバッファに対応する値２４のカウンタ、時刻ｔ１に削除される画像データを格納しているバッファに対応する値０のカウンタの順番で、繰り返し削除対象となるバッファを選択する。
【００５９】
具体的には、ＣＰＵ３は、以下に示す「削除対象バッファ選択規則」に従って、新しい画像データを撮像するごとに、画像データを削除する対象とするバッファ（以下、削除対象バッファという）を選択する。ＣＰＵ３は、選択された削除対象バッファに新しく撮像された画像データを格納する。ＣＰＵ３は、これを繰り返し行なうことで、間引き連写撮像を実現する。
【００６０】
［削除対象バッファ選択規則］
ＣＰＵ３は、連続して撮像された画像データについて、以下の（１）〜（Ｎ−Ｃ＋１）に記載される選択を繰り返す。ＣＰＵ３は、新しく画像データが撮像されるごとにＭ個のカウンタの値を全て調べて削除対象バッファを1個のみ選択する。
（１）        カウンタの値が２Ｎ×（Ｎ−Ｃ＋Ｐ）であるバッファを、２回撮像されるごとに1回の正確な周期で削除対象バッファとして選択する。
（２）        カウンタの値が２Ｎ×（Ｎ−Ｃ＋Ｐ−１）であるバッファを、２２回撮像されるごとに1回の正確な周期で削除対象バッファとして選択する。
（３）        カウンタの値が２Ｎ×（Ｎ−Ｃ＋Ｐ−２）であるバッファを、２３回撮像されるごとに1回の正確な周期で削除対象バッファとして選択する。
（Ｎ−Ｃ−１）カウンタの値が２Ｎ×（Ｎ−Ｃ＋Ｐ−（Ｎ−Ｃ−２））＝２Ｎ×（Ｐ＋２）であるバッファを、２Ｎ−Ｃ＋１回撮像されるごとに1回の正確な周期で削除対象バッファとして選択する。
（Ｎ−Ｃ）    カウンタの値が２Ｎ×（Ｎ−Ｃ＋Ｐ−（Ｎ−Ｃ−１））＝２Ｎ×（Ｐ＋１）であるバッファを、２Ｎ−Ｃ回撮像されるごとに1回の正確な周期で削除対象バッファとして選択する。
（Ｎ−Ｃ＋１）カウンタの値が０であるバッファを、２Ｎ−Ｃ回撮像されるごとに1回の正確な周期で削除対象バッファとして選択する。
なお、Ｎ、Ｃ、Ｐの意味は、（１）式と（２）式と同様である。
【００６１】
このように削除対象バッファを選択すると、新しく画像データが撮像されるごとに１個ずつ削除対象バッファが選ばれる。このため、新しく撮像された画像データを必ずメモリ部４内のバッファに格納することができる。ただし、間引き連写撮像の開始直後しばらくの間、つまり、全てのバッファに画像が格納されるまでの間は、削除対象バッファが存在しない場合がある。その場合は、間引き連写撮像開始後に画像データが一度も格納されていないバッファに新しく撮像された画像データを格納する。この詳細な説明は後述する。
【００６２】
図６は、本発明の第１の実施形態に係るプログラムのフローチャートである。
図示しないモード選択キーにより、間引き連写撮像モードが選択されると、ＣＰＵ３は、第１のグループの撮像枚数を示すパラメータＲ、第２のグループの撮像枚数を決定するパラメータＮとパラメータＣ、第３のグループの撮像枚数を決定するパラメータＰを取得する（ステップ１）。
【００６３】
例えば、ＣＰＵ３は、パラメータＮ、パラメータＣ、パラメータＰ、パラメータＲを、間引き連写撮像の最長の記録時間と記録枚数の一覧を図示しないディスプレイに表示し、ユーザに選択させることによって取得する。ＣＰＵ３は、ユーザによって選択されたパラメータＮ、パラメータＣ、パラメータＰ、パラメータＲをメモリ部４のフラッシュメモリ等の不揮発性メモリに記憶し、再度間引き連写撮像モードが選択されたときに、記憶されている値を使用する。また、例えば、間引き連写撮像モードが選択されたとき、ＣＰＵ３は、パラメータＮ、パラメータＣ、パラメータＰ、パラメータＲとして予め決められている値を取得する。
【００６４】
次に、ＣＰＵ３は、画像データの数Ｍと初期値Ｖｉｎｉｔを、上記（１）式と（２）式により計算する（ステップ２）。そして、記録メディア６に記録される画像データの数Ｍに対応する数のバッファとカウンタをメモリ部４に確保する（ステップ３）。次に、ＣＰＵ３は、全てのカウンタの値を０に初期化する（ステップＳＴ４）。各カウンタの初期化が完了したら、ＣＰＵ３は撮像開始を待つ（ステップＳＴ５；Ｎ）。ＣＰＵ３は、例えば、シャッター部８に含まれるシャッターキーがハーフシャッター状態になったことを検出した場合に撮像開始と判断する（ステップＳＴ５；Ｙ）。但し、撮像開始の判断は、ハーフシャッター状態の検出に限らず、どのような方法であっても良い。
【００６５】
ＣＰＵ３は、撮像開始と判断する（ステップＳＴ５；Ｙ）と、イメージセンサ制御部２に撮像開始を指示する（ステップＳＴ６）。イメージセンサ制御部２は、ＣＰＵ３からの撮像開始を受信すると、イメージセンサ部１を駆動し、所定のフレームレートで撮像を開始する。所定のフレームレートとは、間引き連写撮像における最高フレームレートと同じである。ＣＰＵ３は、イメージセンサ制御部２に撮像開始指示を出した後は、ループ制御変数Ｉを１に初期化する（ステップＳＴ７）。ループ制御変数Ｉは、削除バッファ決定規則を実現するために使われるものであり、１から２Ｎ−Ｃまでをカウントする。
【００６６】
ＣＰＵ３は、イメージセンサ制御部２からの格納開始通知を待つ（ステップＳＴ８）。格納開始通知とは、イメージセンサ部１が１枚の画像データを撮像し、メモリ部４のバッファに格納する準備ができたことを示す。ＣＰＵ３は格納開始通知を受信してから動作することで、イメージセンサ制御部２との同期を取る。格納開始通知をＣＰＵ３が受信する（ステップＳＴ８；Ｙ）と、ＣＰＵ３はカウンタの値が０以外の全てのカウンタの値を１だけディクリメントする（ステップＳＴ９）。
【００６７】
そして、ＣＰＵ３は、図４で示した削除される画像データが格納されているバッファを削除対象バッファとして選択する（ステップＳＴ１０）。削除対象バッファを選択する具体的な方法については後述する。
【００６８】
ＣＰＵ３は、イメージセンサ制御部２に対して、選択された削除対象バッファに新しく撮像された画像データの格納を指示する（ステップＳＴ１１）。イメージセンサ制御部２は、ＣＰＵ３からの指示に従って、選択された削除対象バッファに画像データを格納する。
【００６９】
次に、ＣＰＵ３は、画像データが格納されたバッファに対応するカウンタに対して、上記（２）式で計算される初期値Ｖｉｎｉｔを設定する（ステップＳＴ１２）。
本実施形態では、画像データが格納されている全てのカウンタの値は、新しい画像データが撮像され、バッファに格納されるごとに１だけディクリメントされる。一方、上述したように、初期値Ｖｉｎｉｔは、最も古い画像データが撮像されてから最新の画像データが撮像されるまでに実際に撮像された画像データの枚数である。このため、初期値Ｖｉｎｉｔとあるカウンタの値の差分は、画像データがそのカウンタに対応するバッファに格納された後に撮像された画像データの枚数を示している。
【００７０】
当然のことながら、カウンタの値が初期値Ｖｉｎｉｔであるバッファに格納されている画像データは、Ｍ個のバッファに格納されている画像データの中で最も新しい画像データである。それ以外の画像データに関しては、その画像データがバッファに格納されてからの経過時間を、｛Ｖｉｎｉｔ−（カウンタの値）｝×撮像間隔により求めることができる。ただし、撮像間隔＝1／(カメラ１０の撮像するフレームレート)である。
また、画像データは最長でカウンタの値が０になるまで保持される。すなわち、画像データは最長でＶｉｎｉｔ×撮像間隔の保持時間が経過するまで保持される。
【００７１】
従って、本実施形態のカウンタの値は、各バッファに格納されている画像データについて、最も新しく撮像された画像データに対する相対的な時刻情報を兼ねていることになる。このため、本実施形態では、画像データに関する時刻情報を保存する必要はない。
【００７２】
カウンタの初期値Ｖｉｎｉｔを設定した後、ＣＰＵ３は撮像が継続中か否かを判断する（ステップＳＴ１３）。撮像が継続していないのであれば、処理を終了する（ステップＳＴ１３；Ｎ）。一方、撮像が継続中であれば（ステップＳＴ１３；Ｙ）、ループ制御変数Ｉを１だけインクリメントする（ステップＳＴ１４）。その結果、ループ制御変数Ｉが２Ｎ−Ｃ以下の場合には、ステップＳＴ８に戻る（ステップＳＴ１５；Ｎ）。一方、ループ制御変数Ｉが２Ｎ−Ｃを超えてしまった場合にはステップＳＴ７に戻り（ステップＳＴ１５；Ｙ）、ループ制御変数Iを１にする。
そして、再び格納開始通知を待ち（ステップＳＴ８）、ステップＳＴ８〜ステップＳＴ１５を繰り返す。
【００７３】
なお、シャッターの状態が、ハーフシャッターから全押しになったときＣＰＵ３は撮像終了と判断する（ステップＳＴ１３；Ｎ）方法がある。この方法によれば、シャッターを全押しした時刻を基準時点として、そこから過去に遡って撮像することができる。
【００７４】
また、ＣＰＵ３は、シャッターの全押しを検出したとき、画像データを所定の枚数撮像した後、撮像終了と判断する（ステップＳＴ１３；Ｎ）こととしても良い。例えば、画像データをＲ枚数撮像した後、撮像終了と判断することとした場合、シャッターの全押しを検出した時刻に撮像された画像データが第２のグループの最後の画像データとなり、その時刻以降に第１のグループの画像データが撮像されることとなる。この場合、シャッターの全押しを検出した時刻以降に撮像されたＲ枚の画像データは全て記録メディア６に記録される。
【００７５】
この方法によれば、シャッター全押し後に撮像された画像データを最高フレームレートで記録できる。このため、シャッターを全押しするタイミングが撮影者の意図する決定的瞬間より少し早い場合でも、シャッター全押し後に撮像された撮影者の意図した画像データを記録メディア６に記録できる可能性が高くなる。
【００７６】
ステップＳＴ１０において、削除対象バッファを選択するとき、ＣＰＵ３は、図７に示すように、ループ制御変数ＫをＮ−Ｃに初期化する（ステップＳＴ１０１）。次に、ＣＰＵ３は、ループ制御変数Ｉが２Ｋで割り切れるか否かを判断する（ステップＳＴ１０２）。割り切れない場合（ステップＳＴ１０２；Ｎ）には、割り切れる値が見つかるまでループ変数Ｋを１だけディクリメントする（ステップＳＴ１０３）。なお、この処理は、少なくともＫ＝０になれば必ず割り切れる値が見つかる。２Ｋ＝２０＝１であるので、ループ制御変数Ｉは少なくとも１で割り切れる。
【００７７】
割り切れるＫの値が見つかったら（ステップＳＴ１０２；Ｙ）、Ｋ＝Ｎ−Ｃか否かを判断する（ステップＳＴ１０４）。Ｋ＝Ｎ−Ｃではない場合（ステップＳＴ１０４；Ｎ）、カウンタの値が２Ｎ×（Ｎ−Ｃ＋Ｐ−Ｋ）のカウンタを検索する（ステップＳＴ１０５）。
【００７８】
ステップＳＴ１０５で検索しても、該当するカウンタが見つからない場合がある（ステップＳＴ１０６；Ｎ）。このような状況は、全てのバッファに画像が格納されていないとき、つまり撮像開始後しばらくの間に起こる。この場合、撮像開始後まだ一度も画像が格納されていないバッファを検索する。この検索には、値が０のカウンタを検索すればよい（ステップＳＴ１０７）。
Ｋ＝Ｎ−Ｃの場合（ステップＳＴ１０４；Ｙ）、カウンタの値が０のカウンタを検索する（ステップＳＴ１０７）。
これらの検索により該当するカウンタが見つかったら、そのカウンタに対応するバッファを削除対象バッファとして選択する（ステップＳＴ１０８）。
【００７９】
例えば、図４の例では、Ｎ＝３、Ｃ＝０、Ｐ＝０である。このとき、図７に示した処理において、ループ制御変数Ｋの初期値は３である。
ループ制御変数Ｋ＝３の場合、第３のグループに新たに属することになる画像データが格納されているバッファが削除対象バッファとして選択される。この場合、画像データが８回撮像されるごとに、値が０のカウンタに対応するバッファが削除対象バッファとして選択される。
【００８０】
図４の例では、第２のグループには４つのサブグループが含まれる。ループ制御変数Ｋ＝０の場合、サブグループ２に新たに属することになる画像データが格納されているバッファが削除対象バッファとして選択される。図７のステップＳＴ１０５において、Ｋ＝０に対応するカウンタの値は２４である。この場合、画像データが２回撮像されるごとに、値が２４のカウンタに対応するバッファが削除対象バッファとして選択される。
【００８１】
ループ制御変数Ｋ＝１の場合、サブグループ３に新たに属することになる画像データが格納されているバッファが削除対象バッファとして選択される。図７のステップＳＴ１０５において、Ｋ＝１に対応するカウンタの値は１６である。この場合、画像データが４回撮像されるごとに、値が１６のカウンタに対応するバッファが削除対象バッファとして選択される。
【００８２】
ループ制御変数Ｋ＝２の場合、サブグループ４に新たに属することになる画像データが格納されているバッファが削除対象バッファとして選択される。図７のステップＳＴ１０５において、Ｋ＝２に対応するカウンタの値は８である。この場合、画像データが８回撮像されるごとに、値が８のカウンタに対応するバッファが削除対象バッファとして選択される。
【００８３】
従って、図４の例では、削除対象バッファとして選択されるバッファに対応するカウンタの値は２４→１６→２４→８→２４→１６→２４→０を繰り返す。
【００８４】
また、図５の例では、Ｎ＝３、Ｃ＝１、Ｐ＝１である。このとき、図７に示した処理において、ループ制御変数Ｋの初期値は２である。
ループ制御変数Ｋ＝２の場合には、第３のグループに属する画像データが格納されているバッファが削除対象バッファとして選択される。この場合、画像データが４回撮像されるごとに、値が０のカウンタに対応するバッファが削除対象バッファとして選択される。
【００８５】
図５の例では、第２のグループには３つのサブグループが含まれる。ループ制御変数Ｋ＝０の場合には、第２のグループの中の時系列順で真ん中のサブグループに新たに属することになる画像データが格納されているバッファが削除対象バッファとして選択される。図７のステップＳＴ１０５において、Ｋ＝０に対応するカウンタの値は２４である。この場合、画像データが２回撮像されるごとに、値が２４のカウンタに対応するバッファが削除対象バッファとして選択される。
【００８６】
ループ制御変数Ｋ＝１の場合には、第２のグループの中の左のサブグループ、すなわち時系列順で最も古いサブグループに新たに属することになる画像データが格納されているバッファが削除対象バッファとして選択される。図７のステップＳＴ１０５において、Ｋ＝１に対応するカウンタの値は１６である。この場合、画像データが４回撮像されるごとに、値が１６のカウンタに対応するバッファが削除対象バッファとして選択される。
【００８７】
従って、図５の例では、削除対象バッファとして選択されるバッファに対応するカウンタの値は２４→１６→２４→０を繰り返す。
【００８８】
図５の例では、Ｎ＝３、Ｃ＝１、Ｐ＝１、Ｒ＝１である。この場合、上記（１）式で計算される画像データの枚数はＭ＝１７である。従って、本実施形態では、ＣＰＵ３は、メモリ部４に１７個のバッファ０〜バッファ１６および１７個のカウンタ０〜カウンタ１６を設ける。
【００８９】
図５の例では、画像データの撮像が進むにつれて、カウンタ０〜カウンタ１６の値は図８に示すように変化する。
図８では、下の方向に時間が進む。画像データ番号＝０は、画像データが撮像されていない状態を示す。画像データ番号が０のとき、ＣＰＵ３はカウンタ０〜カウンタ１６を０に初期化する（図６のステップＳＴ４）。
【００９０】
画像データ番号＝１は、１枚目の画像データが撮像された状態を示す。ＣＰＵ３は、イメージセンサ制御部２からの格納開始通知を受信する（図６のステップＳＴ８；Ｙ）と、図７に示した処理を実行して削除対象バッファとして値が２４のカウンタに対応するバッファを検索する（図７のステップＳＴ１０５）。しかし、全てのカウンタの値が０であるので、検索しても見つからない。そこで、ＣＰＵ３は、カウンタ０を削除対象バッファとして選択する（図７のステップＳＴ１０７、ＳＴ１０８）。ただし、カウンタ０〜カウンタ１６は全て値が０であるので、ＣＰＵ３は、カウンタ０〜バッファカウンタ１６のいずれを選択しても良い。以下でも、同様である。
【００９１】
上述したように、図５の例では、（２）式で計算される初期値Ｖｉｎｉｔ＝３３である。ＣＰＵ３は、カウンタ０に対応するバッファに１枚目の画像データを格納し、カウンタ０に初期値３３を設定する（図６のステップＳＴ１１、ＳＴ１２）。
【００９２】
画像データ番号＝２は、２枚目の画像データが撮像された状態を示す。ＣＰＵ３は、イメージセンサ制御部２からの格納開始通知を受信する（図６のステップＳＴ８；Ｙ）と、カウンタの値が０以外のカウンタの値を１だけディクリメントする（図６のステップＳＴ９）。この場合、カウンタ０だけが−１され、カウンタ０の値は３２となる。続いて、ＣＰＵ３は、図７に示した処理を実行して削除対象バッファとして値が１６のカウンタに対応するバッファを検索する（図７のステップＳＴ１０５）。しかし、値が１６のカウンタは検索しても見つからない。そこで、ＣＰＵ３は、カウンタ１を削除対象バッファとして選択する（図７のステップＳＴ１０８）。ＣＰＵ３は、カウンタ１に対応するバッファに２枚目の画像データを格納し、カウンタ１に初期値３３を設定する（図６のステップＳＴ１１、ＳＴ１２）。
【００９３】
画像データ番号＝３は、３枚目の画像データが撮像された状態を示す。ＣＰＵ３は、イメージセンサ制御部２からの格納開始通知を受信する（図６のステップＳＴ８；Ｙ）と、カウンタの値が０以外のカウンタの値を１だけディクリメントする（図６のステップＳＴ９）。この場合、カウンタ０とカウンタ１が−１され、カウンタ０とカウンタ１の値はそれぞれ３１と３２となる。続いて、ＣＰＵ３は、図７に示した処理を実行して削除対象バッファとして値が２４のカウンタに対応するバッファを検索する（図７のステップＳＴ１０５）。しかし、値が２４のカウンタは検索しても見つからない。そこで、ＣＰＵ３は、カウンタ２を削除対象バッファとして選択する（図７のステップＳＴ１０８）。ＣＰＵ３は、カウンタ２に対応するバッファに３枚目の画像データを格納し、カウンタ２に初期値３３を設定する（図６のステップＳＴ１１、ＳＴ１２）。
【００９４】
画像データ番号＝４は、４枚目の画像データが撮像された状態を示す。ＣＰＵ３は、イメージセンサ制御部２からの格納開始通知を受信する（図６のステップＳＴ８；Ｙ）と、カウンタの値が０以外のカウンタの値を１だけディクリメントする（図６のステップＳＴ９）。この場合、カウンタ０〜カウンタ２が−１され、カウンタ０とカウンタ１とカウンタ２の値はそれぞれ３０と３１と３２となる。続いて、ＣＰＵ３は、図７に示した処理を実行して削除対象バッファとして値が０のカウンタに対応するバッファを検索する（図７のステップＳＴ１０５）。値が０のカウンタとしてカウンタ３〜カウンタ１６が見つかる（図７のステップＳＴ１０７）。ＣＰＵ３は、カウンタ３〜カウンタ１６のいずれを選択しても良いが、ここではカウンタ３を削除対象バッファとして選択するものとする（図７のステップＳＴ１０８）。ＣＰＵ３は、カウンタ３に対応するバッファに４枚目の画像データを格納し、カウンタ３に初期値３３を設定する（図６のステップＳＴ１１、ＳＴ１２）。
【００９５】
更に、撮像が続く場合、削除対象バッファとして選択されるバッファのカウンタの値は２４→１６→２４→０を繰り返す。
【００９６】
画像データ番号＝１１は、１１枚目の画像データが撮像された状態を示す。このとき、ＣＰＵ３は、撮像開始後、初めて、カウンタの値が０以外のバッファに対して、撮像データを格納する。ＣＰＵ３は、カウンタ０〜カウンタ９を１だけディクリメントする。その結果、カウンタ１の値は２４になる。一方、ＣＰＵ３は、図７に示した処理を実行し、削除対象バッファとして値が２４のカウンタに対応するバッファを検索する（図７のステップＳＴ１０５）。その結果、ＣＰＵ３は値が２４のカウンタとしてカウンタ１を見つける（図７のステップＳＴ１０７）。ＣＰＵ３はカウンタ１を削除対象バッファとして選択する（図７のステップＳＴ１０８）。ＣＰＵ３は、カウンタ１に対応するバッファに１１枚目の画像データを格納し、カウンタ１に初期値３３を設定する（図６のステップＳＴ１１、ＳＴ１２）。
なお、図８において、○印で囲んだ３３の値のカウンタは、そのカウンタに対応するバッファに新しく撮像された画像データが格納されることを示す。
【００９７】
以上のように撮像を継続していくと、画像データ番号＝３２のとき全てのバッファに撮像データが格納された状態になる。この状態で撮像を終了すると、各カウンタの値は、カウンタ０〜カウンタ１６の順に、２８、１２、４、３１、３２、１６、８、１８、２７，２０、２２、２４、２６、３０、２５、２９、３３となっている。
【００９８】
撮像を終了すると、画像処理部７が現像処理、画像補正処理、ＪＰＥＧ圧縮処理などを行い、ＣＰＵ３は、記録メディア制御部５を制御して、１７個のバッファに格納されている画像データを記録メディア６に記録させる。
【００９９】
本実施形態では、初期値Ｖｉｎｉｔ＝３３とカウンタの値の差分は、そのカウンタに対応するバッファに格納された画像データがバッファに格納された後に撮像された画像データの枚数を示している。このように、カウンタの値は相対的な時刻情報を示すので、それぞれのバッファに格納されている画像データの撮像時刻についての相対関係が分かる。
このため、ＣＰＵ３は、画像データを記録メディア６に記録する際に、間引き連写撮像した１７枚の画像データを時系列順に整列させて記録することができる。また、ＣＰＵ３は、時計部８から現在時刻を取得し、記録メディア６に記録する画像データに対応付けてその画像データが撮像された日時を記録することができる。更に、各バッファの画像データを個別にＪＰＥＧ圧縮し、各ＪＰＥＧヘッダ部に撮像された日時の情報を埋め込むことができる。
【０１００】
本実施形態では、図９に示すように、撮像終了のタイミングによって記録メディア６に記録される画像データの時系列的な相対関係が異なる。図９において、実線の四角は、記録メディア６に記録される画像データを示す。×印が付された波線の四角は削除される画像データを示す。
【０１０１】
時刻ｔ１に撮像を終了した場合、図９の最も上の行に示すように、例えば、図８に示す画像データ番号＝３２に対応する画像データが記録メディア６に記録される。すなわち、ＣＰＵ３は、カウンタ０〜１６の値である２８、１２、４、３１、３２、１６、８、１８、２７、２０、２２、２４、２６、３０、２５、２９、３３に対応する時刻に撮像された画像データを記録する。
ただし、これらのカウンタ０〜１６の値は、図８に示すように、画像データ番号＝１から撮像が開始され、画像データ番号＝３２に対応する画像データが撮像されたときに撮像を終了した場合の例である。撮像を開始してから撮像が終了するまでの撮像枚数が異なれば、カウンタ０〜１６の値は図８に示す画像データ番号＝３２とは異なる値となる。例えば、図９の最も上の行における時刻ｔ１と最も下の行における時刻ｔ１では、画像データの時系列上での相対関係は同一であるが、カウンタ０〜１６の値は異なっている。
【０１０２】
また、時刻ｔ２に撮像を終了した場合、図９の２番目の行に示すように、例えば、図８に示す画像データ番号＝３３に対応する画像データが記録メディア６に記録される。
【０１０３】
このように、撮像を終了するタイミングにより記録される画像データの時系列上での相対関係は変わってくる。ただし、図３で説明した関係は保たれる。つまり、変数Ｎ、Ｃ、Ｐ、Ｒにより決まる第１のグループ、第２のグループおよび第３のグループの記録枚数は、どのようなタイミングで終了しても守られる。また、変数Ｎにより決まる第２のグループに含まれるサブグループ間の撮像枚数の関係も守られる。すなわち、あるサブグループにおいて記録される画像データのフレームレートは、そのサブグループと隣り合う過去のサブグループにおけるフレームレートの２倍であり、隣り合う未来のサブグループにおけるフレームレートの半分である。
【０１０４】
（第２の実施形態）
本発明の第２の実施形態に係る間引き連写撮像も、図１０に示すように、第１の実施形態と同様に、複数の画像データを連続して撮像し、過去に遡るほど、撮像された画像データをフレームレートが低くなるように間引いて記録する。
第２の実施形態で使用されるカメラの構造は、図２に示す第１の実施形態で使用されるカメラ１０と同一である。また、撮像された一連の画像データの分割についても、図３に示す第１の実施形態と同一である。間引き連写撮像の結果として記録メディア６に記録される画像データも、第１の実施形態と第２の実施形態で同一である。
【０１０５】
第１の実施形態ではカウンタとしてダウンカウンタを用いたが、第２の実施形態ではカウンタとしてアップカウンタを用いる点が異なる。図１０は、第１の実施形態における図５と同様に、Ｎ＝３、Ｃ＝１、Ｐ＝１、Ｒ＝１の場合の間引き連写撮像の例である。記録枚数はＭ＝１７である。図１０は、０の番号を付された画像データが最も新しく撮像されたものであり、３２の番号を付された画像データが最も過去に撮像されたものである点を除いて、図５と同一である。
【０１０６】
本実施形態でも、画像データを保存するためのバッファをメモリ部４に記録枚数Ｍ分用意する。必要なバッファの容量は、（１枚分の画像データを格納するためのバッファ容量）×記録枚数Ｍとなる。また、記録枚数分のＭ個のバッファに１対１に対応したＭ個のカウンタを設ける。これらのカウンタは、メモリ部４に設けても良いし、メモリ部４とは別に専用のカウンタを設けても良い。
なお、Ｍは第１の実施形態で示した（１）式で計算される。
【０１０７】
それぞれのカウンタは、次の規則に従って独立に動作する。
（１）新たに撮像された画像データがメモリ部４のバッファに格納されるごとに、その画像データが格納されたバッファに対応するカウンタに初期値０が設定される。
（２）値がＶｉｎｉｔのカウンタを除き、その他のカウンタは１ずつインクリメントされる。ただし、カウンタの値がＶｉｎｉｔの場合はインクリメントされない。なお、Ｖｉｎｉｔは第１の実施形態で示した（２）式で計算される。
【０１０８】
本実施形態では、カウンタに初期値０が設定されるため、各カウンタの値は対応するバッファに格納されている画像データに関する相対的な時刻情報を示す。
【０１０９】
図１１と図１２は、本発明の第２の実施形態に係るプログラムのフローチャートの例である。図１１と図１２は、本発明の第１の実施形態に係るプログラムのフローチャートである図６と図７とほぼ同一である。図１１と図６、および図１２と図７において同一のステップには同一のステップ番号が付してある。
【０１１０】
第２の実施形態では、第１の実施形態と異なり、ステップＳＴ２４において、ＣＰＵ３は全てのカウンタの値を（２）式で計算されるＶｉｎｉｔに初期化する。また、ステップＳＴ２９において、ＣＰＵ３はカウンタの値がＶｉｎｉｔ以外の全てのカウンタの値を１だけインクリメントする。ステップＳＴ３２において、ＣＰＵ３は、画像データが格納されたバッファに対応するカウンタに対して、初期値０を設定する。
更に、ステップＳＴ２０５において、カウンタの値が２Ｎ×（１＋Ｋ＋Ｒ）のカウンタを検索する。ステップＳＴ２０７において、値がＶｉｎｉｔのカウンタを検索する
【０１１１】
図１１と図１２のフローチャートから分かる通り、図１０の例では、削除対象バッファとして選択されるバッファに対応するカウンタの値は９→１７→９→３３を繰り返す。
【０１１２】
上記各実施形態では、イメージセンサ制御部２が読み出した画像データをメモリ部４のバッファに格納していたが、画像処理部７において処理した後の画像データやＪＰＥＧ圧縮した後の画像データを格納してもよい。
【０１１３】
また、上記各実施形態では、新しく撮像された画像データを削除対象バッファとして選択されたバッファに格納したが、削除対象バッファ以外のバッファに格納することも可能である。例えば、上記（１）式で計算される記録枚数Ｍよりもバッファとカウンタの数を多くすると、画像データが削除されているバッファが複数存在することになる。この場合、画像データが削除済みのバッファであれば、新しく撮像された画像データをいずれのバッファに格納しても良い。
【０１１４】
また、上記各実施形態では、撮像開始の判断をハーフシャッター状態の検出によって行なったが、撮像開始の判断を、カメラの電源投入後、所定時間経過後としたり、ハーフシャッター状態を検出してから数フレーム後にしたりすることもできる。同様に、撮像終了の判断についても、シャッター全押し以外の方法でもよく、画像や音声に変化があったことを検出した場合に撮像終了と判断する等、撮像終了判断にどのような方法を用いてもよい。
【０１１５】
上記各実施形態では、図７と図１２における“削除対象バッファの選択”フローの中で、ループ制御変数Ｋを用いて、カウンタの値を求めた。しかし、Ｎ、Ｃ、Ｐ、Ｒの値が既知であれば、削除対象バッファに対応するカウンタの値を計算できる。そこで、削除対象バッファに対応するカウンタの値を予め計算し、記憶しておいてもよい。
【０１１６】
第１の実施形態では、カウンタの値をＶｉｎｉｔから０まで１ずつカウントダウンしていたが、例えば、任意の数Ｚ＝Ｘ×Ｓを導入して｛（Ｖｉｎｉｔ＋Ｘ)×Ｓ｝からＺまでＳずつカウントダウンしてもよい。この場合、新たに撮像された画像データが格納されるバッファに対応するカウンタには、初期値として｛（Ｖｉｎｉｔ＋Ｘ)×Ｓ｝が設定される。
【０１１７】
同様に、第２の実施形態では、カウンタの値を０からＶｉｎｉｔまで１ずつカウントアップしていたが、例えば、任意の数Ｚ＝Ｘ×Ｓを導入して、Ｚから｛（Ｖｉｎｉｔ＋Ｘ)×Ｓ｝までＳずつカウントアップしてもよい。この場合、新たに撮像された画像データが格納されるバッファに対応するカウンタには、初期値としてＺが設定される。
【０１１８】
このように、本発明の実施形態では、バッファに新たに撮像された画像データを格納する場合に、変数Ｎ、Ｃ、Ｐ、Ｒによって求められる初期値をカウンタに設定する。これにより、カウンタの値によって相対的な時間情報を計算することができる。このため、時刻情報を保存する必要がなくなり、回路規模が縮小し、ソフトウェアが簡略になる。
【０１１９】
また、上記各実施形態では、間引き連写撮像における必要なバッファの数を（１）式として定式化した。上記各実施形態では、撮像された画像データをバッファに１つずつ格納していく過程において、削除対象バッファに格納されている画像データを、バッファが画像データを保持できる最長時間（第１の実施形態では、カウンタの値が初期値「Ｖｉｎｉｔ」から「０」になるのに要する時間）が経過する前（例えば、カウンタの値が「２４」や「１６」になった時点）に削除することによって、画像データの間引きを行った。これにより、撮像された画像データの全てをバッファに一旦保持させてから間引きを行う必要がなくなり、間引き後の画像データ、つまり最終的に記録メディア６に記録される画像データ（記録枚数Ｍ分の画像データ）を格納できる最低限のバッファの容量さえ用意しておけばよいので、バッファの容量を低減することができる。また、上記各実施形態では、バッファの容量（バッファ数）を変数Ｎ、Ｃ、Ｐ、Ｒによって任意に設定することができる。
【０１２０】
上記各実施形態では、変数ＮとＣにより基本的な間引き連写撮像の枚数が決まる。また、変数Ｃにより、間引き連写撮像の最低フレームレートの値と、最低フレームレートでの記録枚数を変更できる。また、変数ＲとＰによって、間引き連写撮像の最高フレームレートと最低フレームレートで記録される画像データの枚数を任意に増やすことができる。
このように、本発明の実施形態では、変数Ｎ、Ｃ、Ｐ、Ｒの値を調整することによってカウンタの値の初期値Ｖｉｎｉｔを変更することができる。この初期値Ｖｉｎｉｔは画像データを記録メディア６に記録できる時間を規定するため、換言すれば、変数Ｎ、Ｃ、Ｐ、Ｒの値を調整することによって画像データを記録メディア６に記録できる時間を調整することができる。
これにより、様々なアプリケーションにおいて、容易に本発明を適用できるようになる。
【０１２１】
また、上記各実施形態では、削除対象バッファの選択規則について明確にしている。この規則に従えば、新しく画像データが撮像されるごとに１個の削除対象バッファを選択することができる。そのため、間引き連写撮像のための処理が、「削除対象バッファ選択→画像データ記録」という処理の繰り返しになり、単純になる。
【０１２２】
以上、本発明の実施形態について説明したが、設計上の都合やその他の要因によって必要となる様々な修正や組み合わせは、請求項に記載されている発明や発明の実施形態に記載されている具体例に対応する発明の範囲に含まれると理解されるべきである。
【図面の簡単な説明】
【０１２３】
【図１】本発明の第１の実施形態に係る間引き連写撮像の例を示す図である。
【図２】本発明の実施形態に係るカメラのブロック図である。
【図３】本発明の実施形態に係る撮像された一連の画像データの分割を示す図である。
【図４】本発明の第１の実施形態に係る画像データを削除するタイミングの例を示す図である。
【図５】本発明の第１の実施形態に係る間引き連写撮像の一例を示す図である。
【図６】本発明の第１の実施形態に係るプログラムのフローチャートを示す図である。
【図７】本発明の第１の実施形態に係る削除対象バッファ選択プログラムのフローチャートを示す図である。
【図８】本発明の第１の実施形態に係る画像データが撮像されるにつれて変化するカウンタ０〜カウンタ１６の値の一例を示す図である。
【図９】本発明の第１の実施形態に係る撮像終了のタイミングに応じた間引き連写撮像により記録される画像データの時系列上での相対関係を示す図である。
【図１０】本発明の第２の実施形態に係る間引き連写撮像の一例を示す図である。
【図１１】本発明の第２の実施形態に係るプログラムのフローチャートを示す図である。
【図１２】本発明の第２の実施形態に係る削除対象バッファ選択プログラムのフローチャートを示す図である。
【符号の説明】
【０１２４】
１…イメージセンサ部
２…イメージセンサ制御部
３…ＣＰＵ
４…メモリ部
５…記録メディア制御部
６…記録メディア
７…画像処理部
８…シャッター部
９…時計部
１０…カメラ
【図１】
0004561851.tif 000004
【図２】
0004561851.tif 000005
【図３】
0004561851.tif 000006
【図４】
0004561851.tif 000007
【図５】
0004561851.tif 000008
【図６】
0004561851.tif 000009
【図７】
0004561851.tif 000010
【図８】
0004561851.tif 000011
【図９】
0004561851.tif 000012
【図１０】
0004561851.tif 000013
【図１１】
0004561851.tif 000014
【図１２】
0004561851.tif 000015