(57)【要約】【課題】  画像領域ごとにフレーム内圧縮／フレーム間予測差分圧縮を切り替える技術を提供する【解決手段】  本発明の画像圧縮装置は、動きベクトル検出部、判定部、フレーム内圧縮部、およびフレーム間圧縮部を備える。動きベクトル検出部は、画像データ間の動きベクトルを画像上の複数位置で求める。判定部は、動きベクトルの画像上の空間変化を大小判定する。フレーム内圧縮部は、圧縮対象の画像データから、動きベクトルの空間変化が大きいと判定される画像領域Ａを選別し、選別された画像領域Ａにフレーム内圧縮を施す。フレーム間圧縮部は、圧縮対象の画像データから、動きベクトルの空間変化が小さいと判定される画像領域Ｂを選別し、選別された画像領域Ｂにフレーム間予測差分圧縮を施す。【選択図】      図７
2008079238.tif 000002
【特許請求の範囲】
【請求項１】
画像データ群をデータ圧縮する画像圧縮方法であって、
前記画像データ間の動きベクトルを画像上の複数位置について求めるステップと、
前記動きベクトルの前記画像上の変化（以下、空間変化という）を大小判定するステップと、
圧縮対象の前記画像データから、前記動きベクトルの前記空間変化が大きいと判定される画像領域Ａを選別し、選別された前記画像領域Ａにフレーム内圧縮を施すステップと、
圧縮対象の前記画像データから、前記動きベクトルの前記空間変化が小さいと判定される画像領域Ｂを選別し、選別された前記画像領域Ｂにフレーム間予測差分圧縮を施すステップと
を備えたことを特徴とする画像圧縮方法。
【請求項２】
画像データ群をデータ圧縮する画像圧縮装置であって、
前記画像データ間の動きベクトルを画像上の複数位置について求める動きベクトル検出部と、
前記動きベクトルの前記画像上の変化（以下、空間変化という）を大小判定する判定部と、
圧縮対象の前記画像データから、前記動きベクトルの前記空間変化が大きいと判定される画像領域Ａを選別し、選別された前記画像領域Ａにフレーム内圧縮を施すフレーム内圧縮部と、
圧縮対象の前記画像データから、前記動きベクトルの前記空間変化が小さいと判定される画像領域Ｂを選別し、選別された前記画像領域Ｂにフレーム間予測差分圧縮を施すフレーム間圧縮部と
を備えたことを特徴とする画像圧縮装置。
【請求項３】
請求項２に記載の画像圧縮装置において、
前記動きベクトル検出部は、
前記画像データをブロックに区分し、そのブロックを更に区分することにより、階層的なブロック区分を行う区分部と、
階層上位の前記ブロックの動きベクトルを先に求め、前記動きベクトルを開始位置として、階層下位の前記ブロックの動きベクトルを探索する探索部とを備え、
前記判定部は、前記ブロックの階層間における動きベクトルの変化が所定の許容量内に整定したことを停止条件として、階層下位のブロック区分を停止し、
前記フレーム内圧縮部は、前記ブロックの最終的な区分サイズが所定サイズより小さくなるブロックを選別し、選別された前記ブロックを前記画像領域Ａとしてフレーム内圧縮を施し、
前記フレーム間圧縮部は、前記ブロックの最終的な区分サイズが前記所定サイズより大きいブロックを選別し、選別された前記ブロックを前記画像領域Ｂとしてフレーム間予測差分圧縮を施す
ことを特徴とする画像圧縮装置。
【請求項４】
請求項３に記載の画像圧縮装置において、
前記判定部は、階層的なブロック区分が前記所定サイズより小さくなる前段階で、前記ブロックの更なる区分を停止し、
前記フレーム内圧縮部は、前記停止条件を満足せずにブロック区分を停止したブロックを、最終的な区分サイズが所定サイズより小さくなるブロックと見なして、フレーム内圧縮を施し、
前記フレーム間圧縮部は、前記停止条件を満足してブロック区分を停止したブロックにフレーム間予測差分圧縮を施す、
ことを特徴とする画像圧縮装置。
【請求項５】
請求項２ないし請求項４のいずれか１項に記載の画像圧縮装置において、
前記画像データは、輝度成分および色差成分を含むカラー画像であり、
前記色差成分にフレーム内圧縮を施す色差圧縮部を備え、
前記輝度成分は、前記フレーム内圧縮部および前記フレーム間圧縮部によって前記画像領域Ａ，Ｂに分けて圧縮する
ことを特徴とする画像圧縮装置。
【請求項６】
請求項２ないし請求項５のいずれか１項に記載の画像圧縮装置と、
被写体を撮像して画像データ群を生成する撮像部とを備え、
前記画像圧縮装置は、前記撮像部で生成された前記画像データ群をデータ圧縮する
ことを特徴とする電子カメラ。
【請求項７】
コンピュータを、請求項２ないし請求項５のいずれか１項に記載の画像圧縮装置として機能させるための画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像圧縮方法、画像圧縮装置、電子カメラ、および画像処理プログラムに関する。
【背景技術】
【０００２】
従来、動画像の画像圧縮方式として、ＭＰＥＧ２方式が知られている（下記の特許文献１など）。このＭＰＥＧ２方式では、動画像を下記（１）〜（３）のようなフレーム種類に分類して、フレーム単位に画像圧縮の処理を切り替える。
【０００３】
（１）Ｉピクチャ…動画像から所定コマ数おきにＩピクチャを抽出し、このＩピクチャにフレーム内圧縮を施す。
（２）Ｐピクチャ…ＩピクチャとＩピクチャの途中に位置するＰピクチャを抽出する。前方向のＩピクチャから作成した動き予測フレームと、このＰピクチャとのフレーム間差（フレーム間予測差分）を求め、このフレーム間予測差分をデータ圧縮する。
（３）Ｂピクチャ…ＩピクチャとＰピクチャの途中に位置するＢピクチャを抽出する。前後のＩピクチャおよびＰピクチャから作成した動き予測フレームと、このＢピクチャとのフレーム間差（フレーム間予測差分）を求め、このフレーム間予測差分をデータ圧縮する。
【特許文献１】特開２００５−１２３７２号公報（段落０００２など）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上述したように、従来技術では、Ｉピクチャ，Ｐピクチャ，およびＢピクチャといったフレーム単位に、フレーム内圧縮／フレーム間予測差分圧縮の切り替えを行う。
しかしながら、１フレーム枚分の画像データを複数の画像領域に区分して、これら画像領域ごとにフレーム内圧縮／フレーム間予測差分圧縮の切り替えを行うものはなかった。
そこで、本発明は、画像領域ごとにフレーム内圧縮／フレーム間予測差分圧縮を切り替える技術を提供することを目的とする。
【課題を解決するための手段】
【０００５】
《１》  本発明の画像圧縮方法は、画像データ群をデータ圧縮する画像圧縮方法であって、次のステップを備える。
(1)画像データ間の動きベクトルを画像上の複数位置について求めるステップ。
(2)動きベクトルの画像上の変化（以下、空間変化という）を大小判定するステップ。
(3)圧縮対象の画像データから、動きベクトルの空間変化が大きいと判定される画像領域Ａを選別し、選別された画像領域Ａにフレーム内圧縮を施すステップ。
(4)圧縮対象の画像データから、動きベクトルの空間変化が小さいと判定される画像領域Ｂを選別し、選別された画像領域Ｂにフレーム間予測差分圧縮を施すステップ。
《２》  本発明の画像圧縮装置は、画像データ群をデータ圧縮する画像圧縮装置であって、動きベクトル検出部、判定部、フレーム内圧縮部、およびフレーム間圧縮部を備える。
動きベクトル検出部は、画像データ間の動きベクトルを画像上の複数位置について求める。
判定部は、動きベクトルの画像上の変化（以下、空間変化という）を大小判定する。
フレーム内圧縮部は、圧縮対象の画像データから、動きベクトルの空間変化が大きいと判定される画像領域Ａを選別し、選別された画像領域Ａにフレーム内圧縮を施す。
フレーム間圧縮部は、圧縮対象の画像データから、動きベクトルの空間変化が小さいと判定される画像領域Ｂを選別し、選別された画像領域Ｂにフレーム間予測差分圧縮を施す。
《３》  なお好ましくは、動きベクトル検出部は、区分部、および探索部を備える。
区分部は、画像データをブロックに区分し、そのブロックを更に区分することにより、階層的なブロック区分を順次に行う。
探索部は、階層上位のブロックの動きベクトルを先に求め、動きベクトルを開始位置として、階層下位のブロックの動きベクトルを探索する。
判定部は、ブロックの階層間における動きベクトルの変化が所定の許容量内に整定したことを停止条件として、階層下位のブロック区分を停止する。
フレーム内圧縮部は、ブロックの最終的な区分サイズが所定サイズより小さくなるブロックを選別し、選別されたブロックを画像領域Ａとしてフレーム内圧縮を施す。
一方、フレーム間圧縮部は、ブロックの最終的な区分サイズが所定サイズより大きいブロックを選別し、選別されたブロックを画像領域Ｂとしてフレーム間予測差分圧縮を施す。
《４》  また好ましくは、判定部は、階層的なブロック区分が所定サイズより小さくなる前段階で、ブロックの更なる区分を停止する。
この場合、フレーム内圧縮部は、停止条件を満足しないままにブロック区分を停止したブロックを、最終的な区分サイズが所定サイズより小さくなるブロックと見なして、フレーム内圧縮を施す。
一方、フレーム間圧縮部は、停止条件を満足してブロック区分を停止したブロックに対してフレーム間予測差分圧縮を施す。
《５》  なお好ましくは、色差成分についてフレーム内圧縮を行う色差圧縮部を備える。画像データとして、輝度成分および色差成分を含むカラー画像が入力される場合、色差成分については色差圧縮部を用いてフレーム内圧縮を実施する。一方、輝度成分については、上述したフレーム内圧縮部およびフレーム間圧縮部を用いて、画像領域Ａ，Ｂに分けて圧縮処理を実施する。
《６》  本発明の電子カメラは、《２》〜《５》のいずれか１項に記載の画像圧縮装置と、被写体を撮像して画像データ群を生成する撮像部とを備える。この画像圧縮装置は、撮像部で生成された画像データ群をデータ圧縮する。
《７》  本発明の画像処理プログラムは、コンピュータを、《２》〜《５》のいずれか１項に記載の画像圧縮装置として機能させるためのプログラムである。
【発明の効果】
【０００６】
本発明によれば、画像データを画像領域に区分して、画像領域ごとにフレーム内圧縮／フレーム間予測差分圧縮を適応的に切り替えることが可能になる。
【発明を実施するための最良の形態】
【０００７】
《実施形態の構成説明》
図１は、電子カメラ１１の構成を示すブロック図である。
図１において、電子カメラ１１は、被写体を連写撮影または動画撮影して画像データ群を生成する撮像部１２と、画像データ群を画像圧縮する画像圧縮装置１３とを備えて概略構成される。その他、電子カメラ１１は、画像圧縮装置１３で生成される複数種類の圧縮データをまとめて、一つまたは複数の圧縮ファイルを生成するファイル生成部２１を備える。
【０００８】
上記の画像圧縮装置１３は、下記の構成要件を備える。
(1)動きベクトル検出部１４…画像データ（基準画像という）と画像データ（参照画像という）との間における絵柄の動きベクトルを、画像上の複数位置で求める。なお、この動きベクトル検出部１４は、区分部１５、および探索部１６を備える。
(2)判定部１７…複数位置の動きベクトルについて、画像上の空間的変化を大小判定する。
(3)フレーム内圧縮部１８…圧縮対象の画像データから、動きベクトルの空間変化が大きい画像領域Ａを選別し、選別された画像領域Ａに対してフレーム内圧縮を施す。
(4)フレーム間圧縮部１９…圧縮対象の画像データから、動きベクトルの空間変化が小さい画像領域Ｂを選別し、選別された画像領域Ｂに対してフレーム間予測差分圧縮を施す。
(5)色差圧縮部２０…画像データ群の色差成分について、フレーム内圧縮を施す。
【０００９】
《実施形態の動作説明》
まず、動きベクトル検出の動作について先に説明する。続いて、動きベクトル検出を画像データの領域区分に使用した、画像圧縮処理について説明する。
【００１０】
［動きベクトル検出のメインルーチン］
図２は、動きベクトル検出のメインルーチンを説明する流れ図である。以下、図２に示すステップ番号に沿って、この動作を説明する。
【００１１】
ステップＳ１：  動きベクトル検出部１４は、画像データ群の中から、類似度の高い２つの画像データを選択的に取得し、参照画像および基準画像とする。これら２つの画像データの選択には、撮影時刻が近接する、あるいはフレーム間差分が小さいなど、類似度の高い画像データを選択することが好ましい。
２つの画像データの内、一方の参照画像は、探索部１６が管理するメモリ領域に格納される。他方の基準画像は、区分部１５が管理するメモリ領域に格納される。
なお、参照画像および基準画像をそのまま格納せずに、参照画像および基準画像のエッジ成分を格納してもよい。この処理により、後述するブロック単位のエッジ抽出処理を省略することができる。
【００１２】
ステップＳ２：  動きベクトル検出部１４は、動きベクトルの階層方向の並列演算を開始するためにスレッドを生成する。このスレッドでは、基準画像などを参照渡しする引数をつけて、後述する関数Ｆ（）が呼び出される。
ここで生成されるスレッドは、大元の親スレッドである。この親スレッド内において、同様の子スレッドが再帰的に複数生成されることにより、本メインルーチンの動作と並行して、階層的な動きベクトルの検出動作が多岐にわたって実行される。
【００１３】
ステップＳ３：  動きベクトル検出部１４は、上述した階層的なスレッドから逐次に動きベクトルの報告を受ける。動きベクトル検出部１４は、報告された動きベクトルを階層構造に分類してデータベース管理する。
【００１４】
ステップＳ４：  動きベクトル検出部１４は、親スレッドからスレッド完了の報告を受けると、ステップＳ５に動作を移行する。一方、親スレッドの処理が未完了の場合は、動きベクトル検出部１４はステップＳ３に動作を戻す。
【００１５】
ステップＳ５：  動きベクトル検出部１４は、データベースに登録された動きベクトルを、対応するブロックの階層に従ってツリー構造化する。動きベクトル検出部１４は、ツリー構造化された動きベクトルのデータを外部へ出力する。図３は、このツリー構造データの一例を模式的に示す図である。このツーリー構造データに従って、より下位階層の関数Ｆ（ブロック）の処理制御（動きベクトルの検出を中断したり、検出方法を変えるなど）を行うことにより、動きベクトル検出を効率化することができる。
【００１６】
［動きベクトル検出のスレッド処理］
図４および図５は、上述したスレッド単位に実施される関数Ｆ（ブロック）の具体的な処理制御を説明する流れ図である。以下、図４および図５に示すステップ番号に沿って、このスレッド単位の動作を説明する。
【００１７】
ステップＳ１０：  区分部１５は、関数Ｆ（ブロック）に付与される引数を読み込む。
この引数には、基準画像におけるブロックの位置（例えばブロックの左上点の座標）とブロックサイズ（例えばブロックの縦横画素数）が含まれる。
また、ブロックを含む上位ブロックについて動きベクトルが既知の場合には、この動きベクトルのデータも引数に含まれる。
【００１８】
ステップＳ１１：  探索部１６は、引数のブロックサイズが、予め定められた所定サイズＳｃよりも大きいか否かを判定する。この所定サイズＳｃは、動きベクトル検出を実施する最小単位のブロックサイズを規定するものである。
引数のブロックサイズが所定サイズＳｃよりも大きい場合、探索部１６は、動きベクトル検出を実行するため、ステップＳ１２に動作を移行する。
一方、引数のブロックサイズが所定サイズＳｃよりも小さい場合、ステップＳ２７に動作を移行する。この分岐処理によって、ブロックが過度に微細化する前に、動きベクトルの階層的な検出動作を打ち止めとすることができる。
【００１９】
ステップＳ１２：  区分部１５は、引数に従って基準画像からブロックの画素データを取得し、探索部１６に伝達する。
【００２０】
ステップＳ１３：  探索部１６は、このブロックの画素データから、空間周波数フィルタを用いてエッジ成分を抽出する。探索部１６は、ブロックのエッジ成分の絶対値和を求め、エッジ成分の量とする。
【００２１】
ステップＳ１４：  探索部１６は、ブロックのエッジ成分の量が、所定の閾値より少ないか否かを判定する。この閾値は、動きベクトルを検出するために望ましいエッジ量の推奨下限値を規定するものである。
ブロックに含まれるエッジ成分がこの閾値以上の場合、探索部１６はステップＳ１６に動作を移行する。
一方、ブロックに含まれるエッジ成分が閾値よりも少ない場合、探索部１６はステップＳ１５に動作を移行する。
【００２２】
ステップＳ１５：  探索部１６は、ブロックサイズが、予め定められたサイズＳａ以上か否かを判定する。このサイズＳａは、ステップＳ１４の停止条件によらず、動きベクトル検出を継続すべきブロックサイズを規定するものである。
ブロックサイズがサイズＳａ以上の場合、探索部１６は、動きベクトルを検出するため、ステップＳ１６に動作を移行する。この動作により、比較的大きなブロックサイズの段階で、動きベクトル検出が停止してしまう事態を防止できる。
一方、ブロックサイズがサイズＳａよりも小さい場合、探索部１６はステップＳ２５に動作を移行する。この分岐処理により、エッジ成分が少なくなったブロックから順番に、動きベクトルの階層的な検出動作が打ち止めとなる。
【００２３】
ステップＳ１６：  探索部１６は、ブロックを含む上位ブロックについて動きベクトルが既知の場合、この動きベクトルを類似領域の探索開始位置に設定する。
【００２４】
ステップＳ１７：  探索部１６は、ブロックサイズが、予め定められたサイズＳｂ以上か否かを判定する。このサイズＳｂは、類似領域の探索手法を切り換える目安を示すものであり、個々の探索手法とブロックサイズとの適性などを考慮して決定することが好ましい。
ブロックサイズがサイズＳｂ以上の場合、探索部１６は、ステップＳ１８に動作を移行する。
一方、ブロックサイズがサイズＳｂよりも小さい場合、探索部１６は、ステップＳ２０に動作を移行する。
【００２５】
ステップＳ１８：  ここでは、ブロックサイズが大きいため、射影成分を用いて動きベクトルの検出を行うことで、処理負荷の軽減を図る。
図６は、この射影成分の計算の様子を示す図である。まず、探索部１６は、下式に示す縦エッジ抽出用のフィルタ（図６［Ａ］参照）を用いて、基準画像のブロックから縦エッジ成分ｇｙを抽出する。
gy(x,y)=-f(x,y-1)+f(x,y+1)
さらに、探索部１６は、下式に示す横エッジ抽出用のフィルタ（図６［Ｂ］参照）を用いて、基準画像のブロックから横エッジ成分ｇｘを抽出する。
gx(x,y)=-f(x-1,y)+f(x+1,y)
なお、ノイズの影響を軽減するため、探索部１６は、所定の微小振幅に収まる縦エッジ成分ｇｙと横エッジ成分ｇｘについては、ゼロに置き換えることが好ましい。
次に、探索部１６は、図６［Ａ］に示すように、縦エッジ成分ｇｙを水平行の単位に累積加算することにより、縦射影波形を算出する。
さらに、探索部１６は、図６［Ｂ］に示すように、横エッジ成分ｇｘを垂直列の単位に累積加算することにより、横射影波形を算出する。
なお、探索部１６は、参照画像の画像全域についても、ステップＳ１８と同様の処理を行い、縦射影波形と横射影波形を予め求めておく。
【００２６】
ステップＳ１９：  探索部１６は、図６［Ａ］に示すように、基準画像のブロックの縦射影波形と、参照画像の縦射影波形とをずらしながら差分をとり、その差分の絶対値和または二乗和が最小となる波形ズレを探索する。このとき、ステップＳ１６で設定された上位ブロックの動きベクトルを探索開始位置とすることによって、探索時間の短縮を図ることが好ましい。このように求めた波形ズレは、基準画像のブロックと参照画像との縦方向の位置ズレに相当する。
なお、ブロックサイズが閾値（例えば縦１００画素）以上では、計算量の少ない差分の絶対値和を比較することが好ましい。また、ブロックサイズが閾値（例えば縦１００画素）未満の場合には、差分変動に敏感に反応する二乗和を比較することが好ましい。
また、探索部１６は、図６［Ｂ］に示すように、横方向についても同一の処理を実施し、基準画像のブロックと参照画像との横方向の位置ズレを検出する。
以上の探索動作を終えた後、ステップＳ２１に動作を移行する。
【００２７】
ステップＳ２０：  探索部１６は、参照画像内から、ブロックとの空間差分（画素単位の差分の絶対値和または二乗和）が極小となる類似領域を探索する。なお、ブロックサイズが閾値（例えば縦１００画素）以上では、計算量の少ない差分の絶対値和を比較することが好ましい。また、ブロックサイズが閾値（例えば縦１００画素）未満の場合には、差分変動に敏感に反応する二乗和を比較することが好ましい。
【００２８】
ステップＳ２１：  探索部１６は、ステップＳ１９またはステップＳ２０で求めた位置ズレに基づいて、当該ブロックの位置における基準画像と参照画像との間の動きベクトルを求める。
【００２９】
ステップＳ２２：  探索部１６は、メインルーチン（動きベクトル検出部１４）が管理するデータベースに、ステップＳ２１で求めた動きベクトルと、ブロックの位置およびサイズを登録する。
【００３０】
ステップＳ２３：  判定部１７は、上位ブロック（または、近接するブロック）の動きベクトルと、ステップＳ２１で求めた動きベクトルとの差（空間変化）を求める。
この動きベクトルの空間変化の大きさが、誤差などの許容量内に収まっている場合、判定部１７は動きベクトルの変化が整定したと判断し、ステップＳ２４に動作を移行する。
一方、動きベクトルの空間変化の大きさが、誤差などの許容量を超える場合、判定部１７は、動きベクトルの検出を継続する必要があると判断してステップＳ２６に動作を移行する。
【００３１】
ステップＳ２４：  判定部１７は、ブロックサイズが、予め定められたサイズＳａ以上か否かを判定する。このサイズＳａは、ステップＳ２３の停止条件によらず、動きベクトル検出を継続すべきブロックサイズを規定するものである。
ブロックサイズがサイズＳａ以上の場合、判定部１７は、動きベクトル検出を継続するため、ステップＳ２６に動作を移行する。
一方、ブロックサイズがサイズＳａよりも小さい場合、判定部１７は、ステップＳ２５に動作を移行する。
【００３２】
ステップＳ２５：  判定部１７は、現在処理中のブロックに対して、フレーム内圧縮のフラグをリセットする。このフラグ操作により、後段の画像圧縮処理では、当該ブロックに対して、フレーム間予測差分圧縮が実施される。
このようなフラグ操作の完了後、判定部１７は、関数Ｆ（ブロック）の読み出し元に動作を戻す。このリターン処理により、動きベクトルが整定したブロックから順番に、動きベクトルの階層的な検出動作が打ち止めとなる。
【００３３】
ステップＳ２６：  判定部１７は、後述するステップＳ２８のブロック区分によって、ブロックサイズが所定サイズＳｃ未満となるか否かを判定する。
ここで、所定サイズＳｃ未満となる場合、判定部１７はステップＳ２７に動作を移行する。
一方、所定サイズＳｃ以上となる場合、判定部１７はステップＳ２８に動作を移行する。
【００３４】
ステップＳ２７：  判定部１７は、現在処理中のブロックに対して、フレーム内圧縮のフラグをセットする。このフラグ操作により、後段の画像圧縮処理では、当該ブロックに対して、フレーム内圧縮が実施される。
このようフラグ操作の完了後、判定部１７は、関数Ｆ（ブロック）の読み出し元に動作を戻す。このリターン処理により、フレーム内圧縮処理を行うことが確定的なブロックに対して、不要なブロック区分を省くことが可能になる。
【００３５】
ステップＳ２８：  区分部１５は、ブロックを、例えば２×２に区分することで、下位のブロック（並列ブロック）を得る。この区分パターンや区分数については、動きベクトルのツリー構造データに応じて柔軟に変更してもよい。例えば、上位階層ではブロックの区分数を多くし、下位階層ではブロックの区分数を少なくしてもよい。このような処理制御により、動きベクトルの階層が過度に深くなることを防止できる。
【００３６】
ステップＳ２９：  ステップＳ２８で区分した下位のブロックそれぞれについて、子スレッドを生成し、子スレッドの単位に関数Ｆ（ブロック）の再帰読み出しを実行する。
これら子スレッドの再帰読み出しが全て復帰した時点で、関数Ｆ（ブロック）の読み出し元に動作が戻る。
【００３７】
［画像圧縮の動作説明］
図７は、画像圧縮の動作を説明する流れ図である。以下、図７に示すステップ番号に沿ってこの動作を説明する。
【００３８】
ステップＳ１００：  画像圧縮装置１３は、撮像部１２から画像データ群を取り込む。
【００３９】
ステップＳ１０１：  画像圧縮装置１３は、絵柄の類似する画像データが隣り合うように、画像データ群の順番を並べ換える（なお、撮影時刻の順に並べるだけでもよい）。
画像圧縮装置１３は、動きベクトル検出部１４および判定部１７を用いて、隣り合う画像データの相互間において、上述した動きベクトル検出の処理（図２，図４，図５）を実施する。その結果、個々の画像データは、図８に示すように、サイズの異なるブロックに区分される。
【００４０】
ステップＳ１０２：  フレーム内圧縮部１８は、圧縮対象の画像データから、フレーム内圧縮のフラグがセット状態（ステップＳ２７参照）を示すブロック群を選別する。フレーム内圧縮部１８は、選別したブロック群を画像領域Ａとし、この画像領域Ａの輝度成分に対してフレーム内圧縮を施す。
ここでのフレーム内圧縮は、フレーム内で完結する画像圧縮方式であればよい。例えば、隣り合う画素間で輝度成分の差データを求め、その差データを可変長符号化やランレングス符号化などを用いてデータ圧縮してもよい。また例えば、ＪＰＥＧ方式のように直交変換を用いて画像圧縮を行ってもよい。
なお、画像領域Ａをブロックやタイルといった小単位に区分して、フレーム内圧縮を実施してもよい。また、画像領域Ａの全域に対して、フレーム内圧縮を実施してもよい。
【００４１】
ステップＳ１０３：  フレーム間圧縮部１９は、圧縮対象の画像データから、フレーム内圧縮のフラグがリセット状態（ステップＳ２５参照）を示すブロック群を選別する。フレーム間圧縮部１９は、選別したブロック群を画像領域Ｂとし、この画像領域Ｂの輝度成分に対してフレーム間予測差分圧縮を施す。
例えば、フレーム間圧縮部１９は、基準画像のブロックの区画を動きベクトルの分だけずらした区画を求め、このずらした区画に合わせて参照画像からブロック（動き補償ブロック）を切り出す。次に、フレーム間圧縮部１９は、基準画像のブロックと、参照画像の動き補償ブロックとの間で輝度成分のブロック差分を求める。フレーム間圧縮部１９は、このブロック差分を圧縮符号化する。フレーム間圧縮部１９は、求めたブロック差分の圧縮結果と動きベクトルの符号化データとを合わせて、圧縮データを生成する。
【００４２】
ステップＳ１０４：  色差圧縮部２０は、撮像部１２から画像データ群の色差成分（Ｃｂ，Ｃｒなど）を取得し、これら色差成分に対してフレーム内圧縮を施す。
ここでのフレーム内圧縮も、フレーム内で完結する画像圧縮方式であればよい。
なお、色差成分については、サブサンプリング（４：２：２、４：１：１、４：２：０など）を行うことで、さらに圧縮効率を高めてもよい。
【００４３】
ステップＳ１０５：  ファイル生成部２１は、ステップＳ１０２〜Ｓ１０３で生成された下記の圧縮データ(1)〜(3)と、画像伸張時に必要な付随情報（画像領域Ａ、Ｂやブロックのレイアウト情報、画像領域Ｂのブロックごとの動きベクトルなど）とをまとめて、画像データ群の圧縮ファイルを生成する。
(1)画像領域Ａの輝度成分をフレーム内圧縮した圧縮データ
(2)画像領域Ｂの輝度成分をフレーム間予測差分圧縮した圧縮データ
(3)色差成分をフレーム内圧縮した圧縮データ
なお、ここでの圧縮ファイルは、個々の画像データの単位に生成してもよい。また、動画像ファイルのように、画像データ群を一つにまとめた圧縮ファイルを生成してもよい。
【００４４】
《本実施形態の効果など》
本実施形態では、動きベクトルの空間変化が大きい画像領域Ａを選別する。このような画像領域Ａは、隣接する動きベクトルが大きく変動するため、フレーム間の絵柄の動きが複雑で、フレーム間相関が比較的低い箇所であると考えられる。したがって、この画像領域Ａについては、フレーム間予測差分圧縮では圧縮効率を稼ぐことが難しい。そこで、この画像領域Ａについてはフレーム内圧縮に切り換えることにより、圧縮効率を高める。
【００４５】
一方、本実施形態では、動きベクトルの空間変化が小さい画像領域Ｂを選別する。このような画像領域Ｂは、隣接する動きベクトルの変動が小さく、フレーム間の絵柄の動きが単純で、フレーム間相関が比較的高い箇所であると考えられる。したがって、この画像領域Ｂについては、フレーム間予測差分圧縮を適用することで圧縮効率を高める。
【００４６】
さらに、本実施形態では、画像データを階層的にブロック区分し、そのブロックごとに動きベクトルを求める。このとき、動きベクトルの空間変化が大きい画像領域Ａでは、動きベクトルの階層間の変化がなかなか整定しないため、ブロックの最終的な区分サイズが小さくなる。一方、動きベクトルの空間変化が小さい画像領域Ｂでは、動きベクトルの階層間の変化が早い段階で整定するため、ブロックの最終的な区分サイズが大きくなる。そのため、ブロックの最終的な区分サイズを大小判定することで、画像領域Ａ，Ｂを的確に分けることが可能になる。
【００４７】
さらに、本実施形態では、階層的なブロック区分が所定サイズＳｃより小さくなる前段階において、ブロック区分を停止する。このとき、停止条件を満足せずにブロック区分を停止したブロックについては、最終的な区分サイズが所定サイズＳｃより小さくなるブロックと見なし、画像領域Ａに分類する。このような見なし処理によって、余分なブロック区分を省いて、処理の高速化を実現できる。
【００４８】
また、本実施形態では、輝度成分については画像領域によるフレーム内圧縮／フレーム間予測差分圧縮の切り換えを行う。一方、色差成分についてはフレーム内圧縮を行う。一般に、色差成分については、撮像素子のベイヤ配列上のＲＢ画素間隔や、後処理の色差ローパスフィルタ処理などの影響により、輝度成分に比べて空間周波数の帯域が狭くなる。そのため、フレーム内における色差成分の変化は比較的少なく、フレーム内相関が高くなる。したがって、色差成分については、フレーム内圧縮によって十分に高い圧縮効率を得ることが可能になる。
【００４９】
《実施形態の補足事項》
なお、上述した実施形態では、再帰読み出しの関数Ｆ（）を使用する例について説明した。しかしながら、本発明はこれに限定されるものではない。画像データを階層的に区分しながら、個々のブロックについて動きベクトル検出を個別に実施してもよい。
【００５０】
また、上述した実施形態では、矩形状のブロック（図８参照）に区分する例について説明した。しかしながら、本発明はこのブロック形状に限定されるものではない。例えば、エッジに沿ってブロックを区切ることによって、被写体やその被写体パーツの輪郭形状を有するブロックを生成してもよい。
【００５１】
なお、上述した実施形態では、ブロックの階層間における動きベクトルの変化を空間変化とし、その空間変化の大小判定から画像領域Ａ，Ｂを区分している。しかしながら、本発明はこれに限定されるものではない。隣接ブロック間における動きベクトルの変化を空間変化とし、その空間変化の大小判定から画像領域Ａ，Ｂを区分してもよい。
【００５２】
また、上述した実施形態では、画像圧縮装置１３を電子カメラ１１に搭載する態様について説明した。しかしながら、本発明はこれに限定されるものではない。例えば、画像圧縮装置１３単体で構成してもよい。また、コンピュータと画像処理プログラムを用いて、画像圧縮装置１３をソフトウェア的に実現してもよい。
【００５３】
なお、上述した実施形態では、画像データの輝度色差成分に対して画像圧縮処理を行っている。しかしながら、本発明はこれに限定されるものではない。例えば、ＲＧＢ成分それぞれについて、上述した輝度成分と同様の画像圧縮処理を施してもよい。また、Ｇ成分のみ輝度成分と同様の画像圧縮処理を施し、ＲＢ成分についてはフレーム内圧縮を施してもよい。
【実施例１】
【００５４】
［フレーム内圧縮／フレーム間圧縮の切り換え効果］
図９〜図１１は、画像データ群（フレーム番号０〜１８０）の演算値（予測差分など）を求め、その演算値の標準偏差Sigmaをフレーム番号ごとにプロットしたグラフである。なお、グラフ中のプロット記号は、下記の圧縮方式を意味する。
(＊)  階層的に求めた動きベクトルを用いて圧縮データを求めた場合
(×)  グローバル動き補償を行って圧縮データを求めた場合（参考データ）
(＋)  動き補償を行わずに圧縮データを求めた場合（参考データ）
(□)  画像全域にフレーム内圧縮を行った場合（参考データ）
(■)  ブロック空間差分を最小化する動きベクトルの理想値を用いて、フレーム間予測差分を求めた場合（参考データ）
以下、これらのグラフ別に結果を説明する。
【００５５】
まず、図９に示すプロット（＊）は、射影成分を用いて階層的な動きベクトルを簡易に求め、これら動きベクトルを用いて画像全域にフレーム間予測差分圧縮を行ったケースである。動きの激しいフレーム番号（６０〜１２０）では、このプロット（＊）は、フレーム内圧縮のプロット（□）よりも標準偏差Sigmaが高くなり、圧縮効率の向上に限界がある。
【００５６】
図１０に示すプロット（＊）は、サイズの大きな階層上位のブロックでは射影成分を用いて動きベクトルを求め、サイズの小さな階層下位のブロックでは空間差分を極小化する動きベクトルを求めている。このような部分改良により、プロット（＊）が示す標準偏差Sigmaは全般的に低くなり、圧縮効率に一定の改善が見られる。
【００５７】
図１１に示すプロット（＊）は、上述した実施形態に則して、画像データを画像領域Ａ，Ｂに区分して、画像領域Ａ，Ｂごとにフレーム内圧縮／フレーム間予測差分圧縮を適応的に切り替えるケースである。この場合、プロット（＊）が示す標準偏差Sigmaは更に低くなり、圧縮効率が一段と改善されることが分かる。
【００５８】
図１２は、上述した図１１の標準偏差をエントロピーに換算したものである。この結果からも、本実施形態における圧縮効率の改善効果が確認できる。
【実施例２】
【００５９】
［輝度色差成分への適用］
次に、輝度色差成分（ここではＹＣｂＣｒ）からなるカラー画像データに本実施形態を適用するケースについて効果を説明する。
【００６０】
図１３は、画像データ群（フレーム番号０〜１８０）の圧縮データを求め、その圧縮データのエントロピーをフレーム番号ごとにプロットしたグラフである。なお、グラフ中のプロット記号は、下記の圧縮方式を意味する。
(＊)  階層的に求めた動きベクトルを用いてフレーム間予測差分圧縮を行った場合
(□)  輝度色差成分ＹＣｂＣｒを画像領域Ａ，Ｂに区分して、フレーム内圧縮／フレーム間予測差分圧縮を適応的に切り替えた場合
(×)  グローバル動き補償を行って圧縮データを求めた場合（参考データ）
(＋)  動き補償を行わずに圧縮データを求めた場合（参考データ）
(■)  輝度色差成分ＹＣｂＣｒにフレーム内圧縮を行った場合（参考データ）
(○)  色成分ＲＧＢにフレーム内圧縮を行った場合（参考データ）
【００６１】
この図１３に示すプロット（○）とプロット（■）とを比較すると、ＲＧＢ色空間から輝度色差空間へ変換するだけで、フレーム内圧縮のエントロピーを１．５ｂｉｔ程度下げ、圧縮効率を改善することができる。
【００６２】
しかしながら、図１３に示すプロット（□）とプロット（■）とを比較すると、プロット（□）の方が全般的にエントロピーが高く、圧縮効率が悪いことが分かる。これは、フレーム内の情報量が少ない色差成分ＹＣｂＣｒについて部分的にフレーム間予測差分圧縮を行ったために、情報量が逆に増えてしまったためと推測される。
【００６３】
そこで、色差成分ＣｒＣｂのみフレーム内圧縮を行う方式に切り換え、図１４に示すプロット（□）を得た。このプロット（□）とプロット（■）とを比較すると、プロット（□）の方が全般的にエントロピーが低く、圧縮効率の改善に成功している。
【００６４】
なお、本実施例では、輝度色差成分ＹＣｂＣｒの処理について説明した。しかしながら、本発明はこれに限定されるものではない。例えば、Ｌａｂ等のその他の輝度色差成分に適用してもよい。
【産業上の利用可能性】
【００６５】
以上説明したように、本発明は、画像圧縮装置などに利用可能な技術である。
【図面の簡単な説明】
【００６６】
【図１】電子カメラ１１の構成を示すブロック図である。
【図２】動きベクトル検出のメインルーチンを説明する流れ図である。
【図３】ツリー構造データの一例を模式的に示す図である。
【図４】関数Ｆ（ブロック）の処理制御を説明する流れ図（１／２）である。
【図５】関数Ｆ（ブロック）の処理制御を説明する流れ図（２／２）である。
【図６】射影成分の計算の様子を示す図である。
【図７】画像圧縮の動作を説明する流れ図である。
【図８】画像のブロック区分の一例を示す図である。
【図９】圧縮効率を示す実験結果である。
【図１０】圧縮効率を示す実験結果である。
【図１１】圧縮効率を示す実験結果である。
【図１２】圧縮効率を示す実験結果である。
【図１３】圧縮効率を示す実験結果である。
【図１４】圧縮効率を示す実験結果である。
【符号の説明】
【００６７】
１１…電子カメラ，１２…撮像部，１３…画像圧縮装置，１４…動きベクトル検出部，１５…区分部，１６…探索部，１７…判定部，１８…フレーム内圧縮部，１９…フレーム間圧縮部，２０…色差圧縮部，２１…ファイル生成部
【図１】
2008079238.tif 000003
【図２】
2008079238.tif 000004
【図３】
2008079238.tif 000005
【図４】
2008079238.tif 000006
【図５】
2008079238.tif 000007
【図６】
2008079238.tif 000008
【図７】
2008079238.tif 000009
【図８】
2008079238.tif 000010
【図９】
2008079238.tif 000011
【図１０】
2008079238.tif 000012
【図１１】
2008079238.tif 000013
【図１２】
2008079238.tif 000014
【図１３】
2008079238.tif 000015
【図１４】
2008079238.tif 000016