JP2006033112A - 動きベクトル検出装置、および、プログラム - Google Patents

動きベクトル検出装置、および、プログラム Download PDF

Info

Publication number
JP2006033112A
JP2006033112A JP2004205467A JP2004205467A JP2006033112A JP 2006033112 A JP2006033112 A JP 2006033112A JP 2004205467 A JP2004205467 A JP 2004205467A JP 2004205467 A JP2004205467 A JP 2004205467A JP 2006033112 A JP2006033112 A JP 2006033112A
Authority
JP
Japan
Prior art keywords
integer
search
block
difference
fractional
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.)
Granted
Application number
JP2004205467A
Other languages
English (en)
Other versions
JP4385875B2 (ja
Inventor
Koichi Nakagome
浩一 中込
Rei Hamada
玲 浜田
Shinichi Matsui
紳一 松井
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.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
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 Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP2004205467A priority Critical patent/JP4385875B2/ja
Publication of JP2006033112A publication Critical patent/JP2006033112A/ja
Application granted granted Critical
Publication of JP4385875B2 publication Critical patent/JP4385875B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】 動画像データの符号化におけるフレームレートの向上と高速処理の両立を実現する。
【解決手段】 整数探索部171は整数探索をおこない、最良整数位置判定部172が、整数画素精度で現ブロックとの差分が最小となる最良整数ブロックを判定する。周囲整数位置評価部173は、最良整数ブロックの周辺のブロックのうちで現ブロックとの差分が最小である次点整数ブロックを特定する。1/2pel演算部174は、最良整数ブロックの位置と次点整数ブロックの位置とに基づいて、暫定分数位置を特定する。探索中心判定部175は、最良整数ブロックの評価値と、暫定分数位置での評価値とを比較し、現ブロックとの差分がより小さい位置を判定する。探索中心判定部175は、差分がより小さかった位置を分数探索の探索中心に指定する。1/4pel演算部176は、指定された探索中心に基づいて1/4pel探索を実行し、ベクトル算出部177が分数精度の動きベクトルを算出する。
【選択図】 図2

Description

本発明は、動きベクトル検出装置、および、プログラムに関し、特に、ブロックマッチング方式の動き検出に好適な動きベクトル検出装置、および、プログラムに関する。
動画像データを圧縮するための符号化処理においては、すでに符号化された画像を復号して得られる参照画像(参照フレーム)と符号化対象である現画像(現フレーム)との差分を検出するため、所定数の画素群であるマクロブロックを基準に動きベクトルを検出することが一般的である。すなわち、現画像上に設定したマクロブロックとの誤差が最小となる参照画像上のブロック(参照ブロック)を探索し、マクロブロック上の基準座標と参照ブロック上の基準座標との間の動きベクトルを検出する。
このような参照画像上での参照ブロックの探索方法として、例えば、「フルサーチ手順」が知られている。この方法は、参照画像上の探索領域内すべてのブロックパターンについて演算をおこなうものである。ここで、ブロック間の動きベクトル検出には、例えば、差分絶対値和演算(Sum of Absolute Difference: SAD)が一般的に用いられるため、すべてのブロックパターンを対象とするフルサーチ手順では、検出が確実である反面、動きベクトル検出のための総演算量が莫大となってしまう。また、画像の変化が少ない場合でもすべてのブロックについて演算してしまうため、処理が効率的でない場合がある。
一方で、すべてのブロックパターンについて演算をおこなわず、複数段階の手順を経ることで簡易的に動きベクトル検出をおこなう「ステップサーチ手順」(多段探索)も知られている。特に分数画素単位までの探索をおこなう場合、ステップサーチ手順とすることで演算量の減少を図ることができる。すなわち、ステップサーチ手順では、第1段階で整数画素単位の粗い探索(整数探索)をおこない、差分値が最小となる整数位置の周辺で、分数画素単位の細かい探索(分数探索)を第2段階としておこなう。第1段階の粗い探索を導入することにより、フルサーチ手順より演算量を減少させることができる。
しかしながら、第2段階での分数探索では、整数探索での探索された最適位置の周囲8方向を分数画素精度で差分絶対値和演算をおこなうので、第2段階での演算量は多くなる。このような問題を解消するため、第2段階での演算量を減少させる手法が提案されている(例えば、特許文献1)。
特許文献1の手法では、第1段階の整数探索で探索したブロックのうち、マッチング結果が最も良好なブロック(最良ブロック)と、2番目に良好なブロック(次点ブロック)を特定し、最良ブロックからみた次点ブロックの方向を、最良ブロックの中心近傍における分数探索の対象分数位置の方向としている。すなわち、最良ブロックの中心を示すvector_minと、次点ブロックの中心を示すvector_secondを用いて、分数探索対象とする分数位置を決定し、該当する分数位置でのみマッチングをとることで、分数探索(第2段階)での演算量の減少を図っている。
上記手法では、ブロック単位のマッチング順位によりvector_minとvector_secondを決め、これに基づいて分数探索方向を決定している。このため、例えば、整数探索範囲が比較的広い場合などには、最良ブロックと位置的に離れたブロックが次点ブロックとされることも考えられる。このような場合、探索中心からみた次点ブロックまでの距離が、最良ブロックよりも遠くなる場合がある。ここで、最良整数位置(vector_min)付近での分数ベクトルを検出することが多段探索における分数探索(第2段階)の目的であるが、上記のように、最良ブロックよりも遠い位置のブロックが次点ブロックとされた場合、最良ブロックから次点ブロックに対する方向(すなわち、vector_minとvector_secondで求める方向)は、最良整数位置(vector_min)から実際の最良分数位置に対する方向と異なってしまう可能性がある。この場合、最良ではない分数位置に基づいて分数ベクトルが求められてしまうため、分数探索の結果が良好でない場合がある。
また、整数探索時に、ブロックの近傍4点(もしくは8点)の整数位置について現フレーム(符号化対象フレーム)との差分をとり、良好な結果値となった整数位置の方向にブロックを移動させることで、探索範囲の全領域にわたってブロックを移動させることなく、最良のブロックを探索する方法も知られている。一方、特許文献1に記載の手法では、整数探索におけるブロック単位に順位をとっているので、探索範囲内のすべてのブロックについて評価値を得なければならない。そのため、上記のようなブロック移動量を減少させる手法には適用できず、効果的な演算量の減少を図ることが困難である。
特開平10−247242号公報
本発明は上記実状に鑑みてなされたもので、分数探索での演算量を減少させるとともに、良好な分数探索結果を得ることができる動き検出装置等を提供することを目的とする。
上記目的を達成するため、本発明の第1の観点にかかる動きベクトル検出装置は、
参照フレーム上で整数探索および分数探索して、現フレーム上の現ブロックについての動きベクトルを検出する動きベクトル検出装置であって、
整数単位の探索の結果、現ブロックとの差分が最小である整数位置を第1の整数位置(最良整数位置)とし、第1の整数位置の近傍周囲の整数位置の内、前記第1の整数位置の次に現ブロックとの差分が小さい整数位置を第2の整数位置(次点整数位置)として特定する第2整数位置特定手段と、
前記第1の整数位置と前記第2の整数位置とに基づいて、所定の精度の分数位置を推定する分数位置推定手段と、
前記第1の整数位置と、前記分数位置推定手段が推定した分数位置(暫定分数位置)とに基づいて、前記所定の精度より高精度の分数探索をおこなう分数探索手段と、
を備えることを特徴とする。
上記動きベクトル検出装置において、
前記分数探索手段は、
前記第1の整数位置における現ブロックとの差分と、前記分数位置推定手段が推定した分数位置における現ブロックとの差分とを比較し、より差分の小さい位置がいずれかであるかを判定する判定手段と、
前記判定手段によってより差分が小さいと判定された位置を前記所定の精度より高精度の分数探索における探索中心に指定する探索中心指定手段と、
をさらに備えていることが望ましい。
上記動きベクトル検出装置において、
前記第2整数位置特定手段は、前記第1の整数位置に隣接する整数位置の中から第2の整数位置を特定することが望ましい。
この場合、
前記第2整数位置特定手段は、前記第1の整数位置の周囲8方向に隣接する整数位置の中から第2の整数位置を特定することが望ましい。
上記動きベクトル検出装置において、
前記分数位置推定手段は、前記第1の整数位置と前記第2の整数位置との間の中間位置を前記所定の精度の分数位置であると推定することが望ましい。
上記動きベクトル検出装置において、
前記第2整数位置特定手段は、前記第1の整数位置における現ブロックとの差分が、前記推定された分数位置における現ブロックとの差分より小さい場合、第1の整数位置の近傍周囲の整数位置の内、前記第2の整数位置の次に現ブロックとの差分が小さい整数位置を新たな第2の整数位置としてもよい。
上記目的を達成するため、本発明の第2の観点にかかるプログラムは、
コンピュータで動画像の動きベクトル検出をおこなうためのプログラムであって、
コンピュータに、
参照フレーム上で整数単位の探索をおこなって、現フレームの現ブロックとの差分が最小である整数位置を第1の整数位置(最良整数位置)とし、第1の整数位置の近傍周囲の整数位置の内、前記第1の整数位置の次に現ブロックとの差分が小さい整数位置を第2の整数位置(次点整数位置)として特定する機能と、
前記第1の整数位置と前記第2の整数位置との間の中間位置を、所定の精度の分数位置と推定する機能と、
前記第1の整数位置における現ブロックとの差分と、前記推定された分数位置(暫定分数位置)における現ブロックとの差分とを比較し、より差分の小さい位置がいずれかであるかを判定する機能と、
前記判定手段によってより差分が小さいと判定された位置を探索中心として、前記所定の精度より高精度の分数探索をおこなう機能と、
分数探索の結果に基づき、現ブロックについての動きベクトルを算出する機能と、
を実現させることを特徴とするプログラム。
上記プログラムは、
前記コンピュータに、
前記第1の整数位置における現ブロックとの差分が、前記推定された分数位置における現ブロックとの差分より小さい場合、第1の整数位置の近傍周囲の整数位置の内、前記第2の整数位置の次に現ブロックとの差分が小さい整数位置を新たな第2の整数位置とする機能、
をさらに実現させることを特徴とする。
本発明によれば、整数探索で得られた第1の整数位置(最良整数位置)の近傍周囲で、最良整数位置の次に現ブロックとの差分が小さい第2の整数位置(次点整数位置)を特定し、最良整数位置と次点整数位置との中間位置(例えば、1/2pel位置)を、所定の精度(例えば、1/2pel)の分数探索で得られる分数位置と推定する。そして、推定された分数位置(暫定分数位置)と最良整数位置のうち、現ブロックとの差分がより小さい位置を探索中心として、より高精度(例えば、1/4pel)の分数探索をおこなう。このため、例えば、「整数探索(第1段階)→1/2pel探索(第2段階)→1/4pel探索(第3段階)」というような多段探索で動きベクトルを検出する場合に、すでに実行された整数探索の結果から第2段階での結果を推定するので、第2段階での演算量を減少させることができる。これにより、動画像の符号化などにおける処理の高速化や装置の省電力化等を図ることができる。
ここで、次点整数位置を最良整数位置の近傍周囲、より詳細には、最良整数位置に隣接する整数位置の中から特定している。このため、探索範囲内のブロック単位で最良整数位置と次点整数位置とを特定することで生じうる、実際の分数動きベクトルとは相関しない位置を次点整数位置としてしまうことがない。さらに、特定した次点整数位置に基づいて推定した分数位置における現ブロックとの差分より、最良整数位置における現ブロックとの差分の方が小さい場合は、最良整数位置の近傍周囲で、当該次点整数位置の次に現ブロックとの差分が小さい位置を次点整数位置としている。このため、種々の条件等により、最良整数位置の次に差分が小さい位置が実際の分数動きベクトルと相関が高くない場合であっても、実際の分数動きベクトルとの相関が高い位置を探索するので、高速な処理を安定的におこなうことができる。
(実施形態1)
本発明にかかる実施形態を、以下図面を参照して説明する。本実施形態では、動画像データの符号化を行う符号化装置に本発明を適用した場合を例に以下説明する。本実施形態にかかる符号化装置100は、入力される動画像データを構成する所定単位(例えば、フレームやフィールド)の画像間での動き補償により次の画像を予測する予測差分符号化方式で動画像データを符号化するものとする。本実施形態では、入力される単位画像を「フレーム」とする。すなわち、本実施形態にかかる符号化装置100は、インターフレーム予測による符号化をおこなう。なお、画像単位はフレームに限られず任意であり、例えば「フィールド」などであってもよい。
本実施形態にかかる符号化装置100の構成を図1を参照して説明する。図1は、本実施形態にかかる符号化装置100の機能構成を示す機能ブロック図である。
図示するように、本実施形態にかかる符号化装置100は、変換部110と、量子化部120と、符号化部130と、逆量子化部140と、逆変換部150と、復元画像メモリ160と、動き検出部170と、動き補償部180と、から構成される。
変換部110は、入力されたフレームおよび差分データについて変換符号化をおこなうことでデータ圧縮をおこなう。ここでは、例えば、4×4ブロックの整数変換(Integer Transform)をおこなうことで、動画像データを空間周波数領域に変換する。すなわち、隣接画素との相関を利用して低域周波数領域に変換係数を偏らせることでデータ圧縮を行う。
量子化部120は、変換部110による変換係数の値を、例えば、量子化ステップ幅の倍数で表して量子化し、データ圧縮を行う。すなわち、変換部110での変換に用いられた変換係数が離散的なレベルにマッピングされる。このような量子化によって高い周波数の符号量を軽減する。
符号化部130は、量子化部120で量子化されたデータを、例えば、エントロピー符号化して出力するものであり、VLC(Variable Length Coding:可変長符号化)方式などの符号を用いて符号化する。より詳細には、例えば、指数ゴロム符号(Exponential Golomb Coding)や、CAVLC(Context-based Adaptive Variable Length Coding)などを用いる。さらに、生成する符号量を削減するために、CABAC(Context-based Adaptive Binary Arithmetic Coding)などの算術符号を用いて符号化してもよい。符号化部130で符号化されたデータ(以下、「符号化ビットストリーム」とする)は、所定の伝送媒体や記録媒体などに出力される。出力された符号化ビットストリームは、所定の復号化装置によって復号されて動画像データが再生される。
逆量子化部140は、量子化部120で量子化されたデータを逆量子化し、逆変換部150は、逆量子化部140で逆量子化されたデータを逆変換することで、量子化された入力データ(量子化フレーム)を復元する。
復元画像メモリ160は、例えば、半導体記憶素子などから構成される記憶装置であり、逆変換部150で復元されたフレーム(以下、「復元フレーム」とする)を格納する、いわゆるフレームメモリである。すなわち、出力された符号化フレームについての符号化前のデータを格納する。復元画像メモリ160に格納された復元フレームは、インター予測で参照される「参照フレーム」として用いられる。
動き検出部170は、現在の入力フレーム(現フレーム)と、現フレームの前のフレーム(参照フレーム)との差分を検出することで画像中の動体の動きを検出し、その動きのベクトル(動きベクトル)を求める。本実施形態では、現フレーム上に所定数の画素から構成されるマクロブロック(Macro Block: MB)を設定し、参照フレーム上でマクロブロックとの差分が最小となるブロック(参照ブロック)を探索し、これらの間の差分を示すベクトルを動きベクトルとして検出する、いわゆる「ブロック・マッチング法」による動き検出をおこなう。
ここで、本実施形態の動き検出部170は、整数画素単位で動きベクトルを探索した後に分数画素単位で探索をおこなう、いわゆる「多段探索」により、分数単位までの動きベクトルを検出する。ここで、整数画素単位での探索を「整数探索」、分数画素単位での探索を「分数探索」とする。
動き補償部180は、動き検出部170が検出した動きベクトルに基づいて、前のフレームに対して動き補償する。すなわち、検出した動きベクトルに基づいて予測フレームを作成する。そして、入力フレームと予測フレームの差分が符号化対象となる。
本発明の実施形態にかかる動き検出部170は、例えば、「整数探索(第1段階)→1/2pel探索(第2段階)→1/4pel探索(第3段階)」のような多段探索で動きベクトルを検出する場合に、第2段階の演算量を減少させることで、処理速度の高速化とフレームレートの向上を図るものである。このような動作を行う動き検出部170の構成を図2を参照して説明する。
図2は、動き検出部170の構成を示すブロック図である。図示するように、動き検出部170は、整数探索部171、最良整数位置判定部172、周囲整数位置評価部173、1/2pel演算部174、探索中心判定部175、1/4pel演算部176、ベクトル算出部177、を備える。
整数探索部171は、入力された現フレームで符号化対象ブロックとして指定されたマクロブロック(以下、「現ブロック」とする)の画素値と、入力された参照フレーム上の探索ブロックの画素値との差分を整数探索により求める。本実施形態では、所定の探索範囲を参照フレーム上に設定し、この探索フレーム内で探索ブロックを整数画素分ずつずらしながら、各探索ブロックの画素値と現ブロックの画素値との差分を、例えば、差分絶対値和演算(Sum of Absolute Difference: SAD)で求め、各演算結果を各探索ブロック毎の評価値として出力する。
最良整数位置判定部172は、整数探索部171が出力した評価値に基づいて、現ブロックとの差分が最小となったブロック(以下、「最良整数ブロック」とする)がいずれであるかを判定し、最良整数位置(第1の整数位置)として特定する。
周囲整数位置評価部173は、整数探索部171が出力した評価値に基づいて、最良整数位置判定部172が判定した最良整数ブロックの周囲8方向に隣接する整数ブロックのうちで評価値が最良のブロック(以下、「次点整数ブロック」とする)を判定し、次点整数位置(第2の整数位置)として特定する。
1/2pel演算部174は、周囲整数位置評価部173が判定した次点整数ブロックと最良整数ブロックとに基づいて、1/2画素(1/2pel)単位の探索(1/2pel探索)で得られる分数位置と推定される分数位置(以下、「暫定分数位置」とする)を特定し、暫定分数位置における探索ブロック(以下、「暫定分数ブロック」とする)の画素値と、現ブロックの画素値との差分を、例えば、差分絶対値和演算により演算し、演算結果を評価値として出力する。
探索中心判定部175は、次点整数ブロックの評価値と暫定分数ブロックの評価値とを比較し、いずれの評価値がより良好であるか、すなわち、差分がより小さいかを判定する。探索中心判定部175は、判定結果に基づき、続いて実行する分数探索(1/4画素精度)の探索中心を判定する。
1/4pel演算部176は、探索中心判定部175が判定した探索中心に基づいて1/4画素(1/4pel)単位の分数探索(1/4pel探索)をおこなう。ここでは、探索ブロックを1/4画素分ずつずらしながら、各ずらし位置での画素値と現ブロックの画素値との差分を、例えば、差分絶対値和演算により求め、最も良好な評価値となったブロック(以下、「最良分数ブロック」とする)を特定する。
ベクトル算出部177は、整数探索部171による整数探索、および、1/4pel演算部176による1/4pel探索での得られた結果に基づいて、現ブロックについての「動きベクトル」を算出して出力する。
このような動き検出部170の各構成は、所定の制御信号によって制御されるものとする。このような制御信号は、例えば、CPU(Central Processing Unit:中央演算処理装置)などから構成される符号化装置100の制御部(不図示)より各部に供給されるものとすることができる他、外部装置などから供給されてもよい。
上記のように構成された符号化装置100は、次のような手順で動画像データを符号化する。
符号化装置100に入力された動画像データは、フレーム単位で変換部110および動き検出部170へ送られる。動き検出部170では入力フレームと参照フレームとの差分を検出することで動きベクトルを検出する。動き補償部180は、その動きベクトルに基づいて参照フレームを動き補償して予測フレームを生成する。そして、入力フレームと予測フレームとの差分が取られ、その差分データは、変換部110による変換と、量子化部120による量子化が行われた後に、符号化部130で符号化される。動き検出部170が検出した動きベクトルデータも符号化部130で符号化され、両データは多重化されて出力される。
一方、量子化部120で量子化された差分データは、逆量子化部140で逆量子化され、逆変換部150で逆変換されることにより復元される。復元された差分データと、動き補償部180が生成した予測フレームとが加算され、復元画像メモリ160に「復元フレーム」(復元画像)として格納される。復元画像メモリ160に格納された復元フレームは、「参照フレーム」(参照画像)として動き検出部170に入力される。動き検出部170では、入力された参照フレームと現フレームとの差分を示す動きベクトルを検出する。
本実施形態にかかる動き検出部170は、いわゆるブロックマッチング法により現フレームと参照フレームとの差分ベクトルを求めるものである。すなわち、現フレーム上のマクロブロックと近似するブロックを参照フレーム上で探索し、探索されたブロック(参照ブロック)とマクロブロックとの差分ベクトルを動きベクトルとして検出する。
ここで、本実施形態では、「整数探索(第1段階)→1/2pel探索(第2段階)→1/4pel探索(第3段階)」の順で探索する「多段探索」により動きベクトルを検出する。この場合の動き検出部170の動作(「動きベクトル検出処理1」)を図3に示すフローチャートを参照して説明する。この「動きベクトル検出処理1」は、動き検出部170に現フレームが入力されたことを契機に開始される。
動き検出部170に現フレームが入力されると、整数探索部171によって整数探索がおこなわれる(ステップS101)。
本実施形態では、整数探索の場合、図4(a)に示すように、現フレームCF上で指定された現ブロックCBと同一の位置およびサイズのブロックを探索ブロックSB1_INTとして参照フレームRF上に規定する。本実施形態では、整数探索、すなわち、第1段階の探索で用いる探索ブロックを探索ブロックSB1と表記する。なお、現ブロックCBおよび探索ブロックSB1のブロックサイズは任意であり、以下「探索ブロックサイズ」と表記する。
整数探索の動作を図4(b)を参照して説明する。整数探索部171は、参照フレーム上に設定した探索ブロックSB1_INTを中心とする所定サイズの探索範囲SA1を規定し、この探索範囲SA1内で、探索ブロックSB1_INTを起点に、同サイズのブロック(探索ブロックSB1)を1整数画素ずつずらしながら、現ブロックCBの画素値と、各探索ブロックSB1の画素値との差分を、例えば、差分絶対値和演算により演算し、演算結果を各探索ブロックSB1の評価値として最良整数位置判定部172に出力する。
なお、本実施形態では、ブロック内の画素のいずれかを基準点とし、その基準点の位置を指定することにより、ブロックの位置などを決定するものとする。ここでは、図4(b)に示すように、ブロックの左上頂部の整数位置を基準点とするものとし、整数探索で用いられる探索ブロックSB1についての基準点を基準点OP1と表記する。
最良整数位置判定部172は、整数探索部171が出力した評価値の内、評価が最も良好、すなわち、現ブロックとの差分が最小であるブロック(最良整数ブロックSB_min)がいずれであるかを判定し、最良整数位置(第1の整数位置)として特定する(ステップS102)。すなわち、探索ブロックSB1_INTを起点に、整数探索範囲SA1内を1整数画素ずつずらしたブロックの中から、現ブロックとの差分が整数単位で最小となるブロックを最良整数ブロックSB1_minとする(図4(b)参照)。
最良整数位置判定部172は、特定した最良整数ブロックSB1_minの位置を示す位置情報を周囲整数位置評価部173とベクトル算出部177に出力する。この場合、例えば、最良整数ブロックSB1_minの基準点OP1_minの座標を示す情報を位置情報として出力する。最良整数位置判定部172はまた、整数探索部171から取得した各探索ブロックSB1の評価値を周囲整数位置評価部173に出力する。
周囲整数位置評価部173は、整数探索で得られた最良整数ブロックSB1_minの近傍で、最良整数ブロックSB1_minの次に現ブロックとの差分が小さいブロック(次点整数ブロックSB1_min2)がいずれであるかを判定し、次点整数位置(第2の整数位置)として特定する(ステップS103)。本実施形態では、最良整数ブロックSB1_minの周囲8方向に隣接するブロックの中から次点整数ブロックSB1_min2を特定する。
周囲整数位置評価部173は、最良整数位置判定部172から取得した最良整数ブロックSB1_minの位置情報に基づいて最良整数ブロックSB1_minを特定すると、その最良整数ブロックSB1_minの周囲8方向に隣接するブロックを含む範囲を規定するための、図5(a)に示すような「周囲ブロック探索範囲SA1’」を設定する。図5(b)に示すように、この周囲ブロック探索範囲SA1’は、最良整数ブロックSB1_minの基準点OP1_minの周囲8方向に隣接する3×3整数画素の範囲である。この場合、基準点OP1_minの周囲8方向に隣接する整数画素(整数位置)を整数画素A〜H(整数位置A〜H)とする。
周囲整数位置評価部173は、この周囲ブロック探索範囲SA1’内の各整数位置が基準点となる探索ブロックSB1を特定する。すなわち、これらの探索ブロックSB1は、図6(a)〜(h)に示すような、最良整数ブロックSB1_minの周囲8方向に隣接する探索ブロックSB1a〜SB1hである。
このような探索ブロックSB1a〜SB1hが整数探索範囲SA1内にある場合、ステップS101の整数探索において、これらのブロックの評価値が得られていることになる。したがって、周囲整数位置評価部173は、取得した探索ブロックSB1の評価値から探索ブロックSB1a〜SB1hの評価値を抽出し、この中で、最も差分が最小であるブロックがいずれであるかを特定する。
ここで、最良整数ブロックSB1_minが、例えば、整数探索範囲SA1の最縁部などに位置していた場合には、探索ブロックSB1a〜SB1hの一部は、整数探索において演算されていない場合もある。このような場合は、周囲整数位置評価部173が該当するブロックの位置情報を整数探索部171に出力して指示することにより、随時必要な部分の整数探索を実施して、探索ブロックSB1a〜SB1hのすべての評価値を得るものとする。
ここで、分数補間した画像での動きベクトル位置は、整数探索で求められた最良整数位置の近傍で2番目に小さい差分となる位置との相関が非常に高い。このため、ステップS102で特定した最良整数ブロックSB1_minの位置と、ステップS103で特定した次点整数ブロックSB1_min2の位置とに基づいて、分数探索で求める動きベクトル位置(分数位置)を暫定的に推定することができる。
すなわち、1/2pel演算部174は、ステップS102で特定した最良整数ブロックSB1_minと、ステップS103で特定した次点整数ブロックSB1_min2とに基づいて、1/2pel探索によって得られる分数位置を推定する(ステップS104)。すなわち、通常の探索動作では、探索中心の周囲8方向(もしくは4方向)について探索して分数位置を求めるが、ここでは、1回の演算によってこの分数位置が推定されることになる。推定された分数位置は、より高精度の分数探索(すなわち、1/4pel探索)の探索中心候補となる分数位置(以下、「暫定分数位置HP」とする)である。
ここで、例えば、次点整数ブロックSB1_min2が探索ブロックSB1c(図6(c))である場合、図7(a)に示すように、最良整数ブロックSB1_minの基準点OP1_minと、次点整数ブロックSB1_min2の基準点、すなわち、周囲ブロック探索範囲SA1’の整数位置Cとの間の中間位置(1/2位置)を暫定分数位置HPとする。この場合、整数単位で現ブロックとの差分が最小のブロックが最良整数ブロックSB1_minであり、この最良整数ブロックSB1_minの近傍周囲において、最良整数ブロックSB1_minの次に差分が小さいブロック(次点整数ブロックSB1_min2)が探索ブロックSB1cということになる。
分数画素精度の動きベクトル(分数動きベクトル)は、このような次点整数ブロックとの相関が高い傾向にあるので、最良整数ブロックSB1_minに対する次点整数ブロックSB1_min2の位置に基づいて、実際の分数動きベクトルを推定することができる。図7(a)の場合、次点整数ブロックSB1_min2が探索ブロックSB1cであるので、最良整数ブロックSB1_minの基準点OP1_minと、探索ブロックSB1cの基準点との間の分数位置を示すベクトルを実際の分数動きベクトルと推定できる。
暫定分数位置HPを特定すると、図7(b)に示すような、この暫定分数位置HPが基準点(以下、「基準点OP2」とする)となるブロック(以下、「暫定分数ブロックSB2」とする)を規定する。この暫定分数ブロックSB2のブロックサイズは、探索ブロックサイズと同一である。1/2pel演算部174は、暫定分数ブロックSB2の範囲に含まれる画素に対し、例えば、「6tap FIR」などの補間手法により、各整数画素間の中間位置(1/2位置)での画素値が得られるよう1/2画素補間を行い(図8(a)参照)、現ブロックとの差分演算(1/2pel演算)をおこなう(ステップS105)。
すなわち、1/2pel演算部174は、暫定分数ブロックSB2の画素値を参照フレームから求め、現ブロックCBの画素値との差分を、例えば、差分絶対値和演算により求める。1/2pel演算部174は、求めた差分値を、暫定分数ブロックSB2の評価値として探索中心判定部175に出力する。
探索中心判定部175は、1/2pel演算部174から暫定分数ブロックSB2の評価値を取得するとともに、最良整数位置判定部172から最良整数ブロックSB1_minの評価値を取得する。そして、暫定分数ブロックSB2の評価値と最良整数ブロックSB1_minの評価値とを比較し、いずれのブロックがより良好な評価値であるか、すなわち、より差分の小さい評価値となったブロックがいずれであるかを判定する。すなわち、暫定分数位置HPに基づく暫定分数ブロックSB2と、最良整数ブロックSB1_minの内、より小さい差分値を示しているブロックがいずれであるかを判定する(ステップS106)。
探索中心判定部175は、この判定結果に応じて、次に実行する1/4画素単位の分数探索(1/4pel探索)の探索中心とすべき位置を判定する。すなわち、暫定分数ブロックSB2の差分値の方が小さい場合(ステップS106:Yes)、探索中心判定部175は、1/4pel探索の探索中心を暫定分数ブロックSB2とする(ステップS107)。
一方、最良整数ブロックSB1_minの差分値の方が小さい場合(ステップS106:No)、探索中心判定部175は、分数探索の探索中心を最良整数ブロックSB1_minとする(ステップS108)。
探索中心判定部175は、1/4pel探索の探索中心とした位置を示す位置情報を1/4pel演算部176に出力する。ここでは、暫定分数ブロックSB2が探索中心に指定された場合、暫定分数ブロックSB2の基準点OP2の座標を示す情報を位置情報として出力し、最良整数ブロックSB1_minが探索中心に指定された場合は、最良整数ブロックSB1_minの基準点OP1_minの座標を示す情報を位置情報として出力する。
1/4pel演算部176は、探索中心判定部175が判定した探索中心位置を示す位置情報に基づいて、1/4画素単位の分数探索(1/4pel探索)を実行する(ステップS109)。ここでは、探索中心判定部175が出力した位置情報が示す位置を探索中心とする探索範囲(以下、「探索範囲SA2」とする)を規定し、この探索範囲SA2内で、探索ブロックサイズ相当のブロック(以下、「探索ブロックSB3」とする)を1/4画素ずつずらしながら、各ブロックの画素値と、現ブロックCBの画素値との差分を演算する。
1/4画素単位の分数探索を実行するにあたり、1/4pel演算部176は、少なくとも、探索ブロックSB3が探索範囲SA2にしたがって移動する範囲に対して1/4画素補間をおこなう。この場合、図8(a)に示すような1/2画素補間されている画素に対し、例えば、「線形補間」などの補間手法により、図8(b)に示すような、各1/2位置間の中間位置(1/4位置)での画素値が得られるよう補間する。
ステップS107で、暫定分数位置HPが分数探索の探索中心とされた場合の分数探索の動作を以下説明する。図9(a)は、1/4画素補間された暫定分数ブロックSB2を示す図である。1/4pel演算部176は、このような暫定分数ブロックSB2上で、1/4pel探索の探索範囲を規定する。この場合、1/4pel演算部176は、例えば、図9(b)に示すように、暫定分数ブロックSB2の基準点OP2を中心として、その周囲8方向に隣接する1/4位置を含む範囲を探索範囲SA2とする。
1/4pel演算部176は、このような探索範囲SA2内の各分数位置が基準点(すなわち、ブロック左上頂部位置)となるブロックを1/4pel探索の探索ブロックSB3として順次指定し、各探索ブロックSB3の画素値と、現ブロックCBの画素値との差分演算(1/4pel演算)をおこなう。ここでは、図10(a)に示すような暫定分数ブロックSB2を起点として1/4pel探索をおこなう。
すなわち、1/4pel演算部176は、図10(b)に示すように、暫定分数ブロックSB2の基準点OP2から1分数画素分(1/4画素分)ずらした位置を、1/4pel探索でのマッチング対象となる探索ブロックSB3の基準点OP3とし、この基準点OP3がブロックの左上頂部位置となる探索ブロックSB3を指定する。探索ブロックSB3のブロックサイズは、探索ブロックサイズ相当である。
1/4pel演算部176は、探索ブロックSB3について、現ブロックCBとの差分演算をおこなう。すなわち、参照フレームから探索ブロックSB3の画素値を取得し、現ブロックCBの画素値との差分をとる。この場合、1/4pel演算部176は、例えば、差分絶対値和演算により差分値を求め、求めた差分値を探索ブロックSB3の評価値とする。
探索ブロックSB31についての評価値を取得すると、基準点OP3を1分数画素分ずらした位置を次の基準点OP3とし、探索ブロックSB3の場合と同様に探索ブロックSB3について差分演算をおこなう。このようにして、1/4pel演算部176は、暫定分数ブロックSB2の基準点OP2を起点として、探索範囲SA2内の各分数位置が基準点となる探索ブロックSB3〜SB3を順次指定し、各探索ブロックSB3毎に現ブロックCBとのマッチングをとる。この場合、例えば、図10(c)の矢印で示す順序で探索ブロックSB3〜SB3を順次指定する。
1/4pel演算部176は、求めた探索ブロックSB3〜SB3の評価値の内、最も良好な評価値、すなわち、差分値が最小であったブロック(以下、「探索ブロックSB3_min」とする)がいずれであるかを判別し、その探索ブロックSB3_minの位置を示す位置情報をベクトル算出部177に出力する。この場合、例えば、当該探索ブロックSB3_minの基準点OP3_minの座標を示す情報を位置情報として出力する。
以上が、暫定分数位置HPに基づく暫定分数ブロックSB2の評価が最良整数ブロックSB1_minよりも良好であった場合の1/4pel探索である。
一方、暫定分数ブロックSB2よりも最良整数ブロックSB1_minの評価が良好であった場合は、最良整数ブロックSB1_minを探索中心として1/4pel探索をおこなう。この場合の動作を以下説明する。
図11(a)は、1/4画素補間された最良整数ブロックSB1_minを示す図である。1/4pel演算部176は、このような最良整数ブロックSB1_min上で、1/4pel探索の探索範囲を規定する。この場合、図11(b)に示すように、最良整数ブロックSB1_minの基準点OP1_minの周囲8方向に隣接する1/4位置を含む範囲を探索範囲SA2とする。
1/4pel演算部176は、このように規定した探索範囲SA2内の各分数位置が基準点OP3となる探索ブロックSB3を順次指定し、各探索ブロックSB3と現ブロックCBとの差分を演算する。この動作は、上述した暫定分数ブロックSB2を探索中心とした場合の探索動作と同様である(図10参照)。
すなわち、1/4pel演算部176は、探索ブロックSB3〜SB3の評価値を求め、この内、最も良好な評価値、すなわち、差分値が最小である探索ブロックSB3_minがいずれであるかを判別し、その探索ブロックSB3_minの位置を示す位置情報をベクトル算出部177に出力する。この場合、例えば、当該探索ブロックSB3_minの基準点OP3_minの座標を示す情報を位置情報として出力する。
ベクトル算出部177は、整数探索で求められた整数位置と、分数探索で求められた分数位置とに基づいて、現ブロックCBについての「動きベクトル」を算出する(ステップS110)。すなわち、現ブロックCBに対応する探索ブロックSB1_INTと、分数探索で現ブロックCBとの差分が最小とされた探索ブロックSB3_minとのずれを示すベクトルが、当該ブロックにおける「動きベクトル」ということになる。したがって、ベクトル算出部177は、整数探索部171から取得した探索ブロックSB1_INTの基準点OP1_INTの座標を示す位置情報と、1/4pel演算部176から取得した探索ブロックSB3_minの基準点OP3_minの座標を示す位置情報とに基づいて「動きベクトル」を算出する。すなわち、基準点OP1_INTを原点として、基準点OP3_minに対するずれ量と方向を示すベクトルを「動きベクトル」として算出する。
なお、ベクトル算出部177は、動き補償にかかる処理に応じて、整数単位の動きベクトル(整数動きベクトル)と分数単位の動きベクトル(分数動きベクトル)とを個別に求めてもよい。ここで、「整数動きベクトル」は、探索ブロックSB1_INTと最良整数ブロックSB1_minとのずれを示すベクトルであるので、ベクトル算出部177は、探索ブロックSB1_INTの基準点OP1_INTの位置と、最良整数ブロックSB1_minの基準点OP1_minの位置に基づいて「整数動きベクトル」を算出することができる。また、「分数動きベクトル」は、最良整数ブロックSB1_minと探索ブロックSB3_minとのずれを示すベクトルであるので、ベクトル算出部177は、最良整数ブロックSB1_minの基準点OP1_minの位置と、探索ブロックSB3_minの基準点OP3_minの位置とに基づいて「分数動きベクトル」を算出することができる。
ベクトル算出部177は、このようにして求めた「動きベクトル」を動き補償部180に出力して処理を終了する。動き補償部180では、動き検出部170から出力された動きベクトルに基づいて動き補償し、予測フレームが作成される。そして、予測フレームと現フレームとの差分のみが符号化部130で符号化されて、符号化ビットストリームとして出力される。
以上説明したように、上記実施形態1にかかる動き検出部170によれば、整数探索で検出された最良整数ブロックSB1_minの位置(第1の整数位置)と、その周辺において、最良整数ブロックSB1_minの次に評価のよい次点整数ブロックSB1_min2の位置(第2の整数位置)とに基づいて、1/2pel探索で求められる分数位置を推定する。すなわち、分数探索で得られる実際の分数動きベクトルは、整数単位での最良位置の周辺で次に評価の良好な整数位置の方向と相関が高い傾向にあるため、最良整数位置と次点整数位置との間の1/2位置を、1/2pel探索で求められる分数位置と推定する(暫定分数位置)。これにより、1/2pel探索でおこなう差分演算を、暫定分数位置についてのみ行うので、8方向分の差分演算をおこなう場合に比べ、演算量を減少させることができる。
ここで、上記実施形態1によれば、次点整数ブロックSB1_min2を最良整数ブロックSB1_minの周辺に隣接するブロックから求めている。これにより、整数探索の探索範囲内でブロック単位に最良整数位置と次点整数位置を求める従来技術で生じうる問題を回避することができる。
すなわち、探索範囲内で最良位置と次点位置をブロック単位に決定した場合、最良整数位置を含むブロックから離れたブロックが次点となる可能性がある。ここで、求めるべき分数動きベクトルは、最良整数位置と実際の最良位置との間の分数レベルの誤差を示すものであるから、最良整数位置の近傍にない次点整数位置に基づいて分数探索の探索中心を決定しても、実際の分数動きベクトルとは相関しない可能性がある。したがって、上記実施形態1の如く、最良整数ブロックSB1_minの周囲8方向に隣接するブロックの中から次点整数ブロックSB1_min2を決定することで、迅速かつ正確に分数単位の動きベクトルを検出することができる。
(実施形態2)
上述したように、分数探索で検出される分数動きベクトルは、整数探索で検出された最良整数ブロックの近傍の次点整数ブロックとの相関が高い傾向にあるため、上記実施形態1では、このような傾向に基づいて暫定分数位置を求めた。しかしながら、種々の条件等によっては、最良整数ブロックの近傍周囲における次点整数ブロックであっても実際の分数動きベクトルと相関が高くない場合もあり得る。このような場合においても、正確かつ迅速に分数動きベクトルを検出する動き検出部170の動作を実施形態2として以下説明する。なお、本実施形態にかかる動き検出部170の構成は、実施形態1の動き検出部170の構成と同一である。また、ブロックなどに関する表記についても実施形態1と同様である。したがって、実施形態1と同一または同様の構成等については、同一の参照符号を付して説明する。
本実施形態にかかる動き検出部170の動作(「動きベクトル検出処理2」)を図12、13に示すフローチャートを参照して説明する。この「動きベクトル検出処理2」は、実施形態1にかかる「動きベクトル検出処理1」と同様に、動き検出部170に現フレームが入力されたことを契機に開始される。
処理が開始されると、整数探索部171により「整数探索」が実行される(ステップS201)。ここでの整数探索は、上記実施形態1と同様の動作である。すなわち、整数探索部171が、探索ブロックSB1_INTの基準点OP1_INTを中心とした所定の探索範囲SA1を設定し、探索ブロックSB1を1整数画素分ずつずらしながら現ブロックCBとの差分を求め、各位置での評価値として最良整数位置判定部172と探索中心判定部175に出力する。そして、評価値に基づいて、最良整数位置判定部172が、現ブロックCBとの差分が最小となる最良整数ブロックSB1_min(第1の整数位置)を特定する。
最良整数ブロックSB1_minが特定されると、周囲整数位置評価部173は、上記実施形態1の場合と同様に、最良整数ブロックSB1_minの周囲8方向に隣接する探索ブロックSB1a〜SB1hを特定し、これら8つの探索ブロックSB1についての評価値を得る。
ここで、周囲整数位置評価部173は、得られた評価値に基づいて、評価のよい順、すなわち、差分値の小さい順に探索ブロックSB1a〜SB1hを順位付けする(ステップS202)。この場合、例えば、周囲整数位置評価部173は所定の記憶領域を有しているものとし、各ブロックの位置(例えば、基準点の座標)を示す情報と順位とを対応付けて記憶するものとする。なお、この記憶領域は、周囲整数位置評価部173以外の部分に構成されていてもよい。
周囲整数位置評価部173は、対象とする順位を指定する順位ポインタを「1位」を示す初期値「1」に設定し(ステップS203)、順位ポインタが示す順位の探索ブロックSB1の基準点OP1(第2の整数位置)と、最良整数ブロックSB1_minの基準点OP1_minとの間の1/2位置を暫定分数位置HPとして特定する(ステップS204)。
1/2pel演算部174は、上記実施形態1と同様の動作により、特定した暫定分数位置HPに基づく暫定分数ブロックSB2の画素値と、現ブロックCBの画素値との差分を演算し、評価値として探索中心判定部175に出力する(ステップS205)。
探索中心判定部175は、最良整数ブロックSB1_minの評価値と、暫定分数ブロックSB2の評価値とを比較し、暫定分数ブロックSB2の評価値の方が良好であるか否か、すなわち、最良整数ブロックSB1_minと現ブロックCBの差分値より、暫定分数ブロックSB2と現ブロックCBの差分値の方が小さいか否かを判別する(ステップS206)。
暫定分数ブロックSB2の評価の方が良好であった場合(ステップS206:Yes)、探索中心判定部175は、暫定分数ブロックSB2を1/4pel探索の探索中心とする(ステップS207)。この場合、上記実施形態1と同様の動作により、1/4pel探索が実行され(ステップS208)、現ブロックとの差分が最小である探索ブロックSB3_minが特定される。そして、探索ベクトル算出部177が、特定された探索ブロックSB3_minに基づいて、現ブロックについての「動きベクトル」を算出し、動き補償部180に出力して(ステップS209)、処理を終了する。
一方、暫定分数ブロックSB2の評価値より、最良整数ブロックSB1_minの評価値の方が良好である場合(ステップS206:No)、周囲整数位置評価部173は、順位ポインタが現在指定している順位よりも下位のブロックがまだあるか否かを判別する(ステップS210:図13)。
現在の順位より下位のブロックが存在する場合(ステップS210:Yes)、周囲整数位置評価部173は、順位ポインタを+1し(ステップS211)、ステップS204(図12)に進む。すなわち、次の順位の探索ブロックSB1を新たな次点整数ブロックSB1_min2(第2の整数位置)とし、このブロックの基準点OP1と、最良整数ブロックSB1_minの基準点OP1_minとの間の1/2位置を新たな暫定分数位置HPとする。そして、新たに指定した暫定分数位置HPに基づく暫定分数ブロックSB2の評価値と最良整数ブロックSB1_minの評価値とが比較される(ステップS204〜206)。
一方、現在の順位より下位のブロックが存在しない場合、すなわち、現在の順位ポインタが「8位」を示す「8」を指示している場合(ステップS210:No)、周囲整数位置評価部173は、その旨を示す情報を探索中心判定部175に出力する。この場合、探索中心判定部175は、最良整数ブロックSB1_minを、1/4pel探索の探索中心に設定し(ステップS220)、ステップS208(図12)に進む。
この場合、上記実施形態1と同様の動作により、最良整数ブロックSB1_minを探索中心とした1/4pel探索をおこない、差分が最小となる探索ブロックSB3_minに基づき、ベクトル算出部177が動きベクトルを算出して動き補償部180に出力する。
すなわち、本発明の実施形態2にかかる動き検出部170では、最良整数ブロックSB1_minの周囲に隣接する探索ブロックSB1a〜SBhを、それぞれの評価値(現ブロックとの差分値)に基づいて順位付けし、順位の高いブロックから暫定分数位置HPを求める。そして、求めた暫定分数位置HPに基づく暫定分数ブロックSB2の評価値と最良整数ブロックSB1_minの評価値とを比較し、暫定分数ブロックSB2の評価値の方が良好であれば、当該暫定分数位置HPを1/4pel探索の探索中心にする。
一方、当該暫定分数ブロックSB2よりも最良整数ブロックSB1_minの評価の方が良好である場合は、次の順位の探索ブロックSB1に基づいて暫定分数位置HPを決定し、同様に、最良整数ブロックSB1_minと比較する。このようにして、探索ブロックSB1a〜SB1hの順位順に決定された暫定分数位置HPに基づく暫定分数ブロックSB2の方が最良整数ブロックSB1_minより評価がよい場合は、その暫定分数ブロックSB2を探索中心として、1/4pel探索をおこなう。
また、探索ブロックSB1a〜SB1hに基づく暫定分数ブロックSB2のいずれもが、最良整数ブロックSB_minよりも評価が良好でない場合は、最良整数ブロックSB1_minを探索中心として1/4pel探索をおこなう。
このように、本発明の実施形態2にかかる動き検出部170では、最良整数ブロックSB_min(最良整数位置)の近傍で次に差分の小さいブロック(次点整数位置)に基づいた暫定分数ブロックSB2の評価が、最良整数ブロックSB1_minより良好でない場合、最良整数位置の近傍周囲で次点整数位置の次の順位の位置、すなわち、次点整数位置の次に現ブロックとの差分が小さいブロックに基づいて暫定分数位置HPを求める。このため、種々の条件等により、次点整数ブロックと実際の分数動きベクトルとの相関が高くなかった場合であっても、実際の分数動きベクトルとの相関が高い暫定分数位置を求めて分数探索することができる。
この場合、暫定分数位置を求めるための演算を、最良整数ブロックSB1_minに隣接する探索ブロックSB1a〜hの内の順位の高い方からおこなうので、より良好な評価値が得られた時点で1/2画素補間演算や評価値演算を終了させることができる。したがって、次点整数位置と実際の分数動きベクトルとの相関が高くなかった場合でも、暫定分数位置となる1/2位置を効率的に求めることができる。
上記実施形態2では、下位ブロックが無くなるまで順位ポインタを+1していったが、許容すべき演算量などに応じて、下位ブロックが無くなる前にこの操作を打ち切っても良い。また、上記実施形態2では、暫定分数位置を1点ずつ指定したが、1度に複数の暫定分数位置を指定するようにしてもよい。すなわち、次点整数位置が必ずしも実際の分数レベルの動きベクトルとの相関に影響しないという前提であれば、1位となった位置の他に、次の順位に基づく暫定分数位置も予め候補としておき、2つの暫定分数位置と最良整数位置の3点と現ブロックとの差分を比較して分数探索の探索中心を決定してもよい。ここで、1/2pel探索の演算回数が、周囲8点についておこなう8回よりも少なければ演算量の削減に効果が生じることになるので、この範囲内で候補とする暫定分数位置の個数を決めればよい。
以上説明したように、上記各実施形態にかかる動き検出部170によれば、例えば、「整数探索→1/2pel探索→1/4pel探索」の順で探索する多段探索で動きベクトルを検出する場合に、整数探索で得られた最良整数位置(第1の整数位置)と、その最良整数位置の近傍周囲の整数位置のうちで最良整数位置に続いて差分の小さい位置(第2の整数位置)とに基づいて、1/2pelでの分数位置を推定して絞り込むので、1/2pel探索演算の演算量が減少する。これにより、分数単位の動きベクトルを正確に検出するとともに、全体としての演算量を減少させることができる。すなわち、分数精度の探索によるフレームレートの向上と、処理高速化や省電力化の両立を図ることができる。
なお、このような符号化装置100から出力された符号化ビットストリームを復号する復号装置で動き検出をおこなう部分も、上記符号化装置100の動き検出部170と同様の構成・動作とすることができる。すなわち、動画像データの符号化あるいは復号において、ブロックマッチングによる動き検出をおこなう部分を上記動き検出部170と同様の構成とすることにより、動画像の符号化および復号において、フレームレートの向上と処理高速化の両立を図ることができる。
なお、上記実施形態にかかる動き検出部170の機能をソフトウェア処理によって実現してもよい。この場合、例えば、パーソナルコンピュータや動画像記録再生装置などの汎用装置で、これらの機能を実現するためのプログラムを実行することで、動き検出部170の機能を実現することができる。
すなわち、汎用装置の記憶部に当該プログラムをインストールし、CPUなどの制御部がプログラムを実行する。この場合、以下のようなプログラムが実行されることで、汎用装置で本発明の実施形態にかかる動き検出部170の機能を実現することができる。
(1−1)「整数探索プログラム」:探索範囲内を整数画素単位で探索し、現ブロックとの差分が最小となる整数位置(第1の整数位置)を検出するためのプログラム
(1−2)「周囲点評価プログラム」:整数探索で得られた最良整数位置の近傍周囲における現ブロックとの差分を評価し、最良整数位置の次に差分の小さい次点整数位置(第2の整数位置)を特定、もしくは、各周囲点での評価を順位付けするためのプログラム
(1−3)「分数位置推定プログラム」:次点整数位置もしくは所定順位の周囲点を指定し、最良整数位置と指定した周囲位置とに基づいて、所定の探索精度の分数探索(1/2pel探索)で得られる分数位置を推定して暫定分数位置を指定するためのプログラム
(1−4)「比較判定プログラム」:最良整数位置での現ブロックとの差分と、暫定分数位置での現ブロックとの差分とを比較し、いずれの差分がより小さいかを判定するためのプログラム
(1−5)「次点整数位置指定プログラム」:暫定分数位置での差分より、最良整数位置での差分がより小さい場合に、次点整数位置(第2の整数位置)の次の順位の周囲点を新たな次点整数位置(第2の整数位置)として指定するためのプログラム
(1−6)「分数探索プログラム」:最良整数位置と暫定分数位置のうち、より差分が小さいと判定された位置を探索中心として、所定の探索精度(1/2pel)より高精度な分数探索(1/4pel探索)をおこない、現ブロックとの差分が最小となる分数位置を検出するためのプログラム
(1−7)「ベクトル算出プログラム」:現ブロックとの差分が最小となる整数位置および分数位置に基づいて、現ブロックにおける動きベクトルを算出するためのプログラム
上記プログラムを汎用装置で実行した場合、CPUなどの制御装置が、整数探索部171、最良整数位置判定部172、周囲整数位置評価部173、1/2pel演算部174、探索中心判定部175、1/4pel演算部176、ベクトル算出部177、などとして機能し、例えば、主記憶装置や外部記憶装置などの記憶装置が所定の記憶領域などとして機能することとなる。
これらのプログラムは、汎用装置等に予め組み込んで提供することができる他、プログラム自体を独立して提供してもよい。この場合のプログラムの配布方法は任意であり、例えば、CD-ROMやメモリカードなどの記録媒体に格納して配布可能であることはもとより、例えば、インターネットなどの通信媒体を介して配布してもよい。そして、配布されたプログラムを汎用コンピュータ装置等にインストールし、OS(Operation System:基本ソフトウェア)との協働などによって実行することで、上記動き検出部170の機能を実現することができる。
また、本発明にかかる機能を実現するためのプログラムは、動画像の符号化・復号をおこなうための既存のプログラムとの協働により動作するようにしてもよい。すなわち、既存の動画像符号化・復号化プログラムに対する、いわゆるアップデートプログラムとして提供することで、既存の動画像符号化・復号化処理に上記のような動き検出動作を追加し、フレームレートの向上と処理の高速化を図ることができる。
上記各実施形態の記載は、本発明を適用するための一例であり、本発明の範囲は上記各実施形態によって限定されるものではない。すなわち、上記実施形態以外の種々の形態で本発明が適用されてもよく、それらは本発明の範囲に含まれるものである。
例えば、上記実施形態では、「整数探索(第1段階)→1/2pel探索(第2段階)→1/4pel探索(第3段階)」の多段探索の場合を例示したが、異なる探索精度で段階的に探索をおこなうのであれば、探索精度や段数は任意のものであってもよい。例えば、「整数探索(第1段階)→1/2pel探索(第2段階)」とする多段探索に本発明を適用することでも処理の高速化を実現することができる。この場合、暫定分数位置に基づく暫定分数ブロックの評価値が最良整数ブロックの評価値よりも良好であれば、当該暫定分数ブロックを示すベクトルを1/2pelの分数動きベクトルとすることができる。これにより、通常、8方向についておこなう差分演算が1回で済むので、第2段階における演算量が減少し、処理を高速化することができる。
また、上記実施形態では、最良整数ブロックの周囲8方向から次点整数位置を求めたが、例えば、周囲4方向などに間引きして求めてもよい。これは1/4pel探索についても同様である。
本発明の実施形態1にかかる「符号化装置」の構成を示すブロック図である。 図1に示す「動き検出部」の構成を示すブロック図である。 本発明の実施形態1にかかる「動きベクトル検出処理1」を説明するためのフローチャートである。 「整数探索」を説明するための図であり、(a)は探索ブロックの例を示し、(b)は整数探索時の探索範囲と探索ブロックの例を示す。 次点整数ブロックを探索する動作を説明するための図であり、(a)は周囲ブロック探索範囲が設定される位置の例を示し、(b)は周囲ブロック探索範囲の例を示す。 次点整数ブロックを判定する動作を説明するための図であり、(a)〜(h)は、最良整数ブロックに隣接する探索ブロックの例を示す。 「暫定分数位置」を特定する動作を説明するための図であり、(a)は特定された暫定分数位置の例を示し、(b)は暫定分数位置に基づいて規定される暫定分数ブロックの例を示す。 分数画素補間を説明するための図であり、(a)は1/2画素補間の例を示し、(b)は1/4画素補間の例を示す。 暫定分数ブロックを探索中心とした1/4pel探索を説明するための図であり、(a)は1/4画素補間された暫定分数ブロックの例を示し、(b)は1/4pel探索の探索範囲の例を示す。 1/4pel探索の動作を説明するための図であり、(a)は探索の起点となる暫定分数ブロックの例を示し、(b)は1分数画素分ずらした探索ブロックの例を示し、(c)は探索順序の例を示す。 最良整数ブロックを探索中心とした1/4pel探索を説明するための図であり、(a)は1/4画素補間された最良整数ブロックの例を示し、(b)は1/4pel探索の探索範囲の例を示す。 本発明の実施形態2にかかる「動きベクトル検出処理2」を説明するためのフローチャートである。 本発明の実施形態2にかかる「動きベクトル検出処理2」を説明するためのフローチャートである。
符号の説明
100…符号化装置、110…変換部、120…量子化部、130…符号化部、140…逆量子化部、150…逆変換部、160…復元画像メモリ、170…動き検出部、171…整数探索部、172…最良整数位置判定部、173…周囲整数位置評価部、174…1/2pel演算部、175…探索中心判定部、176…1/4pel演算部、177…ベクトル算出部、180…動き補償部

Claims (8)

  1. 参照フレーム上で整数探索および分数探索して、現フレーム上の現ブロックについての動きベクトルを検出する動きベクトル検出装置であって、
    整数単位の探索の結果、現ブロックとの差分が最小である整数位置を第1の整数位置とし、第1の整数位置の近傍周囲の整数位置の内、前記第1の整数位置の次に現ブロックとの差分が小さい整数位置を第2の整数位置として特定する第2整数位置特定手段と、
    前記第1の整数位置と前記第2の整数位置とに基づいて、所定の精度の分数位置を推定する分数位置推定手段と、
    前記第1の整数位置と、前記分数位置推定手段が推定した分数位置とに基づいて、前記所定の精度より高精度の分数探索をおこなう分数探索手段と、
    を備えることを特徴とする動きベクトル検出装置。
  2. 前記分数探索手段は、
    前記第1の整数位置における現ブロックとの差分と、前記分数位置推定手段が推定した分数位置における現ブロックとの差分とを比較し、より差分の小さい位置がいずれかであるかを判定する判定手段と、
    前記判定手段によってより差分が小さいと判定された位置を前記所定の精度より高精度の分数探索における探索中心に指定する探索中心指定手段と、
    をさらに備えることを特徴とする請求項1に記載の動きベクトル検出装置。
  3. 前記第2整数位置特定手段は、前記第1の整数位置に隣接する整数位置の中から第2の整数位置を特定する、
    ことを特徴とする請求項1または2に記載の動きベクトル検出装置。
  4. 前記第2整数位置特定手段は、前記第1の整数位置の周囲8方向に隣接する整数位置の中から第2の整数位置を特定する、
    ことを特徴とする請求項3に記載の動きベクトル検出装置。
  5. 前記分数位置推定手段は、前記第1の整数位置と前記第2の整数位置との間の中間位置を前記所定の精度の分数位置であると推定する、
    ことを特徴とする請求項1乃至4のいずれか1項に記載の動きベクトル検出装置。
  6. 前記第2整数位置特定手段は、前記第1の整数位置における現ブロックとの差分が、前記推定された分数位置における現ブロックとの差分より小さい場合、第1の整数位置の近傍周囲の整数位置の内、前記第2の整数位置の次に現ブロックとの差分が小さい整数位置を新たな第2の整数位置とする、
    ことを特徴とする請求項1乃至5のいずれか1項に記載の動きベクトル検出装置。
  7. コンピュータで動画像の動きベクトル検出をおこなうためのプログラムであって、
    コンピュータに、
    参照フレーム上で整数単位の探索をおこなって、現フレームの現ブロックとの差分が最小である整数位置を第1の整数位置とし、第1の整数位置の近傍周囲の整数位置の内、前記第1の整数位置の次に現ブロックとの差分が小さい整数位置を第2の整数位置として特定する機能と、
    前記第1の整数位置と前記第2の整数位置との間の中間位置を、所定の精度の分数位置と推定する機能と、
    前記第1の整数位置における現ブロックとの差分と、前記推定された分数位置における現ブロックとの差分とを比較し、より差分の小さい位置がいずれかであるかを判定する機能と、
    前記判定手段によってより差分が小さいと判定された位置を探索中心として、前記所定の精度より高精度の分数探索をおこなう機能と、
    分数探索の結果に基づき、現ブロックについての動きベクトルを算出する機能と、
    を実現させることを特徴とするプログラム。
  8. 前記コンピュータに、
    前記第1の整数位置における現ブロックとの差分が、前記推定された分数位置における現ブロックとの差分より小さい場合、第1の整数位置の近傍周囲の整数位置の内、前記第2の整数位置の次に現ブロックとの差分が小さい整数位置を新たな第2の整数位置とする機能、
    をさらに実現させることを特徴とする請求項7に記載のプログラム。
JP2004205467A 2004-07-13 2004-07-13 動きベクトル検出装置、および、プログラム Expired - Fee Related JP4385875B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004205467A JP4385875B2 (ja) 2004-07-13 2004-07-13 動きベクトル検出装置、および、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004205467A JP4385875B2 (ja) 2004-07-13 2004-07-13 動きベクトル検出装置、および、プログラム

Publications (2)

Publication Number Publication Date
JP2006033112A true JP2006033112A (ja) 2006-02-02
JP4385875B2 JP4385875B2 (ja) 2009-12-16

Family

ID=35898974

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004205467A Expired - Fee Related JP4385875B2 (ja) 2004-07-13 2004-07-13 動きベクトル検出装置、および、プログラム

Country Status (1)

Country Link
JP (1) JP4385875B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009153093A (ja) * 2007-11-29 2009-07-09 Sony Corp 動きベクトル検出装置、動きベクトル検出方法及びプログラム
CN104967858A (zh) * 2015-06-30 2015-10-07 北京奇艺世纪科技有限公司 一种子像素运动向量估计方法和装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009153093A (ja) * 2007-11-29 2009-07-09 Sony Corp 動きベクトル検出装置、動きベクトル検出方法及びプログラム
CN104967858A (zh) * 2015-06-30 2015-10-07 北京奇艺世纪科技有限公司 一种子像素运动向量估计方法和装置
CN104967858B (zh) * 2015-06-30 2018-01-26 北京奇艺世纪科技有限公司 一种子像素运动向量估计方法和装置

Also Published As

Publication number Publication date
JP4385875B2 (ja) 2009-12-16

Similar Documents

Publication Publication Date Title
US7444026B2 (en) Image processing apparatus and method of motion vector detection in a moving picture, and recording medium used therewith
EP2627091B1 (en) Video coding using template matching
JP5277257B2 (ja) 動画像復号化方法および動画像符号化方法
JP4898467B2 (ja) 可変ブロックサイズ動き予測のための符号化モードの決定方法及び装置
JP2013505615A (ja) 動画像の重み付き動き補償
JP2006074474A (ja) 動画像符号化装置、動画像符号化方法および動画像符号化プログラム
JP4762938B2 (ja) データ埋め込み装置、データ抽出装置、データ埋め込み方法およびデータ抽出方法
JP2019041165A (ja) 画像符号化装置、画像復号装置、画像処理方法、及び画像処理プログラム
JP2011029863A (ja) 復号化処理方法
JP4385875B2 (ja) 動きベクトル検出装置、および、プログラム
JP7361838B2 (ja) 映像符号化装置、映像復号装置、及びこれらのプログラム
KR102570374B1 (ko) 영상 부호화 장치, 영상 부호화 방법, 영상 부호화 프로그램, 영상 복호 장치, 영상 복호 방법, 및 영상 복호 프로그램
JP4576930B2 (ja) 動きベクトル検出装置、および、プログラム
KR20070000702A (ko) 탐색영역 재설정을 이용한 고속 움직임 예측 장치 및 방법
JP6019797B2 (ja) 動画像符号化装置、動画像符号化方法、及びプログラム
JP4429996B2 (ja) 動画像符号化プログラム、動画像符号化方法および動画像符号化装置
US11528485B2 (en) Encoding apparatus and program
JP4032049B2 (ja) 動きベクトル検出方法及びその装置
JP4385869B2 (ja) 動きベクトル検出装置、動画符号化装置、および、プログラム
JP5281596B2 (ja) 動きベクトル予測方法,動きベクトル予測装置および動きベクトル予測プログラム
JP5281597B2 (ja) 動きベクトル予測方法,動きベクトル予測装置および動きベクトル予測プログラム
JP6696889B2 (ja) 画像符号化装置、画像符号化方法及びコンピュータプログラム
JP2017050744A (ja) 画像符号化装置、画像符号化方法、及びプログラム
KR101841352B1 (ko) 참조 프레임 선택 방법 및 그 장치
JP2006237765A (ja) 画像符号化装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070508

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090210

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090224

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090420

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090908

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090921

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121009

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121009

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131009

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees