次に、本発明の実施の形態について図面を参照して詳細に説明する。
まず、本発明の各実施形態との比較のために、動画像符号化装置の構成の一例として、H.264方式の動画像符号化装置について、図面を参照して詳細に説明する。H.264方式では、圧縮効率向上および画質向上を目的として、イントラ予測や、デブロックフィルタの技術も採用されている。イントラ予測は、同一画像フレーム内の近傍の画素の情報を用いて予測を行なう技術である。デブロックフィルタの技術は、符号化結果の画像に発生した符号化ノイズを低減する技術である。H.264の詳細は、例えば、下記の文献1に記載されている。
(文献1) ITU−T Recommendation H.264 「Advanced video coding for generic audiovisual services」、2010年3月.
図1は、H.264方式の動画像符号化装置1Cの構成の例を表すブロック図である。図1に示すH.264方式の動画像符号化装置1Cを、以下の説明では、比較例の動画像符号化装置1Cとも表記する。図1を参照すると、動画像符号化装置1Cは、次に示す部を構成要素として含む。
動きベクトル探索部100、
動き補償部101、
イントラ予測モード判定部102、
イントラ予測部103、
選択部104、
整数変換部105、
量子化部106、
逆量子化部107、
逆整数変換部108、
可変長符号化部109、
デブロックフィルタ110、
フレームバッファ111、
減算部112、
加算部113。
フレームバッファ111は、過去に符号化済みのフレームの画像データを記憶する。
動画像符号化装置1Cに新たな画像が入力されると、その入力された画像に対して、マクロブロック(MB)と呼ばれる16×16画素のブロック単位で符号化処理が行なわれる。
動きベクトル探索(ME:Motion Estimation)部100は、入力画像とフレームバッファ111に格納されている符号化済み画像との間で対応する画像ブロックの位置変化を検出する。動きベクトル探索部100は、その検出された位置変化に相当する動きベクトルを出力する。入力画像は、例えば、動画像符号化装置1Cが符号化を行う動画像に含まれるフレームである。入力画像は、以下の説明において、符号化対象画像とも表記される。
動き補償(MC:Motion Compensation)部101は、フレームバッファ111に格納されている符号化済み画像と、動きベクトル探索部100から供給される動きベクトルとを用いて、動き補償処理を行なう。そして、動き補償部101は、動き補償処理によって得られた動き補償予測画像を出力する。
イントラ予測モード判定部102は、入力画像と、同一画像内の符号化済みマクロブロックの画像を用いて適切な(すなわち、一般的には、符号化効率が最も高くなる)イントラ予測モードを選択する。イントラ予測モード判定部102は、一般的には、符号化効率が最も高くなるイントラ予測モードを、適切なイントラ予測モードとして選択する。イントラ予測モード判定部102は、選択されたイントラ予測モードを出力する。
イントラ予測(IP:Intra Prediction)部103は、同一画像内の符号化済みマクロブロックの画像と、イントラ予測モード判定部102から供給されるイントラ予測モードを用いて、イントラ予測処理を行なう。イントラ予測は、画面内予測とも表記される。イントラ予測部103は、イントラ予測処理によって得られた、イントラ予測画像を出力する。
選択部104は、動き補償部101から供給される動き補償予測画像と、イントラ予測部103から供給されるイントラ予測画像のうち、適切な画像を予測画像として選択する。選択部104は、一般的には、より符号化効率が高くなる画像を、適切な画像として選択する。選択部104では、選択した画像を、予測画像として出力する。動き補償予測画像が選択される場合がInterモードと呼ばれ、イントラ予測画像が選択される場合がIntraモードと呼ばれることがある。
減算部112は、入力画像から、選択部104から出力される予測画像を減算することにより、予測誤差画像を導出する。減算部112は、導出された予測誤差画像を出力する。
整数変換(DIT:Discrete Integer Transform)部105は、出力された予測誤差画像に対して、DCT(Discrete Cosine Transform)と同様な直交変換処理を行なう。整数変換部105は、直交変換処理によって得られた直交変換係数列を出力する。
量子化(Q:Quantize)部106は、出力された直交変換係数列に対して、量子化処理を行なう。そして、量子化部106は、量子化された直交変換係数列を出力する。
可変長符号化(VLC:Variable−Length Coding)部109は、量子化された直交変換係数列を所定の規則で符号化する。可変長符号化部109は、符号化の結果をビットストリームとして出力する。これがH.264方式の動画像符号化装置1Cの出力ビットストリームである。
また、逆量子化(IQ:Inverse Qunatization)部107は、量子化された直交変換係数列に対して、逆量子化処理を行う。
逆整数変換(IDIT:Inverse Discrete Integer Transform)部108は、逆量子化処理の結果に対して、逆整数変換処理を行なう。
加算部113は、選択部104から出力される予測画像と、逆整数変換処理の結果とを加算する。
さらに、デブロックフィルタ110は、加算によって得られた画像に対して、デブロックフィルタ処理を行なうことによって、ローカルデコード画像を生成する。
ローカルデコード画像はフレームバッファ111に記憶される。フレームバッファ111に記憶されているローカルデコード画像は、後続フレームに対する符号化に利用される。例えば、後述される参照画像は、このローカルデコード画像である。以上で説明した処理の、より具体的な処理の内容は、例えば、下記の文献2に開示されている。
(文献2) Joint Video Team (JVT) of ISO/IEC MPEG and ITU−T VCEG、Document JVT−O079、「Text Description of Joint Mode Reference Encoding Method and Decoding Concealment Method」、2005年4月.
次に、動画像符号化装置1Cに含まれる動きベクトル探索部100について、図面を参照して詳細に説明する。
図2は、H.264方式の動画像符号化装置1Cの動きベクトル探索部100の構成の例を表す図である。図2を参照すると、動きベクトル探索部100は、次に示す部を構成要素として含む。
入力画像記憶部200、
参照画像記憶部201、
動きベクトル記憶部202、
制御部300、
差分画像コスト計算部301、
予測画像生成部302、
コスト算出部303、
ベクトルコスト計算部304、
コスト比較・ベクトル選択部305、
予測ベクトル生成部306。
コスト比較・ベクトル選択部305は、ベクトル選択部305とも表記される。
入力画像記憶部200は、入力画像を記憶する。
参照画像記憶部201は、過去に符号化済みの画像データを記憶する。参照画像記憶部201が記憶する過去に符号化済みの画像データは、動き補償予測において参照される。参照画像記憶部201が記憶する画像は、上述のローカルデコード画像である。参照画像記憶部201が記憶する画像は、参照画像とも表記される。図1に示すフレームバッファ111が、参照画像記憶部201として動作してもよい。その場合、動きベクトル探索部100は、参照画像記憶部201を含んでいなくてよい。
動きベクトル記憶部202は、符号化対象画像内の符号化済みのMBにおいて導出された、動きベクトルを記憶する。
動き補償予測に用いるのに最適な動きベクトルを求めるのが動きベクトル探索部100の役割である。動きベクトル探索部100が求める動きベクトルの精度が、圧縮性能を大きく左右する。この処理では、復号画像に発生するノイズ量を抑えつつ、符号化する情報量も最小化する動きベクトルを求めることが要求される。このため、近年の動画像符号化装置ではRD(Rate−Distortion)最適化と呼ばれる手法が広く用いられている。RD最適化では、多数の動きベクトル候補に対して、式1で表されるレート歪みコストを算出される。そして、レート歪みコストが最小になる動きベクトル候補が、最適な動きベクトルとして採用される。
J = D + λR (式1)
ここで、Dは予測差分画像に発生する歪み量(差分画像コスト)であり、Rは動きベクトルの符号化で発生する符号量(ベクトルコスト)であり、λは画像の複雑さなどに依存する重み係数(コスト係数)である。RD最適化の詳細は、例えば、上記の文献2や、下記の文献3に記載されている。
(文献3) G.J. Sullivan, T. Wiegand, "Rate-distortion optimization for video compression," Signal Processing Magazine, IEEE, vol.15, no.6, pp.74-90, 1998.
動きベクトル探索部100は、RD最適化によって、動きベクトルを求める。
制御部300が、動きベクトル探索部100の動作を制御する。制御部300は、所定の探索範囲に基づき候補ベクトルを生成し、生成した候補ベクトルを、予測画像生成部302とベクトルコスト計算部304に供給する。
差分画像コスト計算部301は、予測画像生成部302から供給される予測画像と、入力画像記憶部200から供給される符号化対象の画像との差分画像を計算する。
予測画像生成部302は、制御部300から供給される候補ベクトルに基づき、参照画像記憶部201に格納されている参照画像を用いて動き補償処理を行うことによって、予測画像を生成する。
差分画像コスト計算部301は、予測画像生成部302から供給される予測画像と、入力画像記憶部200から供給される符号化対象画像との差分画像を計算する。前述のように、入力画像が符号化対象画像である。
予測ベクトル生成部306は、動きベクトル記憶部202から読み出された、符号化済みのMBの動きベクトルを用いて、符号化対象MBの予測ベクトルを生成する。
ベクトルコスト計算部304は、制御部300から供給される候補ベクトルと、予測ベクトル生成部306から供給される予測ベクトルとをもとに、その候補ベクトルのベクトルコストを算出する。
コスト算出部303は、差分画像コストと、ベクトルコストと、制御部300から供給されるコスト係数(式1におけるλ)に基づき、式1によって表されるレート歪みコストを算出する。レート歪みコストは、供給された候補ベクトルが、符号化対象ブロックの動きベクトルとしてどの程度適するかを表す指標である評価値である。
コスト比較・ベクトル選択部305は、コスト算出部303から供給されるレート歪みコストが、既に評価済みである候補ベクトルのレート歪みコストより小さい場合、現候補ベクトルを暫定的な最適ベクトルとして選択する。すなわち、コスト比較・ベクトル選択部305は、入力画像のブロック毎に、レート歪みコストが最も小さい候補ベクトルを、暫定的な最適ベクトルとして選択する。
次に、動きベクトル探索部100の動作について、図面を参照して詳細に説明する。
図3は、H.264方式の動画像符号化装置1Cの動きベクトル探索部100の動作を表すフローチャートである。
制御部300は、符号化対象画像内に未処理のMBが存在するかを判定する(ステップS301)。未処理のMBが存在しない場合(ステップS301においてYes)、動きベクトル探索部100は、図3に示す動作を終了する。未処理のMBが存在する場合(ステップS301においてNo)、制御部300は、そのMBを符号化対象ブロックとした動きベクトル探索のための初期化処理を行う(ステップS302)。制御部300は、この初期化処理では、後述する暫定的な最適動きベクトルやレート歪みコストの最小値として保持する値の初期化や、初期探索候補ベクトルの設定を行う。
次に、制御部300は、符号化対象ブロックに対して未生成の候補ベクトルが残っているかを判定する(ステップS303)。未生成の候補ベクトルが残っている場合(ステップS303においてYes)、制御部300は、探索する候補ベクトルを生成する(ステップS304)。制御部300は、所定の探索範囲内をラスタースキャンするように順次候補ベクトルを生成してもよい。制御部300は、例えば、探索範囲内の位置を順次選択しながら、探索範囲内の選択された位置を表すベクトルを、候補ベクトルとして生成すればよい。制御部300は、ある時点での暫定の最適ベクトルの周囲に次の候補ベクトルを設定してもよい。制御部300は、他のさまざまな方法のいずれかによって、候補ベクトルを生成してもよい。制御部300は、探索範囲内全体に対して候補ベクトルが生成された場合、未生成の候補ベクトルが残っていないと判定すればよい。制御部300は生成した候補ベクトルを、予測画像生成部302に供給する。
次に、コスト算出部303が、式1によって表されるレート歪みコストを算出する(ステップS305)。
そのために、まず、予測画像生成部302は、制御部300から供給される候補ベクトルに基づき、参照画像記憶部201に格納されている参照画像を用いて動き補償処理を行うことによって、予測画像を生成する。予測画像生成部302は、生成した予測画像を、差分画像コスト計算部301に供給する。
差分画像コスト計算部301は、予測画像生成部302から供給される予測画像と、入力画像記憶部200から供給される符号化対象の画像との差分画像を計算する。差分画像コスト計算部301は、さらに、その差分画像の、歪み量に基づく差分画像コストを算出する。差分画像コスト計算部301が算出する差分画像コストは、画素値の差分絶対値和(SAD: Sum of Absolute Differences)であってもよい。差分画像コスト計算部301が算出する差分画像コストは、画素値の差分二乗和(SSD: Sum of Square Differences)であってもよい。差分画像コスト計算部301が算出する差分画像コストは、画素値の差分に所定の変換を施した係数の絶対値和(SATD:Sum of Absolute Transformed Differences)であってもよい。
予測ベクトル生成部306は、動きベクトル記憶部202から、符号化済みのMBの動きベクトルを読み出す。予測ベクトル生成部306は、読み出された、符号化済みのMBの動きベクトルを用いて、符号化対象MBの予測ベクトルを生成する。予測ベクトルの算出手順は符号化規格で定められている。
図4は、H.264における予測ベクトルの算出に使用される動きベクトルを模式的に表す図である。例えばH.264の場合は図4に示すように、符号化対象ブロックに隣接する左(ブロックA)、上(ブロックB)、右上(ブロックC)の動きベクトルが、予測ベクトルの算出に用いられる。予測ベクトル生成部306は、この3本の動きベクトルのMedian(中央値)を予測ベクトルとする。
図5は、H.265における予測ベクトルの算出に使用される動きベクトルを模式的に表す図である。H.265の場合、予測ベクトル生成部306は、符号化対象ブロックの空間的近傍の5種類の位置の動きベクトル、および時間的近傍フレームの同位置ブロックの周辺の2種類の位置の動きベクトルを、所定の規則に基づきリスト化する。時間的近傍フレームは、例えば、符号化対象フレームより時間的に一つ前のフレームである。符号化対象ブロックの空間的近傍の5種類の位置は、図5におけるA0〜B2の位置である。時間的近傍フレームの同位置ブロックの周辺のC0、C1の2種類の位置は、図5におけるC0、C1の2種類の位置である。予測ベクトル生成部306は、リスト中のベクトルのいずれか一つを、予測ベクトルとして選択する。H.265の詳細は、例えば、下記の文献4に記載されている。
(文献4) ITU−T Recommendation H.265 「Advanced video coding for generic audiovisual services」、2013年4月.
ベクトルコスト計算部304は、制御部300から供給される候補ベクトルと、予測ベクトル生成部306から供給される予測ベクトルとをもとに、その候補ベクトルのベクトルコストを算出する。候補ベクトルのベクトルコストは、その候補ベクトルを符号化するために発生する符号量である。
コスト算出部303は、差分画像コストと、ベクトルコストと、制御部300から供給されるコスト係数(式1におけるλ)に基づき、式1によって表されるレート歪みコストを算出する(ここまでがステップS305)。差分画像コストは、差分画像コスト計算部301から供給される。ベクトルコストは、ベクトルコスト計算部304から供給される。制御部300は、コスト算出部303にコスト係数を供給する。
次に、コスト比較・ベクトル選択部305は、コスト算出部303から供給されるレート歪みコストと、既に評価済みの候補ベクトルのレート歪みコストの最小値を比較する。コスト比較・ベクトル選択部305は、現候補ベクトルのコストの方が小さい場合、現候補ベクトルを暫定的な最適ベクトルとして選択し、加えて、レート歪みコストの最小値を更新する。コスト比較・ベクトル選択部305は、暫定的な最適ベクトルを制御部300に供給する(ステップS306)。
制御部300は、暫定的な最適ベクトルなどを用いて、次に評価する候補ベクトルを決定する。すべての候補ベクトルの評価が完了すると、制御部300は、現ブロックの動きベクトル探索を完了する。制御部300は、動きベクトル探索を完了した時点における暫定的な最適ベクトルを、最終的な動きベクトルとして確定する。制御部300は、確定した最終的な動きベクトルを、動きベクトル記憶部202に格納する(ステップS307)。
以上の動きベクトル探索処理が、画像内の各MBに対して順次ラスタースキャン順に実行されると、1フレームの動きベクトル探索処理が完了する。
<第1の実施形態>
次に、本発明の第1の実施の形態について、図面を参照して詳細に説明する。
図14は、本実施形態の動画像符号化装置1の構成の例を表すブロック図である。
図14と図1とを比較すると、本実施形態の動画像符号化装置1は、動きベクトル探索部100の代わりに動きベクトル探索装置10を含む。動画像符号化装置1の他の構成要素は、同じ符号が付与された、動画像符号化装置1Cの構成要素と同じである。動画像符号化装置1は、動画像符号化装置1Cと同様に、動画像が入力されると、例えばH.264のビットストリームを出力する。
以下、本発明の各実施形態において、動きベクトル探索装置10が、H.264で動画像の符号化を行う動画像符号化装置1において動きベクトルの探索を行う場合について説明する。しかし、本実施形態の動きベクトル探索装置10及び他の実施形態に係る動きベクトル探索装置を適用することができる動画像符号化装置は、H.264やH.265で動画像の符号化を行う動画像符号化装置に限定されない。本実施形態の動きベクトル探索装置10及び他の実施形態に係る動きベクトル探索装置は、国際標準である、あるいは国際標準ではない、他の符号化方式で動画像の符号化を行う動画像符号化装置にも適用可能である。
図6は、本実施形態の動きベクトル探索装置10の構成の例を表すブロック図である。
図6を参照すると、動きベクトル探索装置10は、次に示す部を構成要素として含む。
入力画像記憶部200、
参照画像記憶部201、
動きベクトル記憶部203、
制御部300、
予測画像生成部302、
予測ベクトル生成部306、
切り替え部307、
コスト計算部308。
コスト計算部308は、差分画像コスト計算部301と、コスト算出部303と、ベクトルコスト計算部304とを含む。
図6と図2に示す動きベクトル探索部100の構成とを比較すると、本実施形態の動きベクトル探索装置10は、動きベクトル記憶部202の代わりに、動きベクトル記憶部203を含む。さらに、動きベクトル探索装置10は、動きベクトル探索部100の構成に含まれない、切り替え部307と、コスト計算部308とを含む。そして、差分画像コスト計算部301と、コスト算出部303と、ベクトルコスト計算部304は、コスト計算部308に含まれる。本実施形態の動きベクトル探索装置10の他の構成要素は、以下の相違を除き、同じ番号が付与された、図2に示す動きベクトル探索部100の構成要素と同等の動作を行う。
動きベクトル記憶部203は、動きベクトルを記憶する。動きベクトル記憶部203は、第1の記憶領域と第2の記憶領域に分割されている。第1の記憶領域は、動きベクトル記憶部203A又は動きベクトル記憶部203Bとしてアクセスされる。同様に、第2の記憶領域は、動きベクトル記憶部203B又は動きベクトル記憶部203Aとしてアクセスされる。以下の説明において、動きベクトル記憶部203Aを記憶部Aとも表記する。同様に、動きベクトル記憶部203Bを記憶部Bとも表記する。
切り替え部307は、例えば制御部300から受信する指示に基づき、動きベクトル記憶部203Aとしてアクセスされる記憶領域を、第1の記憶領域と第2の記憶領域の間で切り替える。同様に、切り替え部307は、例えば制御部300から受信する指示に基づき、動きベクトル記憶部203Bとしてアクセスされる記憶領域を、第2の記憶領域と第1の記憶領域の間で切り替える。切り替え部307は、第1の記憶領域が動きベクトル記憶部203Aとしてアクセスされる場合、第2の記憶領域が動きベクトル記憶部203Bとしてアクセスされるように切り替えを行う。また、切り替え部307は、第1の記憶領域が動きベクトル記憶部203Bとしてアクセスされる場合、第2の記憶領域が動きベクトル記憶部203Aとしてアクセスされるように切り替えを行う。
本実施形態では、制御部300から供給される動きベクトルは、動きベクトル記憶部203Aに格納される。すなわち、制御部300は、導出された動きベクトルを、動きベクトル記憶部203Aに格納する。一方、動きベクトル記憶部203Bから、予測ベクトル生成部306に対して、動きベクトルが供給される。すなわち、予測ベクトル生成部306は、動きベクトル記憶部203Bから動きベクトルを読み出す。
次に、本実施形態の動きベクトル探索装置10の動作について、図面を参照して詳細に説明する。
図7は、本実施形態の動きベクトル探索装置10の動作の例を表すフローチャートである。
図7に示す各ステップの動作は、ステップS700、ステップS705、ステップS707及びステップS708の動作を除き、図3に示す同じ符号が付与されたステップの動作と同じである。
後述されるように、本実施形態の動きベクトル探索装置10は、フレーム全体に対する動きベクトル探索を、1フレーム当たり2回以上行う。すなわち、動きベクトル探索装置10は、符号化対象画像全体に対する動きベクトル探索を、1つの符号化対象画像当たり2回以上行う。以下の説明において、1回の、フレーム全体に対する動きベクトル探索を、探索ステップと表記する。動きベクトル探索装置10は、符号化対象画像に対する1回目の探索ステップにおいて、その符号化対象画像の符号化済みMBの動きベクトルではなく、動きベクトルのあらかじめ決められた初期値を使用して、最適な動きベクトルの導出を行う。動きベクトル探索装置10は、符号化対象画像に対する2回目以降の探索ステップにおいては、その符号化対象画像に対する前回の探索ステップにおいて導出された動きベクトルを使用して、最適な動きベクトルの導出を行う。
図8は、複数回の探索ステップで更新される動きベクトルの例を模式的に表す図である。図8の上段に示すベクトルは、動きベクトルの初期値を表す。図8の中段に示すベクトルは、1回目の探索ステップ(探索ステップ1)によって導出された動きベクトルを表す。1回目の探索ステップでは、算出される予測ベクトルは例えばゼロベクトルである。図8の下段に示すベクトルは、2回目の探索ステップ(探索ステップ2)によって導出された動きベクトルを表す。2回目の探索ステップでは、1回目の探索ステップで導出された動きベクトルを使用して、予測ベクトルが算出される。下段のベクトルのうち、太い矢印によって表されるベクトルは、前回の探索ステップにおいて導出された動きベクトルから変化した動きベクトルを表す。すなわち、太い矢印によって表されるベクトルは、同じブロックに対して前回の探索ステップにおいて導出された動きベクトルと異なる動きベクトルを表す。
図7に示すステップS700において、制御部300は、符号化対象フレームに対して動きベクトルの探索を行うための初期化処理を行う。
本実施形態の動きベクトル探索装置10では、RD最適化における予測ベクトルの算出の際、同じ探索ステップで導出された、動きベクトル導出の対象であるブロック(すなわち対象ブロック)の近傍のブロックの動きベクトルは使用されない。動きベクトル探索装置10は、一つ前の探索ステップにおいて導出された、対象ブロックの近傍のブロックの動きベクトルを使用して、RD最適化における予測ベクトルを算出する。そのため、制御部300は、ステップS700の初期化処理では、1回目の探索ステップにおいて使用される、全てのブロックに対する初期動きベクトルを動きベクトル記憶部203に格納する。
上述のように、本実施形態では、制御部300は、導出された動きベクトルを、動きベクトル記憶部203Aに格納する。予測ベクトル生成部306は、動きベクトル記憶部203Bから動きベクトルを読み出す。
制御部300は、1回目の探索ステップでは、ステップS700において、動きベクトル記憶部203の第1の記憶領域又は第2の記憶領域の何れかに初期動きベクトルを格納する。例えば、制御部300は、例えば第2の記憶領域に初期動きベクトルを格納する場合、まず、第2の記憶領域が、動きベクトル記憶部203Aとして、すなわち記憶部Aとしてアクセスされるように切り替える指示を、切り替え部307に送信すればよい。そして、制御部300は、初期動きベクトルを記憶部Aに書き込めばよい。さらに、制御部300は、初期動きベクトルが格納された記憶領域が、動きベクトル記憶部203Bとして、すなわち記憶部Bとしてアクセスされるように切り替える指示を、切り替え部307に送信すればよい。
初期動きベクトルは、全て、動きが無いことを表すゼロベクトルであってもよい。その場合、制御部300は、全てのMBに対して、ゼロベクトルであるベクトル(0,0)を記憶部Aに格納する。本発明の各実施形態では、初期動きベクトルを含む動きベクトルは、2次元のベクトルである。2次元のゼロベクトルは、ベクトル(0,0)で表される。あるいは、初期動きベクトルは、符号化済みのフレームに対して導出された動きベクトルであってもよい。その場合、制御部300は、各MBに対して、符号化済みのフレームの同位置のMBにおいて導出された動きベクトルを、記憶部Aに格納する。制御部300は、他の初期動きベクトルを記憶部Aに格納してもよい。すなわち制御部300は、他のベクトルによって、記憶部Aを初期化してもよい。
ステップS700の後、制御部300は、初期化処理時に記憶部Aに割り当てられていた記憶領域を、記憶部Bに割り当て、初期化処理時に記憶部Bに割り当てられていた記憶領域を、記憶部Aに割り当てる指示を、切り替え部307に送信する。切り替え部307は、その指示を受信すると、記憶部Aに割り当てる記憶領域と、記憶部Bに割り当てる記憶領域を入れ替える。その結果、初期動きベクトルを記憶部Bから読み出すことができるようになる。
ステップS301からステップS304までの動作は、図3に示す、動きベクトル探索部100の、同じ符号が付与されたステップの動作と同じである。
ステップS705におけるコスト算出の処理手順は、図3に示すステップS305におけるコスト算出の処理手順と同じである。しかし、ステップS705において予測ベクトル生成部306に供給される動きベクトルが、ステップS305において予測ベクトル生成部306に供給される動きベクトルと異なる。ステップS305において予測ベクトル生成部306に供給される動きベクトルは、動きベクトル記憶部202に格納されている、同じ探索ステップで導出された、近傍ブロックの動きベクトルである。一方、ステップS705において予測ベクトル生成部306に供給される動きベクトルは、記憶部Bに格納されている動きベクトルである。記憶部Bに格納されている動きベクトルは、1回目の探索ステップでは、初期動きベクトルである。記憶部Bに格納されている動きベクトルは、2回目以降の探索ステップでは、前回の探索ステップで導出された、近傍ブロックの動きベクトルである。前述のように、予測ベクトル生成部306に供給される動きベクトルは、RD最適化において予測ベクトルを導出するために使用される。
ステップS306の動作は、図3に示すステップS306の動作と同じである。ステップS707において、制御部300は、導出された動きベクトルを、動きベクトル記憶部203の記憶部Aに格納する。
ステップS301において、全MBに対する処理が完了したと判定された場合(ステップS301においてYes)、制御部300は、探索を終了するか否かを判定する(ステップS708)。制御部300は、十分な精度の動きベクトルを得られたか否かを所定の基準により判定した結果に基づいて、探索を終了するか否かを判定すればよい。すなわち、制御部300は、十分な精度の動きベクトルを得られたと判定した場合、探索を終了すればよい。制御部300は、例えば以下のように、導出される動きベクトルの、連続する探索ステップ間の差の大きさが、所定の基準を下回った場合に、十分な精度の動きベクトルを得られたと判定すればよい。
例えば、導出された動きベクトルが、前回の探索ステップで同じMBにおいて導出された動きベクトルに対して変化したMBの割合が所定の閾値を下回った場合に、制御部300は、探索を終了すると判定すればよい。あるいは、例えば、導出された動きベクトルの、前回の探索ステップで同じMBにおいて導出された動きベクトルに対する変化量の大きさの平均値が、所定の閾値を下回った場合に、制御部300は、探索を終了すると判定してもよい。あるいは、制御部300は、例えば、導出された動きベクトルの、前回の探索ステップで同じMBにおいて導出された動きベクトルに対する変化量の平均値の大きさを算出してもよい。制御部300は、算出された平均値の大きさの、前回の探索ステップにおいて導出された変化量の平均値の大きさに対する割合を算出してもよい。そして、制御部300は、算出された割合が所定の閾値以上である場合に、探索を終了すると判定してもよい。
以上で説明した判定によって探索が終了すると判定されない場合であっても、制御部300は、探索ステップの回数によって探索を打ち切ってもよい。例えば、制御部300は、探索ステップの回数が、あらかじめ定められた上限値に達した場合、探索を終了すると判定してもよい。
制御部300は、探索を終了する判定を行う判定方法や、その判定で使用される閾値を、符号化タイプや符号化パラメータによって切り替えてもよい。符号化タイプは、例えば、PピクチャかBピクチャか、あるいは、参照ピクチャか非参照ピクチャかを表す。符号化パラメータは、例えば、ビットレート、量子化ステップサイズなどである。
ステップS708において、探索終了条件が満たされず、制御部300が探索を終了しないと判定した場合(ステップS708においてNo)、動きベクトル探索装置10の動作は、ステップS700に戻る。
2回目以降の探索ステップでは、ステップS700において、制御部300は、記憶部Aと記憶部Bに割り当てられている記憶領域を入れ替える指示を、切り替え部307に送信する。切り替え部307は、受信した指示に基づき、記憶部Aと記憶部Bに割り当てられている記憶領域を入れ替える。すなわち、切り替え部307は、記憶部Aとしてアクセスされる記憶領域と、記憶部Bとしてアクセスされる記憶領域を入れ替える。このことにより、ある探索ステップにおいて導出された探索結果である動きベクトルが、次の探索ステップにおける予測ベクトルを算出する処理において読み出される。すなわち、ある探索ステップにおいて導出された探索結果である動きベクトルが、次の探索ステップにおける予測ベクトルを算出する処理において、予測ベクトル生成部306に供給される。
ステップS708において、探索終了条件が満たされ、制御部300が探索を終了すると判定した場合(ステップS708においてYes)、動きベクトル探索装置10は、入力画像記憶部200に符号化対象画像として格納されているフレームに対する動きベクトルの探索を終了する。
以上で説明した本実施形態には、動きベクトルの精度を低下させることなく、動きベクトル探索における並列処理の並列度を向上させることができるという効果がある。
その理由は、予測ベクトル生成部306が、ある探索ステップにおいて、同じ探索ステップにおいて導出された近傍ブロックの動きベクトルではなく、1回前の探索ステップで導出された近傍ブロックの動きベクトルを使用するからである。ある探索ステップにおいて、同じ探索ステップの近傍ブロックの動きベクトルが参照されることが無いため、フレーム内の全ブロックに対して独立に、動きベクトル探索の処理を行うことが可能である。すなわち、フレーム内の全ブロックに対する動きベクトル探索の処理を、並列に処理することができる。よって、フレーム内の全ブロックに対する動きベクトル探索の処理において、高い並列度を実現できる。例えばフルハイビジョン解像度(1920画素×1080画素)の画像を16画素×16画素のMB単位で処理する場合、非特許文献1で開示された技術に基づく動きベクトル探索では、フレーム内での並列度は最大でも60程度である。しかし、本実施形態では、全MBに対する処理を並列に行うことが可能である。従って、本実施形態では、並列度は最大で8160である。これにより、50コア以上を持つメニーコアアクセラレータや、数千以上のコアを持つメニーコアGPUを使用して、動きベクトルを探索する処理を行う場合に、多数のコアによって、並列度の高い並列に処理を行うことができる。本実施形態では、1フレームに対して複数回の探索ステップが行われることにより、処理量は増加する。しかし、多数のコアによって並列に処理を行うことによって並列処理の効率が向上するので、処理時間は短縮される。
また、本実施形態では、同じ探索ステップにおいて導出された近傍ブロックの動きベクトルを参照することが禁止される代わりに、1つ前の探索ステップにおいて導出された動きベクトルが参照される。そのため、RD最適化の効果が大きく低下することはないので、十分に高い精度の動きベクトルが得られる。従って、圧縮率の低下や画質の劣化を抑制することができる。さらに、本実施形態では、一つのフレームに対して探索ステップを反復することにより、導出される動きベクトルの精度の低下が軽減される。
<第2の実施形態>
次に、本発明の第2の実施の形態について、図面を参照して詳細に説明する。
図14は、本実施形態の動画像符号化装置1の構成の例を表すブロック図である。本実施形態の動画像符号化装置1の構成は、第1の実施形態の動画像符号化装置1の構成と同じである。
図6は、本実施形態の動きベクトル探索装置10の構成の例を表すブロック図である。本実施形態の動きベクトル探索装置10の構成は、第1の実施形態の動きベクトル探索装置10の構成と同じである。
次に、本実施形態の動きベクトル探索装置10の動作について、図面を参照して詳細に説明する。
図7は、本実施形態の動きベクトル探索装置10の動作の例を表すフローチャートである。本実施形態の動きベクトル探索装置10の動作は、以下で説明する相違を除き、第1の実施形態の動きベクトル探索装置10の動作と同じである。
図7に示すステップS304において、本実施形態の制御部300は、同じフレームに対して実行した探索ステップの回数に応じて、候補ベクトルを生成する探索範囲の大きさを、所定の方法に従って順次狭める。すなわち、制御部300は、同じフレームに対する探索ステップの回数の増加に応じて狭くなる探索範囲を設定する。そして、制御部300は、設定された探索範囲に基づき、候補ベクトルを生成する。
図15は、各探索ステップにおける探索範囲を模式的に表す図である。
制御部300は、最初の探索ステップにおいて、同じフレームに対して行われる探索ステップ中で最も広い探索範囲を設定すればよい。図15に示す例では、最初の探索ステップにおける探索範囲は、例えば、図15の上段に示すように、対象MBの位置に対して初期ベクトルが示す位置の、右128画素から左128画素まで、かつ、上128画素から下128画素までの範囲である。前述のように、初期ベクトルは、例えばゼロベクトルである。その場合、最初の探索ステップにおける探索範囲は、例えば、図15の上段に示すように、対象MBの位置の、右128画素から左128画素まで、かつ、上128画素から下128画素までの範囲である。画像の座標系が、例えば、右方向が+方向であるx軸と、下方向が+方向でありx軸と直交するy軸とによって表されているとする。そして、例えばx座標が対象MBのx座標よりp画素分小さい点からなる直線、x座標が対象MBのx座標よりq画素分大きい点からなる直線、及びそれらの直線に挟まれる領域を、対象MBの位置に対してx座標方向に−p画素から+q画素までの範囲と表記する。その場合、最初の探索ステップにおける探索範囲は、対象MBの位置に対して、縦方向(すなわちy軸方向)、横方向(すなわちx軸方向)とも、−128画素から+128画素までの範囲である。なお、画像座標系は上述の例に限らない。
制御部300は、2回目の探索ステップにおいて、最初の探索ステップにおいて設定された探索範囲より狭い探索範囲を設定すればよい。2回目の探索ステップにおける探索範囲は、例えば図15の中段に示す例では、対象MBの位置に対して1回目の探索ステップにおいて導出された動きベクトルが示す位置の、右16画素から左16画素まで、かつ、上16画素から下16画素までの範囲である。画像座標系が上述の座標系である場合、2回目の探索ステップにおける探索範囲は、対象MBの位置に対して1回目の探索ステップにおいて導出された動きベクトルが示す位置に対して、縦方向、横方向とも、−16画素から+16画素までの範囲である。
制御部300は、3回目の探索ステップにおいて、2回目の探索ステップにおいて設定された探索範囲より狭い探索範囲を設定すればよい。3回目の探索ステップにおける探索範囲は、例えば図15の下段に示す例では、対象MBの位置に対して2回目の探索ステップにおいて導出された動きベクトルが示す位置の、右4画素から左4画素まで、かつ、上4画素から下4が素までの範囲である。画像座標系が上述の座標系である場合、3回目の探索ステップにおける探索範囲は、対象MBの位置に対して2回目の探索ステップにおいて導出された動きベクトルが示す位置に対して、縦方向、横方向とも、−4画素から+4画素までの範囲である。探索範囲の大きさは、以上の例に限られない。
以上で説明した本実施形態には、第1の実施形態と同じ効果がある。
その理由は、第1の実施形態の効果の理由と同じである。
本実施形態には、さらに、動きベクトル処理全体の演算量の総和を削減できるという効果がある。
その理由は、制御部300が、同じフレームに対して行われた探索ステップの回数に応じて、順次狭くなる探索範囲を設定するからである。探索ステップの回数に応じて狭くなる探索範囲で探索が行われることにより、動きベクトル処理全体の演算量の総和を削減できる。したがって、さらに高速な処理が可能になる。
<第3の実施形態>
次に、本発明の第3の実施の形態について、図面を参照して説明する。
図16は、本実施形態の動画像符号化装置1Aの構成を表す図である。図16と図14とを比較すると、本実施形態の動画像符号化装置1Aと第1の実施形態の動画像符号化装置1の相違は、本実施形態の動画像符号化装置1Aは動きベクトル探索装置10ではなく動きベクトル探索装置10Aを含むことである。
図9は、本実施形態の動きベクトル探索装置10Aの構成の例を表すブロック図である。
図9と図6に示す第1の実施形態の動きベクトル探索装置10の構成とを比較すると、動きベクトル探索装置10Aは、ベクトルコスト計算部304の代わりに、ベクトルコスト計算部904を含む。さらに、動きベクトル探索装置10Aは、コスト計算部308の代わりに、コスト計算部908を含む。コスト計算部908は、差分画像コスト計算部301と、コスト算出部303と、ベクトルコスト計算部904とを含む。また、動きベクトル探索装置10Aは、予測ベクトル生成部306を含まない。動きベクトル探索装置10Aの他の構成要素は、同じ番号が付与された、動きベクトル探索装置10の構成要素と同じである。
ベクトルコスト計算部904は、関連ブロックの、前回の探索ステップにおいて導出された動きベクトルを、動きベクトル記憶部203Bから読み出す。そして、ベクトルコスト計算部904は、読み出された、関連ブロックの、前回の探索ステップにおいて導出された動きベクトルを使用して、ベクトルコストを計算する。
次に、本実施形態の動きベクトル探索装置10Aの動作について、図面を参照して詳細に説明する。
図7は、本実施形態の動きベクトル探索装置10Aの動作の例を表すフローチャートである。本実施形態の動きベクトル探索装置10Aの動作は、ステップS705におけるベクトルコストの計算方法を除き、第1の実施形態の動きベクトル探索装置10と同じである。
一般に、時間的または空間的に近いブロックにおける動きベクトルは、似ていることが多い。そのため、符号化対象ブロックにおける動きベクトルの導出に、その符号化対象ブロックと同一フレームの、その符号化対象ブロックの周囲に位置するブロックにおける動きベクトルが使用される。しかし、符号化対象ブロックの動きベクトルの導出に、同じフレームの隣接する他のブロックの動きベクトルを利用するためには、導出を行う際、導出に利用される動きベクトルが既に導出されている必要がある。そのため、例えば同一フレームに含まれる各ブロックからラスタースキャン順に順次符号化対象ブロックが選択され、選択された符号化対象ブロックにおける動きベクトルが導出される。そして、符号化対象ブロックにおいて動きベクトルが導出される際、ラスタースキャン順で符号化対象ブロックより前に位置するブロックの動きベクトルが使用される。
図2に示す動きベクトル探索部100も同様に、フレーム内の各ブロックにおける動きベクトルの導出を、ラスタースキャン順に、各フレームの各ブロックに対して1回だけ行う。具体的には、まず予測ベクトル生成部306が、符号化規格において定められている手順に基づき、符号化対象ブロックより左側と上側に位置する、同一フレームのブロックにおいて導出された動きベクトルを使用して、予測ベクトルを算出する。そして、ベクトルコスト計算部304ではその予測ベクトルと候補ベクトルとの関係をもとにベクトルコストを計算する。そして、コスト比較・ベクトル選択部305が、計算されたベクトルコストに基づき、候補ベクトルから動きベクトルを選択する。前述のように、図4や図5は、符号化対象ブロックにおける予測ベクトルの算出に動きベクトルが使用されるブロックを表す。
一方、符号化対象ブロックよりラスタースキャン順で後ろにあり、その符号化対象ブロックの右側や下側に位置する、同一フレームのブロックの動きベクトルは、その符号化対象ブロックにおける動きベクトル導出の際、導出されていない。従って、予測ベクトル生成部306は、符号化対象ブロックにおける動きベクトル導出の際、これらの動きベクトルを使用することはできない。
しかし、これらの、符号化対象ブロックの下側及び右側のブロックには、その符号化対象ブロックが影響を与えるブロックが存在する。すなわち、符号化対象ブロックの下側及び右側のブロックには、その符号化対象ブロックにおける動きベクトルを使用して予測ベクトルが算出されるブロックが存在する。以下の説明において、符号化対象ブロックにおける動きベクトルを使用して予測ベクトルが算出されるブロック及び符号化対象ブロックの予測ベクトルの算出に動きベクトルが使用されるブロックを、関連ブロックと表記する。また、符号化対象ブロックの予測ベクトルの算出に動きベクトルが使用されるブロックを、第1の関連ブロックと表記する。符号化対象ブロックにおける動きベクトルを使用して予測ベクトルが算出されるブロックを、第2の関連ブロックと表記する。
図10は、動きベクトルの導出において符号化対象ブロックと関連があるブロックの例を表す図である。H.264では、図10におけるブロックA、ブロックB、及びブロックCにおける動きベクトルが、符号化対象ブロックの予測ベクトルの算出に使用される。また、符号化対象ブロックの動きベクトルが、図10において右、左下、及び下で符号化対象ブロックに隣接するブロックの予測ベクトルの算出に使用される。
上述のRD最適化の際、右側及び下側のブロックの動きベクトルとの関係性も考慮して、左側と上側のブロックに加えて、これらの右側及び下側のブロックにおける動きベクトルも使用した方が効果的であると考えられる。しかし、上述のように、動きベクトル探索部100は、各フレームの各ブロックに対して、動きベクトルの探索を1回だけ行う。従って、動きベクトル探索部100は、動きベクトルを導出する順番が符号化対象ブロックより後であるブロックの、同一フレームにおける動きベクトルを使用することはできない。
本実施形態では、動きベクトル記憶部203Bに格納されている、上述の関連ブロックの前回の探索ステップにおける動きベクトルが、ベクトルコスト計算部904に供給される。すなわち、ベクトルコスト計算部904は、関連ブロックの、前回の探索ステップにおいて導出された動きベクトルを、動きベクトル記憶部203Bから読み出す。そして、ベクトルコスト計算部904は、読み出された、関連ブロックの、前回の探索ステップにおいて導出された動きベクトルを使用して、ベクトルコストを計算する。
H.264の場合、図10における、左、上、及び右上で符号化対象ブロックに隣接するブロックに加えて、右、左下、及び下で符号化対象ブロックに隣接するブロックが、前述の関連ブロックである。H.264の場合、符号化対象ブロックの動きベクトルは、右、左下、及び下で符号化対象ブロックに隣接するブロックの予測ベクトルに影響を及ぼす。左、上、及び右上で符号化対象ブロックに隣接するブロックの動きベクトルが、符号化対象ブロックの予測ベクトルに影響を及ぼす。左、上、及び右上で符号化対象ブロックに隣接するブロックは、それぞれ、ブロックA、ブロックB、及びブロックCである。H.264の場合、ベクトルコスト計算部904は、左、上、右上、右、左下、及び下で符号化対象ブロックに隣接するブロックの、前回の探索ステップにおける動きベクトルを、動きベクトル記憶部203Bから読み出す。そして、ベクトルコスト計算部904は、左、上、右上、右、左下、及び下で符号化対象ブロックに隣接するブロックの、前回の探索ステップにおける動きベクトルを使用して、ベクトルコストを計算する。
ベクトルコスト計算部904は、例えば、式1におけるRを、式2に基づき算出することによって、ベクトルコストを算出することができる。
R = 3/6 * Rc + 1/6 * Rr + 1/6 * Rll + 1/6 * Rl (式2)
ここで、Rc、Rr、Rll、Rl はそれぞれ符号化対象、右、左下、下のブロックの動きベクトルの符号化で発生する符号量である。また、「*」は掛け算を表す演算子である。ベクトルコスト計算部904は、他の方法によって、ベクトルコストを算出してもよい。
また、符号化対象ブロックが符号化方式に応じて定められた条件を満たした場合に、その符号化対象ブロックに対して、近傍ブロックの予測ベクトルの情報を再利用することなどにより大幅に符号量を削減する符号化モードが設定される場合がある。そのような符号化モードを、以下の説明では、省略符号化モードと表記する。そのような省略符号化モードは、例えば、H.264におけるスキップ(SKIP)モードや、H.265ではマージ(Merge)モードと呼ばれる符号化モードである。このような省略符号化モードが設定された符号化対象ブロックに対して、動画像符号化装置1Aは、動きベクトルの符号化を行わない。そして、符号化された動画像が復号化される際、省略符号化モードが設定されたブロックの動きベクトルは、例えば、他のブロックの動きベクトルに基づき推定される。本実施形態の説明において、省略符号化モードが設定されたブロックの動きベクトルの推定に、動きベクトルが利用されるブロックを、再利用ブロックと表記する。省略符号化モードが設定されたブロックに対する再利用ブロックの場所は、符号化方式に応じて定まる。
省略符号化モードが使用される場合、例えば、動画像符号化装置1Aの選択部104が、符号化方式に応じた所定の基準に基づき、ブロック毎に、そのブロックに省略符号化モードが設定されるか否かを決定すればよい。選択部104は、省略符号化モードが設定されているブロックを特定する情報を、動きベクトル探索装置10Aに送信すればよい。そして、制御部300が、省略符号化モードが設定されているブロックの、前述の再利用ブロックであるブロックを特定すればよい。制御部300は、特定された再利用ブロックの識別子を、例えば、動きベクトル記憶部203Aに格納すればよい。
レート歪みコストを算出する際、ベクトルコスト計算部904は、上述の省略符号化モードが設定されたいずれかのブロックにおいて利用される動きベクトルが優先的に選ばれるように、導出されるレート歪みコストを調整してもよい。例えば、ベクトルコスト計算部904は、上述の省略符号化モードが設定されたいずれかのブロックにおいて利用される動きベクトルと等しい候補ベクトルに対して算出されるレート歪みコストから、所定値を引いてもよい。ベクトルコスト計算部904は、例えば、符号化対象ブロックの候補ベクトルのうち、近傍ブロックのMergeモードベクトルに選択されている動きベクトルについては、Mergeモードとすることで削減される分の符号量をRから差し引いてもよい。
具体的には、ベクトルコスト計算部904は、符号化対象ブロックが再利用ブロックであるか否かを判定する。符号化対象ブロックの識別子が、再利用ブロックの識別子として、動きベクトル記憶部203Bに格納されている場合に、ベクトルコスト計算部904は、符号化対象ブロックが再利用ブロックであると判定すればよい。そうでない場合、ベクトルコスト計算部904は、符号化対象ブロックが再利用ブロックではないと判定すればよい。符号化対象ブロックが再利用ブロックであると判定された場合、ベクトルコスト計算部904は、動きベクトル記憶部203Bに格納されているその符号化対象ブロックの動きベクトルに等しい候補ベクトルのレート歪みコストを、上述のようにオフセットや符号量によって調整すればよい。
以上で説明した本実施形態には、第1の実施形態と同じ効果がある。その理由は、第1の実施形態の効果が生じる理由と同じである。
また、本実施形態の制御部300は、第2の実施形態の制御部300と同じ動作を行ってもよい。その場合、本実施形態には、さらに、第2の実施形態と同じ効果がある。その理由は、第2の実施形態の効果が生じる理由と同じである。
本実施形態には、さらに、圧縮効率が改善され、画質が向上するという効果がある。
その理由は、ベクトルコスト計算部904が、第1の関連ブロックの動きベクトルに加えて、第2の関連ブロックの動きベクトルを、ベクトルコストの計算に使用するからである。上述のように、第1の関連ブロックは、符号化対象ブロックの予測ベクトルの算出に動きベクトルが使用されるブロックである。第2の関連ブロックは、予測ベクトルの算出に符号化対象ベクトルの動きベクトルが使用されるブロックである。本実施形態では、第1、第2の実施形態と同様に、1フレーム当たり複数回の探索ステップが実行される。本実施形態のベクトルコスト計算部904が使用する動きベクトルは、同一フレームに対する複数の探索ステップのうち、前回の探索ステップにおいて導出された動きベクトルである。従って、同一フレームの隣接するブロックの動きベクトルを使用して動きベクトルの探索を1回だけ行う場合と異なり、本実施形態では、1回前の探索ステップにおいて導出された第2の関連ブロックの動きベクトルを使用することができる。そのため、本実施形態では、例えば、符号化対象ブロックの右側、下側のブロック等の、第2の関連ブロックの動きベクトルとの関係性も考慮したRD最適化が可能である。それにより、導出された動きベクトルが使用して行う動画像符号化において、圧縮効率が改善される。また、周囲のブロックの動きベクトルと不連続な動きベクトルを含む、不自然な動きベクトル場は、ノイズ発生の原因となる。ノイズが発生すると、符号化された動画像の画質は低下する。本実施形態にでは、符号化対象ブロックにおいて、周囲のブロックの動きベクトルと不連続な動きベクトルが導出される可能性が低減される。そのため、不自然な動きベクトル場によるノイズ発生が抑えられるので、符号化された動画像の画質が向上する。
<第4の実施形態>
次に、本発明の第4の実施形態について、図面を参照して詳細に説明する。
図17は、本実施形態の動画像符号化装置1Bの構成の例を表すブロック図である。図17と図16とを比較すると、本実施形態の動画像符号化装置1Bと第2の実施形態の動画像符号化装置1Aの相違は、本実施形態の動画像符号化装置1Bは動きベクトル探索装置10Aではなく動きベクトル探索装置10Bを含むことである。
図11は、本実施形態の動きベクトル探索装置10Bの構成の例を表すブロック図である。図11と図9に示す第2の実施形態の動きベクトル探索装置10Aの構成とを比較すると、動きベクトル探索装置10Bは、さらに、ベクトル変換部1108を含む。また、動きベクトル探索装置10Bは、さらに、入力画像変換部1109と、変換入力画像記憶部1110と、変換参照画像記憶部1111と、参照画像変換部1112とを含む。動きベクトル探索装置10Bの他の構成要素は、同じ番号が付与された、第2の実施形態の動きベクトル探索装置10Aの構成要素と同じである。
入力画像変換部1109は、入力画像記憶部200に格納されている入力画像を読み出す。そして、入力画像変換部1109は、読み出された入力画像に対して、探索ステップの回数に応じた、所定の変換を行う。入力画像変換部1109は、変換が行われた入力画像を、変換入力画像記憶部1110に格納する。
変換入力画像記憶部1110は、変換が行われた入力画像を記憶する。
差分画像コスト計算部301は、変換が行われた入力画像を、変換入力画像記憶部1110から読み出す。差分画像コスト計算部301は、予測画像生成部302から供給される予測画像と、変換入力画像記憶部1110から供給される、変換が行われた入力画像との差分画像を計算する。
参照画像変換部1112は、参照画像記憶部201に格納されている参照画像を読み出す。そして、参照画像変換部1112は、読み出された参照画像に対して、探索ステップの回数に応じた、所定の変換を行う。参照画像変換部1112は、変換が行われた参照画像を、変換参照画像記憶部1111に格納する。
変換参照画像記憶部1111は、変換が行われた参照画像を記憶する。
予測画像生成部302は、変換参照画像記憶部1111から、変換された参照画像を読み出す。予測画像生成部302は、制御部300から供給される候補ベクトルに基づき、変換参照画像記憶部1111に格納されている変換された参照画像を用いて動き補償処理を行うことによって、予測画像を生成する。
入力画像変換部1109及び参照画像変換部1112は、同じ探索ステップでは同じ変換を行う。入力画像変換部1109及び参照画像変換部1112は、前述の所定の変換として、例えば、探索ステップの回数に応じた縮小率で、画像を縮小する変換を行う。画像を縮小する方法は、既存のさまざまな方法のいずれかでよい。
ベクトル変換部1108は、動きベクトル記憶部203Bに格納されている動きベクトルを、現探索ステップにおける変換入力画像及び変換参照画像の縮小率に応じて変換する。ベクトル変換部1108は、まず、動きベクトル記憶部203Bに格納されている動きベクトルを読み出す。現探索ステップにおける縮小率が、読み出された動きベクトルが導出された、前回の探索ステップにおける縮小率と異なる場合、ベクトル変換部1108は、現探索ステップにおける縮小率に合うように、読み出された動きベクトルを変換する。例えば、現探索ステップにおける縮小率が1であり、前回の探索ステップにおける縮小率が1/2である場合、ベクトル変換部1108は、読み出された動きベクトルに対して、2倍に拡大する変換を行う。そして、ベクトル変換部1108は、変換された動きベクトルを、ベクトルコスト計算部904に供給する。
制御部300は、予測画像生成部302及びベクトルコスト計算部904に対して、現探索ステップにおける縮小率に応じた大きさの候補ベクトルを供給する。
次に、本実施形態の動きベクトル探索装置10Bの動作について、図面を参照して詳細に説明する。
図12は、本実施形態の動きベクトル探索装置10Bの動作の例を表すフローチャートである。図12と図7とを比較すると、本実施形態の動きベクトル探索装置10Bは、ステップS700の次に、ステップS1209の動作を行う。
ステップS1209において、入力画像変換部1109は、入力画像記憶部200から読み出した入力画像に対して、探索ステップの回数に応じた所定の変換を行う。そして、入力画像変換部1109は、変換が行われた入力画像を、変換入力画像記憶部1110に格納する。また、参照画像変換部1112は、参照画像記憶部201から読み出した参照画像に対して、探索ステップの回数に応じた所定の変換を行う。そして、参照画像変換部1112は、変換が行われた参照画像を、変換参照画像記憶部1111に格納する。前述のように、所定の変換は、例えば、画像の縮小である。
また、ステップS304において、制御部300は、現探索ステップにおける変換に応じて、候補ベクトルが生成される探索範囲を設定してもよい。例えば、変換が最初の探索ステップにおける変換が、縮小率1/2の縮小である場合、制御部300は、探索範囲を、変換を行わない場合に設定される探索範囲を縦横1/2に縮小した範囲に設定すればよい。
さらに、ステップS705において、ベクトル変換部1108は、動きベクトル記憶部203Bから動きベクトルを読み出す。動きベクトル記憶部203Bから読み出された動きベクトルに対して、現探索ステップと前回の探索ステップの変換の違いに基づく動きベクトルの差異を解消する変換を行う。前述のように、例えば、前回の探索ステップにおける変換が縮小率1/2の縮小であり、現探索ステップでは変換が行われない場合、ベクトル変換部1108は、読み出された動きベクトルを2倍に拡大する。ベクトル変換部1108は、変換後の動きベクトルを、ベクトルコスト計算部904に送信する。
最初の探索ステップにおける変換は、例えば、縮小率1/2での縮小であってもよい。その場合、2回目以降の探索ステップにおける縮小率、例えば、1であってもよい。この場合、2回目以降の探索ステップにおいて変換は行われない。
入力画像変換部1109及び参照画像変換部1112による変換は、以上の例に限られない。
例えば、1回目の探索ステップにおける縮小率は1/4であり、2回目の探索ステップにおける縮小率は1/2であり、3回目以降の探索ステップにおける縮小率は1であってもよい。あるいは、1回目の探索ステップにおける縮小率は1/4であり、2回目の探索ステップにおける縮小率は1/2であり、3回目の探索ステップにおける縮小率は縦方向において1であり、横方向において1/2であり、4回目以降の探索ステップにおける縮小率は1であってもよい。
図13は、本実施形態における、変換後の入力画像と、探索の処理で使用される変換後の動きベクトルとを、模式的に表す図である。図13の上段は、1回目の探索ステップにおける変換後の入力画像と、動きベクトルの初期値とを表す。1回目の探索ステップにおける変換後の入力画像は、2回目以降の探索ステップのおける変換後の入力画像より、小さく縮小されている。また、1回目の探索ステップにおける動きベクトルの初期値は、ゼロベクトルである。図13の中段は、2回目の探索ステップにおける変換後の入力画像と、1回目の探索ステップにおいて得られた動きベクトルが、2回目の探索ステップにおける変換に合わせて拡大されたベクトルとを表す。図13の下段は、3回目の探索ステップにおける変換後の入力画像と、2回目の探索ステップにおいて得られた動きベクトルが、3回目の探索ステップにおける変換に合わせて拡大されたベクトルとを表す。
前述の所定の変換は、画像の縮小ではなく、各画素の画素値を表すビット列のビット数を削減することであってもよい。画素値を表すビット列のビット数を削減する変換は、例えば、画素値を表すビット列から、所定個数の下位ビットを除去する演算によって行われる。例えば、8ビットのビット列によって表される画素値のビット数を1ビット削減する場合、入力画像変換部1109及び参照画像変換部1112は、画素値を表すビット列から最下位ビットを除去すればよい。そして、入力画像変換部1109及び参照画像変換部1112は、最下位ビットが除去された7ビットのビット列を、変換後の画素値にすればよい。例えば、1回目の探索ステップにおける変換は、各画素の画素値を表すビット列のビット数を2ビット削減することであり、2回目の探索ステップにおける変換は、各画素の画素値を表すビット列のビット数を1ビット削減することであってもよい。この場合、例えば、3回目以降の探索ステップにおいて、各画素の画素値を表すビット列のビット数を変更しない。変換が、例えば画素値を表すビット列のビット数の変更する変換である場合のように、画像のサイズが変化しない変換である場合、動きベクトル探索装置10Bは、ベクトル変換部1108を含まなくてよい。
さらに、前述の所定の変換は、画像の画素間に、補間により算出される画素値を持つ画素を追加することであってもよい。その場合、画像の画素と画素の間に追加される画素の数は、探索ステップに応じて変更されればよい。
以上で説明した本実施形態には、第1、第2、及び第3の実施形態のそれぞれと同じ効果がある。その理由は、第1、第2、及び第3の実施形態の効果が生じる理由と同じである。
本実施形態には、さらに、動きベクトルを探索する処理全体の演算量をさらに削減することができるという効果がある。
その理由は、入力画像変換部1109が、入力画像に対して、探索ステップの回数に応じた変換を行い、加えて、参照画像変換部1112が、参照画像に対して、探索ステップの回数に応じた、入力画像変換部1109が行う変換と同じ変換を行うからである。本実施形態では、広い探索領域で探索が行われる最初の探索ステップでは、高い縮小比で入力画像を縮小してから、縮小比に応じた広さの探索範囲において探索の処理を行うことができる。このことにより、変換を行うことによる演算量の増加量より多くの演算量を削減することができる。
また、本実施形態では、最初の探索ステップなど、予測ベクトルの精度が低い探索では高い縮小比で粗い探索を行い、予測ベクトルの精度が高くなる後段の探索ステップでは低い縮小比で精密な探索を行うことができる。そのため、本実施形態の動きベクトル探索装置10Bは、より滑らかな動きベクトル場を生成することができる。このことにより、動きベクトル探索装置10Bが導出した動きベクトルを利用して符号化された動画像の画質が向上する。
<第5の実施形態>
次に、本発明の第5の実施形態について、図面を参照して詳細に説明する。
図18は、本実施形態の動きベクトル探索装置10Cの構成を表す図である。
図18を参照すると、本実施形態の動きベクトル探索装置10Cは、制御部300と、動きベクトル記憶部203と、コスト計算部308と、コスト比較・ベクトル選択部305と、を備える。制御部300は、所定の探索範囲に基づき複数の候補ベクトルを生成する。動きベクトル記憶部203は、入力画像が分割された複数のブロックの各々に対して、当該ブロックに関連する、参照画像の領域の位置から、前記ブロックの位置までのベクトルである動きベクトルとして選択された第1の動きベクトルを記憶する。コスト計算部308は、近傍ブロックの各々に対する前記第1の動きベクトルと、生成された前記候補ベクトルと、前記入力画像と、前記参照画像とに基づき、前記候補ベクトルの評価を表す評価値を算出する。近傍ブロックは、前記入力画像に含まれる対象ブロックの周囲に位置する複数のブロックである。コスト比較・ベクトル選択部305は、前記複数の候補ベクトルから、前記評価値による評価において評価が高い最適な前記候補ベクトルを、前記対象ブロックの第2の動きベクトルとして選択する。
以上で説明した本実施形態には、第1の実施形態と同じ効果がある。その理由は、第1の実施形態の効果が生じる理由と同じである。
以上、主に、符号化方式がH.264あるいはH.265である場合の、本発明の各実施形態について説明した。しかし、本発明は、H.264あるいはH.265の符号化方式での応用のみに限定されない。本発明は、VC−1等の他の符号化方式や、あるいは国際標準の動画像符号化方式等に含まれない符号化方式にも適用可能である。また、差分画像コストやベクトルコストの算出手順、候補ベクトル生成手順、画像変換方法などについて、一部の例のみを説明した。しかし、例示した以外の種々の手順を使用することも容易である。
以下に示す、本発明の実施形態に係る装置の各々は、それぞれ、コンピュータ及びコンピュータを制御するプログラム、専用のハードウェア、又は、コンピュータ及びコンピュータを制御するプログラムと専用のハードウェアの組合せにより実現することができる。上述の本発明の実施形態に係る装置は、動きベクトル探索装置10、動きベクトル探索装置10A、動きベクトル探索装置10B、動きベクトル探索装置10C、動画像符号化装置1、動画像符号化装置1A、動画像符号化装置1B及び動画像符号化装置1Cである。
図19は、本発明の各実施形態の動きベクトル探索装置及び本発明の各実施形態の動画像符号化装置を実現することができる、コンピュータ1000の構成の一例を表す図である。図19を参照すると、コンピュータ1000は、プロセッサ1001と、メモリ1002と、記憶装置1003と、I/O(Input/Output)インタフェース1004とを含む。また、コンピュータ1000は、記録媒体1005にアクセスすることができる。メモリ1002と記憶装置1003は、例えば、RAM(Random Access Memory)、ハードディスクなどの記憶装置である。記録媒体1005は、例えば、RAM、ハードディスクなどの記憶装置、ROM(Read Only Memory)、可搬記録媒体である。記憶装置1003が記録媒体1005であってもよい。プロセッサ1001は、メモリ1002と、記憶装置1003に対して、データやプログラムの読み出しと書き込みを行うことができる。プロセッサ1001は、I/Oインタフェース1004を介して、例えば、動画像符号化装置、動きベクトル探索装置、動画像を送信する装置、あるいは、符号化された動画像を受信する装置にアクセスすることができる。プロセッサ1001は、記録媒体1005にアクセスすることができる。記録媒体1005には、コンピュータ1000を、上述の、本発明の実施形態に係る装置のいずれかとして動作させるプログラムが格納されている。
プロセッサ1001は、記録媒体1005に格納されている上述のプログラムを、メモリ1002にロードする。そして、プロセッサ1001が、メモリ1002にロードされたプログラムを実行することにより、コンピュータ1000は、そのプログラムに応じた、上述の本発明の実施形態に係る装置のいずれかとして動作する。
以下に示す第1グループに含まれる部は、例えば、プログラムを記憶する記録媒体1005からメモリ1002に読み込まれた、その部の機能を実現するための専用のプログラムと、そのプログラムを実行するプロセッサ1001により実現することができる。第1グループは、次に示す各部を含む。
動きベクトル探索部100、
動き補償部101、
イントラ予測モード判定部102、
イントラ予測部103、
選択部104、
整数変換部105、
量子化部106、
逆量子化部107、
逆整数変換部108、
可変長符号化部109、
デブロックフィルタ110、
減算部112、
加算部113、
制御部300、
差分画像コスト計算部301、
予測画像生成部302、
コスト算出部303、
ベクトルコスト計算部304、
ベクトルコスト計算部904、
コスト比較・ベクトル選択部305、
予測ベクトル生成部306、
切り替え部307、
ベクトル変換部1108、
入力画像変換部1109、
参照画像変換部1112。
また、以下に示す第2グループに含まれる部は、コンピュータ1000が含むメモリ1002やハードディスク装置等の記憶装置1003により実現することができる。第2のグループは、次に示す各部を含む。
フレームバッファ111、
入力画像記憶部200、
参照画像記憶部201、
動きベクトル記憶部203、
動きベクトル記憶部203A、
動きベクトル記憶部203B、
変換入力画像記憶部1110、
変換参照画像記憶部1111。
あるいは、上述の第1グループ及び第2グループに含まれる部の一部又は全部を、それらの部の機能を実現する専用の回路によって実現することもできる。
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は、2014年1月15日に出願された日本出願特願2014−004777を基礎とする優先権を主張し、その開示の全てをここに取り込む。