トップ :: H 電気 :: H04 電気通信技術




【発明の名称】 動きベクトル検出装置、動きベクトル検出方法、コンピュータプログラム及び記憶媒体
【発明者】 【氏名】坂本 大輔

【要約】 【課題】探索精度を維持しながらも計算量を大幅に軽減し、高能率に複数のブロックサイズによる動き探索を行って動きベクトルの検出を可能とする。

【構成】処理対象画像データと複数の参照画像データとを用いて動きベクトルを検出する動きベクトル検出装置であって、処理対象画像データを分割した大ブロックにより第1の参照画像データについて動きベクトル探索を行い、マッチング誤差が最小となる位置で大ブロックをより小さなブロックサイズに分割する。この小ブロックにおけるマッチング誤差により他の参照画像データについての動きベクトル探索に用いるブロックサイズを決定する。
【特許請求の範囲】
【請求項1】
処理対象画像データと複数の参照画像データとを用いて動きベクトルを検出する動きベクトル検出装置であって、
前記処理対象画像データの第1のブロックサイズの第1の画像データとの第1のマッチング誤差が最小となる、前記複数の参照画像データのうち第1の参照画像データの前記第1のブロックサイズの第2の画像データを決定し、該第1の画像データと該第2の画像データとに基づく第1の動きベクトルを検出する第1の動きベクトル検出手段と、
前記第1の画像データを、前記第1のブロックサイズより小さい第2のブロックサイズの複数の第3の画像データに分割し、最小となる前記第1のマッチング誤差から、該複数の第3の画像データのそれぞれに対応する複数の第2のマッチング誤差を抽出する第1の抽出手段と、
前記第1の抽出手段により抽出された前記複数の第2のマッチング誤差に基づいて、前記複数の参照画像データを利用した動きベクトルの検出に用いる第3のブロックサイズを決定する第1の決定手段と
を備えることを特徴とする動きベクトル検出装置。
【請求項2】
前記第3のブロックサイズが第1のブロックサイズと一致する場合に、
前記第1の動きベクトル検出手段は、前記第1のブロックサイズを用いて、前記第1の参照画像データ以外の参照画像データを利用して前記第1の動きベクトルを更に検出することを特徴とする請求項1に記載の動きベクトル検出装置。
【請求項3】
前記第1の決定手段は、前記複数の第2のマッチング誤差のうち、第1の閾値よりも大きい第2のマッチング誤差が存在する場合に、前記第3のブロックサイズを前記第1のブロックサイズを予め定められた条件に従って分割したブロックサイズに決定することを特徴とする請求項1又は2に記載の動きベクトル検出装置。
【請求項4】
前記第3のブロックサイズが、第1のブロックサイズより小さく前記第2のブロックサイズより大きい場合に、
前記処理対象画像データにおける前記第3のブロックサイズの第4の画像データとの第3のマッチング誤差が最小となる、前記複数の参照画像データの前記第3のブロックサイズの第5の画像データを決定し、該第4の画像データと該第5の画像データとに基づく第2の動きベクトルを検出する第2の動きベクトル検出手段を
更に備えることを特徴とする請求項1乃至3のいずれかに記載の動きベクトル検出装置。
【請求項5】
前記第3のブロックサイズが、前記第2のブロックサイズである場合に、
前記第1の画像データにおける前記第2のブロックサイズの第4の画像データとの第3のマッチング誤差が最小となる、前記第1の参照画像データの前記第2のブロックサイズの第5の画像データを決定し、該第4の画像データと該第5の画像データとに基づく第2の動きベクトルを検出する第2の動きベクトル検出手段と、
前記第4の画像データを、前記第2のブロックサイズより小さい第4のブロックサイズの複数の第6の画像データに分割し、最小となる前記第3のマッチング誤差から、該複数の第6の画像データのそれぞれに対応する複数の第4のマッチング誤差を抽出する第2の抽出手段と、
前記第2の抽出手段により抽出された前記複数の第4のマッチング誤差に基づいて、前記複数の参照画像データを利用した動きベクトルの検出に用いる第5のブロックサイズを決定する第2の決定手段と
を更に備えることを特徴とする請求項1乃至3のいずれかに記載の動きベクトル検出装置。
【請求項6】
前記第5のブロックサイズが前記第2のブロックサイズと一致する場合に、
前記第2の動きベクトル検出手段は、前記第2のブロックサイズを用いて、前記第1の参照画像データ以外の参照画像データを利用して前記第2の動きベクトルを更に検出することを特徴とする請求項5に記載の動きベクトル検出装置。
【請求項7】
前記第2の決定手段は、前記複数の第4のマッチング誤差のうち、第2の閾値よりも大きい第4のマッチング誤差が存在する場合に、前記第5のブロックサイズを前記第2のブロックサイズを予め定められた条件に従って分割したブロックサイズに決定することを特徴とする請求項5又は6に記載の動きベクトル検出装置。
【請求項8】
前記第5のブロックサイズが前記第2のブロックサイズと一致しない場合に、
前記処理対象画像データにおける前記第5のブロックサイズの第7の画像データとの第5のマッチング誤差が最小となる、前記複数の参照画像データの前記第5のブロックサイズの第8の画像データを決定し、該第7の画像データと該第8の画像データとに基づく第3の動きベクトルを検出する第3の動きベクトル検出手段を更に備えることを特徴とする請求項5乃至7のいずれかに記載の動きベクトル検出装置。
【請求項9】
前記第1のブロックサイズは、16画素×16画素のブロックサイズであって、
前記第2のブロックサイズは、8画素×8画素のブロックサイズであって、
前記第4のブロックサイズは、4画素×4画素のブロックサイズであることを特徴とする請求項5乃至8のいずれかに記載の動きベクトル検出装置。
【請求項10】
処理対象画像データと複数の参照画像データとを用いて動きベクトルを検出する動きベクトル検出方法であって、
前記処理対象画像データの第1のブロックサイズの第1の画像データとの第1のマッチング誤差が最小となる、前記複数の参照画像データのうち第1の参照画像データの前記第1のブロックサイズの第2の画像データを決定し、該第1の画像データと該第2の画像データとに基づく第1の動きベクトルを検出する第1の動きベクトル検出工程と、
前記第1の画像データを、前記第1のブロックサイズより小さい第2のブロックサイズの複数の第3の画像データに分割し、最小となる前記第1のマッチング誤差から、該複数の第3の画像データのそれぞれに対応する複数の第2のマッチング誤差を抽出する第1の抽出工程と、
前記第1の抽出工程において抽出された前記複数の第2のマッチング誤差に基づいて、前記複数の参照画像データを利用した動きベクトルの検出に用いる第3のブロックサイズを決定する第1の決定工程と
を備えることを特徴とする動きベクトル検出方法。
【請求項11】
前記第3のブロックサイズが第1のブロックサイズと一致する場合に、前記第1のブロックサイズを用いて、前記第1の参照画像データ以外の参照画像データを利用して前記第1の動きベクトルが更に検出されることを特徴とする請求項10に記載の動きベクトル検出方法。
【請求項12】
前記第1の決定工程では、前記複数の第2のマッチング誤差のうち、第1の閾値よりも大きい第2のマッチング誤差が存在する場合に、前記第3のブロックサイズが前記第1のブロックサイズを予め定められた条件に従って分割したブロックサイズに決定されることを特徴とする請求項10又は11に記載の動きベクトル検出方法。
【請求項13】
前記第3のブロックサイズが、第1のブロックサイズより小さく前記第2のブロックサイズより大きい場合に、
前記処理対象画像データにおける前記第3のブロックサイズの第4の画像データとの第3のマッチング誤差が最小となる、前記複数の参照画像データの前記第3のブロックサイズの第5の画像データを決定し、該第4の画像データと該第5の画像データとに基づく第2の動きベクトルを検出する第2の動きベクトル検出工程を
更に備えることを特徴とする請求項10乃至12のいずれかに記載の動きベクトル検出方法。
【請求項14】
前記第3のブロックサイズが、前記第2のブロックサイズである場合に、
前記第1の画像データにおける前記第2のブロックサイズの第4の画像データとの第3のマッチング誤差が最小となる、前記第1の参照画像データの前記第2のブロックサイズの第5の画像データを決定し、該第4の画像データと該第5の画像データとに基づく第2の動きベクトルを検出する第2の動きベクトル検出工程と、
前記第4の画像データを、前記第2のブロックサイズより小さい第4のブロックサイズの複数の第6の画像データに分割し、最小となる前記第3のマッチング誤差から、該複数の第6の画像データのそれぞれに対応する複数の第4のマッチング誤差を抽出する第2の抽出工程と、
前記第2の抽出工程において抽出された前記複数の第4のマッチング誤差に基づいて、前記複数の参照画像データを利用した動きベクトルの検出に用いる第5のブロックサイズを決定する第2の決定工程と
を更に備えることを特徴とする請求項10乃至12のいずれかに記載の動きベクトル検出方法。
【請求項15】
前記第5のブロックサイズが前記第2のブロックサイズと一致する場合に、前記第2のブロックサイズを用いて、前記第1の参照画像データ以外の参照画像データを利用して前記第2の動きベクトルが更に検出されることを特徴とする請求項14に記載の動きベクトル検出方法。
【請求項16】
前記第2の決定工程では、前記複数の第4のマッチング誤差のうち、第2の閾値よりも大きい第4のマッチング誤差が存在する場合に、前記第5のブロックサイズが前記第2のブロックサイズを予め定められた条件に従って分割したブロックサイズに決定されることを特徴とする請求項14又は15に記載の動きベクトル検出方法。
【請求項17】
前記第5のブロックサイズが前記第2のブロックサイズと一致しない場合に、
前記処理対象画像データにおける前記第5のブロックサイズの第7の画像データとの第5のマッチング誤差が最小となる、前記複数の参照画像データの前記第5のブロックサイズの第8の画像データを決定し、該第7の画像データと該第8の画像データとに基づく第3の動きベクトルを検出する第3の動きベクトル検出工程を更に備えることを特徴とする請求項14乃至16のいずれかに記載の動きベクトル検出方法。
【請求項18】
前記第1のブロックサイズは、16画素×16画素のブロックサイズであって、
前記第2のブロックサイズは、8画素×8画素のブロックサイズであって、
前記第4のブロックサイズは、4画素×4画素のブロックサイズであることを特徴とする請求項14乃至17のいずれかに記載の動きベクトル検出方法。
【請求項19】
請求項10乃至17のいずれかに記載の動きベクトル検出方法をコンピュータに実行させるためのコンピュータプログラム。
【請求項20】
請求項19に記載のコンピュータプログラムを記憶したコンピュータで読み取り可能な記憶媒体。
【発明の詳細な説明】【技術分野】
【0001】
本発明は、動きベクトル検出装置、動きベクトル検出方法、コンピュータプログラム及び記憶媒体に関する。
【背景技術】
【0002】
近年、マルチメディアに関連する情報のデジタル化が急進しており、それに伴い映像情報の高画質化に向けた要求が高まっている。具体的な例として放送メディアの従来の720×480画素のSDから、1920×1080画素のHDに移行が行われつつあることを挙げることが出来る。しかしながら、この高画質への要求は同時にデジタルデータの増大を引き起こし、従来の性能を上回る圧縮符号化技術及び復号化技術が求められている。
【0003】
これらの要求に対し、ITU−T SG16やISO/IEC JTC1/SC29/WG11の活動で画像間の相関を利用したフレーム間予測を用いた符号化圧縮方式の標準化作業が進められている。
【0004】
この中でも、現状最も高能率符号化を実現しているといわれる符号化方式にH.264/MPEG−4 PART10(AVC)(以下、H.264と呼ぶ)がある。H.264の符号化・復号化の仕様については、例えば特許文献1に開示されている。
【0005】
また、H.264で新たに導入された技術のひとつとして、図2に示すような予測符号化を行う画素ブロックのパーティションを複数種用意し、細かい画素単位の動き量を検出し、予測誤差が最小のものを選択して符号量をより低減する技術がある。このようなパーティションは、マクロブロックパーティションと呼ばれる。
【0006】
ここで、図2を用いてマクロブロックパーティションについて詳細に説明する。H.264では、図2(i)に示すようにMPEG2で用いられているサイズである16×16画素を最大のブロックサイズを有するマクロブロックタイプとする。その上で、更に図2の(ii)から(iv)を含めた合計4種類の中から予測符号化に使用するマクロブロックパーティションを選ぶことが可能である。なお、このマクロブロックパーティションの選択は、予測符号化に使用するマクロブロックサイズを、16×16画素、16×8画素、8×16画素、8×8画素のいずれかから選択することと等価である。
【0007】
更に、図2(iv)に示す8×8画素で構成されるマクロブロックについては、それぞれより細かいサブマクロブロックに分割できる。ここでは、図2(v)から(viii)に示すように、最小4×4画素のブロックサイズを有するサブマクロブロックを使用して、4種類のサブマクロブロックパーティションのいずれかに分割をすることが可能である。この場合、サブマクロブロックパーティションの選択は、予測符号化に使用するサブマクロブロックサイズを、8×8画素、8×4画素、4×8画素、4×4画素のいずれかから選択することと等価である。
【0008】
つまり、予測符号化に使用するマクロブロックパーティションは、全部で19種類の中から選ぶことになる。このうち、3種類は、サブマクロブロックパーティションの対象とならないマクロブロックパーティション(図2(i)から(iii))の数である。また、残りの16種類は、図2(iv)においてサブマクロブロックパーティションの対象となるマクロブロック数:4と、図2(v)から(viii)のサブマクロブロックパーティション数:4との積による。
【0009】
また、H.264では、図5に示すように符号化対象フレーム(CF)内のマクロブロック毎に複数の参照フレーム(RF1〜RF5)から符号化効率の良い参照フレームを選択し、ブロック毎にどのフレームを用いるかを指定できる。よって、同一の符号化対象フレームCF内のマクロブロックであっても、異なる参照フレームが選択される場合がある。このように、H.264では、複数の参照フレームを用いて、動きベクトル検出のための複数の探索階層が設定されることとなる。
【0010】
この結果、より細かい画像単位で動き情報を探索し、動き情報の精度の向上を実現している。
【特許文献1】特開2005−167720号公報
【発明の開示】
【発明が解決しようとする課題】
【0011】
しかしながら、MPEG2がマクロブロック1種類しか有しないのに比べ、H.264は、19種類ものパーティション数を有し、パーティションに含まれるブロックの全てについて動きベクトルの評価を行えば膨大な演算が必要となる。また、H.264では、複数の探索階層(複数の参照フレーム)を用いて動きベクトル検出を行えるため、各探索階層について全てのパーティションの評価を行おうとすれば、やはり膨大な演算が必要となる。
【0012】
また、ビデオカムコーダなどのモバイル機器の場合には、演算負荷の増大は駆動するバッテリー消費量の増大に結びつき、撮影時間が短くなってしまう問題がある。
【0013】
本発明は、このような問題点に鑑みてなされたものであり、探索精度を維持しながらも計算量を大幅に軽減し、高能率に複数のブロックサイズによる動き探索を行って動きベクトルの検出を可能とすることを目的とする。
【課題を解決するための手段】
【0014】
上記課題を解決するために、本発明は、処理対象画像データと複数の参照画像データとを用いて動きベクトルを検出する動きベクトル検出装置であって、前記処理対象画像データの第1のブロックサイズの第1の画像データとの第1のマッチング誤差が最小となる、前記複数の参照画像データのうち第1の参照画像データの前記第1のブロックサイズの第2の画像データを決定し、該第1の画像データと該第2の画像データとに基づく第1の動きベクトルを検出する第1の動きベクトル検出手段と、前記第1の画像データを、前記第1のブロックサイズより小さい第2のブロックサイズの複数の第3の画像データに分割し、最小となる前記第1のマッチング誤差から、該複数の第3の画像データのそれぞれに対応する複数の第2のマッチング誤差を抽出する第1の抽出手段と、前記第1の抽出手段により抽出された前記複数の第2のマッチング誤差に基づいて、前記複数の参照画像データを利用した動きベクトルの検出に用いる第3のブロックサイズを決定する第1の決定手段とを備えることを特徴とする。
【発明の効果】
【0015】
本発明によれば、探索精度を維持しながらも計算量を大幅に軽減し、高能率に複数のブロックサイズによる動き探索を行って動きベクトルを検出することが可能となる。
【発明を実施するための最良の形態】
【0016】
以下に、添付する図面を参照して、本発明の実施形態を説明する。
【0017】
まず、図1aに、本発明の実施形態に係る画像処理装置としての画像圧縮符号化装置の全体構成の一例を示す。
【0018】
この動画像圧縮符号化装置は、カメラ部200、減算器2001、整数変換部2002、量子化部2003、エントロピー符号化部2004、逆量子化部2005、逆整数変換部2006、加算器2007を有する。また、フレームメモリ2008及び2012、イントラ予測部2009、スイッチ2010及び2015、デブロッキングフィルタ2011、インター予測部2013、動き検出部2014を更に有する。そして、カメラ部200から入力された画像データを分割することによりブロックを構成し、ブロック単位に符号化処理を行い符号化データを出力する。続いて、H.264の符号化処理について説明する。
【0019】
まず、減算器2001はカメラ部からの入力される画像データから予測画像データを減算し画像残差データを出力する。予測画像データの生成については後述する。整数変換部2002は、減算器2001から出力された画像残差データを、DCT変換等により直交変換処理して変換係数を出力する。そして、量子化部2003は上記変換係数を所定の量子化パラメータを用いて量子化する。エントロピー符号化部2004は、量子化部2003で量子化された変換係数を入力し、これをエントロピー符号化して符号化データとして出力する。
【0020】
一方、量子化部2003で量子化された変換係数は予測画像データの生成にも使われる。逆量子化部2005は、量子化部2003で量子化された変換係数を逆量子化する。さらに、逆整数変換部2006は逆量子化部2005で逆量子化された変換係数を、逆DCT変換等により逆整数変換し、復号画像残差データとして出力する。加算器2007は、復号画像残差データと予測画像データとを加算し、再構成画像データとして出力する。
【0021】
再構成画像データはフレームメモリ2008に記録されるが、デブロッキングフィルタ処理を行う場合はデブロッキングフィルタ2011を介して記録される。また、デブロッキングフィルタ処理を行わない場合はデブロッキングフィルタ2011を介さずフレームメモリ2012に記録される。スイッチ2010は、デブロッキングフィルタ処理を行うか行わないか選択する選択部である。再構成画像データの中で、以降の予測で参照される可能性があるデータは、フレームメモリ2008または2012に参照フレームデータとして暫くの期間保存される。また、デブロッキングフィルタ2011はノイズを除去する為に用いられる。
【0022】
イントラ予測部2009は、フレームメモリ2008に記録された画像データを用いてフレーム内予測処理を行い、予測画像データを生成する。また、インター予測部2013はフレームメモリ2012に記録された参照画像データを用いて動き検出部2014によって検出された動きベクトル情報に基づいてフレーム間予測処理を行い予測画像データを生成する。動き検出部2014は、フレームメモリ2012に記録された参照画像データを用いて、入力画像データにおける動きベクトルを検出し、検出した動きベクトル情報をインター予測部2013とエントロピー符号化部2004へ出力する。スイッチ2015は、イントラ予測、インター予測のどちらを用いるか選択するための選択部である。イントラ予測部2009からの出力とインター予測部2013からの出力の一方を選択して、選択された予測画像データを減算器2001、加算器2007へ出力する。
【0023】
次に、本実施形態に対応する動きベクトル検出装置としての動き検出部の具体的構成及びその動作を説明する。図1bは、本実施形態に対応する動き検出部の具体的構成の一例を示す図である。また、図3は、本実施形態に対応する動き検出部における、入力画像データ中の1つのマクロブロックについて、動きベクトルを検出し、マクロブロックパーティションを決定する処理の一例を示すフローチャートである。なお、本実施例では符号化方式としてH.264の場合を例にあげて説明するが、本発明は他の符号化方式に適用してもよい。
【0024】
入力端子1には、動きベクトル検出対象(処理対象)の画像信号である入力画像データが、カメラ部200から大ブロック動きベクトル検出部3に入力される。また、入力端子2には、既に符号化され局部復号化された画像信号が参照画像データとしてフレームメモリ2012から入力され、参照画像記憶部4に記憶される。
【0025】
ステップS100では、探索階層が最上位の探索階層に設定される。本実施形態では、複数の探索階層、即ち複数の参照フレームについて動きベクトル検出を行うこととし、入力画像データの直近に符号化された参照フレームを「最上位の探索階層」とする。また、参照フレームのうち、最も符号化された時期が古いものを「最下位の探索階層」という。探索階層を更新する場合には、「最上位の探索階層」から「最下位の探索階層」まで、符号化時期の順に更新していく。例えば、図5の場合、RF1は「最上位の探索階層」に相当し、RF5は「最下位の探索階層」に相当する。また、探索階層を更新する場合には、RF1、RF2、RF3、RF4、RF5の順で更新される。なお、図5では、H.264の規格に従い探索階層を5階層としているが、これはあくまで例示であって、階層数はこれに限定されるものではない。
【0026】
次に、ステップS101では、マッチング位置の設定処理が行われる。ここで、マッチング位置の設定とは、符号化処理対象フレームである入力画像データについて、参照フレーム(探索階層)における参照画像データの位置の決定を意味する。仮に、以前の探索階層において、参照フレームと入力画像データとの間に動きベクトルが検出済みでない場合には、初期動きベクトルとして零を設定し、入力画像データにおけるブロック位置と同じブロック位置にマッチング位置を設定する。この際、大ブロック探索モードをオフに設定する。大ブロック探索モードとは、16×16画素サイズのマクロブロック(大ブロック)での探索を下位の探索階層を通じて行うモードである。この大ブロック探索モードがオンに設定されている場合には、これ以降中ブロック或いは小ブロックによる探索は行われない。また、より上位の探索階層で動きベクトルが検出され、かつ、大ブロック探索モードがオンになっている場合には、当該動きベクトルを初期動きベクトルとして、マッチング位置を設定する。
【0027】
次に、ステップS102では、大ブロック動きベクトル検出部3が、マッチング誤差MAEbigを算出する。このマッチング誤差MAEbigは、入力端子1からの入力画像データの16×16画素サイズのマクロブロック(大ブロック)と参照画像記憶部4から入力される大ブロックの参照画像データとについて算出される。マッチング誤差は、例えば、比較される両ブロックの画素値の差分を求めることにより算出することができる。マッチング誤差MAEbigは各探索階層について算出され、最終的に探索範囲(全探索階層)におけるマッチング誤差MAEbigが最も小さくなる時の動きベクトルと、その時のマッチング誤差とが求められる。この動きベクトルを「最終的な動きベクトル」という。
【0028】
次に、ステップS103では、大ブロック探索モードがオンに設定されているか否かを判定する。もし、大ブロック探索モードがオンならば(ステップS103において「YES」)、ステップS118に移行する。ステップS118では、探索階層が最下位の探索階層か否かを判定する。もし最下位の探索階層と判定された場合には(ステップS118において「YES」)、ステップS117へ移行する。ステップS117では、最終マクロブロックパーティション・最終動きベクトル決定部11が、マクロブロックパーティションが大ブロックであるという情報及び最終的な動きベクトルを、大ブロック動きベクトル検出部3から受信する。送信する。一方、最下位の探索階層でないと判定された場合には(ステップS118において「NO」)、ステップS119に移行して、探索階層を1つ更新し、一つ下位の探索階層についてステップS101からの処理を継続する。
【0029】
一方、大ブロック探索モードがオフならば(ステップS103において「NO」)、ステップS104に移行する。ステップS104では、ステップS102で求めた動きベクトルとマッチング誤差MAEbigとを中ブロック誤差抽出部5に送信する。
【0030】
中ブロック誤差抽出部5は、図4(a)に示すように大ブロック400を8×8画素サイズのマクロブロック401から404(以下、中ブロックと呼ぶ)に分割した後、各中ブロックのマッチング誤差を抽出する。ここで抽出されるマッチング誤差は、中ブロック401につきMAEmid(0)、中ブロック402につきMAEmid(1)、中ブロック403につきMAEmid(2)、中ブロック404につきMAEmid(3)とする。抽出された各マッチング誤差は、第一マクロブロックパーティション決定部6に送信される。なお、図4(a)は大ブロック400のマッチング誤差MAEbigが120の時、各中ブロックのマッチング誤差がMAEmid(0)=10、MAEmid(1)=10、MAEmid(2)=30、MAEmid(3)=70の例を示している。
【0031】
次に、ステップS105において、第一マクロブロック(MB)パーティション決定部6は、現在の探索階層における各中ブロックのマッチング誤差と閾値とを比較し、以下のような条件でマクロブロックパーティションを決定する。ここでは、図2の(i)から(iv)のいずれかのマクロブロックパーティションが選択される。即ち、ここでは、16×16画素、16×8画素、8×16画素、又は、8×8画素のいずれかのブロックサイズが選択されることとなる。なお、以下において、閾値ThlとThmとの間には、Thl<Thmの関係が成立する。
【0032】
(条件1)
MAEmid(0)<Thl, MAEmid(1)<Thl, MAEmid(2)<Thl, MAEmid(3)<Thl のとき、
マクロブロックパーティションを図2の(i)にする。
【0033】
(条件2)
MAEmid(0)<Thl, MAEmid(1)<Thl, MAEmid(2)<Thl, MAEmid(3)≧Thl のとき、
MAEmid(1)+MAEmid(3)<Thm, MAEmid(2)+MAEmid(3)<Thm のとき、
マクロブロックパーティションを図2の(ii)及び(iii)にする。
MAEmid(1)+MAEmid(3)<Thm, MAEmid(2)+MAEmid(3)≧Thm のとき、
マクロブロックパーティションを図2の(iii)にする。
MAEmid(1)+MAEmid(3)≧Thm, MAEmid(2)+MAEmid(3)<Thm のとき、
マクロブロックパーティションを図2の(ii)にする。
MAEmid(1)+MAEmid(3)≧Thm, MAEmid(2)+MAEmid(3)≧Thm のとき、
マクロブロックパーティションを図2の(iv)にする。
【0034】
(条件3)
MAEmid(0)<Thl, MAEmid(1)<Thl, MAEmid(2)≧Thl, MAEmid(3)<Thl のとき、
MAEmid(0)+MAEmid(2)<Thm, MAEmid(2)+MAEmid(3)<Thm のとき、
マクロブロックパーティションを図2の(ii)及び(iii)にする。
MAEmid(0)+MAEmid(2)<Thm, MAEmid(2)+MAEmid(3)≧Thm のとき、
マクロブロックパーティションを図2の(iii)にする。
MAEmid(0)+MAEmid(2)≧Thm, MAEmid(2)+MAEmid(3)<Thm のとき、
マクロブロックパーティションを図2の(ii)にする。
MAEmid(0)+MAEmid(2)≧Thm, MAEmid(2)+MAEmid(3)≧Thm のとき、
マクロブロックパーティションを図2の(iv)にする。
【0035】
(条件4)
MAEmid(0)<Thl, MAEmid(1)<Thl, MAEmid(2)≧Thl, MAEmid(3)≧Thl のとき、
マクロブロックパーティションを図2の(ii)にする。
【0036】
(条件5)
MAEmid(0)<Thl, MAEmid(1)≧Thl, MAEmid(2)<Thl, MAEmid(3)<Thl のとき、
MAEmid(1)+MAEmid(0)<Thm, MAEmid(1)+MAEmid(3)<Thm のとき、
マクロブロックパーティションを図2の(ii)及び(iii)にする。
MAEmid(1)+MAEmid(0)<Thm, MAEmid(1)+MAEmid(3)≧Thm のとき、
マクロブロックパーティションを図2の(ii)にする。
MAEmid(1)+MAEmid(0)≧Thm, MAEmid(1)+MAEmid(3)<Thm のとき、
マクロブロックパーティションを図2の(iii)にする。
MAEmid(1)+MAEmid(0)≧Thm, MAEmid(1)+MAEmid(3)≧Thm のとき、
マクロブロックパーティションを図2の(iv)にする。
【0037】
(条件6)
MAEmid(0)<Thl, MAEmid(1)≧Thl, MAEmid(2)<Thl, MAEmid(3)≧Thl のとき、
マクロブロックパーティションを図2の(iii)にする。
【0038】
(条件7)
MAEmid(0)<Thl, MAEmid(1)≧Thl, MAEmid(2)≧Thl, MAEmid(3)<Thl のとき、
MAEmid(1)+MAEmid(0)<Thm, MAEmid(0)+MAEmid(2)<Thm, MAEmid(1)+MAEmid(3)<Thm, MAEmid(2)+MAEmid(3)<Thm のとき、
マクロブロックパーティションを図2の(ii)及び(iii)にする。
MAEmid(1)+MAEmid(0)<Thm, MAEmid(0)+MAEmid(2)≧Thm, MAEmid(1)+MAEmid(3)<Thm, MAEmid(2)+MAEmid(3)≧Thm のとき、
マクロブロックパーティションを図2の(ii)にする。
MAEmid(1)+MAEmid(0)≧Thm, MAEmid(0)+MAEmid(2)<Thm, MAEmid(1)+MAEmid(3)<Thm, MAEmid(2)+MAEmid(3)≧Thm のとき、
マクロブロックパーティションを図2の(iii)にする。
それ以外の時
マクロブロックパーティションを図2の(iv)にする。
【0039】
(条件8)
MAEmid(0)<Thl, MAEmid(1)≧Thl, MAEmid(2)≧Thl, MAEmid(3)≧Thl のとき、
MAEmid(1)+MAEmid(0)<Thm, MAEmid(0)+MAEmid(2)<Thm, MAEmid(1)+MAEmid(3)<Thm, MAEmid(2)+MAEmid(3)<Thm のとき、
マクロブロックパーティションを図2の(ii)及び(iii)にする。
MAEmid(1)+MAEmid(0)<Thm, MAEmid(0)+MAEmid(2)≧Thm, MAEmid(1)+MAEmid(3)<Thm, MAEmid(2)+MAEmid(3)≧Thm のとき、
マクロブロックパーティションを図2の(ii)にする。
MAEmid(1)+MAEmid(0)≧Thm, MAEmid(0)+MAEmid(2)<Thm, MAEmid(1)+MAEmid(3)<Thm, MAEmid(2)+MAEmid(3)≧Thm のとき、
マクロブロックパーティションを図2の(iii)にする。
それ以外の時
マクロブロックパーティションを図2の(iv)にする。
【0040】
(条件9)
MAEmid(0)≧Thl, MAEmid(1)<Thl, MAEmid(2)<Thl, MAEmid(3)<Thl のとき、
MAEmid(0)+MAEmid(1)<Thm, MAEmid(0)+MAEmid(2)<Thm のとき、
マクロブロックパーティションを図2の(ii)及び(iii)にする。
MAEmid(0)+MAEmid(1)<Thm, MAEmid(0)+MAEmid(2)≧Thm のとき、
マクロブロックパーティションを図2の(ii)にする。
MAEmid(0)+MAEmid(1)≧Thm, MAEmid(0)+MAEmid(2)<Thm のとき、
マクロブロックパーティションを図2の(iii)にする。
MAEmid(0)+MAEmid(1)≧Thm, MAEmid(0)+MAEmid(2)≧Thm のとき、
マクロブロックパーティションを図2の(iv)にする。
【0041】
(条件10)
MAEmid(0)≧Thl, MAEmid(1)<Thl, MAEmid(2)<Thl, MAEmid(3)≧Thl のとき、
MAEmid(1)+MAEmid(0)<Thm, MAEmid(0)+MAEmid(2)<Thm, MAEmid(1)+MAEmid(3)<Thm, MAEmid(2)+MAEmid(3)<Thm のとき、
マクロブロックパーティションを図2の(ii)及び(iii)にする。
MAEmid(1)+MAEmid(0)<Thm, MAEmid(0)+MAEmid(2)≧Thm, MAEmid(1)+MAEmid(3)<Thm, MAEmid(2)+MAEmid(3)≧Thm のとき、
マクロブロックパーティションを図2の(ii)にする。
MAEmid(1)+MAEmid(0)≧Thm, MAEmid(0)+MAEmid(2)<Thm, MAEmid(1)+MAEmid(3)<Thm, MAEmid(2)+MAEmid(3)≧Thm のとき、
マクロブロックパーティションを図2の(iii)にする。
それ以外の時
マクロブロックパーティションを図2の(iv)にする。
【0042】
(条件11)
MAEmid(0)≧Thl, MAEmid(1)<Thl, MAEmid(2)≧Thl, MAEmid(3)<Thl のとき、
マクロブロックパーティションを図2の(ii)にする。
【0043】
(条件12)
MAEmid(0)≧Thl, MAEmid(1)<Thl, MAEmid(2)≧Thl, MAEmid(3)≧Thl のとき、
MAEmid(1)+MAEmid(0)<Thm, MAEmid(0)+MAEmid(2)<Thm, MAEmid(1)+MAEmid(3)<Thm, MAEmid(2)+MAEmid(3)<Thm のとき、
マクロブロックパーティションを図2の(ii)及び(iii)にする。
MAEmid(1)+MAEmid(0)<Thm, MAEmid(0)+MAEmid(2)≧Thm, MAEmid(1)+MAEmid(3)<Thm, MAEmid(2)+MAEmid(3)≧Thm のとき、
マクロブロックパーティションを図2の(ii)にする。
MAEmid(1)+MAEmid(0)≧Thm, MAEmid(0)+MAEmid(2)<Thm, MAEmid(1)+MAEmid(3)<Thm, MAEmid(2)+MAEmid(3)≧Thm のとき、
マクロブロックパーティションを図2の(iii)にする。
それ以外の時
マクロブロックパーティションを図2の(iv)にする。
【0044】
(条件13)
MAEmid(0)≧Thl, MAEmid(1)≧Thl, MAEmid(2)<Thl, MAEmid(3)<Thl のとき、
マクロブロックパーティションを図2の(ii)にする。
【0045】
(条件14)
MAEmid(0)≧Thl, MAEmid(1)≧Thl, MAEmid(2)<Thl, MAEmid(3)≧Thl のとき、
MAEmid(1)+MAEmid(0)<Thm, MAEmid(0)+MAEmid(2)<Thm, MAEmid(1)+MAEmid(3)<Thm, MAEmid(2)+MAEmid(3)<Thm のとき、
マクロブロックパーティションを図2の(ii)及び(iii)にする。
MAEmid(1)+MAEmid(0)<Thm, MAEmid(0)+MAEmid(2)≧Thm, MAEmid(1)+MAEmid(3)<Thm, MAEmid(2)+MAEmid(3)≧Thm のとき、
マクロブロックパーティションを図2の(ii)にする。
MAEmid(1)+MAEmid(0)≧Thm, MAEmid(0)+MAEmid(2)<Thm, MAEmid(1)+MAEmid(3)<Thm, MAEmid(2)+MAEmid(3)≧Thm のとき、
マクロブロックパーティションを図2の(iii)にする。
それ以外の時
マクロブロックパーティションを図2の(iv)にする。
【0046】
(条件15)
MAEmid(0)≧Thl, MAEmid(1)≧Thl, MAEmid(2)≧Thl, MAEmid(3)<Thl のとき、
MAEmid(1)+MAEmid(0)<Thm, MAEmid(0)+MAEmid(2)<Thm, MAEmid(1)+MAEmid(3)<Thm, MAEmid(2)+MAEmid(3)<Thm のとき、
マクロブロックパーティションを図2の(ii)及び(iii)にする。
MAEmid(1)+MAEmid(0)<Thm, MAEmid(0)+MAEmid(2)≧Thm, MAEmid(1)+MAEmid(3)<Thm, MAEmid(2)+MAEmid(3)≧Thm のとき、
マクロブロックパーティションを図2の(ii)にする。
MAEmid(1)+MAEmid(0)≧Thm, MAEmid(0)+MAEmid(2)<Thm, MAEmid(1)+MAEmid(3)<Thm, MAEmid(2)+MAEmid(3)≧Thm のとき、
マクロブロックパーティションを図2の(iii)にする。
それ以外の時
マクロブロックパーティションを図2の(iv)にする。
【0047】
(条件16)
MAEmid(0)≧Thl, MAEmid(1)≧Thl, MAEmid(2)≧Thl, MAEmid(3)≧Thl のとき、
MAEmid(1)+MAEmid(0)<Thm, MAEmid(0)+MAEmid(2)<Thm, MAEmid(1)+MAEmid(3)<Thm, MAEmid(2)+MAEmid(3)<Thm のとき、
マクロブロックパーティションを図2の(ii)及び(iii)にする。
MAEmid(1)+MAEmid(0)<Thm, MAEmid(0)+MAEmid(2)≧Thm, MAEmid(1)+MAEmid(3)<Thm, MAEmid(2)+MAEmid(3)≧Thm のとき、
マクロブロックパーティションを図2の(ii)にする。
MAEmid(1)+MAEmid(0)≧Thm, MAEmid(0)+MAEmid(2)<Thm, MAEmid(1)+MAEmid(3)<Thm, MAEmid(2)+MAEmid(3)≧Thm のとき、
マクロブロックパーティションを図2の(iii)にする。
それ以外の時
マクロブロックパーティションを図2の(iv)にする。
【0048】
ここで、例えばThl=15、Thm=40とすると図4(a)の例では、上記の(条件4)の場合が適用され、マクロブロックパーティションとして図2の(ii)が選択される。なお、マクロブロックパーティションが図2の(i)になった場合には、大ブロック探索モードがオンに設定される。また、図2の(i)以外のマクロブロックパーティションが選択された場合は、大ブロック探索モードの設定はオフのまま維持される。
【0049】
次に、ステップS106では、大ブロック探索モードがオンに設定されているか否かを再度判定する。上記のように、ステップS105において、マクロブロックパーティションとして図2の(i)のタイプが選択された場合には大ブロック探索モードがオンに設定される。そこで、大ブロック探索モードがオンに設定されていると判定された場合には(ステップS106において「YES」)、ステップS120に移行して、探索階層を1つ更新してステップS101に戻る。ステップS101では、ステップS102において大ブロック動きベクトル検出部3で既に算出済の動きベクトルを用いて新たなマッチング位置を設定し、最下位階層まで大ブロックでの探索を繰り返す。
【0050】
このように、下位階層の探索で用いるマクロブロックパーティションを限定することで、全てのマクロブロックパーティションで探索を行った場合に比べ、演算処理を大幅に削減することができる。
【0051】
一方、大ブロック探索モードがオフに設定されていると判定された場合には(ステップS106において「NO」)、ステップS107に移行する。ステップS107では、中ブロック動きベクトル検出部7が、第一マクロブロックパーティション決定部6からマクロブロックパーティションと動きベクトルを取得し、該動きベクトルを用いてマッチング位置を決定する。
【0052】
次に、ステップS108では、取得したマクロブロックパーティションを用いて、各ブロック毎に参照画像記憶部4から入力される参照画像データとのマッチング誤差MAEmidを算出する。マッチング誤差MAEmidは各探索階層について算出され、最終的に探索範囲(全探索階層)におけるマッチング誤差MAEmidが最も小さくなる時の動きベクトルと、その時のマッチング誤差とが求められる。この動きベクトルを「最終的な動きベクトル」という。なお、このとき、マクロブロックパーティションとして図2(iv)以外が選択されている場合には、中ブロック探索モードをオンに設定する。一方、図2(iv)が選択されている場合には、中ブロック探索モードをオフに設定する。
【0053】
次に、ステップS109では、中ブロック探索モードがオンに設定されているか否かを判定する。中ブロック探索モードとは、「中ブロック」での探索を下位の探索階層を通じて行うモードである。この中ブロック探索モードがオンに設定されている場合には、これ以降大ブロック或いは小ブロックによる探索は行われない。
【0054】
ステップS109で、中ブロック探索モードがオンに設定されていると判定された場合には(ステップS109において「YES」)、ステップS121に移行する。ステップS121では、探索階層が最下位の探索階層か否かを判定する。もし最下位の探索階層と判定された場合には(ステップS121において「YES」)、ステップS117へ移行する。ステップS117では、最終マクロブロックパーティション・最終動きベクトル決定部11が、そのときのマクロブロックパーティションの情報と最終的な動きベクトルとを中ブロック動きベクトル検出部7から受信する。一方、最下位の探索階層でないと判定された場合には(ステップS121において「NO」)、ステップS122に移行して、探索階層を1つ更新し、一つ下位の探索階層についてステップS107からの処理を継続する。
【0055】
これにより、下位階層の探索で用いるマクロブロックパーティションを限定することで、全てのマクロブロックパーティションで探索を行った場合に比べ、演算処理を大幅に削減することができる。
【0056】
ステップS109で、中ブロック探索モードがオフに設定されていると判定された場合には(ステップS109において「NO」)、ステップS110に移行する。ステップS110では、中ブロック誤差抽出部5で用いられたマクロブロックパーティションが図2(iv)のパターンであるか否かを判定する。もし、図2(iv)のパターンでないと判定された場合は(ステップS110において「NO」)、ステップS121に移行して上記の処理を行う。一方、図2(iv)のパターンであると判定された場合には(ステップS110において「YES」)、ステップS111に移行する。
【0057】
ステップS111では、小ブロック誤差抽出部8が、中ブロック動きベクトル探索部7から、中ブロックでの各マッチング誤差と動きベクトルを取得する。
【0058】
小ブロック誤差抽出部8は、図4(b)に示すように8×8画素のマクロブロック410を更に4×4画素サイズのサブマクロブロック411から414(以下、小ブロックと呼ぶ)に分割した後、各小ブロックごとのマッチング誤差を抽出する。ここで抽出されるマッチング誤差は、小ブロック411につきMAElow(0)、小ブロック412につきMAElow(1)、小ブロック413につきMAElow(2)、小ブロック414につきMAElow(3)とする。抽出された各マッチング誤差は、サブマクロブロックパーティション決定部9に送信される。なお、図4(b)はマクロブロック410のマッチング誤差MAElowが30の時、各小ブロックのマッチング誤差がMAElow(0)=3、MAElow(1)=3、MAElow(2)=7、MAElow(3)=17の例を示している。
【0059】
なお、ステップS111移行の処理は、図2(iv)の8×8画素のマクロブロックの1つずつについて、それぞれ実行される。これにより、各マクロブロック毎に、サブマクロブロックパーティションが決定され、決定されたサブマクロブロックパーティションに応じた動きベクトルの検出が行われる。
【0060】
ステップS112においてサブマクロブロック(SMB)パーティション決定部9は、現在の探索階層における各小ブロックのマッチング誤差と閾値を比較し、以下のような条件でサブマクロブロックパーティションを決定する。ここでは、図2の(v)から(viii)のいずれかのサブマクロブロックパーティションが選択される。即ち、ここでは、8×8画素、8×4画素、4×8画素、又は、4×4画素のいずれかのブロックサイズが選択されることとなる。なお、以下において、閾値ThllとThmlとの間には、Thll<Thmlの関係が成立する。
【0061】
(条件1’)
MAElow(0)<Thll, MAElow(1)<Thll, MAElow(2)<Thll, MAElow(3)<Thll のとき、
サブマクロブロックパーティションを図2の(v)にする。
【0062】
(条件2’)
MAElow(0)<Thll, MAElow(1)<Thll, MAElow(2)<Thll, MAElow(3)≧Thll のとき、
MAElow(1)+MAElow(3)<Thml, MAElow(2)+MAElow(3)<Thml のとき、
サブマクロブロックパーティションを図2の(vi)及び(vii)にする。
MAElow(1)+MAElow(3)<Thml, MAElow(2)+MAElow(3)≧Thml のとき、
サブマクロブロックパーティションを図2の(vii)にする。
MAElow(1)+MAElow(3)≧Thml, MAElow(2)+MAElow(3)<Thml のとき、
サブマクロブロックパーティションを図2の(vi)にする。
MAElow(1)+MAElow(3)≧Thml, MAElow(2)+MAElow(3)≧Thml のとき、
サブマクロブロックパーティションを図2の(viii)にする。
【0063】
(条件3’)
MAElow(0)<Thll, MAElow(1)<Thll, MAElow(2)≧Thll, MAElow(3)<Thll のとき、
MAElow(0)+MAElow(2)<Thml, MAElow(2)+MAElow(3)<Thml のとき、
サブマクロブロックパーティションを図2の(vi)及び(vii)にする。
MAElow(0)+MAElow(2)<Thml, MAElow(2)+MAElow(3)≧Thml のとき、
サブマクロブロックパーティションを図2の(vii)にする。
MAElow(0)+MAElow(2)≧Thml, MAElow(2)+MAElow(3)<Thml のとき、
サブマクロブロックパーティションを図2の(vi)にする。
MAElow(0)+MAElow(2)≧Thml, MAElow(2)+MAElow(3)≧Thml のとき、
サブマクロブロックパーティションを図2の(viii)にする。
【0064】
(条件4’)
MAElow(0)<Thll, MAElow(1)<Thll, MAElow(2)≧Thll, MAElow(3)≧Thll のとき、
サブマクロブロックパーティションを図2の(vi)にする。
【0065】
(条件5’)
MAElow(0)<Thll, MAElow(1)≧Thll, MAElow(2)<Thll, MAElow(3)<Thll のとき、
MAElow(1)+MAElow(0)<Thml, MAElow(1)+MAElow(3)<Thml のとき、
サブマクロブロックパーティションを図2の(vi)及び(vii)にする。
MAElow(1)+MAElow(0)<Thml, MAElow(1)+MAElow(3)≧Thml のとき、
サブマクロブロックパーティションを図2の(vi)にする。
MAElow(1)+MAElow(0)≧Thml, MAElow(1)+MAElow(3)<Thml のとき、
サブマクロブロックパーティションを図2の(vii)にする。
MAElow(1)+MAElow(0)≧Thml, MAElow(1)+MAElow(3)≧Thml のとき、
サブマクロブロックパーティションを図2の(viii)にする。
【0066】
(条件6’)
MAElow(0)<Thll, MAElow(1)≧Thll, MAElow(2)<Thll, MAElow(3)≧Thll のとき、
サブマクロブロックパーティションを図2の(vii)にする。
【0067】
(条件7’)
MAElow(0)<Thll, MAElow(1)≧Thll, MAElow(2)≧Thll, MAElow(3)<Thll のとき、
MAElow(1)+MAElow(0)<Thml, MAElow(0)+MAElow(2)<Thml, MAElow(1)+MAElow(3)<Thml, MAElow(2)+MAElow(3)<Thml のとき、
サブマクロブロックパーティションを図2の(vi)及び(vii)にする。
MAElow(1)+MAElow(0)<Thml, MAElow(0)+MAElow(2)≧Thml, MAElow(1)+MAElow(3)<Thml, MAElow(2)+MAElow(3)≧Thml のとき、
サブマクロブロックパーティションを図2の(vi)にする。
MAElow(1)+MAElow(0)≧Thml, MAElow(0)+MAElow(2)<Thml, MAElow(1)+MAElow(3)<Thml, MAElow(2)+MAElow(3)≧Thml のとき、
サブマクロブロックパーティションを図2の(vii)にする。
それ以外の時
サブマクロブロックパーティションを図2の(viii)にする。
【0068】
(条件8’)
MAElow(0)<Thll, MAElow(1)≧Thll, MAElow(2)≧Thll, MAElow(3)≧Thll のとき、
MAElow(1)+MAElow(0)<Thml, MAElow(0)+MAElow(2)<Thml, MAElow(1)+MAElow(3)<Thml, MAElow(2)+MAElow(3)<Thml のとき、
サブマクロブロックパーティションを図2の(vi)及び(vii)にする。
MAElow(1)+MAElow(0)<Thml, MAElow(0)+MAElow(2)≧Thml, MAElow(1)+MAElow(3)<Thml, MAElow(2)+MAElow(3)≧Thml のとき、
サブマクロブロックパーティションを図2の(vi)にする。
MAElow(1)+MAElow(0)≧Thml, MAElow(0)+MAElow(2)<Thml, MAElow(1)+MAElow(3)<Thml, MAElow(2)+MAElow(3)≧Thml のとき、
サブマクロブロックパーティションを図2の(vii)にする。
それ以外の時
サブマクロブロックパーティションを図2の(viii)にする。
【0069】
(条件9’)
MAElow(0)≧Thll, MAElow(1)<Thll, MAElow(2)<Thll, MAElow(3)<Thll のとき、
MAElow(0)+MAElow(1)<Thml, MAElow(0)+MAElow(2)<Thml のとき、
サブマクロブロックパーティションを図2の(vi)及び(vii)にする。
MAElow(0)+MAElow(1)<Thml, MAElow(0)+MAElow(2)≧Thml のとき、
サブマクロブロックパーティションを図2の(vi)にする。
MAElow(0)+MAElow(1)≧Thml, MAElow(0)+MAElow(2)<Thml のとき、
サブマクロブロックパーティションを図2の(vii)にする。
MAElow(0)+MAElow(1)≧Thml, MAElow(0)+MAElow(2)≧Thml のとき、
サブマクロブロックパーティションを図2の(viii)にする。
【0070】
(条件10’)
MAElow(0)≧Thll, MAElow(1)<Thll, MAElow(2)<Thll, MAElow(3)≧Thll のとき、
MAElow(1)+MAElow(0)<Thml, MAElow(0)+MAElow(2)<Thml, MAElow(1)+MAElow(3)<Thml, MAElow(2)+MAElow(3)<Thml のとき、
サブマクロブロックパーティションを図2の(vi)及び(vii)にする。
MAElow(1)+MAElow(0)<Thml, MAElow(0)+MAElow(2)≧Thml, MAElow(1)+MAElow(3)<Thml, MAElow(2)+MAElow(3)≧Thml のとき、
サブマクロブロックパーティションを図2の(vi)にする。
MAElow(1)+MAElow(0)≧Thml, MAElow(0)+MAElow(2)<Thml, MAElow(1)+MAElow(3)<Thml, MAElow(2)+MAElow(3)≧Thml のとき、
サブマクロブロックパーティションを図2の(vii)にする。
それ以外の時
サブマクロブロックパーティションを図2の(viii)にする。
【0071】
(条件11’)
MAElow(0)≧Thll, MAElow(1)<Thll, MAElow(2)≧Thll, MAElow(3)<Thll のとき、
サブマクロブロックパーティションを図2の(vi)にする。
【0072】
(条件12’)
MAElow(0)≧Thll, MAElow(1)<Thll, MAElow(2)≧Thll, MAElow(3)≧Thll のとき、
MAElow(1)+MAElow(0)<Thml, MAElow(0)+MAElow(2)<Thml, MAElow(1)+MAElow(3)<Thml, MAElow(2)+MAElow(3)<Thml のとき、
サブマクロブロックパーティションを図2の(vi)及び(vii)にする。
MAElow(1)+MAElow(0)<Thml, MAElow(0)+MAElow(2)≧Thml, MAElow(1)+MAElow(3)<Thml, MAElow(2)+MAElow(3)≧Thml のとき、
サブマクロブロックパーティションを図2の(vi)にする。
MAElow(1)+MAElow(0)≧Thml, MAElow(0)+MAElow(2)<Thml, MAElow(1)+MAElow(3)<Thml, MAElow(2)+MAElow(3)≧Thml のとき、
サブマクロブロックパーティションを図2の(vii)にする。
それ以外の時
サブマクロブロックパーティションを図2の(viii)にする。
【0073】
(条件13’)
MAElow(0)≧Thll, MAElow(1)≧Thll, MAElow(2)<Thll, MAElow(3)<Thll のとき、
サブマクロブロックパーティションを図2の(vi)にする。
【0074】
(条件14’)
MAElow(0)≧Thll, MAElow(1)≧Thll, MAElow(2)<Thll, MAElow(3)≧Thll のとき、
MAElow(1)+MAElow(0)<Thml, MAElow(0)+MAElow(2)<Thml, MAElow(1)+MAElow(3)<Thml, MAElow(2)+MAElow(3)<Thml のとき、
サブマクロブロックパーティションを図2の(vi)及び(vii)にする。
MAElow(1)+MAElow(0)<Thml, MAElow(0)+MAElow(2)≧Thml, MAElow(1)+MAElow(3)<Thml, MAElow(2)+MAElow(3)≧Thml のとき、
サブマクロブロックパーティションを図2の(vi)にする。
MAElow(1)+MAElow(0)≧Thml, MAElow(0)+MAElow(2)<Thml, MAElow(1)+MAElow(3)<Thml, MAElow(2)+MAElow(3)≧Thml のとき、
サブマクロブロックパーティションを図2の(vii)にする。
それ以外の時
サブマクロブロックパーティションを図2の(viii)にする。
【0075】
(条件15’)
MAElow(0)≧Thll, MAElow(1)≧Thll, MAElow(2)≧Thll, MAElow(3)<Thll のとき、
MAElow(1)+MAElow(0)<Thml, MAElow(0)+MAElow(2)<Thml, MAElow(1)+MAElow(3)<Thml, MAElow(2)+MAElow(3)<Thml のとき、
サブマクロブロックパーティションを図2の(vi)及び(vii)にする。
MAElow(1)+MAElow(0)<Thml, MAElow(0)+MAElow(2)≧Thml, MAElow(1)+MAElow(3)<Thml, MAElow(2)+MAElow(3)≧Thml のとき、
サブマクロブロックパーティションを図2の(vi)にする。
MAElow(1)+MAElow(0)≧Thml, MAElow(0)+MAElow(2)<Thml, MAElow(1)+MAElow(3)<Thml, MAElow(2)+MAElow(3)≧Thml のとき、
サブマクロブロックパーティションを図2の(vii)にする。
それ以外の時
サブマクロブロックパーティションを図2の(viii)にする。
【0076】
(条件16’)
MAElow(0)≧Thll, MAElow(1)≧Thll, MAElow(2)≧Thll, MAElow(3)≧Thll のとき、
MAElow(1)+MAElow(0)<Thml, MAElow(0)+MAElow(2)<Thml, MAElow(1)+MAElow(3)<Thml, MAElow(2)+MAElow(3)<Thml のとき、
サブマクロブロックパーティションを図2の(vi)及び(vii)にする。
MAElow(1)+MAElow(0)<Thml, MAElow(0)+MAElow(2)≧Thml, MAElow(1)+MAElow(3)<Thml, MAElow(2)+MAElow(3)≧Thml のとき、
サブマクロブロックパーティションを図2の(vi)にする。
MAElow(1)+MAElow(0)≧Thml, MAElow(0)+MAElow(2)<Thml, MAElow(1)+MAElow(3)<Thml, MAElow(2)+MAElow(3)≧Thml のとき、
サブマクロブロックパーティションを図2の(vii)にする。
それ以外の時
サブマクロブロックパーティションを図2の(viii)にする。
【0077】
ここで、例えばThll=4、Thml=10とすると図4(b)の例では、上記の(条件4’)の場合が適用され、サブマクロブロックパーティションとして図2の(vi)が選択される。なお、サブマクロブロックパーティションが図2の(v)になった場合には、中ブロック探索モードがオンに設定される。また、図2の(v)以外のサブマクロブロックパーティションが選択された場合は、中ブロック探索モードの設定はオフのまま、小ブロック探索モードがオンに設定される。
【0078】
次に、ステップS113において、小ブロック探索モードがオンに設定されているか否かが判定される。小ブロック探索モードがオンの場合には(ステップS113において「YES」)、ステップS114に移行する。この場合、8×8画素のマクロブロックが、図2(v)以外のサブマクロブロックパーティションが選択されたこととなる。一方、小ブロック探索モードがオフの場合には(ステップS113において「NO」)、中ブロック探索モードがオンに設定されており、ステップS121に移行する。この場合、8×8画素のマクロブロックについて、図2(v)のサブマクロブロックパーティションが選択されたこととなるので、8×8画素の中ブロックについて動きベクトル検出が行われる。
【0079】
ステップS114では、小ブロック動きベクトル探索部10が、中ブロック動きベクトル検出部7から、サブマクロブロックパーティションの情報と動きベクトルとを取得する。小ブロック動きベクトル探索部10は、該動きベクトルを用いて新たなマッチング位置を設定する。
【0080】
次に、ステップS115では、小ブロック動きベクトル探索部10が、サブマクロブロックパーティションで参照画像記憶部4から入力される参照画像データとの探索範囲におけるマッチング誤差MAElowを算出する。マッチング誤差MAElowは各探索階層について算出され、最終的に探索範囲(全探索階層)におけるマッチング誤差MAElowが最も小さくなる時の動きベクトルと、その時のマッチング誤差とが求められる。この動きベクトルを「最終的な動きベクトル」という。
【0081】
続くステップS116では、探索階層が最下位の探索階層か否かを判定する。もし最下位の探索階層と判定された場合には(ステップS116において「YES」)、ステップS117へ移行する。ステップS117では、最終マクロブロックパーティション・最終動きベクトル決定部11が、そのときのサブマクロブロックパーティションの情報と最終的な動きベクトルとを小ブロック動きベクトル探索部10から受信する。一方、最下位の探索階層でないと判定された場合には(ステップS116において「NO」)、ステップS123に移行して、探索階層を1つ更新し、一つ下位の探索階層についてステップS114からの処理を継続する。
【0082】
最終マクロブロックパーティション・最終動きベクトル決定部11は、ステップS117において、マクロブロックパーティションの情報と最終的な動きベクトルの情報とを受信する。これらの情報は、上記のように、大ブロック動きベクトル検出部3、中ブロック動きベクトル検出部7及び小ブロック動きベクトル検出部10のいずれかから送信される。続くステップS124では、最終マクロブロックパーティション・最終動きベクトル決定部11は、受信した情報を、動き検出部2014の外部のインター予測部2013とエントロピー符号化部2004に送信する。
【0083】
以上の実施形態では、全てのブロックサイズについて探索画素精度を水平方向、垂直方向ともに一画素として実施することができる。その一方で、探索階層に応じて探索精度を異ならせても良い。
【0084】
例えば、上位階層で水平方向での探索精度を1画素飛びにし、下位階層では水平方向、垂直方向ともに一画素精度で探索を行う場合を考える。
ここで、上位階層で水平方向、垂直方向ともに一画素精度で探索を行っていた時のマクロブロックのサイズが水平16×垂直16だった場合、探索精度が水平1画素飛びで同一探索範囲に相当するマクロブロックサイズは水平8×垂直16になる。この時、ブロックの分割は水平4×垂直8で行い、閾値との比較を行うことができる。その結果に従い、下位階層で使用するブロックサイズを決定し、下位階層では水平方向、垂直方向ともに一画素精度の探索を行うことができる。
【0085】
以上の発明の実施形態によれば、大きなサイズのマクロブロックタイプから、複数の探索階層について使用する適切なマクロブロックパーティションを絞り込んでいくことが可能である。これにより、複数の参照フレームのそれぞれについて、全てのマクロブロックパーティション及びサブマクロブロックパーティションに対して動き探索を行わなくてもよい。よって、動き検出に関する演算負荷を大幅に低減することができる。その結果として、装置のバッテリー消費量を押さえることができ、高画質対応のビデオカメラシステムでも長時間撮影を実現することができる。
【0086】
[その他の実施形態]
なお、本発明は、複数の機器(例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機、ファクシミリ装置など)に適用してもよい。
【0087】
また、本発明の目的は、前述した機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムに供給し、そのシステムがプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現し、そのプログラムコードを記憶した記憶媒体は本発明を構成する。また、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した機能が実現される場合も含まれる。
【0088】
さらに、以下の形態で実現しても構わない。すなわち、記憶媒体から読み出されたプログラムコードを、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込む。そして、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行って、前述した機能が実現される場合も含まれる。
【0089】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【0090】
【図1a】発明の実施形態に対応する画像処理装置の全体構の一例を示す図である。
【図1b】発明の実施形態に対応する動きベクトル検出装置の構成の一例を示す図である。
【図2】動きベクトル検出のために用いるブロックサイズの一例を示す図である。
【図3】発明の実施形態に対応する動き検出部における、入力画像データ中の1つのマクロブロックについて、動きベクトルを検出し、マクロブロックパーティションを決定する処理の一例を示すフローチャートである。
【図4】発明の実施形態に対応する、大ブロック、中ブロック、小ブロックにおけるマッチング誤差の内訳を説明するための図である。
【図5】複数の参照フレームから動き情報を検出する概念を説明するための図である。
【出願人】 【識別番号】000001007
【氏名又は名称】キヤノン株式会社
【出願日】 平成18年7月6日(2006.7.6)
【代理人】 【識別番号】100076428
【弁理士】
【氏名又は名称】大塚 康徳

【識別番号】100112508
【弁理士】
【氏名又は名称】高柳 司郎

【識別番号】100115071
【弁理士】
【氏名又は名称】大塚 康弘

【識別番号】100116894
【弁理士】
【氏名又は名称】木村 秀二


【公開番号】 特開2008−17209(P2008−17209A)
【公開日】 平成20年1月24日(2008.1.24)
【出願番号】 特願2006−186972(P2006−186972)