JP4438949B2 - 動き補償予測符号化装置、動き補償予測符号化方法及びプログラム - Google Patents

動き補償予測符号化装置、動き補償予測符号化方法及びプログラム Download PDF

Info

Publication number
JP4438949B2
JP4438949B2 JP2004368854A JP2004368854A JP4438949B2 JP 4438949 B2 JP4438949 B2 JP 4438949B2 JP 2004368854 A JP2004368854 A JP 2004368854A JP 2004368854 A JP2004368854 A JP 2004368854A JP 4438949 B2 JP4438949 B2 JP 4438949B2
Authority
JP
Japan
Prior art keywords
block
motion vector
determination
motion
equivalent
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.)
Active
Application number
JP2004368854A
Other languages
English (en)
Other versions
JP2006180014A (ja
JP2006180014A5 (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.)
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 JP2004368854A priority Critical patent/JP4438949B2/ja
Publication of JP2006180014A publication Critical patent/JP2006180014A/ja
Publication of JP2006180014A5 publication Critical patent/JP2006180014A5/ja
Application granted granted Critical
Publication of JP4438949B2 publication Critical patent/JP4438949B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

本発明は、動き補償予測符号化装置動き補償予測符号化方法及びプログラムに関し、詳しくは、動き補償予測ブロックのサイズを選択して使用できる動き補償予測符号化装置動き補償予測符号化方法及びプログラムに関する。
我々が目にする動画は、時間軸上に連続する多数のフレーム画像(静止画)の残像に過ぎない。ギクシャク感のないスムーズな動きにするには、残像効果が失われる前に次のフレーム画像を表示しなければならず、それには、たとえば、毎秒30フレームないしはそれ以上のフレーム画像を必要とするが、こうした多数のフレーム画像からなる動画は、その情報量が膨大なものとなり、蓄積媒体の容量や伝送経路の帯域を圧迫する。
そこで、動画の情報量を削減(圧縮)するための技術として、「動き補償予測符号化」が用いられる。
図16は、動き補償予測符号化の簡略化した概念図である。左列に符号化前(情報量削減前)の画像(以下、元画像)P1、P2、P3、・・・・、P7が並んでいる。並び順は時間軸に沿って上から下である。動き補償予測符号化では、少なくとも1枚の元画像P1(イントラ画像ともいう)はそのまま(無圧縮又は静止画の符号化技術で圧縮し)伝送路(又は蓄積媒体)を介して復号側に送出しなければならないが、残りの元画像P2、P3、・・・・、P7については、時間軸を過去に遡った一つ前の元画像(参照画像)との間の「動き情報」を取り出し、その動き情報からなる被符号化画像P2′、P3′、・・・・、P7′を伝送路を介して復号側に送出する。被符号化画像P2′、P3′、・・・・、P7′の情報量は、元画像P2、P3、・・・・、P7のそれよりも少ない。このため、伝送路上(または蓄積媒体)における情報量は、すべての元画像を送出する場合に比べて遙かに削減される。
復号側では、イントラ画像(元画像P1)はそのまま復元画像P1″として用いるが、それ以外の復元画像P2′、P3′、・・・・、P7′については、時間軸を過去に遡った一つ前の復元画像と「動き情報」とにより画像を再生するという手順を繰り返すことにより、元画像P1、P2、P3、・・・・、P7と同じ並びの復元画像P1″、P2″、P3″、・・・・、P7″を得る。なお、図の説明では、時間軸を過去に遡った一つ“前”の元画像を「参照画像」としているが、これは伝送系メディアの場合である。蓄積系では時間軸上の未来の画像(一つ“後”の元画像)を「参照画像」とすることもある。
図17は、動き補償予測符号化における被符号化画像生成の概念図である(たとえば、特許文献1参照。)。この図において、動き補償予測符号化では、動画像を構成する元画像を16×16画素などの小さな動き補償予測ブロック(以下、単に「ブロック」という)に分割し、このブロック単位に、時間的に前(蓄積系では後の場合もある)に位置する参照画像から被符号化画像を作成する。
具体的には、たとえば、被符号化画像1がB1〜B25(Bはブロックの略)までの25個のブロックに分割されていると仮定した場合、まず、B1と同じ大きさのブロック(B1′)を参照画像2から取り出し、そのB1′とB1との画素毎の差分(残差信号)を取る。そして、参照画像2の上のB1′の位置を数画素ないしは1/m画素単位にずらしながら、逐次に残差信号を収集していき、残差信号が最小となったときのB1′(図ではB1″)とB1との相対的なズレの大きさ及びズレの方向をベクトル量3(動きベクトル)で検出する。これを、他のブロック(B2〜B25)についても同様に繰り返すことにより、最終的に、すべてのブロック(B1〜B25)の動きベクトルと残差信号とを得ることができる。復号側には、それらの動きベクトルと残差信号を各ブロック(B1〜B25)に格納した被符号化画像4を送出する。
復号側では、送られてきた被符号化画像4のB1〜B25の各動きベクトルを用いて、対象となる参照画像に相当する復元画像のブロックを選択し、そのブロックとB1〜B25の各残差信号を画素毎に加算して、B1〜B25を再現し、元画像と同じ復元画像を再構成する。
ここで、ブロックサイズを小さくすると、よりきめ細かな動き予測を行うことができることから、初期の動画像符号化方式(MPEG−2:Moving Picture Experts Group )では「16×16」の一種類しかなかったブロックサイズが、その上位バージョン(MPEG−4)では「16×16」と「8×8」の二種類となり、さらに、最新バージョン(MPEG−4/AVC又はH.264/AVC)では「16×16」、「16×8」、「8×16」、「8×8」、「8×4」、「4×8」、「4×4」の7種類になった。
これにより、小さなブロックを選択して動き予測の精度を高めることができるようになった。反面、小さなブロックは、符号化処理量の増加を招き、伝送情報量や処理のオーバヘッド及び電力消費を大きくすることから、とりわけ動きの少ない画像に用いて不適切であり、動きの量に対応した適切な大きさのブロックを選択できる技術が求められている。
動きの量に対応した適切な大きさのブロックを選択できる従来技術としては、たとえば、16×16動きベクトル検出部と、8×8動きベクトル検出部と、それらの二つの動き検出部で得られた動き補償予測結果のうちのどちらか一方を選択するベクトル選択部とを備えたものが知られている(たとえば、特許文献2参照)。
これによれば、16×16ブロックと、そのブロックを4分割した8×8ブロックのそれぞれで得られた動き補償予測結果のうち適切な方を選択できる。このため、動きが少ない場合には大きなサイズの「16×16ブロック」を選択して伝送情報量の削減と電力消費の抑制及び処理のオーバヘッドの軽減を図り、一方、動きが大きい場合には小さなサイズの「8×8ブロック」を選択してよりきめ細かな動き予測を図ることができる。
特表2003−533142号公報 特開2000−102016号公報
しかしながら、上記の従来技術にあっては、「16×16ブロック」と、そのブロックを4分割した「8×8ブロック」のそれぞれで動き補償予測を行っているため、たとえば、「全探索法」で予測を行った場合、トータルの演算量は、16×16ブロック1個分の演算量のほぼ2倍にも達する。これは、ブロックの面積に比例して演算量が増えるため、8×8ブロック4個分の演算量は、16×16ブロック1個分の演算量にほぼ匹敵するからである。
なお、このこと(演算量が2倍に増える)は「全探索法」よりも演算量が少ない他の探索法(最近傍探索法など)を用いた場合でも同じである。たとえば、最近傍探索法を行ったときの16×16ブロック1個分の演算量をAとするとき(このAは全探索法よりも少ないが)、同様に最近傍探索を行った8×8ブロック4個分の演算量もほぼAと同等になるため、トータルの演算量が、やはり2倍(≒2A)になるからである。
そこで、本発明の目的は、トータルの演算量を減らしつつ、最適なブロックサイズの選択を可能とする動き補償予測符号化装置動き補償予測符号化方法及びプログラムを提供することにある。
請求項1記載の発明は、第一ブロックと該第一ブロックを複数に分割した第二ブロックのいずれか一方を動き補償予測ブロックとして選択する動き補償予測符号化装置において、前記第二ブロックの各々について、所定の探索アルゴリズムを予め定められた第1の反復数以下の少ない反復で動きベクトルを演算する第一動きベクトル演算手段と、この第一動きベクトル演算手段によって演算された各々の動きベクトルが完全等価又は近似等価であるか否かを判定する第一判定手段と、この第一判定手段による判定の結果、完全等価又は近似等価であると判定した場合に、前記第一ブロックを動き補償予測ブロックとして選択するよう制御する第一選択制御手段と、前記第一判定手段による判定の結果、完全等価又は近似等価であると判定した場合に、前記第一ブロックについて、前記所定の探索アルゴリズムにより予め定められた第2の反復数を上限として動きベクトルを演算する第二動きベクトル演算手段と、前記第一判定手段による判定の結果、完全等価又は近似等価でないと判定した場合に、前記第二ブロックの各々について、所定の探索アルゴリズムにより予め定められた第3の反復数を上限として動きベクトルを演算する第三動きベクトル演算手段と、この第三動きベクトル演算手段で演算された各々の動きベクトルが完全等価又は近似等価であるか否かを判定する第二判定手段と、前記第二判定手段による判定の結果、完全等価又は近似等価であると判定した場合に、前記第一ブロックを動き補償予測ブロックとして選択するよう制御する一方、前記第二判定手段による判定の結果、完全等価又は近似等価でないと判定した場合に、前記第二ブロックを動き補償予測ブロックとして選択するよう制御する第二選択制御手段とを備えたことを特徴とする
この発明では、予め定められた反復数以下の少ない反復で所定の探索アルゴリズムを用いて複数の第二ブロックの各々の動きベクトルを演算し、それらの動きベクトルが完全等価又は近似等価である場合に、第一ブロックを動き補償予測ブロックとして選択する一方、それらの動きベクトルが完全等価又は近似等価でない場合に第二ブロックを動き補償予測ブロックとして選択する。ここで、第一ブロックを複数に分割したものが第二ブロックであるから、第一ブロックは「大きい動き補償予測ブロック」であり、第二ブロックは「小さい動き補償予測ブロック」である。
そして、複数の第二ブロック(小さい動き補償予測ブロック)の各々の動きベクトルが揃っている(完全等価又は近似等価している)ということは、各々の画像が同一方向且つ同一量に動いているということであり、これは、第一ブロック(大きい動き補償予測ブロック)の画像の動きを表すから、この場合は、演算量削減を意図として大きい動き補償予測ブロック、つまり、第一ブロックを選択する。
この発明の“ブロック選択”に要する時間は、もっぱら、複数の第二ブロックの各々の動きベクトルの演算時間で与えられるが、この演算は、探索アルゴリズムの“予め定められた反復数以下の少ない反復”で行われるため、探索アルゴリズムを予め定められた反復数で行った場合に比べて明らかに短い時間で済む。
したがって、トータルの演算量を減らしつつ、最適なブロックサイズの選択を可能とする動き補償予測符号化装置を提供できる。
また、この発明では、複数の第二ブロックの各々の動きベクトルが揃っていない(完全等価又は近似等価していない)場合には、第二ブロックの各々の動きベクトルを再探索する。この再探索は、予め定められた第3の反復数を上限にした所定の探索アルゴリズムの正確な演算で行われるので、第一動きベクトル演算手段の演算結果に比べて精度が高い。
このため、仮に、第二判定手段で逆の判定結果(等価)が得られた場合には、第一判定手段の判定結果が間違っていると判断して、大きい動き補償予測ブロック、つまり、第一ブロックを選択し、また、第二判定手段で同じ判定結果(等価でない)が得られた場合には、第一判定手段の判定結果が正しかったと判断して、小さい動き補償予測ブロック、つまり、第二ブロックを選択する。
したがって、仮に、第一判定手段の判定結果に誤りがあった場合でも、正しいブロック選択を行うことができ、実用上好ましいものとすることができる。
請求項に記載の発明は、請求項1記載の発明であって、前記第二動きベクトル演算手段は、前記第一動きベクトル演算手段が前記所定の探索アルゴリズムをさせた結果得られた中間値を初期値として前記所定の探索アルゴリズムによる反復を開始することを特徴とす
請求項記載の発明は、請求項1又は2記載の発明であって、前記所定の探索アルゴリズムとは、最近傍探索法又はNステップ探索法若しくは対数探索法を利用したアルゴリズムであることを特徴とす
請求項記載の発明は、第一ブロックと該第一ブロックを複数に分割した第二ブロックのいずれか一方を動き補償予測ブロックとして選択する動き補償予測符号化方法であって、前記第二ブロックの各々について、所定の探索アルゴリズムを予め定められた第1の反復数以下の少ない反復で動きベクトルを演算する第一動きベクトル演算ステップと、この第一動きベクトル演算ステップにて演算された各々の動きベクトルが完全等価又は近似等価であるか否かを判定する第一判定ステップと、この第一判定ステップによる判定の結果、完全等価又は近似等価であると判定した場合に、前記第一ブロックを動き補償予測ブロックとして選択するよう制御する第一選択制御ステップと、前記第一判定ステップによる判定の結果、完全等価又は近似等価であると判定した場合に、前記第一ブロックについて、前記所定の探索アルゴリズムにより予め定められた第2の反復数を上限として動きベクトルを演算する第二動きベクトル演算ステップと、前記第一判定ステップによる判定の結果、完全等価又は近似等価でないと判定した場合に、前記第二ブロックの各々について、所定の探索アルゴリズムにより予め定められた第3の反復数を上限として動きベクトルを演算する第三動きベクトル演算ステップと、この第三動きベクトル演算ステップで演算された各々の動きベクトルが完全等価又は近似等価であるか否かを判定する第二判定ステップと、前記第二判定ステップによる判定の結果、完全等価又は近似等価であると判定した場合に、前記第一ブロックを動き補償予測ブロックとして選択するよう制御する一方、前記第二判定ステップによる判定の結果、完全等価又は近似等価でないと判定した場合に、前記第二ブロックを動き補償予測ブロックとして選択するよう制御する第二選択制御ステップとを含むことを特徴とす
請求項記載の発明は、動き補償予測符号化処理を実行するコンピュータに、第一ブロックと該第一ブロックを複数に分割した第二ブロックのいずれか一方を動き補償予測ブロックとして選択する機能を実行させるプログラムであって、当該コンピュータを、前記第二ブロックの各々について、所定の探索アルゴリズムを予め定められた第1の反復数以下の少ない反復で動きベクトルを演算する第一動きベクトル演算手段、この第一動きベクトル演算手段によって演算された各々の動きベクトルが完全等価又は近似等価であるか否かを判定する第一判定手段、この第一判定手段による判定の結果、完全等価又は近似等価であると判定した場合に、前記第一ブロックを動き補償予測ブロックとして選択するよう制御する第一選択制御手段、前記第一判定手段による判定の結果、完全等価又は近似等価であると判定した場合に、前記第一ブロックについて、前記所定の探索アルゴリズムにより予め定められた第2の反復数を上限として動きベクトルを演算する第二動きベクトル演算手段、前記第一判定手段による判定の結果、完全等価又は近似等価でないと判定した場合に、前記第二ブロックの各々について、所定の探索アルゴリズムにより予め定められた第3の反復数を上限として動きベクトルを演算する第三動きベクトル演算手段、この第三動きベクトル演算手段で演算された各々の動きベクトルが完全等価又は近似等価であるか否かを判定する第二判定手段、前記第二判定手段による判定の結果、完全等価又は近似等価であると判定した場合に、前記第一ブロックを動き補償予測ブロックとして選択するよう制御する一方、前記第二判定手段による判定の結果、完全等価又は近似等価でないと判定した場合に、前記第二ブロックを動き補償予測ブロックとして選択するよう制御する第二選択制御手段として機能させることを特徴とす
本発明によればトータルの演算量を減らしつつ、最適なブロックサイズの選択可能となる
以下、本発明の実施形態を、図面を参照しながら説明する。なお、以下の説明における様々な細部の特定ないし実例および数値や文字列その他の記号の例示は、本発明の思想を明瞭にするための、あくまでも参考であって、それらのすべてまたは一部によって本発明の思想が限定されないことは明らかである。また、周知の手法、周知の手順、周知のアーキテクチャおよび周知の回路構成等(以下「周知事項」)についてはその細部にわたる説明を避けるが、これも説明を簡潔にするためであって、これら周知事項のすべてまたは一部を意図的に排除するものではない。かかる周知事項は本発明の出願時点で当業者の知り得るところであるので、以下の説明に当然含まれている。
<動き補償予測ブロック>
まず、動き補償予測ブロックについて説明する。
図1は、動き補償予測ブロックの種類を示す図である。(a)〜(h)は、それぞれMPEG−4/AVC(又はH.264/AVC)で使用が認められている7種類の動き補償予測ブロックである。詳しくは、(a)は「16×16」のサイズの動き補償予測ブロック、(b)は「16×16」の動き補償予測ブロックを上下に2分割したそれぞれ「16×8」のサイズの動き補償予測ブロック、(c)は同じく「16×16」の動き補償予測ブロックを左右に2分割したそれぞれ「8×16」のサイズの動き補償予測ブロック、(d)は同じく「16×16」の動き補償予測ブロックを上下左右に4分割したそれぞれ「8×8」のサイズの動き補償予測ブロックである。
また、(e)は「8×8」の動き補償予測ブロック、(f)は「8×8」の動き補償予測ブロックを上下に2分割したそれぞれ「8×4」のサイズの動き補償予測ブロック、(g)は同じく「8×8」の動き補償予測ブロックを左右に2分割したそれぞれ「4×8」のサイズの動き補償予測ブロック、(h)は同じく「8×8」の動き補償予測ブロックを上下左右に4分割したそれぞれ「4×4」のサイズの動き補償予測ブロックである。
動き補償予測ブロックの選択は、(a)〜(d)のグループの中で行われる。すなわち、最大サイズの「16×16」、最大サイズを上下に2分割した「16×8」、最大サイズを左右に2分割した「8×16」、及び、最大サイズを上下左右に4分割した「8×8」の中から選ばれる。また、選択された動き補償予測ブロックが(d)(「16×16」を上下左右に4分割した「8×8」)である場合は、それぞれの「8×8」ブロック毎に、さらに(e)〜(h)のグループの中から選択できるように階層化されている。
なお、一般的に(a)の動き補償予測ブロック(「16×16」)は「マクロブロック」、(b)〜(h)の分割された動き補償予測ブロックは「サブブロック」と呼ばれる。
このように、動き補償予測ブロックの種類は多く、ブロック選択の組み合わせも多岐にわたるため、本実施形態では説明の簡単化のために、「16×16」の動き補償予測ブロック(a)と、それを四分割した大きさの「8×8」の動き補償予測ブロック(d)を選択するものとする。
図2は、本実施形態の便宜的な選択対象となる二つの動き補償予測ブロックを示す図である。この図においては、「16×16」の動き補償予測ブロックと、それを四分割した大きさの「8×8」の動き補償予測ブロックが例示されている。以下、上記の一般呼称に倣って、「16×16」の動き補償予測ブロックを「マクロブロック(略号:MB)」といい、それを四分割した大きさの「8×8」の動き補償予測ブロックを「サブブロック(略号:SB)」ということにする。但し、これは、両者のブロックを区別するための、あくまでも説明上の便宜であって、これらの呼び名(マクロ・・・・、サブ・・・・)から発明の外縁を把握してはならない。また、4個のSBの各々に左上から順に添え字0、1,2,3を付けて識別することにする。すなわち、左上のSBをSB0 、右上のSBをSB1 、左下のSBをSB2 、右下のSBをSB3 として識別することにする。
<動き補償予測符号化装置の構成>
次に、動き補償予測符号化装置の構成を説明する。
図3は、動き補償予測符号化装置のブロック図である。動き補償予測符号化装置10は、入力されたビットストリーム中の現フレーム(元画像)と予測画像との差分をとる減算部11と、その差分を何らかの2次元関数の有限級数変換式(たとえば、2次元離散コサイン変換:DCT)として表示することにより圧縮する変換部12と、変換式の係数を量子化する量子化部13と、この量子化データと後述の動き情報及び分割モードとを符号化(たとえば、エントロピー符号化)して、その符号化ビットストリームを伝送媒体や蓄積媒体に出力する符号化部14と、量子化データを逆量子化する逆量子化部15と、逆量子化されたデータを逆変換して元の差分に戻す逆変換部16と、この差分と予測画像とを加算して復元画像を再生する加算部17と、復元画像を保持する復元画像メモリ18と、現在の元画像と復元画像メモリ18に保持されている一つ前の復元画像(参照画像)とに基づいて動き情報(動きベクトル等)やブロックの分割モードを推定する動き推定部19(ブロック選択手段)と、この動き情報に基づいて予測画像を生成する動き補償部20とを備える。
<動き推定部の構成と動作>
図4は、動き推定部19の概念的なブロック図である。動き推定部19は、推定動きベクトル演算部21(第一動きベクトル演算手段)、第一判定部22(第一判定手段)、MB(マクロブロック)探索部23(第二動きベクトル演算手段)、第一MB動きベクトル出力部24(第一選択手段)、SB(サブブロック)探索部25(第三動きベクトル演算手段)、第二判定部26(第二判定手段)、第二MB動きベクトル出力部27(第二選択手段)、SB動きベクトル出力部28(第二選択手段)を備える。
推定動きベクトル演算部21は、SB0 〜SB3 (図2参照)の各々について、探索アルゴリズム(たとえば、最近傍探索法などの高速探索アルゴリズム)の第1反復(発明の要旨に記載の「予め定められた反復数又は予め定められた第1の反復数以下の少ない反復」に相当)だけを行って、SB0 〜SB3 の大まかな推定動きベクトルfv0 〜fv3 を演算出力する。この演算に関する詳細は、後述の推定動きベクトル演算処理(図10及び図11参照)で説明する。
第一判定部22は、推定動きベクトルfv0 〜fv3 の等価(fv0 =fv1 =fv2 =fv3 )を判定し、等価であれば、MB探索部23を起動し、等価でなければ、SB探索部25を起動する。
MB探索部23は、推定動きベクトルfv0 〜fv3 が等価(fv0 =fv1 =fv2 =fv3 )の場合に、16×16分割モードを出力するとともに、たとえば、最近傍探索法などによりMBの動きベクトルmvを求め、その動きベクトルmvを、第一MB動きベクトル出力部24を介して出力する。
SB探索部25は、推定動きベクトルfv0 〜fv3 が等価(fv0 =fv1 =fv2 =fv3 )でない場合に、たとえば、最近傍探索法などによりSB0 、SB1 、SB2 及びSB3 のそれぞれの動きベクトルmv0 、mv1 、mv2 、mv3 を求める。
第二判定部26は、SB0 、SB1 、SB2 及びSB3 のそれぞれの動きベクトルmv0 、mv1 、mv2 、mv3 の等価(mv0 =mv1 =mv2 =mv3 )を判定し、等価であれば、第二MB動きベクトル出力部27を介して16×16分割モードと一つの動きベクトル(mv0 )を出力する一方、等価でなければ、SB動きベクトル出力部28を介して、8×8分割モードと四つの動きベクトル(mv0 、mv1 、mv2 、mv3 )を出力する。
図5及び図6は、動き推定部19の動作を説明するための概念図である。まず、図5に示すように、推定動きベクトル演算部21で計算された4つのサブブロック(SB0 、SB1 、SB2 、SB3 )の推定動きベクトル(fv0 、fv1 、fv2 、fv3 )が等価である場合は、それらの4つのサブブロックに対応するマクロブロック(MB)の動きベクトル(mv)も高い蓋然性でほぼ同じになる。つまり、4つのサブブロックの推定動きベクトル(fv0 、fv1 、fv2 、fv3 )が等価である(揃っている)ということは、それらの4つのサブブロック内の各画像が同一方向に且つ同一量だけ動いているということであり、これは、すなわち、それらの4つのサブブロックに対応するマクロブロック(MB)の画像の動きを表しているからである。ゆえに、この場合は、演算量の削減及び消費電力の抑制並びに処理のオーバヘッドを減らす観点から、大きい分割モード(たとえば、「16×16」)を選択(第一MB動きベクトル出力部24)する。
一方、図6に示すように、推定動きベクトル演算部21で計算された4つのサブブロック(SB0 、SB1 、SB2 、SB3 )の推定動きベクトル(fv0 、fv1 、fv2 、fv3 )が等価でない場合(不揃いの場合)は、それらの4つのサブブロック内の各画像がバラバラに動いていることを示唆する。但し、この示唆は正しくないかも知れない。推定動きベクトル(fv0 、fv1 、fv2 、fv3 )は1反復(予め定められた反復数又は予め定められた第1の反復数以下の少ない反復)だけのあくまでも“推定値”であって、完全なものではないからである。最終判断は、SB探索部25で4つのサブブロック(SB0 、SB1 、SB2 、SB3 )の正確な動きベクトル(mv0 、mv1 、mv2 、mv3 )を求め、第二判定部26でそれらの等価(mv0 =mv1 =mv2 =mv3 )を判定して行う。そして、その最終判断でも、やはり等価でなければ、上記の“示唆”は正しかったから、サブブロック毎の正確な動きを検出するために、小さな分割モード(たとえば、4つの「8×8」)を選択(SB動きベクトル出力部28)する。一方、第二判定部26の判定結果が“等価でない”場合は、上記の“示唆”は誤りであると判断し、演算量の削減等を意図して大きい分割モード(たとえば、「16×16」)を選択(第二MB動きベクトル出力部27)する。
<動き推定部の詳細動作>
次に、上記の動き推定部19の動作をより詳しく説明する。なお、ここではフローチャートの形で説明するが、これには二つの意味合いがある。第一の意味は、フローに沿って順番に動作説明を行うことにより理解を助ける点にあり、第二の意味は、上記の動き推定部19のそれぞれの機能をハードロジックで構成する実施態様だけでなく、このようなフローチャートの流れに沿って設計されたソフトウェアとコンピュータとの有機的結合によって実現される実施態様も排除しない点にある。
まず、フローチャートで用いられる用語等について説明する。
図7は、元画像のブロック位置(座標)とブロックサイズを説明する図である。この図において、元画像29の升目30のそれぞれはブロック(MB又はSB)であり、それらのブロック位置は、たとえば、その升目30の左上隅の画素座標(x,y)で表されるものとする。また、ブロックサイズは横方向(行方向)をsx、縦方向(列方向)をsyとして表されるものとする。
図8は、参照画像に与えるオフセットを示す図である。この図において、参照画像31の上のブロック32のオフセットは(ox,oy)で表されるものとする。
<動き推定部の動作フロー>
図9は、動き推定部19の動作フローチャートを示す図である。このフローチャートを開始すると、まず、SB0 〜SB3 (図2参照)の各々について、探索アルゴリズム(たとえば、最近傍探索法などの高速探索アルゴリズム)の第1反復(予め定められた反復数又は予め定められた第1の反復数以下の少ない反復)だけを行って、SB0 〜SB3 の大まかな推定動きベクトルfv0 〜fv3 を演算出力する推定動きベクトル演算処理(ステップS10:第一動きベクトル演算工程)を実行する。次いで、式「fv0 =fv1 =fv2 =fv3 」を評価(ステップS11:第一判定工程)して、その評価結果が“True”であるか否かを判定する(ステップS12)。そして、その判定結果が“True”であれば、次に、MB探索処理(ステップS13:第二動きベクトル演算工程)を実行し、そのMB探索処理で得られたMB動きベクトル(mv)と大きい分割モード(たとえば、「16×16」)とを出力(ステップS14:選択工程、第一選択工程)した後、フローチャートを終了する。
一方、ステップS12の判定結果が“True”でなければ、SB探索処理(ステップS15:第三動きベクトル演算工程)を実行し、式「mv0 =mv1 =mv2 =mv3 」を評価(ステップS16:第二判定工程)して、その評価結果が“True”であるか否かを判定する(ステップS17)。そして、その判定結果が“True”であれば、次に、MB動きベクトル(mv0 )と大きい分割モード(たとえば、「16×16」)とを出力(ステップS18:選択工程、第二選択工程)してフローチャートを終了し、その判定結果が“True”でなければ、SB動きベクトル(mv0 〜mv3 )と小さい分割モード(たとえば、「8×8」)とを出力(ステップS19:選択工程、第二選択工程)してフローチャートを終了する。
<推定動きベクトル演算処理>
図10及び図11は、推定動きベクトル演算処理の動作フローチャートを示す図である。このフローチャートを開始すると、まず、ブロックサイズ変数sx、syとループ変数iにそれぞれ初期値をセットする(ステップS20)。iの初期値は“0”、sxとsyの初期値はSBの横サイズと縦サイズに相当する“8”である。
初回(i=0):
まず、i=0を判定し(ステップS21)、x=X、y=Yをセットする(ステップS22)。X及びYはSB0 の位置座標を表している。したがって、この回(i=0)では、図2の左上のサブブロック(SB0 )を対象にした処理が行われる。
次に、SAD関数を用いて、探索中心(x0 ,y0 )の残差評価値A、探索中心(x0 ,y0 )の1画素右(x0 +1、y0 )の残差評価値B、探索中心(x0 ,y0 )の1画素左(x0 −1、y0 )の残差評価値C、探索中心(x0 ,y0 )の1画素上(x0 、y0 +1)の残差評価値D、及び、探索中心(x0 ,y0 )の1画素下(x0 、y0 −1)の残差評価値Eを演算する(ステップS23〜ステップS27)。SAD関数とは、差分絶対値和(sum of absolute difference)を計算するための関数である。
なお、探索中心のオフセット(x0 ,y0 )は、ゼロベクトルとしてもよいし、何らかの方法(たとえば、H.264に定められているメディアン予測)によって与えられた予測ベクトルとしてもよい。
SAD関数は、残差評価値A〜Eごとに計算される。すなわち、
A=SAD(x,y,x0 、y0 ,sx,sy)
B=SAD(x,y,x0 +1、y0 ,sx,sy)
C=SAD(x,y,x0 −1、y0 ,sx,sy)
D=SAD(x,y,x0 、y0 +1,sx,sy)
E=SAD(x,y,x0 、y0 −1,sx,sy)
の5回計算される。
今、x=X、y=Y、sx=8、sy=8であるから、
A=SAD(X,Y,x0 、y0 ,8,8)
B=SAD(X,Y,x0 +1、y0 ,8,8)
C=SAD(X,Y,x0 −1、y0 ,8,8)
D=SAD(X,Y,x0 、y0 +1,8,8)
E=SAD(X,Y,x0 、y0 −1,8,8)
となる。これらの式は、たとえば、最近傍探索法などの高速探索アルゴリズムの1反復(予め定められた反復数又は予め定められた第1の反復数以下の少ない反復)分に相当する。
次に、Min関数を用いて、A、B、C、D、Eの最小値を取り出し(ステップS28)、その最小値を変数SADminに格納する。
次に、SADminに格納されている最小値がA〜Eのいずれであるかを判定する(ステップS29〜ステップS32)。そして、SADmin=Aであれば、fv(i)に(0,0)をセットし(ステップS33)、SADmin=Bであれば、fv(i)に(1,0)をセットし(ステップS34)、SADmin=Cであれば、fv(i)に(−1,0)をセットし(ステップS35)、SADmin=Dであれば、fv(i)に(0,1)をセットし(ステップS36)、SADmin=Eであれば、fv(i)に(0,−0)をセットする(ステップS37)。
今、i=0であるから、このfv(i)はfv0 である。したがって、この段階で、図2の左上のサブブロック(SB0 )の推定動きベクトルfv0 が得られる。この推定動きベクトルfv0 は、最近傍探索法などの高速探索アルゴリズムの1反復(予め定められた反復数又は予め定められた第1の反復数以下の少ない反復)分に相当する演算を行って得られたものであり、同アルゴリズムを最大反復(予め定められた反復数又は予め定められた第1の反復数)回行って得られた値と比べて精度は劣るが、大凡の動きベクトルの傾向を把握する(推定する)値として差し支えないものである。
第一回目のループ(i=1):
次に、ループ変数iを+1し(ステップS38)、i>3であるか否かを判定する(ステップS29)。今、i=1であるからループし、i=1を判定して(ステップS40)、x=X+8、y=Yをセットする(ステップS41)。X+8及びYはSB1 の位置座標を表している。したがって、この回(i=1)では、図2の右上のサブブロック(SB1 )を対象にした処理が行われる。
次に、SAD関数を用いて、探索中心(x0 ,y0 )の残差評価値A、探索中心(x0 ,y0 )の1画素右(x0 +1、y0 )の残差評価値B、探索中心(x0 ,y0 )の1画素左(x0 −1、y0 )の残差評価値C、探索中心(x0 ,y0 )の1画素上(x0 、y0 +1)の残差評価値D、及び、探索中心(x0 ,y0 )の1画素下(x0 、y0 −1)の残差評価値Eを演算する(ステップS23〜ステップS27)。
初回と同様に、SAD関数は、残差評価値A〜Eごとに計算される。すなわち、
A=SAD(x,y,x0 、y0 ,sx,sy)
B=SAD(x,y,x0 +1、y0 ,sx,sy)
C=SAD(x,y,x0 −1、y0 ,sx,sy)
D=SAD(x,y,x0 、y0 +1,sx,sy)
E=SAD(x,y,x0 、y0 −1,sx,sy)
の5回計算される。
今、x=X+8、y=Y、sx=8、sy=8であるから、
A=SAD(X+8,Y,x0 、y0 ,8,8)
B=SAD(X+8,Y,x0 +1、y0 ,8,8)
C=SAD(X+8,Y,x0 −1、y0 ,8,8)
D=SAD(X+8,Y,x0 、y0 +1,8,8)
E=SAD(X+8,Y,x0 、y0 −1,8,8)
となる。これらの式は、たとえば、最近傍探索法などの高速探索アルゴリズムの1反復(予め定められた反復数又は予め定められた第1の反復数以下の少ない反復)分に相当する。
次に、Min関数を用いて、A、B、C、D、Eの最小値を取り出し(ステップS28)、その最小値を変数SADminに格納する。
次に、SADminに格納されている最小値がA〜Eのいずれであるかを判定する(ステップS29〜ステップS32)。そして、SADmin=Aであれば、fv(i)に(0,0)をセットし(ステップS33)、SADmin=Bであれば、fv(i)に(1,0)をセットし(ステップS34)、SADmin=Cであれば、fv(i)に(−1,0)をセットし(ステップS35)、SADmin=Dであれば、fv(i)に(0,1)をセットし(ステップS36)、SADmin=Eであれば、fv(i)に(0,−0)をセットする(ステップS37)。
今、i=1であるから、このfv(i)はfv1 である。したがって、この段階で、図2の右上のサブブロック(SB1 )の推定動きベクトルfv1 が得られる。この推定動きベクトルfv1 も、上記の推定動きベクトルfv0 と同様に、最近傍探索法などの高速探索アルゴリズムの1反復(予め定められた反復数又は予め定められた第1の反復数以下の少ない反復)分に相当する演算を行って得られたものであり、同アルゴリズムを最大反復(予め定められた反復数又は予め定められた第1の反復数)回行って得られた値と比べて精度は劣るが、大凡の動きベクトルの傾向を把握する(推定する)値として差し支えないものである。
第二回目のループ(i=2):
次に、ループ変数iを+1し(ステップS38)、i>3であるか否かを判定する(ステップS29)。今、i=2であるからループし、i=2を判定して(ステップS42)、x=X、y=Y+8をセットする(ステップS43)。X及びY+8はSB2 の位置座標を表している。したがって、この回(i=2)では、図2の左下のサブブロック(SB2 )を対象にした処理が行われる。
次に、SAD関数を用いて、探索中心(x0 ,y0 )の残差評価値A、探索中心(x0 ,y0 )の1画素右(x0 +1、y0 )の残差評価値B、探索中心(x0 ,y0 )の1画素左(x0 −1、y0 )の残差評価値C、探索中心(x0 ,y0 )の1画素上(x0 、y0 +1)の残差評価値D、及び、探索中心(x0 ,y0 )の1画素下(x0 、y0 −1)の残差評価値Eを演算する(ステップS23〜ステップS27)。
初回及び第一回のループと同様に、SAD関数は、残差評価値A〜Eごとに計算される。すなわち、
A=SAD(x,y,x0 、y0 ,sx,sy)
B=SAD(x,y,x0 +1、y0 ,sx,sy)
C=SAD(x,y,x0 −1、y0 ,sx,sy)
D=SAD(x,y,x0 、y0 +1,sx,sy)
E=SAD(x,y,x0 、y0 −1,sx,sy)
の5回計算される。
今、x=X、y=Y+8、sx=8、sy=8であるから、
A=SAD(X,Y+8,x0 、y0 ,8,8)
B=SAD(X,Y+8,x0 +1、y0 ,8,8)
C=SAD(X,Y+8,x0 −1、y0 ,8,8)
D=SAD(X,Y+8,x0 、y0 +1,8,8)
E=SAD(X,Y+8,x0 、y0 −1,8,8)
となる。これらの式は、たとえば、最近傍探索法などの高速探索アルゴリズムの1反復(予め定められた反復数又は予め定められた第1の反復数以下の少ない反復)分に相当する。
次に、Min関数を用いて、A、B、C、D、Eの最小値を取り出し(ステップS28)、その最小値を変数SADminに格納する。
次に、SADminに格納されている最小値がA〜Eのいずれであるかを判定する(ステップS29〜ステップS32)。そして、SADmin=Aであれば、fv(i)に(0,0)をセットし(ステップS33)、SADmin=Bであれば、fv(i)に(1,0)をセットし(ステップS34)、SADmin=Cであれば、fv(i)に(−1,0)をセットし(ステップS35)、SADmin=Dであれば、fv(i)に(0,1)をセットし(ステップS36)、SADmin=Eであれば、fv(i)に(0,−0)をセットする(ステップS37)。
今、i=2であるから、このfv(i)はfv2 である。したがって、この段階で、図2の左下のサブブロック(SB2 )の推定動きベクトルfv2 が得られる。この推定動きベクトルfv2 も、上記の推定動きベクトルfv0 、fv1 と同様に、最近傍探索法などの高速探索アルゴリズムの1反復(予め定められた反復数又は予め定められた第1の反復数以下の少ない反復)分に相当する演算を行って得られたものであり、同アルゴリズムを最大反復(予め定められた反復数又は予め定められた第1の反復数)回行って得られた値と比べて精度は劣るが、大凡の動きベクトルの傾向を把握する(推定する)値として差し支えないものである。
第三回目のループ(i=3):
次に、ループ変数iを+1し(ステップS38)、i>3であるか否かを判定する(ステップS29)。今、i=3であるからループし、i=3を判定して(ステップS42の“NO”)、x=X+8、y=Y+8をセットする(ステップS44)。X+8及びY+8はSB3 の座標を表す。したがって、この回(i=3)では、図2の左下のサブブロック(SB3 )を対象にした処理が行われる。
次に、SAD関数を用いて、探索中心(x0 ,y0 )の残差評価値A、探索中心(x0 ,y0 )の1画素右(x0 +1、y0 )の残差評価値B、探索中心(x0 ,y0 )の1画素左(x0 −1、y0 )の残差評価値C、探索中心(x0 ,y0 )の1画素上(x0 、y0 +1)の残差評価値D、及び、探索中心(x0 ,y0 )の1画素下(x0 、y0 −1)の残差評価値Eを演算する(ステップS23〜ステップS27)。
初回〜第二回のループと同様に、SAD関数は、残差評価値A〜Eごとに計算される。すなわち、
A=SAD(x,y,x0 、y0 ,sx,sy)
B=SAD(x,y,x0 +1、y0 ,sx,sy)
C=SAD(x,y,x0 −1、y0 ,sx,sy)
D=SAD(x,y,x0 、y0 +1,sx,sy)
E=SAD(x,y,x0 、y0 −1,sx,sy)
の5回計算される。
今、x=X+8、y=Y+8、sx=8、sy=8であるから、
A=SAD(X+8,Y+8,x0 、y0 ,8,8)
B=SAD(X+8,Y+8,x0 +1、y0 ,8,8)
C=SAD(X+8,Y+8,x0 −1、y0 ,8,8)
D=SAD(X+8,Y+8,x0 、y0 +1,8,8)
E=SAD(X+8,Y+8,x0 、y0 −1,8,8)
となる。これらの式は、たとえば、最近傍探索法などの高速探索アルゴリズムの1反復(予め定められた反復数又は予め定められた第1の反復数以下の少ない反復)分に相当する。
次に、Min関数を用いて、A、B、C、D、Eの最小値を取り出し(ステップS28)、その最小値を変数SADminに格納する。
次に、SADminに格納されている最小値がA〜Eのいずれであるかを判定する(ステップS29〜ステップS32)。そして、SADmin=Aであれば、fv(i)に(0,0)をセットし(ステップS33)、SADmin=Bであれば、fv(i)に(1,0)をセットし(ステップS34)、SADmin=Cであれば、fv(i)に(−1,0)をセットし(ステップS35)、SADmin=Dであれば、fv(i)に(0,1)をセットし(ステップS36)、SADmin=Eであれば、fv(i)に(0,−0)をセットする(ステップS37)。
今、i=3であるから、このfv(i)はfv3 である。したがって、この段階で、図2の右下のサブブロック(SB3 )の推定動きベクトルfv3 が得られる。この推定動きベクトルfv3 も、上記の推定動きベクトルfv0 、fv1 、fv2 と同様に、最近傍探索法などの高速探索アルゴリズムの1反復(予め定められた反復数又は予め定められた第1の反復数以下の少ない反復)分に相当する演算を行って得られたものであり、同アルゴリズムを最大反復(予め定められた反復数又は予め定められた第1の反復数)回行って得られた値と比べて精度は劣るが、大凡の動きベクトルの傾向を把握する(推定する)値として差し支えないものである。
次に、ループ変数iを+1し(ステップS38)、i>3であるか否かを判定するが(ステップS29)、i=4であるので、ループを抜けてフローチャートを終了する。
この推定動きベクトル演算処理によれば、図2の4つのサブブロック(SB0 〜SB3 )の各々の大まかな推定動きベクトルfv0 〜fv3 が得られる。
すなわち、SB0 の探索中心(x0 ,y0 )の残差評価値A、探索中心(x0 ,y0 )の1画素右(x0 +1、y0 )の残差評価値B、探索中心(x0 ,y0 )の1画素左(x0 −1、y0 )の残差評価値C、探索中心(x0 ,y0 )の1画素上(x0 、y0 +1)の残差評価値D、及び、探索中心(x0 ,y0 )の1画素下(x0 、y0 −1)の残差評価値Eのうち最小のものを「fv0 」として、
また、SB1 の探索中心(x0 ,y0 )の残差評価値A、探索中心(x0 ,y0 )の1画素右(x0 +1、y0 )の残差評価値B、探索中心(x0 ,y0 )の1画素左(x0 −1、y0 )の残差評価値C、探索中心(x0 ,y0 )の1画素上(x0 、y0 +1)の残差評価値D、及び、探索中心(x0 ,y0 )の1画素下(x0 、y0 −1)の残差評価値Eのうち最小のものを「fv1 」として、
また、SB2 の探索中心(x0 ,y0 )の残差評価値A、探索中心(x0 ,y0 )の1画素右(x0 +1、y0 )の残差評価値B、探索中心(x0 ,y0 )の1画素左(x0 −1、y0 )の残差評価値C、探索中心(x0 ,y0 )の1画素上(x0 、y0 +1)の残差評価値D、及び、探索中心(x0 ,y0 )の1画素下(x0 、y0 −1)の残差評価値Eのうち最小のものを「fv2 」として、
また、SB3 の探索中心(x0 ,y0 )の残差評価値A、探索中心(x0 ,y0 )の1画素右(x0 +1、y0 )の残差評価値B、探索中心(x0 ,y0 )の1画素左(x0 −1、y0 )の残差評価値C、探索中心(x0 ,y0 )の1画素上(x0 、y0 +1)の残差評価値D、及び、探索中心(x0 ,y0 )の1画素下(x0 、y0 −1)の残差評価値Eのうち最小のものを「fv3 」として、それぞれ得られる。
これらの推定動きベクトルfv0 〜fv3 は、SB0 〜SB3 のそれぞれで5回のSAD演算を行うことによって得られたものであり、この演算は、最近傍探索法などの高速探索アルゴリズムの1反復(予め定められた反復数又は予め定められた第1の反復数以下の少ない反復)分に相当するから、当該高速探索アルゴリズムの全反復(予め定められた反復数又は予め定められた第1の反復数)演算に比べて短時間で結果が得られ、しかも、演算の処理量も少ない。
<MB探索処理>
図12は、MB探索処理の動作フローチャートを示す図である。このフローチャートを開始すると、まず、fv0 が初期値(x0 ,y0 )であるか否かを判定し(ステップS50)、初期値である場合はmvに(x0 ,y0 )をセット(ステップS51)した後、フローチャートを終了する。
一方、fv0 が初期値(x0 ,y0 )でなかった場合は、まず、x=X,y=Y、ox=fv0 、oy=fv0 、sx=16、sy=16、n=14をセット(ステップS52)する。次いで、それらを引数にしてNNS関数処理(図14又は図15)を実行し、その関数の戻り値をmvにセットして(ステップS53)、フローチャートを終了する。ここで、x=X,y=Y、ox=fv0 、oy=fv0 、sx=16、sy=16、n=14であるから、NNS(X,Y,fv0 ,fv0 ,16,16,14)となる。NNS関数は、与えられた引数を条件にして最近傍探索(Nearest Neighbours Search)を行い、その結果(動きベクトル)を返す関数である。NNS関数の処理内容については後述する(図13及び図14)。
このように、このMB探索処理では、高速探索アルゴリズム、たとえば、最近傍探索法のNNS関数を用い、その最大反復回数(n)を、たとえば、14回(この回数は、発明の要旨に記載の「予め定められた第2の反復数」に相当する)にして、一つのマクロブロック(MB)の正確な動きベクトル(mv)を演算する。
<SB探索処理>
図13は、SB探索処理の動作フローチャートを示す図である。このフローチャートを開始すると、まず、sx=8、sy=8、n=14をセットする(ステップS60)。次いで、x=X、y=Y、ox=fv0 、oy=fv0 をセットし(ステップS61)、それらを引数にしてNNS関数処理(図14又は図15)を実行し、その関数の戻り値をmv0 にセットする(ステップS62)。ここで、x=X、y=Y、ox=fv0 、oy=fv0 、sx=8、sy=8、n=14であるから、NNS(X,Y,fv0 ,fv0 ,8,8,14)となる。
次いで、x=X+8、y=Y、ox=fv1 、oy=fv1 をセットし(ステップS63)、それらを引数にしてNNS関数処理(図14又は図15)を実行し、その関数の戻り値をmv1 にセットする(ステップS64)。ここで、x=X+8、y=Y、ox=fv1 、oy=fv1 、sx=8、sy=8、n=14であるから、NNS(X+8,Y,fv1 ,fv1 ,8,8,14)となる。
次いで、x=X、y=Y+8、ox=fv2 、oy=fv2 をセットし(ステップS65)、それらを引数にしてNNS関数処理(図14又は図15)を実行し、その関数の戻り値をmv2 にセットする(ステップS66)。ここで、x=X、y=Y+8、ox=fv2 、oy=fv2 、sx=8、sy=8、n=14であるから、NNS(X,Y+8,fv2 ,fv2 ,8,8,14)となる。
次いで、x=X+8、y=Y+8、ox=fv3 、oy=fv3 をセットし(ステップS67)、それらを引数にしてNNS関数処理(図14又は図15)を実行して、その関数の戻り値をmv3 にセットする(ステップS68)。ここで、x=X+8、y=Y+8、ox=fv3 、oy=fv3 、sx=8、sy=8、n=14であるから、NNS(X+8,Y+8,fv3 ,fv3 ,8,8,14)となる。
このように、このSB探索処理では、高速探索アルゴリズム、たとえば、最近傍探索法のNNS関数を用い、その最大反復回数(n)を、たとえば、14回(この回数は、発明の要旨に記載の「予め定められた第3の反復数」に相当する)にして、各サブブロック(SB0 、SB1 、SB2 、SB3)毎の正確な動きベクトル(mv0 、mv1 、mv2 、mv3 )を演算する。
なお、以上の例では、MB探索処理の最大反復数n(予め定められた第2の反復数)とSB探索処理の最大反復数n(予め定められた第3の反復数)とを同一の値(“14”)にしているが、これに限定されない。異なる値であってもよい。
<NNS関数処理>
図14は、NNS関数処理のフローチャートを示す図である。この関数は与えられた引数(x:ブロックX座標,y:ブロックY座標,ox:オフセットX座標,oy:オフセットY座標,sx:ブロックサイズX,sy:ブロックサイズY,n:最大反復数)に従って高速探索アルゴリズムの一つである最近傍探索法を実行し、その結果を戻り値として返す。
NNS関数は、まず、反復のためのループ変数iに初期値0をセットし(ステップS70)、次いで、探索中心の残差評価値A、探索中心の1画素右の残差評価値B、探索中心の1画素左の残差評価値C、探索中心の1画素上の残差評価値D、及び、探索中心の1画素下の残差評価値Eを演算する(ステップS71)。これらの残差評価値A〜Eは、前記の推定動きベクトル演算処理(図10及び図11参照)と同様に、SAD関数を用いて求めることができる。
次に、A〜Eのうちの最小値を求める(ステップS72)。この最小値も、前記の推定動きベクトル演算処理(図10及び図11参照)と同様に、Min関数を用いて求めることができる。
次に、最小値が探索中心で得られたものであるか否かを判定する(ステップS73)。そして、最小値が探索中心で得られたものであれば、その探索中心の座標を戻り値にして(ステップS74)、フローを終了(反復を終了)する。
一方、最小値が探索中心で得られたものでなければ、最小値が得られた画素を新たな探索中心にセットする(ステップS75)。すなわち、最小値=Bであれば探索中心の1画素右を新たな探索中心にセットし、最小値=Cであれば探索中心の1画素左を新たな探索中心にセットし、最小値=Dであれば探索中心の1画素上を新たな探索中心にセットし、又は、最小値=Eであれば探索中心の1画素下を新たな探索中心にセットする。
次いで、ループ変数iを+1して(ステップS76)、そのiが最大反復数nを超えているか否かを判定し(ステップS77)、超えていなければ、ステップS71に戻って以上の処理を繰り返し(反復し)、超えていれば、そのときの探索中心の座標を戻り値にして(ステップS74)、フローを終了(反復を終了)する。
このように、NNS関数処理では、与えられた引数の最大反復数nを上限にして反復を繰り返しながら逐次に探索を行い、正確な動きベクトルを返すことができる。
ところで、このNNS関数処理では、第一反復(i=0)から処理を開始しているが、先の推定動きベクトル演算処理(図10及び図11参照)においても、この第一反復に相当する処理(ステップS23〜ステップS27)を行っているため、二重の演算であり無駄であるから、次のように改良することが望ましい。
図15は、改良されたNNS関数処理の要部フローチャートを示す図である。改良前との違いは、探索中心及びその探索中心近傍4点の計5個の残差評価値A〜Eを演算する(ステップS71)前に、新たな処理(ステップS78)を行う点にある。
この処理(ステップS78)では、i=0であるか否かを判定(つまり、第一反復であるか否か)し(ステップS78a)、第一反復でなければ(第二反復、第三反復、・・・・であれば)、改良前と同様に探索中心及びその探索中心近傍4点の計5個の残差評価値A〜Eを演算する(ステップS71)が、第一反復である場合には、「推定動きベクトル演算処理の中間値(図10のステップS23〜ステップS27で求められたA〜E)を取り込み、それらを探索中心及びその探索中心近傍4点の計5個の残差評価値A〜Eとして流用する」(ステップS78b)。
したがって、この改良されたNNS関数処理によれば、推定動きベクトル演算処理の中間値を、MB探索処理(図12)やSB探索処理(図13)の反復の初期値として再利用するので、それらのMB探索処理やSB探索処理の反復数を少なくして、処理時間を短縮できる。この処理時間の短縮効果は、たとえ、推定動きベクトル演算処理の反復数が最小(第一反復だけ)であったとしても絶大である。
MB探索処理やSB探索処理は、ブロックの数だけ実行する必要があり、且つ、一つのビデオストリームあたり「ブロック数×フレーム数」の膨大な量の探索処理が行われるからであり、それゆえ、たとえ、推定動きベクトル演算処理の反復数が最小(第一反復だけ)であったとしても、トータルで見た場合、「ブロック数×フレーム数」に相当する大量の反復処理を省略できるからである。
<実施形態のまとめ>
このように、本実施形態によれば、最近傍探索法の第1反復(予め定められた反復数又は予め定められた第1の反復数以下の少ない反復)に相当する演算だけを行って得られた各サブブロック(SB0 〜SB3 )の各々の推定動きベクトル(fv0 〜fv3 )に基づいてマクロブロック(MB)内の動きが一様に近いか否かを早い段階で判断し、その判断結果に従って探索ブロックの分割方法(大きい分割モードにするか、小さい分割モードにするか)を決定するので、従来技術に比べて、その決定に要する時間を短くすることができ、しかも、次に述べる理由より、計算量をほぼ半減することもできる。
計算量をほぼ半減できる理由は、次のとおりである。従来技術では一つのマクロブロック(16×16ブロック)と、そのマクロブロックを分割した4つのサブブロック(8×8ブロック)のそれぞれで動き補償予測を行ってから探索ブロックの分割方法を決めていたため、一つのマクロブロックの計算量をAとすると、4つのサブブロックの計算量もほぼA相当となり、結局、トータルの計算量が略2倍(≒2A)になっていた。
これに対して、本実施形態では、MB探索(図4のMB探索部23/図9のステップS13のMB探索処理)とSB探索(図4のSB探索部25/図9のステップS15のSB探索処理)のいずれか一方しか行わないため、それらの計算量をAとすると、トータルの計算量は、このAに、図4の推定動きベクトル演算部21(又は図9のステップS10の推定動きベクトル演算処理)の計算量αを加えた程度(A+α)で済む。しかも、推定動きベクトル演算部21(又は図9のステップS10の推定動きベクトル演算処理)の計算量αは、最近傍探索法などの高速探索アルゴリズムの1反復(予め定められた反復数又は予め定められた第1の反復数以下の少ない反復)分に相当(したがって、A>>α)するから、結局、本実施形態のトータルの計算量(A+α)を、従来技術のそれ(≒2A)に比べてほぼ半減することができるのである。
また、上記の改良されたNNS関数処理(図15)を用いると、推定動きベクトル演算処理(図10及び図11)の途中で得られる中間値(ステップS23〜ステップS27で得られるA〜E)、つまり、探索アルゴリズムの予め定められた反復数又は予め定められた第1の反復数以下の少ない反復(n′)で演算された複数の第二ブロックの各々の動きベクトルを、MB探索処理(図12)やSB探索処理(図13)の反復の初期値として再利用できる。これにより、MB探索処理やSB探索処理の反復数を少なく(−n′)して、処理時間を短縮できる。
本発明は上記の実施形態に限定されない。その技術思想の範囲内において、様々な変形例を含むことはもちろんであり、たとえば、以下のようにしてもよい。
(1)サブブロックのサイズ、個数、形状は任意である。また、分割方法に階層関係があれば同様に適用できる。例えば、H.264では「16×16」を分割した「8×8」をさらに「4×8」、「8×4」、「4×4」に分割することができ、階層構造が二重になっているが、このいずれかの階層間で、または両方の階層間で行うことができる。
(2)残差評価値はSADの代わりにSSD(sum of squared difference:差分二乗和)等であってもよい。サブブロック評価値の集まりからブロック評価値を計算可能であれば、全く同様に適用できる。また、動きベクトルの符号割り当てコストを評価値に加えてもよい。
(3)推定動きベクトル(fv0 〜fv3 )を求めるための反復(予め定められた反復数又は予め定められた第1の反復数以下の少ない反復)は1回だけとしたが、2回ないしはそれ以上の反復を行ってもよい。少なくとも最大反復数(予め定められた反復数又は予め定められた第1の反復数)以下であればよい。反復回数を増やすほど、推定の確実さが高まる。
(4)推定動きベクトル(fv0 〜fv3 )の等価判別は、完全等価のみならず、各成分の差分絶対値が所定値以内などの近似等価によって行ってもよい。
(5)動き推定のための探索アルゴリズムは、最近傍探索法だけでなく、たとえば、Nステップ探索法や対数探索法など他のアルゴリズムを用いてもよい。
動き補償予測ブロックの種類を示す図である。 本実施形態の便宜的な選択対象となる二つの動き補償予測ブロックを示す図である。 動き補償予測符号化装置のブロック図である。 動き推定部19の概念的なブロック図である。 動き推定部19の動作を説明するための概念図(1/2)である。 動き推定部19の動作を説明するための概念図(2/2)である。 図元画像のブロック位置(座標)とブロックサイズを説明するである。 参照画像に与えるオフセットを示す図である。 動き推定部19の動作フローチャートを示す図である。 推定動きベクトル演算処理の動作フローチャートを示す図(1/2)である。 推定動きベクトル演算処理の動作フローチャートを示す図(2/2)である。 MB探索処理の動作フローチャートを示す図である。 SB探索処理の動作フローチャートを示す図である。 NNS関数処理のフローチャートを示す図である。 改良されたNNS関数処理のフローチャートを示す図である。 動き補償予測符号化の簡略化した概念図である。 動き補償予測符号化における被符号化画像生成の概念図である。
符号の説明
S10 推定動きベクトル演算処理(第一動きベクトル演算工程)
S11 第一判定処理(第一判定工程)
S13 MB探索処理(第二動きベクトル演算工程)
S14 MB動きベクトル出力(選択工程、第一選択工程)
S15 SB探索処理(第三動きベクトル演算工程)
S16 第二判定処理(第二判定工程)
S18 MB動きベクトル出力(選択工程、第二選択工程)
S19 SB動きベクトル出力(選択工程、第二選択工程)
10 動き補償予測符号化装置
19 動き推定部(ブロック選択手段)
21 推定動きベクトル演算部(第一動きベクトル演算手段)
22 第一判定部(第一判定手段)
23 MB探索部(第二動きベクトル演算手段)
24 第一MB動きベクトル出力部(第一選択手段)
25 SB探索部(第三動きベクトル演算手段)
26 第二判定部(第二判定手段)
27 第二MB動きベクトル出力部(第二選択手段)
28 SB動きベクトル出力部(第二選択手段)

Claims (5)

  1. 第一ブロックと該第一ブロックを複数に分割した第二ブロックのいずれか一方を動き補償予測ブロックとして選択する動き補償予測符号化装置において、
    前記第二ブロックの各々について、所定の探索アルゴリズムを予め定められた第1の反復数以下の少ない反復で動きベクトルを演算する第一動きベクトル演算手段と、
    この第一動きベクトル演算手段によって演算された各々の動きベクトルが完全等価又は近似等価であるか否かを判定する第一判定手段と、
    この第一判定手段による判定の結果、完全等価又は近似等価であると判定した場合に、前記第一ブロックを動き補償予測ブロックとして選択するよう制御する第一選択制御手段
    と、
    前記第一判定手段による判定の結果、完全等価又は近似等価であると判定した場合に、前記第一ブロックについて、前記所定の探索アルゴリズムにより予め定められた第2の反復数を上限として動きベクトルを演算する第二動きベクトル演算手段と、
    前記第一判定手段による判定の結果、完全等価又は近似等価でないと判定した場合に、前記第二ブロックの各々について、所定の探索アルゴリズムにより予め定められた第3の反復数を上限として動きベクトルを演算する第三動きベクトル演算手段と、
    この第三動きベクトル演算手段で演算された各々の動きベクトルが完全等価又は近似等価であるか否かを判定する第二判定手段と、
    前記第二判定手段による判定の結果、完全等価又は近似等価であると判定した場合に、前記第一ブロックを動き補償予測ブロックとして選択するよう制御する一方、前記第二判定手段による判定の結果、完全等価又は近似等価でないと判定した場合に、前記第二ブロックを動き補償予測ブロックとして選択するよう制御する第二選択制御手段と
    を備えたことを特徴とする動き補償予測符号化装置。
  2. 前記第二動きベクトル演算手段は、前記第一動きベクトル演算手段が前記所定の探索アルゴリズムをさせた結果得られた中間値を初期値として前記所定の探索アルゴリズムによる反復を開始することを特徴とする請求項記載の動き補償予測符号化装置。
  3. 前記所定の探索アルゴリズムとは、最近傍探索法又はNステップ探索法若しくは対数探索法を利用したアルゴリズムであることを特徴とする請求項1又は2記載の動き補償予測符号化装置。
  4. 第一ブロックと該第一ブロックを複数に分割した第二ブロックのいずれか一方を動き補
    償予測ブロックとして選択する動き補償予測符号化方法であって、
    前記第二ブロックの各々について、所定の探索アルゴリズムを予め定められた第1の反復数以下の少ない反復で動きベクトルを演算する第一動きベクトル演算ステップと、
    この第一動きベクトル演算ステップにて演算された各々の動きベクトルが完全等価又は近似等価であるか否かを判定する第一判定ステップと、
    この第一判定ステップによる判定の結果、完全等価又は近似等価であると判定した場合に、前記第一ブロックを動き補償予測ブロックとして選択するよう制御する第一選択制御ステップと、
    前記第一判定ステップによる判定の結果、完全等価又は近似等価であると判定した場合に、前記第一ブロックについて、前記所定の探索アルゴリズムにより予め定められた第2の反復数を上限として動きベクトルを演算する第二動きベクトル演算ステップと、
    前記第一判定ステップによる判定の結果、完全等価又は近似等価でないと判定した場合に、前記第二ブロックの各々について、所定の探索アルゴリズムにより予め定められた第3の反復数を上限として動きベクトルを演算する第三動きベクトル演算ステップと、
    この第三動きベクトル演算ステップで演算された各々の動きベクトルが完全等価又は近似等価であるか否かを判定する第二判定ステップと、
    前記第二判定ステップによる判定の結果、完全等価又は近似等価であると判定した場合に、前記第一ブロックを動き補償予測ブロックとして選択するよう制御する一方、前記第二判定ステップによる判定の結果、完全等価又は近似等価でないと判定した場合に、前記第二ブロックを動き補償予測ブロックとして選択するよう制御する第二選択制御ステップと
    を含むことを特徴とする動き補償予測符号化方法。
  5. 動き補償予測符号化処理を実行するコンピュータに、第一ブロックと該第一ブロックを複数に分割した第二ブロックのいずれか一方を動き補償予測ブロックとして選択する機能を実行させるプログラムであって、当該コンピュータを、
    前記第二ブロックの各々について、所定の探索アルゴリズムを予め定められた第1の反復数以下の少ない反復で動きベクトルを演算する第一動きベクトル演算手段、
    この第一動きベクトル演算手段によって演算された各々の動きベクトルが完全等価又は近似等価であるか否かを判定する第一判定手段、
    この第一判定手段による判定の結果、完全等価又は近似等価であると判定した場合に、前記第一ブロックを動き補償予測ブロックとして選択するよう制御する第一選択制御手段、
    前記第一判定手段による判定の結果、完全等価又は近似等価であると判定した場合に、前記第一ブロックについて、前記所定の探索アルゴリズムにより予め定められた第2の反復数を上限として動きベクトルを演算する第二動きベクトル演算手段、
    前記第一判定手段による判定の結果、完全等価又は近似等価でないと判定した場合に、前記第二ブロックの各々について、所定の探索アルゴリズムにより予め定められた第3の反復数を上限として動きベクトルを演算する第三動きベクトル演算手段、
    この第三動きベクトル演算手段で演算された各々の動きベクトルが完全等価又は近似等価であるか否かを判定する第二判定手段、
    前記第二判定手段による判定の結果、完全等価又は近似等価であると判定した場合に、前記第一ブロックを動き補償予測ブロックとして選択するよう制御する一方、前記第二判定手段による判定の結果、完全等価又は近似等価でないと判定した場合に、前記第二ブロックを動き補償予測ブロックとして選択するよう制御する第二選択制御手段
    として機能させることを特徴とするログラム。
JP2004368854A 2004-12-21 2004-12-21 動き補償予測符号化装置、動き補償予測符号化方法及びプログラム Active JP4438949B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004368854A JP4438949B2 (ja) 2004-12-21 2004-12-21 動き補償予測符号化装置、動き補償予測符号化方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004368854A JP4438949B2 (ja) 2004-12-21 2004-12-21 動き補償予測符号化装置、動き補償予測符号化方法及びプログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2009264503A Division JP4957780B2 (ja) 2009-11-20 2009-11-20 動き補償予測符号化装置、動き補償予測符号化方法及びプログラム

Publications (3)

Publication Number Publication Date
JP2006180014A JP2006180014A (ja) 2006-07-06
JP2006180014A5 JP2006180014A5 (ja) 2007-11-29
JP4438949B2 true JP4438949B2 (ja) 2010-03-24

Family

ID=36733722

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004368854A Active JP4438949B2 (ja) 2004-12-21 2004-12-21 動き補償予測符号化装置、動き補償予測符号化方法及びプログラム

Country Status (1)

Country Link
JP (1) JP4438949B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8311120B2 (en) * 2006-12-22 2012-11-13 Qualcomm Incorporated Coding mode selection using information of other coding modes
CN103703780B (zh) * 2011-07-22 2016-12-07 株式会社日立制作所 运动图像解码方法及图像编码方法

Also Published As

Publication number Publication date
JP2006180014A (ja) 2006-07-06

Similar Documents

Publication Publication Date Title
US8705611B2 (en) Image prediction encoding device, image prediction encoding method, image prediction encoding program, image prediction decoding device, image prediction decoding method, and image prediction decoding program
JP5373626B2 (ja) 複数の動きベクトル・プレディクタを使用して動きベクトルを推定する方法、装置、エンコーダ、デコーダ及びデコーディング方法
KR102042374B1 (ko) 이미지들의 시퀀스를 인코딩하기 위한 방법 및 디바이스 및 이미지들의 시퀀스를 디코딩하기 위한 방법 및 디바이스
CN101283600B (zh) 参考图像选择方法以及装置
KR100510137B1 (ko) 고속 움직임 추정을 위한 참조 픽쳐 및 블록 모드 결정방법, 그 장치, 블록 모드 결정 방법 및 그 장치
CN101326550A (zh) 利用预测指导的抽取搜索的运动估计
JP4523023B2 (ja) 画像符号化装置および方法
US20080002772A1 (en) Motion vector estimation method
JP2008227670A (ja) 画像符号化装置
JP2007189276A (ja) 画像圧縮装置及び画像圧縮プログラム
CN101888546A (zh) 一种运动估计的方法及装置
JP4957780B2 (ja) 動き補償予測符号化装置、動き補償予測符号化方法及びプログラム
CN108924551B (zh) 视频图像编码模式的预测方法及相关设备
CN114079792A (zh) 视频编码参考块的压缩方法、编码方法和装置
JP4257789B2 (ja) 動画像符号化装置
WO2016116984A1 (ja) 動画像符号化装置、動画像符号化方法および動画像符号化プログラム
JP4438949B2 (ja) 動き補償予測符号化装置、動き補償予測符号化方法及びプログラム
WO2019150411A1 (ja) 映像符号化装置、映像符号化方法、映像復号装置、映像復号方法、及び映像符号化システム
JP4547668B2 (ja) 動き補償予測符号化装置及び動き補償予測符号化方法
US20130195190A1 (en) Method for deciding motion partition mode and encoder
CN113794883B (zh) 一种编解码方法、装置及其设备
CN110662074B (zh) 一种运动矢量确定方法和设备
JP2012120108A (ja) 補間画像生成装置及びプログラム、並びに、動画像復号装置及びプログラム
US20240064336A1 (en) Image decoding apparatus and image encoding apparatus using ai, and methods performed thereby
JPH10164596A (ja) 動き検出装置

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071011

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071011

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090917

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090924

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091120

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

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

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

Free format text: PAYMENT UNTIL: 20130115

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4438949

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091229

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

Free format text: PAYMENT UNTIL: 20130115

Year of fee payment: 3