JP2003163934A - 動きベクトル検出方法及び動きベクトル検出プログラム - Google Patents

動きベクトル検出方法及び動きベクトル検出プログラム

Info

Publication number
JP2003163934A
JP2003163934A JP2001358698A JP2001358698A JP2003163934A JP 2003163934 A JP2003163934 A JP 2003163934A JP 2001358698 A JP2001358698 A JP 2001358698A JP 2001358698 A JP2001358698 A JP 2001358698A JP 2003163934 A JP2003163934 A JP 2003163934A
Authority
JP
Japan
Prior art keywords
motion vector
macroblock
search
screen
current
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
JP2001358698A
Other languages
English (en)
Inventor
Yoshiharu Kamiya
義治 上谷
Tomoya Kodama
知也 児玉
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2001358698A priority Critical patent/JP2003163934A/ja
Publication of JP2003163934A publication Critical patent/JP2003163934A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

(57)【要約】 【課題】 本発明は、縮小画面での動きベクトル候補探
索において、動きベクトル探索処理に必要な命令数を削
減して従来より高速な動きベクトル検出方法を提供す
る。 【解決手段】 本発明の動きベクトル検出方法は、第1
のマクロブロック及びこれに隣接する第2のマクロブロ
ックに対する探索中心点設定に用いる参照動きベクトル
の差が所定の範囲内である場合は探索モードを2マクロ
ブロック同時探索モードに設定し、所定範囲外の場合は
探索モードを2探索点同時探索モードに設定することに
より、SSE2のPSADBW命令を1回実行するのに
必要となる前処理に要する命令数を大幅に削減する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、画像の記録・通信
・伝送及び放送等における動画像信号の符号化装置に係
り、特に動きベクトル情報の検出方法に関する。
【0002】
【従来の技術】動画像の膨大な情報を圧縮符号化する動
画像符号化方式として、動き補償予測符号化方式が知ら
れており、MPEG2(Moving Picture Expert Group
phase2)やMPEG4等で用いられている。これらの符
号化方式では、入力画面の部分領域に対して、参照画面
から最も相関度の高い部分領域を検出して、入力画面の
部分領域が参照画面のどの位置から動いたものかを示す
動きベクトル情報を求め、その動きベクトル情報により
示される参照画面の部分領域と入力画面の部分領域との
差分を符号化する。
【0003】この動きベクトル情報の探索は16画素×
16ラインで構成されるマクロブロックに対して、各画
素毎の差分絶対値和(ブロックマッチング誤差)が最小
となる位置を探索するブロックマッチング方法が利用さ
れる。
【0004】このブロックマッチングの誤差算出は、In
tel社のPentiumIIIプロセッサ以降に実装されたSSE
2(ストリーミングSIMD拡張命令2)のPSADB
W命令を用いることで効率的に実行できる。このPSA
DBW命令では、図6に示すように16画素に対する差
分の絶対値を計算し、上位8画素の差分絶対値の合計と
下位8画素の差分絶対値の合計をそれぞれ計算する処理
を1つの命令で実行できる。すなわち、この処理で得ら
れる2つの結果をマクロブロックを構成する16ライン
について合計することで、1つの探索点に対するブロッ
クマッチング誤差を求められる。
【0005】しかし、広い探索範囲から短時間で動きベ
クトル情報を探索するためには、現画面及び参照画面を
水平垂直共に1/2に間引いて縮小した画面を作成し、
1マクロブロックを8画素×8ラインのサイズにして演
算量を減らし、2画素精度動きベクトル候補を探索する
のが望ましい。これにより、マッチングサイズ及び探索
面積共に1/4になるので、演算量は1/16になる。
1画素精度の正確な動きベクトル候補を検出するために
は、これにより求めた2画素精度動きベクトル候補の近
傍−1画素から+1画素の範囲について、元の画像サイ
ズの現画面と参照画面で探索する必要があるが、これを
含めても大幅な演算量の削減となる。
【0006】従来、上述のような縮小画面でSSE2のPS
ADBW命令を使用したブロックマッチングを行う場
合、図5のように同一マクロブロック内の8画素×2ラ
インに対する差分絶対値和計算を1回のPSADBW命
令で実行し、この処理を4回繰り返して該差分絶対値和
の総和を求めることで、1探索点に対するブロックマッ
チング誤差を算出していた。
【0007】しかしながらこの方法においては、図5に
示されているように、1回のPSADBW命令の前に、
参照画面及び現画面からそれぞれ8画素×2ラインを1
ラインずつ2回に分けて読み出し、それぞれ8画素×2
ラインのデータを結合して16画素×1ラインの形式に
してから、XMMレジスタに一時記憶させる前処理が必
要である。
【0008】図5の方法による1探索点の探索を行うプ
ログラムの実装例を図9に示す。
【0009】まず、ステップB01に示すように、現画
面及び参照画面の左上端のアドレス及びループ回数のレ
ジスタへのセットと差分絶対値和の累算値を格納するレ
ジスタの初期化に4命令を要する。
【0010】ループ内の処理はステップB02からステ
ップB06まである。ステップB02では、現画面から
8画素×2ラインのデータを読み出して16画素×1ラ
イン形式に結合させるのに4命令要する。ステップB0
3では、参照画面から8画素×2ラインの読み出して1
6画素×1ライン形式に結合させるのに4命令要する。
ステップB04では、差分絶対値和を計算するためにP
SADBW命令を実行するので1命令要する。ステップ
B05では、求めた2ライン分の差分絶対値和の累算を
行うのに1命令要する。ステップB06では、ループ関
連処理を行うのに(差分絶対値和計算対象ラインのシフ
ト及びループそのものの処理)3命令要する。よって、
ループ内処理で要する命令数は、合計4+4+1+1+
3=13命令である。差分絶対値和の計算は2ラインず
つ行うのでループは4回必要であるから、この4倍の命
令数が必要となる。
【0011】ステップB07では、ループ内で累算した
差分絶対値和の合計を求める(XMMレジスタの上位と
下位の和を計算する)のに2命令要する。これは、PS
ADBW命令ではXMMレジスタの上位と下位とで別々
に差分絶対値和を求めているため、XMMレジスタの上
位(下位)には1ラインおきの差分絶対値和の累計が格
納されているために必要な処理である。
【0012】以上より、1マクロブロックの1探索点に
ついてブロックマッチングを行うためには4+13*4
+2=58命令必要となる。
【0013】
【発明が解決しようとする課題】従来の技術ではPSA
DBW命令に係る前処理に要する命令数が多いため、縮
小画面にしたことによる演算量の削減効果が十分に得ら
れなかった。
【0014】本発明は、縮小画面での動きベクトル候補
探索において、隣接する2つのマクロブロックの探索中
心点設定用参照動きベクトルに基づいて、探索処理方法
を適応的に切り替えることにより動きベクトル探索処理
に必要な命令数を削減し、高速な動きベクトル検出方法
及びプログラムを提供することを目的とする。
【0015】
【課題を解決するための手段】前述の課題を解決するた
めに本発明の動きベクトル検出方法は、水平方向に縮小
した画面を用いて動画像の第1の画面のマクロブロック
である現マクロブロックが第2の画面のどの領域から動
いたものかを表す動きベクトルをブロックマッチング法
を用いて計算する方法であって、第1の現マクロブロッ
クとこれと水平方向に隣接する第2の現マクロブロック
をマッチング単位として第2の画面との間でブロックマ
ッチングを行い、第1及び第2の現マクロブロックに対
する動きベクトル算出を行うことを特徴とする。
【0016】また、本発明の動きベクトル検出方法は、
水平方向に縮小した画面を用いて動画像の第1の画面の
マクロブロックである現マクロブロックが第2の画面の
どの領域から動いたものかを表す動きベクトルをブロッ
クマッチング法を用いて計算する方法であって、第1の
現マクロブロックを水平方向に2つ並べたものをマッチ
ング単位として第2の画面との間でブロックマッチング
を行い、第2の画面上の2つのマクロブロックサイズの
領域である参照領域に対する2つの動きベクトル候補を
評価することで、第1の現マクロブロックに対する動き
ベクトル算出を行うことを特徴とする。
【0017】また、本発明の動きベクトル検出方法は、
水平方向に縮小した画面を用いて動画像の第1の画面の
マクロブロックである現マクロブロックが第2の画面の
どの領域から動いたものかを表す動きベクトルを、時間
的に第1の画面の直前に入力された第3の画面上にあっ
て前記マクロブロックと同位置にあるマクロブロックで
ある直前マクロブロックの有する第2の画面に対する動
きベクトルである参照動きベクトルを用いてブロックマ
ッチング法による探索領域を決定してから計算する方法
であって、第1の現マクロブロックと画面上同位置であ
る第1の直前マクロブロックの第1の参照動きベクトル
と、第1の現マクロブロックの水平方向に隣接する第2
の現マクロブロックに対する第2の直前マクロブロック
の第2の参照動きベクトルとの差を算出し、前記第1及
び第2の参照動きベクトルの差が所定の範囲内ならば、
第1の現マクロブロックとこれと水平方向に隣接する第
2の現マクロブロックをマッチング単位として第2の画
面との間でブロックマッチングを行い、第1及び第2の
現マクロブロックに対する動きベクトル算出を行い、前
記参照動きベクトルの差が所定の範囲外ならば、第1の
現マクロブロックを水平方向に2つ並べたものをマッチ
ング単位として第2の画面との間でブロックマッチング
を行い、第2の画面上の2つのマクロブロックサイズの
領域である参照領域に対する2つの動きベクトル候補を
評価することで、第1の現マクロブロックに対する動き
ベクトル算出を行うことを特徴とする。
【0018】本発明の動きベクトル検出プログラムは、
コンピューターに水平垂直方向共に1/2に縮小した画
面を用いて入力画面のマクロブロックが参照画面のどの
領域から動いたものかを表す動きベクトルを計算させる
ために、入力画面の第1の現マクロブロックと画面上の
位置が同じである参照画面の第1の参照マクロブロック
の動きベクトルである第1の参照動きベクトルと、第2
の現マクロブロックに対する第2の参照マクロブロック
の第2の参照動きベクトルとの差を計算する参照ベクト
ル差検出手段と、前記第1、第2の参照動きベクトルの
差が所定の範囲内である場合には2マクロブロック同時
探索モードを、所定の範囲外である場合には2探索点同
時探索モードを選択する探索モード選択手段と、2マク
ロブロック同時探索モードが選択された場合に探索中心
点を前記第1、第2の参照動きベクトルに基づいて設定
し、2探索点同時探索モードが選択された場合に探索中
心点を前記第1の参照動きベクトルに基づいて設定する
探索中心点設定手段と、2マクロブロック同時探索モー
ドの場合に2つのマクロブロックに対して同時にブロッ
クマッチング誤差を計算する2マクロブロック同時ブロ
ックマッチング誤差計算手段と、2探索点同時探索モー
ドの場合に第1の現マクロブロックに対する2つの探索
点のブロックマッチング誤差を同時に計算する2探索点
同時ブロックマッチング誤差計算手段と、2マクロブロ
ック同時探索モードの場合に第1、第2の現マクロブロ
ックに対してそれぞれ最小ブロックマッチング誤差とな
る探索点から動きベクトルを算出する2マクロブロック
同時動きベクトル計算手段と、2探索点同時探索モード
の場合に第1の現マクロブロックに対して最小ブロック
マッチング誤差となる探索点から動きベクトルを算出す
る2探索点同時動きベクトル計算手段とを有する。
【0019】
【発明の実施の形態】以下、図面を用いて本発明の実施
形態を説明する。
【0020】(第1の実施形態)図7は本発明の実施形
態に係る動きベクトル検出方法において用いられるテレ
スコピックサーチの概略を説明する図である。
【0021】テレスコピックサーチとは、動きベクトル
検出を動きベクトル検出対象マクロブロックと参照画面
との間でのブロックマッチング法を用いて行う際に、動
きベクトル検出対象マクロブロックの所属する画面の直
前に入力された画面に関して同一の参照画面に対して検
出された動きベクトルを参照して、動きベクトルの探索
領域を限定する手法である。通常のフルサーチの場合、
画面間の時間的距離の2乗に比例して動きベクトルの探
索領域が広くなるが、テレスコピックサーチの場合、探
索領域は時間的距離に関係なく一定の範囲に限定され
る。
【0022】本実施形態の動きベクトル検出方法では、
テレスコピックサーチを用いて動きベクトルの探索領域
を限定する。よって、動きベクトル検出では動きベクト
ルを検出しようとしている現画面81と、ブロックマッ
チングの際の参照画面82の他に、現画面の直前に入力
された直前画面83の3枚の画面を用いる。
【0023】この3枚の画像はMPEG1、2、4でフ
レーム予測を行っている場合でいうと現画面81はPフ
レーム、参照画面82はIまたはPフレーム、直前画面
83はBフレームに対応すると考えればよい。ただし、
図8のように参照画面82と直前画面83が同一の画面
になる場合もある。図8の場合に関しては後述する。
【0024】尚、インターレース走査の画像では1フレ
ームは2フィールドから構成され、フィールド単位で動
きベクトル検出を行うことがあるが、この場合もテレス
コピックサーチは適用可能である。以下は、フレーム単
位で動きベクトルを検出する場合について述べる。
【0025】また、テレスコピックサーチを行うので、
前方向動きベクトルの検出であれば、現画面の動きベク
トル検出を行う前に、現画面以前に入力されたPまたは
Bフレームで符号化される画面に関する前方向動き検出
が完了している(Iフレームで符号化される画面を除
く)必要があり、後方向動きベクトルであれば、現画面
から時間的に直後のIまたはPフレームで符号化される
画面までの間に存在する全てのBフレームで符号化され
る画面に関して後方向動きベクトルの検出が完了してい
る必要がある。例えば、図7の場合、符号化は「I1・
P4・B2・B3」の順で行われるが、前方向動きベク
トル検出に関しては「B2・B3・P4」の順で行うの
で、P4の符号化前にB2、B3、P4の前方動きベク
トル検出を完了させておく。尚、後方向動きベクトル検
出は「B3・B2」の順で行うので、B2の符号化まで
に「B3・B2」の動きベクトル検出が完了させてお
く。
【0026】以下、動きベクトル検出処理開始時からブ
ロックマッチングを行うまでのテレスコピックサーチに
よる動きベクトル探索範囲限定処理を説明する。
【0027】まず、現画面81の動き検出対象マクロブ
ロックである現マクロブロック84と画面上の位置が同
じである直前画面83上の直前マクロブロック85に着
目する。直前マクロブロック85に関して既に検出済み
の動きベクトルである参照動きベクトル86の示す参照
画面82上の点を探索中心点として、探索範囲はこの探
索中心点を中心にから水平垂直共に−16〜15画素の
範囲(水平32画素×垂直32画素)に設定する。移動
距離は時間に比例して増大すると予測されるので、フレ
ーム間の時間的距離の二乗に比例して探索範囲が拡大す
るが、テレスコピックサーチでは直前のフレームの動き
ベクトルが示す参照画面上の点から探索領域を設定して
いるので、参照画面と現画面が時間的にどれだけ離れて
いても水平32画素×垂直32画素の範囲を探索すれば
よい。
【0028】本発明では縮小画面を用いており、本実施
形態では水平垂直共に1/2に縮小した画面の水平16
画素×垂直16画素の領域で動きベクトル探索を行う。
縮小画面においても探索範囲の限定は上記と同様な方針
で行うので探索領域は現画面と参照画面間の時間的距離
に関わらず参照画面上の水平16画素×垂直16画素の
領域となる。
【0029】尚、図8のように参照画面82と直前画面
83が同一の画面になる場合は、図7の参照動きベクト
ル86がゼロベクトルであるものとして扱えばよく、探
索中心点は直前マクロブロック95の中心点(もしくは
マクロブロックの起算点)になる。
【0030】以下、本実施形態の動きベクトル検出につ
いて詳細に説明する。
【0031】図1は、本発明の実施形態に係る動きベク
トル検出方法を示すフローチャートである。
【0032】まず、探索モード及び探索中心点設定ステ
ップS01において、参照画面と現画面との間に動きベ
クトル検出済み画面が存在しない場合は(例えば、参照
画面がイントラ符号化対象の画面の場合)、前述の通り
参照動きベクトルをゼロベクトルに設定し、参照画面と
現画面との間に動きベクトル検出済み画面が存在する場
合は、現画面のマクロブロック(以下、現マクロブロッ
ク)と画面上の位置が同じ前記動きベクトル検出済み画
面のマクロブロック(以下、参照マクロブロック)に対
する動きベクトルを参照動きベクトルに設定する。
【0033】次に現マクロブロック及びこれの右隣のマ
クロブロックに対する参照動きベクトルの差を計算す
る。画面左上端を原点とし、水平方向右が正、垂直方向
下が正となる座標系で、現マクロブロックの右隣のマク
ロブロックに対する参照動きベクトルから現マクロブロ
ックに対する参照動きベクトルを引いた差(以下、特に
指定しない限り、参照動きベクトルの差はこれと同じ座
標系でこれと同じ計算法で求めるものとする)が所定の
範囲内であるかどうかを判定する。なお、本実施形態で
は所定の範囲を「水平成分の差が−1から+1の範囲」
かつ「垂直成分の差は0」とするが、範囲の設定はこれ
に限らず例えば「水平成分の差も垂直成分の差も−1か
ら+1の範囲」としても良い。
【0034】所定の範囲内である場合は探索モードを2
マクロブロック同時探索モードに設定し、探索中心点は
現マクロブロック及び右隣のマクロブロックのそれぞれ
に対する参照動きベクトルの平均ベクトルが示す点に設
定する。つまり、現画面上の現マクロブロックの起算点
(例えば左上端の点)から平均参照ベクトル分だけ移動
した点の座標と同じである、参照画面上の点を探索中心
点に設定する。なお、水平垂直方向共に1/2に間引い
て縮小した参照画面(以下、縮小参照画面)上で画素値
を調べる時は、探索中心点の座標成分はそれぞれ半分の
値に換算し、小数点以下は切り捨て、切り上げ、四捨五
入などの方法で適宜丸めて整数値にしたものを用いる。
【0035】一方、所定の範囲外の場合は、探索モード
を2探索点同時探索モードに設定し、探索中心点を現マ
クロブロックに対する参照動きベクトルが示す点に設定
する。つまり、現画面上の現マクロブロックの起算点か
ら参照ベクトル分だけ移動した点の座標と同じである、
参照画面上の点を探索中心点に設定する。なお、縮小参
照画面上で画素値を調べる時は、前述所定の範囲内の場
合と同様、探索中心点の座標成分はそれぞれ半分の値に
換算して小数点以下を丸めて整数値にする。
【0036】なお、現マクロブロックの右隣に動きベク
トルが未検出のマクロブロックが存在しない場合(例え
ば、画面端のマクロブロック)も探索モードを2探索点
同時探索モードに設定しする。
【0037】探索モード及び探索中心点設定ステップ0
1において、2探索点同時探索モードが設定された場合
は、探索モード判定ステップS02を介して、2探索点
マッチング誤差算出ステップS21に進む。
【0038】2探索点マッチング誤差算出ステップS2
1では、図2に示すように、マクロブロックのライン単
位でのマッチング誤差算出(差分絶対値和を求めるライ
ンマッチング誤差算出)を繰り返して1探索点に対する
ブロックマッチング誤差算出を行う。
【0039】縮小現画面から、現マクロブロック(縮小
現画面は水平垂直方向共に1/2に縮小されているから
8画素×8ライン)の水平方向に連続する8画素(以
下、現探索ライン)を第1のXMMレジスタの下位に読
み込んで、その8画素データを第1のXMMレジスタ
(XMMn)の上位にコピーする。
【0040】あとは第2のXMMレジスタ(XMMm)
の上位及び下位に、第1、第2の探索点各々の探索点を
左上端とする探索マクロブロック(厳密には2つのマク
ロブロックサイズの領域)を考えて、そこから1ライン
ずつ読み込んで第2のXMMレジスタへ格納すればPS
ADBW命令の前処理が完了する。
【0041】しかし、探索点を適当に選んだ場合、XM
Mレジスタへ格納する前に連続した16画素の形式に結
合処理を施しておく必要があるので、結合処理を省略す
るために第1と第2の探索点を「縮小参照画面上で、第
1の探索点から水平方向右に8画素移動した点」を第2
の探索点として選択する。
【0042】このように選択することで結合処理を施さ
なくとも、第1の探索点を起点とする連続した16画素
の形式になるので、PSADBW命令の前処理を省略で
きる。
【0043】2つのXMMレジスタ(XMMn、XMM
m)への値の読み込みが完了したら、SSE2のPSA
DBW命令を実行して、マクロブロックの1ライン分の
マッチング誤差(差分絶対値和)を2探索点について同
時に算出する。
【0044】今、1マクロブロックは縮小されて8ライ
ンあるから、上記ラインマッチング誤差算出を8回繰り
返し、2探索点各々について個別に1ライン分のマッチ
ング誤差の和を求めることで2探索点のブロックマッチ
ング誤差を同時に算出する。
【0045】ここで、2探索点マッチング誤差算出ステ
ップS21を実装したプログラムの例を図10に示し、
これを参照して1探索点のブロックマッチング誤差を算
出するのに必要な命令数を求める。
【0046】まず、ステップB11では、現画面及び参
照画面の左上端のアドレス及びループ回数のレジスタへ
のセットと差分絶対値和を累算するレジスタの初期化に
4命令要する。ステップB12からステップB16まで
の処理をループ内で行う。ステップB12では、現マク
ロブロックから第1のXMMレジスタに8画素分のデー
タを読み込んで、第1のXMMレジスタの上位と下位を
同じ内容にするのに2命令要する。ステップB13で
は、参照画面から連続する16画素(2探索点にわたる
合計2ライン)を第2のXMMレジスタに読み込むのに
1命令要する。ステップB14では、PSADBW命令
で差分絶対値和を計算するのに1命令要し、ステップB
15では、求めた差分絶対値和を累算するのに1命令要
する。最後にステップB16では、ループ関連処理を行
うのに(差分絶対値和計算対象ラインのシフト及びルー
プそのものの処理)3命令要する。よって、ループ内で
要する命令数は、合計2+1+1+1+3=8命令であ
る。縮小参照画面では、マクロブロックは8画素×8ラ
インであり、2探索点同時探索モードではラインマッチ
ングは1ラインずつ行っているからループを8回実行す
るので、必要な命令数はこの8倍になる。
【0047】以上より、ブロックマッチングに必要な命
令数は4+8×8=68命令である。しかし、68命令
で行っている処理は1つのマクロブロックに関して2探
索点分のマッチング誤差算出であるから、1マクロブロ
ック1探索点あたりに換算すると半分の34命令とな
る。従来は58命令要していたので、24命令も削減で
きた。
【0048】最小マッチング誤差更新ステップS22で
は、第1、第2の探索点それぞれについて求めたブロッ
クマッチング誤差とこれまでに現マクロブロックについ
て計算したブロックマッチング誤差のうち最小のもの
(最小マッチング誤差)とを比較し、第1あるいは第2
の探索点に対するブロックマッチング誤差が最小マッチ
ング誤差を下回った場合は、当該マッチング誤差の値を
最小マッチング誤差に更新するとともに、最小マッチン
グ誤差に対する動きベクトル候補も更新する。
【0049】なお、本実施形態では各マクロブロックの
動きベクトル情報を記憶するための配列をメモリ上に確
保しておき、最小マッチング誤差に対応する動きベクト
ル候補の情報は配列上で逐次更新されるようにするの
で、探索が終了した時点で記憶されている動きベクトル
情報がそのマクロブロックに対する動きベクトル検出結
果となる。
【0050】探索範囲終了判定ステップS23では、現
マクロブロックに対する探索範囲(本実施形態では、探
索中心点から−8画素から+7画素の範囲とするが、こ
れに限定されない)の探索処理が終了したか否かを判定
し、探索範囲の探索処理が終了していなければ、探索位
置更新ステップS24による探索位置更新処理を介し
て、2探索点マッチング誤差算出ステップS21へ戻
し、終了していれば1画面終了判定ステップS03へ処
理を移す。
【0051】なお、この2探索点同時探索モードでは、
2探索点の距離が縮小参照画面で8画素である為、水平
方向に8回の探索処理を行うことで、図3に示すように
水平方向の16点の探索が行え、縮小前の元画像サイズ
で表現すると、例えば−16画素から+14画素の探索
になる。
【0052】探索モード及び探索中心点設定ステップS
01において、2マクロブロック同時探索モードが設定
された場合は、探索モード判定ステップS02を介し
て、2マクロブロックマッチング誤差算出ステップS1
1に進む。
【0053】2マクロブロックマッチング誤差算出ステ
ップS11が選択された場合は、参照動きベクトルの平
均から探索中心点を決定する。現マクロブロックとこれ
に隣接するマクロブロックに対する探索中心点を同じ動
きベクトル(前述の参照動きベクトルの平均)で決定し
ているので、隣接するマクロブロックの探索中心点は現
マクロブロックの探索中心点から丁度マクロブロックサ
イズの画素数だけシフトする。
【0054】つまり、図4に示すように隣接する2マク
ロブロックに対して、縮小現画面及び縮小参照画面から
それぞれ水平方向に連続する16画素を第1、第2の2
つのXMMレジスタ(XMMn、XMMm)に読み込ん
でそのままPSADBW命令を実行するだけで、2マク
ロブロックに対する1ライン分のマッチング誤差を同時
に算出できる。
【0055】現画面、参照画面ともに縮小されているか
ら1マクロブロックは8画素×8ラインである。よっ
て、PSADBW命令を8回繰り返して、それぞれの差
分絶対値の和を計算すれば2マクロブロックのブロック
マッチング誤差を算出できる。
【0056】ここで、2マクロブロックマッチング誤差
算出ステップS11を実装したプログラムの例を図11
に示し、これを参照して1探索点のブロックマッチング
誤差を算出するのに必要な命令数を求める。
【0057】まず、ステップB21では、現画面及び参
照画面の左上端のアドレス及びループ回数のレジスタへ
のセットと差分絶対値和の累算に用いるレジスタの初期
化に4命令要する。ステップB22からステップB26
までの処理をループ内で行う。ステップB22では、現
マクロブロックから第1のXMMレジスタに連続する1
6画素分のデータを読み込むのに1命令要する。ステッ
プB23では、参照画面から連続する16画素(2探索
点にわたる合計2ライン)を第2のXMMレジスタに読
み込むのに1命令要する。ステップB24では、PSA
DBW命令で差分絶対値和を計算するのに1命令要す
る。ステップB25では、求めた差分絶対値和の累算に
1命令要する。最後にステップB26では、ループ関連
処理を行うのに(差分絶対値和計算対象ラインのシフト
及びループそのものの処理)3命令要する。以上、ルー
プ内では合計1+1+1+1+3=7命令を要する。縮
小参照画面では、マクロブロックは8画素×8ラインで
あり、2探索点同時探索モードではラインマッチングは
1ラインずつ行っているので、ループを8回実行するか
ら、この8倍の命令数を必要とする。
【0058】以上より、ブロックマッチングに必要な命
令数は4+7×8=60命令である。しかし、60命令
で行っている処理は2つのマクロブロックに関して1探
索点ずつのマッチング誤差算出であるから、1マクロブ
ロック1探索点あたりに換算すると半分の30命令とな
る。従来は58命令要していたので、28命令も削減で
きた。
【0059】最小マッチング誤差更新ステップS12で
は、それぞれのマクロブロックについて個別に、求めた
ブロックマッチング誤差をこれまでに現マクロブロック
について計算したブロックマッチング誤差のうち最小の
もの(最小マッチング誤差)とを比較し、現マクロブロ
ックの方がブロックマッチング誤差が小さい場合は最小
マッチング誤差を現マクロブロックのブロックマッチン
グ誤差の値に更新するとともに、最小マッチング誤差に
対する動きベクトル候補も更新する。
【0060】探索範囲終了判定ステップS13では、現
マクロブロックに対する探索範囲の探索処理が終了した
かどうかを判定し、探索範囲の探索処理が終了していな
ければ、探索位置更新ステップS14による探索位置更
新処理を介して、前記2マクロブロックマッチング誤差
算出ステップS11へ戻し、終了していれば1画面終了
判定ステップS03へ処理を移す。
【0061】1画面終了判定ステップS03では、現画
面の全マクロブロックに対する動きベクトル候補の探索
処理が終了したか否かを判定する。探索処理が終了して
いなければ、マクロブロック更新ステップS04による
マクロブロック更新処理を介して探索モード及び探索中
心点設定ステップS01に戻す。探索処理が終了してい
れば、前述の通り動きベクトル情報を記憶する配列には
検出結果が記憶されていることになるので、この配列を
出力して(例えば、C言語なら配列の先頭へのポイン
タ)、現画面の全マクロブロックに対する縮小画面での
動きベクトル候補の探索処理を終了する。
【0062】なお、本実施形態では、各マクロブロック
の動きベクトル情報を記憶する配列を用意して直接配列
の値を更新するようにしたが、これに限定しない。例え
ば、動きベクトル候補を格納する一時変数を用意して、
1マクロブロックに対する探索処理が完了してから動き
ベクトル情報を記憶する配列の値を更新しても良い。
【0063】以上、本実施形態によれば、1回のPSA
DBW命令毎に必要となる前処理において従来行われて
いた画素データの結合処理を不要化ないし簡略化するこ
とができるので、1回のブロックマッチング誤差算出に
要する命令を削減でき、結果として高速処理が可能とな
る。
【0064】
【発明の効果】以上、本発明によれば動きベクトル検出
に用いられるブロックマッチング誤差算出において、1
回毎のSSE2のPSADBW命令実行前に必要な前処
理が従来に比べて不要化・簡略化できるので命令数が削
減でき、高速な動きベクトル検出を行う事ができる。
【図面の簡単な説明】
【図1】 本発明の動きベクトル検出処理のフローチャ
ート。
【図2】 本発明の2探索点同時探索モードにおける差
分絶対値和計算時のXMMレジスタの設定方法を説明す
る図。
【図3】 本発明の2探索点同時探索モードにおける探
索点及び探索範囲の例を示す図。
【図4】 本発明の2マクロブロック同時探索モードに
おける差分絶対値和計算時のXMMレジスタの設定方法
を説明する図。
【図5】 従来のブロックマッチング誤差計算における
差分絶対値和計算時のXMMレジスタの設定方法を説明
する図。
【図6】 SSE2のPSADBW命令を説明するため
の図。
【図7】 本発明の一実施形態で用いられるテレスコピ
ックサーチを説明する図。
【図8】 本発明の一実施形態において、参照画面の直
後の画面の動きベクトル検出を行う場合を説明する図。
【図9】 従来のSSE2を用いた1ブロック毎のブロ
ックマッチングを実装したプログラムの例。
【図10】 本発明の2探索点同時探索モードにおける
ブロックマッチングステップを実装したプログラムの
例。
【図11】 本発明の2マクロブロック同時探索モード
におけるブロックマッチングステップを実装したプログ
ラムの例。
───────────────────────────────────────────────────── フロントページの続き Fターム(参考) 5C059 KK15 KK19 LB05 MA00 NN03 NN10 NN28 PP05 PP06 PP07 UA39 5J064 AA02 BB01 BB03 BC04 BC14 BC29

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】水平方向に縮小した画面を用いて動画像の
    第1の画面のマクロブロックである現マクロブロックが
    第2の画面のどの領域から動いたものかを表す動きベク
    トルをブロックマッチング法を用いて計算する方法であ
    って、第1の現マクロブロックとこれと水平方向に隣接
    する第2の現マクロブロックをマッチング単位として第
    2の画面との間でブロックマッチングを行い、第1及び
    第2の現マクロブロックに対する動きベクトル算出を行
    うことを特徴とする動きベクトル検出方法。
  2. 【請求項2】水平方向に縮小した画面を用いて動画像の
    第1の画面のマクロブロックである現マクロブロックが
    第2の画面のどの領域から動いたものかを表す動きベク
    トルをブロックマッチング法を用いて計算する方法であ
    って、第1の現マクロブロックを水平方向に2つ並べた
    ものをマッチング単位として第2の画面との間でブロッ
    クマッチングを行い、第2の画面上の、マクロブロック
    を水平方向に2つ並べた形状の領域である参照領域に対
    する2つの動きベクトル候補を評価することで、第1の
    現マクロブロックに対する動きベクトル算出を行うこと
    を特徴とする動きベクトル検出方法。
  3. 【請求項3】水平方向に縮小した画面を用いて動画像の
    第1の画面のマクロブロックである現マクロブロックが
    第2の画面のどの領域から動いたものかを表す動きベク
    トルを、時間的に第1の画面の直前に入力された第3の
    画面上にあって前記マクロブロックと同位置にあるマク
    ロブロックである直前マクロブロックの有する第2の画
    面に対する動きベクトルである参照動きベクトルを用い
    てブロックマッチング法による探索領域を決定してから
    計算する方法であって、第1の現マクロブロックと画面
    上同位置である第1の直前マクロブロックの第1の参照
    動きベクトルと、第1の現マクロブロックの水平方向に
    隣接する第2の現マクロブロックに対する第2の直前マ
    クロブロックの第2の参照動きベクトルとの差を算出
    し、前記第1及び第2の参照動きベクトルの差が所定の
    範囲内ならば、第1の現マクロブロックとこれと水平方
    向に隣接する第2の現マクロブロックをマッチング単位
    として第2の画面との間でブロックマッチングを行い、
    第1及び第2の現マクロブロックに対する動きベクトル
    算出を行い、前記参照動きベクトルの差が所定の範囲外
    ならば、第1の現マクロブロックを水平方向に2つ並べ
    たものをマッチング単位として第2の画面との間でブロ
    ックマッチングを行い、第2の画面上の、マクロブロッ
    クを水平方向に2つ並べた形状の領域である参照領域に
    対する2つの動きベクトル候補を評価することで、第1
    の現マクロブロックに対する動きベクトル算出を行うこ
    とを特徴とする動きベクトル検出方法。
  4. 【請求項4】水平方向に1/2に縮小した画面で第1の
    現マクロブロックと、これの右隣の第2の現マクロブロ
    ックに対する動きベクトルを求める場合の前記ブロック
    マッチングは、16画素の画素情報を格納可能な第1、
    第2のレジスタ間で1命令で第1、第2のレジスタ間の
    上位8画素の差分絶対値和と第1、第2のレジスタ間の
    下位8画素の差分絶対値和を独立して計算する命令を用
    いたラインマッチングを繰り返すことでブロック全体の
    差分絶対値和を求めて行い、前記ラインマッチングの実
    行にあたっては、現画面の第1のマクロブロックの左端
    から連続する16画素を第1のレジスタに読み込むこと
    で、第1の現マクロブロックの1ライン分の8画素を第
    1のレジスタの上位に、第2の現マクロブロックの1ラ
    イン分の8画素を第1のレジスタの下位にセットし、第
    2の画面のマッチング領域から連続する16画素を第2
    のレジスタに読み込むことで、第1の現マクロブロック
    の1ラインに対応する参照領域の1ライン分の画素を第
    2のレジスタの上位に、第2の現マクロブロックに対応
    する参照領域の1ライン分の画素を第2のレジスタの下
    位にセットして前記命令を実行することを特徴とする請
    求項1または請求項3記載の動きベクトル検出方法。
  5. 【請求項5】水平方向に1/2に縮小した画面で第1の
    現マクロブロックに対する動きベクトルを求める場合の
    前記ブロックマッチングは、16画素の画素情報を格納
    可能な第1、第2のレジスタ間で1命令で第1、第2の
    レジスタ間の上位8画素の差分絶対値和と第1、第2の
    レジスタ間の下位8画素の差分絶対値和を独立して計算
    する命令を用いたラインマッチングを繰り返すことでブ
    ロック全体の差分絶対値和を求めて行い、前記ラインマ
    ッチングの実行にあたっては、現画面の第1のマクロブ
    ロックの1ライン分の画素を第1のレジスタの下位にセ
    ットして、これを第1のレジスタの上位にコピーし、第
    2の画面のマッチング領域から連続する16画素を第2
    のレジスタに読み込むことで、第2の画面の第1の参照
    領域の1ライン分の画素を第2のレジスタの上位に、前
    記第1の参照領域から8画素右にシフトした位置にあ
    る、第2の参照領域の1ライン分の画素を第2のレジス
    タの下位にセットして前記命令を実行することを特徴と
    する請求項2または請求項3記載の動きベクトル検出方
    法。
  6. 【請求項6】水平方向に縮小した画面を用いて動画像の
    第1の画面のマクロブロックである現マクロブロックが
    第2の画面のどの領域から動いたものかを表す動きベク
    トルを、時間的に第1の画面の直前に入力された第3の
    画面上にあって、前記マクロブロックと同位置にあるマ
    クロブロックである直前マクロブロックの有する第2の
    画面に対する動きベクトルである参照動きベクトルを用
    いてブロックマッチング法による探索領域を決定してか
    ら計算する方法であって、第1の現マクロブロックと画
    面上同位置である第1の直前マクロブロックの第1の参
    照動きベクトルと、第1の現マクロブロックの水平方向
    に隣接する第2の現マクロブロックに対する第2の直前
    マクロブロックの第2の参照動きベクトルとの差が、所
    定の範囲内ならば動きベクトル探索モードを2マクロブ
    ロック同時探索モードに設定して探索中心点を第1及び
    第2の参照動きベクトルに基づいて設定し、差が所定の
    範囲外ならば動きベクトル探索モードを2探索点同時探
    索モードに設定して探索中心点を第1の参照動きベクト
    ルに基づいて設定する探索モード及び探索中心点設定ス
    テップと、動きベクトル探索モードが2マクロブロック
    同時探索モードの場合に、第1及び第2の現マクロブロ
    ックと、探索中心点から所定の領域で第2の画面から抽
    出したマクロブロックと同じ形状・面積の第1、第2の
    参照領域との間でブロックマッチング誤差を一括して算
    出する2マクロブロック同時マッチング誤差算出ステッ
    プと、動きベクトル探索モードが2探索点同時探索モー
    ドの場合に、第1の現マクロブロックと、探索中心点か
    ら所定の領域で第2の画面から抽出したマクロブロック
    と同じ形状・面積の第1の参照領域及び隣接する第2の
    参照領域との間の2つのブロックマッチング誤差を一括
    して算出する2探索点同時マッチング誤差算出ステップ
    と、動きベクトル探索モードが2マクロブロック同時探
    索モードの場合には第1、第2それぞれの現マクロブロ
    ックに対して個別に最小ブロックマッチング誤差となる
    探索点の座標から動きベクトルをそれぞれ求め、動きベ
    クトル探索モードが2探索点同時探索モードの場合に第
    1の現マクロブロックに対して最小ブロックマッチング
    誤差となる探索点の座標から動きベクトルを算出する動
    きベクトル算出ステップと有することを特徴とする動き
    ベクトル検出方法。
  7. 【請求項7】前記第1、第2の参照動きベクトルの差が
    所定の範囲内である場合は、前記動きベクトル探索モー
    ドを2マクロブロック同時探索モードに設定し、前記探
    索中心点が第1、第2の参照動きベクトルの平均ベクト
    ルで設定されることを特徴とする、請求項6記載の動き
    ベクトル検出方法。
  8. 【請求項8】第1の現マクロブロックに隣接し、動きベ
    クトルが未検出の第2の現マクロブロックが存在しない
    場合は、動きベクトル探索モードを2探索点同時探索モ
    ードに設定すると共に探索中心点を第1の現マクロブロ
    ックに対する第1の参照動きベクトルにより設定するこ
    とを特徴とする請求項6または請求項7記載の動きベク
    トル検出方法。
  9. 【請求項9】前記動きベクトルの算出は、ブロックマッ
    チング誤差を計算して行い、前記ブロックマッチング誤
    差は、1命令で8画素間の差分絶対値の和を2つ計算さ
    せることのできる特定の命令を使用することを特徴とす
    る請求項6乃至請求項8記載の動きベクトル検出方法。
  10. 【請求項10】請求項1乃至9記載の方法で動きベクト
    ルを検出した後で、縮小前の現画面である元現画面のマ
    クロブロックと縮小前の参照画面である元参照画面との
    間で前記動きベクトルが示す元参照画面上の点を中心と
    する所定の領域を探索点とするブロックマッチングを行
    い、最小マッチング誤差となる点の座標から動きベクト
    ルを求めることを特徴とする動きベクトル検出方法。
  11. 【請求項11】水平方向に縮小した画面を用いて入力画
    面のマクロブロックが参照画面のどの領域から動いたも
    のかを表す動きベクトルを計算するために、コンピュー
    ターを入力画面の第1の現マクロブロックと画面上の位
    置が同じである参照画面の第1の参照マクロブロックの
    動きベクトルである第1の参照動きベクトルと、第2の
    現マクロブロックに対する第2の参照マクロブロックの
    第2の参照動きベクトルとの差を計算する参照ベクトル
    差検出手段と、前記第1、第2の参照動きベクトルの差
    が所定の範囲内である場合には2マクロブロック同時探
    索モードを、所定の範囲外である場合には2探索点同時
    探索モードを選択する探索モード選択手段と、2マクロ
    ブロック同時探索モードが選択された場合に探索中心点
    を前記第1、第2の参照動きベクトルに基づいて設定
    し、2探索点同時探索モードが選択された場合に探索中
    心点を前記第1の参照動きベクトルに基づいて設定する
    探索中心点設定手段と、2マクロブロック同時探索モー
    ドの場合に2つのマクロブロックに対して同時にブロッ
    クマッチング誤差を計算する2マクロブロック同時ブロ
    ックマッチング誤差計算手段と、2探索点同時探索モー
    ドの場合に第1の現マクロブロックに対する2つの探索
    点のブロックマッチング誤差を同時に計算する2探索点
    同時ブロックマッチング誤差計算手段と、2マクロブロ
    ック同時探索モードの場合に第1、第2の現マクロブロ
    ックに対してそれぞれ最小ブロックマッチング誤差とな
    る探索点から動きベクトルを算出する2マクロブロック
    同時探索モード動きベクトル計算手段と、2探索点同時
    探索モードの場合に第1の現マクロブロックに対して最
    小ブロックマッチング誤差となる探索点から動きベクト
    ルを算出する2探索点同時探索モード動きベクトル計算
    手段と、2マクロブロック同時探索モード動きベクトル
    計算手段及び2探索点同時探索モード動きベクトル計算
    手段で計算された動きベクトルを検出結果として出力す
    る動きベクトル検出結果出力手段として機能させるプロ
    グラム。
JP2001358698A 2001-11-26 2001-11-26 動きベクトル検出方法及び動きベクトル検出プログラム Pending JP2003163934A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001358698A JP2003163934A (ja) 2001-11-26 2001-11-26 動きベクトル検出方法及び動きベクトル検出プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001358698A JP2003163934A (ja) 2001-11-26 2001-11-26 動きベクトル検出方法及び動きベクトル検出プログラム

Publications (1)

Publication Number Publication Date
JP2003163934A true JP2003163934A (ja) 2003-06-06

Family

ID=19169834

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001358698A Pending JP2003163934A (ja) 2001-11-26 2001-11-26 動きベクトル検出方法及び動きベクトル検出プログラム

Country Status (1)

Country Link
JP (1) JP2003163934A (ja)

Similar Documents

Publication Publication Date Title
US6690729B2 (en) Motion vector search apparatus and method
US5610658A (en) Motion vector detection using hierarchical calculation
KR100486249B1 (ko) 움직임 추정 장치 및 탐색영역에서 레퍼런스매크로블록창의 스캐닝 방법
US6980595B2 (en) Method and system for distributed video compression in personal computer architecture
US6859499B2 (en) Deblocking filtering apparatus and method
US6263025B1 (en) Motion vector detecting apparatus
US6418168B1 (en) Motion vector detection apparatus, method of the same, and image processing apparatus
JP2010288110A (ja) 画像処理装置および画像処理方法
JP4793070B2 (ja) 動きベクトル探索方法及び装置
JP2000106674A (ja) 動き検出方法および装置
US20140126639A1 (en) Motion Estimation Method
KR100413770B1 (ko) 완전 탐색블록 정합회로 및 완전 탐색블록 정합방법
JP2006215655A (ja) 動きベクトル検出方法、動きベクトル検出装置、動きベクトル検出プログラム及びプログラム記録媒体
US20040247032A1 (en) Motion vector detection device and motion vector detection method
JP2003163934A (ja) 動きベクトル検出方法及び動きベクトル検出プログラム
JPH09182077A (ja) 画像符号化方法および画像符号化装置
JP2006215657A (ja) 動きベクトル検出方法、動きベクトル検出装置、動きベクトル検出プログラム及びプログラム記録媒体
US6968011B2 (en) Motion vector detecting device improved in detection speed of motion vectors and system employing the same devices
JP2004229150A (ja) 動きベクトル探索方法および装置
JPH0614316A (ja) 動きベクトル検出装置
JP3171249B2 (ja) 動画像符号化の動きベクトル探索方法
JPH08242454A (ja) グローバル動きパラメタ検出方法
JPH10191358A (ja) 動ベクトル検出装置
JPH07288817A (ja) 動きベクトル検出装置
JP2008118340A (ja) 動きベクトル検出装置及びビデオ信号処理装置