(57)【要約】【課題】消費電力を増加させることや回路規模を増大させることなく、小数精度の動きベクトルを検出することができる動きベクトル検出装置を提供する。【解決手段】整数精度の動きベクトルにより特定される画像ブロックに含まれる整数位置の画素の周囲に位置する小数位置の画素から構成される小数位置の画像ブロックのうち、探索領域画像データメモリ１０２が記憶している画素値のみを用いて画素値を算出できる小数位置の画素から構成される小数位置の画像ブロックのみおよび前記整数精度の動きベクトルにより特定される整数位置の画像ブロックを探索候補として動きベクトルを検出する小数精度動きベクトル検出部１０４および動きベクトル検出制御部１０５とを備える。【選択図】図１
2007129370.tif 000002
【特許請求の範囲】
【請求項１】
符号化の対象となる画像に含まれる符号化対象ブロックの動きベクトルを検出する動きベクトル検出装置であって、
探索領域に含まれる画素の画素値を記憶している画像記憶手段と、
前記符号化対象ブロックの整数精度の動きベクトルを検出する第１検出手段と、
前記整数精度の動きベクトルにより特定される画像ブロックに含まれる整数位置の画素の周囲に位置する小数位置の画素から構成される小数位置の画像ブロックのうち、前記画像記憶手段が記憶している画素値のみを用いて画素値を算出できる小数位置の画素から構成される小数位置の画像ブロックのみおよび前記整数精度の動きベクトルにより特定される整数位置の画像ブロックを探索候補として動きベクトルを検出する第２検出手段とを備える
ことを特徴とする動きベクトル検出装置。
【請求項２】
前記第２検出手段は、さらに、符号化対象ブロックに対して前記第１検出手段が検出する整数精度の動きベクトルにより特定される画像ブロックに含まれる画素の周囲に位置する小数位置の画素の画素値の算出に、前記画像記憶手段が記憶している画像領域の外の画素の画素値が必要な場合、当該小数位置の画素を含む画像ブロックを前記探索候補から除外する
ことを特徴とする請求項１に記載の動きベクトル検出装置。
【請求項３】
前記第２検出手段は、符号化対象ブロックに対して前記第１検出手段が検出する整数精度の動きベクトルにより特定される画像ブロックに含まれる画素の周囲に位置する小数位置の画素の画素値の算出に、前記画像記憶手段が記憶している画像領域の外の画素の画素値が必要な場合、さらに、当該符号化対象ブロックについて、すべての前記小数位置の画像ブロックを前記探索候補から除外する
ことを特徴とする請求項１または請求項２に記載の動きベクトル検出装置。
【請求項４】
前記第２検出手段は、符号化対象ブロックに対して前記第１検出手段が検出する整数精度の動きベクトルにより特定される画像ブロックに含まれる画素の周囲に位置する小数位置の画素の画素値の算出に、前記画像記憶手段が記憶している画像領域の外の画素の画素値が必要な場合、さらに、当該符号化対象ブロックについて、すべての前記小数位置の画像ブロックおよび当該整数位置の画像ブロックを前記探索候補から除外する
ことを特徴とする請求項１または請求項２に記載の動きベクトル検出装置。
【請求項５】
前記第２検出手段は、さらに、符号化対象ブロックに対して前記第１検出手段が検出する整数精度の動きベクトルにより特定される画像ブロックに含まれる画素の周囲に位置する小数位置の画素の画素値の算出に、前記画像記憶手段が記憶している画像領域の外の画素の画素値が必要な場合、当該小数位置の画素の画素値を、前記画像記憶手段が記憶している画素値のみから算出する
ことを特徴とする請求項１に記載の動きベクトル検出装置。
【請求項６】
前記第２検出手段は、さらに、符号化対象ブロックに対して前記第１検出手段が検出する整数精度の動きベクトルにより特定される画像ブロックに含まれる画素の周囲に位置する小数位置の画素の画素値の算出に、前記画像記憶手段が記憶している画像領域の外の画素の画素値が必要な場合、当該小数位置の画素の画素値の算出に用いる画素数を、前記画像記憶手段が記憶している画素値から取得できる画素数に減らすことにより前記小数位置の画素値を算出する
ことを特徴とする請求項５に記載の動きベクトル検出装置。
【請求項７】
前記第２検出手段は、さらに、符号化対象ブロックに対して前記第１検出手段が検出する整数精度の動きベクトルにより特定される画像ブロックに含まれる画素の周囲に位置する小数位置の画素の画素値の算出に、前記画像記憶手段が記憶している画像領域の外の画素の画素値が必要な場合、当該小数位置の画素値を算出するために必要な、前記画像記憶手段が記憶している領域の外に位置する画素の画素値に、当該画像領域の外に位置する画素の最も近くに位置する前記画像領域内の画素値を代用して前記小数位置の画素値を算出する
ことを特徴とする請求項５に記載の動きベクトル検出装置。
【請求項８】
前記第２検出手段は、さらに、符号化対象ブロックに対して前記第１検出手段が検出する整数精度の動きベクトルにより特定される画像ブロックに含まれる画素の周囲に位置する小数位置の画素の画素値の算出に、前記画像記憶手段が記憶している画像領域の外の画素の画素値が必要な場合、当該小数位置の画素値を算出するために必要な、前記画像記憶手段が記憶している画像領域の外に位置する画素の画素値に、当該領域の外に位置する画素と当該画素に最も近い前記画像領域の境界を挟んで線対称の位置に示される画素値を代用して前記小数位置の画素値を算出する
ことを特徴とする請求項５に記載の動きベクトル検出装置。
【請求項９】
符号化の対象となる画像に含まれる符号化対象ブロックの動きベクトルを検出する動きベクトル検出方法であって、
前記符号化対象ブロックの整数精度の動きベクトルを検出する第１検出ステップと、
前記整数精度の動きベクトルにより特定される画像ブロックに含まれる整数位置の画素の周囲に位置する小数位置の画素から構成される小数位置の画像ブロックのうち、前記画像記憶手段が記憶している画素値のみを用いて画素値を算出できる小数位置の画素から構成される小数位置の画像ブロックのみおよび前記整数精度の動きベクトルにより特定される整数位置の画像ブロックを探索候補として動きベクトルを検出する第２検出ステップとを含む
ことを特徴とする動きベクトル検出方法。
【請求項１０】
符号化の対象となる画像に含まれる符号化対象ブロックの動きベクトルを検出する集積回路であって、
探索領域の画素値を記憶している画像記憶手段と、
前記符号化対象ブロックの整数精度の動きベクトルを検出する第１検出手段と、
前記整数精度の動きベクトルにより特定される画像ブロックに含まれる整数位置の画素の周囲に位置する小数位置の画素から構成される小数位置の画像ブロックのうち、前記画像記憶手段が記憶している画素値のみを用いて画素値を算出できる小数位置の画素から構成される小数位置の画像ブロックのみおよび前記整数精度の動きベクトルにより特定される整数位置の画像ブロックを探索候補として動きベクトルを検出する第２検出手段とを備える
ことを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像を光ディスク、磁気ディスクあるいはフラッシュメモリ等の記憶メディア上に圧縮記録する画像圧縮符号化装置において、符号化対象ピクチャに含まれる符号化対象ブロックの動きベクトルを検出する装置に関するものであり、特にＨ．２６４符号化方式の符号化装置における動きベクトルを検出する装置に関する。
【背景技術】
【０００２】
半導体技術等の進歩によって、動画像を圧縮するための符号化技術が家庭用のビデオ記録機器に導入されている。特に近年は、通信インフラのブロードバンド化、記憶メディアの大容量化により、ＨＤ（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ）画像での映像の蓄積、配信、編集が求められるようになっており、動画像を圧縮するための符号化技術はますます重要になってきている。
【０００３】
動画像を圧縮するための符号化技術の一つに、ピクチャ間の動きベクトルを利用した動き補償がある。ＭＰＥＧ１、ＭＰＥＧ２では１／２画素精度の動き補償が導入され、小数位置の画素値は周囲の整数位置の画素値からバイリニアフィルタを用いて求める（例えば、非特許文献１参照）。また、Ｈ．２６４／ＡＶＣでは１／４画素精度の動き補償が導入され、１／２位置の画素値については６ＴＡＰフィルタを用いて、１／４位置の画素値についてはバイリニアフィルタを用いて求める（例えば、非特許文献２参照）。
【０００４】
動きベクトル検出は一般に、外部メモリに符号化ピクチャおよび参照ピクチャの画像データを格納し、内部メモリに動きベクトル検出用の符号化ブロックの画像データと探索領域の画像データを転送して動きベクトルを検出する。探索領域の境界付近に位置する小数位置の画素値を求める場合、探索領域外の画素値を利用する。小数位置の画素値を求める際に探索領域外の画素値を利用する具体例について、図１１を参照して説明する。
【０００５】
図１１は、探索領域内の画素値により、算出できる小数位置の画素値および算出できない小数位置の画素値の位置関係を示す図である。図１１の実線の「○」で示す位置は探索領域内の整数位置であり、「△」および「×」で示す位置は探索領域内の小数位置であり、点線の「○」で示す位置は探索領域外の整数位置である。小数位置のうち「△」が示す位置は、探索領域内の整数位置の画素値から６ＴＡＰフィルタを用いて画素値を算出できる位置を示す。小数位置のうち「×」が示す位置は、探索領域内の整数位置の画素値から６ＴＡＰフィルタを用いて画素値を算出することができず、６ＴＡＰフィルタを用いた画素値を算出するために探索領域外の画素値の取得が必要となる位置を示す。
【０００６】
例えば、a(1,4)の画素値を計算する場合、a(-4,4)、a(-2,4)、a(0,4)、a(2,4)、a(4,4)、a(6,4)の画素値が必要となる。この６点のうちa(-4,4)およびa(-2,4)については、探索領域外の画素値であるため、外部メモリが記憶する画素値を利用する。
【非特許文献１】「ＩＴＵ−Ｔ  Ｒｅｃｏｍｍｅｎｄａｔｉｏｎ  Ｈ．２６２」
【非特許文献２】「Ｄｒａｆｔ  ｏｆ  Ｖｅｒｓｉｏｎ４  ｏｆ  Ｈ．２６４／ＡＶＣ」
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、探索領域外の画素値を利用して探索領域内の小数位置の画素値を求める場合に、小数位置の画素値の計算に必要となる領域外の画素値を外部メモリから取得すると、外部メモリから内部メモリへのデータの転送を行うため、メモリバンド幅が増加し、消費電力が増加するという問題がある。
【０００８】
また、探索領域外の画素値を利用して探索領域内の小数位置の画素値を求めるために、内部メモリを増やして、小数位置の画素値の計算に必要となる画素値を保持しておくと、内部メモリの記憶容量を増やす必要があるため、回路規模が増加するという問題がある。
【０００９】
特にこれらの問題は、Ｈ．２６４／ＭＰＥＧ４  ＡＶＣでの動き補償において深刻になる。すなわち、ＭＰＥＧ１、ＭＰＥＧ２における動き補償では、バイリニアフィルタが用いられているため、小数位置の画素値の算出に必要となる探索領域外の画素値は、左右１画素、上下１ライン分だけにすぎない。しかしながら、Ｈ．２６４／ＭＰＥＧ４  ＡＶＣにおける動き補償では、に６ＴＡＰフィルタを用いるため、小数位置の画素値の算出に必要となる探索領域外の画素値は、左右３画素分、上下３ライン分となる。
【００１０】
さらに、これらの問題は、ＨＤ画像の画像符号化処理において深刻になる。なぜなら、ＨＤ画像の画像符号化処理での探索領域は、ＳＤ（Ｓｔａｎｄａｒｄ  Ｄｅｆｉｎｉｔｉｏｎ）画像での探索領域よりも広くする必要があるからである。
【００１１】
本発明はかかる問題を解決するためになされたものであり、消費電力を増加させることや回路規模を増大させることなく、小数精度の動きベクトルを検出することができる動きベクトル検出装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するために、本発明に係る動きベクトル検出装置は、符号化の対象となる画像に含まれる符号化対象ブロックの動きベクトルを検出する動きベクトル検出装置であって、探索領域に含まれる画素の画素値を記憶している画像記憶手段と、前記符号化対象ブロックの整数精度の動きベクトルを検出する第１検出手段と、前記整数精度の動きベクトルにより特定される画像ブロックに含まれる整数位置の画素の周囲に位置する小数位置の画素から構成される小数位置の画像ブロックのうち、前記画像記憶手段が記憶している画素値のみを用いて画素値を算出できる小数位置の画素から構成される小数位置の画像ブロックのみおよび前記整数精度の動きベクトルにより特定される整数位置の画像ブロックを探索候補として動きベクトルを検出する第２検出手段とを備える。
【００１３】
これにより、小数精度の動きベクトルを検出する場合、内部メモリが記憶している画素値のみを使用するため、消費電力の増加や回路規模の増大をさせることなく動きベクトルを検出することが可能となる。
【００１４】
好ましくは、前記第２検出手段は、さらに、符号化対象ブロックに対して前記第１検出手段が検出する整数精度の動きベクトルにより特定される画像ブロックに含まれる画素の周囲に位置する小数位置の画素の画素値の算出に、前記画像記憶手段が記憶している画像領域の外の画素の画素値が必要な場合、当該小数位置の画素を含む画像ブロックを前記探索候補から除外する。
【００１５】
また、前記第２検出手段は、符号化対象ブロックに対して前記第１検出手段が検出する整数精度の動きベクトルにより特定される画像ブロックに含まれる画素の周囲に位置する小数位置の画素の画素値の算出に、前記画像記憶手段が記憶している画像領域の外の画素の画素値が必要な場合、さらに、当該符号化対象ブロックについて、すべての前記小数位置の画像ブロックを前記探索候補から除外する。
【００１６】
また、前記第２検出手段は、符号化対象ブロックに対して前記第１検出手段が検出する整数精度の動きベクトルにより特定される画像ブロックに含まれる画素の周囲に位置する小数位置の画素の画素値の算出に、前記画像記憶手段が記憶している画像領域の外の画素の画素値が必要な場合、さらに、当該符号化対象ブロックについて、すべての前記小数位置の画像ブロックおよび当該整数位置の画像ブロックを前記探索候補から除外する。
【００１７】
このように、記憶装置が記憶している領域外の画素の画素値が、補間による画素値の算出に必要となる小数位置の画素の画素値は、動きベクトルを検出するための探索候補に含まれない。これにより、小数精度の動きベクトルを検出する場合、記憶装置が記憶している画素値のみを使用するため、消費電力の増加や回路規模の増大をさせることなく動きベクトルを検出することが可能となる。
【００１８】
好ましくは、前記第２検出手段は、さらに、符号化対象ブロックに対して前記第１検出手段が検出する整数精度の動きベクトルにより特定される画像ブロックに含まれる画素の周囲に位置する小数位置の画素の画素値の算出に、前記画像記憶手段が記憶している画像領域の外の画素の画素値が必要な場合、当該小数位置の画素の画素値を、前記画像記憶手段が記憶している画素値のみから算出する。
【００１９】
このように、記憶装置が記憶している画像領域外の画素の画素値が補間計算のために必要な小数位置の画素の画素値は、記憶装置が記憶している画素の画素値を補間することにより算出される。これにより、記憶装置が記憶している画素値のみを使用して、探索領域内の全ての小数位置の画素を含む画像ブロックを探索候補とすることができる。そのため、探索領域画像データメモリを増やすことなく動きベクトル検出の探索領域を拡大することができるため、消費電力を増加させることや回路規模を増大させることなく、符号化効率の向上を図ることが可能となる。
【００２０】
さらに好ましくは、前記第２検出手段は、さらに、符号化対象ブロックに対して前記第１検出手段が検出する整数精度の動きベクトルにより特定される画像ブロックに含まれる画素の周囲に位置する小数位置の画素の画素値の算出に、前記画像記憶手段が記憶している画像領域の外の画素の画素値が必要な場合、当該小数位置の画素の画素値の算出に用いる画素数を、前記画像記憶手段が記憶している画素値のみから取得できる画素数に減らすことにより前記小数位置の画素値を算出する。
【００２１】
また、前記第２検出手段は、さらに、符号化対象ブロックに対して前記第１検出手段が検出する整数精度の動きベクトルにより特定される画像ブロックに含まれる画素の周囲に位置する小数位置の画素の画素値の算出に、前記画像記憶手段が記憶している画像領域の外の画素の画素値が必要な場合、当該小数位置の画素値を算出するために必要な、前記画像記憶手段が記憶している領域の外に位置する画素の画素値に、当該画像領域の外に位置する画素の最も近くに位置する前記画像領域内の画素値を代用して前記小数位置の画素値を算出する。
【００２２】
また、前記第２検出手段は、さらに、符号化対象ブロックに対して前記第１検出手段が検出する整数精度の動きベクトルにより特定される画像ブロックに含まれる画素の周囲に位置する小数位置の画素の画素値の算出に、前記画像記憶手段が記憶している画像領域の外の画素の画素値が必要な場合、当該小数位置の画素値を算出するために必要な、前記画像記憶手段が記憶している画像領域の外に位置する画素の画素値に、当該領域の外に位置する画素と当該画素に最も近い前記画像領域の境界を挟んで線対称の位置に示される画素値を代用して前記小数位置の画素値を算出する。
【００２３】
これらの方法によって、本来探索領域外の画素値が必要な小数位置の画素値を補間計算することができるため、回路規模や消費電力を増加させることなく動きベクトル検出の探索領域を拡大することができ、符号化効率の向上を図ることが可能となる。
【００２４】
なお、本発明は、このような動きベクトル検出装置として実現することができるだけでなく、このような動きベクトル検出装置が備える特徴的な手段をステップとする動きベクトル検出方法として実現したり、それらのステップをコンピュータに実行させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、ＣＤ−ＲＯＭ等の記録媒体やインターネット等の伝送媒体を介して配信することができるのは言うまでもない。
【発明の効果】
【００２５】
本発明によると、画像符号化装置の回路規模を増大させることや消費電力を増加させることなく、符号化効率の向上を図ることができる。
【発明を実施するための最良の形態】
【００２６】
以下、図面を参照して本発明の実施の形態を説明する。
図１は、本発明の実施の形態に係る動きベクトル検出装部を備えた動画像符号化装置の構成を示すブロック図である。
【００２７】
動画像符号化装置１００は、入力される動画像を符号化する装置であり、図１に示すようにピクチャ画像データメモリ１０１、動きベクトル検出部１０７および符号化部１０６を備える。
【００２８】
ピクチャ画像データメモリ１０１は、符号化対象ピクチャおよび参照ピクチャの画像データを記憶している。符号化対象ピクチャの画像データは、符号化の対象となる画面の画像データである。また、参照ピクチャの画像データは、動きベクトルの検出の際に参照される画面の画像データであり、ローカルデコードされた画面の画像データである。例えば、符号化対象ピクチャおよび参照ピクチャは、ともに１９２０画素×１０８８画素で構成される画面である。また、画像データは、画面に含まれる画素の画素値である。
【００２９】
符号化部１０６は、動画像をブロック単位で符号化し、符号化されたストリームを出力する。符号化部１０６は、入力画像、ローカルデコード画面の画像データおよび動きベクトル検出部１０７により検出された動きベクトルを受け取る。これらを受けた符号化部１０６は、ローカルデコード画面の画像データおよび動きベクトル検出部１０７により検出された動きベクトルから、ブロック単位で動き補償をした予測画像を生成し、その予測画像と入力画像との差分の画像データおよび動きベクトルの符号化処理を行い、符号化されたストリームを出力する。
【００３０】
動きベクトル検出部１０７は、符号化対象ブロックの動きベクトルを検出する部位である。動きベクトル検出部１０７は、探索領域画像データメモリ１０２、整数精度動きベクトル検出部１０３、小数精度動きベクトル検出部１０４および動きベクトル検出制御部１０５を備える。
【００３１】
探索領域画像データメモリ１０２は、探索領域に含まれる画素の画素値を記憶している画像記憶手段であって、本実施の形態に係る探索領域画像データメモリ１０２は、符号化対象ブロックに含まれる画素の画素値をも記憶している。本実施の形態において符号化対象ブロックおよび探索領域の画像データは、ともにピクチャ画像データメモリ１０１から転送される。
【００３２】
符号化対象ブロックは、動き補償の対象となる画像の単位であり、符号化対象ピクチャに含まれる画像の一部である。符号化対象ブロックは、例えば、１６画素×１６画素で構成される。
【００３３】
探索領域は、動き補償において探索を行う領域であり、参照ピクチャに含まれる画像の一部である。探索領域画像データメモリ１０２が記憶している画像データは、符号化対象ブロックの動きベクトルを検出するための探索の対象である探索領域の画像データを含む。
【００３４】
ここで、図３は、探索領域画像データメモリ１０２が記憶している画像と参照ピクチャ３０１との関係の第１の例を示す図である。
【００３５】
図３の斜線部は探索領域３０２を示し、参照ピクチャ３０１の一部である。また図３の黒い四角は、符号化対象ブロック３０３を示し、符号化対象ピクチャ３０４の一部である。本実施の形態に係る探索領域画像データメモリ１０２は、探索領域３０２および符号化対象ブロック３０３に含まれる画素の画素値を記憶している。
【００３６】
整数精度動きベクトル検出部１０３は、動きベクトル検出制御部１０５の制御にしたがって、探索領域３０２に含まれる複数の画像ブロックから符号化対象ブロック３０３に最も近似する画像ブロックの位置を１画素精度で探索し、その符号化対象ブロック３０３の動きベクトルを１画素精度で検出する。すなわち、整数精度動きベクトル検出部１０３は、符号化対象ブロック３０３の整数精度の動きベクトルを検出する第１検出手段である。
【００３７】
ここで、探索領域３０２に含まれる複数の画像ブロックのうち、符号化対象ブロック３０３に最も近似する画像ブロックとは、例えば符号化ブロック３０３に含まれる画素の画素値と、探索領域内３０２の画像ブロックに含まれる画素の画素値との差分絶対値和が最小となる画像ブロックである。
【００３８】
小数精度動きベクトル検出部１０４は、整数精度動きベクトル検出部１０３の結果と、動きベクトル検出制御部１０５の制御にしたがって、探索候補となる画像ブロックの中から符号化対象ブロックに最も近似する画像ブロックの位置を小数画素精度で探索し、小数画素精度で動きベクトルを検出する。
【００３９】
すなわち、小数精度動きベクトル検出部１０４は、探索候補から動きベクトルを検出する第２検出手段である。
【００４０】
探索候補に小数位置の画素から構成される小数位置の画像ブロックが含まれる場合、小数位置の画素の画素値を算出する必要がある。小数位置の画素の画素値は、小数精度動きベクトル検出部１０４が整数位置の画素の画素値を補間することにより算出される。
【００４１】
例えば、小数精度の動きベクトルは、１／２画素精度で検出される動きベクトルであり、この動きベクトルの検出に必要な小数位置の画素の画素値は、６ＴＡＰフィルタを用いて計算される。
【００４２】
動きベクトル検出制御部１０５は、整数精度動きベクトル検出部１０３と、小数精度動きベクトル検出部１０４の制御を行う。
【００４３】
動きベクトル検出制御部１０５は、整数精度動きベクトル検出部１０３に対して、例えば探索領域３０２を整数精度で探索する際の探索候補を制御する。
【００４４】
また、動きベクトル検出制御部１０５は、小数精度動きベクトル検出部１０４に対して、探索領域画像データメモリ１０２が記憶している画素値のみを用いて画素値を算出できる小数位置の画素から構成される小数位置の画像ブロックのみおよび整数精度の動きベクトルにより特定される整数位置の画像ブロックの中から探索候補を制御する。
【００４５】
動きベクトル検出制御部１０５が小数精度動きベクトル検出部１０４に対して行う制御の第１の例は、符号化対象ブロック３０３に対して整数精度動きベクトル検出部１０３が検出する整数精度の動きベクトルにより特定される整数位置の画像ブロックに含まれる画素の周囲に位置する小数位置の画素の画素値の算出に探索領域画像データメモリ１０２が記憶している画像領域の外の画素の画素値が必要な場合、その小数位置の画素を含む画像ブロックを前記探索候補から除外する制御である。
【００４６】
また、動きベクトル検出制御部１０５が小数精度動きベクトル検出部１０４に対して行う制御の第２の例は、符号化対象ブロック３０３に対して整数精度動きベクトル検出部１０３が検出する整数精度の動きベクトルにより特定される整数位置の画像ブロックに含まれる画素の周囲に位置する小数位置の画素の画素値の算出に探索領域画像データメモリ１０２が記憶している画像領域の外の画素の画素値が必要な場合、その小数位置の画素の画素値を探索領域画像データメモリ１０２が記憶している画素値から算出する制御である。
【００４７】
なお、動きベクトル検出制御部１０５の機能は、整数精度動きベクトル検出部１０３および小数精度動きベクトル検出部１０４がそれぞれ備えても構わない。
【００４８】
この場合、例えば整数精度動きベクトル検出部１０３は、探索領域に含まれる整数位置の画素から構成される整数位置の画像ブロックのうち、符号化対象ブロックと最も近似する画像ブロックを探索することにより、当該符号化対象ブロックの整数精度の動きベクトルを検出する。
【００４９】
また、例えば小数精度動きベクトル検出部１０４は、整数精度の動きベクトルにより特定される画像ブロックに含まれる整数位置の画素の周囲に位置する小数位置の画素から構成される小数位置の画像ブロックのうち、探索領域画像データメモリ１０２が記憶している画素値のみを用いて画素値を算出できる小数位置の画素から構成される小数位置の画像ブロックのみおよび前記整数精度の動きベクトルにより特定される整数位置の画像ブロックを探索候補として動きベクトルを検出する。
【００５０】
このように動きベクトルを検出することによって、探索領域画像データメモリ１０２が記憶している画素値のみを使用することができる。そのため、消費電力の増加や回路規模の増大をさせることなく動きベクトルを検出することが可能となる。
【００５１】
図２は、動画像符号化装置１００に含まれる符号化部１０６の構成を示すブロック図である。符号化部は１０６、入力画像、ローカルデコード画像および動きベクトル検出部１０７により検出された動きベクトルを用いて、符号化された画像データのストリームを出力する。
【００５２】
符号化部１０６は、面内予測部２０１、動き補償部２０２、差分演算部２０３、直交変換部２０４、量子化部２０５、逆量子化部２０６、逆直交変換部２０７、加算部２０８、スイッチ２０９、およびエントロピー符号化部２１０を備える。
【００５３】
ピクチャ画像データメモリ１０１および動きベクトル検出部１０７は、図１および図２に共通する部位であるため同じ参照符号を付しており、ここでの説明は省略する。
【００５４】
入力画像は、圧縮前の画像である。入力画像は、面内予測部２０１、ピクチャ画像データメモリ１０１、および差分演算部２０３に入力される。
【００５５】
動き補償部２０２は、動きベクトルとローカルデコード画像とを用いて予測画像を生成する。動き補償部２０２は、動きベクトル検出部１０７によって検出された動きベクトルを取得し、ピクチャ画像データメモリ１０１に格納されているローカルデコード画面から予測画像の生成に最適な画像領域を取り出し、取り出した画像領域に動きベクトルを適用して予測画像を生成する。
【００５６】
面内予測部２０１は、同一画面内の画素値を用いて予測画像を生成する。面内予測部２０１は、入力画像およびローカルデコード画像の画素値を用いて面内予測を行うことにより、予測画像を生成する。
【００５７】
スイッチ２０９は、データの入力元の切り替えを行う。スイッチ２０９は、差分器２０３および加算器２０８に入力するデータを、面内予測および面間予測のいずれかに切り替える。
【００５８】
差分演算部２０３は、入力された二つの画像の差分を計算する。差分演算部２０３は、入力画像に含まれる画素の画素値および予測画像に含まれる画素の画素値の差分を算出し、直交変換部２０４に出力する。
【００５９】
直交変換部２０４は、画像データを周波数係数に変換する。直交変換部２０４は、差分演算部２０３より入力された差分値を周波数係数に変換し、量子化部２０５に出力する。
【００６０】
量子化部２０５は、周波数係数の量子化を行う。量子化部２０５は、直行変換部２０４から入力された周波数係数を量子化し、量子化値をエントロピー符号化部２１０に出力する。
【００６１】
逆量子化部２０６は、逆量子化を行う。逆量子化部２０６は、量子化部２０５から入力された量子化値を逆量子化することにより周波数係数に復元し、逆直交変換部２０７に出力する。
【００６２】
逆直交変換部２０７は、周波数係数を画素値に変換する。逆直行変換部２０７は、逆量子化部２０６から入力された周波数係数を逆周波数変換することで画素差分値に変換し、その画素差分値を加算部２０８に出力する。
【００６３】
加算部２０８は、入力された２つの画像データの加算することにより画像データを生成する。加算器２０８は、スイッチ２０９の切り換えに従って面内予測部２０１および動き補償部２０２のいずれかから出力される予測画像と画素差分値とを加算し、ローカルデコード画像を生成する。
【００６４】
エントロピー符号化部２１０は、エントロピー符号化の処理を行う。エントロピー符号化部２１０は、量子化値および動きベクトル等をエントロピー符号化し、それにより得られるストリームを出力する。
【００６５】
次に、このように構成された動きベクトル検出部１０７を備えた動画像符号化装置１００において実行される処理について、図４を参照して説明する。
【００６６】
図４は、本実施の形態に係る動きベクトル検出部１０７を備える動画像符号化装置１００において実行される処理のフローチャートである。
【００６７】
まず、ピクチャ画像データメモリ１０１は、入力画像である符号化対象ピクチャの画像データ受け付けて、その受け付けた画像データを格納する（Ｓ４０１）。
【００６８】
次に、ピクチャ画像データメモリ１０１は、符号化部１０６によってローカルデコードされた参照ピクチャの画像データを符号化部１０６から受け付けて格納する（Ｓ４０２）。
【００６９】
次に、探索領域画像データメモリ１０２は、ピクチャ画像データメモリ１０１から転送される符号化対象ブロック３０３を格納する（Ｓ４０３）。
【００７０】
次に、探索領域画像データメモリ１０２は、参照ピクチャ３０１の一部に設定された探索領域３０２の画像データを格納する（Ｓ４０４）。
【００７１】
次に、整数精度動きベクトル検出部１０３および小数精度動きベクトル検出部１０４は、動きベクトル検出制御部１０５による制御のもと、動きベクトルの検出を行う（Ｓ４０５）。動きベクトル検出処理（Ｓ４０５）の詳細について、図５から図１０までを参照して以下に説明する。
【００７２】
まず、図５から図７に示す処理において、動きベクトル検出制御部１０５は、整数精度動きベクトル検出部１０３により探索された整数位置の画像ブロックの内部および周囲にある小数位置の画素から構成される複数の小数位置の画像ブロックの中に、画素値の算出に探索領域画像データメモリ１０２が記憶している領域外の画素の画素値が必要となる画素を含む画像ブロックがある場合に、その画像ブロックを探索候補から除外する。以下、図５から図７を参照して、動きベクトル検出部１０７が行う処理を説明する。
【００７３】
図５は、図４に示す動きベクトル検出処理Ｓ４０５の詳細の第１の例を示すフローチャートである。図５に示す処理において、動きベクトル検出制御部１０５が行う制御は、符号化対象ブロックに対して整数精度動きベクトル検出部１０３が検出する整数精度の動きベクトルにより特定される整数位置の画像ブロックに含まれる画素の周囲に位置する小数位置の画素の画素値の算出に探索領域画像データメモリ１０２が記憶している画像領域の外の画素の画素値が必要な場合、当該小数位置の画素を含む画像ブロックを探索候補から除外する制御である。
【００７４】
整数精度動きベクトル検出部１０３は、動きベクトル検出制御部１０５の制御にしたがって、探索領域画像データメモリ１０２が記憶している探索領域から、符号化対象ブロックに最も近似する画像ブロックの位置を１画素精度で探索し、その位置から整数精度の動きベクトルを検出する（Ｓ５０１）。
【００７５】
次に、動きベクトル検出制御部１０５は、整数精度動きベクトル検出部１０３により探索された画像ブロックおよびその画像ブロックの周囲に位置する小数位置の画素から構成される画像ブロックを探索候補になり得る画像ブロックとして、各々についてＳ５０３からＳ５０４の処理を行う（Ｓ５０２）。
【００７６】
次に、動きベクトル検出制御部１０５は、小数位置の画素値の算出に探索領域に含まれない画素値が必要か否かを判断する（Ｓ５０３）。この処理により、整数精度動きベクトル検出部１０３から得られる整数位置の画素の周囲にある小数位置の画素を含む画像ブロックを動きベクトルの候補から除外するか否かが決定される。
【００７７】
次に、動きベクトル制御部１０５が小数位置の画素値の算出に探索領域に含まれない画素値が必要でないと判断すると（Ｓ５０３でＮｏ）、小数精度動きベクトル検出部１０４は、かかる判断を受けて当該小数位置の画素値を含む小数位置の画像ブロックを動きベクトル探索の候補とし、動きベクトルの評価値を算出する。（Ｓ５０４）
【００７８】
また、動きベクトル制御部１０５が小数位置の画素値の算出に探索領域に含まれない画素値が必要であると判断すると（Ｓ５０３でＹｅｓ）、小数精度動きベクトル検出部１０４は、かかる判断を受けて当該小数位置の画素値を含む小数位置の画像ブロックを動きベクトル探索の候補から除外する。そのため、その小数位置の画像ブロックについて動きベクトルの評価値は、算出されない。
【００７９】
ここで、評価値とは、符号化対象ブロックと探索領域内の画像ブロックとがどれくらい近似しているかを数値化したものである。例えば、符号化対象ブロックに含まれる画素の画素値と探索領域内の画像ブロックに含まれる画素の画素値との差の絶対値の合計である。
【００８０】
次に、小数精度動きベクトル検出部１０４は、評価値が最小となる動きベクトルを、検出された動きベクトルとして出力する。（Ｓ５０５）
【００８１】
以下、図１１を参照して、図５に示す処理において、動きベクトル検出制御部１０５が行う制御の具体例を説明する。ここでの補間方法は、６ＴＡＰフィルタであるとする。
【００８２】
まず、例えば、整数精度動きベクトル検出処理において（Ｓ５０１）、a(4,4)を左上角に含む整数位置の画像ブロックを示す動きベクトルが整数精度動きベクトル検出部１０３により検出されると、小数精度動きベクトル検出部１０４において候補となり得る画像ブロックは、a(3,3)、a(4,3)、a(5,3)、a(3,4)、a(4,4)、a(5,4)、a(3,5)、a(4,5)、a(5,5)の９点をそれぞれ左上角に含む９個の画像ブロックである。動きベクトル検出制御部１０５は、探索候補となり得るこれらの画像ブロックについて、Ｓ５０３およびＳ５０４の処理を繰り返す（Ｓ５０２）。
【００８３】
動きベクトル検出制御部１０５は、各画像ブロックに含まれる画素の全てについて、小数位置の画素値の算出に探索領域に含まれない画素値が必要か否かを判断する（Ｓ５０３）。
【００８４】
これらの９点のうち、a(5,4)、a(4,5)、a(5,5)の３点をそれぞれ左上角に含む画像ブロックは、探索領域内の画素値のみから６ＴＡＰフィルタを用いて小数位置の画素値を算出することができる（Ｓ５０３でＮｏ）。また、上記の９点のうち、a(3,3)、a(4,3)、a(5,3)、a(3,4)、a(3,5)の５点は、探索領域内の画素値のみから６ＴＡＰフィルタを用いて小数位置の画素値を算出することができない（Ｓ５０３でＹｅｓ）。そのため、小数精度動きベクトル検出部１０４は、a(5,4)、a(4,5)、a(5,5)にa(4,4)を加えた、４点のそれぞれを左上角に含む４個の画像ブロックについて評価値を計算する（Ｓ５０４）。小数精度動きベクトル検出部１０４は、評価値が最小のブロックが示す位置と符号化対象ブロックの位置とから動きベクトルを検出する（Ｓ５０５）。
【００８５】
次に、例えば整数精度動きベクトル検出処理において（Ｓ５０１）、a(2,2)を左上角に含む整数位置の画像ブロックを示す動きベクトルが整数精度動きベクトル検出部１０３により検出されると、a(2,2)の周囲にある８点の小数位置の画素を左上角に含む小数位置の画像ブロックについて、Ｓ５０３およびＳ５０４の処理を繰り返す（Ｓ５０２）。
【００８６】
a(2,2)の周囲にある８点の小数位置の画素値の算出に、探索領域外の整数位置の画素値が必要となる（Ｓ５０３でＹｅｓ）。そのためＳ５０２の繰り返し処理の結果、探索候補は、a(2,2)を左上角に含む画像ブロックのみとなり、小数精度動きベクトル検出部１０４は、そのブロックの位置から動きベクトルを検出する（Ｓ５０５）。
【００８７】
図６は、図４に示す動きベクトル検出処理Ｓ４０５の詳細の第２の例を示すフローチャートである。図６に示す処理において、動きベクトル検出制御部１０５が行う制御は、符号化対象ブロックに対して整数精度動きベクトル検出部１０３が検出する整数精度の動きベクトルにより特定される画像ブロックに含まれる画素の周囲に位置する小数位置の画素の画素値の算出に、探索領域画像データメモリ１０２が記憶している画像領域の外の画素の画素値が必要な場合、当該小数位置の画素を含む画像ブロックを探索候補から除外し、さらに、当該符号化対象ブロックについて、すべての当該小数位置の画像ブロックを探索候補から除外する制御である。
【００８８】
すなわち、図６に示す処理において動きベクトル検出制御部１０５は、上記の場合に、整数精度動きベクトル検出部１０３の結果を、本発明に係る動きベクトル検出部１０７により検出された動きベクトルとする制御を行う。
【００８９】
整数精度動きベクトル検出部１０３は、動きベクトルを整数精度で検出する（Ｓ６０１）。この処理は、図５に示すＳ５０１と同じであるため、詳細は省略する。
【００９０】
次に、動きベクトル検出制御部１０５は、整数精度で検出された画像ブロックの内部および周囲に位置する小数位置の画素から構成される８個の小数位置の画像ブロックに含まれる全ての画素について、画素値の算出に探索領域に含まれない画素値が必要か否かを判断する（Ｓ６０２）。
【００９１】
次に、動きベクトル制御部１０５が、上記の８個の画像ブロックに含まれる画素の全てについて、画素値の算出に探索領域に含まれない整数位置の画素の画素値が必要でないと判断すると（Ｓ６０２でＮｏ）、小数精度動きベクトル検出部１０４は、かかる判断を受けて、各画像ブロックの評価値を算出し、評価値が最小となる画像ブロックの位置から動きベクトルを検出する（Ｓ６０３）。
【００９２】
また、動きベクトル制御部１０５が、上記の８個の画像ブロックに含まれる画素のうちの１点でも画素値の算出に探索領域に含まれない整数位置の画素値が必要であると判断すると（Ｓ６０２でＹｅｓ）、小数精度動きベクトル検出部１０４は、かかる判断を受けて、整数精度動きベクトル検出部１０３が検出した動きベクトルを検出された動きベクトルとして出力する（Ｓ６０４）。
【００９３】
図１１を参照して、図６に示す処理において、動きベクトル検出制御部１０５が行う制御の具体例を説明する。ここでの補間方法は、６ＴＡＰフィルタであるとする。
【００９４】
まず、例えば整数精度動きベクトル検出部１０３が実行する整数精度動きベクトル検出処理において（Ｓ６０１）、a(6,6)を左上角に含む整数位置の画像ブロックを示す動きベクトルが整数精度動きベクトル検出部１０３により検出された場合の処理について説明する。a(6,6)の周囲に位置する８個の小数位置の画素は、a(5,5)、a(6,5)、a(7,5)、a(5,6)、a(7,6)、a(5,7)、a(6,7)、a(7,7)の８点である。動きベクトル検出制御部１０５は、これら８点を左上角に含む８個の小数位置の画像ブロックに含まれる全ての画素について、それらの画素値の算出に探索領域に含まれない整数位置の画素値が必要でないか否かを判断する（Ｓ６０２）。
【００９５】
これらの８点を左上角に含む８個の画像ブロックに含まれる全ての画素の画素値は、探索領域内の画素値のみから６ＴＡＰフィルタを用いて小数位置の画素値を算出することができる。そのため、動きベクトル検出制御部１０５は、整数精度動きベクトル検出部１０３が検出した整数位置の画像ブロックの周囲に位置する小数位置の画素から構成される８個の画像ブロックに含まれる画素の全てについて、画素値の算出に探索領域に含まれない整数位置の画素値が必要でないと判断する（Ｓ６０２でＮｏ）。
【００９６】
かかる判断を受けた小数精度動きベクトル検出部１０４は、上記の８個の小数位置の画像ブロックにa(6,6) を左上角に含む整数位置の画像ブロックを加えた、９個の画像ブロックについて評価値を計算し、評価値が最小となるブロックの位置と符号化対象ブロックの位置とから動きベクトルを検出する（Ｓ６０３）。
【００９７】
次に、例えば整数精度動きベクトル検出部１０３が実行する整数精度動きベクトル検出処理において（Ｓ６０１）、a(4,4) を左上角に含む整数位置の画像ブロックを示す動きベクトルが整数精度動きベクトル検出部１０３により検出された場合の処理について説明する。a(4,4)の周囲に位置する８個の小数位置の画素は、a(3,3)、a(4,3)、a(5,3)、a(3,4)、a(5,4)、a(3,5)、a(4,5)、a(5,5)の８点である。これらの８点のうち、a(3,3)、a(4,3)、a(5,3)、a(3,4)、a(3,5)の５点は、探索領域内の画素値のみから６ＴＡＰフィルタを用いて小数位置の画素値を算出することができない。
【００９８】
そのため、動きベクトル検出制御部１０５は、整数精度動きベクトル検出部１０３が検出した整数位置の画素の周囲に位置する小数位置の画素値の算出に探索領域に含まれない整数位置の画素値が必要であると判断する（Ｓ６０２でＹｅｓ）。
【００９９】
かかる判断を受けた小数精度動きベクトル検出部１０４は、整数精度動きベクトル検出部１０３が検出したa(4,4)を左上角に含む画像ブロックが示す位置と符号化対象ブロックの位置とから動きベクトルを検出する（Ｓ６０４）。
【０１００】
図７は、図４に示す動きベクトル検出処理Ｓ４０５の詳細の第３の例を示すフローチャートである。図７に示す処理において、動きベクトル検出制御部１０５が行う制御は、符号化対象ブロックに対して整数精度動きベクトル検出部１０３が検出する整数精度の動きベクトルにより特定される画像ブロックに含まれる画素の周囲に位置する小数位置の画素の画素値の算出に、探索領域画像データメモリ１０２が記憶している画像領域の外の画素の画素値が必要な場合、当該小数位置の画素を含む画像ブロックを探索候補から除外し、さらに、当該符号化対象ブロックについて、すべての小数位置の画像ブロックを探索候補から除外し、さらに、当該符号化対象ブロックについて、整数位置の画像ブロックを探索候補から除外する制御である。
【０１０１】
整数精度動きベクトル検出部１０３は、動きベクトルを整数精度で検出する（Ｓ７０１）。この処理は、図５に示すＳ５０１と同じであるため、詳細は省略する。
【０１０２】
次に、動きベクトル検出制御部１０５は、整数精度で検出された画像ブロックの内部および周囲に位置する小数位置の画素から構成される８個の小数位置の画像ブロックに含まれる全ての画素について、画素値の算出に探索領域に含まれない画素値が必要か否かを判断する（Ｓ７０２）。
【０１０３】
次に、動きベクトル制御部１０５が、上記の８個の画像ブロックに含まれる画素の全てについて、画素値の算出に探索領域に含まれない整数位置の画素の画素値が必要でないと判断すると（Ｓ７０２でＮｏ）、小数精度動きベクトル検出部１０４は、かかる判断を受けて、各画像ブロックの評価値を算出し、評価値が最小となる画像ブロックの位置から動きベクトルを検出する（Ｓ７０３）。
【０１０４】
また、動きベクトル制御部１０５が、上記の８個の画像ブロックに含まれる画素のうちの１点でも画素値の算出に探索領域に含まれない整数位置の画素値が必要であると判断すると（Ｓ７０２でＹｅｓ）、小数精度動きベクトル検出部１０４は、かかる判断を受けて、動きベクトルを検出しない（Ｓ７０４）。
【０１０５】
図１１を参照して、図７に示す処理において、動きベクトル検出制御部１０５が行う制御の具体例を説明する。ここでの補間方法は、６ＴＡＰフィルタであるとする。
【０１０６】
まず、例えば整数精度動きベクトル検出部１０３が実行する整数精度動きベクトル検出処理において（Ｓ７０１）、a(6,6)を左上角に含む整数位置の画像ブロックを示す動きベクトルが整数精度動きベクトル検出部１０３により検出された場合の処理は（Ｓ７０２でＮｏの後、Ｓ７０３）、動きベクトル検出制御部１０５が図６に示す制御を行う例において、a(6,6)を左上角に含む整数位置の画像ブロックを示す動きベクトルが整数精度動きベクトル検出部１０３により検出された場合の処理（Ｓ６０２でＮｏの後、Ｓ６０３）と同じである。
【０１０７】
次に、例えば整数精度動きベクトル検出部１０３が実行する整数精度動きベクトル検出処理において（Ｓ７０１）、a(4,4)を左上角に含む整数位置の画像ブロックを示す動きベクトルが整数精度動きベクトル検出部１０３により検出された場合の処理について説明する。a(4,4)の周囲に位置する８個の小数位置の画素は、a(3,3)、a(4,3)、a(5,3)、a(3,4)、a(5,4)、a(3,5)、a(4,5)、a(5,5)の８点である。これらの８点のうち、a(3,3)、a(4,3)、a(5,3)、a(3,4)、a(3,5)の５点は、探索領域内の画素値のみから６ＴＡＰフィルタを用いて小数位置の画素値を算出することができない。
【０１０８】
そのため、動きベクトル検出制御部１０５は、整数精度動きベクトル検出部１０３が検出した整数位置の画素の周囲に位置する８個の小数位置の画像ブロックに含まれる全ての小数位置の画素について、画素値の算出に探索領域に含まれない整数位置の画素値が必要であると判断する（Ｓ７０２でＹｅｓ）。
【０１０９】
かかる判断をした動きベクトル検出制御部１０５は、当該符号化対象ブロックについて一切の画像ブロックを探索候補から除外する。そのため、小数精度動きベクトル検出部１０４による動きベクトルの検出は禁止される（Ｓ７０４）。
【０１１０】
以上のように動きベクトル検出部１０７が図５から図７に示す処理を実行することにより、小数精度動きベクトル検出部１０４は、探索候補を制限されない限り小数精度の動きベクトルを探索することができる。また、探索候補を制限することにより動きベクトルの検出は、探索領域画像データメモリ１０２が記憶している画像領域に含まれる画素値のみを用いて行われる。そのため、消費電力の増加や回路規模の増加を抑えながら、圧縮画像の画質や符号化効率の向上を図ることが可能となる。
【０１１１】
次に、図８から図１０に示す処理において、動きベクトル検出制御部１０５は、整数精度動きベクトル検出部１０３により検出された整数位置の画像ブロックの内部および周囲にある小数位置の画素から構成される複数の小数位置の画像ブロックの中に、画素値の算出に探索領域画像データメモリ１０２が記憶している領域外の画素の画素値が必要となる画素を含む画像ブロックがある場合に、補間に用いる整数画素の画素数を調整する制御や不足する画素値に探索領域画像データメモリ１０２が記憶している画素値を代用する制御を行う。
【０１１２】
このような動きベクトル検出制御部１０５の制御により、小数精度動きベクトル検出部１０４は、全ての小数位置の画素値を探索領域画像データメモリ１０２が記憶している画素値から算出する。以下、図８から図１０を参照しながら、動きベクトル検出部１０７が行う処理を説明する。
【０１１３】
図８は、図４に示す動きベクトル検出処理Ｓ４０５の詳細の第４の例を示すフローチャートである。図８に示す処理において、動きベクトル検出制御部１０５が行う制御は、符号化対象ブロックに対して整数精度動きベクトル検出部１０３が検出する整数精度の動きベクトルにより特定される画像ブロックに含まれる画素の周囲に位置する小数位置の画素の画素値の算出に、探索領域画像データメモリ１０２が記憶している画像領域の外の画素の画素値が必要な場合、当該小数位置の画素の画素値の算出に用いる画素数を、探索領域画像データメモリ１０２が記憶している画素値から取得できる画素数に減らすことにより前記小数位置の画素値を算出する制御である。
【０１１４】
整数精度動きベクトル検出部１０３は、動きベクトルを整数精度で検出する（Ｓ８０１）。この処理は、図５に示すＳ５０１と同じであるため、詳細は省略する。
【０１１５】
次に、動きベクトル検出制御部１０５は、整数精度で検出された画像ブロックの内部および周囲に位置する小数位置の画素から構成される８個の小数位置の画像ブロックに含まれる各画素について、画素値の算出に探索領域に含まれない画素値が必要か否かを判断する（Ｓ８０２）。
【０１１６】
次に、動きベクトル制御部１０５が、上記の８個の小数位置の画像ブロックに含まれる画素について、画素値の算出に探索領域に含まれない整数位置の画素の画素値が必要でないと判断すると（Ｓ８０２でＮｏ）、小数精度動きベクトル検出部１０４は、かかる判断を受けて、所定のＴＡＰ数を用いてその画素の画素値を算出する（Ｓ８０３）。
【０１１７】
また、動きベクトル制御部１０５が、上記の８個の画像ブロックに含まれる画素について、画素値の算出に探索領域に含まれない整数位置の画素の画素値が必要であると判断すると（Ｓ８０２でＹｅｓ）、その画素について、ＴＡＰ数を所定のＴＡＰ数より少なくすることにより、画素値を算出する。
【０１１８】
さらに、小数精度動きベクトル検出部１０４は、算出された小数位置の画素値を用いて各動きベクトルの評価値を算出し、評価値が最小となる動きベクトルを検出された動きベクトルとして出力する（Ｓ８０４）。
【０１１９】
図１１を参照して、図８に示す動きベクトル検出処理Ｓ５において、動きベクトル検出制御部１０５が行う制御の具体例を説明する。ここでの補間方法は、６ＴＡＰフィルタを使用し、６ＴＡＰフィルタを使用できない場合、４ＴＡＰフィルタまたは２ＴＡＰフィルタを使用するとする。
【０１２０】
まず、例えば整数精度動きベクトル検出部１０３が実行する整数精度動きベクトル検出処理において（Ｓ８０１）、a(6,6)を左上角に含む整数位置の画像ブロックを示す動きベクトルが整数精度動きベクトル検出部１０３により検出された場合の処理について説明する。a(6,6)の周囲に位置する８個の小数位置の画素は、a(5,5)、a(6,5)、a(7,5)、a(5,6)、a(7,6)、a(5,7)、a(6,7)、a(7,7)の８点である。動きベクトル検出制御部１０５は、これら８点を左上角に含む８個の小数位置の画像ブロックを探索候補とし、各探索候補に含まれる各画素について、それらの画素値の算出に探索領域に含まれない整数位置の画素値が必要でないか否かを判断する（Ｓ８０２）。
【０１２１】
これらの８点を左上角に含む８個の小数位置の画像ブロックに含まれる各画素は、探索領域内の画素値のみから６ＴＡＰフィルタを用いて小数位置の画素値を算出することができる。そのため、動きベクトル検出制御部１０５は、これらの各画素について、画素値の算出に探索領域に含まれない整数位置の画素値が必要でないと判断する（Ｓ８０２でＮｏ）。かかる判断を受けた小数精度動きベクトル検出部１０４は、各画素の画素値を６ＴＡＰフィルタを用いて算出し、上記の８点を左上角に含む小数位置の画像ブロックにa(6,6)を左上角に含む整数位置の画像ブロックを加えた９個の画像ブロックの評価値を計算し、評価値が最小となる画像ブロックの位置と符号化対象ブロックの位置とから動きベクトルを検出する（Ｓ８０４）。
【０１２２】
次に、例えば整数精度動きベクトル検出部１０３が実行する整数精度動きベクトル検出処理において（Ｓ８０１）、a(4,4)を左上角に含む整数位置の画像ブロックを示す動きベクトルが整数精度動きベクトル検出部１０３により検出された場合の処理について説明する。a(4,4)の周囲に位置する８個の小数位置の画素は、a(3,3)、a(4,3)、a(5,3)、a(3,4)、a(5,4)、a(3,5)、a(4,5)、a(5,5)の８点である。これらの８点のうち、a(3,3)、a(4,3)、a(5,3)、a(3,4)、a(3,5)の５点は、探索領域内の画素値のみから６ＴＡＰフィルタを用いて小数位置の画素値を算出することができない。そのため、動きベクトル検出制御部１０５は、画素値の算出に探索領域に含まれない整数位置の画素値が必要であると判断する（Ｓ８０２でＹｅｓ）。かかる判断をした動きベクトル検出制御部１０５は、フィルタのＴＡＰ数を調整する（Ｓ８０３）。
【０１２３】
各画素におけるＴＡＰ数の具体的な調整方法について、説明する。
a(3,3)、a(4,3)、a(5,3)、a(3,4)、a(3,5)の５点については６ＴＡＰフィルタにより補間できない。このため、動きベクトル検出制御部１０５は、これら５点の補間を可能とする４ＴＡＰフィルタをa(3,3)、a(4,3)、a(5,3)、a(3,4)、a(5,4)、a(3,5)、a(4,5)、a(5,5)の８点全てにおいて用いるように、小数精度動きベクトル検出部１０４を制御する。
【０１２４】
また、例えば、a(1,2)に位置する画素の画素値を求める場合、動きベクトル検出制御部１０５は、２ＴＡＰフィルタを用いるように小数精度動きベクトル検出部１０４を制御する。探索領域画像データメモリ１０２が記憶している画素値からa(1,2)の算出に使用できる整数位置の画素の画素値は、a(0,2)およびa(2,2)に限られており、６ＴＡＰフィルタも４ＴＡＰフィルタも用いることができないためである。このように、フィルタのＴＡＰ数は、算出する小数位置の画素の画素値に使用可能な整数位置の画素の画素値が、どれだけ探索領域画像データメモリ１０２に格納されているかにより、決定される。
【０１２５】
図９は、図４に示す動きベクトル検出処理Ｓ４０５の詳細の第５の例を示すフローチャートである。図９に示す処理において、動きベクトル検出制御部１０５が行う制御は、符号化対象ブロックに対して整数精度動きベクトル検出部１０３が検出する整数精度の動きベクトルにより特定される画像ブロックに含まれる画素の周囲に位置する小数位置の画素の画素値の算出に、探索領域画像データメモリ１０２が記憶している画像領域の外の画素の画素値が必要な場合、その小数位置の画素値を算出するために必要な、探索領域画像データメモリ１０２が記憶している領域の外に位置する画素の画素値に、画像領域の外に位置する画素の最も近くに位置する画像領域内の画素値を代用して、その小数位置の画素値を算出する制御である。
【０１２６】
整数精度動きベクトル検出部１０３は、動きベクトルを整数精度で検出する（Ｓ９０１）。この処理は、図５に示すＳ５０１と同じであるため、詳細は省略する。
【０１２７】
次に、動きベクトル検出制御部１０５がＳ９０２において行う判断処理は、図８に示すＳ８０２と同じであるため、詳細は省略する。
【０１２８】
次に、動きベクトル制御部１０５が、整数精度で検出された画像ブロックの周囲に位置する８個の小数位置の画像ブロックに含まれる画素について、画素値の算出に探索領域に含まれない整数位置の画素の画素値が必要でないと判断すると（Ｓ９０２でＮｏ）、小数精度動きベクトル検出部１０４は、かかる判断を受けて、その画素の画素値を算出する（Ｓ９０４）。
【０１２９】
また、動きベクトル制御部１０５が、上記の８個の画像ブロックに含まれる画素について、画素値の算出に探索領域に含まれない整数位置の画素の画素値が必要であると判断すると（Ｓ９０２でＹｅｓ）、小数精度動きベクトル検出部１０４は、その小数位置の画素値の算出に必要な探索領域外の整数位置の画素値に、探索領域画像データメモリ１０２に記憶されている整数位置の画素値を代用することにより、画素値を算出する。
【０１３０】
ここで、代用される画素値は、小数位置の画素値算出に必要である領域外の整数位置の画素から最も近い、探索領域内の境界に位置する整数画素値である。
【０１３１】
さらに、小数精度動きベクトル検出部１０４は、算出された小数位置の画素値を用いて動きベクトルの評価値を算出し、評価値が最小となる動きベクトルを検出された動きベクトルとして出力する（Ｓ９０４）。
【０１３２】
図１１を参照して、図９に示す動きベクトル検出処理Ｓ５０５において、動きベクトル検出制御部１０５が行う制御の具体例を説明する。ここでの補間方法は、６ＴＡＰフィルタであるとする。
【０１３３】
まず、例えば整数精度動きベクトル検出部１０３が実行する整数精度動きベクトル検出処理において（Ｓ９０１）、a(6,6)を左上角に含む整数位置の画像ブロックを示す動きベクトルが整数精度動きベクトル検出部１０３により検出された場合の処理は（Ｓ９０２でＮｏの後、Ｓ９０４）、図８に示すＳ８０１においてa(6,6)を左上角に含む整数位置の画像ブロックを示す動きベクトルが整数精度動きベクトル検出部１０３により検出された場合の処理（Ｓ８０２でＮｏの後、Ｓ８０４）と同じである。
【０１３４】
次に、例えば整数精度動きベクトル検出部１０３が実行する整数精度動きベクトル検出処理において（Ｓ９０１）、a(4,4)を左上角に含む整数位置の画像ブロックを示す動きベクトルが整数精度動きベクトル検出部１０３により検出された場合の処理について説明する。
【０１３５】
a(4,4)の周囲に位置する８個の小数位置の画素は、a(3,3)、a(4,3)、a(5,3)、a(3,4)、a(5,4)、a(3,5)、a(4,5)、a(5,5)の８点である。これらの８点のうち、a(3,3)、a(4,3)、a(5,3)、a(3,4)、a(3,5)の５点は、探索領域内の画素値のみでは６ＴＡＰフィルタを用いて小数位置の画素値を算出することができない。そのため、動きベクトル検出制御部１０５は、これらの５つの各画素について、画素値の算出に探索領域に含まれない整数位置の画素値が必要であると判断する（Ｓ９０２でＹｅｓ）。
【０１３６】
かかる判断をした動きベクトル検出制御部１０５は、必要となる探索領域外の画素値に、その画素に最も近い探索領域の境界に位置する画素値を代用する（Ｓ９０３）。必要となる探索領域外の画素に最も近い領域内の画素とは、必要となる探索領域外の画素から探索領域の境界に下ろした垂線と探索領域の境界線との交点の間際に位置する、領域内の画素のことである。
【０１３７】
例えば、a(3,4)の画素値を算出するには、a(-2,4)、a(0,4)、a(2,4)、a(4,4)、a(6,4)、a(8,4)の画素値が必要となる。しかし、a(-2,4)は、探索領域外の画素である。そこで動きベクトル検出制御部１０５は、a(-2,4)の画素値として、a(-2,4)に最も近い探索領域内の画素であるa(0,4)の画素値を代用する（Ｓ９０３）。a(3,3)、a(4,3)、a(5,3)、a(3,5)についても同様である。
【０１３８】
さらに動きベクトル検出制御部１０５が実行する境界値の代用処理（Ｓ９０３）について、a(1,2)の画素値の算出を例に説明する。a(1,2)の画素値を算出するには、a(-4,2)、a(-2,2)、a(0,2)、a(2,2)、a(4,2)、a(6,2)の画素値が必要となる。しかし、a(-2,4)およびa(-2,2)は、探索領域外の画素である。そこで動きベクトル検出制御部１０５は、a(-2,4) およびa(-2,2)の画素値として、a(-2,4)およびa(-2,2)のそれぞれに最も近い探索領域内の画素であるa(0,2)の画素値を代用する（Ｓ９０３）。
【０１３９】
図１０は、図４に示す動きベクトル検出処理Ｓ４０５の詳細の第６の例を示すフローチャートである。図１０に示す処理において、動きベクトル検出制御部１０５が行う制御は、符号化対象ブロックに対して整数精度動きベクトル検出部１０３が検出する整数精度の動きベクトルにより特定される画像ブロックに含まれる画素の周囲に位置する小数位置の画素の画素値の算出に、探索領域画像データメモリ１０２が記憶している画像領域の外の画素の画素値が必要な場合、その小数位置の画素値を算出するために必要な、探索領域画像データメモリ１０２が記憶している画像領域の外に位置する画素の画素値に、画像領域の外に位置する画素とその画素に最も近い領域の境界を挟んで線対称の位置に示される画素値を代用して、その小数位置の画素値を算出する制御である。
【０１４０】
整数精度動きベクトル検出部１０３は、動きベクトルを整数精度で検出する（Ｓ１００１）。この処理は、図５に示すＳ５０１と同じであるため、詳細は省略する。
【０１４１】
次に、動きベクトル検出制御部１０５がＳ１００２において行う判断処理は、図８に示すＳ８０２と同じであるため、詳細は省略する。
【０１４２】
次に、動きベクトル検出制御部１０５が、整数精度で検出された画像ブロックの周囲に位置する８個の小数位置の画像ブロックに含まれる画素について、画素値の算出に探索領域に含まれない整数位置の画素の画素値が必要でないと判断すると（Ｓ１００２でＮｏ）、小数精度動きベクトル検出部１０４が、かかる判断を受けて、その画素の画素値を算出することは（Ｓ１００４）、図９に示すＳ９０４において行われる処理と同じである。
【０１４３】
また、動きベクトル制御部１０５は、上記の８個の画像ブロックに含まれる画素について、画素値の算出に探索領域に含まれない整数位置の画素の画素値が必要であると判断すると（Ｓ１００２でＹｅｓ）、小数精度動きベクトル検出部１０４が代用値を用いて画素値を算出し、動きベクトルを検出することも（Ｓ１００４）、図９に示すＳ９０４において行われる処理と同じである。
【０１４４】
本図のＳ１００４における処理と図９のＳ９０４における処理との違いは、代用される画素の位置である。
【０１４５】
すなわち、図９のＳ９０４において動きベクトル検出制御部１０５が、探索領域画像データメモリ１０２が記憶していない画素値に代用する画素値は、小数位置の画素値算出に必要である領域外の整数位置の画素に最も近くに位置する、探索画像領域データメモリ１０２が記憶する領域の境界に位置する画素である。
【０１４６】
これに対して、本図のＳ１００４において動きベクトル検出制御部１０５が、探索領域画像データメモリ１０２が記憶していない画素値に代用する画素値は、小数位置の画素値算出に必要である領域外の整数位置の画素と、探索画像領域データメモリ１０２が記憶する領域の境界を挟んで対称な位置にある画素の画素値である。
【０１４７】
図１１を参照して、図１０に示す動きベクトル検出処理Ｓ５において、動きベクトル検出制御部１０５が行う制御の具体例を説明する。ここでの補間方法は、６ＴＡＰフィルタであるとする。
【０１４８】
これまで、本図の説明で述べたように、本図に示す処理と図９に示す処理との違いは、小数位置の画素の画素値を６ＴＡＰフィルタで算出するために必要な画素の画素値を探索領域画像データメモリ１０２が記憶していない場合、探索領域画像データメモリ１０２が記憶している領域内のどの位置の画素値を代用するかである。
【０１４９】
すなわち、Ｓ１００１、Ｓ１００２およびＳ１００４における処理は、Ｓ９０１、Ｓ９０２およびＳ９０４における処理と、それぞれ同じである。そのため、これらの処理の詳細は省略する。
【０１５０】
以下、a(3,4)およびa(1,2)の画素値を算出する場合を例に、どの位置の画素値を代用するかを具体的に説明する。
【０１５１】
ます、a(3,4)の画素値を算出する場合について説明する。a(3,4)の画素値を算出するには、a(-2,4)、a(0,4)、a(2,4)、a(4,4)、a(6,4)、a(8,4)の画素値が必要となる。しかし、a(-2,4)は、探索領域外の画素である。そこで動きベクトル検出制御部１０５は、a(-2,4)の画素値として、a(-2,4)と探索領域内の境界を挟んで対称な位置にある画素であるa(0,4)の画素値を代用する（Ｓ１００３）。
【０１５２】
次に、a(1,2)の画素値を算出する場合について説明する。a(1,2)の画素値を算出するには、a(-4,2)、a(-2,2)、a(0,2)、a(2,2)、a(4,2)、a(6,2)の画素値が必要となる。しかし、a(-4,2)およびa(-2,2)は、探索領域外の画素である。そこで動きベクトル検出制御部１０５は、a(-2,2)の画素値として、a(-2,2)と探索領域内の境界を挟んで対称な位置にある画素であるa(0,2)の画素値を代用する（Ｓ１００３）。
【０１５３】
また、a(-4,2)の画素値として、a(-4,2)と探索領域内の境界を挟んで対称な位置にある画素であるa(2,2)の画素値を代用する（Ｓ１００３）。
【０１５４】
以上のように、動きベクトル検出部１０７が図８から図１０に示す処理を実行することにより、整数精度動きベクトル検出部１０３により検出された整数位置の画像ブロックの内部および周囲にある小数位置の画素から構成される複数の小数位置の画像ブロックの中に、画素値の算出に探索領域画像データメモリ１０２が記憶している領域外の画素の画素値が必要となる画素を含む画像ブロックがある場合であっても、小数精度の動きベクトル検出が可能となる。そのため、図５から図７までに説明した方法と比較して、探索領域画像データメモリ１０２を増やすことなく動きベクトル検出の探索領域を拡大することができる。したがって、消費電力の増加や回路規模の増加を抑えながら、圧縮画像の画質や符号化効率の、より一層の向上を図ることが可能となる。
【０１５５】
以上、本発明の実施の形態に係る動きベクトル検出部１０７について説明したが、本発明は、この実施の形態に限定されるものではない。
【０１５６】
例えば、小数位置の画素値の補間に用いるに各フィルタに係る変形例が考えられる。まず、実施の形態において用いるフィルタは、本発明の動きベクトル検出部をH．２６４符号化装置で用いる場合、規格書記載の６TAPフィルタを動きベクトル検出に用いてもよいし、例えば４ＴＡＰフィルタ、２ＴＡＰフィルタなどのフィルタを用いてもよい。また、小数精度動きベクトル検出部１０４で小数位置の画素の補間計算は垂直方向と水平方向で異なる方法を用いてもよい。
【０１５７】
また、図８に示す例では、６ＴＡＰフィルタにより算出できない小数位置の画素の画素値を算出する場合、動きベクトル検出制御部１０５は、当該画素の画素値の算出に使用できる探索領域画像データメモリ１０２が記憶している画素値の数によりＴＡＰ数を４ＴＡＰ、２ＴＡＰと減少させる。しかし、６ＴＡＰフィルタにより算出できない場合は、常に２ＴＡＰフィルタを適用しても構わない。
【０１５８】
さらに、４ＴＡＰフィルタ、６ＴＡＰフィルタを用いる場合に、各整数位置の画素値に係る係数は、例えば、４ＴＡＰフィルタでは、−１／８、5／８、５／８、−１／８があり、H．２６４符号化の規格の６ＴＡＰフィルタでは、１／３２、−５／３２、２０／３２、２０／３２、−５／３２、１／３２がある。しかし、これらの各フィルタで用いられる係数の値は、他の値でも構わない。
【０１５９】
また例えば、探索領域画像データメモリ１０２は、図１２に示すように探索領域が含まれる参照ピクチャのライン全てを記憶していても構わない。
【０１６０】
図１２は、探索領域画像データメモリ１０２が記憶している領域と参照ピクチャとの関係の第２の例を示す図である。符号化対象ブロック３０３および探索領域３０２は、図３と同じである。探索領域画像データメモリ１０２が、図３では参照ピクチャのうち探索領域のみを記憶しているのに対して、図１２では参照ピクチャのうち探索領域を含むライン３０５の全てを記憶している点で異なる。
【０１６１】
この場合、小数位置の画素の画素値の算出は、探索領域３０２の画素のみならず、探索領域を含むライン３０５の画素の画素値をも用いても構わない。
【０１６２】
さらに例えば、本実施の形態では１／２画素精度の生成方法しか記載していないが、任意の１／M画素精度の動きベクトル検出の制御方法も同様にして行なうことが可能であり、小数画素精度の動きベクトル検出は、任意の１／Ｍ画素精度として構わない。ここで、「Ｍ」は、２のべき乗を表す。
【０１６３】
さらに例えば、１／M画素精度の動きベクトル検出する際に小数精度動きベクトル検出部１０４が実行する検索の手順は、１／２画素精度の動きベクトル探索を行い、１／４画素精度の動きベクトル検出を行なう、というように段階的に１／Ｍ画素精度の動きベクトルを検出しても構わない。また入力された１画素精度動きベクトルの示す位置の周辺に存在する１／Ｍ画素精度の位置すべてを探索して１／Ｍ画素精度の動きベクトルを検出しても構わない。
【０１６４】
なお、図１、図２に示したブロック図の各機能ブロックは典型的には集積回路であるＬＳＩとして実現される。このＬＳＩは１チップ化されても良く、複数チップ化されても良い。複数チップ化される例として、メモリ以外の各機能ブロックが１チップ化されることが考えられる。なおＬＳＩは、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
【０１６５】
また、本発明に係る動きベクトル検出部１０７を備える動画像符号化装置１００の集積回路化の手法は、ＬＳＩに限るものではない。集積化の手法は、専用回路又は汎用プロセサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Field Programmable Gate Array）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【０１６６】
さらに、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
【０１６７】
さらに、各機能ブロックのうち、データを格納するユニットだけ１チップ化せずに、別構成としても良い。
【産業上の利用可能性】
【０１６８】
本発明の動きベクトル検出装置によれば、消費電力の増加や回路規模の増大を抑えながらＨ．２６４による映像の符号化が実現でき、パーソナルコンピュータや、ＨＤＤレコーダ、ＤＶＤレコーダなどの他、ビデオカメラ、カメラ付き携帯電話機等に適用できる。また、この動きベクトル検出装置を備える符号化装置にも適用できる。
【図面の簡単な説明】
【０１６９】
【図１】本発明の実施の形態に係る動きベクトル検出部を備えた動画像符号化装置の構成を示すブロック図である。
【図２】動画像符号化装置に含まれる符号化部の構成を示すブロック図である。
【図３】探索領域画像データメモリが記憶している画像と参照ピクチャとの関係の第１の例を示す図である。
【図４】本実施の形態に係る動きベクトル検出装置を備える動画像符号化装置において実行される処理のフローチャートである。
【図５】図４に示す動きベクトル検出処理Ｓ４０５の詳細の第１の例を示すフローチャートである。
【図６】図４に示す動きベクトル検出処理Ｓ４０５の詳細の第２の例を示すフローチャートである。
【図７】図４に示す動きベクトル検出処理Ｓ４０５の詳細の第３の例を示すフローチャートである。
【図８】図４に示す動きベクトル検出処理Ｓ４０５の詳細の第４の例を示すフローチャートである。
【図９】図４に示す動きベクトル検出処理Ｓ４０５の詳細の第５の例を示すフローチャートである。
【図１０】図４に示す動きベクトル検出処理Ｓ４０５の詳細の第６の例を示すフローチャートである。
【図１１】探索領域内の画素値により、算出できる小数位置の画素値および算出できない小数位置の画素値の位置関係を示す図である。
【図１２】探索領域画像データメモリが記憶している領域と参照ピクチャとの関係の第２の例を示す図である。
【符号の説明】
【０１７０】
１００  動画像符号化装置
１０１  ピクチャ画像データメモリ
１０２  探索領域画像データメモリ
１０３  整数精度動きベクトル検出
１０４  小数精度動きベクトル検出
１０５  動きベクトル検出制御部
１０６  符号化部
１０７  動きベクトル検出部
２０１  面内予測部
２０２  動き補償部
２０３  減算器
２０４  直交変換部
２０５  量子化部
２０６  逆量子化部
２０７  逆直交変換部
２０８  加算器
２０９  スイッチ
２１０  エントロピー符号化部
【図１】
2007129370.tif 000003
【図２】
2007129370.tif 000004
【図３】
2007129370.tif 000005
【図４】
2007129370.tif 000006
【図５】
2007129370.tif 000007
【図６】
2007129370.tif 000008
【図７】
2007129370.tif 000009
【図８】
2007129370.tif 000010
【図９】
2007129370.tif 000011
【図１０】
2007129370.tif 000012
【図１１】
2007129370.tif 000013
【図１２】
2007129370.tif 000014