JPWO2005036887A1 - 動きベクトル探索方法、動きベクトル探索装置および動きベクトル探索プログラム - Google Patents

動きベクトル探索方法、動きベクトル探索装置および動きベクトル探索プログラム Download PDF

Info

Publication number
JPWO2005036887A1
JPWO2005036887A1 JP2005514685A JP2005514685A JPWO2005036887A1 JP WO2005036887 A1 JPWO2005036887 A1 JP WO2005036887A1 JP 2005514685 A JP2005514685 A JP 2005514685A JP 2005514685 A JP2005514685 A JP 2005514685A JP WO2005036887 A1 JPWO2005036887 A1 JP WO2005036887A1
Authority
JP
Japan
Prior art keywords
motion vector
search
search range
value
determining
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2005514685A
Other languages
English (en)
Inventor
山田 徹
徹 山田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Publication of JPWO2005036887A1 publication Critical patent/JPWO2005036887A1/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search

Abstract

本発明の動きベクトル探索では、探索した動きベクトルを記憶しておき、これらのすでに探索をおこなった隣接ブロックの動きベクトルの値を用い、この動きベクトルの水平、垂直各成分の絶対値の定数倍を探索範囲とすることで、少ない演算量で適切な探索範囲を決定する。

Description

本発明は、動き補償予測符号化技術に関し、特に動きベクトル探索方法、動きベクトル探索装置及びその動きベクトル探索プログラムに関する。
動画像信号を記録、あるいは伝送する際の圧縮符号化では、符号化効率を高めるために画像フレーム間の相関を利用した符号化方法が一般に用いられる。画像フレーム間の相関を利用する符号化方式は動き補償予測符号化と呼ばれ、MPEG(Moving Picture EXperts Group)などで採用されている。
動き補償予測符号化では、フレーム間における映像の動きの情報(動きベクトル)と、動きベクトルによって生成される予測画像と符号化中のフレームとの差分画像(予測誤差)を符号化する。画像フレーム間の相関が大きければ、予測誤差が小さくなり、符号化する情報量を小さくでき、圧縮率を向上させることができる。
動き補償予測符号化では、一般に、フレームを16×16画素などの一定サイズのブロックに分割し、分割したブロックごとに動きベクトルを割り当てる。具体的には、すでに符号化が完了しているフレーム(参照フレーム)の中から、ブロックごとに相関が最も大きくなる場所を探し、そのブロック間の差分を求め、符号化する。
相関が大きくなる場所を探す処理を動きベクトル探索という。相関の大小は、参照フレームと符号化中フレームとのブロック内の各画素の差異を総和することで評価できる。
動きベクトル探索の処理において、フレームのどの領域を探索するかは任意である。狭い範囲を探索すれば探索に要する演算量は少なくすむが、動きの大きな映像が入力された場合に適切な動きベクトルが検出できなくなり符号化効率が低下してしまう。一方、広い範囲を探索すれば動きの大きな映像に対して適切な動き補償予測が可能になり符号化効率は向上するが演算量が膨大になってしまう。従って、映像中の動きの大きさに応じて適応的に探索範囲を切替えることが望ましい。
動きベクトル探索において探索範囲を適応的に切替える装置の一例が、特開平5−328333(文献1)、特開2000−134628(文献2)に記載されている。
文献1に記載されている動きベクトル探索装置は、図1に示すように、動きベクトル検出回路と、動きベクトルメモリと、探索範囲判定器と、探索範囲選択器とから構成されている。
このような構成を有する従来の動きベクトル探索装置はつぎのように動作する。
すなわち、動きベクトルメモリに蓄えられた過去に検出した複数の動きベクトルのヒストグラムを計測し、計測したヒストグラムに応じて適切な探索範囲が探索範囲判定器により決定される。探索範囲選択器では有限種類の探索範囲が用意されており、探索範囲判定器での決定に従い、1つの探索範囲が選択される。
文献2に記載されている動きベクトル探索装置では、まず一つおきのブロックの動きベクトルを先に求める。次にこの動きベクトルの値が、残りのブロックでの動きベクトル探索の探索範囲決定に利用される。
文献1で開示されている方法を用いた場合、過去に求めた動きベクトルのヒストグラムを常に計測しなければならないので、探索範囲を求めるために余分な演算量が必要になるという問題があった。また、最終的に用いられる探索範囲が有限種類しか用意されておらず、選択された探索範囲が最適なものではない可能性があった。
文献2で開示されている方法を用いた場合、先に動きベクトルを求めるブロックは探索範囲が固定されており、不適切な探索範囲で動きベクトル探索が実行される可能性があった。また、半分のブロックしか適応的に探索範囲を切替えることができないので、探索範囲を適応的に切替えることにより得られる効果が半減されるという問題があった。
そこで、本発明は上記課題に鑑みて発明されたものであって、その目的は、少ない演算量で探索範囲を決定し、適切な探索範囲で動きベクトル探索できる新規な動きベクトル探索方法、装置及びプログラムを提供することにある。
上記課題を解決する第1の発明は、動画像の符号化における動きベクトルを探索する動きベクトル探索装置において、検出した動きベクトルを記憶する手段と、探索が完了した周囲ブロックの動きベクトルの大きさから探索範囲を決定する手段とを有し、周囲ブロックの動きベクトルの値から算出された値を探索範囲として動きベクトル探索処理をおこなうことを特徴とする。
上記課題を解決する第2の発明は、上記第1の発明において、前記探索範囲を決定する手段は、探索が完了した周囲ブロックにおける動きベクトルの大きさの整数倍を、探索範囲として決定する手段であることを特徴とする。
上記課題を解決する第3の発明は、上記第1又は2の発明において、前記探索範囲を決定する手段は、複数の周囲ブロックの動きベクトルの最大値に基づいて、探索範囲を決定する手段であることを特徴とする。
上記課題を解決する第4の発明は、上記第1から第3のいずれかの発明において、前記探索範囲を決定する手段は、探索範囲を決定する過程において、得られた予測誤差の値が大きくなる場合は探索範囲が適切でないと判断し、探索範囲をあらかじめ定められた値とする手段を更に有することを特徴とする。
上記課題を解決する第5の発明は、上記第1から第4のいずれかの発明において、探索領域の中心を隣接ブロックの動きベクトルの位置にシフトし、探索をおこなう手段を更に有することを特徴とする。
上記課題を解決する第6の発明は、上記第1から第5のいずれかの発明において、前記探索範囲を決定する手段は、探索範囲の最大値及び最小値を予め設定しておき、算出された探索範囲が、前記最大値又は前記最小値を超える場合には、前記最大値又は前記最小値を探索範囲として決定する手段を更に有することを特徴とする。
上記課題を解決する第7の発明は、上記第1から第6のいずれかの発明において、前記探索範囲を決定する手段は、すでに探索をおこなった隣接ブロックの動きベクトルの値を用い、動きベクトルの水平、垂直各成分の絶対値の定数倍を探索範囲として決定する手段であることを特徴とする。
上記課題を解決する第8の発明は、ビデオ符号化装置であって、検出した動きベクトルを記憶する手段と、探索が完了した周囲ブロックの動きベクトルの大きさから探索範囲を決定する手段とを有し、周囲ブロックの動きベクトルの値から算出された値を探索範囲として動きベクトル探索処理をおこなう動きベクトル探索装置を有することを特徴とする。
上記課題を解決する第9の発明は、上記第8の発明において、前記探索範囲を決定する手段は、探索が完了した周囲ブロックにおける動きベクトルの大きさの整数倍を、探索範囲として決定する手段であることを特徴とする。
上記課題を解決する第10の発明は、上記第8又は第9の発明において、前記探索範囲を決定する手段は、複数の周囲ブロックの動きベクトルの最大値に基づいて、探索範囲を決定する手段であることを特徴とする。
上記課題を解決する第11の発明は、上記第8から第10のいずれかの発明において、前記探索範囲を決定する手段は、探索範囲を決定する過程において、得られた予測誤差の値が大きくなる場合は探索範囲が適切でないと判断し、探索範囲をあらかじめ定められた値とする手段であることを特徴とする。
上記課題を解決する第12の発明は、上記第8から第11のいずれかの発明において、前記動きベクトル探索装置は、探索領域の中心を隣接ブロックの動きベクトルの位置にシフトし、探索をおこなう手段を更に有することを特徴とする。
上記課題を解決する第13の発明は、上記第8から第12のいずれかの発明において、前記探索範囲を決定する手段は、探索範囲の最大値及び最小値を予め設定しておき、算出された探索範囲が、前記最大値又は前記最小値を超える場合には、前記最大値又は前記最小値を探索範囲として決定する手段を更に有することを特徴とする。
上記課題を解決する第14の発明は、上記第8から第13のいずれかの発明において、前記探索範囲を決定する手段は、すでに探索をおこなった隣接ブロックの動きベクトルの値を用い、動きベクトルの水平、垂直各成分の絶対値の定数倍を探索範囲として決定する手段であることを特徴とする。
上記課題を解決する第15の発明は、動画像の符号化における動きベクトルを探索する方法において、検出した動きベクトルを記憶しておき、探索が完了した周囲ブロックの動きベクトルの大きさから探索範囲を決定し、周囲ブロックの動きベクトルの値から算出された値を探索範囲として動きベクトル探索処理をおこなうことを特徴とする。
上記課題を解決する第16の発明は、上記第15の発明において、探索範囲を、探索が完了した周囲ブロックにおける動きベクトルの大きさの整数倍に決定することを特徴とする。
上記課題を解決する第17の発明は、上記第15又は第16の発明において、探索範囲を、複数の周囲ブロックの動きベクトルの最大値に基づいて決定することを特徴とする。
上記課題を解決する第18の発明は、上記第15から第17のいずれかの発明において、探索範囲決定の過程で、得られた予測誤差の値が大きくなる場合は探索範囲が適切でないと判断し、探索範囲をあらかじめ定められた値とすることを特徴とする。
上記課題を解決する第19の発明は、上記第15から第18のいずれかの発明において、探索が完了した周囲ブロックの動きベクトルの大きさから探索範囲を決定し、探索領域の中心を、隣接ブロックの動きベクトルの位置にシフトして探索をおこなうことを特徴とする。
上記課題を解決する第20の発明は、上記第15から第19のいずれかの発明において、探索範囲の最大値及び最小値を予め設定しておき、算出された探索範囲が、前記最大値又は前記最小値を超える場合には、前記最大値又は前記最小値を探索範囲として決定することを特徴とする。
上記課題を解決する第21の発明は、上記第15から第20のいずれかの発明において、すでに探索をおこなった隣接ブロックの動きベクトルの値を用い、動きベクトルの水平、垂直各成分の絶対値の定数倍を探索範囲として決定することを特徴とする。
上記課題を解決する第22の発明は、上記第15から第21のいずれかの発明の動きベクトル探索方法を用いて、ビデオ符号化を行うことを特徴とする。
上記課題を解決する第23の発明は、動画像の符号化における動きベクトル探索を実行するコンピュータシステムにおいて、対象画像データを格納する対象画像バッファと、参照画像を格納する参照画像バッファと、動きベクトルを記憶する動きベクトルメモリと、動画像の符号化における動きベクトル探索をコンピュータに実行させるための命令からなるプログラムを格納するプログラムメモリと、前記プログラムを実行するプログラム制御プロセッサとを有し、前記プログラムは、前記プログラム制御プロセッサに、動きベクトルメモリ中に記憶されている周囲ブロックの動きベクトルの値をもとに算出される値を探索範囲として動きベクトル探索を行わせることを特徴とする。
上記課題を解決する第24の発明は、上記第23の発明において、前記プログラムは、前記プログラム制御プロセッサに、探索が完了した周囲ブロックにおける動きベクトルの大きさの整数倍を、探索範囲として決定させることを特徴とする。
上記課題を解決する第25の発明は、上記第23又は第24の発明において、前記プログラムは、前記プログラム制御プロセッサに、複数の周囲ブロックの動きベクトルの最大値に基づいて、探索範囲を決定させることを特徴とする。
上記課題を解決する第26の発明は、上記第23から第25のいずれかの発明において、前記プログラムは、前記プログラム制御プロセッサに、得られた予測誤差の値が大きくなる場合は探索範囲が適切でないと判断させ、探索範囲をあらかじめ定められた値とさせることを特徴とする。
上記課題を解決する第27の発明は、上記第23から第26のいずれかの発明において、前記プログラムは、前記プログラム制御プロセッサに、探索領域の中心を隣接ブロックの動きベクトルの位置にシフトし探索をおこなうことを特徴とする。
上記課題を解決する第28の発明は、上記第23から第27のいずれかの発明において、前記プログラムは、前記プログラム制御プロセッサに、得られた予測誤差の値が大きくなる場合は探索範囲が適切でないと判断させ、探索範囲をあらかじめ定められた値とさせることを特徴とする。
上記課題を解決する第29の発明は、上記第23から第28のいずれかの発明において、前記プログラムは、前記プログラム制御プロセッサに、算出された探索範囲が、予め定められた探索範囲の最大値又は最小値を超える場合には、前記最大値又は前記最小値を探索範囲として決定させることを特徴とする。
上記課題を解決する第30の発明は、上記第23から第29のいずれかの発明において、前記プログラムは、前記プログラム制御プロセッサに、すでに探索をおこなった隣接ブロックの動きベクトルの値を用い、動きベクトルの水平、垂直各成分の絶対値の定数倍を探索範囲として決定させることを特徴とする。
上記課題を解決する第31の発明は、コンピュータを制御し、動画像の符号化における動きベクトルを探索する動きベクトル探索プログラムであって、前記動きベクトル探索プログラムは前記コンピュータに、探索が完了した周囲ブロックの動きベクトルの大きさから探索範囲を決定する機能と、決定した探索範囲で動きベクトル探索処理を行う機能を実行させることを特徴とする。
上記課題を解決する第32の発明は、上記第31の発明において、前記動きベクトル探索プログラムは、前記コンピュータに、探索が完了した周囲ブロックにおける動きベクトルの大きさの整数倍を、探索範囲として決定する機能を実行させることを特徴とする。
上記課題を解決する第33の発明は、上記第31又は第32の発明において、前記動きベクトル探索プログラムは、前記コンピュータに、複数の周囲ブロックの動きベクトルの最大値に基づいて、探索範囲を決定する機能を実行させることを特徴とする。
上記課題を解決する第34の発明は、上記第31から第33いずれかの発明において、前記動きベクトル探索プログラムは、前記コンピュータに、探索範囲を決定する過程において、得られた予測誤差の値が大きくなる場合は探索範囲が適切でないと判断し、探索範囲をあらかじめ定められた値とする機能を実行させることを特徴とする。
上記課題を解決する第35の発明は、上記第31から第34いずれかの発明において、前記動きベクトル探索プログラムは、前記コンピュータに、探索領域の中心を隣接ブロックの動きベクトルの位置にシフトし、探索をおこなう機能を実行させることを特徴とする。
上記課題を解決する第36の発明は、上記第31から第35いずれかの発明において、前記動きベクトル探索プログラムは、前記コンピュータに、探索範囲の最大値及び最小値を予め設定しておき、算出された探索範囲が、前記最大値又は前記最小値を超える場合には、前記最大値又は前記最小値を探索範囲として決定する機能を実行させることを特徴とする。
上記課題を解決する第37の発明は、上記第31から第36いずれかの発明において、前記動きベクトル探索プログラムは、前記コンピュータに、すでに探索をおこなった隣接ブロックの動きベクトルの値を用い、動きベクトルの水平、垂直各成分の絶対値の定数倍を探索範囲として決定する機能を実行させることを特徴とする。
図1は適応的に探索範囲変化させる動きベクトル探索法の従来例を示すブロック図である。
図2は本発明の実施例1の構成を示すブロック図である。
図3は本発明の実施例1の動作を示すフローチャートである。
図4は本発明の実施例2の動作の具体例を示す図である。
図5は本発明の実施例3の動作を示すフローチャートである。
図6は本発明の実施例4の動作を示すフローチャートである。
図7は本発明による動きベクトル探索装置の実施例であるコンピュータシステムを示すブロック図である。
図8は本発明の実施例1の具体的な動作を示す図である。
本発明の動きベクトル探索装置は、動きベクトルを探索する動きベクトル探索処理部と、求めた動きベクトルを記憶しておく動きベクトルメモリと、探索範囲を決定する探索範囲算出処理部とを備えている。
探索範囲算出処理部は、動きベクトルメモリからすでに求めた隣接ブロックの動きベクトルを取出し、隣接ブロックの動きベクトルの値をもとに適切な探索範囲を決定する。このような構成を採用し、動きベクトル探索における探索範囲を決定することにより本発明の目的を達成することができる。
本発明の第1の実施例について図面を参照して詳細に説明する。
図2を参照すると、本発明の第1の実施例における動きベクトル探索装置は、符号化中のフレームのデータを格納する現フレームバッファ201と、参照フレームを格納する参照フレームバッファ202と、動きベクトル探索処理をおこなう動き探索処理部203と、求めた動きベクトルを記憶しておく動きベクトルメモリ204と、探索範囲を決定する探索範囲算出処理部205とから構成されている。
次に、図2及び図3のフローチャートを参照し、実施例1の動作について詳細に説明する。
まず、現フレームバッファ201の先頭のブロックにポインタを合わせる(図3のステップA1)。
次に、現在ポイントされているブロックがフレームの先頭ブロックかどうかを調べる(ステップA2)。
先頭のブロックの場合は、水平方向探索範囲Xを初期値X0、垂直方向の探索範囲Yを初期値Y0とする(ステップA3)。初期値X0とY0とはあらかじめ設定されているものとする。
一方、先頭のブロックでない場合は、次に動きベクトルメモリ204に格納されている左隣のブロックの動きベクトル(x,y)を読み出す(ステップA4)。
水平方向探索範囲Xを左隣のブロックの動きベクトル水平成分xの絶対値abs(x)のa倍の値とする(ステップA5)。ここでaは任意の正数とする。ただし、ここでXの値は水平方向最大探索範囲Xmaxと水平方向最小探索範囲Xminの間に収まるようにクリッピングする(ステップA6)。尚、Xの値が水平方向最大探索範囲Xmax又は水平方向最小探索範囲Xminを超える場合には、Xの値を水平方向最大探索範囲Xmax又は水平方向最小探索範囲Xminとする。また、水平方向最大探索範囲Xmaxと水平方向最小探索範囲Xminの値はあらかじめ設定されているものとする。
垂直方向探索範囲Yは左隣のブロックの動きベクトル垂直成分yの絶対値abs(y)のb倍の値とする(ステップA7)。ここでbは任意の正数とする。ただし、ここでYの値は水平方向最大探索範囲Ymaxと水平方向最小探索範囲Yminの間に収まるようにクリッピングする(ステップA8)。尚、Yの値が水平方向最大探索範囲Ymax又は水平方向最小探索範囲Yminを超える場合には、Yの値を水平方向最大探索範囲Ymax又は水平方向最小探索範囲Yminとする。また、垂直方向最大探索範囲Ymaxと垂直方向最小探索範囲Yminの値はあらかじめ設定されているものとする。
これらの処理は、探索範囲算出処理部205にておこなわれる。
次に探索範囲を(±X、±Y)画素として動きベクトル探索をおこなう(ステップA9)。
次にステップA9で得られた動きベクトルを動きベクトルメモリ204に格納する(ステップA10)。
これらの処理は動き探索処理部203にておこなわれる。
フレーム内のすべてのブロックについて動きベクトル探索処理が完了したかを調べる(ステップA11)。
まだ動きベクトル探索をおこなっていないブロックがある場合は次のブロックにポインタを移動させ(ステップA12)、ステップA2にもどり動きベクトル探索処理を継続する。すべてのブロックの処理が完了していれば、そのフレームの動きベクトル探索処理を終了する。
次に、具体的な実施例を用いて本発明を実施するための最良の形態の動作を説明する。
図8に示すように、左隣のブロックの動きベクトルを(x,y)=(−4、3)とする。また、探索範囲の最大値を31、最小値を5、aの値を2、bの値を1とする。このとき水平方向探索範囲はabs(x)×a=4×2=8、垂直方向探索範囲はabs(y)×b=3×1=3と算出される。これらの値はいずれも探索範囲の最大値と最小値の間にあるので、これらの値をそのまま用い、(±8,±3)画素の範囲で動きベクトル探索をおこなうことになる。
上述の構成によれば、隣接するブロックの動きベクトルの値を元に探索範囲を求めているため、少ない演算量で適切な探索範囲を決定することができる。一般に、隣接ブロック間では動きベクトルに高い相関関係がある。従って、本実施例の方法で求めた探索範囲は実際の映像の動きとも高い相関があるといえる。
また、本実施例では、隣接するブロックの動きベクトルの水平成分、垂直成分をそれぞれ独立に用いて探索範囲を決定している。従って、映像中の動きに応じて探索範囲の広さ(面積)だけでなくその形状も適応的に変化することができる。例えば、隣接ブロックが水平方向に長い動きベクトルをもつ場合、探索範囲も水平方向に長い形状となる。
本発明の第2の実施例による動きベクトル探索装置について図4を参照して説明する。
第1の実施例では探索範囲を決定するために、左隣のブロックの動きベクトルの値を用いたが、実施例2では、探索範囲算出処理部205が、図4に示すようにすでに動きベクトルが求まっている複数の隣接ブロックから2つ以上のブロックを抽出し、各ブロックの動きベクトルの水平成分、垂直成分それぞれの絶対値の最大値を用いて実施例1のようにa倍、b倍することにより探索範囲を決定する。ここでa,bは任意の正数とする。
図4では、左、左上、上、右上の4つのブロックの動きベクトルから探索範囲を決定している。
このように周囲の複数のブロックの動きベクトルの最大値を元に探索範囲を決定することにより、左隣のブロックとの間において映像の動きに相関が小さい場合でも適切な探索範囲を決定することが可能になる。
本発明の第3の実施例による動きベクトル探索装置を説明する。
第3の実施例では、探索範囲算出処理部205は、探索範囲を決定すること過程で得られた予測誤差があらかじめ設定された閾値よりも大きくなった場合、探索範囲が適切でないと判断し、探索範囲を初期値に戻す例について説明する。
以下、図5のフローチャートを参照して、第3の実施例の動作を詳細に説明する。
まず、現フレームバッファの先頭のブロックにポインタを合わせる(図5のステップB1)。
次に、現在ポイントされているブロックがフレームの先頭ブロックかどうかを調べる(ステップB2)。
先頭のブロックの場合は、水平方向探索範囲Xを初期値X0、垂直方向の探索範囲Yを初期値Y0とする(ステップB3)。初期値X0とY0はあらかじめ設定されているものとする。先頭のブロックでない場合は、一つ前のブロックの動きベクトル探索で得られた最小予測誤差の値を閾値Thと比較する(ステップB4)。
ここで閾値Thはあらかじめ設定された値とする。
最小予測誤差が閾値Thよりも大きい場合は、探索範囲が適切でないと判断し、ステップB3で探索範囲を初期値に戻す。
最小予測誤差が閾値よりも小さい場合、動きベクトルメモリ204に格納されている左隣のブロックの動きベクトルを読み出す(ステップB5)。
次に、水平方向探索範囲Xを一つ前のブロックの動きベクトル水平成分xの絶対値abs(x)のa倍の値とする(ステップB6)。ここでaは任意の正数とする。ただし、ここでXの値は水平方向最大探索範囲Xmaxと水平方向最小探索範囲Xminの間に収まるようにクリッピングする(ステップB7)。尚、Xの値が水平方向最大探索範囲Xmax又は水平方向最小探索範囲Xminを超える場合には、Xの値を水平方向最大探索範囲Xmax又は水平方向最小探索範囲Xminとする。また、水平方向最大探索範囲Xmaxと水平方向最小探索範囲Xminの値はあらかじめ設定されているものとする。
垂直方向探索範囲Yは左隣のブロックの動きベクトル垂直成分yの絶対値abs(y)のb倍の値とする(ステップB8)。ここでbは任意の正数とする。ただし、ここでYの値は水平方向最大探索範囲Ymaxと水平方向最小探索範囲Yminの間に収まるようにクリッピングする(ステップB9)。垂直方向最大探索範囲Ymaxと垂直方向最小探索範囲Yminの値はあらかじめ設定されているものとする。尚、Yの値が水平方向最大探索範囲Ymax又は水平方向最小探索範囲Yminを超える場合には、Yの値を水平方向最大探索範囲Ymax又は水平方向最小探索範囲Yminとする。また、垂直方向最大探索範囲Ymaxと垂直方向最小探索範囲Yminの値はあらかじめ設定されているものとする。
これらの処理は、探索範囲算出処理部205にておこなわれる。
次に、探索範囲を(±X、±Y)画素として動きベクトル探索をおこなう(ステップB10)。
次に、ステップA10で得られた動きベクトルを動きベクトルメモリに格納する(ステップB11)。
次に、ステップA10でおこなった動きベクトル探索の結果得られた予測誤差をメモリに格納する(ステップB12)。
これらの処理は動き探索処理部203にておこなわれる。
フレーム内のすべてのブロックについて動きベクトル探索処理が完了したかを調べる(ステップB13)。
まだ、探索処理をおこなっていないブロックがある場合は、次のブロックにポインタを移動させ(ステップB14)、ステップB2にもどり動きベクトル探索処理を継続する。すべてのブロックの処理が完了していれば、そのフレームの動きベクトル探索処理を終了する。
上述の構成によれば、1フレームの動きベクトル探索中に、予測誤差があらかじめ設定された閾値よりも大きくなった場合に探索範囲が適切でないと判断し、探索範囲を初期値に戻す。従って、探索精度の低下を最小限に抑えることが可能となる。
第3の実施形においても、上述した第2の実施例のように周囲の複数のブロックの動きベクトルの絶対値の最大値を利用して探索範囲を決定することにより、左に隣接するブロック間の動きベクトルの相関が小さい場合でも適切な探索範囲を決定することが可能となる。
本発明の第4の実施例による動きベクトル探索装置について説明する。
ブロック間の動きの相関が高い場合は、動きベクトル探索の探索範囲の中心位置を隣接ブロックの動きベクトルが指す位置にシフトすることにより、より狭い探索範囲で正しい動きを検出することが可能になり、さらに演算量を削減できる。そこで、愛4の実施例では、ブロック間の動きの相関が高い場合は、動きベクトル探索の探索範囲の中心位置を隣接ブロックの動きベクトルが指す位置にシフトする例を説明する。以下、図6のフローチャートを参照して動作を説明する。
まず、現フレームバッファの先頭のブロックにポインタを合わせる(図6のステップC1)。
次に、現在ポイントされているブロックがフレームの先頭ブロックかどうかを調べる(ステップC2)。
先頭のブロックの場合は、水平方向探索範囲Xを初期値X0、垂直方向の探索範囲Yを初期値Y0とする(ステップC3)。初期値X0とY0はあらかじめ設定されているものとする。
先頭のブロックでない場合は、動きベクトルメモリ204に格納されている左隣のブロックの動きベクトルを読み出す(ステップC4)。
次に、水平方向探索範囲Xを左隣のブロックの動きベクトル水平成分xの絶対値abs(x)のa倍の値とする(ステップC5)。ここでaは任意の正数とする。ただし、ここでXの値は水平方向最大探索範囲Xmaxと水平方向最小探索範囲Xminの間に収まるようにクリッピングする(ステップC6)。尚、Xの値が水平方向最大探索範囲Xmax又は水平方向最小探索範囲Xminを超える場合には、Xの値を水平方向最大探索範囲Xmax又は水平方向最小探索範囲Xminとする。また、水平方向最大探索範囲Xmaxと水平方向最小探索範囲Xminの値はあらかじめ設定されているものとする。
垂直方向探索範囲Yは左隣のブロックの動きベクトル垂直成分yの絶対値abs(y)のb倍の値とする(ステップC7)。ここでbは任意の正数とする。ただし、ここでYの値は水平方向最大探索範囲Ymaxと水平方向最小探索範囲Yminの間に収まるようにクリッピングする(ステップC8)。尚、Yの値が水平方向最大探索範囲Ymax又は水平方向最小探索範囲Yminを超える場合には、Yの値を水平方向最大探索範囲Ymax又は水平方向最小探索範囲Yminとする。また、垂直方向最大探索範囲Ymaxと垂直方向最小探索範囲Yminの値はあらかじめ設定されているものとする。
これらの処理は、探索範囲算出処理部205にておこなわれる。
次に、探索中心を現在のブロックの位置から左隣のブロックの動きベクトル(x,y)だけ移動した場所とし(ステップC9)、探索範囲を(±X、±Y)画素として動きベクトル探索をおこなう(ステップC10)。
次にステップA10で得られた動きベクトルを保存するために動きベクトルメモリに格納する(ステップC11)。
これらの処理は動き探索処理部203にておこなわれる。
フレーム内のすべてのブロックについて動きベクトル探索処理が完了したかを調べる(ステップC12)。
まだ探索処理をおこなっていないブロックがある場合は次のブロックにポインタを移動させ(ステップC13)、ステップC2にもどり動きベクトル探索処理を継続する。すべてのブロックの処理が完了していれば、そのフレームの動きベクトル探索処理を終了する。
上述の如く、本実施例では、第1の実施例の構成に加えて、探索範囲の中心を隣接ブロックの動きベクトルが指す位置に移動させて動きベクトル探索を行っている。このことにより、ブロック間で動きベクトルの相関が大きい場合はより狭い探索範囲で正しい動きを検出することが可能となる。
尚、第4の実施例においても、第2の実施例のように周囲の複数のブロックの動きベクトルの絶対値の最大値を利用して探索範囲を決定することにより、探索精度を向上させることが可能になる。また、同様に第3の実施例のようにフレームの途中で探索範囲を初期値に戻すことで探索精度を向上させることも可能である。
本発明の第5の実施例による動きベクトル探索装置を説明する。
第5の実施例では、上述した第1の実施例から第4の実施例に示される動きベクトル探索装置をコンピュータシステムにより実行する例を説明する。
図7はコンピュータシステムを示すブロック図である。
このコンピュータシステムには、プログラム制御プロセッサ701が装備されている。プログラム制御プロセッサ701には、現フレームバッファ711および参照フレームバッファ712の他に、必要なプログラムを格納したプログラムメモリ702と動きベクトルメモリ713、が接続されている。
プログラムメモリ702には、本発明による動きベクトル探索を実行するためのメインプログラムの他に、上述した動き探索処理部714、探索範囲算出処理部715をそれぞれ機能的に実現するプログラムモジュールが格納されている。メインプログラムおよび各機能モジュールをプログラム制御プロセッサ701で実行することで、本発明による動きベクトル探索が実行される。
以上説明した本発明によれば、以下のような効果が達成される。
第1の効果は、高速に動きベクトル探索ができることである。その理由は、適応的に探索範囲を切替え、動きの小さな映像では狭い探索範囲で探索をおこなうためである。
第2の効果は、高速に探索範囲を決定できることである。その理由は、隣接するブロックの動きベクトルの大きさのみを使い探索範囲を決定するためである。
第3の効果は、適切な探索範囲形状で動きベクトル探索ができることである。その理由は、隣接するブロックの動きベクトルの水平方向、垂直方向それぞれの大きさに応じて探索範囲を決定するためである。
第4の効果は、動きベクトルの符号化効率が向上することである。その理由は、探索範囲が隣接するブロックの動きベクトルから決定されるので隣接ブロック間でベクトルのちらばりが小さくなり、隣接ブロック間でのベクトル差分が小さくなる。そのため、隣接ブロック間の差分が符号化される動きベクトルの符号化効率が向上するからである。
本発明によれば、映像中のあるフレーム中の任意の画素群が他のフレーム中のどの部分に存在するかを調べるといった用途に適用できる。
本発明は、動き補償予測符号化技術に関し、特に動きベクトル探索方法、動きベクトル探索装置及びその動きベクトル探索プログラムに関する。
動画像信号を記録、あるいは伝送する際の圧縮符号化では、符号化効率を高めるために画像フレーム間の相関を利用した符号化方法が一般に用いられる。画像フレーム間の相関を利用する符号化方式は動き補償予測符号化と呼ばれ、MPEG(Moving Picture Experts Group)などで採用されている。
動き補償予測符号化では、フレーム間における映像の動きの情報(動きベクトル)と、動きベクトルによって生成される予測画像と符号化中のフレームとの差分画像(予測誤差)を符号化する。画像フレーム間の相関が大きければ、予測誤差が小さくなり、符号化する情報量を小さくでき、圧縮率を向上させることができる。
動き補償予測符号化では、一般に、フレームを16×16画素などの一定サイズのブロックに分割し、分割したブロックごとに動きベクトルを割り当てる。具体的には、すでに符号化が完了しているフレーム(参照フレーム)の中から、ブロックごとに相関が最も大きくなる場所を探し、そのブロック間の差分を求め、符号化する。
相関が大きくなる場所を探す処理を動きベクトル探索という。相関の大小は、参照フレームと符号化中フレームとのブロック内の各画素の差異を総和することで評価できる。
動きベクトル探索の処理において、フレームのどの領域を探索するかは任意である。狭い範囲を探索すれば探索に要する演算量は少なくすむが、動きの大きな映像が入力された場合に適切な動きベクトルが検出できなくなり符号化効率が低下してしまう。一方、広い範囲を探索すれば動きの大きな映像に対して適切な動き補償予測が可能になり符号化効率は向上するが演算量が膨大になってしまう。従って、映像中の動きの大きさに応じて適応的に探索範囲を切替えることが望ましい。
動きベクトル探索において探索範囲を適応的に切替える装置の一例が、特開平5−328333(文献1)、特開2000−134628(文献2)に記載されている。
文献1に記載されている動きベクトル探索装置は、図1に示すように、動きベクトル検出回路と、動きベクトルメモリと、探索範囲判定器と、探索範囲選択器とから構成されている。
このような構成を有する従来の動きベクトル探索装置はつぎのように動作する。
すなわち、動きベクトルメモリに蓄えられた過去に検出した複数の動きベクトルのヒストグラムを計測し、計測したヒストグラムに応じて適切な探索範囲が探索範囲判定器により決定される。探索範囲選択器では有限種類の探索範囲が用意されており、探索範囲判定器での決定に従い、1つの探索範囲が選択される。
文献2に記載されている動きベクトル探索装置では、まず一つおきのブロックの動きベクトルを先に求める。次にこの動きベクトルの値が、残りのブロックでの動きベクトル探索の探索範囲決定に利用される。
特開平5−328333 特開2000−134628
文献1で開示されている方法を用いた場合、過去に求めた動きベクトルのヒストグラムを常に計測しなければならないので、探索範囲を求めるために余分な演算量が必要になるという問題があった。また、最終的に用いられる探索範囲が有限種類しか用意されておらず、選択された探索範囲が最適なものではない可能性があった。
文献2で開示されている方法を用いた場合、先に動きベクトルを求めるブロックは探索範囲が固定されており、不適切な探索範囲で動きベクトル探索が実行される可能性があった。また、半分のブロックしか適応的に探索範囲を切替えることができないので、探索範囲を適応的に切替えることにより得られる効果が半減されるという問題があった。
そこで、本発明は上記課題に鑑みて発明されたものであって、その目的は、少ない演算量で探索範囲を決定し、適切な探索範囲で動きベクトル探索できる新規な動きベクトル探索方法、装置及びプログラムを提供することにある。
上記課題を解決する第1の発明は、動画像の符号化における動きベクトルを探索する動きベクトル探索装置において、探索が完了した周囲ブロックの動きベクトルの大きさから探索範囲を決定する手段を有し、周囲ブロックの動きベクトルの水平成分および垂直成分それぞれについて大きさが最大となるものを選び、この大きさに水平成分、垂直成分でそれぞれ異なる正の定数を乗算し、これを探索範囲の一辺として動きベクトル探索処理をおこなう装置であって、前記垂直方向の乗算定数を前記水平方向の乗算定数よりも小さくすることを特徴とする。
上記課題を解決する第2の発明は、ビデオ符号化装置であって、探索が完了した周囲ブロックの動きベクトルの大きさから探索範囲を決定する手段とを有し、周囲ブロックの動きベクトルの水平成分および垂直成分それぞれについて大きさが最大となるものを選び、この大きさに水平成分、垂直成分でそれぞれ異なる正の定数を乗算し、これを探索範囲の一辺として動きベクトル探索処理をおこなう装置であって、前記垂直方向の乗算定数を前記水平方向の乗算定数よりも小さくすることを特徴とする。
上記課題を解決する第3の発明は、動画像の符号化における動きベクトルを探索する方法において、探索が完了した周囲ブロックの動きベクトルの大きさから探索範囲を決定し、周囲ブロックの動きベクトルの水平成分および垂直成分それぞれについて大きさが最大となるものを選び、この大きさに水平成分、垂直成分それぞれ異なる正の定数を乗算し、これを探索範囲の一辺として動きベクトル探索処理をおこなう方法であって、前記垂直方向の乗算定数を前記水平方向の乗算定数よりも小さくすることを特徴とする。
上記課題を解決する第4の発明は、請求項3に記載の動きベクトル探索方法を用いて、ビデオ符号化を行うことを特徴とする。
上記課題を解決する第5の発明は、動画像の符号化における動きベクトル探索を実行するコンピュータシステムにおいて、
対象画像データを格納する対象画像バッファと、参照画像を格納する参照画像バッファと、動きベクトルを記憶する動きベクトルメモリと、動画像の符号化における動きベクトル探索をコンピュータに実行させるための命令からなるプログラムを格納するプログラムメモリと、前記プログラムを実行するプログラム制御プロセッサとを有し、前記プログラムは、前記プログラム制御プロセッサに、動きベクトルメモリ中に記憶されている周囲ブロックの動きベクトルの水平成分および垂直成分それぞれについて大きさが最大となるものを選び、この大きさに水平成分、垂直成分でそれぞれ異なる正の定数を乗算し、これを探索範囲の一辺として動きベクトル探索を行わせるプログラムであって、前記垂直方向の乗算定数を前記水平方向の乗算定数よりも小さくすることを特徴とする。
上記課題を解決する第6の発明は、動画像の符号化における動きベクトルを探索するコンピュータにおける制御プログラムであって、前記プログラムは前記コンピュータを、探索が完了した周囲ブロックの動きベクトルの大きさから探索範囲を決定する手段と、決定した探索範囲で動きベクトル探索処理を行う手段を有し、周囲ブロックの動きベクトルの水平成分および垂直成分それぞれについて大きさが最大となるものを選び、この大きさに水平成分、垂直成分それぞれ異なる正の定数を乗算し、これを探索範囲の一辺として動きベクトル探索を行わせるプログラムであって、前記垂直方向の乗算定数を前記水平方向の乗算定数よりも小さくすることを特徴とする。
以上説明した本発明によれば、以下のような効果が達成される。
第1の効果は、高速に動きベクトル探索ができることである。その理由は、適応的に探索範囲を切替え、動きの小さな映像では狭い探索範囲で探索をおこなうためである。
第2の効果は、高速に探索範囲を決定できることである。その理由は、隣接するブロックの動きベクトルの大きさのみを使い探索範囲を決定するためである。
第3の効果は、適切な探索範囲形状で動きベクトル探索ができることである。その理由は、隣接するブロックの動きベクトルの水平方向、垂直方向それぞれの大きさに応じて探索範囲を決定するためである。
第4の効果は、動きベクトルの符号化効率が向上することである。その理由は、探索範囲が隣接するブロックの動きベクトルから決定されるので隣接ブロック間でベクトルのちらばりが小さくなり、隣接ブロック間でのベクトル差分が小さくなる。そのため、隣接ブロック間の差分が符号化される動きベクトルの符号化効率が向上するからである。
本発明の動きベクトル探索装置は、動きベクトルを探索する動きベクトル探索処理部と、求めた動きベクトルを記憶しておく動きベクトルメモリと、探索範囲を決定する探索範囲算出処理部とを備えている。
探索範囲算出処理部は、動きベクトルメモリからすでに求めた隣接ブロックの動きベクトルを取出し、隣接ブロックの動きベクトルの値をもとに適切な探索範囲を決定する。このような構成を採用し、動きベクトル探索における探索範囲を決定することにより本発明の目的を達成することができる。
本発明の第1の実施例について図面を参照して詳細に説明する。
図2を参照すると、本発明の第1の実施例における動きベクトル探索装置は、符号化中のフレームのデータを格納する現フレームバッファ201と、参照フレームを格納する参照フレームバッファ202と、動きベクトル探索処理をおこなう動き探索処理部203と、求めた動きベクトルを記憶しておく動きベクトルメモリ204と、探索範囲を決定する探索範囲算出処理部205とから構成されている。
次に、図2及び図3のフローチャートを参照し、実施例1の動作について詳細に説明する。
まず、現フレームバッファ201の先頭のブロックにポインタを合わせる(図3のステップA1)。
次に、現在ポイントされているブロックがフレームの先頭ブロックかどうかを調べる(ステップA2)。
先頭のブロックの場合は、水平方向探索範囲Xを初期値X0、垂直方向の探索範囲Yを初期値Y0とする(ステップA3)。初期値X0とY0とはあらかじめ設定されているものとする。
一方、先頭のブロックでない場合は、次に動きベクトルメモリ204に格納されている左隣のブロックの動きベクトル(x,y)を読み出す(ステップA4)。
水平方向探索範囲Xを左隣のブロックの動きベクトル水平成分xの絶対値abs(x)のa倍の値とする(ステップA5)。ここでaは任意の正数とする。ただし、ここでXの値は水平方向最大探索範囲Xmaxと水平方向最小探索範囲Xminの間に収まるようにクリッピングする(ステップA6)。尚、Xの値が水平方向最大探索範囲Xmax又は水平方向最小探索範囲Xminを超える場合には、Xの値を水平方向最大探索範囲Xmax又は水平方向最小探索範囲Xminとする。また、水平方向最大探索範囲Xmaxと水平方向最小探索範囲Xminの値はあらかじめ設定されているものとする。
垂直方向探索範囲Yは左隣のブロックの動きベクトル垂直成分yの絶対値abs(y)のb倍の値とする(ステップA7)。ここでbは任意の正数とする。ただし、ここでYの値は水平方向最大探索範囲Ymaxと水平方向最小探索範囲Yminの間に収まるようにクリッピングする(ステップA8)。尚、Yの値が水平方向最大探索範囲Ymax又は水平方向最小探索範囲Yminを超える場合には、Yの値を水平方向最大探索範囲Ymax又は水平方向最小探索範囲Yminとする。また、垂直方向最大探索範囲Ymaxと垂直方向最小探索範囲Yminの値はあらかじめ設定されているものとする。
これらの処理は、探索範囲算出処理部205にておこなわれる。
次に探索範囲を(±X、±Y)画素として動きベクトル探索をおこなう(ステップA9)。
次にステップA9で得られた動きベクトルを動きベクトルメモリ204に格納する(ステップA10)。
これらの処理は動き探索処理部203にておこなわれる。
フレーム内のすべてのブロックについて動きベクトル探索処理が完了したかを調べる(ステップA11)。
まだ動きベクトル探索をおこなっていないブロックがある場合は次のブロックにポインタを移動させ(ステップA12)、ステップA2にもどり動きベクトル探索処理を継続する。すべてのブロックの処理が完了していれば、そのフレームの動きベクトル探索処理を終了する。
次に、具体的な実施例を用いて本発明を実施するための最良の形態の動作を説明する。
図8に示すように、左隣のブロックの動きベクトルを(x,y)=(-4、3)とする。また、探索範囲の最大値を31、最小値を5、aの値を2、bの値を1とする。このとき水平方向探索範囲はabs(x)×a=
4×2 = 8、垂直方向探索範囲はabs(y)×b= 3×1 = 3と算出される。これらの値はいずれも探索範囲の最大値と最小値の間にあるので、これらの値をそのまま用い、(±8,±3)画素の範囲で動きベクトル探索をおこなうことになる。
上述の構成によれば、隣接するブロックの動きベクトルの値を元に探索範囲を求めているため、少ない演算量で適切な探索範囲を決定することができる。一般に、隣接ブロック間では動きベクトルに高い相関関係がある。従って、本実施例の方法で求めた探索範囲は実際の映像の動きとも高い相関があるといえる。
また、本実施例では、隣接するブロックの動きベクトルの水平成分、垂直成分をそれぞれ独立に用いて探索範囲を決定している。従って、映像中の動きに応じて探索範囲の広さ(面積)だけでなくその形状も適応的に変化することができる。例えば、隣接ブロックが水平方向に長い動きベクトルをもつ場合、探索範囲も水平方向に長い形状となる。
本発明の第2の実施例による動きベクトル探索装置について図4を参照して説明する。
第1の実施例では探索範囲を決定するために、左隣のブロックの動きベクトルの値を用いたが、実施例2では、探索範囲算出処理部205が、図4に示すようにすでに動きベクトルが求まっている複数の隣接ブロックから2つ以上のブロックを抽出し、各ブロックの動きベクトルの水平成分、垂直成分それぞれの絶対値の最大値を用いて実施例1のようにa倍、b倍することにより探索範囲を決定する。ここでa,bは任意の正数とする。
図4では、左、左上、上、右上の4つのブロックの動きベクトルから探索範囲を決定している。
このように周囲の複数のブロックの動きベクトルの最大値を元に探索範囲を決定することにより、左隣のブロックとの間において映像の動きに相関が小さい場合でも適切な探索範囲を決定することが可能になる。
本発明の第3の実施例による動きベクトル探索装置を説明する。
第3の実施例では、探索範囲算出処理部205は、探索範囲を決定すること過程で得られた予測誤差があらかじめ設定された閾値よりも大きくなった場合、探索範囲が適切でないと判断し、探索範囲を初期値に戻す例について説明する。
以下、図5のフローチャートを参照して、第3の実施例の動作を詳細に説明する。
まず、現フレームバッファの先頭のブロックにポインタを合わせる(図5のステップB1)。
次に、現在ポイントされているブロックがフレームの先頭ブロックかどうかを調べる(ステップB2)。
先頭のブロックの場合は、水平方向探索範囲Xを初期値X0、垂直方向の探索範囲Yを初期値Y0とする(ステップB3)。初期値X0とY0はあらかじめ設定されているものとする。先頭のブロックでない場合は、一つ前のブロックの動きベクトル探索で得られた最小予測誤差の値を閾値Thと比較する(ステップB4)。
ここで閾値Thはあらかじめ設定された値とする。
最小予測誤差が閾値Thよりも大きい場合は、探索範囲が適切でないと判断し、ステップB3で探索範囲を初期値に戻す。
最小予測誤差が閾値よりも小さい場合、動きベクトルメモリ204に格納されている左隣のブロックの動きベクトルを読み出す(ステップB5)。
次に、水平方向探索範囲Xを一つ前のブロックの動きベクトル水平成分xの絶対値abs(x)のa倍の値とする(ステップB6)。ここでaは任意の正数とする。ただし、ここでXの値は水平方向最大探索範囲Xmaxと水平方向最小探索範囲Xminの間に収まるようにクリッピングする(ステップB7)。尚、Xの値が水平方向最大探索範囲Xmax又は水平方向最小探索範囲Xminを超える場合には、Xの値を水平方向最大探索範囲Xmax又は水平方向最小探索範囲Xminとする。また、水平方向最大探索範囲Xmaxと水平方向最小探索範囲Xminの値はあらかじめ設定されているものとする。
垂直方向探索範囲Yは左隣のブロックの動きベクトル垂直成分yの絶対値abs(y)のb倍の値とする(ステップB8)。ここでbは任意の正数とする。ただし、ここでYの値は水平方向最大探索範囲Ymaxと水平方向最小探索範囲Yminの間に収まるようにクリッピングする(ステップB9)。垂直方向最大探索範囲Ymaxと垂直方向最小探索範囲Yminの値はあらかじめ設定されているものとする。尚、Yの値が水平方向最大探索範囲Ymax又は水平方向最小探索範囲Yminを超える場合には、Yの値を水平方向最大探索範囲Ymax又は水平方向最小探索範囲Yminとする。また、垂直方向最大探索範囲Ymaxと垂直方向最小探索範囲Yminの値はあらかじめ設定されているものとする。
これらの処理は、探索範囲算出処理部205にておこなわれる。
次に、探索範囲を(±X、±Y)画素として動きベクトル探索をおこなう(ステップB10)。
次に、ステップA10で得られた動きベクトルを動きベクトルメモリに格納する(ステップB11)。
次に、ステップA10でおこなった動きベクトル探索の結果得られた予測誤差をメモリに格納する(ステップB12)。
これらの処理は動き探索処理部203にておこなわれる。
フレーム内のすべてのブロックについて動きベクトル探索処理が完了したかを調べる(ステップB13)。
まだ、探索処理をおこなっていないブロックがある場合は、次のブロックにポインタを移動させ(ステップB14)、ステップB2にもどり動きベクトル探索処理を継続する。すべてのブロックの処理が完了していれば、そのフレームの動きベクトル探索処理を終了する。
上述の構成によれば、1フレームの動きベクトル探索中に、予測誤差があらかじめ設定された閾値よりも大きくなった場合に探索範囲が適切でないと判断し、探索範囲を初期値に戻す。従って、探索精度の低下を最小限に抑えることが可能となる。
第3の実施形においても、上述した第2の実施例のように周囲の複数のブロックの動きベクトルの絶対値の最大値を利用して探索範囲を決定することにより、左に隣接するブロック間の動きベクトルの相関が小さい場合でも適切な探索範囲を決定することが可能となる。
本発明の第4の実施例による動きベクトル探索装置について説明する。
ブロック間の動きの相関が高い場合は、動きベクトル探索の探索範囲の中心位置を隣接ブロックの動きベクトルが指す位置にシフトすることにより、より狭い探索範囲で正しい動きを検出することが可能になり、さらに演算量を削減できる。そこで、愛4の実施例では、ブロック間の動きの相関が高い場合は、動きベクトル探索の探索範囲の中心位置を隣接ブロックの動きベクトルが指す位置にシフトする例を説明する。以下、図6のフローチャートを参照して動作を説明する。
まず、現フレームバッファの先頭のブロックにポインタを合わせる(図6のステップC1)。
次に、現在ポイントされているブロックがフレームの先頭ブロックかどうかを調べる(ステップC2)。
先頭のブロックの場合は、水平方向探索範囲Xを初期値X0、垂直方向の探索範囲Yを初期値Y0とする(ステップC3)。初期値X0とY0はあらかじめ設定されているものとする。
先頭のブロックでない場合は、動きベクトルメモリ204に格納されている左隣のブロックの動きベクトルを読み出す(ステップC4)。
次に、水平方向探索範囲Xを左隣のブロックの動きベクトル水平成分xの絶対値abs(x)のa倍の値とする(ステップC5)。ここでaは任意の正数とする。ただし、ここでXの値は水平方向最大探索範囲Xmaxと水平方向最小探索範囲Xminの間に収まるようにクリッピングする(ステップC6)。尚、Xの値が水平方向最大探索範囲Xmax又は水平方向最小探索範囲Xminを超える場合には、Xの値を水平方向最大探索範囲Xmax又は水平方向最小探索範囲Xminとする。また、水平方向最大探索範囲Xmaxと水平方向最小探索範囲Xminの値はあらかじめ設定されているものとする。
垂直方向探索範囲Yは左隣のブロックの動きベクトル垂直成分yの絶対値abs(y)のb倍の値とする(ステップC7)。ここでbは任意の正数とする。ただし、ここでYの値は水平方向最大探索範囲Ymaxと水平方向最小探索範囲Yminの間に収まるようにクリッピングする(ステップC8)。尚、Yの値が水平方向最大探索範囲Ymax又は水平方向最小探索範囲Yminを超える場合には、Yの値を水平方向最大探索範囲Ymax又は水平方向最小探索範囲Yminとする。また、垂直方向最大探索範囲Ymaxと垂直方向最小探索範囲Yminの値はあらかじめ設定されているものとする。
これらの処理は、探索範囲算出処理部205にておこなわれる。
次に、探索中心を現在のブロックの位置から左隣のブロックの動きベクトル(x,y)だけ移動した場所とし(ステップC9)、探索範囲を(±X、±Y)画素として動きベクトル探索をおこなう(ステップC10)。
次にステップA10で得られた動きベクトルを保存するために動きベクトルメモリに格納する(ステップC11)。
これらの処理は動き探索処理部203にておこなわれる。
フレーム内のすべてのブロックについて動きベクトル探索処理が完了したかを調べる(ステップC12)。
まだ探索処理をおこなっていないブロックがある場合は次のブロックにポインタを移動させ(ステップC13)、ステップC2にもどり動きベクトル探索処理を継続する。すべてのブロックの処理が完了していれば、そのフレームの動きベクトル探索処理を終了する。
上述の如く、本実施例では、第1の実施例の構成に加えて、探索範囲の中心を隣接ブロックの動きベクトルが指す位置に移動させて動きベクトル探索を行っている。このことにより、ブロック間で動きベクトルの相関が大きい場合はより狭い探索範囲で正しい動きを検出することが可能となる。
尚、第4の実施例においても、第2の実施例のように周囲の複数のブロックの動きベクトルの絶対値の最大値を利用して探索範囲を決定することにより、探索精度を向上させることが可能になる。また、同様に第3の実施例のようにフレームの途中で探索範囲を初期値に戻すことで探索精度を向上させることも可能である。
本発明の第5の実施例による動きベクトル探索装置を説明する。
第5の実施例では、上述した第1の実施例から第4の実施例に示される動きベクトル探索装置をコンピュータシステムにより実行する例を説明する。
図7はコンピュータシステムを示すブロック図である。
このコンピュータシステムには、プログラム制御プロセッサ701が装備されている。プログラム制御プロセッサ701には、現フレームバッファ711および参照フレームバッファ712の他に、必要なプログラムを格納したプログラムメモリ702と動きベクトルメモリ713、が接続されている。
プログラムメモリ702には、本発明による動きベクトル探索を実行するためのメインプログラムの他に、上述した動き探索処理部714、探索範囲算出処理部715をそれぞれ機能的に実現するプログラムモジュールが格納されている。メインプログラムおよび各機能モジュールをプログラム制御プロセッサ701で実行することで、本発明による動きベクトル探索が実行される。
本発明によれば、映像中のあるフレーム中の任意の画素群が他のフレーム中のどの部分に存在するかを調べるといった用途に適用できる。
図1は適応的に探索範囲変化させる動きベクトル探索法の従来例を示すブロック図である。 図2は本発明の実施例1の構成を示すブロック図である。 図3は本発明の実施例1の動作を示すフローチャートである。 図4は本発明の実施例2の動作の具体例を示す図である。 図5は本発明の実施例3の動作を示すフローチャートである。 図6は本発明の実施例4の動作を示すフローチャートである。 図7は本発明による動きベクトル探索装置の実施例であるコンピュータシステムを示すブロック図である。 図8は本発明の実施例1の具体的な動作を示す図である。
符号の説明
101 動きベクトル検出回路
102 動きベクトルメモリ
103 検索範囲判定器
104 検索範囲選択器
201 現フレームバッファ
202 参照フレームバッファ
203 動き探索処理部
204 動きベクトルメモリ
205 探索範囲算出処理部
701 プログラム制御プロセッサ
702 プログラムメモリ
711 現フレームバッファ
712 参照フレームバッファ
713 動きベクトルメモリ
714 動き探索処理
715 探索範囲算出処理

Claims (37)

  1. 動画像の符号化における動きベクトルを探索する動きベクトル探索装置において、
    検出した動きベクトルを記憶する手段と、
    探索が完了した周囲ブロックの動きベクトルの大きさから探索範囲を決定する手段とを有し、
    周囲ブロックの動きベクトルの値から算出された値を探索範囲として動きベクトル探索処理をおこなうことを特徴とする動きベクトル探索装置。
  2. 前記探索範囲を決定する手段は、探索が完了した周囲ブロックにおける動きベクトルの大きさの整数倍を、探索範囲として決定する手段であることを特徴とする請求項1に記載の動きベクトル探索装置。
  3. 前記探索範囲を決定する手段は、複数の周囲ブロックの動きベクトルの最大値に基づいて、探索範囲を決定する手段であることを特徴とする請求項1又は請求項2に記載の動きベクトル探索装置。
  4. 前記探索範囲を決定する手段は、探索範囲を決定する過程において、得られた予測誤差の値が大きくなる場合は探索範囲が適切でないと判断し、探索範囲をあらかじめ定められた値とする手段を更に有することを特徴とする請求項1から請求項3のいずれかに記載の動きベクトル探索装置。
  5. 探索領域の中心を隣接ブロックの動きベクトルの位置にシフトし、探索をおこなう手段を更に有することを特徴とする請求項1から請求項4のいずれかに記載の動きベクトル探索装置。
  6. 前記探索範囲を決定する手段は、探索範囲の最大値及び最小値を予め設定しておき、算出された探索範囲が、前記最大値又は前記最小値を超える場合には、前記最大値又は前記最小値を探索範囲として決定する手段を更に有することを特徴とする請求項1から請求項5のいずれかに記載の動きベクトル探索装置。
  7. 前記探索範囲を決定する手段は、すでに探索をおこなった隣接ブロックの動きベクトルの値を用い、動きベクトルの水平、垂直各成分の絶対値の定数倍を探索範囲として決定する手段であることを特徴とする請求項1から請求項6のいずれかに記載の動きベクトル探索装置。
  8. ビデオ符号化装置であって、
    検出した動きベクトルを記憶する手段と、探索が完了した周囲ブロックの動きベクトルの大きさから探索範囲を決定する手段とを有し、周囲ブロックの動きベクトルの値から算出された値を探索範囲として動きベクトル探索処理をおこなう動きベクトル探索装置を有することを特徴とするビデオ符号化装置。
  9. 前記探索範囲を決定する手段は、探索が完了した周囲ブロックにおける動きベクトルの大きさの整数倍を、探索範囲として決定する手段であることを特徴とする請求項8に記載のビデオ符号化装置。
  10. 前記探索範囲を決定する手段は、複数の周囲ブロックの動きベクトルの最大値に基づいて、探索範囲を決定する手段であることを特徴とする請求項8又は請求項9に記載のビデオ符号化装置。
  11. 前記探索範囲を決定する手段は、探索範囲を決定する過程において、得られた予測誤差の値が大きくなる場合は探索範囲が適切でないと判断し、探索範囲をあらかじめ定められた値とする手段であることを特徴とする請求項8から請求項10のいずれかに記載のビデオ符号化装置。
  12. 前記動きベクトル探索装置は、探索領域の中心を隣接ブロックの動きベクトルの位置にシフトし、探索をおこなう手段を更に有することを特徴とする請求項8から請求項11のいずれかに記載のビデオ符号化装置。
  13. 前記探索範囲を決定する手段は、探索範囲の最大値及び最小値を予め設定しておき、算出された探索範囲が、前記最大値又は前記最小値を超える場合には、前記最大値又は前記最小値を探索範囲として決定する手段を更に有することを特徴とする請求項8から請求項12のいずれかに記載のビデオ符号化装置。
  14. 前記探索範囲を決定する手段は、すでに探索をおこなった隣接ブロックの動きベクトルの値を用い、動きベクトルの水平、垂直各成分の絶対値の定数倍を探索範囲として決定する手段であることを特徴とする請求項8から請求項13のいずれかに記載のビデオ符号化装置。
  15. 動画像の符号化における動きベクトルを探索する方法において、
    検出した動きベクトルを記憶しておき、探索が完了した周囲ブロックの動きベクトルの大きさから探索範囲を決定し、周囲ブロックの動きベクトルの値から算出された値を探索範囲として動きベクトル探索処理をおこなうことを特徴とする動きベクトル探索方法。
  16. 探索範囲を、探索が完了した周囲ブロックにおける動きベクトルの大きさの整数倍に決定することを特徴とする請求項15に記載の動きベクトル探索方法。
  17. 探索範囲を、複数の周囲ブロックの動きベクトルの最大値に基づいて決定することを特徴とする請求項15又は請求項16に記載の動きベクトル探索方法。
  18. 探索範囲決定の過程で、得られた予測誤差の値が大きくなる場合は探索範囲が適切でないと判断し、探索範囲をあらかじめ定められた値とすることを特徴とする請求項15から請求項17のいずれかに記載の動きベクトル探索方法。
  19. 探索が完了した周囲ブロックの動きベクトルの大きさから探索範囲を決定し、探索領域の中心を、隣接ブロックの動きベクトルの位置にシフトして探索をおこなうことを特徴とする請求項15から請求項18のいずれかに記載の動きベクトル探索方法。
  20. 探索範囲の最大値及び最小値を予め設定しておき、算出された探索範囲が、前記最大値又は前記最小値を超える場合には、前記最大値又は前記最小値を探索範囲として決定することを特徴とする請求項15から請求項19のいずれかに記載の動きベクトル探索方法。
  21. すでに探索をおこなった隣接ブロックの動きベクトルの値を用い、動きベクトルの水平、垂直各成分の絶対値の定数倍を探索範囲として決定することを特徴とする請求項15から請求項20のいずれかに記載の動きベクトル探索方法。
  22. 請求項15から請求項21のいずれかに記載の動きベクトル探索方法を用いて、ビデオ符号化を行うことを特徴とするビデオ符号化方法。
  23. 動画像の符号化における動きベクトル探索を実行するコンピュータシステムにおいて、
    対象画像データを格納する対象画像バッファと、
    参照画像を格納する参照画像バッファと、
    動きベクトルを記憶する動きベクトルメモリと、
    動画像の符号化における動きベクトル探索をコンピュータに実行させるための命令からなるプログラムを格納するプログラムメモリと、
    前記プログラムを実行するプログラム制御プロセッサと
    を有し、
    前記プログラムは、前記プログラム制御プロセッサに、動きベクトルメモリ中に記憶されている周囲ブロックの動きベクトルの値をもとに算出される値を探索範囲として動きベクトル探索を行わせることを特徴とするコンピュータシステム。
  24. 前記プログラムは、前記プログラム制御プロセッサに、探索が完了した周囲ブロックにおける動きベクトルの大きさの整数倍を、探索範囲として決定させることを特徴とする請求項23に記載のコンピュータシステム。
  25. 前記プログラムは、前記プログラム制御プロセッサに、複数の周囲ブロックの動きベクトルの最大値に基づいて、探索範囲を決定させることを特徴とする請求項23又は請求項24に記載のコンピュータシステム。
  26. 前記プログラムは、前記プログラム制御プロセッサに、得られた予測誤差の値が大きくなる場合は探索範囲が適切でないと判断させ、探索範囲をあらかじめ定められた値とさせることを特徴とする請求項23から請求項25のいずれかに記載のコンピュータシステム。
  27. 前記プログラムは、前記プログラム制御プロセッサに、探索領域の中心を隣接ブロックの動きベクトルの位置にシフトし探索をおこなうことを特徴とする請求項23から請求項26のいずれかに記載のコンピュータシステム。
  28. 前記プログラムは、前記プログラム制御プロセッサに、得られた予測誤差の値が大きくなる場合は探索範囲が適切でないと判断させ、探索範囲をあらかじめ定められた値とさせることを特徴とする請求項23から請求項27のいずれかに記載のコンピュータシステム。
  29. 前記プログラムは、前記プログラム制御プロセッサに、算出された探索範囲が、予め定められた探索範囲の最大値又は最小値を超える場合には、前記最大値又は前記最小値を探索範囲として決定させることを特徴とする請求項23から請求項28のいずれかに記載のコンピュータシステム。
  30. 前記プログラムは、前記プログラム制御プロセッサに、すでに探索をおこなった隣接ブロックの動きベクトルの値を用い、動きベクトルの水平、垂直各成分の絶対値の定数倍を探索範囲として決定させることを特徴とする請求項23から請求項29のいずれかに記載のコンピュータシステム。
  31. コンピュータを制御し、動画像の符号化における動きベクトルを探索する動きベクトル探索プログラムであって、
    前記動きベクトル探索プログラムは前記コンピュータに、
    探索が完了した周囲ブロックの動きベクトルの大きさから探索範囲を決定する機能と、
    決定した探索範囲で動きベクトル探索処理を行う機能を実行させることを特徴とする動きベクトル探索プログラム。
  32. 前記動きベクトル探索プログラムは、前記コンピュータに、探索が完了した周囲ブロックにおける動きベクトルの大きさの整数倍を、探索範囲として決定する機能を実行させることを特徴とする請求項31に記載のプログラム。
  33. 前記動きベクトル探索プログラムは、前記コンピュータに、複数の周囲ブロックの動きベクトルの最大値に基づいて、探索範囲を決定する機能を実行させることを特徴とする請求項31又は請求項32に記載の動きベクトル探索プログラム。
  34. 前記動きベクトル探索プログラムは、前記コンピュータに、探索範囲を決定する過程において、得られた予測誤差の値が大きくなる場合は探索範囲が適切でないと判断し、探索範囲をあらかじめ定められた値とする機能を実行させることを特徴とする請求項31から請求項33のいずれかに記載の動きベクトル探索プログラム。
  35. 前記動きベクトル探索プログラムは、前記コンピュータに、探索領域の中心を隣接ブロックの動きベクトルの位置にシフトし、探索をおこなう機能を実行させることを特徴とする請求項31から請求項34のいずれかに記載の動きベクトル探索プログラム。
  36. 前記動きベクトル探索プログラムは、前記コンピュータに、探索範囲の最大値及び最小値を予め設定しておき、算出された探索範囲が、前記最大値又は前記最小値を超える場合には、前記最大値又は前記最小値を探索範囲として決定する機能を実行させることを特徴とする請求項31から請求項35のいずれかに記載の動きベクトル探索プログラム。
  37. 前記動きベクトル探索プログラムは、前記コンピュータに、すでに探索をおこなった隣接ブロックの動きベクトルの値を用い、動きベクトルの水平、垂直各成分の絶対値の定数倍を探索範囲として決定する機能を実行させることを特徴とする請求項31から請求項35のいずれかに記載の動きベクトル探索プログラム。
JP2005514685A 2003-10-14 2004-10-13 動きベクトル探索方法、動きベクトル探索装置および動きベクトル探索プログラム Pending JPWO2005036887A1 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2003354203 2003-10-14
JP2003354203 2003-10-14
PCT/JP2004/015452 WO2005036887A1 (ja) 2003-10-14 2004-10-13 動きベクトル探索方法、動きベクトル探索装置および動きベクトル探索プログラム

Publications (1)

Publication Number Publication Date
JPWO2005036887A1 true JPWO2005036887A1 (ja) 2006-12-28

Family

ID=34431181

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005514685A Pending JPWO2005036887A1 (ja) 2003-10-14 2004-10-13 動きベクトル探索方法、動きベクトル探索装置および動きベクトル探索プログラム

Country Status (2)

Country Link
JP (1) JPWO2005036887A1 (ja)
WO (1) WO2005036887A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9445089B2 (en) 2011-03-09 2016-09-13 Nippon Telegraph And Telephone Corporation Video encoding device, video encoding method and video encoding program
CN110495177A (zh) * 2017-04-13 2019-11-22 松下电器(美国)知识产权公司 编码装置、解码装置、编码方法及解码方法

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8107748B2 (en) * 2005-09-16 2012-01-31 Sony Corporation Adaptive motion search range
JP5299820B2 (ja) * 2010-01-20 2013-09-25 株式会社日立国際電気 画像処理装置及び動画像符号化装置。
JP2013165340A (ja) * 2012-02-09 2013-08-22 Sony Corp 画像処理装置と画像処理方法
JP5938935B2 (ja) * 2012-02-21 2016-06-22 富士通株式会社 動画像符号化装置及び動画像符号化方法
TWI782974B (zh) * 2017-04-13 2022-11-11 美商松下電器(美國)知識產權公司 解碼裝置、解碼方法及非暫時性電腦可讀取媒體

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06205389A (ja) * 1992-12-29 1994-07-22 Casio Comput Co Ltd 動きベクトル検出装置及び動きベクトル検出方法
JP2003244707A (ja) * 2002-01-26 2003-08-29 Lg Electronics Inc 動きベクトル検索領域の適応的決定方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04150284A (ja) * 1990-10-09 1992-05-22 Olympus Optical Co Ltd 動ベクトル検出方法およびその装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06205389A (ja) * 1992-12-29 1994-07-22 Casio Comput Co Ltd 動きベクトル検出装置及び動きベクトル検出方法
JP2003244707A (ja) * 2002-01-26 2003-08-29 Lg Electronics Inc 動きベクトル検索領域の適応的決定方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9445089B2 (en) 2011-03-09 2016-09-13 Nippon Telegraph And Telephone Corporation Video encoding device, video encoding method and video encoding program
CN110495177A (zh) * 2017-04-13 2019-11-22 松下电器(美国)知识产权公司 编码装置、解码装置、编码方法及解码方法
CN110495177B (zh) * 2017-04-13 2023-10-20 松下电器(美国)知识产权公司 解码装置、解码方法及存储介质

Also Published As

Publication number Publication date
WO2005036887A1 (ja) 2005-04-21

Similar Documents

Publication Publication Date Title
EP0896300B1 (en) Device and method for motion vector detection
US11831891B2 (en) Image coding method, image decoding method, image coding apparatus, and image decoding apparatus
US8204124B2 (en) Image processing apparatus, method thereof, and program
US20070098075A1 (en) Motion vector estimating device and motion vector estimating method
US20060045186A1 (en) Apparatus and method for coding moving picture
US20060251171A1 (en) Image coding device and image coding method
US7599436B2 (en) Method of determining search region of motion vector and motion vector detection apparatus
US8041134B2 (en) Apparatus to provide block-based motion compensation and method thereof
KR20070074781A (ko) 프레임율 변환장치
KR20070088321A (ko) 화상 부호화 장치 및 화상 부호화 방법
JPWO2005036887A1 (ja) 動きベクトル探索方法、動きベクトル探索装置および動きベクトル探索プログラム
EP0899687B1 (en) Method and apparatus for detecting motion vector and image coding apparatus
KR20050097936A (ko) 효과적인 예측 이미지 파라미터 추정
JP3283159B2 (ja) ソフトウェアによる画像符号化方法
US8014610B2 (en) Method of multi-path block matching computing
KR100969420B1 (ko) 프레임 레이트 변환 방법
JP3276073B2 (ja) 動きベクトル検出装置および動きベクトル検出方法
JP2006217486A (ja) 動き補償型ip変換処理装置及び動き補償型ip変換処理方法
JP2000165883A (ja) 動きベクトル検出装置
KR100516711B1 (ko) 모션벡터검출장치및모션벡터검출방법
WO1999044369A1 (en) Device and method for coding image
KR20070068639A (ko) 동영상의 손떨림 검출 및 보정 장치
JP2005244542A (ja) 動画像符号化装置、動画像符号化方法
JP3860435B2 (ja) 動画像符号化装置及び方法と、動画像符号化処理用プログラム及びそのプログラムの記録媒体
KR100413002B1 (ko) 동영상 부호화기의 확산누적배열을 이용한 블록정합 장치및 그 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070911

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100917

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101208

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110216