JP4793070B2 - 動きベクトル探索方法及び装置 - Google Patents

動きベクトル探索方法及び装置 Download PDF

Info

Publication number
JP4793070B2
JP4793070B2 JP2006110139A JP2006110139A JP4793070B2 JP 4793070 B2 JP4793070 B2 JP 4793070B2 JP 2006110139 A JP2006110139 A JP 2006110139A JP 2006110139 A JP2006110139 A JP 2006110139A JP 4793070 B2 JP4793070 B2 JP 4793070B2
Authority
JP
Japan
Prior art keywords
motion vector
target
block
search
sub
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.)
Expired - Fee Related
Application number
JP2006110139A
Other languages
English (en)
Other versions
JP2007288273A (ja
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.)
Sony Corp
Original Assignee
Sony 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 Sony Corp filed Critical Sony Corp
Priority to JP2006110139A priority Critical patent/JP4793070B2/ja
Priority to US11/734,151 priority patent/US8379725B2/en
Publication of JP2007288273A publication Critical patent/JP2007288273A/ja
Application granted granted Critical
Publication of JP4793070B2 publication Critical patent/JP4793070B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/533Motion estimation using multistep search, e.g. 2D-log search or one-at-a-time search [OTS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • 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
    • 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/53Multi-resolution motion estimation; Hierarchical motion estimation

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

本発明は、入力画像中の対象画像とこの対象画像に時間的に近接する参照画像との間で、上記対象画像をブロック分割して得られる対象ブロックと上記参照画像内の参照ブロックとを比較することにより動きベクトルを探索する動きベクトル探索方法及び装置に関するものである。
動画圧縮処理において、時間的に近接するフレーム間での画像の動き(動きベクトル)を検出し、その動きベクトルを用いて動き補償予測符号化を行うことが知られている。動画の動きベクトル検出は、ディジタルカメラの手振れ補正等にも用いられる。この動きベクトル検出には、種々の方法が存在するが、動きを検出する画像(対象画像)と対象画像に時間的に近接する画像(参照画像)との間での適当な大きさのブロック毎の比較処理を基本とする方法(いわゆるブロックマッチング法)が広く知られている。これは、入力画像をブロックに分割し、対象画像内の対象ブロックと参照画像内の探索範囲内の複数の参照ブロックとの間で比較処理を行って、対象ブロックに最も類似している参照ブロックを求める。このとき、対象ブロックを、探索範囲内の複数の参照ブロックとそれぞれ比較処理して類似度の評価値を求める。
このような動きベクトルの検出(動き検索、動き推定、動き予測等とも称される。)は、非常に計算量の多い処理として知られている。その一方で、より高画質で高フレームレートの動画の処理が求められている。そのため、動き検索の高速化は重要な技術テーマである。この高速化は、処理量の低減や処理の並列化によって実現される。
また、処理を行うデバイスの消費電力量の低減も大きなテーマであるが、低消費電力化の最も効果的な方法はデバイスの動作周波数を低減することだということが広く知られている。そのためには、同様に処理量の低減と処理の並列化が不可欠である。
さて、動きベクトル探索の高速化のために、様々な方法が提案されてきた。その中でも、非特許文献1に開示されているようなダイヤモンドサーチに代表される探索型の方法を用いることにより、高画質を保ちながら高速化を行うことができる。これらの探索型の方法では、まず動きベクトル平面上のあるベクトルを決め、その周辺を最初の探索エリアとする。そして、探索エリア内のベクトルを比較し、その中でより評価値が低いベクトルがある方角に次の探索エリアを設定する。これを、最終的に探索エリアの中心で評価値が最小になるか、全探索範囲(または画像)の外に出てしまうまで繰り返す。この方法によって、フルサーチ(全検索)に対して、探索するベクトル数を大幅に減らすことができる。しかしながら、この方法ではそれ以上に高速化する方法は述べていない。
さらなる高速化のためには、計算の並列化が必須である。計算の並列化のためには、効率的にメモリ上からデータをロードする技術が重要となるが、そのためのアーキテクチャが、例えば特許文献1のビデオ符号化及び復号化技術等で提案されている。この方法で、ベクトル毎に行われる評価値計算を並列化することができる。
S. Zhu and K. Ma, "A New Diamond Search Algorithm for Fast Block Matching Motion Estimation", International Conference on Information, Communications and Signal Processing ICICS ’97 Singapore, 9-12 September 1997 特表2005−530420号公報
ところで、上記特許文献1には、さらにそれ以上に高速化する方法は述べられておらず、それ以上の高速化を実現するには、ベクトル毎の計算の並列化とともに、複数のベクトルに対する計算をも並列化することが必要となる。
本発明は、上述したような実情に鑑みて成されたものであって、動きベクトル探索のための全体の計算量を削減すると共に、低消費電力化を実現できるような動きベクトル探索方法及び装置を提供することを目的とする。
上述の課題を解決するために、本発明は、入力画像中の対象画像と、この対象画像に時間的に近接する参照画像との間で、上記対象画像をブロックに分割して得られる対象ブロックと上記参照画像内の参照ブロックとを比較することにより動きベクトルを探索する際に、上記対象画像のデータが記憶された対象メモリ及び上記参照画像のデータが記憶された参照メモリから、それぞれ処理単位となる対象処理ブロック及び参照処理ブロックを読み出し、これらの読み出された上記処理単位となる対象処理ブロック及び参照処理ブロックに対して、複数の動きベクトルについての上記処理単位毎の部分評価値を並列的に計算し、上記対象ブロックに対応する複数の対象処理ブロックについて計算された上記部分評価値を各動きベクトル毎に合成することにより各動きベクトル毎の評価値を得、得られた動きベクトル毎の評価値を比較することにより当該対象ブロックについての最適の動きベクトルを求めるようにし、上記参照処理ブロックを得るための分割法として上記対象処理ブロックに対して上記参照処理ブロックを水平、垂直方向に処理ブロックの1/2だけずらした位置関係で分割し、対象処理ブロックに対する処理ブロック単位の位置を中心とする周囲の4個の参照処理ブロックにおける複数個の動きベクトルの部分評価値を各動きベクトル毎に合成して、それぞれの動きベクトルの評価値を計算する。
ここで、上記対象処理ブロック及び参照処理ブロックは、上記対象ブロック及び参照ブロックを分割した対象サブブロック及び参照サブブロックであり、上記対象メモリ及び参照メモリからはそれぞれ対象サブブロック及び参照サブブロックのデータが読み出されることが挙げられる。
上記動きベクトルの探索は、先に一部の動きベクトルについて評価値計算を行って最適ベクトルを求める粗粒度検索を行い、粗粒度検索により得られた最適ベクトルの近傍で画素単位以下の粒度の最適動きベクトルを求める細粒度検索を行うことが好ましい。
本発明によれば、動きベクトル探索のための全体の計算量を削減し、また計算の並列化により探索の単位サイクル当たりの計算量を増大させて動作周波数を相対的に低下させ、低消費電力化を実現できる。
以下、本発明の実施の形態について図面を参照しながら詳細に説明する。
図1は、本発明の実施の形態が適用される動画圧縮装置の構成例を示すブロック図である。
図1において、入力端子11を介して入力された対象画像データは、動き検出部12において、フレームメモリ10に保存された参照画像データと高速で比較され、動きベクトルを生成し、動き補償部13に動きベクトルを送信する。動き補償部13では、対象画像データから、動きベクトルで指し示された参照画像データを引き算し、そのデータをDCT(離散コサイン変換)/量子化部14へ送る。DCT/量子化部14では、データを離散コサイン変換・量子化し、そのデータをRL(ランレングス符号化)/VLC(可変長符号化)部15へ送る。また、同データを逆量子化・逆コサイン変換し、動き補償部13へ返送する。動き補償部13では、DCT/量子化部14から送られたデータに、先ほど引き算した参照画像データを足し戻して、そのデータを参照画像用メモリに保存する。RL/VLC部15では、DCT/量子化部14から送られたデータに、ランレングス符号、可変長符号を順次かけて、その結果を圧縮データとして出力端子16より出力する。
また、本発明の実施の形態の動きベクトル検出は、図2に示されるような手ぶれ補正装置に適用することもできる。この図2において、入力端子11を介して入力された対象画像データは動き検出部12に送られ、この動き検出部12において、上記と同様に動きベクトルが生成される。手ぶれ補正部17では、受け取った動きベクトルを用いて、画面全体の手ぶれベクトルを推定し、その情報をもとに手ブレ補正処理を実行し、出力端子18より取り出される。
上述したような動画圧縮装置や手ぶれ補正装置に用いられる動き検出部12における動き検出あるいは動き探索は、動きを検出する画像(対象画像)と対象画像に時間的に近接する画像(参照画像)を比較することにより行われる。
すなわち、先ず対象画像を適当な大きさのブロック、例えばピクセル単位で16×16サイズのマクロブロックに分割する。そして、図3に示すように、対象画像P内の各対象マクロブロックP−MBと、参照画像Q内の全てあるいはいくつかのマクロブロックQ−MBa、Q−MBb、Q−MBc、・・・との間で比較処理を行い、どの参照ブロック(参照画像Q内のマクロブロック)が対象ブロック(対象画像P内のマクロブロック)に似ているかを求める。この似ている度合を示す値として、一般的にSAD(Sum of Absolute Difference:絶対誤差和)や、SSD(Sum of Squared Difference:誤差の2乗和)などの評価値を求め、より小さな値を持つブロックが選ばれる。そして、選ばれたブロックに対応するベクトルを、その対象ブロックにおける動きベクトルとする。これら動きベクトルは、図4に示すように、ベクトル平面上の点Va、Vb、Vc、・・・として表すことができる。対象マクロブロックと同位置の参照マクロブロックに対応するベクトルが原点(0,0)になる。
ここで、本実施の形態においては、動きを検出する画像(対象画像)と、対象画像に時間的に近接する画像(参照画像)とを、それぞれ上述したような16×16サイズ(16×16画素)のマクロブロックに分割する場合について説明する。また、参照画像における対象画像と同じ位置のマクロブロックと、その周辺の例えば8個のマクロブロックを動きベクトルの探索範囲とする。すなわち、図5に示すように、(A)の対象画像のマクロブロックP−MBに対して、(B)の参照画像における同じ位置(動きベクトル0)のマクロブロックQ−MB0と周辺の8個のマクロブロックとから成る9個のマクロブロックを動きベクトルの探索範囲としており、この探索範囲はピクセル単位で48×48サイズとなる。これは、ベクトル平面上では水平・垂直方向ともに、ピクセル単位で−16〜16の範囲の動きベクトルの探索を行うことに相当する。
ここで、本実施の形態においては、対象画像のマクロブロックを16個の4×4サイズのサブブロックに分割している。参照画像の探索範囲(48×48)も4×4サイズのサブブロックに分割されるが、参照画像における分割はマクロブロックを16分割するのではなく、縦横に2ピクセルずつオフセットしたところで、サブブロックに分割されているため、探索範囲の端にあたるサブブロックに関しては、2×2、2×4、4×2などのサイズになる。
なお、上記実施の形態の各数値は一例を挙げているに過ぎず、例えば動き検出の単位となるブロック、探索範囲、サブブロックのサイズ等は、16×16サイズのマクロブロック、48×48サイズ、4×4サイズに限定されず、任意のサイズとすることができ、また、参照画像におけるサブブロック分割を縦横に2ピクセルずつオフセットさせることも任意に設定可能である。
対象画像データ及び参照画像データは、サブブロック単位でそれぞれのメモリに保存される。すなわち、メモリからは一度に4×4=16個のデータが読み出されることになる。図6に画像メモリ読み出し及び動きベクトル検出部分の回路ブロック図を示す。この図6において、上記動き検出部12内の実際の計算処理を行う部分である動きベクトル検出計算部12cは対象画像用メモリ10a及び参照画像用メモリ10bからそれぞれ読み出した画像データをもとに動きを検出し、その結果の動きベクトルを出力する。
本実施の形態において、参照画像上での探索範囲をピクセル単位で48×48サイズとするとき、16×16サイズのマクロブロックの動きベクトルは、水平・垂直方向ともに、上述したようにピクセル単位で−16〜16の範囲の動きベクトルの探索を行うことになる。すなわち、図7の(A)は、動きベクトル平面上の探索範囲を示しており、基準となる原点(0,0)を中心として、水平・垂直方向にそれぞれ−16〜16の範囲で動きベクトル探索が行われる。
ここで、上記図6の動きベクトル検出計算部12cは、画像用メモリ10a及び参照画像用メモリ10bから、それぞれ処理単位となる対象処理ブロック(対象サブブロック)及び参照処理ブロック(参照サブブロック)のデータを読み出し、これらの読み出された対象サブブロック及び参照サブブロックに対して、複数の動きベクトルについての部分評価値を並列的に計算し、上記対象ブロックに対応する複数の対象サブブロックについて計算された上記部分評価値を各動きベクトル毎に合成することにより各動きベクトル毎の評価値を得、得られた動きベクトル毎の評価値を比較することにより当該対象ブロックについての最適の動きベクトルを求めている。
本実施の形態における動きベクトルの探索は、おおまかに粗粒度探索、細粒度探索、半画素探索の3つのステップで行っている。これらの内の細粒度探索が画素単位の動きベクトル探索に相当し、粗粒度探索ではそれよりも粗い粒度で動きベクトル探索を行い、半画素探索では(1/2)画素あるいはより細かい粒度、例えば(1/4)画素単位で動きベクトル探索を行っている。
上記粗粒度探索について説明すると、先ず、図7の(A)に示す動きベクトル平面の全探索範囲(−16〜16)を、より小さな探索範囲としてのサブ探索範囲に分割する。例えば図7の(B)には、5×5の範囲(サブ探索範囲)に分割する例を示している。
ここでは、全探索範囲を一度に全て探索し最適なベクトルを求めるのではなく、サブ探索範囲毎にそのサブ探索範囲内のベクトルの評価値を計算することにより、最適な動きベクトルが含まれるサブ探索範囲を決定する。この最適なサブ探索範囲が決定された後、上記細粒度探索、半画素探索が行われるが、これらの探索については後述する。
上記動きベクトル平面上でのサブ探索範囲の分割の例として、本実施の形態では、図8の(A)、(B)に示す各分割法を用いている。図8の(A)は、上記図7の(B)に示すサブ探索範囲に相当する。これらのサブ探索範囲毎にその範囲内のいくつかのベクトルで評価値計算が行われる。以下の説明においては、上記図8の(A)に示す分割法を第1の分割法、上記図8の(B)に示す分割法を第2の分割法という。
すなわち、まず、あるサブ探索範囲を最初の探索範囲(初期サブ探索範囲)と決め、そのサブ探索範囲内のいくつかのベクトルの評価値を計算する。評価値の計算は上記SADやSSDなどの方法が用いられる。得られた結果として、当該サブ探索範囲内のベクトル毎の評価値の分布が明らかになり、この分布に基づいて次に探索を行うサブ探索範囲を決定する。例えば、図9の(A)に示す動きベクトル平面上のあるサブ探索範囲VSAaにおいて、図中右側のベクトル群VGの評価値が低い(評価値が低い方がより最適)場合には、このサブ探索範囲VSAaの右側のサブ探索範囲により低い評価値を持つベクトルが存在する可能性が高いことになる。そこで、図9の(B)に示すように、あるサブ探索範囲VSAaの右側で隣接するサブ探索範囲VSAbに探索範囲を移し、このサブ探索範囲VSAb内で同様の探索を行う。なお、次に探索するサブ探索範囲としては、現在のサブ探索範囲と隣接するものに限定されず、重なりあうサブ探索範囲のうちの一つなどから選択するようにしてもよい。これを、最終的に最適な評価値を持つベクトルを発見するまで繰り返し、最終的に発見されたベクトルを最終的な結果とする。
ここで、上記図8の(A)、(B)に示すそれぞれの分割法、すなわち上記第1、第2の分割法のサブ探索範囲で、互いに異なった評価値の計算方法を採用することにより、より高速に処理を行うことができる。以下に、それぞれにおける方法を述べる。
上記第1の分割法(上記図8の(A)に示す分割法)を用いたときに得られるサブ探索範囲のベクトル平面とその平面内で評価値の計算が行われるベクトル群の例を、図10に示す。サブ探索範囲は−2〜2の範囲なので、対象マクロブロック(16×16)に対して、20×20の参照データ範囲が必要である。この分割法を用いた場合の対象マクロブロックと参照データ範囲の位置的な関係は図11のようになる。この図11において、実線が対象画像のブロックを、破線が参照画像のブロックをそれぞれ示し、図11に示されるように、対象サブブロックP−SBと参照サブブロックQ−SBとは、縦横方向(水平、垂直方向)にそれぞれ2ピクセル(サブブロックの1/2)ずれて、メモリに格納されている。これは、例えば原点(0,0)が中心のサブ探索範囲を考えると、上記図5においてマクロブロックに重なる5×5=25個のサブブロックということになる。
次に、サブ探索範囲内の複数のベクトルにおける評価値を並列に求める方法の一例を説明する。以下、図12〜図16においては、対象画像のサブブロック等を実線で示し、参照画像のサブブロック等を破線で示している。まず、図12に示すように、対象画像マクロブロックの左上の対象サブブロックP−SBaと、その左上に位置する参照サブブロックQ−SBaをメモリから同時に読み出す。そして、図12の(B)に示すように、読み出した対象サブブロックP−SBa及び参照サブブロックQ−SBaのそれぞれ16個ずつのデータのうち、いくつかのデータ同士について評価値の一部(部分評価値)を計算する。
具体的には、図13に示されるいくつかのパターンにおいて、斜線で示されるピクセル同士で部分評価値を計算する。すなわち、図13において、対象サブブロックP−SBaの中の斜線で示されるピクセルと参照サブブロックQ−SBaの斜線で示されるピクセルとが比較されて部分評価値が計算されることを意味する。これらのパターンが図10に示すベクトル群のそれぞれに対応することになる。なお、図13中のvec(i,j)は、水平方向(x方向)にi、垂直方向(y方向)にjの成分を有する動きベクトルについての部分評価値の計算を行うことを意味し、これは図14以降も同様である。これらの計算は並列で行うことができるので、複数ベクトルの複数ピクセルの処理を並列で行っていることになる。以上の処理を図12の対象画像マクロブロックの上記左上のサブブロックP−SBaから例えばラスタースキャン順に右下のサブブロックP−SBnまで行う。この処理は、16個の対象サブブロックがあるので、16サイクルで終了することになる。
次に、図12において、対象画像マクロブロックの左上のサブブロックP−SBaと、今度はその右上に位置する参照サブブロックQ−SBbとをメモリから同時に読み出す。そして、同様に読み出した16個ずつのデータのうち、いくつかのデータ同士についての評価値の一部(部分評価値)を計算する。ただし、今度は図14に示されるデータパターンを使用する。この処理を同様に全ての対象サブブロックP−SBa〜P−SBnに対して行う。
さらに、図12の上記対象サブブロックP−SBaとその右下の参照サブブロックQ−SBcに対して、同様な処理を図15のパターンに従って行い、また左下の参照サブブロックQ−SBdに対する同様な処理を図16のパターンに従って行う。
上記のプロセスにより、サブ探索範囲内において求めるべき全ての動きベクトルについての評価値が計算されたことになる。16サイクルの処理を4回繰り返すので、全部で64サイクルで全ての処理が終了することになる。
上述した図13〜図16は、サブブロックに対して異なったピクセルの組み合せのパターンを示しているが、これらは以下の点で関連している。すなわち、図14、図15、図16のそれぞれのパターンを反時計回りに90度回転させると、図13、図14、図15のそれぞれのパターンと一致する。すなわち、図14のパターンを90度、図15のパターンを180度、図16のパターンを270度それぞれ反時計回りに回転させると、全てについて図13のパターンが得られることがわかる。
このことから、例えば図17に示すように、図13のパターンを計算する手段であるパターン計算部20と、サブブロックデータを90度の倍数分回転させる手段である回転処理部23、24を用意しておけば、4種類全てのパターンの計算が行えることを示している。すなわち、図17において、端子21から供給された対象サブブロックP−SBは回転処理部23を介し、端子22から供給された参照サブブロックQ−SBは回転処理部24を介して、図13のパターンを計算するパターン計算部20にそれぞれ送られ、パターン計算部20で計算されて得られた評価値が端子25を介して出力される。
ここで得られた13個のベクトルにおける評価値の値を用いて、次に探索を行うサブ探索範囲が選択される。例えば、最小の評価値を持つベクトルの方向にあるサブ探索範囲などが選ばれる。
次に、上記第2の分割法、すなわち上記図8の(B)に示す分割法を用いたときに得られるサブ探索範囲について説明する。ここで図18は、上記第2の分割法の場合のサブ探索範囲のベクトル平面とその平面内で評価値の計算が行われるベクトル群の例を示すものである。この図18におけるサブ探索範囲は−2〜2の範囲なので、対象マクロブロック(16×16)に対して、20×20の参照データ範囲が必要である。
この分割法を用いた場合の対象マクロブロックと参照データ範囲の位置的な関係は、図19のようになる。図19に示す対象サブブロックP−SB及び参照サブブロックQ−SBにおいて、サブ探索範囲のサーチに必要な範囲H内の参照サブブロックQ−SBは、対象マクロブロックの対象サブブロックP−SBに一致している。
上記図18で示されるベクトルにおいては、部分的な評価値のみが計算される。一般に評価値の計算は対象画像のマクロブロックの全てのピクセルと、それに対応する参照画像のマクロブロックのピクセルに対して計算されそれらの和が求められるが、ここでは、それらのピクセル群の一部のみに対してその計算が行われる。その理由の一つは、全ての値を計算しないことにより計算量を削減させ、高速化を可能とすることである。また、もう一つの理由としては、上記第2の分割法での計算の役割を、上記第1の分割法(上記図8の(A)に示す分割法)で行われる計算の合間でだいたいの方向性を得るために用いることにすれば、高い精度の計算が必要とされないことが挙げられる。なお、上記第2の分割法で完全な評価値を計算するには、上記第1の分割法の時よりも多くの処理時間がかかってしまう。すなわち、1サブブロックの処理に対して上記第1の分割法では4サイクルだけしかかからなかったところを、上記第2の分割法では1サブブロックに対して一致する参照サブブロックと周囲の8サブブロックが必要になるため、9サイクルかかることになり、マクロブロックあたりのサイクル数にすると、9×16=144サイクルもかかってしまうことになる。この点からも、上記第2の分割法では、部分的な評価値のみを計算することが好ましい。
ここで、上記第2の分割法(上記図8の(B)の分割法)を、上記第1の分割法(上記図8の(A)の分割法)による評価の補助手段として用いる点について説明する。本来的には、上記第1の分割法のみで図5に示す全探索範囲をカバーしており、全探索範囲をくまなく探索するためには上記第2の分割法は必要ない。しかし、より処理量を減らして高速化を可能とするために、本実施の形態では、全探索範囲について探索するのではなく全探索範囲の中である地点から始めて、その近傍でより評価値が低そうな地点を探し、それを最適と思われる地点を見つけるまで繰り返すという方法をとっている。この方法をとった場合に、サブ探索範囲が上記第1の分割法のみだと、斜め方向に評価値が低いベクトルがある場合に効率的に(より少ない処理量で)探索をすることができない。
例えば、図20の(A)に示すように、上記第1の分割法の動きベクトル平面上のサブ探索範囲VSAa内の図中右上のベクトルVpにおいて最小の評価値が見つかったとき、次の動きベクトル探索はこのベクトルVpを中心として行うことが望ましい。ここで上記第1の分割法のみを用いる場合には、図20の(B)に示す3箇所のサブ探索範囲VSAb、VSAc、VSAdを新たに探索する必要がある。この方法をとると、確かにそのベクトル近傍においてかなり精度の高い探索を行えるが、その分処理量が大幅に増えてしまうことになる。
そこで、周囲の3箇所のサブ探索範囲を探索する代わりに、まず最初に見つかった動きベクトルVpを中心として、図20の(C)に示すように、上記第2の分割法によるサブ探索範囲VSBaにおいて簡易的な探索を行う。このサブ探索範囲VSBa内で8個の動きベクトルの評価値の計算結果に応じて、次に探索を行う上記第1の分割法のサブ探索範囲を決定する。例えば、図20の(C)の例では図中右上側のベクトルVq,Vr,Vsの評価値が低い場合には、図20の(D)に示すように、上記サブ探索範囲VSAcを次の探索範囲とする。この方法により、それほど精度を落とすことなく処理量を減らすことができる。上記第1の分割法の範囲の探索に64サイクル、上記第2の分割法の範囲の探索に16サイクルがかかるとすれば、上記第1の分割法のみを用いる方法では192サイクルかかるのに対して、上記第2の分割法を併用する方法では80サイクルで完了することができる。
次に、上記第2の分割法での評価値の計算法を説明する。まず、マクロブロックの左上の対象画像サブブロックとそれと一致する参照サブブロックをそれぞれメモリから読み出す。上記第1の分割法の場合と同様に、それら16個ずつのデータを用いて、図21に示されるようなパターンのピクセル同士で、評価値の一部(部分評価値)を計算する。この図21において、対象サブブロックP−SBの中の斜線で示されるピクセルと参照サブブロックQ−SBの斜線で示されるピクセルとが比較されて部分評価値が計算され、図中のvec(i,j)は、水平方向(x方向)にi、垂直方向(y方向)にjの成分を有する動きベクトルについての部分評価値の計算を行うことを意味している。
このような図21に示すパターンに従った8個の動きベクトルについての部分評価値の計算を、マクロブロック内の全サブブロックに対して行う。本実施の形態において、この処理の後に得られる評価値は、完全な評価値にはならない。すなわち、対象画像マクロブロックと同じ範囲の参照データしか使用していないので、各ベクトルにおいてマクロブロック内の全てのピクセルに対して計算を行うことができていない。図22及び図23の斜線部のピクセルが、各ベクトルにおける計算がされるピクセルであり、白色部分は計算がされないピクセルである。ここで、図22の(A)が動きベクトル(−1,−1)の評価値計算の際に用いられるピクセルを示している。以下同様に、図22の(B)、(C)、(D)が、それぞれ動きベクトル(1,−1)、(−1,1)、(1,1)の評価値計算の際に用いられるピクセルを、また、図23の(A)、(B)、(C)、(D)が、それぞれ動きベクトル(−2,0)、(0,−2)、(0,2)、(2,0)の評価値計算の際に用いられるピクセルを示している。
図24に全256ピクセル中で、実際に計算されるピクセル数を示す。この図24に示すように、ここで得られる評価値の値は部分的であるが、各ベクトルにおける計算されるピクセルの数は点対称であるため、評価値がより小さくなる方向を求めるという目的のためにはある程度の役割を果たす。ここで重要なことは次のサブ探索範囲を決定することであれば、そのためには評価値の相対的な情報が重要なのであり、評価値の絶対値は重要ではない。
なお、上記第2の分割法において、さらに精度の高い評価値を得る必要がある場合は、図25に示すように、メモリからそれぞれのサブブロックを読み出した後に、いくつかのデータ(例えばサブブロックを縦に2分割した右側の2列)をキャッシュレジスタに保存しておき、次のサブブロックでの計算時に前のサブブロックのデータを使うという方法も考えられる。すなわち、この図25において、対象サブブロックP−SBaの右側2列分(8ピクセル分)の領域P−SBarのデータと、参照サブブロックQ−SBaの右側2列分(8ピクセル分)の領域Q−SBarのデータとを、それぞれキャッシュレジスタに保存しておき、次のサブブロックP−SBb、Q−SBbでの計算時に、これらの領域P−SBar、Q−SBarを合わせたそれぞれ24ピクセル分のデータを使うような方法である。
この場合、図26及び図27の斜線部のピクセルが、各動きベクトルについて計算がされるピクセルであり、白色部分は計算がされないピクセルである。また、図26の(A)、(B)、(C)、(D)が、それぞれ動きベクトル(−1,−1)、(1,−1)、(−1,1)、(1,1)の評価値計算の際に用いられるピクセルを示し、図27の(A)、(B)、(C)、(D)が、それぞれ動きベクトル(−2,0)、(0,−2)、(0,2)、(2,0)の評価値計算の際に用いられるピクセルを示している。
この方法を使うことにより、それぞれの動きベクトルについて、1マクロブロック当たりの全256ピクセル中で計算されるピクセル数は、図28に示されるようになり、先ほどのキャッシュを使わない場合のピクセル数(図24)に比べて大幅に精度が向上することがわかる。
上述した上記第2の分割法の場合には、対象サブブロックと一致する参照サブブロックを比較するのみなので、サブ探索範囲内の全ベクトルの評価値(の予測値)を求めるのに、対象サブブロックの数、つまり16サイクルしかかからないことになる。すなわち、上記第2の分割法では、精度をある程度犠牲にしながらも、大幅な高速化がはかられたことになる。ここで得られたいくつかベクトルにおける評価値の値を用いて、上記図20と共に説明したように、次に探索を行うサブ探索範囲が選択され、例えば、最小の評価値を持つベクトルの方向にあるサブ探索範囲などが選ばれる。
次に、上述したような第1、第2の分割法、すなわち上記図8の(A)、(B)にそれぞれ示す分割法を用いた、動きベクトル探索(粗粒度探索)を行うためのハードウェアの構成例を図29に示す。
図29は、上記図6の動きベクトル検出計算部12cの要部となる動きベクトル評価値計算処理部30を示している。この図29に示すハードウェア構成を有する動きベクトル評価値計算処理部30は、8ベクトル分の評価値を並列で計算するものであり、この8ベクトルは、上記第1、第2の分割法で一度に評価値を並列計算する動きベクトル数に相当する。
図29において、端子31から供給された対象サブブロックP−SBは回転処理部33を介し、端子32から供給された参照サブブロックQ−SBは回転処理部34を介して、例えば上記図13のパターンを計算するパターン計算部の評価値計算部35a〜35hにそれぞれ送られる。
回転処理部33、34は、図30に示すように、(A)〜(D)の4セットの回転回路を有し、図示のように4×4ピクセル(サブブロック)の範囲内で各ピクセル位置を0/90/180/270度回転させる。なお、上記第2の分割法の場合は、回転処理を行わない。
評価値計算部35a〜35hは、上記第1の分割法の評価値計算の際には、上記図13の8ベクトル分の各パターンに従った対象サブブロックP−SBと参照サブブロックQ−SBとの各それぞれ対応するピクセルについての評価値が計算される。例えば、上記図13の比較を行う場合、動きベクトルvec(−2,−2)を計算するための評価値計算部35aには、対象サブブロックP−SB及び参照サブブロックQ−SBのそれぞれ16ピクセル分を送り、vec(0,−2)を計算するための評価値計算部35bには、対象サブブロックP−SB及び参照サブブロックQ−SBのそれぞれ8ピクセル分を送り、vec(−1,−1)を計算するための評価値計算部35cには、対象サブブロックP−SB及び参照サブブロックQ−SBのそれぞれ9ピクセル分を送り、以下同様に、vec(1,−1)、vec(−2,0)、vec(0,0)及びvec(−1,1)、vec(1,1)をそれぞれ計算するための評価値計算部35d、35e、35f、35g及び35hには、対象サブブロックP−SB及び参照サブブロックQ−SBの各3、8、4、3及び1ピクセル分をそれぞれ送り、これらの8個の動きベクトルにおけるピクセル毎の評価値を並列に計算する。
これらの評価値計算部35a〜35hからの各ピクセル評価値は、それぞれ加算ツリー部36a〜36hに送られて、各動きベクトル毎に加算され、アキュームレータ部37に送られる。
アキュームレータ部37は、上記図10に示す13個の動きベクトルにそれぞれ対応する13個の積算器AC1〜AC13を有し、上記図13〜図16の各パターン毎にそれぞれ得られた8個の動きベクトルの評価値について、それぞれの動きベクトル毎に評価値を積算し、13個の評価値を得る。これらの13個の全ての評価値の積算が終了すると、それぞれの積算器AC1〜AC13に蓄積された各動きベクトル毎の評価値の中から、最小値ブロック38において最小値が決定され、それに対応するベクトルがそのサブ範囲における最適ベクトルとなり、動きベクトル評価値計算処理部30の出力端子41から最小評価値が、出力端子42から最小評価値インデックスがそれぞれ取り出される。
上記第2の分割法の場合には、上記図21に示したようなパターンに基づく各動きベクトルの評価値が計算され、同様に出力端子41、42から最小評価値、最小評価値インデックスがそれぞれ取り出される。
この第2の分割法の場合には、計算されるピクセル数の異なる部分評価値のみしか求めないので、それぞれの値を正規化してから最小値を求めるか、部分評価値の合計をそれぞれ求めてその値から最小値を求める等が必要となる。すなわち、各部分評価値の値を正規化する場合には、例えば、図21のvec(0,−2),vec(2,0),vec(0,2),vec(−2,0)の部分評価値については16/8倍し、vec(1,−1),vec(1,1),vec(−1,1),vec(−1,−1)の部分評価値については16/9倍して正規化を行った後、最小値を求める。また、部分評価値の合計を求める場合には、vec(0,−2),vec(1,−1),vec(2,0)の部分評価値の合計、vec(2,0),vec(1,1),vec(0,2)の部分評価値の合計、vec(0,2),vec(−1,1),vec(−2,0)の部分評価値の合計、vec(−2,0),vec(−1,−1),vec(0,−2)の部分評価値の合計をそれぞれ求め、その4個の値から最小値を求める。
なお、上記評価値は、例えば上記SAD(絶対誤差和)やSSD(誤差の2乗和)等により計算される。
ここで、この図29に示す構成中の入力端子31、32が上記図17の入力端子21、22に相当し、回転処理部33、34が図17の回転処理部23、24に相当し、評価値計算部35a〜35h以降の構成が図17のパターン計算部20にほぼ相当する。
以上説明したような、上記第1、第2の分割法(上記図8の(A)、(B)にそれぞれ示す分割法)を用いた粗粒度探索を行った後に、上記細粒度探索を行う。この細粒度探索は、上記粗粒度探索で決定した動きベクトル平面上の最適なサブ探索範囲内において、画素単位で探索を行うものである。本実施の形態の場合、サブ探索範囲内には25個のベクトルが含まれていることから、25個の中から最適なひとつのベクトルを決定することになる。例えば、図31の(A)に示すように、最適なサブ探索範囲VSAop内の13個のベクトルの中で粗粒度探索段階での最適なベクトルVorを決定する。次に、細粒度探索として、図31の(B)に示すように、上記ベクトルVorに加えてその上下左右の4ベクトルの中で最適なベクトルVofを決定する。このベクトルVofが、上記サブ探索範囲VSAopの中で細粒度探索を行って得られた最適なベクトルとなる。
次に、上記細粒度探索よりも細かい単位での探索、例えば半画素探索を行う。これは、例えば図32に示すように、上記細粒度探索で最終的に得られた最適ベクトルVofを含む上下左右、右上、右下、左上、左下における半画素単位の9個のベクトルにおいてそれぞれ評価値を計算し、半画素探索での最適ベクトルVohを求める。この探索は、半画素単位に限定されず、例えば1/4画素単位での探索を行ってもよい。
ここで、上述したような整数画素単位での予測(動きベクトル探索)の技術は、半画素単位の予測(動きベクトル探索)の場合でも同様に適用できる。例えば、上記第1の分割法におけるサブ探索範囲において、図33に示される水平方向の半画素精度のベクトルを求める場合、整数画素の場合と同様に、最初に左上の対象画像サブブロックと参照サブブロックをメモリから読み出してくるわけだが、その後で参照サブブロックについてはピクセル間の水平補間をしてやることにより、図34に示される補間後の参照サブブロックが得られる。この図34において、△印が補間された画素(ピクセル)を示している。また、図34の実線で囲ったブロックが対象サブブロックを示し、参照サブブロックを破線で示すが、細い破線は水平補間前、太い破線は水平補間後にそれぞれ対応している。図34において、先ず、左上隅の補間前の参照サブブロックについて水平方向のピクセル間補間により3×4の12画素(ピクセル)の補間された参照サブブロックが得られ、この12画素と対象サブブロックとの間で、図35のような組み合せによる評価値が計算される。この図35においても、参照サブブロックを破線で示している。図35から分かるように、参照サブブロックの左端の列は計算に使われないので、12画素しかないことは問題にならない。この時、参照サブブロックの右端の1列のデータを内部キャッシュレジスタなどに保存しておき、次のサブブロック(すなわち右側にあるサブブロック)を読んだときに、今度はキャッシュレジスタの4個のピクセルを合わせて、5×4の20画素のデータから水平補間をすることにより、4×4の16画素のデータが得られることになる。これらを整数画素の場合と同様に、左上・右上・右下・左下のそれぞれの比較を繰り返していくことにより、半画素の場合の評価値が計算される。
ところで、水平補間された参照データの総画素数は20×20の400画素ではなく、19×20の380画素になってしまうが、これは実際上は問題無い。その理由は、−2〜2の範囲のサブ探索範囲内の水平方向の半画素ベクトルは、x方向で−1.5〜1.5、y方向で−2〜2の範囲ということになり、この範囲のベクトルをカバーするには横方向(x方向)19ピクセルで十分であるからである。
以上説明した本発明の実施の形態によれば、動きベクトル探索のための全体の計算量が削減され、またサイクルあたりの計算量が大幅に増大する。これにより、例えば同じ処理をするにしても従来よりも大幅に動作周波数を下げることができるため、低消費電力化することができる。今回の発明を用いて設計したMPEG−4エンコーダコアを用いると、コアが14MHzで動作する状態で、VGAサイズ(640×480ピクセル)で30fps(frame per second)の動画をエンコードすることができる。従来の技術であれば、ソフトウェアソリューションであれば少なくとも数百MHz、ハードウェアソリューションでも概ね50〜200MHzぐらいの動作周波数が必要とされており、14MHzで行うということは従来に比べて大幅な低消費電力化がされるということである。これにより、例えばこれまでは携帯電話などの超小型携帯機器において高画質の動画を長時間にわたって録画することは不可能だった。しかし、この技術を使うことによりそれが可能となる。
また、従来と同様の動作周波数を用いた場合は、より大きな画角で高いフレームレートの動画を処理することが可能となる。これは、いわゆるハイビジョン等の高画質動画の圧縮に貢献できる。
本発明は、上述した実施の形態に限定されるものではなく、マクロブロックのサイズ・探索範囲のサイズ、ベクトル平面の分割法などさまざまなパラメータを変更して適用することができる。また、上記の実施の形態では、分割法をある分割方法とそれを水平・垂直両方向に2ずつずらした2種類を組み合わせたが、例えば、水平のみまたは垂直のみずらした分割方法を取り入れ、3種類以上の分割方法を組み合わせたり、もしくは1種類のみ使用するといった方法も考えられる。また、サブ探索範囲中で探索するベクトルのパターンも、上記実施の形態に示したものに限定されず、全てのベクトルを求めたり、その他のパターンを使用することも可能である。また、整数画素単位といくつかの半画素単位の処理を並列に行うことも可能である。さらに、上記の例では、ダイヤモンドサーチのようにローカルなベクトル探索範囲をたどっていく方法をとったが、今回の技術の並列計算の部分のみを用いて、全ベクトルについて探索を行う(全探索)をすることも可能である。また、上記第2の分割法では、評価値の部分的な計算をする代わりに、完全な評価値を計算する方法をとってもよい。このような変形例のいくつかについて、以下説明する。
変形例1として、全サーチ範囲をくまなく探す方法を使う場合について説明する。
上記実施の形態では、あるサブ探索範囲からはじめてより評価値が低い方向に探索を進めるという方法をとっているが、それでは結果の評価値が局所的に最小になっていても全体としては最小になっていないということが起こり得る。そこで、変形例1として、全サーチ範囲をくまなく探す方法をとる。例えば、まず上記第1の分割法、すなわち上記図8の(A)に示す分割法の全てのサブ探索範囲について、その範囲内のベクトルにおける評価値を計算し、その中で最小の評価値を持つベクトルの周辺で、より詳細な探索を行うことにより最終的な結果を得る。この方法では、全サーチ範囲について探索をすることで、局所的最小値に行き当たるリスクを回避しており精度の向上が見込まれるが、その分処理量が大幅に増加することになる。
次に変形例2として、サブブロックサイズが異なる場合について説明する。
上記実施の形態では、縦4ピクセル×横4ピクセルのサブブロックを使用したが、ここでは、サブブロックサイズが縦2ピクセル×横4ピクセルのサブブロックを使用する。この場合、図36の(A)に示すように対象マクロブロックP−MBは32個のサブブロックに分割し、参照画像も図36の(B)に示すように2×4のサイズのサブブロックに分割する。参照マクロブロックQ−MB0は、参照画像上で動きベクトル(0,0)の(対象マクロブロックと同じ位置の)マクロブロックを示している。
上記実施の形態のシステムでは、2種類のベクトル平面分割方法を使用したが、この変形例2でもそれらと同じ分割方法を使用することにする。また、それぞれの方法におけるサブ探索範囲内で探索するベクトルも同じものを使うことにし、すなわち、上記第1の分割法では13個のベクトルを用い、上記第2の分割法では8個のベクトルを使用する。
上記第1の分割法での、対象マクロブロック(及びサブブロック)と参照サブブロックの位置関係は、図37に示す通りとなる。
それぞれの対象サブブロックに対して、対象サブブロックの左上の参照サブブロック、右上の参照サブブロック、右側に重なった参照サブブロック、右下の参照サブブロック、左下の参照サブブロック。左側に重なった参照サブブロックの、計6個のサブブロックを比較する。これを全32サブブロックに対して行うので、1回の比較を1サイクルで行うとすれば、全部で32×6=192サイクルで終えることができる。図38は、対象サブブロックと、対象サブブロックに対して左上の参照サブブロックとを比較するときの様子を示している。
サブブロック同士の比較は、図39〜図44に示されるように、各ピクセル同士を比較する。これらの図39〜図44において、実線が対象サブブロックを、破線が参照サブブロックをそれぞれ示し、斜線部が評価値計算に使用されるピクセルを示している。また、vec(i,j)は、水平方向(x方向)にi、垂直方向(y方向)にjの成分を有する動きベクトルについての部分評価値の計算を行うことを意味している。
次に、図45は、上記第2の分割法での、対象マクロブロックの各対象サブブロックP−SBと参照サブブロックQ−SBの位置関係、及びサブ探索範囲のサーチに必要な範囲Hを示している。
それぞれの対象サブブロックに対して、対象サブブロックの上の参照サブブロック、丁度重なる参照サブブロック、下の参照サブブロックの、計3個のサブブロックを比較する。これを全32サブブロックに対して行うので、1回の比較を1サイクルで行うとすれば、全部で32×3=96サイクルで終えることができることになる。
サブブロック同士の比較は、図46〜図48に示されるように、各ピクセル同士を比較する。これらの図46〜図48においても、上記図39〜図44と同様に、実線が対象サブブロックを、破線が参照サブブロックをそれぞれ示し、斜線部が評価値計算に使用されるピクセルを示し、また、vec(i,j)は、水平方向(x方向)にi、垂直方向(y方向)にjの成分を有する動きベクトルについての部分評価値の計算を行うことを意味している。
この第2の分割法では、全てのピクセルにおいてピクセル評価値を計算するわけではなく、一部のピクセルについてのみ評価値が計算される。図49〜図52には、実際に評価値が計算されるピクセルをそれぞれの斜線部に示している。
この変形例2の方法では、上記実施の形態の方法に比べてサイクル数が多くかかってしまうが、計算の並列度が減るので、その分回路の量を減らすことができる。
変形例3として、上記第1、第2の分割法(上記図8の(A)、(B)の分割法)以外の分割法を用いる場合について説明する。
上記実施の形態で説明したベクトル平面の上記第1、第2の分割法(上記図8の(A)、(B)にそれぞれ示す分割法)に加えて、図53の(A)、(B)に示す第3、第4の分割法を使用した場合の例である。
まず最初に、例えば上記第1の分割法で分割されたサブ探索範囲内で図54に示される13個のベクトルV0〜V12の探索を行う。以下、この第1の分割法のサブ探索範囲内でのベクトル探索を「サーチSa」といい、同様に、上記第2、第3、第4の各分割法のサブ探索範囲内でのベクトル探索を、それぞれ「サーチSb」、「サーチSc」、「サーチSd」という。
上記サーチSaの結果、評価値が最小だったベクトルの位置によって、以下に示す条件で次に探索するサブ探索範囲を決定する。
(1) ベクトルV0の場合:ベクトルV0の周辺を詳細に(半画素単位で)サーチし、結果を求める。
(2) ベクトルV1〜V4の場合:ベクトルがある方向に隣接するサーチSaを行う。
(3) ベクトルV5〜V8の場合:ベクトルがある方向に隣接するサーチSc又はサーチSdを行う。サーチScとサーチSdとの判別は、隣接する縦横方向のベクトル(ベクトルV1〜V4)を比べて、より小さなベクトルに近いほうのサーチを選択する。例えば、ベクトルV6が最小の時は、ベクトルV1とV2を比べてベクトルV1の方が小さい場合は上記サーチSdを行い、ベクトルV2の方が小さい場合は上記サーチScを行う。
(4) ベクトルV9〜V12の場合:ベクトルがある方向にあるサーチSbを行う。このとき、サーチにおいて部分的な評価値のみを計算する。これを「簡易探索」という。なお、この簡易探索(この場合サーチSb)を行った後は、必ずもとのサーチタイプ(この場合サーチSa)に戻ることとする。
このような上記サーチSaの後に行うサーチの例を図55に示す。この図55において、(A)が上記(2) の場合の次もサーチSaを行う例を、(B)が上記(3) の場合の次にサーチScを行う例を、(C)が上記(3) の場合の次にサーチSdを行う例を、(D)が上記(4) の場合の次にサーチSb(簡易探索)を行う例をそれぞれ示している。
これを他の分割法(他のサーチSb、Sc、Sd)についても同様に行い、それぞれのサーチSb〜Sdから、図56〜図58のそれぞれの(A)〜(D)に示されるように、16方向に進むことができる。また、簡易探索後のサーチについては、図59の(A)〜(D)に示されるように4方向に限られる。
次に変形例4として、サーチ毎のパターンが異なる場合について説明する。
上記実施の形態の上記第1の分割法において、上記図10に示される13個のベクトルについての評価値を計算する代わりに、図60に示されるサブサーチ範囲内の全25個のベクトルについて評価値を計算することもできる。これにより、13個のベクトル間にある最小評価値を見逃さなくなるため、より高い精度の結果を求めることができる。
また、上記第2の分割法において、上記図18に示される8個のベクトルにおいて部分的なピクセル評価値を計算する代わりに、上記図10に示される13個のベクトルについての部分的な評価値を計算することができる。これにより、多少精度の改善が見られる可能性がある。
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
本発明の実施の形態が適用される動画圧縮装置の構成例を示すブロック図である。 本発明の実施の形態が適用される手ぶれ補正装置の構成例を示すブロック図である。 対象画像P内のマクロブロックと参照画像Q内のマクロブロックとの間での比較処理を説明するための図である。 ベクトル平面上の動きベクトルを示す図である。 対象画像のマクロブロックと参照画像の探索範囲とを示す図である。 画像メモリ読み出し及び動きベクトル検出部分の構成例を示すブロック図である。 動きベクトル平面上の探索範囲を示す図である。 動きベクトル平面上におけるサブ探索範囲の第1、第2の分割法を示す図である。 動きベクトル平面上でのサブ探索範囲の移動を説明するための図である。 第1の分割法における動きベクトル平面上のサブ探索範囲内の評価値計算対象となる動きベクトルの例を示す図である。 第1の分割法における対象マクロブロックと参照データ範囲の位置的な関係を示す図である。 対象マクロブロックの対象サブブロックと参照サブブロックとの間のデータの計算を説明するための図である。 対象サブブロックと参照サブブロックとの間の評価値計算に用いられるピクセルのパターンの例を示す図である。 対象サブブロックと参照サブブロックとの間の評価値計算に用いられるピクセルのパターンの例を示す図である。 対象サブブロックと参照サブブロックとの間の評価値計算に用いられるピクセルのパターンの例を示す図である。 対象サブブロックと参照サブブロックとの間の評価値計算に用いられるピクセルのパターンの例を示す図である。 対象サブブロックと参照サブブロックとの間の評価値計算のための構成例を示すブロック図である。 第2の分割法における動きベクトル平面上のサブ探索範囲内の評価値計算対象となる動きベクトルの例を示す図である。 第2の分割法における対象マクロブロックと参照データ範囲の位置的な関係を示す図である。 動きベクトル平面上のサブ探索範囲内で探索された動きベクトルに応じた次のサブ探索範囲への移動を説明するための図である。 第2の分割法における対象サブブロックと参照サブブロックとの間の評価値計算に用いられるピクセルのパターンの例を示す図である。 第2の分割法における各動きベクトル毎の評価値計算に用いられるピクセルを示す図である。 第2の分割法における各動きベクトル毎の評価値計算に用いられるピクセルを示す図である。 第2の分割法において各動きベクトル毎の評価値計算に用いられるマクロブロック当たりのピクセル数を示す図である。 第2の分割法においてさらに精度の高い評価値を得るための計算に用いられるピクセルの例を示す図である。 図25の例における各動きベクトル毎の評価値計算に用いられるピクセルを示す図である。 図25の例における各動きベクトル毎の評価値計算に用いられるピクセルを示す図である。 図25の例において各動きベクトル毎の評価値計算に用いられるマクロブロック当たりのピクセル数を示す図である。 動きベクトル探索を行うためのハードウェアの構成例を示すブロック回路図である。 図29内の回転処理部の回転処理を説明するための図である。 粗粒度探索と細粒度探索との関係を示す図である。 半画素探索を説明するための図である。 動きベクトル平面上で半画素探索を行う場合の動きベクトルを示す図である。 半画素探索を行う場合の対象サブブロック及び参照サブブロックを示す図である。 半画素探索を行う場合の対象サブブロックと参照サブブロックとの間の評価値計算に用いられるピクセルのパターンの例を示す図である。 変形例2として2×4のサイズのサブブロックを用いる場合の対象画像のマクロブロックと参照画像の探索範囲とを示す図である。 変形例2の場合の第1の分割法における対象マクロブロックと参照データ範囲の位置的な関係を示す図である。 変形例2の場合の対象マクロブロックの対象サブブロックと参照サブブロックとの間のデータの計算を説明するための図である。 変形例2の場合の対象サブブロックと参照サブブロックとの間の評価値計算に用いられるピクセルのパターンの例を示す図である。 変形例2の場合の対象サブブロックと参照サブブロックとの間の評価値計算に用いられるピクセルのパターンの例を示す図である。 変形例2の場合の対象サブブロックと参照サブブロックとの間の評価値計算に用いられるピクセルのパターンの例を示す図である。 変形例2の場合の対象サブブロックと参照サブブロックとの間の評価値計算に用いられるピクセルのパターンの例を示す図である。 変形例2の場合の対象サブブロックと参照サブブロックとの間の評価値計算に用いられるピクセルのパターンの例を示す図である。 変形例2の場合の対象サブブロックと参照サブブロックとの間の評価値計算に用いられるピクセルのパターンの例を示す図である。 変形例2の場合の第2の分割法における対象マクロブロックと参照データ範囲の位置的な関係を示す図である。 変形例2の場合の第2の分割法における対象サブブロックと参照サブブロックとの間の評価値計算に用いられるピクセルのパターンの例を示す図である。 変形例2の場合の第2の分割法における対象サブブロックと参照サブブロックとの間の評価値計算に用いられるピクセルのパターンの例を示す図である。 変形例2の場合の第2の分割法における対象サブブロックと参照サブブロックとの間の評価値計算に用いられるピクセルのパターンの例を示す図である。 変形例2の場合の第2の分割法における各動きベクトル毎の評価値計算に用いられるピクセルを示す図である。 変形例2の場合の第2の分割法における各動きベクトル毎の評価値計算に用いられるピクセルを示す図である。 変形例2の場合の第2の分割法における各動きベクトル毎の評価値計算に用いられるピクセルを示す図である。 変形例2の場合の第2の分割法における各動きベクトル毎の評価値計算に用いられるピクセルを示す図である。 変形例3として、上記第1、第2の分割法以外の分割法となる第3、第4の分割法を示す図である。 第1の分割法におけるサブ探索範囲内で探索を行う13個の動きベクトルを示す図である。 第1の分割法のサブ探索範囲内でのベクトル探索(サーチSa)を行った後に行うサーチの例を示す図である。 第2の分割法のサブ探索範囲内でのベクトル探索(サーチSb)を行った後に行うサーチの例を示す図である。 第3の分割法のサブ探索範囲内でのベクトル探索(サーチSc)を行った後に行うサーチの例を示す図である。 第4の分割法のサブ探索範囲内でのベクトル探索(サーチSd)を行った後に行うサーチの例を示す図である。 簡易検索を行った後に行うサーチの例を示す図である。 変形例4として、第1の分割法におけるサブ探索範囲内で探索を行う25個の動きベクトルを示す図である。
符号の説明
10 フレームメモリ、 11 入力端子、 12 動きベクトル検出部、 13 動き補償部、 17 手振れ補正部、 10a 対象画像用メモリ、 10b 参照画像用メモリ、 12c 動きベクトル検出計算部、 20 パターン計算部、 23,24,33,34 回転処理部、 30 動きベクトル評価値計算処理部

Claims (8)

  1. 入力画像中の対象画像と、この対象画像に時間的に近接する参照画像との間で、上記対象画像をブロック分割して得られる対象ブロックと上記参照画像内の参照ブロックとを比較することにより動きベクトルを探索する動きベクトル探索方法において、
    上記対象画像のデータが記憶された対象メモリ及び上記参照画像のデータが記憶された参照メモリから、それぞれ処理単位となる対象処理ブロック及び参照処理ブロックを読み出す工程と、
    これらの読み出された上記処理単位となる対象処理ブロック及び参照処理ブロックに対して、複数の動きベクトルについての上記処理単位毎の部分評価値を並列的に計算する工程と、
    上記対象ブロックに対応する複数の対象処理ブロックについて計算された上記部分評価値を各動きベクトル毎に合成することにより各動きベクトル毎の評価値を得る工程と、
    得られた動きベクトル毎の評価値を比較することにより当該対象ブロックについての最適の動きベクトルを求める工程とを有し、
    上記参照処理ブロックを得るための分割法として上記対象処理ブロックに対して上記参照処理ブロックを水平、垂直方向に処理ブロックの1/2だけずらした位置関係で分割し、対象処理ブロックに対する処理ブロック単位の位置を中心とする周囲の4個の参照処理ブロックにおける複数個の動きベクトルの部分評価値を各動きベクトル毎に合成して、それぞれの動きベクトルの評価値を計算する
    動きベクトル探索方法。
  2. 上記参照処理ブロックを上記対象処理ブロックに対して処理ブロックの1/2だけずらした位置関係の第1の分割法と、上記参照処理ブロックを上記対象処理ブロックに対してずらさない位置関係の第2の分割法とを用い、これらの第1の分割法と第2の分割法とを選択的に切り替えて動きベクトルの探索を行う請求項1記載の動きベクトル探索方法。
  3. 上記部分評価値を各動きベクトル毎に合成する際に、一部の部分評価値を積算した結果に基づいて動きベクトルの評価値を得る請求項1又は2記載の動きベクトル探索方法。
  4. 上記対象処理ブロック及び参照処理ブロックは、上記対象ブロック及び参照ブロックを分割した対象サブブロック及び参照サブブロックであり、上記対象メモリ及び参照メモリからはそれぞれ対象サブブロック及び参照サブブロックのデータが読み出される請求項1記載の動きベクトル探索方法。
  5. 上記動きベクトルの探索は、先に一部の動きベクトルについて評価値計算を行って最適ベクトルを求める粗粒度検索を行い、粗粒度検索により得られた最適ベクトルの近傍で画素単位以下の粒度の最適動きベクトルを求める細粒度検索を行う請求項1記載の動きベクトル探索方法。
  6. 入力画像中の対象画像と、この対象画像に時間的に近接する参照画像との間で、上記対象画像をブロック分割して得られる対象ブロックと上記参照画像内の参照ブロックとを比較することにより動きベクトルを探索する動きベクトル探索装置において、
    上記対象画像のデータが記憶された対象メモリと、
    上記参照画像のデータが記憶された参照メモリと、
    上記対象メモリ及び上記参照メモリから、それぞれ処理単位となる対象処理ブロック及び参照処理ブロックを読み出し、これらの読み出された上記処理単位となる対象処理ブロック及び参照処理ブロックに対して、複数の動きベクトルについての上記処理単位毎の部分評価値を並列的に計算し、上記対象ブロックに対応する複数の対象処理ブロックについて計算された上記部分評価値を各動きベクトル毎に合成することにより各動きベクトル毎の評価値を得、得られた動きベクトル毎の評価値を比較することにより当該対象ブロックについての最適の動きベクトルを求める動きベクトル検出計算部とを有し、
    上記参照処理ブロックを得るための分割法として上記対象処理ブロックに対して上記参照処理ブロックを水平、垂直方向に処理ブロックの1/2だけずらした位置関係で分割し、対象処理ブロックに対する処理ブロック単位の位置を中心とする周囲の4個の参照処理ブロックにおける複数個の動きベクトルの部分評価値を各動きベクトル毎に合成して、それぞれの動きベクトルの評価値を計算する
    動きベクトル探索装置。
  7. 上記部分評価値を各動きベクトル毎に合成する際に、一部の部分評価値を積算した結果に基づいて動きベクトルの評価値を得る請求項6記載の動きベクトル探索装置。
  8. 上記動きベクトルの探索は、先に一部の動きベクトルについて評価値計算を行って最適ベクトルを求める粗粒度検索を行い、粗粒度検索により得られた最適ベクトルの近傍で画素単位以下の粒度の最適動きベクトルを求める細粒度検索を行う請求項6記載の動きベクトル探索装置。
JP2006110139A 2006-04-12 2006-04-12 動きベクトル探索方法及び装置 Expired - Fee Related JP4793070B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006110139A JP4793070B2 (ja) 2006-04-12 2006-04-12 動きベクトル探索方法及び装置
US11/734,151 US8379725B2 (en) 2006-04-12 2007-04-11 Motion-vector searching method and motion-vector searching apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006110139A JP4793070B2 (ja) 2006-04-12 2006-04-12 動きベクトル探索方法及び装置

Publications (2)

Publication Number Publication Date
JP2007288273A JP2007288273A (ja) 2007-11-01
JP4793070B2 true JP4793070B2 (ja) 2011-10-12

Family

ID=38604824

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006110139A Expired - Fee Related JP4793070B2 (ja) 2006-04-12 2006-04-12 動きベクトル探索方法及び装置

Country Status (2)

Country Link
US (1) US8379725B2 (ja)
JP (1) JP4793070B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8817878B2 (en) * 2007-11-07 2014-08-26 Broadcom Corporation Method and system for motion estimation around a fixed reference vector using a pivot-pixel approach
JP2009267726A (ja) * 2008-04-24 2009-11-12 Panasonic Corp 動画像符号化装置、録画装置、動画像符号化方法、動画像符号化プログラム
WO2010050089A1 (ja) * 2008-10-29 2010-05-06 パナソニック株式会社 動画像圧縮符号化における符号化処理方法及び符号化処理装置
US8358696B2 (en) * 2008-12-31 2013-01-22 Intel Corporation Motion estimation techniques
TWI475882B (zh) * 2009-12-30 2015-03-01 Altek Corp Motion detection method using the adjusted digital camera of the shooting conditions
US20130251045A1 (en) * 2010-12-10 2013-09-26 Thomson Licensing Method and device for determining a motion vector for a current block of a current video frame
US9055304B2 (en) * 2011-07-01 2015-06-09 Qualcomm Incorporated Reduced resolution pixel interpolation
WO2013051209A1 (ja) 2011-10-05 2013-04-11 パナソニック株式会社 画像符号化方法、画像符号化装置、画像復号方法、画像復号装置、および、画像符号化復号装置
US11558637B1 (en) * 2019-12-16 2023-01-17 Meta Platforms, Inc. Unified search window to support multiple video encoding standards
US11106703B1 (en) * 2021-01-13 2021-08-31 Bigid Inc Clustering of structured and semi-structured data

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4322343C2 (de) * 1992-07-06 1996-10-02 Mitsubishi Electric Corp Mittel zum Erfassen eines Bewegungsvektors und Verfahren zum Bestimmen eines Bewegungsvektors
US5448310A (en) * 1993-04-27 1995-09-05 Array Microsystems, Inc. Motion estimation coprocessor
JPH07203457A (ja) * 1993-12-27 1995-08-04 Oki Electric Ind Co Ltd 動きベクトル検出装置
JPH101385A (ja) 1996-06-18 1998-01-06 Honda Motor Co Ltd 塗料滓の再利用方法
JPH1013835A (ja) * 1996-06-19 1998-01-16 Ricoh Co Ltd 動きベクトル検出方法
JP2861963B2 (ja) * 1996-08-30 1999-02-24 日本電気株式会社 動きベクトル検出回路
JP3019787B2 (ja) * 1996-09-20 2000-03-13 日本電気株式会社 動きベクトル検出装置
JPH10327415A (ja) * 1997-05-22 1998-12-08 Mitsubishi Electric Corp 動きベクトル検出装置
JP2897761B2 (ja) * 1997-07-18 1999-05-31 日本電気株式会社 ブロック・マッチング演算装置及びプログラムを記録した機械読み取り可能な記録媒体
JP3611507B2 (ja) * 2000-05-30 2005-01-19 松下電器産業株式会社 動きベクトル検出装置
US20040008779A1 (en) * 2002-06-18 2004-01-15 Lai King Chung Techniques for video encoding and decoding
KR100498951B1 (ko) * 2003-01-02 2005-07-04 삼성전자주식회사 동영상 압축 부호화를 위한 움직임 예측 방법과 그기록매체
US7453940B2 (en) * 2003-07-15 2008-11-18 Lsi Corporation High quality, low memory bandwidth motion estimation processor
DE102004017145B4 (de) * 2004-04-07 2006-02-16 Micronas Gmbh Verfahren und Vorrichtung zur Ermittlung von Bewegungvektoren, die Bildbereichen eines Bildes zugeordnet sind

Also Published As

Publication number Publication date
US20070242752A1 (en) 2007-10-18
JP2007288273A (ja) 2007-11-01
US8379725B2 (en) 2013-02-19

Similar Documents

Publication Publication Date Title
JP4793070B2 (ja) 動きベクトル探索方法及び装置
US8073057B2 (en) Motion vector estimating device, and motion vector estimating method
US6690729B2 (en) Motion vector search apparatus and method
KR100486249B1 (ko) 움직임 추정 장치 및 탐색영역에서 레퍼런스매크로블록창의 스캐닝 방법
KR101578052B1 (ko) 움직임 추정 장치 및 이를 구비하는 동영상 부호화 장치
US9319708B2 (en) Systems and methods of improved motion estimation using a graphics processing unit
US8275049B2 (en) Systems and methods of improved motion estimation using a graphics processing unit
US20120076207A1 (en) Multiple-candidate motion estimation with advanced spatial filtering of differential motion vectors
JP3715283B2 (ja) 動画像の画像圧縮符号化方法及び装置
KR20110107827A (ko) 차동 움직임 벡터들의 개선된 공간적인 필터링을 갖는 다중-후보 움직임 추정
JP2011097572A (ja) 動画像符号化装置
WO2010080168A1 (en) One step sub-pixel motion estimation
JPH08140094A (ja) 動きベクトル探索装置
KR20090014371A (ko) 움직임 검출 장치
JP4597103B2 (ja) 動きベクトル探索方法及び装置
CN111327901B (zh) 视频编码方法、装置、存储介质及编码设备
JP4228705B2 (ja) 動きベクトル探索方法および装置
US20050089099A1 (en) Fast motion estimating apparatus
Asano et al. An FPGA implementation of full-search variable block size motion estimation
JP3309519B2 (ja) 動きベクトル検出装置
Zhang et al. Fast sub-pixel motion estimation based on directional information and adaptive block classification
Ghosh et al. A fast VLSI architecture of a hierarchical block matching algorithm for motion estimation
Georgis et al. Study of interpolation filters for motion estimation with application in H. 264/AVC encoders
JPH10164596A (ja) 動き検出装置
KR20170134487A (ko) 효율적인 저-복잡도 비디오 압축

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090313

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101005

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101019

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110517

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110613

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: 20110628

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: 20110711

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

Free format text: PAYMENT UNTIL: 20140805

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees