本発明の実施形態について、図面を参照して詳細に説明する。
実施形態の動画像符号化装置は、符号化の対象フレームの対象ピクチャと探索パラメータと探索中心とに基づいて、対象フレーム内の対象ブロックの動きベクトルを検出する。ここで、動きベクトルは、x方向(水平方向)及びy方向(垂直方向)に成分を持つ2次元ベクトルによって表される。
実施形態の動画像符号化装置は、検出済み動きベクトルに基づいて、探索パラメータを決定する。ここで、検出済み動きベクトルとは、対象フレーム内の対象ブロックの動きベクトルが検出されるよりも前の算出された動きベクトルである。検出済み動きベクトルとは、対象フレームとは異なるフレームのうち、動きベクトルが検出済みであるフレームのブロックの動きベクトルでもよい。探索パラメータとは、探索範囲の形状(以下、「探索パターン」という。)を表すパラメータである。探索パラメータは、例えば、x方向に関する長さ(値)とy方向に関する長さ(値)とを用いて表現される。探索範囲は、1個以上の探索点を含む。実施形態の動画像符号化装置は、検出済み動きベクトルに基づいて探索中心を決定する。
実施形態の動画像符号化装置は、検出済み動きベクトルの統計値に基づいて、探索パラメータを適応的に変更する。すなわち、実施形態の動画像符号化装置は、動きベクトルのx成分(水平成分)及びy成分(垂直成分)に基づいて、探索範囲のx方向及びy方向の長さを変更する。これによって、実施形態の動画像符号化装置は、動き探索の演算量の増加を抑えても動きベクトルを効率的に算出することが可能となる。
実施形態の動画像符号化装置は、検出済み動きベクトルの統計値により定まる角度に基づいて、探索パターンを決定してもよい。実施形態の動画像符号化装置は、対象フレーム内の対象ブロックを参照する動きベクトルに基づいて、探索パターンを決定する。これによって、実施形態の動画像符号化装置は、最適な動きベクトルが存在する確率の高い探索範囲を定めて、動きベクトルを効率的に探索することができる。
以下、動画像符号化装置が準拠する標準規格は、特定の標準規格に限定されない。以下、一例として、H.265/HEVCに準拠する動画像符号化装置について説明する。
(第1実施形態)
図1は、動画像符号化装置1の構成の例を示す図である。動画像符号化装置1は、パーソナルコンピュータ装置、タブレット端末、スマートフォン端末、サーバ装置などの情報処理端末である。動画像符号化装置1は、符号化の対象となる動画像を取得する。動画像符号化装置1は、符号化の対象フレームの対象ピクチャを、符号化の対象ブロックごとに取得する。対象ピクチャとは、符号化の対象フレームの対象ブロックにおける画像情報である。画像情報は、例えば、画像特徴量を表す情報である。動画像符号化装置1は、ラスタスキャン順に対象ブロックを符号化する。動画像符号化装置1は、対象ブロックが符号化された結果を表す符号化データを送信する。
動画像符号化装置1は、減算器10と、直交変換・量子化部11と、可変長符号化部12と、逆量子化・逆直交変換部13と、加算器14と、ループフィルタ15と、復号ピクチャメモリ16と、イントラ予測部17と、インタ予測部18と、スイッチ19と、動きベクトル算出部20aと、動きベクトルメモリ21とを備える。
減算器10と直交変換・量子化部11と可変長符号化部12と逆量子化・逆直交変換部13と加算器14とループフィルタ15とイントラ予測部17とインタ予測部18とスイッチ19と動きベクトル算出部20aとのうち一部又は全部は、例えば、CPU(Central Processing Unit)等のプロセッサが、メモリに記憶されたプログラムを実行することにより機能するソフトウェア機能部である。また、これらの機能部のうち一部又は全部は、LSI(Large Scale Integration)やASIC(Application Specific Integrated Circuit)等のハードウェア機能部であってもよい。
復号ピクチャメモリ16及び動きベクトルメモリ21は、磁気ハードディスク装置や半導体記憶装置等の不揮発性の記憶媒体(非一時的な記録媒体)を有する記憶装置を用いて構成される。復号ピクチャメモリ16及び動きベクトルメモリ21は、例えば、RAM(Random Access Memory)やレジスタなどの揮発性の記憶媒体を有していてもよい。
減算器10は、対象ブロックを取得する。減算器10は、スイッチ19を介して、予測画像をイントラ予測部17又はインタ予測部18から取得する。減算器10は、対象ブロックと予測画像との差である差分画像を、直交変換・量子化部11に送信する。
直交変換・量子化部11は、直交変換処理及び量子化処理を差分画像に施す。直交変換・量子化部11は、直交変換処理及び量子化処理が施された差分画像を、可変長符号化部12及び逆量子化・逆直交変換部13に送信する。
可変長符号化部12は、直交変換・量子化部11から送信された量子化係数に、可変長符号化処理を施す。可変長符号化部12は、符号化処理の結果を表す符号化データを、動画像符号化装置1の外部に送信する。
逆量子化・逆直交変換部13は、直交変換・量子化部11から送信された量子化係数に、逆量子化処理及び逆直交変換処理を施す。逆量子化・逆直交変換部13は、逆量子化処理及び逆直交変換処理の結果を表す画像を、加算器14に送信する。
加算器14は、逆量子化処理及び逆直交変換処理の結果を表す画像を、逆量子化・逆直交変換部13から取得する。加算器14は、予測画像を減算器10から取得する。加算器14は、逆量子化・逆直交変換部13から送信された画像と予測画像との和を、イントラ予測部17及びループフィルタ15に送信する。
ループフィルタ15は、加算器14を介して、予測画像をイントラ予測部17又はインタ予測部18から取得する。ループフィルタ15は、逆量子化・逆直交変換部13から送信された画像と予測画像との和に、ループフィルタを適用する。ループフィルタ15は、ループフィルタを適用した結果を表す画像(復号ピクチャ)を、復号ピクチャメモリ16に記録する。
復号ピクチャメモリ16は、ループフィルタを適用した結果を表す画像を記憶する。ループフィルタを適用した結果を表す画像は、インタ予測部18が対象ブロックのインタ予測処理を実行する場合、参照フレームとしてインタ予測部18に利用される。
イントラ予測部17(フレーム内予測部)は、加算器14を介して、逆量子化処理及び逆直交変換処理の結果を表す画像を逆量子化・逆直交変換部13から取得する。イントラ予測部17は、イントラ予測部17が送信した予測画像を、加算器14を介して取得する。すなわち、イントラ予測部17は、逆量子化・逆直交変換部13から送信された画像とイントラ予測部17が送信した予測画像との和を、加算器14を介して取得する。
イントラ予測部17は、インタ予測部18が送信した予測画像を、加算器14を介して取得してもよい。すなわち、イントラ予測部17は、逆量子化・逆直交変換部13から送信された画像とインタ予測部18が送信した予測画像との和を、加算器14を介して取得してもよい。イントラ予測部17は、参照フレームに基づいて、対象ブロックのイントラ予測画像(フレーム内予測画像)を生成する。
インタ予測部18(フレーム間予測部)は、ループフィルタを適用した結果を表す画像である参照フレームを、復号ピクチャメモリ16から取得する。インタ予測部18は、動きベクトルを動きベクトルメモリ21から取得する。インタ予測部18は、参照フレーム及び動きベクトルに基づいて、対象ブロックのインタ予測画像(フレーム間予測画像)を生成する。
スイッチ19は、対象ブロックに定められた予測モードに応じて、イントラ予測部17又はインタ予測部18から予測画像を取得する。スイッチ19は、取得した予測画像を減算器10及び加算器14に送信する。
動きベクトル算出部20a(動きベクトル検出装置)は、符号化の対象ブロックを取得する。動きベクトル算出部20aは、参照フレームを復号ピクチャメモリ16から取得する。動きベクトル算出部20aは、検出済み動きベクトルを動きベクトルメモリ21から取得する。動きベクトル算出部20aは、対象ブロックと参照フレームと検出済み動きベクトルとに基づいて、対象ブロックの動きベクトルを算出する。動きベクトル算出部20aは、対象ブロックの動きベクトルを、動きベクトルメモリ21に記録する。
動きベクトルメモリ21は、対象ブロックの動きベクトルを記憶する。動きベクトルメモリ21は、アクセスに応じて、対象ブロックの動きベクトルを動きベクトル算出部20に送信する。動きベクトルメモリ21は、アクセスに応じて、対象ブロックの動きベクトルをインタ予測部18に送信する。
図2は、動きベクトル算出部20aの構成の例を示す図である。動きベクトル算出部20aは、探索パラメータ算出部200と、探索中心算出部201と、動き探索部202とを備える。探索パラメータ算出部200は、検出済み動きベクトルに基づいて、探索パラメータを決定する。探索中心算出部201は、検出済み動きベクトルに基づいて、探索中心を決定する。
動き探索部202は、対象フレームの対象ピクチャを取得する。動き探索部202は、参照フレームを復号ピクチャメモリ16から取得する。動き探索部202は、探索パラメータを探索パラメータ算出部200から取得する。動き探索部202は、探索中心を探索中心算出部201から取得する。動き探索部202は、対象ピクチャと参照ピクチャと探索パラメータと探索中心とに基づいて、動き探索処理を実行する。動き探索部202は、対象ブロックの動きベクトルを、動き探索処理によって検出する。
図3は、探索範囲の例を示す図である。探索中心300は、探索範囲の中心である。図3では、探索パターンは長方形である。探索範囲のx成分は、一例として9である。すなわち、探索範囲のx方向の探索点301の数は、一例として9である。探索範囲のy成分は、一例として7である。すなわち、探索範囲のy方向の探索点301の数は、一例として7である。
図4は、楕円型探索パターンの例を示す図である。図4では、探索中心300は、楕円型探索パターン(楕円型探索領域)の中心である。
図5は、ドーナツ型探索パターンの例を示す図である。図5では、探索中心300は、ドーナツ型探索パターン(単一の空き領域がある探索領域)の中心である。ドーナツ型探索パターンでは、探索点が連続している。
図6は、ランダム型探索パターンの例を示す図である。探索点は、連続して配置されなくてもよい。例えば、探索点はランダムに配置されてもよい。例えば、探索パターンは、上下対称でなくてもよい。例えば、探索パターンは、左右対称でなくてもよい。
図7は、動きベクトル算出部20aの動作の例を示すフローチャートである。探索パラメータ算出部200(範囲決定部)は、検出済みの動きベクトルに基づいて、探索パラメータを決定する(ステップS101)。
探索中心算出部201は、検出済みの動きベクトルに基づいて、探索中心を決定する。例えば、探索中心算出部201は、対象フレームの対象ブロックと参照フレームの参照ブロックとの差が最小となる検出済み動きベクトルが示す点を、探索中心と決定する。対象ブロックと参照ブロックの差は、例えば、差分の絶対値の和で表現される。対象ブロックと参照ブロックの差は、動きベクトルの符号量が考慮された差分の絶対値の和で表現される。探索中心算出部201は、検出済み動きベクトルがない場合、x成分及びy成分が0であるゼロベクトルが示す点を、探索中心としてもよい(ステップS102)。
動き探索部202は、探索パラメータ及び探索中心に基づいて、対象ブロックについて動き探索処理を実行する。具体的には、動き探索部202は、参照フレームにおける探索範囲の探索中心について、対象ブロックと参照ブロックとの差を算出する。動き探索部202は、探索中心以外の各探索点についても、対象ブロックと参照ブロックとの差(差分情報)を算出する。対象ブロックと参照ブロックとの差とは、例えば、対象ブロックの画像特徴量と参照ブロックの画像特徴量との差である。動き探索部202は、対象ブロックと参照ブロックとの差が最小となる探索点を示す動きベクトルを検出する。
図8は、探索パラメータを決定するための動作の例を示すフローチャートである。探索パラメータ算出部200は、検出済み動きベクトルが存在するか否かを判定する(ステップS201)。探索パラメータ算出部200は、検出済み動きベクトルが存在しない場合(ステップS201:NO)、デフォルト値の探索パラメータに基づいて探索パターンを定める(ステップS202)。探索パラメータ算出部200は、検出済み動きベクトルが存在する場合(ステップS201:YES)、参照距離に応じて、検出済み動きベクトルのスケーリングを実行する。すなわち、探索パラメータ算出部200は、参照距離に応じて、検出済み動きベクトルの長さを圧縮又は伸張する(ステップS203)。
図9は、検出済み動きベクトルのスケーリングの例を示す図である。参照フレーム420は、動きベクトル検出済みフレーム430の参照フレームである。動きベクトル検出済みフレーム430は、検出済み動きベクトル431を持つ。スケーリングされた検出済み動きベクトルは、式(1)によって表される。
mv_scale=mv×(d1/d2) …(1)
mv_scaleは、スケーリングされた検出済み動きベクトルを示す。すなわち、mv_scaleは、拡大又は縮小された検出済み動きベクトルを示す。mvは、検出済み動きベクトルを示す。d1は、対象フレーム400と参照フレーム410のフレーム間距離を示す。d2は、参照フレーム420と動きベクトル検出済みフレーム430とのフレーム間距離を示す。
図8に示すように、探索パラメータ算出部200は、スケーリングされた検出済み動きベクトルのx成分の統計値を算出する(ステップS204)。探索パラメータ算出部200は、スケーリングされた検出済み動きベクトルのy成分の統計値を算出する。動きベクトルの統計値は、例えば、最大値、最小値、平均値、合計値、中央値、分散値、最頻値である。動きベクトルの統計値は、例えば、最大値と最小値と平均値と合計値と中央値と分散値と最頻値との重みづけ和でもよい(ステップS205)。
探索パラメータ算出部200は、スケーリングされた検出済み動きベクトルのx成分の統計値を、探索範囲のx成分と定める(ステップS206)。探索パラメータ算出部200は、スケーリングされた検出済み動きベクトルのy成分の統計値を、探索範囲のy成分と定める。
探索パラメータ算出部200は、探索パラメータに基づいて探索パターンを定める(ステップS208)。
(探索パターン決定の第1例)
図10は、x成分の統計値とy成分の統計値を成分に持つベクトルの方向の例を示す図である。探索パターン決定の第1例では、探索パラメータ算出部200は、スケーリングされた検出済み動きベクトルのx成分の統計値とスケーリングされた検出済み動きベクトルのy成分の統計値とが成す角度θに基づいて、探索パターンを定める。すなわち、探索パラメータ算出部200は、x成分の統計値とy成分の統計値とを成分に持つベクトルの方向に基づいて、探索パターンを定める。例えば、探索パラメータ算出部200は、x成分の統計値とy成分の統計値との比に応じて探索範囲の長さを決定する。角度θは、式(2)によって表される。
θ=arctan(y成分の統計値/x成分の統計値) …(2)
角度θは、x成分の統計値とy成分の統計値との比に応じた値である。角度θは、x成分又はy成分のどちらの割合が高いかを示している。探索パラメータ算出部200は、例えば、(−π/4≦θ<π/4)が成立する場合、すなわち、x成分の割合がy成分よりも高い場合、x方向を重視した探索パターンを選択する。探索パラメータ算出部200は、例えば、(−π/4≦θ<π/4)が成立しない場合、すなわち、y成分の割合がx成分よりも高い場合、y方向を重視した探索パターンを選択する。
図11は、第1の探索パターンの例を示す図である。探索パラメータ算出部200は、(−π/2≦θ<3π/8)が成立する場合、探索パターンとして第1の探索パターンを選択する。
図12は、第2の探索パターンの例を示す図である。探索パラメータ算出部200は、(−3π/8≦θ<−π/8)が成立する場合、探索パターンとして第2の探索パターンを選択する。
図13は、第3の探索パターンの例を示す図である。探索パラメータ算出部200は、(−π/8≦θ<π/8)が成立する場合、探索パターンとして第3の探索パターンを選択する。
図14は、第4の探索パターンの例を示す図である。探索パラメータ算出部200は、(π/8≦θ<3π/8)が成立する場合、探索パターンとして第4の探索パターンを選択する。
(探索パターン決定の第2例)
探索パターン決定の第2例では、探索パラメータ算出部200は、検出済み動きベクトルの分散値(探索パラメータ)に基づいて、探索パターンを定める。探索パラメータ算出部200は、検出済み動きベクトルの分散値を算出する。検出済み動きベクトルの分散値が閾値以上である場合、動画像のシーケンスでは、フレームにおける物体の画像の動きには法則性が無いと考えられる。探索パラメータ算出部200は、検出済み動きベクトルの分散値が閾値以上である場合、一部の探索点が省略された探索パターンを選択する。一部の探索点が省略された探索パターンとは、例えば、図5に示すドーナツ型探索パターンである。図2に示す動き探索部202は、一部の探索点が省略された探索パターンを用いて動きベクトルを離散的に探索する。これによって、動き探索部202は、動き探索の演算量の増加を抑えても動きベクトルを効率的に算出することが可能となる。
(探索パターン決定の第3例)
図15は、探索パターンを決定するための方法の例を示す図である。探索パターン決定の第3例では、探索パラメータ算出部200は、参照フレームを参照する検出済み動きベクトルと対象ブロックを参照する検出済み動きベクトルとに基づいて、探索パターンを定める。
第1の検出済み動きベクトル432は、動きベクトル検出済みフレーム430において、対象フレーム400の対象ブロック401の参照フレーム410を参照する動きベクトルである。参照フレーム410には、探索範囲411が定められている。第2の検出済み動きベクトル433は、動きベクトル検出済みフレーム430において、対象フレーム400の対象ブロック401を参照する動きベクトルである。
第1の検出済み動きベクトル432は、式(3)によって表される。第2の検出済み動きベクトル433は、式(4)によって表される。
mv1=(mv1x, mv1y) …(3)
mv2=(mv2x, mv2y) …(4)
mv1xは、第1の検出済み動きベクトルのx成分である。mv1yは、第1の検出済み動きベクトルのy成分である。mv2xは、第2の検出済み動きベクトルのx成分である。mv2yは、第2の検出済み動きベクトルのy成分である。
探索パラメータ算出部200は、第1の検出済み動きベクトルと第2の検出済み動きベクトルとの差分ベクトル(以下、「差分動きベクトル」という。)の方向α(探索パラメータ)に基づいて、探索パターンを定める。差分動きベクトルの方向αは、式(5)によって表される。
α=arctan((mv2y−mv1y)/(mv2x−mv1x))…(5)
図15では、(π/8≦α<3π/8)が成立する。したがって、差分動きベクトルの方向αは、図15における右上斜め方向に偏っている。この場合、探索パラメータ算出部200は、差分動きベクトルの方向(探索パラメータ)に基づいて、右上斜め方向に偏っている探索パターンを選択する。右上斜め方向に偏っている探索パターンとは、例えば、図14に示す第4の探索パターンである。これによって、動き探索部202は、動き探索の演算量の増加を抑えても動きベクトルを効率的に算出することが可能となる。
以上のように、第1実施形態の動きベクトル算出部20a(動きベクトル検出装置)は、探索パラメータ算出部200と、動き探索部202とを備える。探索パラメータ算出部200は、フレーム間の検出済み動きベクトルの水平成分の統計値及び垂直成分の統計値の少なくとも一方に基づいて動きベクトルの探索範囲の長さを決定する。動き探索部202は、長さが決定された探索範囲における探索点について動きベクトルを探索する。
これによって、第1実施形態の動画像符号化装置1は、動き探索の演算量の増加を抑えても動きベクトルを効率的に算出することが可能となる。第1実施形態の動画像符号化装置1は、画像における物体が加速した等の理由によって動きベクトルが正確に算出されない場合でも、予測画像の精度を低下させないので、符号化効率を低下させない。
すなわち、第1実施形態の動画像符号化装置1は、探索パターン決定の第1例のように、検出済み動きベクトルの統計値に基づいて探索パラメータを適応的に変更する。これによって、第1実施形態の動画像符号化装置1は、動き探索の演算量の増加を抑えつつも適切な動きベクトルを算出することができる。
第1実施形態の動画像符号化装置1は、探索パターン決定の第2例のように、検出済み動きベクトルの統計値の成す角度に基づいて探索パラメータを適応的に変更する。これによって、第1実施形態の動画像符号化装置1は、最適な動きベクトルが存在する確率の高い範囲を割り出し、動きベクトルを効率的に算出することが可能となる。
第1実施形態の動画像符号化装置1は、探索パターン決定の第3例のように、対象ブロックを参照する動きベクトルに基づいて探索パラメータを適応的に変更する。これによって、第1実施形態の動画像符号化装置1は、最適な動きベクトルが存在する確率の高い範囲を割り出し、動きベクトルを効率的に算出することが可能となる。
(第2実施形態)
第2実施形態では、動きベクトル算出部の構成及び動作が、第1実施形態と相違する。第2実施形態では、第1実施形態との相違点についてのみ説明する。
図16は、動きベクトル算出部20bの構成の例を示す図である。動画像符号化装置1の動きベクトル算出部20bは、探索パラメータ算出部200と、探索中心算出部201と、動き探索部202とを備える。動きベクトル算出部20bは、探索パラメータ制御部203を更に備える。
探索パラメータ制御部203は、探索パラメータを変更する。すなわち、探索パラメータ制御部203は、探索パラメータにより定まる探索パターンの探索範囲に含まれている探索点の数を変更する。探索パラメータ制御部203は、探索点の数が所定値となるまで、探索パターンの探索範囲から探索点を追加又は削除する。所定値は、予め定められる値である。探索パラメータ制御部203は、変更された探索パラメータを動き探索部202に送信する。
図17は、動きベクトル算出部20bの動作の例を示すフローチャートである。探索パラメータ算出部200は、検出済み動きベクトルに基づいて探索パラメータを定める(ステップS301)。探索パラメータ制御部203は、探索パターンの探索範囲に含まれている探索点の数が所定値となるまで、探索パラメータを変更する(ステップS302)。探索中心算出部201は、検出済み動きベクトルに基づいて探索中心を定める(ステップS303)。動き探索部202は、変更された探索パラメータと探索中心とに基づいて、対象ブロックの動きベクトルを算出する(ステップS304)。
図18は、探索点を削除することによる探索パターンの変更の例を示す図である。探索パラメータ制御部203は、一例として、図14に示す第4の探索パターンを表す探索パラメータを、探索パラメータ算出部200から取得する。探索中心300は、第4の探索パターンの中心である。なお、探索パラメータ制御部203は、円や多角形などの任意形状の探索パターンを表す探索パラメータを、探索パラメータ算出部200から取得してもよい。
探索パラメータ制御部203は、取得した探索パラメータの探索範囲に含まれている全ての探索点301を包含する最小面積の楕円302を算出する。探索パラメータ制御部203は、取得した探索パラメータの探索範囲に含まれている探索点301の数が所定値よりも多い場合、楕円302の楕円形状を維持したまま、中心303を中心として楕円302を縮小する。探索パラメータ制御部203は、探索点301の数が所定値になるまで探索点301を削除する。図18では、探索パラメータ制御部203は、4個の探索点301を削除する。探索パラメータ制御部203は、楕円302に包含される探索点301のうち、中心303から遠い探索点301を優先して、探索点301を削除する。探索パラメータ制御部203は、中心303から同じ距離にある探索点301が複数ある場合、ラスタスキャンの順番が先である探索点301を優先して削除する。
図18では、所定値は、一例として27である。図18の最も左に示す初期状態では、探索点301の数は33である。探索パラメータ制御部203は、探索点301を6個削除する必要がある。探索パラメータ制御部203は、縮小した楕円302の領域外の探索点301−1及び301−2を削除する。探索パラメータ制御部203は、更に縮小した楕円302の領域外の探索点301−3〜301−6を削除する。
図19は、探索点を追加することによる探索パターンの変更の例を示す図である。探索パラメータ制御部203は、一例として、図14に示す第4の探索パターンを表す探索パラメータを、探索パラメータ算出部200から取得する。中心303は、第4の探索パターンの中心である。なお、探索パラメータ制御部203は、円や多角形などの任意形状の探索パターンを表す探索パラメータを、探索パラメータ算出部200から取得してもよい。
探索パラメータ制御部203は、楕円302を算出する。楕円302は、探索パラメータ制御部203が取得した探索パラメータにより定まる探索パターンの探索範囲に含まれている全ての探索点301を包含する最小面積の楕円である。
探索パラメータ制御部203は、取得した探索パラメータの探索範囲に含まれている探索点301の数が所定値よりも少ない場合、楕円302の楕円形状を維持したまま、中心303を中心として楕円302を拡大する。探索パラメータ制御部203は、探索点301の数が所定値になるまで探索点301を追加する。図19では、探索パラメータ制御部203は、7個の探索点301を追加する。探索パラメータ制御部203は、楕円302に包含される探索点301のうち、中心303から近い探索点301を優先して、探索点301を追加する。探索パラメータ制御部203は、中心303から同じ距離にある探索点301が複数ある場合、ラスタスキャンの順番が先である探索点301を優先して追加する。
図19では、所定値は、一例として40である。図19の最も左に示す初期状態では、探索点301の数は33である。探索パラメータ制御部203は、探索点301を7個追加する必要がある。探索パラメータ制御部203は、拡大した楕円302の領域外の探索点301−7〜301−10を追加する。探索パラメータ制御部203は、更に拡大した楕円302の領域外の探索点301−11〜301−13を追加する。図19では、探索パラメータ制御部203は、探索点301−14を追加しない。探索点301−14のラスタスキャンの順番は、探索点301−13のラスタスキャンの順番よりも後だからである。
なお、探索パラメータ制御部203が探索点の数が所定値となるまで探索範囲から探索点を追加又は削除する(探索範囲の長さを変更する)場合、探索範囲の面積は、探索点が追加又は削除される前後で同じ面積でもよい。したがって、探索パラメータ制御部203は、探索点を追加又は削除する前後で、探索範囲の形状を変更したとしても、探索範囲の面積を変更しなくてもよい。また、探索パラメータ制御部203は、探索点を追加又は削除する前後で、探索範囲の面積の変更量を閾値以内に収めてもよい。したがって、探索点が追加又は削除される前後で探索範囲の面積がほぼ同じ面積となるように、所定値の変更幅は閾値以下でもよい。
以上のように、第2実施形態の動きベクトル算出部20bの探索パラメータ算出部200は、探索範囲における探索点の数が所定値となるまで探索範囲の長さを変更する。探索パラメータ算出部200は、探索範囲の長さを変更する前後で、探索範囲の面積の変更量を閾値以内に収めてもよい。
これによって、第2実施形態の動画像符号化装置1は、動き探索の演算量の増加を抑えても動きベクトルを効率的に算出することが可能となる。第2実施形態の動画像符号化装置1は、画像における物体が加速した等の理由によって動きベクトルが正確に算出されない場合でも、予測画像の精度を低下させないので、符号化効率を低下させない。
すなわち、第2実施形態の動画像符号化装置1は、探索点の数が所定値となるまで探索点を追加又は削除することによって、探索パラメータを変更する。これによって、第2実施形態の動画像符号化装置1は、動き探索の演算量を制御して、適切な動きベクトルを算出することができる。ハードウェア実装では単位時間当たりの処理量が決まっているため、動き探索の演算量を制御することは有効である。
第2実施形態の動画像符号化装置1は、探索範囲の拡大又は縮小の前後で探索パターンが互いに相似形状となるように、探索範囲を拡大又は縮小する。これによって、第2実施形態の動画像符号化装置1は、単に探索点を追加又は削除する場合と比較して動きベクトルの精度を向上させて、動き探索の演算量を効率的に制御することができる。第2実施形態の動画像符号化装置1は、単に探索点を追加又は削除する場合と比較して動きベクトルの精度を維持したままでも、動き探索の演算量を効率的に制御することができる。
動画像符号化装置1が探索パターンの探索範囲を拡大又は縮小することによって、以下の(1)、(2)、(3)に示す効果が得られる。
(1)動画像符号化装置1が探索範囲を縮小した場合
動き探索の演算量は減少する。予測画像の精度は低下する場合がある。符号化効率は低下する場合がある。
(2)動画像符号化装置1が探索範囲の面積を変更しない場合(拡大又は縮小される前の探索範囲の面積と、拡大又は縮小された後の探索範囲の面積とがほぼ同じである場合)
動き探索の演算量の減少量又は増加量は少ない。予測画像の精度は向上する。符号化効率は向上する。
(3)動画像符号化装置1が探索範囲を拡大した場合、
動き探索の演算量は増加する。上記(2)と比較して、予測画像の精度は更に向上する。上記(2)と比較して、符号化効率は更に向上する。
(第3実施形態)
第3実施形態では、動きベクトル算出部の構成及び動作が、第1実施形態と相違する。第3実施形態では、第1実施形態との相違点についてのみ説明する。
図20は、動きベクトル算出部20cの構成の例を示す図である。動画像符号化装置1の動きベクトル算出部20cは、探索パラメータ算出部200と、探索中心算出部201と、動き探索部202とを備える。動きベクトル算出部20cは、差分メモリ204と、探索パラメータ除外部205とを更に備える。以下、動きベクトルを検出済みであるブロックを「動きベクトル検出済みブロック」という。
動き探索部202は、差分情報(評価値)を差分メモリ204に記録する。差分情報とは、第1のブロックの画像特徴量と第2のブロックの画像特徴量との差を表す情報である。第1のブロックは、例えば、対象フレーム400の対象ブロック401である。第1のブロックは、対象フレーム400のブロックのうち対象ブロック401以外のブロックでもよい。例えば、第1のブロックは、対象フレーム400の動きベクトル検出済みブロックでもよい。第1のブロックは、対象フレーム400以外のフレームのブロックでもよい。第2のブロックは、例えば、参照フレーム410の参照ブロックである。
差分メモリ204は、差分情報(評価値)を動き探索部202から取得する。差分メモリ204は、差分情報を記憶する。差分メモリ204は、アクセスに応じて、差分情報を探索パラメータ除外部205に送信する。
探索パラメータ除外部205は、探索パラメータを探索パラメータ算出部200から取得する。探索パラメータ除外部205は、差分情報を差分メモリ204から取得する。探索パラメータ除外部205は、対象フレームにおける対象ブロック以外のブロックと参照ブロックとの差(差分情報)が閾値以下である探索点を、取得した探索パラメータの探索範囲から除外する。探索パラメータ除外部205は、探索点を除外した結果を表す探索パラメータを、動き探索部202に送信する。なお、探索パラメータ除外部205は、全ての探索点が探索範囲から除外される可能性がある場合、対象フレームにおける対象ブロック以外のブロックと参照ブロックとの差が最も大きい探索点を探索範囲から除外しなくてもよい。
図21は、動きベクトル算出部20cの動作の例を示すフローチャートである。探索パラメータ算出部200は、対象ブロックと同じ対象フレームに属する動きベクトル検出済みブロックの動きベクトルのうち、対象ブロックと同じ参照フレームを参照する検出済み動きベクトル(以下、「同フレーム参照動きベクトル」という。)が存在するか否かを判定する(ステップS401)。
同フレーム参照動きベクトルが存在する場合(ステップS401:YES)、探索パラメータ算出部200は、同フレーム参照動きベクトルに基づいて、探索パラメータを決定する(ステップS402)。探索中心算出部201は、同フレーム参照動きベクトルに基づいて、探索中心を決定する(ステップS403)。
探索パラメータ除外部205は、対象フレームにおける対象ブロック以外のブロックと参照ブロックとの差(差分情報)が閾値以下である探索点を、取得した探索パラメータの探索範囲から除外する(ステップS404)。動きベクトル算出部20cは、ステップS407に処理を進める。
同フレーム参照動きベクトルが存在しない場合(ステップS401:NO)、探索パラメータ算出部200は、同フレーム参照動きベクトル以外の検出済み動きベクトルに基づいて、探索パラメータを決定する(ステップS405)。探索中心算出部201は、同フレーム参照動きベクトル以外の検出済み動きベクトルに基づいて、探索中心を決定する(ステップS406)。動きベクトル算出部20cは、ステップS407に処理を進める。
動き探索部202は、探索パラメータ及び探索中心に基づいて、対象ブロックの動きベクトルを検出する(ステップS407)。動き探索部202は、差分情報を差分メモリ204に記録する(ステップS408)。
図22は、対象フレーム400と参照フレーム410との例を示す図である。対象ブロック401は、符号化の対象となるブロックである。対象ブロック401は、対象フレーム400に属する。動きベクトル検出済みブロック402は、動きベクトルが検出済みであるブロックである。動きベクトル検出済みブロック402は、対象フレーム400に属する。探索範囲411は、対象ブロック401の動きベクトルの探索範囲である。探索範囲412は、動きベクトル検出済みブロック402の動きベクトルの探索範囲である。重複範囲413は、探索範囲411と探索範囲412とが重複している範囲である。
探索中心ベクトル403は、対象ブロック401の動きベクトルであって、参照フレーム410の探索範囲411の探索中心を示す動きベクトルである。探索中心ベクトル404は、動きベクトル検出済みブロック402の動きベクトルであって、参照フレーム410の探索範囲412の探索中心を示す検出済み動きベクトルである。したがって、探索中心ベクトル404は、同フレーム参照動きベクトルである。
探索パラメータ算出部200は、同フレーム参照動きベクトルが存在するので、同フレーム参照動きベクトルである探索中心ベクトル404に基づいて、探索パラメータを決定する。探索中心算出部201は、探索中心ベクトル404に基づいて、探索中心を決定する。
図23は、対象フレームのブロックと参照ブロックとの差が小さい探索点を除外するための方法の例を示す図である。探索パターン500は、対象ブロック401に対応付けられた探索パターンを示す。探索パターン510は、動きベクトル検出済みブロック402に対応付けられた探索パターンを示す。探索パターン510に記載された値は、動きベクトル検出済みブロック402と参照ブロックとの差(差分情報)を探索点ごとに表す値である。図23では、参照ブロックは、参照フレーム410の探索範囲412に含まれているブロックである。
探索パターン520は、探索パターン500の探索点と探索パターン510の探索点とが対応付けられた結果を示す。すなわち、探索パターン520は、探索パターン500と探索パターン510とが探索点の位置を合わせて重ねられた結果を示す。動きベクトル検出済みブロック402と参照ブロックとの差が閾値以下の探索点は、黒星印を用いて示されている。閾値は、一例として50である。
図20に示す探索パラメータ除外部205は、重複している探索点のうち、動きベクトル検出済みブロック402と参照ブロックとの差が閾値以下である探索点を、取得した探索パラメータの探索範囲から除外する。図23では、探索パラメータ除外部205は、11個の探索点を除外する。探索パターン530は、変更された探索パラメータの探索パターンを示す。探索パラメータ除外部205は、探索パターン530を表す探索パラメータを、動き探索部202に送信する。
以上のように、第3実施形態の検出済み動きベクトルである探索中心ベクトル404は、符号化の対象ブロック401の参照フレーム410を対象ブロック401が属する対象フレーム400から参照する動きベクトルである。第3実施形態の動きベクトル算出部20cの探索パラメータ算出部200は、検出済み動きベクトルである探索中心ベクトル404を検出した際の差分情報(評価値)が閾値以下である探索点を、探索範囲から除外する。
これによって、第3実施形態の動画像符号化装置1は、動き探索の演算量の増加を抑えても動きベクトルを効率的に算出することが可能となる。第3実施形態の動画像符号化装置1は、画像における物体が加速した等の理由によって動きベクトルが正確に算出されない場合でも、予測画像の精度を低下させないので、符号化効率を低下させない。
すなわち、第3実施形態の動画像符号化装置1は、同フレーム参照動きベクトルである探索中心ベクトル404を算出した際に算出された差分情報に基づいて、対象ブロック401の動きベクトルが指す先となる可能性が低い探索点を除外する。対象ブロック401の動きベクトルが指す先となる可能性が低い探索点とは、対象ブロックが候補となる確率の低い探索点である。これによって、第3実施形態の動画像符号化装置1は、動き探索の演算量を制御して、適切な動きベクトルを算出することができる。
図24は、対象フレーム400の動きベクトル検出済みブロック402と参照ブロック414との差が小さい探索点を除外したことによる効果の例を示す図である。参照ブロック414は、動きベクトル検出済みブロック402が参照するブロックである。対象フレーム400において異なるブロックが参照フレーム410において重なる可能性は低い。例えば、対象ブロック401と動きベクトル検出済みブロック402とが参照フレーム410において重なる可能性は低い。したがって、動きベクトル検出済みブロック402との差が小さい探索点(動きベクトル検出済みブロック402の画像に類似する画像の領域)が除外された場合でも、動きベクトル検出済みブロック402とは異なる対象ブロック401の予測画像の精度は低下しない。
(第4実施形態)
第4実施形態では、動きベクトル算出部の構成及び動作が、第1実施形態と相違する。第4実施形態では、第1実施形態との相違点についてのみ説明する。
図25は、動きベクトル算出部20dの構成の例を示す図である。動画像符号化装置1の動きベクトル算出部20dは、探索パラメータ算出部200と、探索中心算出部201と、動き探索部202とを備える。動きベクトル算出部20dは、差分メモリ204と、探索パラメータ除外部205と、探索順序制御部206とを更に備える。
以下、動き探索が施されるフレームの順序を「動き探索順序」という。探索順序制御部206は、符号化処理における参照構造に基づいて、符号化処理において参照されるフレームの順に動き探索順序を変更する。
図26は、動き探索順序の例を示す図である。フレーム600とフレーム610とは、第1レイヤに属する。フレーム620は、第2レイヤに属する。フレーム630とフレーム660とは、第3レイヤに属する。フレーム640とフレーム650とフレーム670とフレーム680とは、第4レイヤに属する。
図26では、動画像符号化装置1は、階層型参照構造に基づいて、フレーム600、フレーム610、フレーム620、フレーム640、フレーム650、フレーム660、フレーム670、フレーム680の順に符号化する。
符号化処理において参照されるフレームは、参照される順に、フレーム640、フレーム650、フレーム670、フレーム680、フレーム630、フレーム660、フレーム620、フレーム610である。したがって、符号化処理において参照されるフレームのフレーム番号は、参照される順で、F1、F3、F5、F7、F2、F6、F4、F8である。
動き探索順序は、変更される前では、フレーム640、フレーム650、フレーム670、フレーム680、フレーム630、フレーム660、フレーム620、フレーム610である。探索順序制御部206は、階層型参照構造に基づいて、参照されるフレームの順となるよう動き探索順序を変更する。したがって、動き探索順序は、変更された後では、フレーム640、フレーム650、フレーム670、フレーム680、フレーム630、フレーム660、フレーム620、フレーム610である。探索順序制御部206は、対象フレームの対象ピクチャを、動き探索を施す順に動き探索部202に送信する。
図25に示す動き探索部202は、対象フレームの対象ピクチャを、動き探索を施す順に探索順序制御部206から取得する。動き探索部202は、対象ピクチャと参照ピクチャと探索パラメータと探索中心とに基づいて、動き探索処理を実行する。動き探索部202は、対象ブロックの動きベクトルを、動き探索処理によって検出する。
差分メモリ204は、動き探索の際に算出された差分情報を、動き探索部202から取得する。差分メモリ204は、差分情報を記憶する。差分メモリ204は、アクセスに応じて、差分情報を探索パラメータ除外部205に送信する。
探索パラメータ除外部205は、探索パラメータを探索パラメータ算出部200から取得する。探索パラメータ除外部205は、差分情報を差分メモリ204から取得する。探索パラメータ除外部205は、対象フレーム以外のフレームにおけるブロックと対象ブロックと参照ブロックとの差(差分情報)が閾値以上である探索点を、取得した探索パラメータの探索範囲から除外する。探索パラメータ除外部205は、探索点を除外した結果を表す探索パラメータを、動き探索部202に送信する。なお、探索パラメータ除外部205は、全ての探索点が探索範囲から除外される可能性がある場合、対象フレーム以外のフレームにおけるブロックと参照ブロックとの差が最も小さい探索点を探索範囲から除外しなくてもよい。
以下、対象フレームとは異なるフレームのブロックが持つ検出済み動きベクトルであって、対象ブロックの参照フレームのブロックを指す検出済み動きベクトルが存在するという条件を「第1条件」という。
以下、対象フレームとは異なるフレームのブロックが持つ第1の検出済み動きベクトルが対象フレームの参照フレームのブロックを指し、第1の検出済み動きベクトルを持つブロックが更に持つ第2の検出済み動きベクトルが対象フレームの対象ブロックを指すという条件を「第2条件」という。
図27は、動きベクトル算出部20dの動作の例を示すフローチャートである。探索パラメータ算出部200は、第1条件及び第2条件の両方が成立するか否かを判定する(ステップS501)。
第1条件及び第2条件の両方が成立する場合(ステップS501:YES)、探索パラメータ算出部200は、差分動きベクトルに基づいて、探索パラメータを決定する(ステップS502)。探索中心算出部201は、差分動きベクトルに基づいて、探索中心を決定する(ステップS503)。
探索パラメータ除外部205は、対象フレーム以外のフレームにおけるブロックと参照ブロックとの差(差分情報)が閾値以上である探索点を、取得した探索パラメータの探索範囲から除外する(ステップS504)。動きベクトル算出部20dは、ステップS507に処理を進める。
第1条件又は第2条件が成立しない場合(ステップS501:NO)、探索パラメータ算出部200は、差分動きベクトル以外の検出済み動きベクトルに基づいて、探索パラメータを決定する(ステップS505)。探索中心算出部201は、差分動きベクトル以外の検出済み動きベクトルに基づいて、探索中心を決定する(ステップS506)。動きベクトル算出部20dは、ステップS507に処理を進める。
動き探索部202は、探索パラメータ及び探索中心に基づいて、対象ブロックの動きベクトルを検出する(ステップS507)。動き探索部202は、差分情報を差分メモリ204に記録する(ステップS508)。
図28は、対象フレームと参照フレームと動きベクトル検出済みフレームとの例を示す図である。動きベクトル検出済みフレーム430は、時間軸方向について、対象フレーム400と参照フレーム410との間に位置するフレームである。したがって、動きベクトル検出済みフレーム430は、対象フレーム400とは異なるフレームである。
図28では、第1の検出済み動きベクトル432は、動きベクトル検出済みフレーム430の動きベクトル検出済みブロック434が持つ検出済み動きベクトルである。第1の検出済み動きベクトル432は、対象フレーム400の参照フレーム410の探索範囲412のブロックを指している。
図28では、第2の検出済み動きベクトル433は、動きベクトル検出済みブロック434の検出済み動きベクトルである。第2の検出済み動きベクトル433は、対象フレーム400の対象ブロック401を指している。動きベクトル検出済みブロック434は、第1の検出済み動きベクトル432を持つブロックである。
動きベクトル検出済みブロック434は、対象ブロック401について、第1条件及び第2条件の両方が成立するか否かを判定する。図28では、動きベクトル検出済みブロック434は、動きベクトル検出済みフレーム430のブロックである。第1の検出済み動きベクトル432は、対象フレーム400の参照フレーム410のブロックを指す検出済み動きベクトルである。したがって、第1条件は成立する。図28では、第1の検出済み動きベクトル432は、対象フレーム400の参照フレーム410のブロックを指している。第2の検出済み動きベクトル433は、対象フレーム400の対象ブロックを指している。したがって、第2条件も成立する。
図25に示す探索パラメータ算出部200は、第1の検出済み動きベクトル432と第2の検出済み動きベクトル433との差分動きベクトルを算出する。探索パラメータ算出部200は、差分動きベクトルに基づいて、探索パラメータを決定する。図25に示す探索中心算出部201は、差分動きベクトルに基づいて、探索中心を決定する。
図29は、対象フレーム以外のフレームのブロックと参照ブロックとの差が大きい探索点を除外するための方法の例を示す図である。探索パターン500は、対象ブロック401に対応付けられた探索パターンを示す。探索パターン540は、第1の検出済み動きベクトル432について動きベクトル検出済みブロック434に対応付けられた探索パターンを示す。探索パターン540に記載された値は、動きベクトル検出済みブロック434と参照ブロックとの差(差分情報)を探索点ごとに表す値である。図29では、参照ブロックは、参照フレーム410の探索範囲412に含まれているブロックである。
探索パターン550は、探索パターン500の探索点と探索パターン540の探索点とが対応付けられた結果を示す。すなわち、探索パターン550は、探索パターン500と探索パターン540とが探索点の位置を合わせて重ねられた結果を示す。対象ブロック401と参照ブロックとの差が閾値以下の探索点は、黒星印を用いて示されている。閾値は、一例として50である。
図25に示す探索パラメータ除外部205は、重複している探索点のうち、動きベクトル検出済みブロック434と参照ブロックとの差が閾値以下である探索点を、取得した探索パラメータの探索範囲から除外する。図29では、探索パラメータ除外部205は、7個の探索点を除外する。探索パターン530は、変更された探索パラメータの探索パターンを示す。探索パラメータ除外部205は、探索パターン530を表す探索パラメータを、動き探索部202に送信する。
以上のように、第4実施形態の検出済み動きベクトルは、符号化の対象ブロック401の参照フレーム410を動きベクトル検出済みフレーム430から参照する第1の検出済み動きベクトル432と、対象ブロック401を動きベクトル検出済みフレーム430から参照する第2の検出済み動きベクトル433とである。探索パラメータ算出部200は、第1の検出済み動きベクトル432を検出した際の差分情報(評価値)が閾値以上である探索点を、探索範囲から除外する。
これによって、第4実施形態の動画像符号化装置1は、動き探索の演算量の増加を抑えても動きベクトルを効率的に算出することが可能となる。第4実施形態の動画像符号化装置1は、画像における物体が加速した等の理由によって動きベクトルが正確に算出されない場合でも、予測画像の精度を低下させないので、符号化効率を低下させない。
すなわち、第4実施形態の動画像符号化装置1は、第2の検出済み動きベクトル433が指し示す対象ブロック401と第1の検出済み動きベクトル432を算出した際に算出された差分情報とに基づいて、対象ブロック401の動きベクトルが指す先となる可能性が低い探索点を除外する。対象ブロック401の動きベクトルが指す先となる可能性が低い探索点とは、対象ブロックが候補となる確率の低い探索点である。これによって、第4実施形態の動画像符号化装置1は、動き探索の演算量を制御して、適切な動きベクトルを算出することができる。
図30は、対象フレーム以外のフレームのブロックと参照ブロックとの差が大きい探索点を除外したことによる効果の例を示す図である。参照ブロック414は、対象ブロック401が参照するブロックの候補の一つである。参照ブロック415は、対象ブロック401が参照するブロックの候補の一つである。参照ブロック416は、動きベクトル検出済みブロック434が参照するブロックである。
対象フレーム400以外のフレームにおいて動きベクトル検出済みブロック434との差分が大きいブロックを、対象ブロック401が参照する可能性は低い。例えば、参照フレーム410において動きベクトル検出済みブロック434との差分が大きい参照ブロック414又は参照ブロック415を、対象ブロック401が参照する可能性は低い。
第1の検出済み動きベクトル432が指し示すブロックの画像と第2の検出済み動きベクトル433が指し示すブロックの画像とは、同一物体の画像である可能性が高い。動きベクトル検出済みブロック434の画像と対象ブロック401の画像とは、類似する可能性が高い。したがって、動きベクトル検出済みブロック434との差が大きい探索点(動きベクトル検出済みブロック434の画像に類似しない画像の領域)が除外された場合でも、第2の検出済み動きベクトル433が指し示す対象ブロック401の予測画像の精度は低下しない。
上述した実施形態における動画像符号化装置及び動きベクトル検出装置の少なくとも一部をコンピュータで実現するようにしてもよい。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよく、FPGA(Field Programmable Gate Array)等のプログラマブルロジックデバイスを用いて実現されるものであってもよい。
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。