(57)【要約】【課題】回路規模の増大化を抑制するとともに、動画像の符号化にかかる処理の高速化を図ること。【解決手段】符号化装置１００は、対象小領域ＳＢ１について、候補ベクトルごとのＳＡＤコストを算出し、ＳＡＤコストが小さい値となる候補ベクトルＭＶ２を、第１動きベクトル候補とする。また、符号化装置１００は、対象小領域ＳＢ１に隣接する隣接小領域ごとの動きベクトルから第２動きベクトル候補となる、隣接小領域ＳＢ２の動きベクトルＭＶ３を選択する。そして、符号化装置１００は、動きベクトルＭＶ３と、候補ベクトルＭＶ１のＳＡＤコスト１と、候補ベクトルＭＶ２のＳＡＤコスト２とに基づいて、動きベクトルＭＶ３の擬似ＳＡＤコストを算出する。続けて、符号化装置１００は、ＳＡＤコスト１と擬似ＳＡＤコストとに基づいて、候補ベクトルＭＶ２または候補ベクトルＭＶ３のいずれか一方を、対象小領域ＳＢ１の動きベクトルに決定する。【選択図】図１
2014183339.tif 000002
【特許請求の範囲】
【請求項１】
原画像が分割された複数のブロックのうちの符号化対象となる対象ブロックと、前記対象ブロックの動きベクトル候補となる各候補ベクトルが示す参照画像上の参照ブロックとに基づいて、前記候補ベクトルごとの評価値を算出して記憶部に格納する第１の算出部と、
前記第１の算出部によって前記記憶部に格納された前記候補ベクトルごとの評価値に基づいて、前記対象ブロックの第１動きベクトル候補の評価値を特定する特定部と、
前記複数のブロックのうちの前記対象ブロックに隣接する隣接ブロックごとの動きベクトルから選択された前記対象ブロックの第２動きベクトル候補と前記候補ベクトルごとの評価値とに基づいて、前記第２動きベクトル候補の評価値を算出する第２の算出部と、
前記特定部によって特定された前記第１動きベクトル候補の評価値と、前記第２の算出部によって算出された前記第２動きベクトル候補の評価値とに基づいて、前記第１動きベクトル候補または前記第２動きベクトル候補のいずれか一方を、前記対象ブロックの動きベクトルに決定する動きベクトル決定部と、
を有することを特徴とする符号化装置。
【請求項２】
前記記憶部は、
前記対象ブロックの動きベクトル候補となるベクトルが示す前記参照画像上の座標位置を表す第１の軸および第２の軸と、前記ベクトルの評価値を表す第３の軸とを有する空間座標系において、前記対象ブロックの動きベクトル候補となるベクトルごとの評価値を配置した際に形成される面を表す面データを複数記憶しており、
前記記憶部に記憶された複数の面データの各々と前記候補ベクトルごとの評価値とに基づいて、前記複数の面データからいずれかの面データを選択する選択部を有し、
前記第２の算出部は、
前記第２動きベクトル候補と前記選択部によって選択された前記いずれかの面データとに基づいて、前記第２動きベクトル候補の評価値を算出することを特徴とする請求項１に記載の符号化装置。
【請求項３】
前記対象ブロックの動きベクトル候補となるベクトルが示す前記参照画像上の座標位置とパラメータとを用いて前記ベクトルの評価値を表す関数モデルに、前記候補ベクトルごとの座標位置と前記候補ベクトルごとの評価値とを代入することにより、前記パラメータの値を決定するパラメータ決定部を有し、
前記第２の算出部は、
前記パラメータ決定部によって決定された前記パラメータの値を用いた前記関数モデルに、前記第２動きベクトル候補の座標位置を代入することにより、前記第２動きベクトル候補の評価値を算出することを特徴とする請求項１または２に記載の符号化装置。
【請求項４】
前記第１の算出部は、
算出した前記候補ベクトルごとの評価値のうち最小値となる候補ベクトルから所定距離内にある候補ベクトルごとの評価値を算出して前記記憶部の記憶内容を上書きすることを特徴とする請求項１〜３のいずれか一つに記載の符号化装置。
【請求項５】
コンピュータが、
原画像が分割された複数のブロックのうちの符号化対象となる対象ブロックと、前記対象ブロックの動きベクトル候補となる各候補ベクトルが示す参照画像上の参照ブロックとに基づいて、前記候補ベクトルごとの評価値を算出して記憶部に格納し、
前記記憶部に格納した前記候補ベクトルごとの評価値に基づいて、前記対象ブロックの第１動きベクトル候補の評価値を特定し、
前記複数のブロックのうちの前記対象ブロックに隣接する隣接ブロックごとの動きベクトルから選択された前記対象ブロックの第２動きベクトル候補と前記候補ベクトルごとの評価値とに基づいて、前記第２動きベクトル候補の評価値を算出し、
特定した前記第１動きベクトル候補の評価値と、算出した前記第２動きベクトル候補の評価値とに基づいて、前記第１動きベクトル候補または前記第２動きベクトル候補のいずれか一方を、前記対象ブロックの動きベクトルに決定する、
処理を実行することを特徴とする符号化方法。
【請求項６】
コンピュータに、
原画像が分割された複数のブロックのうちの符号化対象となる対象ブロックと、前記対象ブロックの動きベクトル候補となる各候補ベクトルが示す参照画像上の参照ブロックとに基づいて、前記候補ベクトルごとの評価値を算出して記憶部に格納し、
前記記憶部に格納した前記候補ベクトルごとの評価値に基づいて、前記対象ブロックの第１動きベクトル候補の評価値を特定し、
前記複数のブロックのうちの前記対象ブロックに隣接する隣接ブロックごとの動きベクトルから選択された前記対象ブロックの第２動きベクトル候補と前記候補ベクトルごとの評価値とに基づいて、前記第２動きベクトル候補の評価値を算出し、
特定した前記第１動きベクトル候補の評価値と、算出した前記第２動きベクトル候補の評価値とに基づいて、前記第１動きベクトル候補または前記第２動きベクトル候補のいずれか一方を、前記対象ブロックの動きベクトルに決定する、
処理を実行させることを特徴とする符号化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化装置、符号化方法、および符号化プログラムに関する。
【背景技術】
【０００２】
従来、動画像を符号化する符号化装置によって、動画像のうちの処理対象となる原画像内の対象ブロックと類似するブロックを探索する技術がある。たとえば、符号化装置が、参照画像の参照ブロックごとに、参照ブロックの画素値と対象ブロックの画素値とを比較して符号量を示す評価値を求め、最も良い評価値となった参照ブロックと対象ブロックとの空間的な位置の差を第１動きベクトル候補として特定する。続けて、符号化装置が、対象ブロックに隣接する隣接ブロックの動きベクトルを第２動きベクトル候補として、第２動きベクトル候補が示す参照ブロックの画素値と対象ブロックの画素値とを比較して第２動きベクトル候補の評価値を求める。そして、符号化装置が、第１動きベクトル候補の評価値と第２動きベクトル候補の評価値とを比較して、良い評価値となった動きベクトルを決定する。
【０００３】
関連する先行技術として、たとえば、評価値として合算ＳＡＤ（Ｓｕｍ  ｏｆ  Ａｂｓｏｌｕｔｅ  Ｄｉｆｆｅｒｅｎｃｅ）値の最小値位置の合算ＳＡＤ値および最小値位置近傍の複数個の合算ＳＡＤ値を用いて近似高次曲面を生成し、近似高次曲面の極小値位置を検出して、小数精度の動きベクトルを検出するものがある。また、対象ブロックが、スキップモードであるか、またはスペーシャルダイレクトモードであるかを判定する際に、隣接ブロックの動きベクトルが得られない場合に、他の近傍ブロックの動きベクトルを擬似的に用いてモード判定を行う技術がある。（たとえば、下記特許文献１、２を参照。）
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−３１８５７８号公報
【特許文献２】特開２００５−２４４５０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術によれば、第２動きベクトル候補の評価値を求める処理が発生して、動画像の符号化にかかる処理に時間がかかる。たとえば、第１動きベクトル候補の評価値を求める処理と、第２動きベクトル候補の評価値を求める処理とを並列実行しようとすると、評価値を求める回路と画素値を記憶するメモリとを複数用意することになり、回路規模が増大する。
【０００６】
１つの側面では、本発明は、回路規模の増大化を抑制するとともに、動画像の符号化にかかる処理の高速化を図る符号化装置、符号化方法、および符号化プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一側面によれば、原画像が分割された複数のブロックのうちの符号化対象となる対象ブロックと、対象ブロックの動きベクトル候補となる各候補ベクトルが示す参照画像上の参照ブロックとに基づいて、候補ベクトルごとの評価値を算出して記憶部に格納し、記憶部に格納した候補ベクトルごとの評価値に基づいて、対象ブロックの第１動きベクトル候補の評価値を特定し、複数のブロックのうちの対象ブロックに隣接する隣接ブロックごとの動きベクトルから選択された対象ブロックの第２動きベクトル候補と候補ベクトルごとの評価値とに基づいて、第２動きベクトル候補の評価値を算出し、特定した第１動きベクトル候補の評価値と、算出した第２動きベクトル候補の評価値とに基づいて、第１動きベクトル候補または第２動きベクトル候補のいずれか一方を、対象ブロックの動きベクトルに決定する符号化装置、符号化方法、および符号化プログラムが提案される。
【発明の効果】
【０００８】
本発明の一態様によれば、回路規模の増大化を抑制するとともに、符号化にかかる処理の高速化を図ることができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、本実施の形態にかかる符号化装置の動作例を示す説明図である。
【図２】図２は、コンピュータシステムのハードウェアの一例を示すブロック図である。
【図３】図３は、ピクチャとブロックとの関係の一例を示す説明図である。
【図４】図４は、非マージモードとマージモードとの符号量と動き予測コストの一例を示す説明図である。
【図５】図５は、マージモードにおける隣接ブロックの動きベクトルの利用例を示す説明図である。
【図６】図６は、符号化装置の機能例を示すブロック図である。
【図７】図７は、コストＦＦの記憶内容の一例を示す説明図である。
【図８】図８は、コスト曲面テーブルの記憶内容の一例を示す説明図である。
【図９】図９は、コスト曲面［０］テーブルの記憶内容をグラフとして表示した例を示す説明図である。
【図１０】図１０は、非マージモードにおける動き探索処理の一例を示す説明図（その１）である。
【図１１】図１１は、非マージモードにおける動き探索処理の一例を示す説明図（その２）である。
【図１２】図１２は、非マージモードにおける動き探索処理の一例を示す説明図（その３）である。
【図１３】図１３は、コスト曲面の選択例を示す説明図である。
【図１４】図１４は、マージモードにおける擬似ＳＡＤコストの算出例を示す説明図である。
【図１５】図１５は、動き探索と擬似ＳＡＤコスト算出とが逐次実行される際のタイミングの一例を示す説明図である。
【図１６】図１６は、非マージモードの動き探索と擬似ＳＡＤコスト算出とが並列実行される際のタイミングの第１の例を示す説明図である。
【図１７】図１７は、非マージモードの動き探索と擬似ＳＡＤコスト算出とが並列実行される際のタイミングの第２の例を示す説明図である。
【図１８】図１８は、１ピクチャの動き探索処理手順の一例を示すフローチャートである。
【図１９】図１９は、ブロックの動き探索処理手順の一例を示すフローチャートである。
【図２０】図２０は、複数小領域の並列探索処理手順の一例を示すフローチャートである。
【図２１】図２１は、小領域の動き探索処理手順の一例を示すフローチャート（その１）である。
【図２２】図２２は、小領域の動き探索処理手順の一例を示すフローチャート（その２）である。
【図２３】図２３は、ＳＡＤコストの第１の格納処理手順の一例を示すフローチャートである。
【図２４】図２４は、ＳＡＤコストの第２の格納処理手順の一例を示すフローチャートである。
【図２５】図２５は、小領域に対するコスト曲面探索並列処理手順の一例を示すフローチャートである。
【図２６】図２６は、コスト曲面の近似値算出処理手順の一例を示すフローチャートである。
【図２７】図２７は、擬似マージコスト算出処理手順の一例を示すフローチャートである。
【図２８】図２８は、擬似ＳＡＤコストを算出する回路の一例を示す説明図である。
【発明を実施するための形態】
【００１０】
以下に図面を参照して、開示の符号化装置、符号化方法、および符号化プログラムの実施の形態を詳細に説明する。
【００１１】
図１は、本実施の形態にかかる符号化装置の動作例を示す説明図である。符号化装置１００は、動画像を符号化するコンピュータである。符号化装置１００は、ＡＶＣ（Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ）／Ｈ．２６４や、ＨＥＶＣ（Ｈｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ）にしたがって、画像が分割されたブロックごとに動画像を符号化する。
【００１２】
Ｈ．２６４に従う場合、符号化装置１００は、たとえば、１つのブロックの大きさを１６×１６［画素］として画像を分割する。また、ＨＥＶＣに従う場合、符号化装置１００は、たとえば、１つのブロックの大きさを６４×６４［画素］として画像を分割する。さらに、ＨＥＶＣに従う場合、符号化装置１００は、１つのブロックをさらに分割したサブブロックごとに分割して、小領域ごとに符号化してもよい。以下、サブブロックを、「小領域」と呼称する。以下の説明では、小領域ごとに符号化する例を用いて説明する。
【００１３】
ＡＶＣ／Ｈ．２６４やＨＥＶＣで採用される動き予測は、符号化対象の原画像の対象小領域と符号化対象のピクチャの時間的に前後する参照画像の参照小領域との差分情報と、対象小領域が参照小領域まで移動した画素数を示す動きベクトルとを符号化する。これにより、符号化対象の対象小領域の符号量を削減することができる。ＡＶＣ／Ｈ．２６４やＨＥＶＣで採用される動き予測には、複数の動き予測モードがある。たとえば、符号量を大きく削減することが可能な動き予測モードとして、Ｈ．２６４にはスキップモードがあり、ＨＥＶＣには、マージモードがある。
【００１４】
自然画像において、ある小領域の動きベクトルは、ある小領域の周囲の動きベクトルと相関性が高くなることがある。したがって、動き探索により生成された、ある小領域の動きベクトルをそのまま用いるより、ある小領域の動きベクトルと空間的に隣接する小領域の動きベクトルとの差分を符号化することにより、動きベクトルの符号量を削減することができる。
【００１５】
スキップモードは、符号化対象の小領域に対して、空間的に左位置、上位置、または右上位置に隣接する小領域の動きベクトルをそのまま利用することにより、動きベクトルの差分の符号量も削減することができる。また、マージモードは、利用できる動きベクトルの種類が、スキップモードより増加しており、より符号化効率を向上させることができる。
【００１６】
このように、動き予測モードには、動き探索により生成された動きベクトルを用いる、非マージモードと、隣接する小領域の動きベクトルを利用するスキップモードやマージモードとがある。符号化装置１００は、複数の動き予測モードに対して、各動き予測モードの動きベクトルの評価値を算出して、たとえば評価値が最小の動き予測モードに決定する。
【００１７】
動きベクトルの評価値は、対象小領域と動きベクトルが示す参照小領域との対応する画素間の差分を表す値を累積加算することにより算出される。評価値は、対象小領域と参照小領域との類似度を判断する指標となる。画素間の差分を表す値は、たとえば、画素間の画素値の差である。画素値は、画素が示す色情報であり、たとえば、輝度成分値、青色色差成分値、赤色色差成分値などの少なくともいずれか一つの成分値であってもよく、また、赤成分値、緑成分値、青成分値などの成分値であってもよい。本実施の形態では、画素間の差分を表す値は、輝度成分値の差とする。
【００１８】
評価値は、具体的には、たとえば、ＳＡＤ（Ｓｕｍ  ｏｆ  Ａｂｓｏｌｕｔｅ  Ｄｉｆｆｅｒｅｎｃｅ）でもよいし、ＳＡＴＤ（Ｓｕｍ  ｏｆ  Ａｂｓｏｌｕｔｅ  Ｔｒａｎｓｆｏｒｍｅｄ  Ｄｉｆｆｅｒｅｎｃｅｓ）でもよいし、ＳＳＤ（Ｓｕｍ  ｏｆ  Ｓｑｕａｒｅｄ  Ｄｉｆｆｅｒｅｎｃｅ）でもよい。以下、本実施の形態では、動きベクトルの評価値がＳＡＤであるときの例について説明する。また、算出されたＳＡＤの値を、「ＳＡＤコスト」と称する。ＳＡＤコストは、値が小さい程、該当の動き予測モードを選択した際の、対象小領域の符号量が少なくなることを示す。
【００１９】
ここで、スキップモードやマージモードによる符号化を行う場合、対象小領域に隣接する隣接小領域の動きベクトルを利用するため、符号化を行う装置は、スキップモードやマージモードの符号量の評価値の算出を、小領域単位で、かつ、時分割で行うことになる。評価値については後述する。したがって、隣接する小領域の評価値を算出する処理を並列に処理するような高速化が難しく、リアルタイム符号化の妨げとなる。特にＨＥＶＣのマージモードでは、符号化対象の小領域に対して左に隣接する小領域から２種類、上に隣接する小領域から３種類と、選択可能な小領域の数がＨ．２６４と比較して増加している。したがって、マージモードのコストを計算する演算量が、選択可能な小領域の数に比例して増加する。
【００２０】
ある小領域に対する複数のマージモードのＳＡＤコスト算出は並列処理が可能である。しかしながら、ＳＡＤコストを算出するために参照される画素値が格納される参照画メモリとＳＡＤコストを算出するＳＡＤ算出用回路とを複数用意することになり、回路規模が増大してしまう。
【００２１】
そこで、符号化装置１００は、非マージモードについて、参照画メモリとＳＡＤ算出用回路とを用いて、複数の動きベクトルの候補となる候補ベクトルごとのＳＡＤコストを算出して、各候補ベクトルから、第１の動きベクトル候補を特定する。そして、符号化装置１００は、隣接小領域ごとの動きベクトルから選択された第２動きベクトル候補と、候補ベクトルごとのＳＡＤコストとに基づいて、擬似ＳＡＤコストを算出する。擬似ＳＡＤコストは、参照画メモリとＳＡＤ算出用回路とを用いて算出されたＳＡＤコストでなく、第２動きベクトル候補と候補ベクトルごとのＳＡＤコストとから予測されたＳＡＤコストである。
【００２２】
このように、擬似ＳＡＤコストの算出には、参照画メモリとＳＡＤ算出用回路とが用いられないため、符号化装置１００は、回路規模を増大しなくても、非マージモードのＳＡＤコスト算出と、マージモードの擬似ＳＡＤコストの算出とを並列に実行することができる。また、符号化装置１００は、スキップモードについても、スキップモードの擬似ＳＡＤコスト算出と、非マージモードのＳＡＤコスト算出とを並列に実行することができる。以下の説明では、マージモードの例について説明する。
【００２３】
図１において、符号化装置１００は、対象小領域ＳＢ１について、候補ベクトルごとのＳＡＤコストを算出する。図１では、ハッチを付与した矢印が、候補ベクトルを示す。また、図１では、ハッチを付与した長方形が、候補ベクトルのＳＡＤコストを模式的に表す。長方形が縦に長い程、ＳＡＤコストが大きいことを示す。具体的に、符号化装置１００は、候補ベクトルＭＶ１のＳＡＤコスト１と、候補ベクトルＭＶ２のＳＡＤコスト２と、を算出する。そして、符号化装置１００は、ＳＡＤコスト１とＳＡＤコスト２とに基づいて、図１の例では、ＳＡＤコストが小さい値となる候補ベクトルＭＶ２を、第１動きベクトル候補に特定する。
【００２４】
続けて、符号化装置１００は、対象小領域ＳＢ１に隣接する隣接小領域ごとの動きベクトルから第２動きベクトル候補となる、隣接小領域ＳＢ２の動きベクトルＭＶ３を選択する。そして、符号化装置１００は、動きベクトルＭＶ３と、候補ベクトルＭＶ１のＳＡＤコスト１と、候補ベクトルＭＶ２のＳＡＤコスト２と、に基づいて、動きベクトルＭＶ３の擬似ＳＡＤコストを算出する。
【００２５】
擬似ＳＡＤコストの算出の第１の例として、符号化装置１００は、動きベクトルＭＶ３の座標位置と候補ベクトルＭＶ１の座標位置との距離Ｄ１と、動きベクトルＭＶ３の座標位置と候補ベクトルＭＶ２との距離Ｄ２と、を算出する。そして、符号化装置１００は、下記（１）式のように、擬似ＳＡＤコストを算出する。
【００２６】
擬似ＳＡＤコスト＝（（１／距離Ｄ１）＊ＳＡＤコスト１＋（１／距離Ｄ２）＊ＳＡＤコスト２）／（（１／距離Ｄ１）＋（１／距離Ｄ２））  …（１）
【００２７】
（１）式は、距離の逆数を重みとした加重平均である。また、擬似ＳＡＤコストの算出の第２の例として、候補ベクトルが３つ以上あれば、符号化装置１００は、候補ベクトル全体から、動きベクトルＭＶ３に近い３つの候補ベクトルを抽出して、距離の逆数を重みとした加重平均を算出してもよい。また、擬似ＳＡＤコストの算出の第３の例として、符号化装置１００は、候補ベクトルの座標位置を表すＸ軸およびＹ軸と候補ベクトルのＳＡＤコストを表すＺ軸とを有する空間座標系において、ＳＡＤコストにより形成される面データを複数記憶しておく。そして、符号化装置１００は、候補ベクトルのＳＡＤコストが形成する面に最も近い面データを選択し、選択した面データ上における動きベクトルＭＶ３の座標位置のＳＡＤコストを、擬似ＳＡＤコストとしてもよい。
【００２８】
擬似ＳＡＤコストを算出後、符号化装置１００は、非マージモードのＳＡＤコストと、マージモードの擬似ＳＡＤコストとに基づいて、候補ベクトルＭＶ２または候補ベクトルＭＶ３のいずれか一方を、対象小領域ＳＢ１の動きベクトルに決定する。以下、図２〜図２８を用いて、符号化装置１００の詳細を説明する。
【００２９】
（コンピュータシステム２００のハードウェア構成例）
次に、符号化装置１００が適用されるコンピュータシステム２００のハードウェアの一例について説明する。コンピュータシステム２００は、たとえば、動画像を記録・再生する機能を有するシステムであり、具体的には、たとえば、パーソナル・コンピュータ、テレビジョン、レコーダ、スマートフォン、ビデオカメラ、デジタルカメラなどである。
【００３０】
図２は、コンピュータシステムのハードウェアの一例を示すブロック図である。図２において、コンピュータシステム２００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０３と、を含む。また、コンピュータシステム２００は、撮像素子２０４と、撮像素子Ｉ／Ｆ（ＩｎｔｅｒＦａｃｅ）２０５と、操作パネル２０６と、記録メディア２０７と、外部Ｉ／Ｆ２０８と、符号化装置１００とを含む。
【００３１】
また、コンピュータシステム２００は、ディスプレイ２０９と、ディスプレイ出力Ｉ／Ｆ２１０とを含む。また、ＣＰＵ２０１〜ＲＡＭ２０３と、撮像素子Ｉ／Ｆ２０５と、外部Ｉ／Ｆ２０８と、ディスプレイ出力Ｉ／Ｆ２１０と、符号化装置１００とは、バス２１１で相互に接続される。
【００３２】
ＣＰＵ２０１は、コンピュータシステム２００の全体の制御を司る演算処理装置である。ＲＯＭ２０２は、コンピュータシステム２００のブートプログラムなどのプログラムを記憶する不揮発性メモリである。ＲＡＭ２０３は、ＣＰＵ２０１のワークエリアとして使用される揮発性メモリである。
【００３３】
撮像素子２０４は、対象物から発した光を電気信号に変換する装置である。たとえば、撮像素子２０４は、ＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）イメージセンサ、やＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）イメージセンサなどである。
【００３４】
撮像素子Ｉ／Ｆ２０５は、記録時に撮像素子２０４を制御することにより、撮像素子２０４からの信号を所定の画像フォーマットに変換してＲＡＭ２０３に格納する装置である。所定の画像フォーマットとは、たとえば、ＹＵＶ４２０である。撮像素子２０４からの信号は、たとえば、ＲＧＢベイヤフォーマットに従う。
【００３５】
操作パネル２０６は、コンピュータシステム２００が有する液晶タッチパネルや操作ボタンである。記録メディア２０７は、フラッシュＲＯＭ等といった記憶装置である。また、記録メディア２０７は、本実施の形態にかかる動画像符号化プログラムを記録してもよい。外部Ｉ／Ｆ２０８は、操作パネル２０６、および記録メディア２０７を制御する。また、外部Ｉ／Ｆ２０８は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワークを介して、コンピュータシステム２００以外の他の装置に接続されてもよい。
【００３６】
ディスプレイ２０９は、撮像素子２０４が記録した画像フォーマットを表示する。ディスプレイ出力Ｉ／Ｆ２１０は、ディスプレイ２０９の制御を行う。
【００３７】
図３は、ピクチャとブロックとの関係の一例を示す説明図である。符号化装置１００は、ピクチャをある一定サイズのブロック、たとえば、左上のブロックから右下のブロックまでラスタ順に従って符号化処理を行う。ブロックのサイズは、たとえば、Ｈ．２６４では１６×１６［画素］であり、ＨＥＶＣでは６４×６４［画素］である。１枚のピクチャに対して符号化処理を開始する場合、符号化装置１００は、ブロック［０］の符号化を実施し、次のブロック［１］を符号化するといったように、ブロック単位でラスタ順に符号化処理を行う。さらに、符号化装置１００は、ひとつのブロックをさらに複数の小領域に分割した小領域単位で動き予測を行う。
【００３８】
図３の例では、符号化装置１００は、ピクチャ３０１をブロック［０］、ブロック［１］、…、ブロック［ＢＬＫnum−１］というＢＬＫnum個のブロックに分割し、ラスタ順に符号化処理を行う。ブロック［０］、ブロック［１］、…、ブロック［ＢＬＫnum−１］の大きさは、６４×６４［画素］となる。
【００３９】
そして、符号化装置１００は、各ブロックをさらに複数の小領域に分割した小領域単位で動き予測を行う。図３の例では、符号化装置１００は、ブロック［１５］について、ブロック［１５］をさらに複数の小領域として、小領域［０］〜小領域［ＳＢnum−１］というＳＢnum個の小領域に分割した単位で動き予測を行う。なお、小領域［０］の大きさは、３２×３２［画素］である。また、小領域［１］〜小領域［４］の大きさは、８×８［画素］である。さらに、小領域［５］の大きさは、１６×１６［画素］である。また、本実施の形態にかかる符号化装置１００は、高速化のため、複数の小領域に対して並列に動き探索処理を行う。
【００４０】
（マージモードの詳細）
図４は、非マージモードとマージモードとの符号量と動き予測コストの一例を示す説明図である。非マージモードにおける符号量は、符号化モード情報の符号量と、動きベクトル差分情報の符号量と、係数情報の符号量との合計となる。非マージモードにおける符号化モード情報は、前方予測か後方予測かを示す情報と、参照面がどの番号であるかを示す情報等である。動きベクトル差分情報は、隣接小領域の動きベクトルと対象小領域の動きベクトルの差分である。非マージモードにおける係数情報は、対象ブロックの画素群と動きベクトル差分情報により示される参照ブロックの画素群との差分情報である。
【００４１】
非マージモードにおける動き予測コストは、動きベクトルコストとＳＡＤコストとの合計とする。動きベクトルコストは、動きベクトル差分情報の符号量である。より具体的には、動きベクトル差分情報は、動きベクトル差分情報を算術符号等に用いられる変換テーブルに従って変換したビット長でもよいし、変換前のビット長でもよい。非マージモードのＳＡＤコストは、動き探索結果となる第１動きベクトル候補のＳＡＤの値である。
【００４２】
マージモードにおける符号量は、符号化モード情報の符号量と、マージＩＤＸの符号量と、係数情報の符号量との合計となる。マージモードにおける符号化モード情報は、マージモードか否かを示すフラグである。マージＩＤＸは、マージベクトルを特定する識別情報である。マージモードにおける係数情報は、対象ブロックの画素群とマージＩＤＸによって特定されるマージベクトルにより示される参照ブロックの画素群との差分情報である。なお、図４には図示していないが、スキップモードにおける符号量は、符号化モード情報の符号量となる。
【００４３】
マージモードにおける動き予測コストは、マージＩＤＸコストとＳＡＤコストとの合計とする。マージＩＤＸコストは、マージＩＤＸの符号量である。マージモードのＳＡＤコストは、複数のマージベクトルから選択された第２動きベクトル候補のＳＡＤである。
【００４４】
マージモードのＳＡＤコストを算出するには、参照画メモリとＳＡＤ算出用回路とを用いることになり、非マージモードのＳＡＤコストと並列に実行するには、複数用意することになる。そこで、本実施の形態では、符号化装置１００は、マージモードにおける動き予測コストとして、擬似マージコストを算出する。擬似マージコストは、マージＩＤＸコストと擬似ＳＡＤコストとの合計とする。
【００４５】
図５は、マージモードにおける隣接ブロックの動きベクトルの利用例を示す説明図である。ＨＥＶＣのマージモードは、図５で示す通り、符号化対象の小領域に対して左に隣接する左隣接小領域０および左隣接小領域１と、上に隣接する上隣接小領域０、上隣接小領域１および上隣接小領域２と、の５種類から選択することができる。本実施の形態では、マージモードの個数ＭＭnumを５とし、マージモード［０］〜マージモード［４］を以下のように設定する。
【００４６】
具体的に、マージモードとして左隣接小領域１の動きベクトルを用いるモードを「マージモード［０］」とする。隣接ブロックの動きベクトルを、「マージベクトル」とする。たとえば、左隣接小領域１の動きベクトルを「マージベクトル［０］」とする。
【００４７】
また、マージモードとして上隣接小領域１の動きベクトルを用いるモードを「マージモード［１］」とする。さらに、上隣接小領域１の動きベクトルを「マージベクトル［１］」とする。また、マージモードとして上隣接小領域０の動きベクトルを用いるモードを「マージモード［２］」とする。さらに、上隣接小領域０の動きベクトルを「マージベクトル［２］」とする。また、マージモードとして左隣接小領域０の動きベクトルを用いるモードを「マージモード［３］」とする。さらに、左隣接小領域０の動きベクトルを「マージベクトル［３］」と呼称する。また、マージモードとして上隣接小領域２の動きベクトルを用いるモードを「マージモード［４］」とする。さらに、上隣接小領域２の動きベクトルを「マージベクトル［４］」と呼称する。
【００４８】
（符号化装置１００の機能）
次に、符号化装置１００の機能について説明する。図６は、符号化装置の機能例を示すブロック図である。符号化装置１００は、第１の算出部６０１と、特定部６０２と、パラメータ決定部６０３と、選択部６０４と、第２の算出部６０５と、動きベクトル決定部６０６を含む。
【００４９】
なお、第１の算出部６０１〜動きベクトル決定部６０６は、記憶装置に記憶されたプログラムをＣＰＵ２０１が実行することにより、第１の算出部６０１〜動きベクトル決定部６０６の機能を実現してもよい。記憶装置とは、具体的には、たとえば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、記録メディア２０７などである。
【００５０】
また、符号化装置１００は、記憶部６１１にアクセス可能である。記憶部６１１は、ＲＯＭ２０２、ＲＡＭ２０３、記録メディア２０７といった記憶装置に格納される。また、記憶部６１１は、コストＦＦ（ＦｌｉｐＦｌｏｐ）６１２と、コスト曲面テーブル６１３とを含む。コストＦＦ６１２とコスト曲面テーブル６１３とは、同一の記憶装置内にあってもよいし、異なる記憶装置内にあってもよい。
【００５１】
コストＦＦ６１２は、候補ベクトルごとに算出されたＳＡＤコストを記憶する。コストＦＦ６１２の記憶内容の詳細は、図７にて後述する。
【００５２】
コスト曲面テーブル６１３は、次に示す３つの軸を有する空間座標系において、対象小領域の動きベクトル候補となるベクトルごとのＳＡＤコストを配置した際に形成される面を表す面データを複数記憶する。ベクトルごとのＳＡＤコストを配置した際に形成される面を、以下、「コスト曲面」と称する。次に示す３つの軸とは、対象小領域の動きベクトル候補となるベクトルが示す参照画像上の座標位置を表す第１の軸および第２の軸と、ベクトルのＳＡＤコストを表す第３の軸とである。コスト曲面テーブル６１３の記憶内容の詳細は、図８にて後述する。
【００５３】
第１の算出部６０１は、複数の小領域のうちの符号化対象となる対象小領域と、対象小領域の動きベクトル候補となる各候補ベクトルが示す参照画像上の参照小領域とに基づいて、候補ベクトルごとのＳＡＤコストを算出してコストＦＦ６１２に格納する。たとえば、第１の算出部６０１は、対象小領域の各画素の輝度成分値と、各候補ベクトルが示す参照小領域の各画素の輝度成分値の差の絶対値を累積加算することにより、候補ベクトルごとのＳＡＤコストを算出して、コストＦＦ６１２に格納する。
【００５４】
また、第１の算出部６０１は、算出した候補ベクトルごとのＳＡＤコストのうち最小値となる候補ベクトルから所定距離内にある候補ベクトルごとのＳＡＤコストを算出してコストＦＦ６１２の記憶内容を上書きしてもよい。所定距離は、符号化装置１００の開発者またはコンピュータシステム２００の利用者によって指定される。たとえば、所定距離が大きい値に指定されると、符号化にかかる時間は長くなるが、符号量をより小さくできる場合がある。
【００５５】
たとえば、第１の算出部６０１が、フルペル精度にて、候補ベクトルごとのＳＡＤコストを算出して、コストＦＦ６１２の記憶内容に格納したとする。そして、第１の算出部６０１は、格納された候補ベクトルごとのＳＡＤコストのうちの最小となる候補ベクトルから所定距離内を、ハーフペル精度にて候補ベクトルごとのＳＡＤコストを算出して、コストＦＦ６１２の記憶内容を上書きする。さらに、第１の算出部６０１は、クォータペル精度にて候補ベクトルごとのＳＡＤコストを算出して、コストＦＦ６１２の記憶内容を上書きしてもよい。
【００５６】
特定部６０２は、第１の算出部６０１によってコストＦＦ６１２に格納された候補ベクトルごとのＳＡＤコストに基づいて、対象小領域の第１動きベクトル候補のＳＡＤコストを特定する。たとえば、特定部６０２は、コストＦＦ６１２に格納された候補ベクトルのうちの、ＳＡＤコストが最小となる候補ベクトルを第１動きベクトル候補として、第１動きベクトル候補のＳＡＤコストを特定する。特定されたＳＡＤコストは、フリップフロップ等の記憶装置に格納される。
【００５７】
パラメータ決定部６０３は、関数モデルに、コストＦＦ６１２に格納された候補ベクトルごとの座標位置と候補ベクトルごとのＳＡＤコストとを代入することにより、関数モデルのパラメータの値を決定する。ここで、関数モデルは、対象小領域の動きベクトル候補となるベクトルが示す参照画像上の座標位置とパラメータとを用いてベクトルのＳＡＤコストを表す。たとえば、関数モデルが、下記（２）式であるとする。
【００５８】
ＳＡＤコスト＝ａ×ｘ＾２＋ｂ×ｙ＾２＋ｃ  …（２）
【００５９】
ただし、ａ、ｂおよびｃは、パラメータであり、ｘとｙとは、ベクトルが示す参照画像上のＸ座標とＹ座標である。このとき、パラメータ決定部６０３は、ｘ、ｙ、ＳＡＤコストに、コストＦＦ６１２に格納された候補ベクトルごとの座標位置と候補ベクトルごとのＳＡＤコストとを代入して、ａの値とｂの値とｃの値を決定する。具体的な決定方法として、パラメータ決定部６０３は、たとえば、最小自乗法によりａの値とｂの値とｃの値を決定する。決定したパラメータの値は、フリップフロップ等の記憶装置に格納される。
【００６０】
選択部６０４は、コスト曲面テーブル６１３に記憶された複数のコスト曲面の各々と、コストＦＦ６１２に格納された候補ベクトルごとのＳＡＤコストとに基づいて、複数のコスト曲面からいずれかのコスト曲面を選択する。
【００６１】
たとえば、選択部６０４は、複数のコスト曲面のうちのあるコスト曲面について、ＳＡＤコストが最小となる座標位置と、コストＦＦ６１２に格納された候補ベクトルごとのＳＡＤコストのうちの最小となる候補ベクトルの座標位置とを特定する。次に、選択部６０４は、コストＦＦ６１２に格納された候補ベクトルに対応して、候補ベクトルの座標位置に対応する、あるコスト曲面のＳＡＤコストと候補ベクトルのＳＡＤコストとの差の絶対値を算出する。ここで、選択部６０４は、差の絶対値の代わりに、差の２乗を用いてもよい。また、選択部６０４は、コストＦＦ６１２に格納された候補ベクトル全てに対して差の絶対値を算出してもよいし、最小となる候補ベクトルの座標位置から所定範囲内にある候補ベクトルに対して差の絶対値を算出してもよい。
【００６２】
続けて、選択部６０４は、差の絶対値を累計加算することにより、あるコスト曲面と候補ベクトルごとのＳＡＤコストとの近似値を算出する。選択部６０４は、候補ベクトルごとのＳＡＤコストとの近似値を、コスト曲面ごとに算出し、最も小さい近似値となったコスト曲面を選択する。なお、選択したコスト曲面の識別情報は、フリップフロップ等の記憶装置に記憶される。
【００６３】
第２の算出部６０５は、複数の小領域のうちの対象小領域に隣接する隣接小領域ごとの動きベクトルから選択された対象小領域の第２動きベクトル候補と候補ベクトルごとのＳＡＤコストとに基づいて、第２動きベクトル候補の擬似ＳＡＤコストを算出する。たとえば、第２の算出部６０５は、第２動きベクトル候補の座標位置と候補ベクトルの座標位置の距離の逆数を重みとした加重平均により、第２動きベクトル候補の擬似ＳＡＤコストを算出する。
【００６４】
また、第２の算出部６０５は、第２動きベクトル候補と選択部６０４によって選択されたいずれかの面データとに基づいて、第２動きベクトル候補の擬似ＳＡＤコストを算出してもよい。また、第２の算出部６０５は、パラメータ決定部６０３によって決定されたパラメータの値を用いた関数モデルに、第２動きベクトル候補の座標位置を代入することにより、第２動きベクトル候補の擬似ＳＡＤコストを算出してもよい。算出した擬似ＳＡＤコストは、フリップフロップ等の記憶装置に記憶される。
【００６５】
動きベクトル決定部６０６は、第１動きベクトル候補のＳＡＤコストと、第２動きベクトル候補の擬似ＳＡＤコストとに基づいて、第１動きベクトル候補または第２動きベクトル候補のいずれか一方を、対象小領域の動きベクトルに決定する。
【００６６】
たとえば、動きベクトル決定部６０６は、第１動きベクトル候補のＳＡＤコストと第２動きベクトル候補の擬似ＳＡＤコストとの小さい方に対応する動きベクトル候補を、対象小領域の動きベクトルに決定する。また、動きベクトル決定部６０６は、第１動きベクトル候補のＳＡＤコストと第２動きベクトル候補の擬似ＳＡＤコストとが同一の値となれば、第２動きベクトル候補を対象小領域の動きベクトルに決定してもよい。
【００６７】
また、動きベクトル決定部６０６は、第１動きベクトル候補のＳＡＤコストに第１動きベクトル候補の符号量となる動きベクトルコストを加算した動き予測コストを算出する。そして、動きベクトル決定部６０６は、第２動きベクトル候補の擬似ＳＡＤコストに第２動きベクトル候補の符号量となるマージＩＤＸコストを加算した擬似マージコストを算出する。動きベクトル決定部６０６は、動き予測コストが擬似マージコストより小さければ第１動きベクトル候補を対象小領域の動きベクトルに決定し、動き予測コストが擬似マージコストより大きければ第２動きベクトル候補を対象小領域の動きベクトルに決定する。決定した動きベクトルは、フリップフロップ等の記憶装置に記憶される。
【００６８】
図７は、コストＦＦの記憶内容の一例を示す説明図である。コストＦＦ６１２は、候補ベクトルごとに算出されたＳＡＤコストを記憶するフリップフロップである。図７に示すコストＦＦ６１２は、コストＦＦ＿０〜コストＦＦ＿２３を有する。コストＦＦ６１２は、ＭＶ＿Ｘと、ＭＶ＿Ｙと、ＳＡＤコストという３つのフィールドを有する。ＭＶ＿ＸフィールドおよびＭＶ＿Ｙフィールドには、候補ベクトルのＸ座標とＹ座標がそれぞれ格納される。ＳＡＤコストフィールドには、ＭＶ＿ＸフィールドおよびＭＶ＿Ｙフィールドに格納された値により示される候補ベクトルのＳＡＤコストが格納される。
【００６９】
たとえば、コストＦＦ＿０には、（３２，２４）となる候補ベクトルのＳＡＤコストとして、８２が格納される。
【００７０】
図８は、コスト曲面テーブルの記憶内容の一例を示す説明図である。コスト曲面テーブル６１３は、コスト曲面ごとに、ＳＡＤコストを記憶するテーブルである。図８に示すコスト曲面テーブル６１３は、コスト曲面［０］テーブル８０１＿０と、コスト曲面［１］テーブル８０１＿１と、…、コスト曲面［ＣＴnum−１］テーブル８０１＿ＣＴnum−１という、ＣＴnum個のテーブルを有する。たとえば、コスト曲面［０］テーブル８０１＿０は、レコード８０１＿０＿０と、レコード８０１＿０＿１と、…、レコード８０１＿０＿２５５と、を含む。また、コスト曲面［１］テーブル８０１＿１は、レコード８０１＿１＿０を含む。さらに、コスト曲面［ＣＴnum−１］テーブル８０１＿ＣＴnum−１は、レコード８０１＿ＣＴnum−１＿０を含む。
【００７１】
コスト曲面テーブル６１３は、アドレス、ＳＡＤコストという２つのフィールドを含む。アドレスフィールドには、コスト曲面におけるＸ座標とＹ座標とから一意に特定できる値が格納される。ＳＡＤコストフィールドには、該当のアドレスにおけるＳＡＤコストが格納される。たとえば、レコード８０１＿０＿０は、Ｘ座標が−８であり、Ｙ座標が−８であるアドレス０のＳＡＤコストが１２８であることを示す。
【００７２】
図９は、コスト曲面［０］テーブルの記憶内容をグラフとして表示した例を示す説明図である。図９では、コスト曲面［０］テーブル８０１＿０を３Ｄグラフ９０１として表示する。なお、コスト曲面［０］は、ＳＡＤコスト＝Ｘ＾２＋Ｙ＾２で表される曲面である。また、他のコスト曲面の第１の例として、たとえば、Ｘ＾２＋Ｙ＾２に定数を加えた式により表される曲面が曲面テーブル６１３に登録される。また、他のコスト曲面の第２の例として、たとえば、コスト曲面［０］より勾配が緩やかな曲面や、コスト曲面［０］より勾配が急な曲面がコスト曲面テーブル６１３に登録される。
【００７３】
次に、図１０〜図１２を用いて、非マージモードにおける動き探索処理について、説明する。動き探索は、たとえば、六角探索、ダイアモンド探索、全探索等がある。本実施の形態では、六角探索を採用した例について説明する。六角探索に代表される追跡探索を採用した場合は、コストＦＦ６１２を上書きすることにより、ＳＡＤコストを保持するコストＦＦ６１２のレコード数を削減することができる。一方、全探索を採用した場合は、コスト最小位置が途中で上書きされる可能性があるため、コストＦＦ６１２に全探索点分のレコードを用意することになる。
【００７４】
六角探索として、符号化装置１００は、初めに７つの探索点において、ＳＡＤコストを算出する。そして、中心となる探索点のＳＡＤコストが最小値でない場合、符号化装置１００は、最小値となった探索点を中心とした新たな六角形の頂点を探索点として、ＳＡＤコストを算出する。中心となる探索点のＳＡＤコストが最小値である場合、符号化装置１００は、六角探索を終了し、十字４点探索を実行する。図１０では、符号化装置１００が六角探索を開始して、六角探索を終了するまでを説明する。
【００７５】
十字４点探索として、符号化装置１００は、六角形の中心の上下左右に位置する４つの探索点のＳＡＤコストを算出する。そして、符号化装置１００は、４つの探索点のうちＳＡＤコストが最小値となる探索点を中心としたハーフペル探索を実行する。図１１では、符号化装置１００が十字４点探索とハーフペル探索とを実行するまでを説明する。
【００７６】
ハーフペル探索後、符号化装置１００は、ハーフペル探索の探索点のうちのＳＡＤコストが最小値となる探索点を中心としたクォータペル探索を実行する。クォータペル探索後、ＳＡＤコストが最小となった位置が動き探索結果となる第１動きベクトル候補となる。図１２では、符号化装置１００がクォータペル探索を実行して第１動きベクトル候補を算出するまでを説明する。
【００７７】
図１０は、非マージモードにおける動き探索処理の一例を示す説明図（その１）である。符号化装置１００は、図１０の（Ａ）で示すように、六角探索として、初めに７つの探索点において、ＳＡＤコストを算出する。図１０の例では、符号化装置１００は、中心探索点の（３２，２４）と、周囲の探索点（３２，１６）、（３２，３２）、（４０，２０）、（４０，２８）、（２４，２０）、（２４，２８）という７つの探索点のＳＡＤコストを算出する。算出後、符号化装置１００は、探索点への動きベクトル候補のＸ座標と、Ｙ座標と、算出したＳＡＤコストとをコストＦＦ６１２の１つのレコードに格納する。図１０の例では、符号化装置１００は、７つの探索点の動きベクトル候補のＸ座標と、Ｙ座標と、算出したＳＡＤコストとを、コストＦＦ＿０〜コストＦＦ＿６に格納する。
【００７８】
ＸＹ平面１００１は、７つの探索点の位置関係と、７つの探索点のＳＡＤコストを示す。ＸＹ平面１００１と、以降に説明するＸＹ平面１００２と、ＸＹ平面１１０１と、ＸＹ平面１１０２と、ＸＹ平面１２０１とにおいて、丸記号でプロットされた探索点は、フルペル単位による探索点であることを示す。また、四角記号でプロットされた探索点は、ハーフペル単位による探索点であることを示す。さらに、三角記号でプロットされた探索点は、クォータペル単位による探索点であることを示す。また、ハッチがかかった探索点は、該当の探索において追加された探索点であることを示す。
【００７９】
ＸＹ平面１００１が示すように、７つの探索点のうちのＳＡＤコストが最小値となるＳＡＤコスト：３６の探索点は、（２４，２０）であり、中心探索点でない。したがって、符号化装置１００は、図１０の（Ｂ）で示すように、（２４，２０）を中心探索点として、（２４，１２）、（１６，１６）、（１６，２４）という新たに３つの探索点のＳＡＤコストを算出する。このように、六角形の場合、前に評価した点が含まれるため、新たにＳＡＤを計算するのは３つの探索点分となる。符号化装置１００は、３つの探索点の動きベクトル候補のＸ座標と、Ｙ座標と、算出したＳＡＤコストとを、コストＦＦ＿７〜コストＦＦ＿９に格納する。
【００８０】
ＸＹ平面１００２は、ＸＹ平面１００１の状態からさらに、３つの探索点の位置関係と、３つの探索点のＳＡＤコストを示す。ＸＹ平面１００２が示すように、中心探索点と中心探索点の周囲にある６つの探索点のうちのＳＡＤコストが最小値となるＳＡＤコスト：３６の探索点は、（２４，２０）であり、中心探索点となる。したがって、符号化装置１００は、六角探索を終了し、十字４点探索を実行する。
【００８１】
図１１は、非マージモードにおける動き探索処理の一例を示す説明図（その２）である。図１１の（Ａ）では、六角探索を終了し、十字４点探索を実行する状態を示す。十字４点探索として、符号化装置１００は、（２４，２０）を中心探索点として、（２４，１６）、（２４，２４）、（２０，２０）、（２８，２０）という新たに４つの探索点のＳＡＤコストを算出する。符号化装置１００は、４つの探索点の動きベクトル候補のＸ座標と、Ｙ座標と、算出したＳＡＤコストとを、コストＦＦ＿１０〜コストＦＦ＿１３に格納する。
【００８２】
ＸＹ平面１１０１は、ＸＹ平面１００２の状態からさらに、４つの探索点の位置関係と、４つの探索点のＳＡＤコストを示す。ＸＹ平面１１０１が示すように、中心探索点と新たな４つの探索点のうちのＳＡＤコストが最小値となるＳＡＤコスト：２８の探索点は、（２０，２０）である。
【００８３】
続けて、符号化装置１００は、図１１の（Ｂ）で示すように、（２０，２０）を中心探索点として、ハーフペル探索を実行する。具体的に、符号化装置１００は、（２０，１８）、（２０，２２）、（１８，１８）、（１８，２０）、（１８，２２）、（２２，１８）、（２２，２０）、（２２，２２）という８つの探索点のＳＡＤコストを算出する。符号化装置１００は、８つの探索点の動きベクトル候補のＸ座標と、Ｙ座標と、算出したＳＡＤコストとを、コストＦＦ＿１４〜コストＦＦ＿２１に格納する。
【００８４】
ＸＹ平面１１０２は、ＸＹ平面１１０１の状態からさらに、ハーフペル精度の８つの探索点の位置関係と、８つの探索点のＳＡＤコストを示す。ＸＹ平面１１０２が示すように、中心探索点と新たな８つの探索点のうちのＳＡＤコストが最小値となるＳＡＤコスト：１８の探索点は、（２０，２２）である。
【００８５】
図１２は、非マージモードにおける動き探索処理の一例を示す説明図（その３）である。図１２では、ハーフペル探索を終了し、クォータペル探索を実行する状態を示す。符号化装置１００は、（２０，２２）を中心探索点として、クォータペル探索を実行する。具体的に、符号化装置１００は、（２０，２１）、（２０，２３）、（１９，２１）、（１９，２２）、（１９，２３）、（２１，２１）、（２１，２２）、（２１，２３）という新たに８つの探索点のＳＡＤコストを算出する。
【００８６】
符号化装置１００は、８つの探索点の動きベクトル候補のＸ座標と、Ｙ座標と、算出したＳＡＤコストとを、コストＦＦ＿２２、コストＦＦ＿２３、コストＦＦ＿０〜コストＦＦ＿５に格納する。このように、書き込むコストＦＦ６１２のレコードが最大数になった場合、符号化装置１００は、コストＦＦ６１２のレコードを示すインデックスを０に戻し、一番古いコストを書き込んでいるコストＦＦ６１２のレコードの内容を上書きする。
【００８７】
ＸＹ平面１２０１は、ＸＹ平面１１０２の状態からさらに、クォータペル精度の８つの探索点の位置関係と、８つの探索点のＳＡＤコストを示す。ＸＹ平面１２０１が示すように、中心探索点と新たな８つの探索点のうちのＳＡＤコストが最小値となるＳＡＤコスト：９の探索点は、（２１，２３）である。したがって、符号化装置１００は、（２１，２３）を、第１動きベクトル候補に特定する。
【００８８】
次に、符号化装置１００は、コスト曲面［０］、…、コスト曲面［ＣＴnum−１］のうち、擬似ＳＡＤコストを算出するために使用するコスト曲面を選択する。図１３を用いて、コスト曲面の選択例について説明する。
【００８９】
図１３は、コスト曲面の選択例を示す説明図である。図１３では、図１２によって特定された第１動きベクトル候補（２１、２３）と、ＳＡＤコスト＝９と、図１０〜図１２で算出した候補ベクトルごとのＳＡＤコストを用いて、コスト曲面を選択する例を説明する。
【００９０】
符号化装置１００は、コスト曲面［０］〜コスト曲面［ＣＴnum−１］の各々のコスト曲面について、コストＦＦに格納されたＳＡＤコストとの近似値を算出する。図１３では、コスト曲面［０］の近似値を例に説明する。
【００９１】
表１３０１は、コスト曲面［０］の近似値の算出例を示す。符号化装置１００は、コストＦＦ＿０について、コストＦＦ＿０の（ＭＶ＿Ｘ＝１９，ＭＶ＿Ｙ＝２１）から第１動きベクトル候補の座標位置（２１，２３）を減じたＸオフセット：−２とＹオフセット：−２とを算出する。また、符号化装置１００は、コストＦＦ＿０のＳＡＤコスト＝１８から第１動きベクトル候補のＳＡＤコスト：９を減じたコストオフセット：９を算出する。
【００９２】
続けて、符号化装置１００は、コストオフセット：９から、コスト曲面［０］テーブル８０１＿０の（Ｘ，Ｙ）＝（−２，−２）のＳＡＤコスト：８の差の絶対値：１を算出する。符号化装置１００は、コストＦＦ＿１〜コストＦＦ＿２３に対してもコストＦＦ＿０と同様の処理を行い、差の絶対値を合計して、コスト曲面［０］の近似値を算出する。図１３の例では、符号化装置１００は、コスト曲面［０］の近似値：３７８を算出する。なお、コスト曲面テーブル６１３にＸオフセットとＹオフセットに対応するＳＡＤコストが格納されていない場合もある。図１３の例では、Ｘオフセットが３であり、Ｙオフセットが−１１の場合である。このとき、差の絶対値として、符号化装置１００は、コスト曲面の近似値が大きくなるような所定値を設定する。図１３の例では、所定値＝１２８とする。
【００９３】
符号化装置１００は、コスト曲面［１］〜コスト曲面［ＣＴnum−１］に対してもコスト曲面［０］と同様の処理を行い、近似値が最小のコスト曲面を選択する。
【００９４】
図１４は、マージモードにおける擬似ＳＡＤコストの算出例を示す説明図である。図１４では、コスト曲面［０］が選択された場合について、マージベクトル［０］〜マージベクトル［４］の擬似ＳＡＤコストの算出例を示す。図１４では、マージベクトル［０］が第２ベクトル候補となる場合の擬似ＳＡＤコストを図示してある。また、図１４で使用するコスト曲面［０］は、ＳＡＤコスト＝Ｘ＾２＋Ｙ＾２＋９で表される曲面とする。
【００９５】
符号化装置１００は、マージベクトル［０］がコスト曲面［０］内に収まっているかを判断する。第１動きベクトル候補が（２１，２３）であり、マージベクトル［０］が（２４、２５）であり、位置オフセットが（３，２）となるから、マージベクトル［０］は、コスト曲面［０］のＸの範囲−８〜７と、Ｙの範囲−８〜７に収まっている。マージベクトルがコスト曲面に収まっている場合、符号化装置１００は、コスト曲面［０］テーブル８０１＿０から、位置オフセットが（３，２）となるＳＡＤコスト：１３を取得し、取得した値を擬似ＳＡＤコストとする。擬似マージコストとしては、符号化装置１００は、擬似ＳＡＤコストに、マージＩＤＸコスト＝１を加算して１４を得る。
【００９６】
また、符号化装置１００は、第２動きベクトル候補としてマージベクトル［１］を選択した場合、マージベクトル［０］と同様に擬似マージコストを算出する。符号化装置１００は、マージベクトル［１］がコスト曲面［０］内に収まっているかを判断する。第１動きベクトル候補が（２１，２３）であり、マージベクトル［１］が（３１、２２）であり、位置オフセットが（１０，−１）となるから、マージベクトル［１］は、コスト曲面［０］のＸの範囲−８〜７と、Ｙの範囲−８〜７に収まっていない。そのため、符号化装置１００は、擬似マージコストを、該当のマージモードが選択されないようなＭａｘコストに設定する。Ｍａｘコストは、たとえば６５５３５とする。符号化装置１００は、マージベクトル［２］〜マージベクトル［４］についても同様に処理して、擬似マージコストを算出する。
【００９７】
このように、符号化装置１００は、マージベクトルごとに擬似マージコストを算出する。次に、図１５〜図１７を用いて、動き探索と擬似ＳＡＤコスト算出とが逐次実行される際のタイミングと、動き探索と擬似ＳＡＤコスト算出とが並列実行される際のタイミングについて説明する。図１５〜図１７では、ブロック［０］とブロック［１］とに関する処理のタイミングを、１つの処理を角丸四角形で表現して説明する。また、図１５〜図１７において、ハッチが付与されてない角丸四角形は、ブロック［０］に関する処理である。一方、ハッチが付与された角丸四角形は、ブロック［１］に関する処理である。また、図１５〜図１７において、小領域を「ＳＢ」と表示することがある。また、マージモードを、「ＭＭ」と表示することがある。
【００９８】
図１５は、動き探索と擬似ＳＡＤコスト算出とが逐次実行される際のタイミングの一例を示す説明図である。図１５では、動き探索と擬似ＳＡＤコスト算出とを逐次実行する符号化装置が、ブロック［０］とブロック［１］の動き探索と擬似ＳＡＤコスト算出を実行する。以下、図１５において、動き探索と擬似ＳＡＤコスト算出とを逐次実行する符号化装置を、「逐次符号化装置」と呼称する。図１５において、参照画メモリと、ＳＡＤ算出用回路が、逐次符号化装置内に４つあるものとする。
【００９９】
時刻ｔ０から時刻ｔ１において、逐次符号化装置は、ブロック［０］の小領域［０］動き探索処理〜小領域［３］動き探索処理を実行する。続けて、時刻ｔ１から時刻ｔ２において、逐次符号化装置は、小領域［０］のマージモード［０］のＳＡＤコスト算出処理〜マージモード［４］のＳＡＤコスト算出処理を実行する。
【０１００】
マージモードでは隣接する小領域の動きベクトルを利用するため、逐次符号化装置は、ある小領域の動きベクトルを決定した後に、次の小領域の動きベクトルを決定する。したがって、逐次符号化装置は、時刻ｔ２にて小領域［０］の動きベクトルを決定した後、時刻ｔ２から時刻ｔ３において、小領域［１］のマージモード［０］のＳＡＤコスト算出処理〜マージモード［４］のＳＡＤコスト算出処理を実行する。続けて、逐次符号化装置は、時刻ｔ３から時刻ｔ４において、小領域［２］のマージモード［０］のＳＡＤコスト算出処理〜マージモード［４］のＳＡＤコスト算出処理を実行する。さらに、逐次符号化装置は、時刻ｔ４から時刻ｔ５において、小領域［３］のマージモード［０］のＳＡＤコスト算出処理〜マージモード［４］のＳＡＤコスト算出処理を実行する。
【０１０１】
そして、時刻ｔ５から時刻ｔ６において、逐次符号化装置は、ブロック［１］の小領域［０］動き探索処理〜小領域［３］動き探索処理を実行する。もし、逐次符号化装置が、時刻ｔ２から、ブロック［１］の小領域［０］動き探索処理〜小領域［３］動き探索処理を実行しようとする場合、符号化装置は、参照画メモリと、ＳＡＤ算出用回路を７つ用意することになり、回路規模が増大してしまう。
【０１０２】
次に、図１６と図１７において、動き探索と擬似ＳＡＤコスト算出とが並列実行される際のタイミングについて説明する。図１６と図１７において、参照画メモリと、ＳＡＤ算出用回路が、符号化装置１００内に４つあるものとする。また、図１６と図１７において、コスト曲面を探索する回路と、擬似ＳＡＤコストを算出する回路が、符号化装置１００内に１つずつあるものとする。また、図１６では、コストＦＦ＿０〜コストＦＦ＿２３を１面として、符号化装置１００内に１面のコストＦＦ６１２があるものとする。一方、図１７では、符号化装置１００内に２面のコストＦＦ６１２があるものとする。
【０１０３】
図１６は、非マージモードの動き探索と擬似ＳＡＤコスト算出とが並列実行される際のタイミングの第１の例を示す説明図である。時刻ｔ０から時刻ｔ１において、符号化装置１００は、ブロック［０］の小領域［０］動き探索処理〜小領域［３］動き探索処理を実行する。続けて、時刻ｔ１から時刻ｔ２において、符号化装置１００は、小領域［０］のコスト曲面探索処理を実行する。
【０１０４】
次に、時刻ｔ２から時刻ｔ３において、符号化装置１００は、小領域［１］のコスト曲面探索処理を実行する。コスト曲面探索処理は、コストＦＦ６１２とコスト曲面テーブル６１３とを参照するが、参照画メモリを参照せず、ＳＡＤ算出用回路も使用しない。続けて、時刻ｔ３から時刻ｔ５において、符号化装置１００は、小領域［２］のコスト曲面探索処理を実行する。次に、時刻ｔ５から時刻ｔ６において、符号化装置１００は、小領域［３］のコスト曲面探索処理を実行する。
【０１０５】
また、時刻ｔ２から時刻ｔ４において、符号化装置１００は、小領域［０］のマージモード［０］の擬似ＳＡＤコスト算出処理〜マージモード［４］の擬似ＳＡＤコスト算出処理を実行する。擬似ＳＡＤコスト算出処理は、コスト曲面テーブル６１３を参照するが、参照画メモリを参照せず、ＳＡＤ算出用回路も使用しない。
【０１０６】
図１５でも説明したように、マージモードでは隣接する小領域の動きベクトルを利用するため、符号化装置１００は、ある小領域の動きベクトルを決定した後に、次の小領域の動きベクトルを決定する。したがって、符号化装置１００は、時刻ｔ４にて小領域［０］の動きベクトルを決定した後、時刻ｔ４から時刻ｔ７において、小領域［１］のマージモード［０］の擬似ＳＡＤコスト算出処理〜マージモード［４］の擬似ＳＡＤコスト算出処理を実行する。続けて、符号化装置１００は、時刻ｔ７から時刻ｔ８において、小領域［２］のマージモード［０］の擬似ＳＡＤコスト算出処理〜マージモード［４］の擬似ＳＡＤコスト算出処理を実行する。次に、符号化装置１００は、時刻ｔ８から時刻ｔ９において、小領域［３］のマージモード［０］の擬似ＳＡＤコスト算出処理〜マージモード［４］の擬似ＳＡＤコスト算出処理を実行する。
【０１０７】
ここで、コストＦＦ６１２は、コスト曲面探索処理では参照されるが、擬似ＳＡＤコスト算出処理では参照されない。したがって、符号化装置１００は、時刻ｔ６にて小領域［３］のコスト曲面探索処理の終了後、時刻ｔ６から時刻ｔ９において、ブロック［１］の小領域［０］動き探索処理〜小領域［３］動き探索処理を実行する。
【０１０８】
図１６では、時刻ｔ６から時刻ｔ９まで、符号化装置１００は、動き探索処理と、擬似ＳＡＤコスト算出処理とを並列に実行する。したがって、符号化装置１００は、参照画メモリと、ＳＡＤ算出用回路とを増大せずに、マージモードのコスト評価を高速に行うことが可能となり、リアルタイム符号化実現の簡易化を図る。
【０１０９】
図１７は、非マージモードの動き探索と擬似ＳＡＤコスト算出とが並列実行される際のタイミングの第２の例を示す説明図である。時刻ｔ０から時刻ｔ１において、符号化装置１００は、ブロック［０］の小領域［０］動き探索処理〜小領域［３］動き探索処理を実行する。続けて、時刻ｔ１から時刻ｔ２において、符号化装置１００は、小領域［０］のコスト曲面探索処理を実行する。
【０１１０】
次に、時刻ｔ２から時刻ｔ３において、符号化装置１００は、小領域［１］のコスト曲面探索処理を実行する。続けて、時刻ｔ３から時刻ｔ５において、符号化装置１００は、小領域［２］のコスト曲面探索処理を実行する。次に、時刻ｔ５から時刻ｔ７において、符号化装置１００は、小領域［３］のコスト曲面探索処理を実行する。
【０１１１】
また、時刻ｔ２から時刻ｔ４において、符号化装置１００は、小領域［０］のマージモード［０］の擬似ＳＡＤコスト算出処理〜マージモード［４］の擬似ＳＡＤコスト算出処理を実行する。続けて、時刻ｔ４から時刻ｔ８において、符号化装置１００は、小領域［１］のマージモード［０］の擬似ＳＡＤコスト算出処理〜マージモード［４］の擬似ＳＡＤコスト算出処理を実行する。次に、符号化装置１００は、時刻ｔ８から時刻ｔ１０において、小領域［２］のマージモード［０］の擬似ＳＡＤコスト算出処理〜マージモード［４］の擬似ＳＡＤコスト算出処理を実行する。次に、符号化装置１００は、時刻ｔ１０から時刻ｔ１１において、小領域［３］のマージモード［０］の擬似ＳＡＤコスト算出処理〜マージモード［４］の擬似ＳＡＤコスト算出処理を実行する。
【０１１２】
ここで、図１７における符号化装置１００はコストＦＦ６１２を２面有するため、符号化装置１００は、時刻ｔ１から時刻ｔ６において、ブロック［１］の小領域［０］動き探索処理〜小領域［３］動き探索処理を実行する。そして、時刻ｔ７にてブロック［０］の小領域［３］のコスト曲面探索処理の終了後、符号化装置１００は、時刻ｔ７から時刻ｔ９において、ブロック［１］の小領域［０］のコスト曲面探索処理を実行する。
【０１１３】
図１７では、時刻ｔ１から時刻ｔ６まで、符号化装置１００は、動き探索処理と、コスト曲面探索処理と、擬似ＳＡＤコスト算出処理とを並列に実行する。したがって、符号化装置１００は、参照画メモリと、ＳＡＤ算出用回路とを増大せず、マージモードのコスト評価を高速に行うことが可能となり、リアルタイム符号化実現の簡易化を図る。また、図１６と比較して、図１７に示す符号化装置１００は、並列実行可能な処理が、動き探索処理と、コスト曲面探索処理と、擬似ＳＡＤコスト算出処理という３つの処理に増えており、より高速にコスト評価を行うことができる。
【０１１４】
次に、図１８〜図２７を用いて、符号化装置１００が行うフローチャートについて説明する。図２０と図２５とにおいて、横二重線の記号で囲まれた箇所は、処理を並列に実行することを示す。
【０１１５】
図１８は、１ピクチャの動き探索処理手順の一例を示すフローチャートである。１ピクチャの動き探索処理は、ピクチャに含まれる各ブロックの動きベクトルを決定する処理である。
【０１１６】
符号化装置１００は、変数ＢＬＫに０を設定する（ステップＳ１８０１）。次に、符号化装置１００は、ブロック［ＢＬＫ］の動き探索処理を実行する（ステップＳ１８０２）。ブロックの動き探索処理は、図１９にて後述する。続けて、符号化装置１００は、変数ＢＬＫをインクリメントする（ステップＳ１８０３）。次に、符号化装置１００は、変数ＢＬＫがＢＬＫnum以上か否かを判断する（ステップＳ１８０４）。変数ＢＬＫがＢＬＫnum未満である場合（ステップＳ１８０４：Ｎｏ）、符号化装置１００は、ステップＳ１８０２の処理に移行する。
【０１１７】
変数ＢＬＫがＢＬＫnum以上である場合（ステップＳ１８０４：Ｙｅｓ）、符号化装置１００は、１ピクチャの動き探索処理を終了する。１ピクチャの動き探索処理を実行することにより、符号化装置１００は、ピクチャに含まれる各ブロックの動きベクトルを決定することができる。
【０１１８】
また、ステップＳ１８０２の処理について、符号化装置１００は、コストＦＦ６１２の面数とコストＦＦ６１２の使用状況と、参照画メモリと複数のＳＡＤ算出用回路との使用状況とに基づいて、並列に実行可能であれば、並列に実行してもよい。
【０１１９】
たとえば、コストＦＦ６１２が１面あるとする。このとき、あるブロックの動き探索処理内の、全ての小領域にて、図２５で示すコスト曲面の近似値算出処理が全てのコスト曲面に対して終了した場合、符号化装置１００は、あるブロックの次のブロックの動き探索処理を開始してよい。また、コストＦＦ６１２が２面あり、参照画メモリと複数のＳＡＤ算出用回路とが４個あるとする。このとき、あるブロックの動き探索処理内の、図２０で示す小領域の動き探索処理が終了して、４個の参照画メモリとＳＡＤ算出用回路とのうち使用されなくなるものがあれば、符号化装置１００は、あるブロックの次のブロックの動き探索処理を開始してよい。
【０１２０】
図１９は、ブロックの動き探索処理手順の一例を示すフローチャートである。ブロックの動き探索処理は、ブロックの動きベクトルを探索する処理である。符号化装置１００は、ブロック［ＢＬＫ］内の、複数小領域の並列探索処理を実行する（ステップＳ１９０１）。複数小領域の並列探索処理の詳細は、図２０にて後述する。次に、符号化装置１００は、小領域のインデックスとして使用する変数ＳＢを０に設定する（ステップＳ１９０２）。続けて、符号化装置１００は、動き予測モード［ＳＢ］を非マージモードに決定する（ステップＳ１９０３）。次に、符号化装置１００は、“動き予測コスト［ＳＢ］＝動きベクトルコスト＋ＳＡＤコスト”を算出する（ステップＳ１９０４）。
【０１２１】
ステップＳ１９０４において、動きベクトルコストは、図２０にて示す複数小領域の並列探索処理の内部で呼ばれる、小領域［ＳＢ］の動き探索処理にて求められた第１動きベクトル候補の符号量である。また、ＳＡＤコストは、小領域［ＳＢ］の動き探索処理にて求められた第１動きベクトル候補のＳＡＤコストである。
【０１２２】
続けて、符号化装置１００は、マージモードのインデックスとして使用する変数ＭＭを０に設定する（ステップＳ１９０５）。次に、符号化装置１００は、小領域［ＳＢ］の、擬似マージコスト［ＭＭ］算出処理を実行する（ステップＳ１９０６）。擬似マージコスト算出処理の詳細は、図２７にて後述する。続けて、符号化装置１００は、動き予測コスト［ＳＢ］が擬似マージコスト［ＭＭ］より大きいか否かを判断する（ステップＳ１９０７）。動き予測コスト［ＳＢ］が擬似マージコスト［ＭＭ］より大きい場合（ステップＳ１９０７：Ｙｅｓ）、符号化装置１００は、動き予測モード［ＳＢ］をマージモード［ＭＭ］に決定する（ステップＳ１９０８）。続けて、符号化装置１００は、動き予測コスト［ＳＢ］に擬似マージコスト［ＭＭ］の値を代入する（ステップＳ１９０９）。
【０１２３】
ステップＳ１９０９の処理終了後、または、動き予測コスト［ＳＢ］が擬似マージコスト［ＭＭ］以下である場合（ステップＳ１９０７：Ｎｏ）、符号化装置１００は、変数ＭＭをインクリメントする（ステップＳ１９１０）。続けて、符号化装置１００は、変数ＭＭがＭＭnum＋１以上であるか否かを判断する（ステップＳ１９１１）。変数ＭＭがＭＭnum＋１未満である場合（ステップＳ１９１１：Ｎｏ）、符号化装置１００は、ステップＳ１９０６の処理に移行する。変数ＭＭがＭＭnum＋１以上である場合（ステップＳ１９１１：Ｙｅｓ）、符号化装置１００は、変数ＳＢをインクリメントする（ステップＳ１９１２）。
【０１２４】
続けて、符号化装置１００は、変数ＳＢがＳＢnum以上か否かを判断する（ステップＳ１９１３）。変数ＳＢがＳＢnum未満である場合（ステップＳ１９１３：Ｎｏ）、符号化装置１００は、ステップＳ１９０３の処理に移行する。変数ＳＢがＳＢnum以上である場合（ステップＳ１９１３：Ｙｅｓ）、符号化装置１００は、ブロックの動き探索処理を終了する。ブロックの動き探索処理を終了した後、符号化装置１００は、量子化と、エントロピー符号化とを行う。ブロックの動き探索処理を実行することにより、符号化装置１００は、ブロックの最適な動きベクトルを選択することができる。
【０１２５】
図２０は、複数小領域の並列探索処理手順の一例を示すフローチャートである。複数小領域並列探索処理は、複数の小領域の動き探索とコスト曲面探索とを並列に実行する処理である。符号化装置１００は、小領域［０］の動き探索処理を実行する（ステップＳ２００１＿０）。小領域の動き探索処理の詳細は、図２１と図２２にて後述する。続けて、符号化装置１００は、小領域［０］に対するコスト曲面探索並列処理を実行する（ステップＳ２００２＿０）。小領域に対するコスト曲面探索並列処理は、図２５にて後述する。
【０１２６】
また、符号化装置１００は、ステップＳ２００１＿０とステップＳ２００２＿０との一連の処理と並列で、小領域［１］の動き探索処理を実行する（ステップＳ２００１＿１）。続けて、符号化装置１００は、小領域［１］に対するコスト曲面探索並列処理を実行する（ステップＳ２００２＿１）。このように、小領域ごとにコスト曲面探索並列処理を実行して、符号化装置１００は、小領域［ＳＢnum−１］の動き探索処理を実行する（ステップＳ２００１＿ＳＢnum−１）。続けて、符号化装置１００は、小領域［ＳＢnum−１］に対するコスト曲面探索並列処理を実行する（ステップＳ２００２＿ＳＢnum−１）。
【０１２７】
ステップＳ２００２＿０、ステップＳ２００２＿１、…、ステップＳ２００２＿ＳＢnum−１の処理終了後、符号化装置１００は、複数小領域並列探索処理を終了する。複数小領域並列探索処理を実行することにより、符号化装置１００は、複数の小領域の動きベクトルと最適なコスト曲面とを並列に探索することができる。
【０１２８】
図２１は、小領域の動き探索処理手順の一例を示すフローチャート（その１）である。小領域の動き探索処理は、対象の小領域の第１動きベクトル候補を探索する処理である。符号化装置１００は、六角探索として、中心探索点と周囲の６点に対して、初期７点のＳＡＤコストを算出する（ステップＳ２１０１）。次に、符号化装置１００は、算出した初期７点のＳＡＤコストの第１の格納処理を実行する（ステップＳ２１０２）。ＳＡＤコストの第１の格納処理の詳細は、図２３にて後述する。
【０１２９】
続けて、符号化装置１００は、中心探索点のＳＡＤコストが最小のＳＡＤコストか否かを判断する（ステップＳ２１０３）。中心探索点のＳＡＤコストが最小のＳＡＤコストでない場合（ステップＳ２１０３：Ｎｏ）、符号化装置１００は、六角探索として、追加３点のＳＡＤコストを算出する（ステップＳ２１０４）。続けて、符号化装置１００は、算出した追加３点のＳＡＤコストの第２の格納処理を実行する（ステップＳ２１０５）。ＳＡＤコストの第２の格納処理の詳細は、図２４にて後述する。
【０１３０】
次に、符号化装置１００は、中心探索点のＳＡＤコストが最小のＳＡＤコストか否かを判断する（ステップＳ２１０６）。中心探索点のＳＡＤコストが最小のＳＡＤコストでない場合（ステップＳ２１０６：Ｎｏ）、符号化装置１００は、ステップＳ２１０４の処理に移行する。
【０１３１】
中心探索点のＳＡＤコストが最小のＳＡＤコストである場合（ステップＳ２１０３：Ｙｅｓ、ステップＳ２１０６：Ｙｅｓ）、符号化装置１００は、図２２に示すステップＳ２２０１の処理に移行する。
【０１３２】
図２２は、小領域の動き探索処理手順の一例を示すフローチャート（その２）である。ステップＳ２１０３：Ｙｅｓとなった場合、または、ステップＳ２１０６：Ｙｅｓとなった場合、符号化装置１００は、十字４点探索として、中心探索点の周囲４点のＳＡＤコストを算出する（ステップＳ２２０１）。次に、符号化装置１００は、算出した周囲４点のＳＡＤコストの第２の格納処理を実行する（ステップＳ２２０２）。続けて、符号化装置１００は、周囲４点と中心探索点とのうち、ＳＡＤコストが最小となる探索点を選択する（ステップＳ２２０３）。
【０１３３】
次に、符号化装置１００は、選択した探索点を中心探索点として、ハーフペル周囲８点のＳＡＤコストを算出する（ステップＳ２２０４）。続けて、符号化装置１００は、算出した周囲８点のＳＡＤコストの第２の格納処理を実行する（ステップＳ２２０５）。次に、符号化装置１００は、周囲８点と中心探索点とのうち、ＳＡＤコストが最小となる探索点を選択する（ステップＳ２２０６）。続けて、符号化装置１００は、選択した探索点を中心探索点として、クォータペル周囲８点のＳＡＤコストを算出する（ステップＳ２２０７）。次に、符号化装置１００は、算出した周囲８点のＳＡＤコストの第２の格納処理を実行する（ステップＳ２２０８）。
【０１３４】
続けて、符号化装置１００は、周囲８点と中心探索点とのうちＳＡＤコストが最小となる探索点を、第１動きベクトル候補として、第１動きベクトル候補のＳＡＤコストを特定する（ステップＳ２２０９）。ステップＳ２２０９の処理終了後、符号化装置１００は、小領域の動き探索処理を終了する。小領域の動き探索処理を実行することにより、符号化装置１００は、小領域の第１動きベクトル候補を特定することができる。
【０１３５】
図２３は、ＳＡＤコストの第１の格納処理手順の一例を示すフローチャートである。ＳＡＤコストの第１の格納処理は、ＳＡＤコストをコストＦＦ６１２に格納する処理である。コストＦＦ６１２に格納する探索点は、１からＳＰnumまであるものとする。ＳＡＤコストの第１の格納処理がステップＳ２１０２の処理から呼ばれた場合、ＣＰnum＝７となる。
【０１３６】
符号化装置１００は、コストＦＦ６１２のインデックスとして使用する変数ＣＦを０に設定する（ステップＳ２３０１）。次に、符号化装置１００は、１つ目の探索点ＳＰを選択する（ステップＳ２３０２）。続けて、符号化装置１００は、探索点ＳＰに対する候補ベクトルとＳＡＤコストとを、コストＦＦ＿［ＣＦ］に格納する（ステップＳ２３０３）。
【０１３７】
次に、符号化装置１００は、変数ＣＦをインクリメントする（ステップＳ２３０４）。続けて、符号化装置１００は、変数ＣＦがＣＦnum以上か否かを判断する（ステップＳ２３０５）。変数ＣＦがＣＦnum以上である場合（ステップＳ２３０５：Ｙｅｓ）、符号化装置１００は、変数ＣＦを０に設定する（ステップＳ２３０６）。
【０１３８】
ステップＳ２３０６の処理終了後、または、変数ＣＦがＣＦnum未満である場合（ステップＳ２３０５：Ｎｏ）、符号化装置１００は、探索点ＳＰnumを選択したか否かを判断する（ステップＳ２３０７）。探索点ＳＰnumを選択していない場合（ステップＳ２３０７：Ｎｏ）、符号化装置１００は、次の探索点ＳＰを選択する（ステップＳ２３０８）。そして、符号化装置１００は、ステップＳ２３０３の処理に移行する。
【０１３９】
探索点ＳＰnumを選択した場合（ステップＳ２３０７：Ｙｅｓ）、符号化装置１００は、ＳＡＤコストの第１の格納処理を終了する。ＳＡＤコストの第１の格納処理を実行することにより、符号化装置１００は、ＳＡＤコストをコストＦＦ６１２に格納するとともに、コストＦＦ６１２に保持する情報を上書きすることにより、コストＦＦ６１２の回路を削減することができる。
【０１４０】
図２４は、ＳＡＤコストの第２の格納処理手順の一例を示すフローチャートである。ＳＡＤコストの第２の格納処理は、ＳＡＤコストをコストＦＦ６１２に格納する処理である。コストＦＦ６１２に格納する探索点は、１からＳＰnumまであるものとする。たとえば、ＳＡＤコストの第２の格納処理がステップＳ２１０５の処理から呼ばれた場合、ＣＰnum＝３となる。
【０１４１】
また、図２４で示すフローチャートのステップＳ２４０１〜ステップＳ２４０７の処理は、図２３で示すステップＳ２３０２〜ステップＳ２３０８の処理と等しいため、説明を省略する。ＳＡＤコストの第２の格納処理を実行することにより、符号化装置１００は、ＳＡＤコストをコストＦＦ６１２に格納するとともに、コストＦＦ６１２に保持する情報を上書きすることにより、コストＦＦ６１２の回路を削減することができる。
【０１４２】
図２５は、小領域に対するコスト曲面探索並列処理手順の一例を示すフローチャートである。コスト曲面探索並列処理は、複数のコスト曲面から、対象の小領域に最適なコスト曲面を探索する処理である。符号化装置１００は、コスト曲面［０］の近似値算出処理を実行する（ステップＳ２５０１＿０）。コスト曲面の近似値算出処理の詳細は、図２６にて後述する。
【０１４３】
また、符号化装置１００は、ステップＳ２５０１＿０の処理と並列で、コスト曲面［１］の近似値算出処理を実行する（ステップＳ２５０１＿１）。このように、コスト曲面ごとに近似値算出処理を実行して、符号化装置１００は、コスト曲面［ＣＴnum−１］の近似値算出処理を実行する（ステップＳ２５０１＿ＣＴnum−１）。
【０１４４】
ステップＳ２５０１＿０、ステップＳ２５０１＿１、…、ステップＳ２５０１＿ＣＴnum−１の処理終了後、符号化装置１００は、コスト曲面［０］の近似値，…，コスト曲面［ＣＴnum−１］の近似値のうち最小値となるコスト曲面ＣＴを特定する（ステップＳ２５０２）。続けて、符号化装置１００は、特定したコスト曲面ＣＴを、使用するコスト曲面として選択する（ステップＳ２５０３）。ステップＳ２５０３の処理終了後、符号化装置１００は、小領域に対するコスト曲面探索並列処理を終了する。小領域のコスト曲面探索並列処理を実行することにより、符号化装置１００は、対象の小領域に最適なコスト曲面を選択することができる。
【０１４５】
図２６は、コスト曲面の近似値算出処理手順の一例を示すフローチャートである。コスト曲面の近似値算出処理は、対象のコスト曲面が、コストＦＦ６１２に格納されたＳＡＤコストとの近さを示す近似値を算出する処理である。
【０１４６】
符号化装置１００は、近似値を０に設定する（ステップＳ２６０１）。次に、符号化装置１００は、コストＦＦ６１２のインデックスとして使用する変数ＣＦを０に設定する（ステップＳ２６０２）。次に、符号化装置１００は、コストＦＦ＿［ＣＦ］の（ＭＶ＿Ｘ，ＭＶ＿Ｙ）から、第１動きベクトル候補の座標位置を減じて、位置オフセット（ｘ，ｙ）を算出する（ステップＳ２６０３）。続けて、符号化装置１００は、コストＦＦ＿［ＣＦ］のＳＡＤコストから、第１動きベクトル候補のＳＡＤコストを減じて、コストオフセットを算出する（ステップＳ２６０４）。
【０１４７】
次に、符号化装置１００は、“近似値＝近似値＋｜コストオフセット−コスト曲面［ＣＴ］の［ｘ］［ｙ］のＳＡＤコスト｜”を算出する（ステップＳ２６０５）。ここで、｜ｘ｜は、ｘの絶対値である。続けて、符号化装置１００は、変数ＣＦをインクリメントする（ステップＳ２６０６）。次に、符号化装置１００は、変数ＣＦがＣＦnum以上か否かを判断する（ステップＳ２６０７）。変数ＣＦがＣＦnum未満である場合（ステップＳ２６０７：Ｎｏ）、符号化装置１００は、ステップＳ２６０３の処理に移行する。
【０１４８】
変数ＣＦがＣＦnum以上である場合（ステップＳ２６０７：Ｙｅｓ）、符号化装置１００は、近似値を出力する（ステップＳ２６０８）。ステップＳ２６０８の処理終了後、符号化装置１００は、コスト曲面の近似値算出処理を終了する。コスト曲面の近似値算出処理を実行することにより、符号化装置１００は、最適なコスト面を選択するために用いる近似値を求めることができる。
【０１４９】
図２７は、擬似マージコスト算出処理手順の一例を示すフローチャートである。擬似マージコスト算出処理は、対象のマージベクトルのコストを算出する処理である。符号化装置１００は、Ｘオフセットを、第２動きベクトル候補となるマージベクトル［ＭＭ］のＸ座標−第１動きベクトル候補のＸ座標に設定する（ステップＳ２７０１）。また、符号化装置１００は、Ｙオフセットを、マージベクトル［ＭＭ］のＹ座標−第１動きベクトル候補のＹ座標に設定する（ステップＳ２７０２）。
【０１５０】
次に、符号化装置１００は、マージベクトル［ＭＭ］が選択したコスト曲面［ＣＴ］の範囲内か否かを判断する（ステップＳ２７０３）。マージベクトル［ＭＭ］が選択したコスト曲面［ＣＴ］の範囲内である場合（ステップＳ２７０３：Ｙｅｓ）、符号化装置１００は、“擬似ＳＡＤコスト＝コスト曲面［ＣＴ］テーブル［Ｘオフセット］［Ｙオフセット］”を算出する（ステップＳ２７０４）。次に、符号化装置１００は、“擬似マージコスト＝擬似ＳＡＤコスト＋ベクトルコスト”を算出する（ステップＳ２７０５）。
【０１５１】
マージベクトル［ＭＭ］が選択したコスト曲面［ＣＴ］の範囲内でない場合（ステップＳ２７０３：Ｎｏ）、符号化装置１００は、擬似マージコストをＭａｘコストにする（ステップＳ２７０６）。ステップＳ２７０５またはステップＳ２７０６の処理終了後、符号化装置１００は、擬似マージコスト算出処理を終了する。擬似マージコスト算出処理を実行することにより、符号化装置１００は、参照画メモリと、ＳＡＤ算出用回路とを用いずに、マージモードのコストを算出することができる。
【０１５２】
図２８は、擬似ＳＡＤコストを算出する回路の一例を示す説明図である。図２８では、コスト曲面の数ＣＴnumが８である場合について説明する。減算器２８０１は、第１動きベクトル候補の周囲の探索点のＳＡＤコストから第１動きベクトル候補のＳＡＤコストを減じた値を出力する。また、減算器２８０２は、第１動きベクトル候補の周囲の探索点の座標位置から第１動きベクトル候補の座標位置を減じた値を出力する。
【０１５３】
Ｘ軸オフセット算出器２８０３とＹ軸オフセット算出器２８０４とは、それぞれ、減算器２８０２の出力結果から、Ｘ軸方向のオフセットとＹ軸方向のオフセットとを出力する。
【０１５４】
減算器２８１１＿０〜減算器２８１１＿７は、コスト曲面テーブル６１３のそれぞれから、Ｘ軸方向のオフセットとＹ軸方向のオフセットとを用いて特定されたコストと、減算器２８０１の処理結果との差の絶対値を出力する。たとえば、減算器２８１１＿０は、コスト曲面［０］テーブル８０１＿０から、Ｘ軸方向のオフセットとＹ軸方向のオフセットとを用いて特定されたコストと、減算器２８０１の処理結果との差の絶対値を出力する。
【０１５５】
加算器２８１２＿０〜加算器２８１２＿７は、それぞれ、減算器２８１１＿０〜減算器２８１１＿７の処理結果と、ＦＦ２８１３＿０〜ＦＦ２８１３＿７の値とを加算して、ＦＦ２８１３＿０〜ＦＦ２８１３＿７に格納する。たとえば、加算器２８１２＿０は、減算器２８１１＿０の処理結果と、ＦＦ２８１３＿０の値を加算して、ＦＦ２８１３＿０に格納する。
【０１５６】
比較器２８１４は、ＦＦ２８１３＿０〜ＦＦ２８１３＿７の値を比較して、最小の値を格納したコスト曲面の識別番号を出力する。比較器２８１４により、符号化装置１００は、コスト曲面［０］〜コスト曲面［７］のうち、最適なコスト曲面を選択したことになる。
【０１５７】
減算器２８２１は、複数のマージベクトルから選ばれた第２動きベクトル候補の座標位置から、第１動きベクトル候補の座標位置を減じた値を出力する。Ｘ軸オフセット算出器２８２２とＹ軸オフセット算出器２８２３とは、それぞれ、減算器２８２１の出力結果から、Ｘ軸方向のオフセットとＹ軸方向のオフセットとを出力する。
【０１５８】
選択器２８２４は、コスト曲面［０］テーブル８０１＿０〜コスト曲面［７］テーブル８０１＿７から、Ｘ軸方向のオフセットとＹ軸方向のオフセットとを用いて特定された各ＳＡＤコストのうち、比較器２８１４の出力結果となるコスト曲面のＳＡＤコストを選択する。
【０１５９】
加算器２８２５は、選択器２８２４の出力結果と第１動きベクトル候補のＳＡＤコストとを加算した値を出力する。出力される値が擬似ＳＡＤコストとなる。
【０１６０】
以上説明したように、符号化装置１００によれば、動き探索となる非マージモードのＳＡＤコストの結果を用いて、マージモードのＳＡＤコストを予測した擬似ＳＡＤコストを算出する。これにより、符号化装置１００は、マージモードの実行にＳＡＤ算出用回路と参照画メモリとを使用しなくてよくなり、回路規模の増大化を抑制するとともに、符号化処理の高速化を図ることができる。また、擬似ＳＡＤコストは、動き探索途中のＳＡＤコストの結果が格納されたコストＦＦ６１２の記憶内容から予測された値である。コストＦＦ６１２は、ＳＡＤコストが最小となった探索点や、ＳＡＤコストが最小となった探索点の周囲の輝度勾配やエッジ情報が含まれており、マージモードのＳＡＤコストとほぼ変わらない精度を維持することができる。
【０１６１】
また、符号化装置１００によれば、コスト曲面テーブル６１３に記憶された複数のコスト曲面の各々とコストＦＦ６１２の記憶内容とに基づいて、コスト曲面テーブル６１３から選択した最適なコスト曲面から、擬似ＳＡＤコストを算出してもよい。これにより、符号化装置１００は、最適なコスト曲面を選択することにより、擬似ＳＡＤコストの精度低下を抑制することができる。また、擬似ＳＡＤコストは、コスト曲面テーブル６１３を一回参照するだけで算出することができるため、ＳＡＤコストの算出と比較して処理サイクルを削減することができる。
【０１６２】
また、符号化装置１００によれば、動きベクトル候補となるベクトルの座標位置とパラメータを用いてベクトルの評価値を表す関数モデルに、コストＦＦ６１２の記憶内容を代入してパラメータの値を決定する。そして、符号化装置１００は、パラメータの値を用いた関数モデルに、第２動きベクトル候補の座標位置を代入して擬似ＳＡＤコストを算出してもよい。これにより、符号化装置１００は、コスト曲面テーブル６１３を用意せずに、関数モデルにより擬似ＳＡＤコストの精度低下を抑制することができる。
【０１６３】
また、符号化装置１００によれば、候補ベクトルごとのＳＡＤコストのうち最小値となる候補ベクトルから所定距離内にある候補ベクトルごとのＳＡＤコストを算出してコストＦＦ６１２の記憶内容を上書きしてもよい。これにより、符号化装置１００は、コストＦＦの回路を削減することができる。
【０１６４】
なお、本実施の形態で説明した符号化方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本符号化プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本符号化プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１６５】
また、本実施の形態で説明した符号化装置１００は、スタンダードセルやストラクチャードＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの特定用途向けＩＣ（以下、単に「ＡＳＩＣ」と称す。）やＦＰＧＡなどのＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）によっても実現することができる。具体的には、たとえば、上述した符号化装置１００の第１の算出部６０１〜動きベクトル決定部６０６と記憶部６１１とをＨＤＬ記述によって機能定義し、ＨＤＬ記述を論理合成してＡＳＩＣやＰＬＤに与えることにより、符号化装置１００を製造することができる。
【０１６６】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１６７】
（付記１）原画像が分割された複数のブロックのうちの符号化対象となる対象ブロックと、前記対象ブロックの動きベクトル候補となる各候補ベクトルが示す参照画像上の参照ブロックとに基づいて、前記候補ベクトルごとの評価値を算出して記憶部に格納する第１の算出部と、
前記第１の算出部によって前記記憶部に格納された前記候補ベクトルごとの評価値に基づいて、前記対象ブロックの第１動きベクトル候補の評価値を特定する特定部と、
前記複数のブロックのうちの前記対象ブロックに隣接する隣接ブロックごとの動きベクトルから選択された前記対象ブロックの第２動きベクトル候補と前記候補ベクトルごとの評価値とに基づいて、前記第２動きベクトル候補の評価値を算出する第２の算出部と、
前記特定部によって特定された前記第１動きベクトル候補の評価値と、前記第２の算出部によって算出された前記第２動きベクトル候補の評価値とに基づいて、前記第１動きベクトル候補または前記第２動きベクトル候補のいずれか一方を、前記対象ブロックの動きベクトルに決定する動きベクトル決定部と、
を有することを特徴とする符号化装置。
【０１６８】
（付記２）前記記憶部は、
前記対象ブロックの動きベクトル候補となるベクトルが示す前記参照画像上の座標位置を表す第１の軸および第２の軸と、前記ベクトルの評価値を表す第３の軸とを有する空間座標系において、前記対象ブロックの動きベクトル候補となるベクトルごとの評価値を配置した際に形成される面を表す面データを複数記憶しており、
前記記憶部に記憶された複数の面データの各々と前記候補ベクトルごとの評価値とに基づいて、前記複数の面データからいずれかの面データを選択する選択部を有し、
前記第２の算出部は、
前記第２動きベクトル候補と前記選択部によって選択された前記いずれかの面データとに基づいて、前記第２動きベクトル候補の評価値を算出することを特徴とする付記１に記載の符号化装置。
【０１６９】
（付記３）前記対象ブロックの動きベクトル候補となるベクトルが示す前記参照画像上の座標位置とパラメータとを用いて前記ベクトルの評価値を表す関数モデルに、前記候補ベクトルごとの座標位置と前記候補ベクトルごとの評価値とを代入することにより、前記パラメータの値を決定するパラメータ決定部を有し、
前記第２の算出部は、
前記パラメータ決定部によって決定された前記パラメータの値を用いた前記関数モデルに、前記第２動きベクトル候補の座標位置を代入することにより、前記第２動きベクトル候補の評価値を算出することを特徴とする付記１または２に記載の符号化装置。
【０１７０】
（付記４）前記第１の算出部は、
算出した前記候補ベクトルごとの評価値のうち最小値となる候補ベクトルから所定距離内にある候補ベクトルごとの評価値を算出して前記記憶部の記憶内容を上書きすることを特徴とする付記１〜３のいずれか一つに記載の符号化装置。
【０１７１】
（付記５）原画像が分割された複数のブロックのうちの符号化対象となる対象ブロックと、前記対象ブロックの動きベクトル候補となる各候補ベクトルが示す参照画像上の参照ブロックとに基づいて、前記候補ベクトルごとの評価値を算出して記憶部に格納する第１の算出部と、
前記第１の算出部によって前記記憶部に格納された前記候補ベクトルごとの評価値に基づいて、前記対象ブロックの第１動きベクトル候補の評価値を特定する特定部と、
前記複数のブロックのうちの前記対象ブロックに隣接する隣接ブロックごとの動きベクトルから選択された前記対象ブロックの第２動きベクトル候補と前記候補ベクトルごとの評価値とに基づいて、前記第２動きベクトル候補の評価値を算出する第２の算出部と、
前記特定部によって特定された前記第１動きベクトル候補の評価値と、前記第２の算出部によって算出された前記第２動きベクトル候補の評価値とに基づいて、前記第１動きベクトル候補または前記第２動きベクトル候補のいずれか一方を、前記対象ブロックの動きベクトルに決定する動きベクトル決定部と、
を有するコンピュータを含むことを特徴とするコンピュータシステム。
【０１７２】
（付記６）コンピュータが、
原画像が分割された複数のブロックのうちの符号化対象となる対象ブロックと、前記対象ブロックの動きベクトル候補となる各候補ベクトルが示す参照画像上の参照ブロックとに基づいて、前記候補ベクトルごとの評価値を算出して記憶部に格納し、
前記記憶部に格納した前記候補ベクトルごとの評価値に基づいて、前記対象ブロックの第１動きベクトル候補の評価値を特定し、
前記複数のブロックのうちの前記対象ブロックに隣接する隣接ブロックごとの動きベクトルから選択された前記対象ブロックの第２動きベクトル候補と前記候補ベクトルごとの評価値とに基づいて、前記第２動きベクトル候補の評価値を算出し、
特定した前記第１動きベクトル候補の評価値と、算出した前記第２動きベクトル候補の評価値とに基づいて、前記第１動きベクトル候補または前記第２動きベクトル候補のいずれか一方を、前記対象ブロックの動きベクトルに決定する、
処理を実行することを特徴とする符号化方法。
【０１７３】
（付記７）コンピュータに、
原画像が分割された複数のブロックのうちの符号化対象となる対象ブロックと、前記対象ブロックの動きベクトル候補となる各候補ベクトルが示す参照画像上の参照ブロックとに基づいて、前記候補ベクトルごとの評価値を算出して記憶部に格納し、
前記記憶部に格納した前記候補ベクトルごとの評価値に基づいて、前記対象ブロックの第１動きベクトル候補の評価値を特定し、
前記複数のブロックのうちの前記対象ブロックに隣接する隣接ブロックごとの動きベクトルから選択された前記対象ブロックの第２動きベクトル候補と前記候補ベクトルごとの評価値とに基づいて、前記第２動きベクトル候補の評価値を算出し、
特定した前記第１動きベクトル候補の評価値と、算出した前記第２動きベクトル候補の評価値とに基づいて、前記第１動きベクトル候補または前記第２動きベクトル候補のいずれか一方を、前記対象ブロックの動きベクトルに決定する、
処理を実行させることを特徴とする符号化プログラム。
【０１７４】
（付記８）原画像が分割された複数のブロックのうちの符号化対象となる対象ブロックと、前記対象ブロックの動きベクトル候補となる各候補ベクトルが示す参照画像上の参照ブロックとに基づいて、前記候補ベクトルごとの評価値を算出して記憶部に格納し、
前記記憶部に格納した前記候補ベクトルごとの評価値に基づいて、前記対象ブロックの第１動きベクトル候補の評価値を特定し、
前記複数のブロックのうちの前記対象ブロックに隣接する隣接ブロックごとの動きベクトルから選択された前記対象ブロックの第２動きベクトル候補と前記候補ベクトルごとの評価値とに基づいて、前記第２動きベクトル候補の評価値を算出し、
特定した前記第１動きベクトル候補の評価値と、算出した前記第２動きベクトル候補の評価値とに基づいて、前記第１動きベクトル候補または前記第２動きベクトル候補のいずれか一方を、前記対象ブロックの動きベクトルに決定する、
処理をコンピュータに実行させる符号化プログラムを記録したことを特徴とする記録媒体。
【符号の説明】
【０１７５】
１００  符号化装置
２０１  ＣＰＵ
２０２  ＲＯＭ
２０３  ＲＡＭ
６０１  第１の算出部
６０２  特定部
６０３  パラメータ決定部
６０４  選択部
６０５  第２の算出部
６０６  動きベクトル決定部
６１１  記憶部
６１２  コストＦＦ
６１３  コスト曲面テーブル
【図１】
2014183339.tif 000003
【図２】
2014183339.tif 000004
【図３】
2014183339.tif 000005
【図４】
2014183339.tif 000006
【図５】
2014183339.tif 000007
【図６】
2014183339.tif 000008
【図７】
2014183339.tif 000009
【図８】
2014183339.tif 000010
【図９】
2014183339.tif 000011
【図１０】
2014183339.tif 000012
【図１１】
2014183339.tif 000013
【図１２】
2014183339.tif 000014
【図１３】
2014183339.tif 000015
【図１４】
2014183339.tif 000016
【図１５】
2014183339.tif 000017
【図１６】
2014183339.tif 000018
【図１７】
2014183339.tif 000019
【図１８】
2014183339.tif 000020
【図１９】
2014183339.tif 000021
【図２０】
2014183339.tif 000022
【図２１】
2014183339.tif 000023
【図２２】
2014183339.tif 000024
【図２３】
2014183339.tif 000025
【図２４】
2014183339.tif 000026
【図２５】
2014183339.tif 000027
【図２６】
2014183339.tif 000028
【図２７】
2014183339.tif 000029
【図２８】
2014183339.tif 000030