(57)【要約】【課題】動きベクトル検出の演算量を低減することができる動きベクトル検出装置を提供することを目的とする。【解決手段】Ｍ×Ｎ画素からなる対象ブロックをサブブロックへ分割するブロック分割決定部１０７と、ブロック分割決定部１０７で分割された各サブブロックの動きベクトルを検出する動きベクトル検出部１０６とを含み、前記ブロック分割決定部１０７は、前記対象ブロックに複数個のアクティビティ検出ブロックを設定し、設定した各アクティビティ検出ブロックのアクティビティを検出し、検出した各アクティビティに基づいて前記対象ブロックをサブブロックに分割する態様を決定する。【選択図】図１
2010278519.tif 000002
【特許請求の範囲】
【請求項１】
動きベクトル検出装置であって、
Ｍ×Ｎ画素からなる対象ブロックをサブブロックへ分割するブロック分割決定部と、
ブロック分割決定部で分割された各サブブロックの動きベクトルを検出する動きベクトル検出部とを含み、
前記ブロック分割決定部は、
前記対象ブロックに複数個のアクティビティ検出ブロックを設定し、
設定した各アクティビティ検出ブロックのアクティビティを検出し、
検出した各アクティビティに基づいて前記対象ブロックをサブブロックに分割する態様を決定する、
ことを特徴とする動きベクトル検出装置。
【請求項２】
前記ブロック分割決定部は、前記対象ブロックを上下に２分割することによりＭ×（Ｎ／２）画素からなる２個のアクティビティ検出ブロックと、前記対象ブロックを左右に２分割することにより（Ｍ／２）×Ｎ画素からなる２個のアクティビティ検出ブロックとを設定することを特徴とする請求項１に記載の動きベクトル検出装置。
【請求項３】
前記アクティビティは、ダイナミックレンジであることを特徴とする請求項１、２のいずれかに記載の画像符号化装置。
【請求項４】
動きベクトル検出プログラムであって、
コンピュータを、
Ｍ×Ｎ画素からなる対象ブロックをサブブロックへ分割するブロック分割決定手段と、
ブロック分割決定部で分割された各サブブロックの動きベクトルを検出する動きベクトル検出手段として機能させ、
前記ブロック分割決定手段は、
前記対象ブロックに複数個のアクティビティ検出ブロックを設定し、
設定した各アクティビティ検出ブロックのアクティビティを検出し、
検出した各アクティビティに基づいて前記対象ブロックをサブブロックに分割する態様を決定する、
ことを特徴とする動きベクトル検出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像を複数のブロックに分割し、分割したブロック毎に動きベクトルを検出する動きベクトル検出装置に関する。
【背景技術】
【０００２】
近年、ＡＶ情報のデジタル化が進み、映像信号をデジタル化して取り扱うことのできる機器が広く普及しつつある。映像信号は膨大な情報量を有する。そこで、記録容量や伝送効率を考慮して、情報量を削減しつつ符号化することが一般的である。映像信号の符号化技術として、Ｈ．２６４という国際規格が定められている。Ｈ．２６４規格は、他の既存の符号化技術に比べ約２倍の圧縮効率をもたらす。従って、Ｈ．２６４規格は、レコーダ記録、インターネットストリーミング等に非常に適した符号化方式である。
【０００３】
Ｈ．２６４では、フレーム間の要素の動きを認識して圧縮率を向上させる動き補償が導入されている。動き補償は、動き予測処理の結果に基づいて決定された動きベクトルに基いて行われる。Ｈ．２６４における動き補償（動きベクトルの決定等）は、１６×１６画素のマクロブロックに対してだけでなく、このマクロブロックをさらに分割した８×１６、８×８、８×４、４×８、４×４画素の合計７種類のブロックに対して行うことができる。これは、マクロブロックよりも小さな物体の動きを良好に検出し、符号化効率を上げるためである。
【０００４】
図１２は、Ｈ．２６４における動き補償のブロックサイズについて示したものであり、縦１６画素×横１６画素の大きさを有するマクロブロックをどのように分割するかを示す。分割方法として、まず１６×１６画素のブロックに対して４通りあり、各々のブロック分割タイプを図１２（ａ）〜（ｄ）に示す。
【０００５】
図１２（ａ）は、マクロブロックを分割せずに動き補償を行う場合を示し、図１２（ｂ）はマクロブロックを縦１６画素×横８画素の２つのブロックに分割して動き補償を行う場合を示し、図１２（ｃ）はマクロブロックを縦８画素×横１６画素の２つのブロックに分割して動き補償を行う場合を示し、図１２（ｄ）はマクロブロックを縦８画素×横８画素の４つのブロックに分割して動き補償を行う場合を示す。
【０００６】
さらに、図１２（ｄ）に示す分割タイプ４の分割方法を選択する場合には、縦８画素×横８画素の４つのサブブロックのそれぞれに対して、図１２（ｅ）〜（ｈ）にそれぞれ示す、縦８画素×横８画素の４ブロックを分割する方法から選択できる。
【０００７】
上述のように、Ｈ．２６４では、動き補償のブロックサイズとして異なる複数のブロックサイズを選択することで符号化効率を上げることができる。しかしながら、マクロブロックの分割タイプとしてどの分割タイプが動き補償として最適であるか決定するには、すべての分割タイプにおける動きベクトルを求め、その動きベクトルにおける予測誤差などから最適な分割タイプを判定する必要がある。それゆえ、動きベクトル探索に膨大な演算量が必要で、符号化処理の速度向上が困難であった。
【０００８】
このため、非特許文献１に開示されているように、Ｈ．２６４においては、上述の複数分割タイプの動きベクトル検索に要する演算量の低減が図られている。例えば、先ず、より小さなブロックサイズの動きベクトルを求め、この動きベクトルの方向と大きさから、より大きなブロックサイズの動きベクトルを推定することで、動き検索するブロックサイズの数を減らし演算量を低減する。例えば、図１３（ａ）に示すように、ブロックを４分割したサブブロックのそれぞれの動きベクトルが非常に近い場合、それはブロック全体の動きベクトルに近似していると推定される。それゆえ、サブブロックで構成されるブロック全体を動き補償すべきブロックサイズとして動き検索する。逆に、図１３（ｂ）に示すように、４つのサブブロックの動きベクトルにばらつきがある場合、それはブロック全体として一つの動きベクトルを指していない。それゆえ、４つのサブブロックを動き補償すべきブロックサイズとして、そのまま４つのサブブロックの動きベクトルを使用する。
【０００９】
また、特許文献１には、動きベクトル検出済みの周辺ブロックのブロック分割から、対象マクロブロックのブロック分割を推定し、この分割したブロックについて動きベクトルを検出する方法が開示されている。この方法によれば、動きベクトルを検出すべきブロックが予め絞り込まれるので、動きベクトル検出に要する演算量を低減することができる。
【先行技術文献】
【非特許文献】
【００１０】
【非特許文献１】清水智行、米山暁夫、柳原広昌、中島康弘：「Ｈ．２６４符号化処理における動き予測の高速化に関する一検討」情報処理学会研究報告（ＩＰＳＪ  ＳＩＧ  Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ）１００３／１０／３  ｐｐ．２３−２８」
【特許文献】
【００１１】
【特許文献１】特開２００６−７４５２０
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、前記非特許文献１に記載の手法では、より小さなブロックの動きベクトルをも求めなければならない。しかも、より小さなブロックサイズは分割されたブロック数が多いので、動きベクトル検出の演算量も多くなり、大幅な低減には至らない。
【００１３】
また、特許文献１に記載の手法では、動きベクトル検出に要する演算量を低減することが可能であるものの、対象マクロブロックの特徴に関係なく周辺ブロックの分割情報を基に分割するため、ブロック分割の精度が低い。
【００１４】
本発明は、以上のような問題点に鑑みてなされたもので、ブロック分割の精度を向上させつつ、動きベクトル検出の演算量を低減することができる動きベクトル検出装置を提供することを課題とする。
【課題を解決するための手段】
【００１５】
前記従来の課題を解決するために、本発明の動きベクトル検出装置は、動きベクトル検出装置であって、Ｍ×Ｎ画素からなる対象ブロックをサブブロックへ分割するブロック分割決定部と、ブロック分割決定部で分割された各サブブロックの動きベクトルを検出する動きベクトル検出部とを含み、前記ブロック分割決定部は、前記対象ブロックに複数個のアクティビティ検出ブロックを設定し、設定した各アクティビティ検出ブロックのアクティビティを検出し、検出した各アクティビティに基づいて前記対象ブロックをサブブロックに分割する態様を決定する、ことを特徴とする。
【００１６】
また、本発明の動きベクトル検出プログラムは、コンピュータを、Ｍ×Ｎ画素からなる対象ブロックをサブブロックへ分割するブロック分割決定手段と、ブロック分割決定部で分割された各サブブロックの動きベクトルを検出する動きベクトル検出手段として機能させ、前記ブロック分割決定手段は、前記対象ブロックに複数個のアクティビティ検出ブロックを設定し、設定した各アクティビティ検出ブロックのアクティビティを検出し、検出した各アクティビティに基づいて前記対象ブロックをサブブロックに分割する態様の決定をする、ことを特徴とする。
【発明の効果】
【００１７】
本発明によれば、動きベクトル検出を行う前に、Ｍ×Ｎ画素からなる対象ブロックをサブブロックへ分割する態様を決定し、この決定された分割態様にしたがって、対象となるサブブロックの動きベクトルを検出する。したがって、動きベクトル検出を行うべきサブブロック数が減少し、動きベクトル検出に関する演算量を大幅に削減することができる。
【００１８】
加えて、ブロック分割の態様を決定する際、対象ブロックに複数個のアクティビティ検出ブロックを設定し、設定した各アクティビティ検出ブロックのアクティビティを検出し、検出した各アクティビティに基づいてブロック分割態様を決定する。したがって、対象ブロックの特徴に応じたブロック分割が可能となり、ブロック分割の精度を向上させることができる。
【００１９】
なお、対象ブロックの分割態様の決定に要する演算量は、従来方式における動きベクトル検出に要する演算量と、本発明における動きベクトル検出に要する演算量との差分よりも遥かに少なく、無視し得る量である。
【図面の簡単な説明】
【００２０】
【図１】本実施の形態に係る動きベクトル検出装置が組み込まれた動画像圧縮符号化装置の構成を示すブロック図
【図２】入力画像全体、及び縦１６×横１６画素から構成される動きベクトル検出対象マクロブロックについての説明図
【図３】動きベクトル検出対象マクロブロックのアクティビティ検出の説明図
【図４】第一ブロックＢ１（分割対象マクロブロック）をブロック分割する手順についての説明図。（ａ）分割前の第一ブロックＢ１についての説明図、（ｂ）第一ブロックＢ１に対するアクティビティ検出ブロックＡ０とアクティビティ検出ブロックＡ１についての説明図、（ｃ）第一ブロックＢ１に対するアクティビティ検出ブロックＡ２とアクティビティ検出ブロックＡ３についての説明図、（ｄ）第一ブロックＢ１に対する分割結果についての説明図
【図５】第二ブロックＢ２０をブロック分割する手順についての説明図。（ａ）第二ブロックＢ２０に対するアクティビティ検出ブロックＡ０とアクティビティ検出ブロックＡ１についての説明図、（ｂ）第二ブロックＢ２０に対するアクティビティ検出ブロックＡ２とアクティビティ検出ブロックＡ３についての説明図、（ｃ）第二ブロックＢ２０に対する分割についての説明図
【図６】第二ブロックＢ２１をブロック分割する手順についての説明図。（ａ）第二ブロックＢ２１に対するアクティビティ検出ブロックＡ０とアクティビティ検出ブロックＡ１についての説明図、（ｂ）第二ブロックＢ２１に対するアクティビティ検出ブロックＡ２とアクティビティ検出ブロックＡ３についての説明図、（ｃ）第二ブロックＢ２１に対する分割についての説明図
【図７】第二ブロックＢ２２をブロック分割する手順についての説明図。（ａ）第二ブロックＢ２２に対するアクティビティ検出ブロックＡ０とアクティビティ検出ブロックＡ１についての説明図、（ｂ）第二ブロックＢ２２に対するアクティビティ検出ブロックＡ２とアクティビティ検出ブロックＡ３についての説明図、（ｃ）第二ブロックＢ２２に対する分割についての説明図
【図８】第二ブロックＢ２３をブロック分割する手順についての説明図。（ａ）第二ブロックＢ２３に対するアクティビティ検出ブロックＡ０とアクティビティ検出ブロックＡ１についての説明図、（ｂ）第二ブロックＢ２３に対するアクティビティ検出ブロックＡ２とアクティビティ検出ブロックＡ３についての説明図、（ｃ）第二ブロックＢ２３に対する分割についての説明図
【図９】本実施の形態における動きベクトル検出のフローチャート
【図１０】従来方式における動きベクトル検出のフローチャート
【図１１】従来方式と、本発明の実施の形態１における動きベクトル演算回数の比較表
【図１２】Ｈ．２６４における動き補償のブロックサイズについての説明図
【図１３】対象ブロックが複数のブロックサイズで動き予測できる場合に、より小さなブロックサイズの動きベクトルからより大きなブロックサイズの動きベクトルを推定する方式についての説明図
【発明を実施するための形態】
【００２１】
以下、添付の図面を参照して実施の形態を説明する。
１．構成
図１は、動きベクトル検出装置を含む動画像圧縮符号化装置全体の構成を概念的に示す。
【００２２】
この動画像圧縮符号化装置は、入力部１００、差分演算部１０１、変換部１０２、量子化部１０３、エントロピー符号化部１０４、出力部１０５、ローカルデコーダ１１０、及び動きベクトル検出部１０６を備える。
【００２３】
入力部１００より入力された画像データ１２０は、複数の小さなブロック群に分割される。これらのブロックは、マクロブロックと呼ばれ、各マクロブロックは１６×１６の画素サイズにより構成される。また、ピクチャは、複数のスライスに分割される。各スライスは、複数のマクロブロックより構成される。そして、差分演算部１０１以降、マクロブロック単位で処理が行われる。
【００２４】
ここで、ピクチャには、Ｉピクチャ、Ｐピクチャ、Ｂピクチャの３種類が存在する。Ｉピクチャは、映像の画像データを符号化する際、画像中の空間的な冗長性を減少させたピクチャである。Ｐピクチャ及びＢピクチャは、連続するピクチャ間に存在する時間的な冗長性を利用して動き予測及び動き補償に基づく予測符号化を行うピクチャであり、Ｉピクチャよりも効率的な圧縮が可能である。なお、Ｐピクチャは前方予測（時間的に過去の画像)のみ参照可能であり、Ｂピクチャは前方予測に加え、後方予測（時間的に未来の画像)も参照可能である。
【００２５】
差分演算部１０１は、入力画像１２０と動き補償画像１２１との差分データを演算する。
【００２６】
変換部１０２は、画像データを周波数領域に直交変換し、直交変換係数を求める。変換方式としては、２次元ＤＣＴ（離散コサイン変換）が用いられる。
【００２７】
量子化部１０３は、変換部１０２で得られた直交変換係数を量子化する。
【００２８】
エントロピー符号化部１０４は、量子化された直交変換係数をエントロピー符号化する。
【００２９】
出力部１０５は、可変ビットレートの圧縮画像データを伝送レートにあわせて伝送路に供給する。
【００３０】
ローカルデコーダ１１０は、逆量子化部１１１と、逆変換部１１２と、加算演算部１１３と、バッファ１１４と、動き補償部１１５とを含み、符号化手順を逆に行う。
【００３１】
具体的には、逆量子化部１１１は、量子化部１０３で量子化された直交変換係数を逆量子化する。
【００３２】
逆変換部１１２は、逆量子化部１１１で逆量子化された直交変換係数を逆直交変換して差分データに復号化する。
【００３３】
加算演算部１１３は、逆変換部１１２で復号化された差分データに、バッファ１１４と動き補償部１１５とで生成された動き補償画像を加算することにより、復号側で得られるものと同様の画像データを生成する。
【００３４】
バッファ１１４は、加算演算部１１３で生成された画像データを一時蓄積する。
【００３５】
動き補償部１１５は、バッファ１１４に蓄積されている画像データを読み出し、この画像データと、動きベクトル検出部１０６で検出された動きベクトルとに基づいて、動き補償画像を生成する。なお、対象となる画像（画像データ１２０に相当）の動き補償画像は、対象となる画像と、復号化した画像（バッファ１１４に蓄積された画像）とに基づいて生成される。
【００３６】
動きベクトル検出部１０６は、入力された画像データ１２０と、ローカルデコーダのバッファ１１４から入力された画像データとの間の画素の変位を示す２次元動きベクトルを検出する。なお、Ｈ．２６４における動き補償（動きベクトルの決定等）は、前述したように、１６×１６画素のマクロブロックに対してだけでなく、このマクロブロックを分割した８×１６、８×８、８×４、４×８、４×４画素の合計７種類のブロックに対して行うことができる。
【００３７】
動きベクトルの検出（算出）についてさらに詳しく説明する。まず、動きベクトル検出の対象ブロックに対して、参照画像の一定の範囲内における任意ブロックとの間でブロックマッチングを行い、ブロック間の差分絶対値和を求める。次に、この差分絶対値和が最小となった参照ブロック、すなわち最も相関が高いブロックが、対象ブロックから２次元（水平、垂直）的に何画素シフトしたかを求め、これを動きベクトルとして利用する。なお、動きベクトル算出の評価値としては、上記差分絶対値和以外に、差分二乗平方和を用いてもよいし、ブロック間差分データをアダマール変換して符号化したときの符号長の最小値を評価値として用いてもよい。
【００３８】
２．動作
以上のように構成された動画像圧縮符号化装置は、以下のように動作する。入力部１００から入力された画像データ１２０は、差分演算部１０１で動き補償画像との差分演算が行われる。差分演算された差分データは変換部１０２で直交変換される。差分データの直交変換係数は量子化部１０３で量子化される。量子化された差分データの直交変換係数はエントロピー符号化部１０４でエントロピー符号化され、出力部１０５よりビットストリームとして出力される。また、量子化部１０３で量子化された差分データの直交変換係数は、逆量子化部１１１で逆量子化された後、逆変換部１１２で逆直交変換され、差分データとして復号化される。なお、このときの差分データは、データ量削減のための量子化によって非可逆処理が行われているので元の差分データではない。
【００３９】
復号化された差分データは、加算演算部１１３において、動き補償部１１５で生成された動き補償画像に加算される。加算されて生成された画像は、後の動き補償や動き予測の参照画像として、バッファ１１４に一時的に蓄積される。動きベクトル検出部１０６で、動きベクトル検出対象のマクロブロックの画像データとバッファ１１４に蓄積された参照画像との間での動きベクトルが算出される。動きベクトル検出部１０６で算出された動きベクトルは、動き補償部１０５での動き補償に用いられると共に、エントロピー符号化部１０４を経て、圧縮画像データに組み込まれ、出力部１０５より出力される。
【００４０】
ここで、動きベクトル検出部１０６で動きベクトルが算出されるとき、対象ブロックのブロックサイズは固定ではなく、前述したように複数種類選択可能である。特に、本実施の形態の動画像圧縮符号化装置においては、このブロックサイズの選択が、ブロック分割決定部１０７によって以下のように行われるようになっている。以下、このブロック分割決定部１０７の動作について図２以下の図面により詳しく説明する。
【００４１】
図２は、入力画像全体、及び縦１６×横１６画素から構成される動きベクトル検出対象マクロブロックの説明図である。なお、図２の入力画像は一例である。図２において、画像２３０は動きベクトル検出を行う入力画像全体を示しており、マクロブロック２３１、２３２は分割対象のマクロブロックを示している。マクロブロック２３１は、オブジェクト（樹木等）と背景との境界（エッジ）を含んでいる。マクロブロック２３２は、背景のみを含んでいる。
【００４２】
図３は、図２に示した前記マクロブロック２３１，２３２を構成する画素の輝度レベルを示した図である。図３（ａ）は、マクロブロック２３１の場合を示し、図３（ｂ）は、マクロブロック２３２の場合を示している。マクロブロック２３１は、前述のようにオブジェクト（樹木等）と背景との境界を含んでいるので、輝度レベルの最大値が１００、最小値が３０となっている。ここで、最大値と最小値との差をダイナミックレンジと定義すると、マクロブロック２３１におけるダイナミックレンジは７０となる。一方、マクロブロック２３２は、前述のように背景のみを含む平坦なブロックでああるので、輝度レベルの最大値が３０、最小値が３０となっている。したがって、マクロブロック２３２におけるダイナミックレンジは０となる。このように、オブジェクトと背景との境界を含むブロックでは、オブジェクトと背景との境界を含まない平坦なブロックと比べ、ダイナミックレンジが大きくなる。したがって、ブロックのダイナミックレンジを求めれば、そのブロックが、オブジェクトと背景との境界を含んだブロックであるか、あるいは平坦なブロックであるかの判断を行うことが可能となる。
【００４３】
次に、図４〜図８により本実施の形態のブロック分割態様の決定方法を説明する。説明に際しては、便宜上、マクロブロック（縦１６画素×横１６画素）を第一ブロックＢ１と呼ぶ。図４（ａ）は、分割前の第一ブロックＢ１を示している。
【００４４】
まず、この第一ブロックＢ１に対して、図４（ｂ）、図４（ｃ）に示すように、アクティビティ（精細度）を検出するブロックであるアクティビティ検出ブロックＡ０，Ａ１，Ａ２，Ａ３を設定する。図４（ｂ）は、第一ブロックに対してアクティビティ検出ブロックＡ０およびアクティビティ検出ブロックＡ１を設定した状態を示す。図４（ｃ）は、第一ブロックＢ１に対してアクティビティ検出ブロックＡ２およびアクティビティ検出ブロックＡ３を設定した状態を示す。アクティビティ検出ブロックＡ０およびアクティビティ検出ブロックＡ１は、縦１６画素×横８画素から構成されるブロックであり、アクティビティ検出ブロックＡ２およびアクティビティ検出ブロックＡ３は、縦８画素×横１６画素から構成されるブロックである。
【００４５】
次に、各アクティビティ検出ブロックＡ０〜Ａ３についてブロック内のアクティビティを算出し、アクティビティの値に応じてアクティビティフラグ０〜３を設定する。アクティビティが所定の閾値より大きければ、アクティビティ検出ブロックのアクティビティフラグを１に設定し、アクティビティが所定の閾値以下であれば、アクティビティフラグを０に設定する。本実施の形態では、前記所定の閾値は、３２に設定されている。この値は、例えば、アクティビティ検出ブロック内に、オブジェクト（木等）と背景との境界が含まれているような場合に、これを検出することができるような大きさの値である。なお、３２という値は、一例であり、オブジェクトと背景との境界の認識が可能な範囲で変更可能である。
【００４６】
図４（ｂ）に示す場合においては、アクティビティ検出ブロックＡ０は、オブジェクト（木）と背景との境界を含んでおり、ダイナミックレンジが閾値より大きい。そのため、アクティビティ検出ブロックＡ０のアクティビティフラグ０は１に設定される。アクティビティ検出ブロックＡ１も、オブジェクト（木）と背景との境界を含んでおり、ダイナミックレンジが閾値より大きい。そのため、アクティビティ検出ブロックＡ１のアクティビティフラグ１は１に設定される。
【００４７】
次に、図４（ｃ）に示す場合においては、アクティビティ検出ブロックＡ２は、オブジェクト（木）と背景との境界を含んでおり、ダイナミックレンジが閾値より大きい。そのため、アクティビティ検出ブロックＡ２のアクティビティフラグ２は１に設定される。アクティビティ検出ブロックＡ３も、オブジェクト（木）と背景との境界を含んでおり、ダイナミックレンジが閾値より大きい。そのため、アクティビティ検出ブロックＡ３のアクティビティフラグ１は１に設定される。
【００４８】
上記手順により得られた４つのアクティビティフラグに基づいて、第一ブロックＢ１（マクロブロック）の分割方法を決定する。以下に、各アクティビティフラグの値と分割対象ブロック(縦Ｍ画素×横Ｍ画素)のブロック分割との関係を４種類のパターンに分類して示す。
(パターン０）  アクティビティフラグ０が０、アクティビティフラグ１が０、
アクティビティフラグ２が０、アクティビティフラグ３が０の場合、
→  対象ブロックに対し分割処理を行わない。
(パターン１）  アクティビティフラグ０が０、アクティビティフラグ１が０、
アクティビティフラグ２が１、アクティビティフラグ３が１の場合、
又は、
アクティビティフラグ０が１、アクティビティフラグ１が０、
アクティビティフラグ２が１、アクティビティフラグ３が１の場合、
あるいは、
アクティビティフラグ０が０、アクティビティフラグ１が１、
アクティビティフラグ２が１、アクティビティフラグ３が１の場合、
→  対象ブロックを縦Ｍ画素×横Ｍ／２画素から構成される２つのブロックに分割する
(パターン２）  アクティビティフラグ０が１、アクティビティフラグ１が１、
アクティビティフラグ２が０、アクティビティフラグ３が０の場合、
又は、
アクティビティフラグ０が１、アクティビティフラグ１が１、
アクティビティフラグ２が０、アクティビティフラグ３が１の場合、
又は、
アクティビティフラグ０が１、アクティビティフラグ１が１、
アクティビティフラグ２が１、アクティビティフラグ３が０の場合、
→  対象ブロックを縦Ｍ／２画素×横Ｍ画素から構成される２つのブロックに分割する
(パターン３）  パターン０、１、２以外の場合、
→  対象ブロックを縦Ｍ／２画素×横Ｍ／２画素から構成される４つのブロックに分割する
【００４９】
この分類にあてはめると、図４（ａ）に示した第一ブロックＢ１は、アクティビティフラグ０が１、アクティビティフラグ１が１、アクティビティフラグ２が１、アクティビティフラグ３が１であるため、パターン３に該当する。したがって、第一ブロックＢ１は、図４（ｄ）に示すように、縦８画素×横８画素から構成される４つの第二ブロックＢ２０，Ｂ２１，Ｂ２２，Ｂ２３に分割される。
【００５０】
次に、これらの第二ブロックに対して、それぞれ、第一ブロックＢ１と同様にアクティビティの算出を行う。なお、第一ブロックＢ１分割後の左上の第二ブロックを第二ブロックＢ２０、右上の第二ブロックを第二ブロックＢ２１、左下の第二ブロックを第二ブロックＢ２２、右下の第二ブロックを第二ブロックＢ２３としている。
【００５１】
まず、図５（ａ）、図５（ｂ）に示すように、第二ブロックＢ２０に対して、４つのアクティビティ検出ブロックＡ０，Ａ１，Ａ２，Ａ３を設定する。図５（ａ）は、第二ブロックＢ２０に対してアクティビティ検出ブロックＡ０およびアクティビティ検出ブロックＡ１を設定した状態を示す。図５（ｂ）は、第二ブロックＢ２０に対してアクティビティ検出ブロックＡ２およびアクティビティ検出ブロックＡ３を設定した状態を示す。アクティビティ検出ブロックＡ０およびアクティビティ検出ブロックＡ１は、縦８画素×横４画素から構成されるブロックであり、アクティビティ検出ブロックＡ２およびアクティビティ検出ブロックＡ３は、縦４画素×横８画素から構成されるブロックである。
【００５２】
次に、各アクティビティ検出ブロックＡ０，Ａ１，Ａ２，Ａ３についてブロック内のアクティビティを算出し、アクティビティの値に応じてアクティビティフラグを設定する。なお、アクティビティフラグの設定基準は、マクロブロック分割の際の基準と同じである。他の第２ブロックＢ２１，Ｂ２２，Ｂ２３に対するアクティビティフラグ設定も同様に行う。まず、図５（ａ）に示す場合においては、第二ブロックＢ２０に対するアクティビティ検出ブロックＡ０は、背景のみしか含んでいないので、ダイナミックレンジが閾値より小さい。そのため、アクティビティ検出ブロックＡ０のアクティビティフラグ０は０に設定される。アクティビティ検出ブロックＡ１も、背景のみしか含んでいないので、ダイナミックレンジが閾値より小さい。そのため、アクティビティ検出ブロックＡ１のアクティビティフラグ１は０に設定される。
【００５３】
図５（ｂ）に示す場合においては、第二ブロックＢ２０に対するアクティビティ検出ブロックＡ２は、背景のみしか含んでいないので、ダイナミックレンジが閾値より小さい。そのため、アクティビティ検出ブロックＡ２のアクティビティフラグ２は０に設定される。アクティビティ検出ブロックＡ３も、背景のみしか含んでいないので、ダイナミックレンジが閾値より小さい。そのため、アクティビティ検出ブロックＡ３のアクティビティフラグ３は０に設定される。
【００５４】
上記手順により得られた４つのアクティビティフラグに基づいて、第二ブロックＢ２０の分割態様を決定する。なお、ブロック分割態様の決定基準は、前述のマクロブロックにおける場合と同様である。他の第２ブロックＢ２１，Ｂ２，Ｂ２３の分割態様の決定においても同様とする。ここで、第二ブロックＢ２０は、アクティビティフラグ０が０、アクティビティフラグ１が０、アクティビティフラグ２が０、アクティビティフラグ３が０であるため、パターン０に該当する。したがって、第二ブロックＢ２０は、図５（ｃ）に示すように、分割されることなく、縦８画素×横８画素から構成されるブロックで維持される。
【００５５】
次に、図６（ａ）、図６（ｂ）に示すように、第二ブロックＢ２１に対して、第二ブロックＢ２０と同様に、４つのアクティビティ検出ブロックＡ０，Ａ１，Ａ２，Ａ３を設定する。図６（ａ）は、第二ブロックＢ２１に対してアクティビティ検出ブロックＡ０およびアクティビティ検出ブロックＡ１を設定した状態を示す。図６（ｂ）は、第二ブロックＢ２１に対してアクティビティ検出ブロックＡ２およびアクティビティ検出ブロックＡ３を設定した状態を示す。アクティビティ検出ブロックＡ０およびアクティビティ検出ブロックＡ１は、縦８画素×横４画素から構成されるブロックであり、アクティビティ検出ブロックＡ２およびアクティビティ検出ブロックＡ３は、縦４画素×横８画素から構成されるブロックである。
【００５６】
次に、各アクティビティ検出ブロックＡ０，Ａ１，Ａ２，Ａ３についてブロック内のアクティビティを算出し、アクティビティの値に応じてアクティビティフラグを設定する。図６（ａ）に示す場合においては、第二ブロックＢ２１に対するアクティビティ検出ブロックＡ０は、オブジェクト（木）と背景との境界を含んでおり、ダイナミックレンジが閾値より大きい。そのため、アクティビティ検出ブロックＡ０のアクティビティフラグ０は１に設定される。アクティビティ検出ブロックＡ１は、オブジェクト（木）のみしか含んでいないので、ダイナミックレンジが閾値より小さい。そのため、アクティビティ検出ブロックＡ１のアクティビティフラグ１は０に設定される。
【００５７】
図６（ｂ）に示す場合においては、第二ブロックＢ２１についてのアクティビティ検出ブロックＡ２は、オブジェクト（木）と背景との境界を含んでおり、ダイナミックレンジが閾値より大きい。そのため、アクティビティ検出ブロックＡ２のアクティビティフラグ２は１に設定される。アクティビティ検出ブロックＡ３においても、オブジェクト（木）と背景との境界を含んでおり、ダイナミックレンジが閾値より大きい。そのため、アクティビティ検出ブロックＡ３のアクティビティフラグ３は１に設定される。
【００５８】
上記手順により得られた４つのアクティビティフラグに基づいて、第二ブロックＢ２１の分割を決定する。第二ブロックＢ２１は、アクティビティフラグ０が１、アクティビティフラグ１が０、アクティビティフラグ２が１、アクティビティフラグ３が１であるため、パターン１に該当する。したがって、第二ブロックＢ２１は図６（ｃ）に示すように、縦８画素×横４画素から構成される２つのブロックに分割される。
【００５９】
次に、図７（ａ）、図７（ｂ）に示すように、第二ブロックＢ２２に対して、第二ブロックＢ２１と同様に、４つのアクティビティ検出ブロックＡ０，Ａ１，Ａ２，Ａ３を設定する。図７（ａ）は、第二ブロックＢ２２に対してアクティビティ検出ブロックＡ０およびアクティビティ検出ブロックＡ１を設定した状態を示す。図７（ｂ）は、第二ブロックＢ２２に対してアクティビティ検出ブロックＡ２、およびアクティビティ検出ブロックＡ３を設定した状態を示す。アクティビティ検出ブロックＡ０およびアクティビティ検出ブロックＡ１は、縦８画素×横４画素から構成されるブロックであり、アクティビティ検出ブロックＡ２およびアクティビティ検出ブロックＡ３は、縦４画素×横８画素から構成されるブロックである。
【００６０】
図７（ａ）に示す場合においては、第二ブロックＢ２２についてのアクティビティ検出ブロックＡ０は、背景のみしか含んでいないので、ダイナミックレンジが閾値より小さい。そのため、アクティビティ検出ブロックＡ０のアクティビティフラグ０は０に設定される。アクティビティ検出ブロックＡ１は、オブジェクト（木）と背景との境界を含んでおり、ダイナミックレンジが閾値より大きい。そのため、アクティビティ検出ブロックＡ１のアクティビティフラグ１は１に設定される。
【００６１】
図７（ｂ）に示す場合においては、第二ブロックＢ２２についてのアクティビティ検出ブロックＡ２は、オブジェクト（木）と背景との境界を含んでおり、ダイナミックレンジが閾値より大きい。そのため、アクティビティ検出ブロックＡ２のアクティビティフラグ２は１に設定される。アクティビティ検出ブロックＡ３も、オブジェクト（木）と背景との境界を含んでおり、ダイナミックレンジが閾値より大きい。そのため、アクティビティ検出ブロックＡ３のアクティビティフラグ３は１に設定される。
【００６２】
上記手順により得られた４つのアクティビティフラグに基づいて、第二ブロックＢ２２の分割を決定する。第二ブロックＢ２２は、アクティビティフラグ０が０、アクティビティフラグ１が１、アクティビティフラグ２が１、アクティビティフラグ３が１であるため、パターン１に該当する。したがって、第二ブロックＢ２２は、図７（ｃ）に示すように、縦８画素×横４画素から構成される２つのブロックに分割される。
【００６３】
次に、図８（ａ）、図８（ｂ）に示すように、第二ブロックＢ２３に対して、第二ブロックＢ２１と同様に、４つのアクティビティ検出ブロックＡ０，Ａ１，Ａ２，Ａ３を設定する。図８（ａ）は、第二ブロックＢ２３に対してアクティビティ検出ブロックＡ０およびアクティビティ検出ブロックＡ１を設定した状態を示す。図８（ｂ）は、第二ブロックＢ２３に対してアクティビティ検出ブロックＡ２およびアクティビティ検出ブロックＡ３を設定した状態を示す。アクティビティ検出ブロックＡ０およびアクティビティ検出ブロックＡ１は、縦８画素×横４画素から構成されるブロックであり、アクティビティ検出ブロックＡ２およびアクティビティ検出ブロックＡ３は、縦４画素×横８画素から構成されるブロックである。
【００６４】
図８（ａ）に示す場合においては、第二ブロックＢ２３についてのアクティビティ検出ブロックＡ０は、オブジェクト（木）と背景との境界を含んでおり、ダイナミックレンジが閾値より大きい。そのため、アクティビティ検出ブロックＡ０のアクティビティフラグ０は１に設定される。アクティビティ検出ブロックＡ１は、オブジェクト（木）のみしか含んでいないので、ダイナミックレンジが閾値より小さい。そのため、アクティビティ検出ブロックＡ１のアクティビティフラグ１は０に設定される。
【００６５】
図８（ｂ）に示す場合においては、第二ブロックＢ２３についてのアクティビティ検出ブロックＡ２は、オブジェクト（木）と背景との境界を含んでおり、ダイナミックレンジが閾値より大きい。そのため、アクティビティ検出ブロックＡ２のアクティビティフラグ２は１に設定される。アクティビティ検出ブロックＡ３は、オブジェクト（木）のみしか含んでいないので、ダイナミックレンジが閾値より小さい。そのため、アクティビティ検出ブロックＡ３のアクティビティフラグ３は０に設定される。
【００６６】
上記手順により得られた４つのアクティビティフラグに基づいて、第二ブロックＢ２３の分割を決定する。第二ブロックＢ２３は、アクティビティフラグ０が１、アクティビティフラグ１が０、アクティビティフラグ２が１、アクティビティフラグ３が０であるため、パターン３に該当する。したがって、第二ブロックＢ２３は、図８（ｃ）に示すように、縦４画素×横４画素から構成される４つのブロックに分割される。
【００６７】
この図８（ｃ）は、対象マクロブロックに対するブロック分割の最終態様を示しており、動きベクトル検出部１０６は、分割ブロック毎に動きベクトル検出を行う。
【００６８】
本実施形態では、動きベクトルの検出を行うマクロブロックを以上のようにして決定する。以下、本実施形態の方法でマクロブロックの分割を決定することにより得られる効果について検討する。図９は、本実施の形態における動きベクトル検出のフローチャートであり、図１０は、従来方式における動きベクトル検出のフローチャートである。図９に示す本実施の形態においては、前述のように、まずブロック分割を決定し、次に分割した各ブロックについてのみ動きベクトルの検出を行い、最後にこれらの動きベクトル及び分割態様に基づいて対象マクロブロックについて最適な動きベクトルを決定する。一方、図１０に示す従来方式では、対象マクロブロックに対し、分割した各ブロック（１６×１６（１ブロック）、１６×８（２ブロック）、８×１６（２ブロック）、８×８（４ブロック）、８×４（８ブロック）、４×８（８ブロック）、４×４（１６ブロック））について動きベクトル検出の演算を行い、対象マクロブロックについて最適な動きベクトルを決定する。
【００６９】
図１１は、このような従来方式および本実施の形態（図４〜図８で説明した例）における１つのマクロブロック（１６×１６）に対して行われる動きベクトル演算回数を示す。なお、１つのブロックに対して最適な１つの動きベクトルを求めることを演算１回としている。従来方式では、対象マクロブロックを構成するあらゆるタイプのサブブロックに対して総当りで演算するので、１６×１６ブロックに対し１回、１６×８ブロックに対し２回、８×１６ブロックに対し２回、８×８ブロックに対し４回、８×８ブロックに対し４回、８×４ブロックに対し８回、４×８ブロックに対し８回、４×４ブロックに対し１６回の動きベクトル演算がそれぞれ必要となる。これに対し、本実施の形態（図４〜図８の例）で必要な動きベクトル演算回数は、８×８ブロックに対し１回、８×４ブロックに対し４回、４×４ブロックに対し４回である。
【００７０】
演算量の差を明確にするため、１６×１６ブロック以外のブロックについて１６×１６ブロックでの演算回数に換算すると、従来方式では７回、本実施の形態では１回となる。つまり、本実施の形態では、従来方式と比較して、演算量を１／７に削減することができる。
【００７１】
３．まとめ
本実施形態によれば、動きベクトル検出を行う前に、Ｍ×Ｎ画素からなる対象ブロックをサブブロックへ分割する態様を決定し、この決定された分割態様にしたがって、対象となるサブブロックの動きベクトルを検出する。したがって、動きベクトル検出を行うべきサブブロック数が減少し、動きベクトル検出に関する演算量を大幅に削減することができる。なお、本実施形態においては、Ｍ＝Ｎの場合で説明したが、ＭとＮが異なる場合にも適用可能である。その場合、ＭとＮのどちらが大きくてもよい。
【００７２】
加えて、ブロック分割の態様を決定する際、対象ブロックに複数個のアクティビティ検出ブロックを設定し、設定した各アクティビティ検出ブロックのアクティビティを検出し、検出した各アクティビティに基づいてブロック分割態様を決定する。したがって、対象ブロックの特徴に応じたブロック分割が可能となり、ブロック分割の精度を向上させることができる。
【００７３】
なお、対象ブロックの分割態様の決定に要する演算量は、従来方式における動きベクトル検出に要する演算量と、本実施の形態における動きベクトル検出に要する演算量との差分よりも遥かに少なく、無視し得る量である。
【００７４】
また、本実施の形態のさらなる効果として、動きベクトルの算出精度を高めることができる。すなわち、動きベクトルの算出においては、前述しように、対象ブロックに対し、参照画像の一定の範囲内における任意ブロックとの間でブロックマッチングし、ブロック間の評価値を求め、その評価値が最小となったときにおける参照ブロックの対象ブロックに対する空間シフト量（水平、垂直）を最適な動きベクトルとする。しかし、従来方式では、前述のように、分割したブロックの全てについてマッチングを行うので、例えば、類似するブロックにミスマッチングする場合もあり、この場合、正しい動きベクトルが検出されなくなる。これに対し、本実施の形態では、アクティビティという概念を導入して、画像の特徴に応じたブロック分割を行うので、ミスマッチングが防止される。そのため、従来方式よりも、物体の動きに追従した正しい動きベクトルを算出することができる。
【００７５】
また、本実施の形態では、前記アクティビティは、ダイナミックレンジである。ここで、ダイナミックレンジは、輝度レベルの差として容易に求めることができるので、演算量を大きく増加させることがない。
【００７６】
（その他の実施の形態）
本実施形態では、アクティビティとして輝度レベルのダイナミックレンジを用いているが、ダイナミックレンジ以外にも、輝度レベルの分散などを用いることができる。
【００７７】
また、本実施形態では、動きベクトル検出装置を、専用のハードウェアとして構成したが、コンピュータに前記各機能を実行させる動きベクトル検出プログラムとして提供することも可能である。
【産業上の利用可能性】
【００７８】
本発明は、動画像符号化技術、特にＨ．２６４の動きベクトル検出において、動きベクトル検出に関する演算量を大幅に削減できる。そのため、ノンリニア編集機で動作するソフトエンコーダなどに有用である。また、モバイルＡＶ機器など演算量を削減し消費電力を抑えなければならない機器の動画像符号化の動きベクトル検出装置としても利用できる。
【符号の説明】
【００７９】
１００  入力部
１０１  減算部
１０２  変換部
１０３  量子化部
１０４  エントロピー符号化部
１０５  出力部
１０６  動きベクトル検出部
１０７  ブロック分割決定部
１１０  ローカルデコーダ
１１１  逆量子化部
１１２  逆変換部
１１３  加算部
１１４  バッファ
１１５  動き補償部
１２０  入力画像
１２１  動き補償画像
２３０  入力画像の全体図
２３１  ブロック内にエッジを含むマクロブロック
２３２  ブロック内にエッジを含まない平坦なマクロブロック
【図１】
2010278519.tif 000003
【図２】
2010278519.tif 000004
【図３】
2010278519.tif 000005
【図４】
2010278519.tif 000006
【図５】
2010278519.tif 000007
【図６】
2010278519.tif 000008
【図７】
2010278519.tif 000009
【図８】
2010278519.tif 000010
【図９】
2010278519.tif 000011
【図１０】
2010278519.tif 000012
【図１１】
2010278519.tif 000013
【図１２】
2010278519.tif 000014
【図１３】
2010278519.tif 000015