(57)【特許請求の範囲】
【請求項１】
縮小符号化対象フレームに含まれる縮小符号化対象ブロックのそれぞれと、複数の縮小参照フレームのそれぞれとの間で、第１の探索範囲で第１の縮小動きベクトルと前記第１の縮小動きベクトルでの画像の第１の類似度を検出し、前記第１の探索範囲よりも小さい第２の探索範囲で第２の縮小動きベクトルと前記第２の縮小動きベクトルでの画像の第２の類似度を検出する縮小動きベクトル検出部と、
前記第１の類似度を前記縮小符号化対象フレーム全体で積算した、前記縮小参照フレームごとの第１の積算値と、前記縮小符号化対象ブロックと前記複数の縮小参照フレームとの間で得られた前記第２の類似度のうち最小のものを前記縮小符号化対象フレーム全体で積算した第２の積算値と、の大小関係に基づき、前記複数の縮小参照フレームに対応した複数の参照フレームを選択するか、前記複数の縮小参照フレームの何れかの縮小参照フレームに対応した参照フレームを選択するか、決定する参照フレーム決定部と、
１つの前記参照フレームが選択されたときには、前記第１の探索範囲に基づき設定される第１の範囲の前記参照フレームの第１の画像データを保持し、前記複数の参照フレームが選択されたときには、前記第２の探索範囲の大きさに基づき設定される第２の範囲の前記複数の参照フレームの第２の画像データを保持するデータ保持部と、
等倍の符号化対象フレームに対して、前記データ保持部に、前記第１の画像データが保持されているときには、前記第１の縮小動きベクトルと前記第１の画像データとに基づき、前記第２の画像データが保持されているときには、前記第２の縮小動きベクトルと前記第２の画像データとに基づき、動きベクトルの検出を行う動きベクトル検出部と、
を有することを特徴とする動きベクトル検出回路。
【請求項２】
前記第１の類似度または前記第２の類似度は、前記第１の縮小動きベクトルまたは前記第２の縮小動きベクトルの検出時に算出される差分絶対値和であることを特徴とする請求項１に記載の動きベクトル検出回路。
【請求項３】
縮小符号化対象フレームに含まれる縮小符号化対象ブロックのそれぞれと、複数の縮小参照フレームのそれぞれとの間で、第１の探索範囲で第１の縮小動きベクトルと前記第１の縮小動きベクトルでの画像の第１の類似度を検出し、前記第１の探索範囲よりも小さい第２の探索範囲で第２の縮小動きベクトルと前記第２の縮小動きベクトルでの画像の第２の類似度を検出する縮小動きベクトル検出部と、
前記第１の類似度を前記縮小符号化対象フレーム全体で積算した、前記縮小参照フレームごとの第１の積算値と、前記縮小符号化対象ブロックと前記複数の縮小参照フレームとの間で得られた前記第２の類似度のうち最小のものを前記縮小符号化対象フレーム全体で積算した第２の積算値と、の大小関係に基づき、前記複数の縮小参照フレームに対応した複数の参照フレームを選択するか、前記複数の縮小参照フレームの何れかの縮小参照フレームに対応した参照フレームを選択するか、決定する参照フレーム決定部と、
１つの前記参照フレームが選択されたときには、前記第１の探索範囲に基づき設定される第１の範囲の前記参照フレームの第１の画像データを保持し、前記複数の参照フレームが選択されたときには、前記第２の探索範囲の大きさに基づき設定される第２の範囲の前記複数の参照フレームの第２の画像データを保持するデータ保持部と、
等倍の符号化対象フレームに対して、前記データ保持部に、前記第１の画像データが保持されているときには、前記第１の縮小動きベクトルと前記第１の画像データとに基づき、前記第２の画像データが保持されているときには、前記第２の縮小動きベクトルと前記第２の画像データとに基づき、動きベクトルの検出を行う動きベクトル検出部と、
前記動きベクトルをもとに、動画像符号化処理を行う動画像符号化処理部と、
を有することを特徴とする動画像符号化装置。
【請求項４】
縮小動きベクトル検出部が、縮小符号化対象フレームに含まれる縮小符号化対象ブロックのそれぞれと、複数の縮小参照フレームのそれぞれとの間で、第１の探索範囲で第１の縮小動きベクトルと前記第１の縮小動きベクトルでの画像の第１の類似度を検出し、前記第１の探索範囲よりも小さい第２の探索範囲で第２の縮小動きベクトルと前記第２の縮小動きベクトルでの画像の第２の類似度を検出し、
参照フレーム決定部が、前記第１の類似度を前記縮小符号化対象フレーム全体で積算した、前記縮小参照フレームごとの第１の積算値と、前記縮小符号化対象ブロックと前記複数の縮小参照フレームとの間で得られた前記第２の類似度のうち最小のものを前記縮小符号化対象フレーム全体で積算した第２の積算値と、の大小関係に基づき、前記複数の縮小参照フレームに対応した複数の参照フレームを選択するか、前記複数の縮小参照フレームの何れかの縮小参照フレームに対応した参照フレームを選択するか、決定し、
データ保持部が、１つの前記参照フレームが選択されたときには、前記第１の探索範囲に基づき設定される第１の範囲の前記参照フレームの第１の画像データを保持し、前記複数の参照フレームが選択されたときには、前記第２の探索範囲の大きさに基づき設定される第２の範囲の前記複数の参照フレームの第２の画像データを保持し、
動きベクトル検出部が、等倍の符号化対象フレームに対して、前記データ保持部に、前記第１の画像データが保持されているときには、前記第１の縮小動きベクトルと前記第１の画像データとに基づき、前記第２の画像データが保持されているときには、前記第２の縮小動きベクトルと前記第２の画像データとに基づき、動きベクトルの検出を行うことを特徴とする動きベクトル検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動きベクトル検出回路、動画像符号化装置及び動きベクトル検出方法に関する。
【背景技術】
【０００２】
動画像情報をデジタル信号として取り扱う際の符号フォーマットとして、国際標準規格であるＭＰＥＧ（Moving Picture Experts Group）２、ＭＰＥＧ４、Ｈ．２６４／ＡＶＣ（Advanced Video Coding）などが用いられている。これらの圧縮符号化方式は、動き補償フレーム間予測と直交変換とを組み合わせたハイブリッド符号化方式である。動き補償フレーム間予測を用いるためには、各符号化対象ブロックに対して、それぞれ動きベクトルを検出する。
【０００３】
動きベクトル検出の際には、符号化対象ブロックごとに、複数の参照フレームの中から、最も類似するブロックを網羅的に探索する。動きベクトル検出は大きな探索範囲（参照フレームの一部分を切り出した領域）に対して、また、多くの参照フレームに対して行ったほうが、より類似した参照ブロックを見つけ出す機会を増やすために望ましい。ただ、探索範囲を大きくしたり、参照フレーム数を増やしたりするほど、多くの演算とメモリアクセスが発生する可能性がある。つまり、適切な動きベクトルを検出することと、演算量・メモリアクセス量はトレードオフの関係にある。探索範囲を大きくとりながら、演算量とメモリアクセスを削減することが望ましい。
【０００４】
動きベクトル検出の演算量とメモリアクセスを削減する方法として、階層的な動きベクトル検出方法が知られている。この方法では、たとえば、フレームの画素を間引いて生成した縮小画像を用いて縮小動きベクトルを検出し、検出した縮小動きベクトルを拡大したベクトルを中心にした狭い探索範囲で動きベクトルを検出する。
【０００５】
また、隣接する符号化対象ブロックにおいて、動きベクトル検出で使用する探索範囲の多くの部分が重なるという特徴から、重複する探索範囲を内包する領域をプリフェッチメモリ内にキャッシュしておく技術が知られている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１１−２６２０１５号公報
【特許文献２】特開２００８−６１１５６号公報
【特許文献３】特開２００３−１６９３３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来の手法では、適切な動きベクトルを検出するために複数の参照フレームに対して動きベクトルの検出を行う場合、その分、プリフェッチメモリのキャッシュ量が増え、外部メモリとのデータ転送量が増大する問題があった。
【課題を解決するための手段】
【０００８】
発明の一観点によれば、複数の縮小参照フレームのそれぞれに対して、第１の探索範囲と、前記第１の探索範囲よりも小さい第２の探索範囲で縮小動きベクトルと、前記縮小動きベクトルでの画像の類似度を検出する縮小動きベクトル検出部と、前記類似度を縮小符号化対象フレーム全体で積算した値をもとに、参照フレームと参照フレーム数を決定する参照フレーム決定部と、決定された前記参照フレーム数に応じて、前記第１または第２の探索範囲の何れかの大きさをもとに設定される範囲の前記参照フレームの画像データを保持するデータ保持部と、等倍の符号化対象フレームに対して、前記データ保持部に保持された前記画像データと前記縮小動きベクトルをもとに動きベクトルの検出を行う動きベクトル検出部と、を備えた動きベクトル検出回路が提供される。
【発明の効果】
【０００９】
開示の動きベクトル検出回路、動画像符号化装置及び動きベクトル検出方法によれば、少ないキャッシュ量で適切な動きベクトルの検出が可能となる。
【図面の簡単な説明】
【００１０】
【図１】本実施の形態の動画像符号化装置の一例を示す図である。
【図２】処理される画像フレームの流れの一例を示す図である。
【図３】１フレームの原画像フレームと縮小原画像フレームの一例を示す図である。
【図４】縮小動きベクトルの検出処理の一例を示すフローチャートである。
【図５】縮小符号化対象フレームと縮小符号化対象ブロックの一例を示す図である。
【図６】大小２つの探索範囲と縮小動きベクトルの検出例を示す図である。横軸はｘ，縦軸はｙである。
【図７】縮小動きベクトル検出処理で得られる値の一例を示す図である。
【図８】参照フレームの決定処理の一例を示すフローチャートである。
【図９】動きベクトルの検出処理の一例の様子を示す図である。
【図１０】データ保持部がキャッシュする参照フレーム中の画像領域の一例を示す図である。
【図１１】データ保持部がキャッシュする参照フレームＦ，Ｂ中の画像領域の一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態を、図面を参照しつつ説明する。
図１は、本実施の形態の動画像符号化装置の一例を示す図である。
動画像符号化装置１０は、動きベクトル検出回路１１と動画像符号化処理部１２を有している。また、動きベクトル検出回路１１は、縮小画像生成部１１ａ、縮小動きベクトル検出部１１ｂ、参照フレーム決定部１１ｃ、データ保持部１１ｄと、動きベクトル検出部１１ｅを有する。
【００１２】
縮小画像生成部１１ａは、撮像部２０で撮影され、メモリ（たとえば、ＳＤＲＡＭ（Synchronous Dynamic Random Access Memory））３０に保存された符号化対象の原画像フレームを読み出し、縮小符号化対象フレームを生成する。また、縮小画像生成部１１ａは、動画像符号化処理部１２で生成される参照フレームに対しても縮小処理を行い、縮小参照フレームを生成する。
【００１３】
縮小動きベクトル検出部１１ｂは、メモリ３０から縮小符号化対象フレームと縮小参照フレームを読み出し、縮小符号化対象フレームに含まれる縮小符号化対象ブロックと縮小参照フレームの間で縮小動きベクトルの検出を行う。ここで、縮小動きベクトル検出部１１ｂは、複数の縮小参照フレームに対して、それぞれ、大きさの異なる２つの探索範囲ごとに縮小動きベクトルを検出する。つまり、大小２つの探索範囲に対してそれぞれ縮小動きベクトルが検出される。以下では小さい方の探索範囲を探索範囲ｃ１、大きい方の探索範囲を探索範囲ｃ２とする。
【００１４】
さらに、縮小動きベクトル検出部１１ｂは、検出した縮小動きベクトルでの画像の類似度（縮小符号化対象ブロックと、縮小動きベクトルが指し示す縮小参照フレーム上の位置の画像との類似度）を求める。そして、縮小動きベクトル検出部１１ｂは、各縮小参照フレームの大きい方の探索範囲ｃ２で検出した縮小動きベクトルの類似度の縮小符号化対象フレーム全体の積算値（以下積算値Ｃｂという）を求める。また、縮小動きベクトル検出部１１ｂは、各縮小参照フレームの小さい方の探索範囲ｃ１で検出した縮小動きベクトルでの類似度のうち、各縮小参照フレーム間で最小のものを積算していき、フレーム全体の積算値（以下積算値Ｃａという）を求める。なお、ここでの類似度は、値が小さいほど類似していることを示すものであり、たとえば、ＳＡＤ（差分絶対値和）、差分二乗和や動きベクトルの符号化コストを考慮した値などである。
【００１５】
参照フレーム決定部１１ｃは、縮小動きベクトル検出部１１ｂが求めた積算値をもとに、等倍画像での動きベクトル検出に用いる参照フレームを決定する。積算値Ｃａが各縮小参照フレームにおける積算値Ｃｂよりも小さい場合は、複数の参照フレームを参照したほうが、精度よく動きベクトルを検出できる可能性が高い。また、何れかの縮小参照フレームにおける積算値Ｃｂが他の積算値よりも小さい場合は、その縮小参照フレームの等倍の参照フレームを参照することで精度よく動きベクトルを検出できる可能性が高い。
【００１６】
そのため、たとえば、参照フレーム決定部１１ｃは、全ての積算値Ｃａ，Ｃｂのなかで、各縮小参照フレームでの何れかの積算値Ｃｂが最も小さい場合には、その積算値Ｃｂを示す縮小参照フレームに対応した等倍の参照フレームを選択する。また、たとえば、参照フレーム決定部１１ｃは、全ての積算値Ｃａ，Ｃｂのなかで、積算値Ｃａが最も小さい場合には、各縮小参照フレームに対応した等倍の複数の参照フレームを選択する。
【００１７】
データ保持部１１ｄは、参照フレーム決定部１１ｃで決定された参照フレーム数に応じて、探索範囲ｃ１，ｃ２の何れかの大きさをもとに設定される範囲の参照フレームの画像データをキャッシュする。データ保持部１１ｄは、プリフェッチメモリとも呼ばれる。
【００１８】
たとえば、何れかの縮小参照フレームでの積算値Ｃｂが他の積算値よりも小さく、１つの参照フレームが選択された場合は、探索範囲ｃ２の大きさに基づいた範囲の参照フレームの画像データがキャッシュされる。また、積算値Ｃａが他の積算値よりも小さく、複数の参照フレームが選択された場合は、探索範囲ｃ１の大きさに基づいた範囲の各参照フレームの画像データがキャッシュされる。
【００１９】
つまり、大きな探索範囲で１つの参照フレームでの動きベクトルの検出が適している場合（積算値Ｃｂが最も小さい場合）には、その参照フレームの画像データに対してキャッシュが行われ、他の参照フレームの画像データはキャッシュされない。小さな探索範囲で複数の参照フレームでの動きベクトルの検出が適している場合（積算値Ｃａが最も小さい場合）には、小さい方の探索範囲ｃ１の大きさに基づいた範囲の画像データのキャッシュが行われる。そのため、少ないキャッシュ量で適切な動きベクトルを検出できる。
【００２０】
動きベクトル検出部１１ｅは、符号化対象フレームと参照フレームの縮小参照フレームにて検出された縮小動きベクトルをメモリ３０から読み出す。そして、動きベクトル検出部１１ｅは、データ保持部１１ｄでキャッシュされた画像データのうち、符号化対象フレームの符号化対象ブロックに対する参照領域の画像データをデータ保持部１１ｄから読み出して、動きベクトルの検出を行う。
【００２１】
動画像符号化処理部１２は、動きベクトル検出部１１ｅで検出された動きベクトルを用いて画面間予測符号化処理などの、動画像符号化処理を行う。
以下、本実施の形態の動画像符号化装置１０及び動きベクトル検出回路１１の動作をより具体的に説明する。
【００２２】
なお、以下では、縮小動きベクトルの検出の際に参照する縮小参照フレームが２フレームの場合について説明するが、これに限定されるわけではない。
まず、図１で示した動画像符号化装置１０と撮像部２０とメモリ３０における画像フレームの流れを説明する。
【００２３】
図２は、処理される画像フレームの流れの一例を示す図である。
横軸は時間である。また、上から、撮像部２０からメモリ３０に書き込まれる原画像フレーム、縮小画像生成部１１ａが生成してメモリ３０に書き込まれる縮小原画像フレーム、縮小動きベクトル検出部１１ｂで処理される縮小符号化対象フレームが示されている。さらに、メモリ３０から読み出されて縮小動きベクトル検出部１１ｂで参照される縮小参照フレームｆ，ｂが示されている。また、フレームＩ０，Ｉ１５はＩピクチャ、フレームＢ１〜Ｂ８，Ｂ１０〜Ｂ１４，Ｂ１６はＢピクチャ、フレームＰ３，Ｐ６，Ｐ９，Ｐ１２はＰピクチャを示している。
【００２４】
たとえば、時刻ｔ１では、メモリ３０は、撮像部２０が撮像したフレームＢ５を原画像フレームとして保存し、縮小画像生成部１１ａは、原画像フレームのフレームＢ４をメモリ３０から読み出し、縮小原画像フレームを生成し、メモリ３０に書き込む。また、縮小動きベクトル検出部１１ｂは、縮小画像生成部１１ａで縮小されたフレームＰ３を縮小符号化対象フレーム、縮小されたフレームＩ０を縮小参照フレームｆとして縮小動きベクトル検出を行う。
【００２５】
また、時刻ｔ２では、メモリ３０は、撮像部２０が撮像したフレームＰ９を原画像フレームとして保存し、縮小画像生成部１１ａは、原画像フレームのフレームＢ８をメモリ３０から読み出し、縮小原画像フレームを生成し、メモリ３０に書き込む。また、縮小動きベクトル検出部１１ｂは、縮小画像生成部１１ａで縮小されたフレームＢ４を縮小符号化対象フレーム、縮小されたフレームＰ３を縮小参照フレームｆ、縮小されたフレームＰ６を縮小参照フレームｂとして縮小動きベクトル検出を行う。
【００２６】
以下、動画像符号化装置１０の各部の動作を詳細に説明する。
（縮小画像生成部１１ａの動作）
図３は、１フレームの原画像フレームと縮小原画像フレームの一例を示す図である。
【００２７】
図中の白丸と黒丸は画素を示しており、黒丸の画素は縮小原画像フレームの生成の際にサンプリングされる画素を示している。
縮小画像生成部１１ａは、読み出した原画像フレームの各画素Ｐ（ｘ，ｙ）に対して、以下の式（１）に示す計算式でＰａ（ｘ，ｙ）を計算する。
【００２８】
【数１】
0005533309.tif 000002
【００２９】
ここで、ｘは水平方向の座標、ｙは垂直方向の座標、ａ（ｉ，ｊ）は係数を示す。ａ（ｉ，ｊ）は低周波通過フィルタとなるような値を用いることが望ましく、たとえば、ｉ，ｊの値に係わらず、ａ（ｉ，ｊ）＝１／４９などとすることが考えられる。次に縮小画像生成部１１ａは、計算したＰａ（ｘ，ｙ）のうち、ｘ＝４ｍ＋ａ、ｙ＝４ｎ＋ｂ（図３の黒丸）の画素をサンプリングし、これを縮小原画像フレームとしてメモリ３０に保存する。
【００３０】
ここで、ｍ，ｎは０以上の整数を表し、ａ，ｂは０以上３以下の任意の整数を表す。
低域通過フィルタを使うことで、原画像フレームに含まれる可能性があるインパルスノイズ、サンプリングにより発生する折り返し歪みの影響を抑制することができる。
【００３１】
（縮小動きベクトル検出部１１ｂの動作）
縮小動きベクトル検出部１１ｂは、図２で示した例で、縮小符号化対象フレームが、フレームＢ１，Ｂ２，Ｂ４，Ｂ５…の場合には、２つの縮小参照フレームｆ，ｂに対して、それぞれ大小２つの探索範囲で縮小動きベクトルを検出する。
【００３２】
図４は、縮小動きベクトルの検出処理の一例を示すフローチャートである。
ステップＳ１：縮小動きベクトル検出部１１ｂは、積算値ＣｏｓｔＦｗｄ，ＣｏｓｔＢｗｄ，ＣｏｓｔＢｉを０で初期化する。積算値ＣｏｓｔＦｗｄ，ＣｏｓｔＢｗｄは、縮小参照フレームｆ，ｂにおける、前述の積算値Ｃｂに対応する。また、積算値ＣｏｓｔＢｉは、前述の積算値Ｃａに対応する。
【００３３】
ステップＳ２：縮小動きベクトル検出部１１ｂは、縮小参照フレームｆに対して小さい方の探索範囲ｃ１で縮小動きベクトルと、その類似度ｃｏｓｔ＿ｆｗｄ＿ｓｍａｌｌを検出する。
【００３４】
ステップＳ３：縮小動きベクトル検出部１１ｂは、縮小参照フレームｆに対して大きい方の探索範囲ｃ２で縮小動きベクトルと、その類似度ｃｏｓｔ＿ｆｗｄ＿ｌａｒｇｅを検出する。
【００３５】
ステップＳ４：縮小動きベクトル検出部１１ｂは、縮小参照フレームｂに対して小さい方の探索範囲ｃ１で縮小動きベクトルと、その類似度ｃｏｓｔ＿ｂｗｄ＿ｓｍａｌｌを検出する。
【００３６】
ステップＳ５：縮小動きベクトル検出部１１ｂは、縮小参照フレームｂに対して大きい方の探索範囲ｃ２で縮小動きベクトルと、その類似度ｃｏｓｔ＿ｂｗｄ＿ｌａｒｇｅを検出する。
【００３７】
ステップＳ６：縮小動きベクトル検出部１１ｂは、積算値ＣｏｓｔＦｗｄ，ＣｏｓｔＢｗｄ，ＣｏｓｔＢｉの更新を行う。具体的には、縮小動きベクトル検出部１１ｂは、積算値ＣｏｓｔＦｗｄに類似度ｃｏｓｔ＿ｆｗｄ＿ｌａｒｇｅを加算し、積算値ＣｏｓｔＢｗｄに類似度ｃｏｓｔ＿ｂｗｄ＿ｌａｒｇｅを加算する。また、縮小動きベクトル検出部１１ｂは、積算値ＣｏｓｔＢｉに類似度ｃｏｓｔ＿ｆｗｄ＿ｓｍａｌｌと、類似度ｃｏｓｔ＿ｂｗｄ＿ｓｍａｌｌのうち小さい方の値を加算する。
【００３８】
ステップＳ７：縮小動きベクトル検出部１１ｂは、縮小符号化対象フレームの全縮小符号化対象ブロックに対して、縮小動きベクトルの検出処理が完了したか否かを判定し、完了していれば縮小動きベクトル検出部１１ｂでの処理を終了する。完了していなければ、次の縮小符号化対象ブロックに対して、ステップＳ２〜Ｓ７までの処理が繰り返される。
【００３９】
なお、ステップＳ２〜Ｓ５の処理は適宜順番を入れ替えてもよい。また、積算値ＣｏｓｔＦｗｄ，ＣｏｓｔＢｗｄ，ＣｏｓｔＢｉの計算は、全縮小符号化対象ブロックについての縮小動きベクトルの検出処理が終了した後に行ってもよい。
【００４０】
以下、上記のステップＳ２〜Ｓ６の詳細を説明する。
図５は、縮小符号化対象フレームと縮小符号化対象ブロックの一例を示す図である。
縮小動きベクトル検出部１１ｂでは、縮小符号化対象フレーム４０の全ての縮小符号化対象ブロック（図５の例では、０〜２３番目の縮小符号化対象ブロック）４１に対して、ステップＳ２〜Ｓ６の処理を実行する。
【００４１】
ステップＳ２，Ｓ３の処理では、縮小動きベクトル検出部１１ｂは、縮小参照フレームｆの大小２つの探索範囲ｃ１，ｃ２で、縮小動きベクトルを検出する。
図６は、大小２つの探索範囲と縮小動きベクトルの検出例を示す図である。横軸はｘ，縦軸はｙである。
【００４２】
破線で示したブロック５０は、縮小参照フレームｆにおいて、縮小符号化対象フレームの縮小符号化対象ブロックと同位置にあるブロックである。探索範囲ｃ１は、水平方向ｘで±Ｈ、垂直方向ｙで±ｖの大きさの領域であり、探索範囲ｃ２は、水平方向ｘで±Ｈ、垂直方向ｙで±Ｖの大きさの領域である。
【００４３】
たとえば、縮小動きベクトル検出部１１ｂは、図６に示すような探索範囲ｃ１で、縮小符号化対象ブロックと最も類似する部分の位置を示す縮小動きベクトルＶ１を検出し、探索範囲ｃ１よりも大きい探索範囲ｃ２でも同様に、縮小動きベクトルＶ２を検出する。なお、縮小動きベクトルＶ１，Ｖ２が同一となる場合もある。
【００４４】
ステップＳ４，Ｓ５の処理でも同様に、縮小動きベクトル検出部１１ｂは、縮小参照フレームｂにおいて、図６に示したような探索範囲ｃ１，ｃ２で縮小動きベクトルを検出する。
【００４５】
ステップＳ２〜Ｓ５での縮小動きベクトルの検出方法としては、たとえば、ブロックマッチング法が用いられる。ブロックマッチング法を用いる場合、縮小動きベクトル検出部１１ｂは処理対象の縮小符号化対象ブロックを、図６で示したような探索範囲ｃ１，ｃ２の中で１画素ずつずらしながら各点でＳＡＤを計算し、最も小さなＳＡＤとなる位置を縮小動きベクトルとする。座標（ｘ，ｙ）でのＳＡＤは以下の式（２）を用いて計算される。
【００４６】
【数２】
0005533309.tif 000003
【００４７】
ここで、Σはｉ＝０，１，２，…，ｍ−１及びｊ＝０，１，２，…，ｎ−１について和をとることを表す。Ｃ（ｉ，ｊ）は縮小符号化対象ブロックのｊ行ｉ列の位置の画素値であり、Ｒ（ｉ，ｊ）は縮小参照フレームにおける縮小符号化対象ブロックと同位置にあるブロックの左上の画素をＲ（０，０）としたときの水平方向ｉ、垂直方向ｊだけずれた点での画素値を表す。
【００４８】
たとえば、図６において、ｘ＝−６０、ｙ＝−２０の位置でのＳＡＤは、以下の式（３）にて計算される。
【００４９】
【数３】
0005533309.tif 000004
【００５０】
また、たとえば、原点を中心に水平方向ｘが±１０、垂直方向ｙが±５の範囲（探索範囲ｃ１の場合、Ｈ＝１０、ｖ＝５）でブロックマッチング法を行う場合、縮小動きベクトル検出部１１ｂは、以下のようにして縮小動きベクトルを算出する。
【００５１】
縮小動きベクトル検出部１１ｂは、−１０≦ｘ≦１０，−５≦ｙ≦５となる整数ｘ，ｙの全ての組み合わせに対してＳＡＤ（ｘ，ｙ）を計算する。ここで、ＳＡＤが最も小さくなるｘ，ｙの組み合わせが（ｘ，ｙ）＝（ＭＶｘ，ＭＶｙ）であったとき、ベクトル（ＭＶｘ，ＭＶｙ）が縮小動きベクトルとなる。
【００５２】
縮小動きベクトルの検出方法としては、上記のようなブロックマッチング法に限られず、勾配法などその他の様々な検出方法を用いてもよい。
なお、ステップＳ２〜Ｓ５の処理において、縮小動きベクトル検出部１１ｂは、検出した縮小動きベクトルでの類似度を求める。類似度ｃｏｓｔ＿ｆｗｄ＿ｓｍａｌｌ，ｃｏｓｔ＿ｆｗｄ＿ｌａｒｇｅ，ｃｏｓｔ＿ｂｗｄ＿ｓｍａｌｌ，ｃｏｓｔ＿ｂｗｄ＿ｌａｒｇｅとしては、たとえば、ＳＡＤが用いられる。たとえば、ステップＳ２の処理で得られた縮小動きベクトルが（ＭＶｘ，ＭＶｙ）であった場合、類似度ｃｏｓｔ＿ｆｗｄ＿ｓｍａｌｌ＝ＳＡＤ（ＭＶｘ，ＭＶｙ）とする。このように、類似度として、縮小動きベクトルの検出において既に求めているＳＡＤを用いることで、類似度を改めて計算しなくてよく、簡便である。
【００５３】
なお、類似度として、ＳＡＤ以外にも、差分二乗和や動きベクトルの符号化コストを考慮した値を採用するようにしてもよい。
以下に、１つの縮小符号化対象フレームの処理時に、縮小動きベクトル検出部１１ｂで得られる値の一例をまとめる。
【００５４】
図７は、縮小動きベクトル検出処理で得られる値の一例を示す図である。
図７では、各縮小符号化対象ブロックの処理ごとに得られるデータをまとめている。縮小動きベクトルｆｗｄ＿ｓｍａｌｌ＿ｖｅｃ，ｂｗｄ＿ｓｍａｌｌ＿ｖｅｃ，ｆｗｄ＿ｌａｒｇｅ＿ｖｅｃ，ｂｗｄ＿ｌａｒｇｅ＿ｖｅｃの値については図示を省略している。たとえば、０番目の縮小符号化対象ブロックの処理では、探索範囲ｃ１では、縮小参照フレームｆで類似度ｃｏｓｔ＿ｆｗｄ＿ｓｍａｌｌとしてＡ０、縮小参照フレームｂで類似度ｃｏｓｔ＿ｂｗｄ＿ｓｍａｌｌとしてＢ０が求められる。探索範囲ｃ２では、縮小参照フレームｆで類似度ｃｏｓｔ＿ｆｗｄ＿ｌａｒｇｅとしてＣ０、縮小参照フレームｂで類似度ｃｏｓｔ＿ｂｗｄ＿ｌａｒｇｅとしてＤ０が求められる。また、類似度ｃｏｓｔ＿ｆｗｄ＿ｓｍａｌｌと類似度ｃｏｓｔ＿ｂｗｄ＿ｓｍａｌｌのうち小さい方を示すｍｉｎ（Ａ０，Ｂ０）が得られる。
【００５５】
また、類似度ｃｏｓｔ＿ｆｗｄ＿ｌａｒｇｅのｎ個（図５の縮小符号化対象フレーム４０の場合ｎ＝２３）の積算値ＣｏｓｔＦｗｄ（＝Ｃ０＋Ｃ１＋…Ｃｎ）が得られる。また、類似度ｃｏｓｔ＿ｂｗｄ＿ｌａｒｇｅのｎ個の積算値ＣｏｓｔＢｗｄ（＝Ｄ０＋Ｄ１＋…Ｄｎ）が得られる。また、ｍｉｎ（ｃｏｓｔ＿ｆｗｄ＿ｓｍａｌｌ，ｃｏｓｔ＿ｂｗｄ＿ｓｍａｌｌ）のｎ個の積算値ＣｏｓｔＢｉ（＝ｍｉｎ（Ａ０，Ｂ０）＋ｍｉｎ（Ａ１，Ｂ１）＋…ｍｉｎ（Ａｎ，Ｂｎ））が得られる。
【００５６】
（参照フレーム決定部１１ｃの動作）
参照フレーム決定部１１ｃは、縮小動きベクトル検出部１１ｂから、図４で示した処理により算出された積算値ＣｏｓｔＦｗｄ，ＣｏｓｔＢｗｄ，ＣｏｓｔＢｉを受け取り、動きベクトル検出部１１ｅで使用する参照フレームを決定する。
【００５７】
図８は、参照フレームの決定処理の一例を示すフローチャートである。
ステップＳ１０：参照フレーム決定部１１ｃは、積算値ＣｏｓｔＦｗｄ，ＣｏｓｔＢｗｄ，ＣｏｓｔＢｉのうち、積算値ＣｏｓｔＦｗｄが最小であるか否か判定する。すなわち、参照フレーム決定部１１ｃは、ｍｉｎ（ＣｏｓｔＦｗｄ，ＣｏｓｔＢｗｄ，ＣｏｓｔＢｉ）＝＝ＣｏｓｔＦｗｄであるか否かを判定する。
【００５８】
ステップＳ１１：ｍｉｎ（ＣｏｓｔＦｗｄ，ＣｏｓｔＢｗｄ，ＣｏｓｔＢｉ）＝＝ＣｏｓｔＦｗｄであった場合には、参照フレーム決定部１１ｃは、縮小参照フレームｆの等倍の参照フレームＦを選択し、参照フレームの決定処理を終了する。
【００５９】
ステップＳ１２：ｍｉｎ（ＣｏｓｔＦｗｄ，ＣｏｓｔＢｗｄ，ＣｏｓｔＢｉ）＝＝ＣｏｓｔＦｗｄでない場合には、参照フレーム決定部１１ｃは、積算値ＣｏｓｔＢｗｄ，ＣｏｓｔＢｉのうち、積算値ＣｏｓｔＢｗｄが最小であるか否か判定する。すなわち、参照フレーム決定部１１ｃは、ｍｉｎ（ＣｏｓｔＢｗｄ，ＣｏｓｔＢｉ）＝＝ＣｏｓｔＢｗｄであるか否か判定する。
【００６０】
ステップＳ１３：ｍｉｎ（ＣｏｓｔＢｗｄ，ＣｏｓｔＢｉ）＝＝ＣｏｓｔＢｗｄであった場合には、参照フレーム決定部１１ｃは、縮小参照フレームｂの等倍の参照フレームＢを選択し、参照フレームの決定処理を終了する。
【００６１】
ステップＳ１４：ｍｉｎ（ＣｏｓｔＢｗｄ，ＣｏｓｔＢｉ）＝＝ＣｏｓｔＢｗｄでない場合、すなわち、積算値ＣｏｓｔＢｉが３つの中で最小の場合、参照フレーム決定部１１ｃは、参照フレームＦと参照フレームＢを選択し、参照フレームの決定処理を終了する。
【００６２】
なお、積算値ＣｏｓｔＦｗｄ，ＣｏｓｔＢｗｄ，ＣｏｓｔＢｉのうち、最も小さい値が複数存在する場合、参照フレーム決定部１１ｃは、たとえば、積算値ＣｏｓｔＦｗｄ，ＣｏｓｔＢｗｄ，ＣｏｓｔＢｉの順で優先する。たとえば、ＣｏｓｔＦｗｄ＝ＣｏｓｔＢｗｄ＜ＣｏｓｔＢｉの場合、参照フレーム決定部１１ｃは、参照フレームＦの１フレームを選択する。
【００６３】
なお、優先する順序は特に積算値ＣｏｓｔＦｗｄ，ＣｏｓｔＢｗｄ，ＣｏｓｔＢｉの順に限られるものではない。
上記のようにして、決定された参照フレームの情報はデータ保持部１１ｄと、動きベクトル検出部１１ｅに通知される。
【００６４】
（動きベクトル検出部１１ｅの動作）
動きベクトル検出部１１ｅは、参照フレーム決定部１１ｃにて選択された参照フレームを用いて動きベクトルの検出を行う。たとえば、参照フレーム決定部１１ｃが、参照フレームＦを選択した場合、参照フレームＦを対象として動きベクトルの検出を行う。また、参照フレーム決定部１１ｃが、参照フレームＦと参照フレームＢの両方を選択した場合、参照フレームＦと参照フレームＢの両方に対して、それぞれ動きベクトルの検出を行う。
【００６５】
図９は、動きベクトルの検出処理の一例の様子を示す図である。
図９では、参照フレームＦに対する動きベクトルの検出の様子を示している。ブロック６１は、符号化対象フレームにおける符号化対象ブロック（１６×１６画素）の位置を示している。動きベクトルの探索範囲は、縮小画像生成部１１ａでの水平方向、垂直方向の縮小率が１／ｍ、１／ｎの場合、縮小動きベクトルの水平成分と垂直成分をｍ倍、ｎ倍したベクトルＶｃを中心として、たとえば、水平方向±（ｍ−１）、垂直方向±（ｎ−１）とする。図９では、ｍ＝ｎ＝４の場合の例を示しており、ベクトルＶｃは、（４ＭＶｘ，４ＭＶｙ）である。また、図９に示す例では、探索範囲６０は、ベクトルＶｃの指す先を中心として、水平方向−３から＋３画素、垂直方向−３から＋３画素、つまり７×７画素の大きさとなっている。動きベクトル検出部１１ｅは、このような探索範囲６０を含む参照領域をデータ保持部１１ｄから読み出して動きベクトルの検出を行う。
【００６６】
縮小動きベクトルは、図７に示したように、縮小符号化対象ブロックごとに、たとえば，ｆｗｄ＿ｓｍａｌｌ＿ｖｅｃ，ｂｗｄ＿ｓｍａｌｌ＿ｖｅｃ，ｆｗｄ＿ｌａｒｇｅ＿ｖｅｃ，ｂｗｄ＿ｌａｒｇｅ＿ｖｅｃがある。
【００６７】
参照フレーム決定部１１ｃが参照フレームＦを選択している場合には、動きベクトル検出部１１ｅは、縮小動きベクトルとして、ｆｗｄ＿ｌａｒｇｅ＿ｖｅｃを用いる。参照フレーム決定部１１ｃが参照フレームＢを選択している場合には、動きベクトル検出部１１ｅは、縮小動きベクトルとして、ｂｗｄ＿ｌａｒｇｅ＿ｖｅｃを用いる。また、参照フレーム決定部１１ｃが参照フレームＦ，Ｂの両方を選択している場合、動きベクトル検出部１１ｅは参照フレームＦに対する探索の際にはｆｗｄ＿ｓｍａｌｌ＿ｖｅｃを、参照フレームＢに対する探索の際にはｂｗｄ＿ｓｍａｌｌ＿ｖｅｃを用いる。
【００６８】
動きベクトル検出部１１ｅでの動きベクトルの検出方法としては、前述したブロックマッチング法などが適用可能である。
また、動きベクトル検出部１１ｅは、符号化対象フレームの水平方向の全符号化対象ブロックに対して動きベクトルの検出が終了すると、データ保持部１１ｄに、キャッシュする領域（以下プリフェッチ領域という）を更新させる旨の信号を通知する。
【００６９】
（データ保持部１１ｄの動作）
データ保持部１１ｄは、参照フレームとその数に応じて、メモリ３０から参照フレームの一部のデータを読み出し、一時的にキャッシュする。そして、データ保持部１１ｄは、動きベクトル検出部１１ｅに対して、動きベクトル検出処理で参照する参照領域の画像データを供給する。
【００７０】
図１０は、データ保持部がキャッシュする参照フレーム中の画像領域の一例を示す図である。図１０（Ａ），（Ｂ），（Ｃ）では、参照フレーム決定部１１ｃにより参照フレームＦが１つ選択された場合の、プリフェッチ領域７２ａ，７２ｂが示されている。
【００７１】
図１０（Ａ）に示すように、ブロック７０ａは、符号化対象フレームにおける符号化対象ブロックの位置を示している。
縮小画像生成部１１ａでの水平方向、垂直方向の縮小率が、それぞれ１／４の場合、動きベクトル検出部１１ｅが参照する参照領域７１ａは、たとえば、ブロック７０ａを垂直方向に４Ｖ＋３、水平方向に４Ｈ＋３拡大したものとする。
【００７２】
ここで、ＶとＨは、図６に示したような、縮小参照フレームｆでの探索範囲ｃ２の大きさを示す値である。参照フレームＦが選択された場合、探索範囲ｃ２で検出される縮小動きベクトルｆｗｄ＿ｌａｒｇｅ＿ｖｅｃが用いられるため、この探索範囲ｃ２の値が用いられる。また、＋３とする理由は、動きベクトル検出部１１ｅが縮小動きベクトルｆｗｄ＿ｌａｒｇｅ＿ｖｅｃの水平成分と垂直成分を４倍したベクトルＶｃを中心に、図９に示したように、±３の探索範囲で動きベクトル検出を行うからである。
【００７３】
この場合、データ保持部１１ｄがキャッシュするプリフェッチ領域７２ａは、たとえば、垂直方向の長さが参照領域７１ａと同じで、水平方向は参照フレームＦの水平方向の長さとなる領域とする。
【００７４】
このようにすることで、図１０（Ｂ）に示すように、水平方向の次の符号化対象ブロックに対する動きベクトル検出を行う際、ブロック７０ｂの周囲の参照領域７０ｂはプリフェッチ領域７２ａに含まれている。そのため、データ保持部１１ｄは、新たに画像データをメモリ３０から読み出さなくてよい。データ保持部１１ｄは、図１０（Ｃ）に示すように、ブロック７０ａに対して垂直方向の次の行の符号化対象ブロックに対する動きベクトル検出を行う際、ブロック７０ｃの周囲の参照領域７０ｃを含むように、プリフェッチ領域７２ｂを更新する。
【００７５】
プリフェッチ領域７２ａ，７２ｂの更新のタイミングは、たとえば、動きベクトル検出部１１ｅから、水平方向の全符号化対象ブロックでの動きベクトル検出処理が終了したことを示す検出完了信号の通知を受けたときのタイミングとすればよい。
【００７６】
以上のように、参照フレームＦが選択される場合、データ保持部１１ｄは、縮小動きベクトルｆｗｄ＿ｌａｒｇｅ＿ｖｅｃの探索範囲ｃ２の垂直方向の範囲（±Ｖ）をもとに決まる大きさのプリフェッチ領域の画像データをキャッシュすればよい。この場合、データ保持部１１ｄは、参照フレームＢの画像データをキャッシュしなくてよい。
【００７７】
参照フレーム決定部１１ｃにて参照フレームＢが選択された場合も、探索範囲ｃ２で検出される縮小動きベクトルｂｗｄ＿ｌａｒｇｅ＿ｖｅｃが用いられるため、図１０に示したプリフェッチ領域７２ａ，７２ｂと同様の大きさのプリフェッチ領域が設定される。この場合、データ保持部１１ｄは、参照フレームＦの画像データをキャッシュしなくてよい。
【００７８】
参照フレーム決定部１１ｃにて参照フレームＦ，Ｂが両方選択された場合、探索範囲ｃ１で検出される縮小動きベクトルｆｗｄ＿ｓｍａｌｌ＿ｖｅｃ，ｂｗｄ＿ｓｍａｌｌ＿ｖｅｃが用いられる。この場合、プリフェッチ領域は以下のようになる。
【００７９】
図１１は、データ保持部がキャッシュする参照フレームＦ，Ｂ中の画像領域の一例を示す図である。図１１（Ａ）が参照フレームＦにおけるプリフェッチ領域８２ａ、図１１（Ｂ）が参照フレームＢにおけるプリフェッチ領域８２ｂを示している。
【００８０】
図１１（Ａ），（Ｂ）に示すように、ブロック８０ａは、符号化対象フレームにおける符号化対象ブロックの位置を示している。
水平方向、垂直方向の縮小率が、それぞれ１／４の場合、動きベクトル検出部１１ｅは、それぞれの参照フレームＦ，Ｂで参照する参照領域８１ａ，８１ｂを、たとえば、ブロック８０ａを垂直方向に４ｖ＋３、水平方向に４Ｈ＋３拡大したものとする。
【００８１】
ここで、ｖとＨは、図６に示したような、探索範囲ｃ１の大きさを示す値である。参照フレームＦ，Ｂが選択された場合、探索範囲ｃ１で検出される縮小動きベクトルｆｗｄ＿ｓｍａｌｌ＿ｖｅｃ，ｂｗｄ＿ｓｍａｌｌ＿ｖｅｃが用いられるため、この探索範囲ｃ１の値が用いられる。
【００８２】
参照フレーム決定部１１ｃにて参照フレームＦ，Ｂが両方選択された場合、データ保持部１１ｄは、参照フレームＦ，Ｂの両方の画像データをキャッシュすることになる。しかし、それぞれのプリフェッチ領域８２ａ，８２ｂは、探索範囲ｃ２と比べて小さい探索範囲ｃ１の垂直方向の長さをもとに大きさが決まるため、図１０で示したプリフェッチ領域７２ａ，７２ｂよりも小さくできる。したがって、データ保持部１１ｄのキャッシュ量を削減できる。
【００８３】
以上のように、本実施の形態の動きベクトル検出回路１１では、大小の探索範囲で検出した縮小動きベクトルでの類似度の積算から参照フレーム数を決め、その数に応じ、大小の何れの探索範囲に応じた範囲の参照フレームの画像データを保持するか決めている。これにより、少ないキャッシュ量でも、処理対象の動画像の動きの大きさに応じた、より精度の高い適切な動きベクトルを検出できる。
【００８４】
（動画像符号化処理部１２の動作）
動画像符号化処理部１２は、メモリ３０から、符号化対象フレームと参照フレームと動きベクトル検出部１１ｅで検出された動きベクトルを入力して、画面間予測符号化処理などの、動画像符号化処理を行う。そして、動画像符号化処理部１２は、符号化した画像データをメモリ３０に書き込む。また、動画像符号化処理部１２は、後続のフレームのための参照フレームを生成してメモリ３０に書き込む。
【００８５】
動画像符号化処理部１２では、動きベクトル検出回路１１が検出した高精度の動きベクトルを用いて動画像符号化を行うことで、復号再生したときの画像の品質が高い動画像符号化データを生成することが可能となる。
【００８６】
以上、実施の形態に基づき、本発明の動きベクトル検出回路、動画像符号化装置及び動きベクトル検出方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【００８７】
たとえば、類似度の積算は、縮小動きベクトル検出部１１ｂではなく、参照フレーム決定部１１ｃで行うようにしてもよい。また、縮小動きベクトル検出部１１ｂにおいて、縮小参照フレームは、３つ以上用いてもよい。その場合、探索範囲ｃ１をより小さくすることで、データ保持部１１ｄのキャッシュ量を少なくできる。
【００８８】
また、上記の説明では、プリフェッチ領域の水平方向の長さは、参照フレームの水平方向の長さと等しいとしたがこれに限定されず、動きベクトル検出部１１ｅが参照する参照領域の部分だけ、キャッシュするようにしてもよい。その場合、データ保持部１１ｄは、たとえば、各符号化対象ブロックの処理ごとに、新たに参照領域として参照する分だけメモリ３０から画像データを読み出すようにすればよい。
【符号の説明】
【００８９】
１０  動画像符号化装置
１１  動きベクトル検出回路
１１ａ  縮小画像生成部
１１ｂ  縮小動きベクトル検出部
１１ｃ  参照フレーム決定部
１１ｄ  データ保持部
１１ｅ  動きベクトル検出部
１２  動画像符号化処理部
２０  撮像部
３０  メモリ
【図１】
0005533309.tif 000005
【図２】
0005533309.tif 000006
【図３】
0005533309.tif 000007
【図４】
0005533309.tif 000008
【図５】
0005533309.tif 000009
【図６】
0005533309.tif 000010
【図７】
0005533309.tif 000011
【図８】
0005533309.tif 000012
【図９】
0005533309.tif 000013
【図１０】
0005533309.tif 000014
【図１１】
0005533309.tif 000015