(57)【特許請求の範囲】
【請求項１】
入力された動画データをフレーム内予測符号化方式とフレーム間予測符号化方式とを用いて符号化する符号化手段と、
前記符号化手段が前記入力された動画データの各フレームを前記フレーム内予測符号化方式により符号化する第１のモードと、前記符号化手段が前記入力された動画データを前記フレーム内予測符号化方式と前記フレーム間予測符号化方式とを用いて符号化する第２のモードの何れかを選択する選択手段と、
前記第１のモード及び前記第２のモードのそれぞれにおいて前記符号化された動画データのデータレートが目標値に収束するように前記符号化手段を制御する手段であって、前記第１のモード及び前記第２のモードのそれぞれにおいて、符号化対象のフレームの直前のフレームの符号化後のデータ量と、前記目標値に基づく前記直前のフレームの目標データ量とに基づいて、前記符号化対象のフレームの符号量を制御する制御手段とを備え、
前記制御手段は、前記選択手段により選択されたモードに応じて、前記第１のモードにおいては前記目標値として第１の値を設定し、前記第２のモードにおいては前記目標値として前記第１の値よりも小さい第２の値を設定することを特徴とする画像処理装置。
【請求項２】
入力された動画データをフレーム内予測符号化方式とフレーム間予測符号化方式とを用いて符号化する符号化手段と、
前記符号化手段が前記入力された動画データの各フレームを前記フレーム内予測符号化方式により符号化する第１のモードと、前記符号化手段が前記入力された動画データを前記フレーム内予測符号化方式と前記フレーム間予測符号化方式とを用いて符号化する第２のモードの何れかを選択する選択手段と、
前記第１のモード及び前記第２のモードのそれぞれにおいて前記符号化された動画データのデータレートが目標値に収束するように前記符号化手段を制御する手段であって、前記第１のモード及び前記第２のモードのそれぞれにおいて、符号化対象のフレームの直前のフレームの符号化後のデータ量と、前記目標値に基づく前記直前のフレームの目標データ量とに基づいて、前記符号化対象のフレームの符号量を制御する制御手段とを備え、
前記制御手段は、前記選択手段により選択されたモードに応じて、前記第２のモードにおいては前記第１のモードよりも前記符号化された動画データのデータレートが前記目標値に収束するまでの時間が長くなるように前記符号化手段を制御することを特徴とする画像処理装置。
【請求項３】
前記制御手段は、前記第２のモードにおいて、前記フレーム内予測符号化方式により符号化されるフレームの前記目標データ量と、前記フレーム間予測符号化方式により符号化されるフレームの前記目標データ量とを、独立に決定することを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記制御手段は、前記符号化対象のフレームの直前のフレームの符号化後のデータ量と前記直前のフレームの目標データ量との比率に基づいて、前記符号化対象のフレームの符号量を制御することを特徴とする請求項１または２に記載の画像処理装置。
【請求項５】
前記制御手段は、前記符号化手段により符号化された動画データの符号量を調整するためのパラメータにより前記符号量を調整し、前記パラメータの値と、前記パラメータのそれぞれの値により同じフレームを符号化したときに発生する符号量の割合と、を対応づけたテーブルに基づいて、前記符号化対象のフレームの直前のフレームを符号化したときの前記パラメータに対応する前記割合に前記比率を乗算し、前記テーブルにおいて、前記乗算の結果として得られた前記割合に対応した値の前記パラメータにより、前記符号化対象のフレームを符号化するように、前記符号化手段を制御することを特徴とする請求項４に記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理装置に関し、特に、動画の符号化に関する。
【背景技術】
【０００２】
従来、動画を符号化してその情報量を圧縮し、記録媒体に記録する装置が知られている。動画の圧縮方法として、同じフレーム内のデータを用いて圧縮を行うフレーム内（イントラ）圧縮方式や、Ｈ．２６４／ＭＰＥＧ４ＡＶＣなどの様にフレーム内圧縮と動き補償フレーム間圧縮方式を組み合わせた圧縮方式が知られている（例えば、特許文献１参照）。
【０００３】
また、圧縮された動画が伝送される通信路の帯域や、動画が記録される記録媒体の記録レートを考慮し、圧縮された動画のレートが目標値を超えない様に制御することが必要である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−０９３７７７号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
この様に、フレーム内圧縮方式とフレーム間圧縮方式の一方を選択して動画を圧縮する場合、各圧縮方式で同じ制御手順によって符号量（データレート）を制御した場合、適切な制御が行われないことが考えられる。
【０００６】
本発明はこの様な問題を解決し、フレーム内圧縮方式とフレーム間圧縮方式を行う場合に、それぞれの特性に合わせて適切にデータレートの制御を行うことを目的とする。
【課題を解決するための手段】
【０００７】
本発明においては、入力された動画データをフレーム内予測符号化方式とフレーム間予測符号化方式とを用いて符号化する符号化手段と、前記符号化手段が前記入力された動画データの各フレームを前記フレーム内予測符号化方式により符号化する第１のモードと、前記符号化手段が前記入力された動画データを前記フレーム内予測符号化方式と前記フレーム間予測符号化方式とを用いて符号化する第２のモードの何れかを選択する選択手段と、前記第１のモード及び前記第２のモードのそれぞれにおいて前記符号化された動画データのデータレートが目標値に収束するように前記符号化手段を制御する手段であって、前記第１のモード及び前記第２のモードのそれぞれにおいて、符号化対象のフレームの直前のフレームの符号化後のデータ量と、前記目標値に基づく前記直前のフレームの目標データ量とに基づいて、前記符号化対象のフレームの符号量を制御する制御手段とを備え、前記制御手段は、前記選択手段により選択されたモードに応じて、前記第１のモードにおいては前記目標値として第１の値を設定し、前記第２のモードにおいては前記目標値として前記第１の値よりも小さい第２の値を設定する構成とした。
【発明の効果】
【０００８】
本発明によれば、フレーム内圧縮方式とフレーム間圧縮方式を行う場合に、それぞれの特性に合わせて適切にデータレートの制御を行うことができる。
【図面の簡単な説明】
【０００９】
【図１】実施形態におけるカメラの構成を示すブロック図である。
【図２】符号化処理のブロックを示す図である。
【図３】レート制御処理を示すフローチャートである。
【図４】圧縮強度と変化率のテーブルの様子を示す図である。
【図５】圧縮後の符号量の変化を示す図である。
【図６】圧縮後の符号量の変化を示す図である。
【図７】圧縮強度の変化量の制限範囲を示す図である。
【図８】圧縮後の符号量の変化を示す図である。
【図９】被写体の動きと複雑どの判定区分を示す図である。
【図１０】圧縮強度と変化率のテーブルの様子を示す図である。
【図１１】動画ファイルの構成を示す図である。
【図１２】動画ファイルの構成を示す図である。
【発明を実施するための形態】
【００１０】
（第１の実施形態）
図１は、本発明の画像処理装置としてのカメラ１００の構成を示すブロック図である。なお、カメラ１００は、所定の記録フォーマットに従い動画信号を記録する。また、記録媒体に記録された動画信号やその他の情報は、ＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅ）ファイルシステムに従い、ファイルとして管理される。
【００１１】
図１において、撮像部１０１は被写体を撮影し、被写体を示す動画データを生成して出力する。撮像部１０１は、ズームレンズやフォーカスレンズ等の光学系、ＣＣＤ等のイメージセンサ、アイリス、撮影した動画データをデジタルデータに変換するＡＤ変換器などを有する。画像処理部１０２は、撮像部１０１から入力された動画データに対し、設定値に基づいてホワイトバランスや色、明るさなどを調整する画質調整処理を施し、バス１１５を介して表示制御部１０５、メモリ１１１に出力する。露出制御部１０３は制御部１１０からの指示に従い、撮像部１０１におけるシャッター、絞り、撮像素子のゲイン利得の組み合わせによって被写体の露出量を適正に制御する。音声入力部１０４は、マイクロフォンやアンプ、ＡＤ変換器等を有し、被写体の音声を取得し、音声データを出力する。表示制御部１０５は、制御部１１０からの指示に従い、動画像や各種の情報を表示部１０６に表示する。表示部１０６は液晶パネル等、公知の表示装置を含む。
【００１２】
記録再生部１０７は、制御部１１０からの指示に従い、圧縮された動画データや音声データ、各種の情報を記録媒体１０８に記録し、記録媒体１０８から再生する。記録媒体１０８はメモリカードやハードディスク（ＨＤＤ）等のランダムアクセス可能な記録媒体である。本実施形態では、記録媒体１０８はフラッシュメモリを内蔵した交換可能なメモリカードである。また、記録媒体１０８は、不図示の装着、排出機構により、カメラ１００に対してユーザが容易に装着、排出可能な構成である。
【００１３】
制御部１１０はマイコンやその他必要なメモリを有し、不図示の不揮発メモリに記憶されたプログラムに従い、操作部１０９からのユーザ指示に応じてカメラ１００の各部の動作を制御する。操作部１０９は、ユーザにより操作可能な電源スイッチ、動画像の撮影開始、停止を指示するトリガスイッチ、再生スイッチ、メニュースイッチ等の各種のスイッチを備える。制御部１１０は、操作部１０９からのユーザの指示を受け付ける。また、ユーザはメニュースイッチを操作して表示部１０６にメニュー画面を表示し、このメニュー画面を利用してカメラ１００の動作モードや、動画記録時の圧縮モードなどを変更し、また、設定を変更する。
【００１４】
メモリ１１１は、画像処理部１０２から出力された動画データや音声入力部１０２からの音声データ、表示用の画像信号、圧縮された動画データやその他の情報を記憶する。符号化復号化部１１２は、記録時においては、撮影された動画データを符号化してその情報量を圧縮し、メモリ１１１に記憶する。また、符号化復号化部１１２は、再生時においては、再生された動画データや音声データを復号し、情報量を伸張する。出力部１１３は、撮影された動画データ、或いは、再生された動画データなどをカメラ１００の外部機器に出力する。通信部１１４は、公知の通信方式により外部機器との間で通信を行い、動画や音声データ、或いはその他の情報を送受信する。内部バス１１５は、カメラ１００の各部の間で、各種のデータやコマンドを転送するために用いられる。
【００１５】
次に、撮影時の処理について説明する。操作部１０９によりカメラ１００の電源が投入されると、制御部１１０はカメラ１００の各部を制御して、撮像部１０１により得られた動画データをメモリ１１１に記憶する。そして、メモリ１１１に記憶された動画データに応じた被写体の動画像を表示部１０６に表示し、記録待機状態となる。なお、本実施形態では、撮像部１０１から出力される動画のフレームレートは、３０フレーム／秒であるとする。また、本実施形態では、記録する動画の各フレームの画面サイズ（画素数）を複数の画面サイズの一つに設定することができる。
【００１６】
この状態で、制御部１１０は、操作部１０９により記録開始の指示があるか否かを判別する。記録開始の指示があると、制御部１１０は各部を制御し、動画と音声の符号化を開始すると共に、記録媒体１０８に対する動画と音声の記録を開始する。撮像部１０１は、制御部１１０からの指示により、撮影した動画データを順次出力する。画像処理部１０２は、制御部１１０からの指示に従って動画データを処理し、バス１１５を介して順次メモリ１１１に記憶する。また、音声入力部１０４は、被写体の音声を取得し、音声データをメモリ１１１に記憶する。符号化復号化部１１２は、メモリ１１１に記憶された動画データを圧縮して、再度メモリ１１１に記憶する。このとき、制御部１１０は、後述の第１のモードと第２のモードのうち、ユーザによって選択された圧縮モード（記録モード）に応じて動画データを符号化、圧縮するように符号化復号化部１１２を制御する。制御部１１０は、記録再生部１０７に対し、メモリ１１１から動画データと音声データを読み出し、記録媒体１０８に記録するように指示する。記録再生部１０７は、圧縮された動画データと音声データに対し、必要なデータを付加してデータストリームを生成する。そして、所定のファイルシステムに従って、このデータストリームを含む動画ファイルを生成し、記録媒体１０８に記録する。
【００１７】
そして、記録開始後、操作部１０９により記録停止の指示があると、制御部１１０は記録再生部１０７に対して、動画と音声の記録停止を指示する。記録再生部１０７は、制御部１１０からの記録停止の指示に従い、記録媒体１０８に対する動画と音声の記録を停止する。本実施形態では、記録開始の指示から記録停止の指示までの間に記録された一連の動画を一つのファイルとして管理する。
【００１８】
また、制御部１１０は、記録を停止すると、記録が停止された動画の先頭フレームを読み出すように記録再生部１０７に指示する。記録再生部１０７は、動画の先頭フレームを記録媒体１０８から読み出し、メモリ１１１に記憶する。制御部１１０は、符号化復号化部１１２に対し、メモリ１１１に記憶された先頭フレームを復号するように指示する。符号化復号化部１１２は、メモリ１１１から先頭フレームの画像データを読み出して復号し、メモリ１１１に記憶する。制御部１１０は更に、画像処理部１０２に対し、復号された先頭フレームの画像データのサイズを縮小させ、記録再生部１０７に出力させる。そして、制御部１１０は、記録再生部１０７に対し、縮小された先頭フレームの画像データを、動画ファイルのサムネイル画像として記録する様に指示する。記録再生部１０７は、縮小された先頭フレームの画像データをサムネイル画像として動画ファイルに格納し、記録媒体１０８に記録する。
【００１９】
次に、再生処理について説明する。操作部１０９により再生モードの指示があると、制御部１１０は、記録媒体１０８に記録された動画ファイルのうち、指定された動画ファイルのサムネイル画像を再生するように、記録再生部１０７を制御する。そして、再生されたサムネイル画像を表示制御部１０５に送る。表示制御部１０５はサムネイル画像を表示部１０６に表示する。そして、ユーザが操作部１０９を操作し、再生が指示されると、制御部１１０は表示中のサムネイル画像に対応した動画ファイルを再生するように、記録再生部１０７を制御する。記録再生部１０７は、指定された動画ファイルを記録媒体１０８から再生し、動画ファイルに格納された動画データと音声データをメモリ１１１に記憶する。符号化復号化部１１２はメモリ１１１から動画データを読み出して復号し、再度メモリ１１１に記憶する。このとき、制御部１１０は、再生された動画データの圧縮モードを検出し、検出された圧縮モードに応じて復号、伸張処理を行う様に符号化復号化部１１２に指示する。表示制御部１０５はメモリ１１１から復号された動画データを読み出し、再生された動画像を表示部１０６に表示する。そして、再生停止の指示があると、制御部１１０は動画ファイルの再生を停止し、再び、サムネイル画像を表示部１０６に表示させる。
【００２０】
次に、本実施形態における圧縮モードについて説明する。本実施形態では、動画を圧縮して記録する際の圧縮モードとして、第１のモードと第２のモードを備えている。本実施形態は、フレーム内予測符号化方式とフレーム間予測符号化方式を用いて動画像を符号化する。
【００２１】
第１のモードにおいては、撮影された動画の各フレームを、Ｈ．２６４／ＭＰＥＧ４  ＡＶＣにおけるフレーム内予測（イントラ予測）を用いた符号化方式により符号化し、圧縮する。この様に、フレーム内予測により各フレームを圧縮することで、復号時に参照フレームを記憶する必要が無くデコーダの負荷が軽い、迅速に復号できる、どのフレームからも復号できるなどの利点がある。
【００２２】
また、第２のモードにおいては、撮影された動画の各フレームを、Ｈ．２６４／ＭＰＥＧ４  ＡＶＣにおけるイントラ予測による符号化方式、或いは、動き補償前方予測フレーム間符号化方式を用いて符号化し、圧縮する。この様に、フレーム間予測を用いて動画を圧縮することで、フレーム内予測のみによる圧縮時に比べ、符号量を大幅に削減することができる。ユーザは操作部１０９を操作することにより、撮影した動画の目的に合わせて、これら二つの圧縮モードの何れか一方を自由に選択し、設定することができる。
【００２３】
なお、ここでは、イントラ予測により圧縮したフレームをＩフレームと呼び、前方予測フレーム間圧縮方式を用いて圧縮したフレームをＰフレームと呼ぶ。
【００２４】
第１のモードでは、撮影された動画の全てのフレームがＩフレームとして符号化される。また、第２のモードでは、１５フレーム毎に１フレームがＩフレームとして符号化され、残りの１４フレームがＰフレームとして符号化される。
【００２５】
図２は、符号化復号化部１１２における符号化処理のブロックを示す図である。図２において、メモリ１１１より読み出された動画データが水平、垂直それぞれ所定数の画素からなるマクロブロック毎に入力され、演算部２０１、フレーム内予測部２０８、動き予測部２１１に出力される。演算部２０１は、切り替え部２１３から出力された予測画像データと入力された画像データとの差分を演算し、整数変換部２０２に出力する。整数変換部２０２は、演算部２０１からのデータに対して直交変換の一つである整数変換処理を施し、入力されたデータを空間成分から周波数成分に変換して量子化部２０３に出力する。量子化部２０３は、後述の様に量子化テーブル選択部２１２から供給された量子化テーブルに従って、各マクロブロックの変換係数を量子化し、エントロピー符号化部２０４と逆量子化部２０５に出力する。本実施形態では、マクロブロックの各変換係数に対する量子化幅（量子化ステップ）が割り当てられた量子化テーブルを複数用意し、量子化テーブル選択部２１２はこれらの量子化テーブルを保持している。量子化テーブル選択部２１２は、後述の様に、制御部１１０からの圧縮強度Ｑの値に対応した量子化テーブルを選択し、量子化部２０３に送る。
【００２６】
逆量子化部２０５は、入力されたデータを逆量子化し、逆整数変換部２０６に出力する。逆整数変換部２０６は、逆量子化部２０５からのデータに対して逆整数変換処理を施して、元の空間成分のデータに変換し、演算部２０７に出力する。演算部２０７は、切り替え部２１３からの予測画像データと逆整数変換処理されたデータとを加算し、フレーム内予測部２０８、ループフィルタ２０９に出力する。ループフィルタ２０９は、演算部２０７からの局部復号データに対して指定されたフィルタ処理を施し、蓄積部２１０に記憶する。蓄積部２１０はループフィルタ２１０からの画像データを記憶する。動き予測部２１１は、第２の圧縮モードにおいて、Ｐフレームを処理する際に、蓄積部２１０に記憶された参照フレームの画像データのうち、入力された画像データとの間の予測誤差（差分）が最も少なくなるマクロブロックを検出し、検出したマクロブロックに対する動きベクトルを動き補償部２１１に知らせる。動き補償部２１２は、動きベクトルに従い、蓄積部２１０から予測画像データとしてのマクロブロックのデータを読み出し、切り替え部２１３に出力する。
【００２７】
一方、フレーム内予測部２０８は、第１の圧縮モード、或いは、第２の圧縮モードにおいてＩフレームを処理する際に、フレーム内予測処理を行う。即ち、フレーム内予測部２０８は、演算部２０７からの、入力されたマクロブロックの画像データに対して画面上で上、もしくは左に隣接する画素のデータと、入力された画像データとに基づいて、最適なイントラ予測モードを検出する。そして、検出したイントラ予測モードで処理するために必要な予測画像データを切り替え部２１３に出力する。Ｈ．２６４では、互いに異なる所定数のイントラ予測モードが用意されている。フレーム内予測部２０８は、これらの予測モードのうち、予測誤差が最も少なくなる予測モードを検出する。
【００２８】
切り替え部２１３は、制御部１１０からの指示に従い、フレーム内予測部２０８と動き補償部２１２からの予測画像データの一方を選択し、演算部２０１と２０７に出力する。切り替え部２１３は、前述の様に、第１の圧縮モードにおいては、動画の記録中は常にフレーム内予測部２０８からの予測画像データを選択して出力する。また、切り替え部２１３は、第２の圧縮モードにおいては、Ｉフレームを処理する際にはフレーム内予測部２０８からの予測画像データを選択し、Ｐフレームを処理する際には動き補償部２１２からの予測画像データを選択する。
【００２９】
フレーム内予測部２０８が検出した予測モードを示す情報と、動き予測部２１１が検出した動きベクトルのデータはエントロピー符号化部２０４に出力される。エントロピー符号化部２０４は、量子化部２０３からのデータと、量子化テーブル選択部２１２により選択されている量子化テーブルの番号、予測モードを示す情報、或いは、動きベクトルのデータを符号化し、圧縮された動画データとして出力する。
【００３０】
次に、第１の圧縮モードと第２の圧縮モードにおけるデータレート（符号量）の制御について説明する。本実施形態では、何れの圧縮モードにおいても、圧縮後の動画データのデータレート（単位時間あたりのデータ量（符号量））が、設定された目標値に近づくように、データレートを制御する。そして、データレートを制御するための制御パラメータとして、圧縮強度Ｑという変数を用いる。圧縮強度Ｑは１からｎまでの所定値を持ち、各値に対応して動画を量子化する際の量子化テーブル番号が割り当てられる。本実施形態では、圧縮強度Ｑの値が大きいほど、発生する符号量が小さくなるように設定されているものとする。
【００３１】
まず、第１の圧縮モードにおけるレート制御について説明する。制御部１１０は、第１の圧縮モードが設定されると、第１の圧縮モードにおける圧縮動画データの目標データレート（目標値）Ｆｉ（メガバイト／秒（ＭＢ／ｓ））を設定する。本実施形態では、カメラ１００のデータ処理能力や記録媒体１０８に対する最大の記録データレート、或いは、動画ファイルの記録フォーマットにより規定された上限のデータレートなどに基づき、これらを超えない様に目標データレートＦｉを設定する。
【００３２】
図３（ａ）は、制御部１１０によるデータレートの制御処理を示すフローチャートである。制御部１１０は、１フレームの動画データの符号化処理が完了する度に、図３の処理を実行し、次の１フレームを圧縮するための圧縮強度Ｑの値を決定する。制御部１１０は、符号化復号化部１１２が１フレームの動画データの圧縮処理を完了し、その旨の情報を符号化復号化部１１２から受けると、図２の処理を開始する。これから圧縮するフレームを記録開始からｔ番目のフレームとする。制御部１１０は、直前のフレーム、つまりｔ−１番目のフレームの圧縮後のデータ量（サイズ）Ｆ（ｔ−１）の情報を符号化復号化部１１２から受け取る（Ｓ３０１）。
【００３３】
次に、制御部１１０は、目標データレートとフレームレートに基づいて決定した１フレームあたりの目標サイズＩｏｐｔとｔ−１番目のフレームのデータ量Ｆ（ｔ−１）との比率Ｐを以下の式（１）より算出する（Ｓ３０２）。
Ｐ＝Ｉｏｐｔ／Ｆ（ｔ−１）・・・（１）
なお、第１の圧縮モードにおける１フレームあたりの目標サイズＩｏｐｔ（バイト）は、Ｉｏｐｔ＝Ｆｉ／フレームレートにより予め算出されている。
【００３４】
ここで、Ｐ＜１の場合、圧縮後のデータ量が目標サイズよりも大きいので、ｔ番目のフレームのデータ量が目標サイズよりも小さくなるように制御したい。また、Ｐ＞１の場合、圧縮後のデータ量が目標サイズよりも小さいので、ｔ番目のフレームのデータ量は目標サイズよりも大きくなるように制御したい。
【００３５】
次に、制御部１１０は、圧縮強度Ｑと圧縮後のデータ量の変化率Ｓとを対応づけたテーブルに基づいて、ｔ番目のフレームの圧縮強度Ｑ（ｔ）を決定する。
【００３６】
図４は、テーブルをグラフとして表した図である。図４において、変化率Ｓは、Ｑの値を１に設定して、あるフレームの画像を圧縮した際の圧縮後のデータ量に対する、各Ｑの値で同じフレームを圧縮した際の圧縮後のデータ量の割合を示すものである。本実施形態では、圧縮強度Ｑを１に設定したときの圧縮後のデータ量を１００％とし、各Ｑの値と変化率Ｓを対応づけたテーブルを不図示の不揮発メモリに記憶している。
【００３７】
そして、制御部１１０は、図４に示すように、このテーブルに基づいて、メモリ１１１に記憶しておいた、ｔ−１番目のフレームを圧縮したときの圧縮強度Ｑ（ｔ−１）に対応した変化率Ｓ（ｔ−１）を検出する。そして、制御部１１０は、式（２）に基づき、この変化率Ｓ（ｔ−１）に対して式（１）で算出した比率Ｐを乗算することで、ｔ番目のフレームに対応した変化率Ｓ（ｔ）を算出する（Ｓ３０３）。
Ｓ（ｔ）＝Ｐ×Ｓ（ｔ−１）・・・（２）
【００３８】
次に、制御部１１０は、再度、テーブルに基づいて、このＳ（ｔ）に対応した圧縮強度Ｑ（ｔ）を決定する（Ｓ３０４）。ここで、Ｓ（ｔ−１）＝Ｐ×Ｓ（ｔ−１）と同じ値がテーブルに記憶されていない場合には、テーブルに記憶されたＳの値のうち、最も近い値をＳ（ｔ−１）とする。
【００３９】
例えば、ｔ−１番目のフレームの圧縮後のサイズを１００キロバイト（ＫＢ）、目標サイズを８０ＫＢとし、ｔ−１番目のフレームの圧縮強度Ｑが５で、これに対応する変化率Ｓが６０％だったとする。
【００４０】
この時、目標サイズとｔ−１番目のフレームのサイズの比率Ｐは、式（１）よりＰ＝８０／１００＝０．８となる。そこで、ｔ−１番目のフレームについては、６０％×０．８＝４８％の変化率に対応した圧縮強度Ｑをテーブルから求める。
【００４１】
次に、制御部１１０は、決定したＱ（ｔ）の値を符号化復号化部１１２に出力し（Ｓ３０５）、更に、次のフレームの圧縮に備え、Ｑ（ｔ）をＱ（ｔ−１）としてメモリ１１１に保存する（Ｓ３０６）。制御部１１０は、以上の処理を記録停止の指示があるまで繰り返す。なお、記録開始後の、先頭フレームについては、予め設定された圧縮強度Ｑを設定する。
【００４２】
次に、第２の圧縮モードにおけるレート制御について説明する。前述の様に、第２のモードにおいては、撮影された動画の各フレームを、Ｈ．２６４／ＭＰＥＧ４  ＡＶＣにおけるイントラ予測による符号化方式、及び、動き補償前方予測フレーム間符号化方式を用いて符号化し、圧縮する。また、第２のモードでは、１５フレーム毎に１フレームをＩフレームとして符号化し、残りの１４フレームがＰフレームとして符号化される。
【００４３】
制御部１１０は、第２の圧縮モードが設定されると、目標データレートＦｉｐ（ＭＢ／ｓ）を設定する。第２の圧縮モードでは、イントラ予測に加え、フレーム間の予測符号化を用いる。フレーム間予測符号化により符号化を行う場合、フレーム内予測による符号化に比べ、被写体の状態による符号量の変動が大きい。例えば、図５の様に、圧縮後の各フレームのデータ量が目標値の上下を往復するように変動し、一定に収束しない場合（発振した場合）、目標データレートから大きく外れてしまう可能性がある。前述の様に、カメラ１００の処理能力や記録フォーマットに規定された上限のレートなどを基に目標レートを設定するが、このように発振によって目標のビットレートを外れてしまうと、最悪の場合処理が間に合わずに、撮影が停止してしまう危険性がある。
【００４４】
そこで、制御部１１０は、第２の圧縮モードでは、同じ画面サイズの動画を圧縮する場合に、第１の圧縮モードよりも低いレートを目標レートＦｉｐとして設定する。例えば、本実施形態では、第１の圧縮モードの目標レートＦｉ（第１の値）に対し、その２／３、或いは３／４程度のレート（第２の値）を第２の圧縮モードの目標レートＦｉｐとして設定するが、もちろん、これ以外のレートでもよい。
【００４５】
図３（ｂ）は、制御部１１０による第２の圧縮モード時のデータレートの制御処理を示すフローチャートである。制御部１１０は、１フレームの動画データの符号化処理が完了する度に、図３（ｂ）の処理を実行し、次の１フレームを圧縮するための圧縮強度Ｑの値を決定する。制御部１１０は、符号化復号化部１１２が１フレームの動画データの圧縮処理を完了し、その旨の情報を符号化復号化部１１２から受けると、図３（ｂ）の処理を開始する。これから圧縮するフレームを記録開始からｔ番目のフレームとする。制御部１１０は、直前のフレーム、つまりｔ−１番目のフレームの圧縮後のデータ量（サイズ）Ｆ（ｔ−１）の情報を符号化復号化部１１２から受け取る（Ｓ３０７）。
【００４６】
次に、制御部１１０は、ｔ−１番目のフレームがＩフレームであったか、或いは、Ｐフレームであったかを判別する（Ｓ３０８）。ｔ−１番目のフレームがＩフレームであった場合、制御部１１０は、目標サイズをＩフレームの目標サイズであるＩｏｐｔに設定する（Ｓ３０９）。また、ｔ−１番目のフレームがＰフレームであった場合、制御部１１０は、目標サイズをＰフレームの目標サイズであるＰｏｐｔに設定する（Ｓ３１０）。
【００４７】
フレーム間予測により動画を符号化する場合、フレーム内予測による符号化に比べて予測誤差が少なく、符号量を少なくすることができる。そこで、第２の圧縮モードにおいては、目標レートとフレームレートとに基づいて、ＩフレームとＰフレームに対し、それぞれ独立に目標サイズを設定している。即ち、Ｉフレームの目標サイズＩｏｐｔがＰフレームの目標サイズのｍ倍（ｍは所定値）となるように、目標レートとフレームレートとに基づいて、目標サイズを設定する。例えば、Ｉｏｐｔ×２＋Ｐｏｐｔ×２８がＦｉｐとなるように、目標サイズを設定する。
【００４８】
次に、制御部１１０は、設定された目標サイズとｔ−１番目のフレームのデータ量Ｆ（ｔ−１）との比率Ｐを以下の式（３）または式（４）より算出する（Ｓ３１１）。
ｔ−１番目のフレームがＩフレームの場合
Ｐ＝Ｉｏｐｔ／Ｆ（ｔ−１）・・・（３）
ｔ−１番目のフレームがＰフレームの場合
Ｐ＝Ｐｏｐｔ／Ｆ（ｔ−１）・・・（４）
ここで、Ｐ＜１の場合、圧縮後のデータ量が目標サイズよりも大きいので、ｔ番目のフレームのデータ量が目標サイズよりも小さくなるように制御したい。また、Ｐ＞１の場合、圧縮後のデータ量が目標サイズよりも小さいので、ｔ番目のフレームのデータ量は目標サイズよりも大きくなるように制御したい。
【００４９】
次に、制御部１１０は、第１の圧縮モード時と同様に、圧縮強度Ｑと圧縮後のデータ量の変化率Ｓとを対応づけたテーブルに基づいて、ｔ−１番目のフレームの圧縮強度Ｑ（ｔ−１）に対応した変化率Ｓ（ｔ−１）を検出する。そして、制御部１１０は、式（５）に示す様に、変化率Ｓ（ｔ−１）と比率Ｐ、更に、時定数Ｔ（０＜Ｔ＜１）を乗算し、ｔ番目のフレームの変化率Ｓ（ｔ）を算出する（Ｓ３１２）。
Ｓ（ｔ）＝Ｐ×Ｓ（ｔ−１）×Ｔ・・・（５）
この様に、第２の圧縮モードでは、時定数Ｔを用いてＳ（ｔ）を決めるので、符号化された動画データのレートが目標レートに収束せず、発振してしまうことを防止することができる。なお、図６（ａ）に示すように、時定数Ｔを大きく設定するほど収束は早いものの、フレームサイズが発振して収束しない可能性が高くなる。また、図６（ｂ）に示す様に、時定数Ｔを小さく設定するほど収束は遅いものの、発振する可能性が低い。また、時定数Ｔを小さくしすぎると、被写体の画像の変化に対してデータレートの追従性が悪くなることや、目標レートとは異なるレートに収束してしまう可能性もある。
【００５０】
本実施形態では、時定数Ｔとして所定値を設定し、撮影中は変更しないものとするが、動画の記録中に、圧縮された動画のデータ量の変動などに基づいて、時定数Ｔを撮影中に適宜変更するようにしてもよい。
【００５１】
次に、制御部１１０は、再度、テーブルに基づいて、このＳ（ｔ）に対応した圧縮強度Ｑ（ｔ）を決定する（Ｓ３１３）。そして、制御部１１０は、このＱ（ｔ）が所定の範囲に含まれているか否かを判別する。
【００５２】
第２の圧縮モードでは、Ｑ（ｔ−１）に対する圧縮強度Ｑの変化量に対して上限と下限を設ける。即ち、図７に示す様に、Ｑ（ｔ−１）から閾値ＴｈＬｏｗだけ小さい値を下限値とし、Ｑ（ｔ−１）から閾値ＴｈＨｉｇｈだけ大きい値を上限値とする。また、本実施形態では、目標レートを超えない様に制御するために、下限側の閾値ＴｈＬｏｗよりも上限側の閾値ＴｈＨｉｇｈを大きく設定する。そして、制御部１１０は、Ｓ３１３で決定されたＱ（ｔ）が、下限値よりも小さいかどうかを判別する（Ｓ３１４）。ここで、Ｑ（ｔ）が下限値よりも小さかった場合、制御部１１０は、Ｑ（ｔ）を下限値Ｑ（ｔ−１）−ＴｈＬｏｗに設定する（Ｓ３１９）。また、Ｑ（ｔ）が下限値以上であった場合、制御部１１０は、Ｑ（ｔ）が上限値よりも大きいか否かを判別する（Ｓ３１５）。Ｑ（ｔ）が上限値よりも大きい場合、制御部１１０は、Ｑ（ｔ）を上限値Ｑ（ｔ−１）＋ＴｈＨｉｇｈに設定する（Ｓ３１６）。また、Ｓ３１４とＳ３１５の判定の結果、Ｑ（ｔ）が上限値と下限値の間である場合、制御部１１０はＱ（ｔ）をそのまま設定する。
【００５３】
次に、制御部１１０は、決定したＱ（ｔ）の値を符号化復号化部１１２に出力し（Ｓ３１７）、更に、次のフレームの圧縮に備え、Ｑ（ｔ）をＱ（ｔ−１）としてメモリ１１１に保存する（Ｓ３１８）。制御部１１０は、以上の処理を記録停止の指示があるまで繰り返す。なお、第２の圧縮モードにおいても、記録開始後の、先頭フレームについては、予め設定された圧縮強度Ｑを設定する。
【００５４】
次に、本実施形態における撮影時の露出制御について説明する。前述のように、撮像部１０１において、レンズを通過した被写体の反射光は撮像素子に結像し、フォトダイオードによる光電変換によって撮像素子に溜まった電荷をデジタルデータに変換することにより、画像情報を得る。この時、露出制御部１０３はシャッター、絞り、撮像素子のゲインを制御することによって被写体の露出量を適正に制御する。
【００５５】
例えば、被写体を明るく写したい場合、シャッター速度を遅くして露光時間を長くする、絞りを開いて光の取り込み量を多くする、ゲイン（感度）を調整して電荷量を増やすなどの方法がある。それぞれの方法に制約や弊害があるため、制御部１１０は、シーンに応じて適応的に、ないしはユーザの指定に従って、シャッター速度、絞り値、感度調整の値の組み合わせを変更するように露出制御部１０３に指示する。
【００５６】
カメラ１００では、シャッター速度、絞り値、感度の組み合わせの露出制御データを不揮発メモリに記憶しておき、この露出制御データに基づいて、適応的に露出を制御する。
【００５７】
また、本実施形態で、圧縮モードに応じてゲイン（感度）の最大値を変更している。撮像素子の感度を上げると、弊害としてノイズが劣化することが知られている。ノイズは時空間的にランダムな成分を多く含むランダムノイズと固定パターンノイズに区別される。これらのノイズは、被写体にとっては不要な情報であり、圧縮後のデータ量を増加させることになる。そのため、撮像素子の感度を上げると、圧縮された動画の画質は劣化する。
【００５８】
ここで、フレーム間予測による符号化では前フレームとの差分を符号化するため、固定パターンのノイズに関しては差分が発生せず、符号量の増加は少ないが、ランダムノイズによる画質劣化は回避できない。一方で、フレーム内予測により圧縮を行う場合、ランダムノイズと固定パターンノイズの何れも符号量を増加させることになる。加えて、フレーム内符号化により圧縮した場合、フレーム間予測符号化により圧縮した場合に比べて符号量が多くなし、圧縮効率が低い。そのため、データレートを一定に抑えようとした場合、フレーム間圧縮を行う場合よりも、フレーム内圧縮を行う場合の方が圧縮率を大きくすることになり、圧縮ノイズによる画質劣化がより顕著である。
【００５９】
この様な理由から、第１の圧縮モードでは、第２の圧縮モードよりも、撮像部１０１における感度アップの際の最大ゲイン量を低く設定している。これにより、撮像部１０１からの動画データに含まれるノイズ成分を抑え、ノイズによる符号量の増加と画質劣化を防ぐようにした。
【００６０】
また、画像処理部１０２では、撮像部１０１からの動画データに対し、シャープネス強調処理を施す。シャープネス強調処理により、画像中のノイズ成分も輪郭として強調されてしまうことがある。そこで、本実施形態では、制御部１１０は、第１の圧縮モードにおいては、第２の圧縮モードよりも、シャープネス強調の度合いを低くするように、画像処理部１０２を制御する。また、これ以外にも、撮影中に各フレームの符号量と目標サイズとの差分が所定値よりも大きい場合には、シャープネス強調の度合いを低くして、ノイズによる符号量の増加と画質劣化を抑えるように、制御部１１０が画像処理部１０２を制御してもよい。
【００６１】
次に、本実施形態において記録される動画ファイルについて説明する。本実施形態では、クイックタイム（登録商標）ムービーファイルに応じた形式（ファイルの拡張子は．ＭＯＶ）で動画ファイルを記録する。
【００６２】
図１１は、第２の圧縮モードで記録される動画ファイルの構成を示す図である。図１１において、ファイルに記録されるデータは「アトム」と呼ばれるデータ構造の内部に記述され、アトムを単位としてファイルに記録される。アトムは次のようなフィールドから構成される。
Ｓｉｚｅ：Ｓｉｚｅフィールドを含む、アトム全体のデータサイズを表す４バイトのフィールド
Ｔｙｐｅ：アトムの種類を表す４バイトのタイプ識別子。
Ｔｙｐｅフィールド以降のフィールドはアトムによってはオプションであるため、ここでは説明を省略する。また、アトム内にアトムを包含することが可能であり、それにより入れ子構造を実現している。
【００６３】
図１１において、ｆｔｙｐ（ファイルタイプアトム）１１０１はファイルの種別を表すアトムである。ｍｏｏｖ（ムービーアトム）１１０２には、後述のｍｖｈｄ（ムービーヘッダアトム）やｔｒａｋ（トラックアトム）などを含む、音声や映像に関する情報が格納されている。ｍｄａｔ（ムービーデータアトム）１１０３には、音声や映像の実データが格納されている。
【００６４】
ｕｄｔａ（ユーザーデータアトム）１１０４には任意のデータが格納されている。ｍｅｔａ（メタデータアトム）１１０５には、カメラ１００のモデル名や通信部１１４で受信したカメラ１００の位置情報やＵＴＣ（協定世界時：ＣｏｏｒｄｉｎａｔｅｄＵｎｉｖｅｒｓａｌＴｉｍｅ）などのメタデータが格納されている。ｍｖｈｄ１１０６には、動画の作成日時や修正日時、タイムスケール、Ｄｕｒａｉｏｎなどが記載されている。映像用のｔｒａｋ１１０７には、映像の符号化の種類や後述のｓｔｓｃ（サンプルチャンクアトム）やｓｔｓｓ（同期サンプルアトム）、ｓｔｓｚ（サンプルサイズアトム）、ｓｔｃｏ（チャンクオフセット）などｍｄａｔ内の映像データに関する情報が格納されている。音声用のｔｒａｋ１１０８には、音声データのサンプリング周波数やビット数、チャンネル数などのｍｄａｔ内の音声データに関する情報が格納されている。
【００６５】
映像用のｓｔｓｃ１１０９は、１チャンクがいくつのサンプル（映像の場合はフレーム）数で構成されているかを表している。本実施例では全ての映像チャンクが１チャンク＝１サンプル（フレーム）から構成されるものとする。ｓｔｓｓアトム１１１０にはキーフレーム番号が格納されている。例えば、動画データにおいて１５フレーム毎にＩフレームが含まれる場合、ｓｔｓｓ１１１０には、１、１６、３１、４６、・・・とキーフレーム番号が記載される。映像用ｓｔｓｚ１１１１には各サンプルのデータサイズが格納されている。映像用ｓｔｃｏ１１１２には各チャンクのファイル先頭からのオフセット（バイト数）が格納されている。
【００６６】
ｍｄａｔ１１０３には、音声チャンクデータ１１１３、１１１４と、映像チャンクデータ１１１５−１１２０が格納される。各映像チャンクに記載したアルファベットはフレームの種類を表し、アルファベットの添え字の数字は先頭からのフレーム番号を表している。つまり、映像チャンク１１１５には、一番目のフレームでＩフレーム（フレーム内予測により圧縮されたフレーム）のデータが格納されていることを示している。また、映像チャンク１１１６には、二番目のフレームでＰフレーム（フレーム間予測により圧縮されたフレーム）のデータが格納されていることを示している。
【００６７】
以上のように、映像用のｓｔｓｚおよびｓｔｃｏに格納されている情報を用いることで、ｍｄａｔ内の任意の映像フレームにアクセスするが可能である。
【００６８】
また、図１２は第１の圧縮モードで記録される動画ファイルの構成を示す図である。図１２において、ｆｔｙｐ１２０１からｓｔｓｃ１２０９は図１１のｆｔｙｐ１１０１からｓｔｓｚ１１０９と同様であるので、説明を省略する。また、ｓｔｓｚ１２１０から音声チャンク１２１３はｓｔｓｚ１１１１から音声チャンク１１１４と同様であるので、説明を省略する。
【００６９】
映像チャンク１２１４から１２１９はｍｄａｔ１２０３内に格納されている映像チャンクデータを表しており、すべてのフレームがＩピクチャから構成されている。そのため、明示的にどのフレームがキーフレームであるかを表す必要がないので、映像ｔｒａｋ１２０７内にｓｔｓｓは存在しない。また、ｓｔｓｓを記述する際には、全てのフレームがキーフレームであるので、１，２，３，４、・・・と記述すればよい。
【００７０】
この様に、本実施形態では、第１の圧縮モードでは、前フレームの圧縮強度と実際のデータ量に基づいて、次のフレームの圧縮強度を決定し、データレートを制御することで、圧縮後の動画のデータレートを目標レートに近くなるように調整することができる。
【００７１】
また、第２の圧縮モードにおいては、前フレームの圧縮強度と実際のデータ量に基づいて、次のフレームの圧縮強度を決定し、データレートを制御することで、圧縮後の動画データのデータレートを目標レートに近くなるように調整することができる。
【００７２】
また、第２の圧縮モードでは、第１の圧縮モードに比べて、目標レートを低く設定している。更に、第２の圧縮モードでは、前フレームの符号量と目標サイズとの比率と前フレームの変化率に加え、所定の時定数（係数）Ｔを乗算することで現フレームの変化率Ｓを算出する。
【００７３】
そのため、フレーム間予測を用いて符号化を行う場合にも、各フレームの符号量の変化が発振することなく、圧縮後の動画データのレートを目標レートに収束させることができる。
【００７４】
そして、本実施形態では、この様に、各フレームをフレーム内予測により符号化する第１の圧縮モードと、フレーム内予測とフレーム間予測とを用いて符号化する第２の圧縮モードで、それぞれレート制御の手順を変えている。
【００７５】
そのため、各圧縮モードにおいて、適切にレート制御を行うことができ、目標レートに対して符号化された動画のデータレートを収束させることができる。
【００７６】
（第２の実施形態）
次に、第２の実施形態を説明する。第２の実施形態では、第２の圧縮モードにおける制御手順が第１の実施形態とは異なる。その他の構成は第１の実施形態と同じであるので、第２の圧縮モードにおける制御手順について説明する。
【００７７】
フレーム間予測符号化により符号化を行う場合、参照フレームと符号化対象フレームとの間の相関が高く、予測誤差（差分）が少なければ発生する符号量が少なくなる。そのため、フレーム内予測により符号化を行う場合に比べ、大幅に符号量を削減することができる。一方、参照フレームと符号化対象フレームとの間の相関が低く、予測誤差（差分）が多い場合、発生する符号量が多くなる。そのため、この場合には、ＩフレームとＰフレームとの符号量の差が少なくなる。
【００７８】
図８は、フレーム内予測とフレーム間予測を用いて動画を符号化した場合の発生符号量の例を示している。例えば、被写体の動きが小さく、参照フレームと符号化対象フレームとの間の相関が高い場合には、グラフ８０２の様に、矢印で示したＩフレームの符号量と、Ｐフレームの符号量との差が大きくなる。また、被写体の動きが大きく、参照フレームと符号化対象フレームとの間の相関が低い場合には、グラフ８０１の様に、矢印で示したＩフレームの符号量と、Ｐフレームの符号量との差が小さくなる。更に、符号化対象の被写体の複雑度（空間周波数）によっても符号量が変化する。
【００７９】
そこで、第２の実施形態では、第２の圧縮モードにおいて、圧縮強度と変化率のテーブルを複数備え、符号化対象の被写体の複雑度と動きに応じて、これら複数のテーブルの何れかを自動的に選択するようにした。
【００８０】
制御部１１０は、撮影開始の指示の前の待機状態において、動画データの各フレームについて、前フレームとの動きの有無を判定する。例えば、制御部１１０は、撮影された動画データの前後のフレーム間の差分に基づいて動きの有無を判別する。或いは、制御部１１０は、不図示の動きセンサの出力に基づいて動きの有無を判別する。更に、制御部１１０は、撮影待機状態において、各フレームについて複雑度（空間周波数）が高いか低いかを判定する。例えば、制御部１１０は、撮影された各フレームに対してハイパスフィルタ、ローパスフィルタの処理を施し、それぞれの出力に基づいて複雑度を判定する。そして、制御部１１０は、これらの判定結果に基づいて、現在撮影されているフレームが、図９に示す四つの区分９０１−９０４の何れであるかをフレーム毎に判別する。
【００８１】
図１０は、図９に示す各区分に対応したテーブルを示すグラフである。図１０において、ライン１００１は区分９０２に対応し、ライン１００２は区分９０１に対応し、ライン１００３は区分９０４に対応し、ライン１００４は区分９０３にそれぞれ対応する。この様に、動きが小さく、また、複雑度も低い被写体の場合には、フレーム間の予測誤差が少なく、圧縮強度Ｑは比較的小さな値を設定することが多いと考えられる。そのため、区分９０３に対応した被写体については、圧縮強度Ｑが小さい範囲に対し、変化率Ｓが大きく変化する様に設定されたテーブルを選択する。また、動きが大きく、また、複雑度が高い被写体の場合には、圧縮強度Ｑが小さな値から大きな値まで変動することが考えられる。そのため、区分９０２に対応した被写体については、圧縮強度Ｑが小さい値から大きい値まで、比較的同じ様に変化率Ｓが変化する様に設定されたテーブルを選択する。
【００８２】
制御部１１０は、撮影開始の指示に応じて、撮影開始直前のフレームに対する、区分９０１−９０４の判定結果に基づいて、複数のテーブルの何れかを選択する。そして、これ以降、撮影中は、選択したテーブルに基づいて、図３（ｂ）に示す処理を実行する。
【００８３】
この様に、本実施形態では、第２の圧縮モードにおいて、圧縮強度Ｑと変化率Ｓのテーブルを複数用意し、撮影された被写体の状態によってこれら複数のテーブルの何れかを選択する構成とした。
【００８４】
そのため、符号化対象の被写体の状態に応じた最適なレート制御を行うことが可能となる。
【００８５】
なお、第２の実施形態では、撮影待機状態において被写体の状態を図９の様に判別し、撮影開始の直前のフレームに対する判別結果に基づいて、テーブルを選択していた。これ以外にも、例えば、撮影開始の直前の複数フレーム分の動き判別結果と複雑度の判別結果に基づいてテーブルを選択する様にしてもよい。或いは、撮影開始後に、撮影された各フレームの状態をフレーム毎に判別し、この判別結果に基づいて、撮影中に適宜テーブルを変更する様にしてもよい。
【図１】
0005762026.tif 000002
【図２】
0005762026.tif 000003
【図３】
0005762026.tif 000004
【図４】
0005762026.tif 000005
【図５】
0005762026.tif 000006
【図６】
0005762026.tif 000007
【図７】
0005762026.tif 000008
【図８】
0005762026.tif 000009
【図９】
0005762026.tif 000010
【図１０】
0005762026.tif 000011
【図１１】
0005762026.tif 000012
【図１２】
0005762026.tif 000013