以下に、本発明の実施の形態を説明するが、その前に、特許請求の範囲に記載の発明の各手段と以下の実施の形態との対応関係を明らかにするために、各手段の後の括弧内に、対応する実施の形態(但し、一例)を付加して、本発明の特徴を記述すると、次のようになる。
即ち、請求項3に記載の画像符号化装置は、符号化対象画像の順方向動きベクトルと逆方向動きベクトルとを用いて、それぞれの対応する成分の和の絶対値和を符号化対象画像の動きの複雑さとして算出する算出手段(例えば、図6に示す動き量算出回路8など)と、前記符号化対象画像の順方向動きベクトルと逆方向動きベクトルとのそれぞれについて、成分の絶対値和、または、2乗和の平方根を前記符号化対象画像の動きの速さとして計算する計算手段と、1枚の過去参照画像および1枚の未来参照画像を参照して前記符号化対象画像を予測符号化する際に、前記算出手段により算出された前記符号化対象画像の動きの複雑さまたは速さを用いて前記符号化対象画像の予測モードを決定する予測モード決定手段(例えば、図7に示す予測モード決定回路21など)と、前記予測モードに対応して、前記符号化対象画像を符号化する符号化手段(例えば、図7に示すDCT回路12や、量子化回路13、可変長符号化回路15など)とを備え、前記符号化対象画像の動きの複雑さまたは速さが所定の閾値よりも小さい場合、前記符号化対象画像の逆方向画像に対する予測残差が、前記符号化対象画像の順方向画像に対する予測残差に対応する第1の閾値よりも大きいとき、前記符号化対象画像の予測モードを、順方向予測符号化に決定し、前記符号化対象画像の逆方向画像に対する予測残差が、前記符号化対象画像の順方向画像に対する予測残差に対応する前記第1の閾値より小さな第2の閾値よりも小さいとき、前記符号化対象画像の予測モードを、逆方向予測符号化に決定し、前記符号化対象画像の逆方向画像に対する予測残差が、前記第1の閾値より小さく、前記第2の閾値よりも大きいとき、前記符号化対象画像の予測モードを、両方向予測符号化に決定し、前記符号化対象画像の動きの複雑さまたは速さが所定の閾値よりも大きく、かつ、前記符号化対象画像の順方向参照画像までの第1の距離が、前記符号化対象画像の逆方向参照画像までの第2の距離よりも小さい場合、前記符号化対象画像の逆方向画像に対する予測残差が、前記符号化対象画像の順方向画像に対する予測残差、並びに、前記第1の距離、および前記第2の距離に対応する第3の閾値よりも大きいとき、前記符号化対象画像の予測モードを、順方向予測符号化に決定し、前記符号化対象画像の逆方向画像に対する予測残差が、前記符号化対象画像の順方向画像に対する予測残差、並びに、前記第1の距離、および前記第2の距離に対応する前記第3の閾値より小さな前記第4の閾値よりも小さいとき、前記符号化対象画像の予測モードを、逆方向予測符号化に決定し、前記符号化対象画像の逆方向画像に対する予測残差が、前記第3の閾値より小さく、前記第4の閾値よりも大きいとき、前記符号化対象画像の予測モードを、両方向予測符号化に決定し、前記符号化対象画像の動きの複雑さまたは速さが所定の閾値よりも大きく、かつ、前記符号化対象画像の順方向参照画像までの第1の距離が、前記符号化対象画像の逆方向参照画像までの第2の距離よりも大きい場合、前記符号化対象画像の逆方向画像に対する予測残差が、前記符号化対象画像の順方向画像に対する予測残差、並びに、前記第1の距離、および前記第2の距離に対応する第5の閾値よりも大きいとき、前記符号化対象画像の予測モードを、順方向予測符号化に決定し、前記符号化対象画像の逆方向画像に対する予測残差が、前記符号化対象画像の順方向画像に対する予測残差、並びに、前記第1の距離、および前記第2の距離に対応する前記第5の閾値より小さな前記第6の閾値よりも小さいとき、前記符号化対象画像の予測モードを、逆方向予測符号化に決定し、前記符号化対象画像の逆方向画像に対する予測残差が、前記第5の閾値より小さく、前記第6の閾値よりも大きいとき、前記符号化対象画像の予測モードを、両方向予測符号化に決定することを特徴とする。
なお、勿論この記載は、各手段を上記したものに限定することを意味するものではない。
次に、本発明の原理について説明する。
動画像においては、一般に、画像どうしの時間軸方向の相関は、その画像どうしの距離(間隔)が大きくなるほど小さくなる。
従って、例えば、図14と同一の図1に示すような、I/Pピクチャの間に1枚のBピクチャが配置されたシーケンスにおいては、Bピクチャと、過去参照画像または未来参照画像それぞれとの相関は等しく、その結果、過去参照画像および未来参照画像に対する動きベクトル推定残差Ef,Ebについての統計的な性質も等しくなる。
一方、例えば、図17と同一の図2に示すような、I/Pピクチャの間に2枚以上のBピクチャが配置されたシーケンスにおいては、Bピクチャと、過去参照画像または未来参照画像それぞれとの相関は、その距離に対応して変化する。
このため、例えば、図3に示すように、PピクチャPnとPn+4との間に、3枚のBピクチャBn+1,Bn+2,Bn+3が配置されている場合において、この3枚のBピクチャBn+1,Bn+2,Bn+3を、PピクチャPnまたはPn+4それぞれを過去参照画像または未来参照画像として予測符号化すると、過去参照画像Pnに対するBピクチャBn+1,Bn+2,Bn+3それぞれの動きベクトル残差Ef1,Ef2,Ef3は、一般に、Ef1<Ef2<Ef3の関係になる。
同様に、未来参照画像Pn+4に対するBピクチャBn+1,Bn+2,Bn+3それぞれの動きベクトル残差Eb1,Eb2,Eb3は、一般に、Eb1>Eb2>Eb3の関係になる。
以上のように、I/Pピクチャの間に、2枚以上のBピクチャが配置されている場合には、各Bピクチャについて、過去参照画像または未来参照画像それぞれまでの距離が異なるため、その相関も異なる。その結果、過去参照画像または未来参照画像に対する動きベクトル残差それぞれの統計的性質も、各Bピクチャによって異なり、従って、符号化効率を向上させるには、各Bピクチャを符号化する際の予測モードの決定方法を、その統計的性質に応じて変える必要がある。
次に、双方向予測符号化による予測精度は、一般に、画像の動きが速いほど低下する。このため、双方向予測符号化による場合には、順方向動きベクトルと逆方向動きベクトルとの両方を伝送しなければならないことをも考慮すると、画像の動きが速い場合には、双方向予測符号化による予測残差が最も小さいときであっても、符号化対象のBピクチャから時間的に最も近い参照画像のみを用いて予測符号化を行う方が、発生する全体のデータ量が少なくなることが多い。
一方、画像の動きの速さは、例えば、動きベクトルをMVと表し、そのx成分(水平方向の成分)をvxと、y成分(垂直方向の成分)をvyと表すとき、動きベクトルの大きさ|MV|=(vx 2+vy 2)1/2で表すことができる。
そこで、I/Pピクチャの間に、例えば、図2に示したように、2枚のBピクチャが配置されている場合においては、動きベクトルの大きさ|MV|に対応して、次のように予測モードを設定することにより、符号化効率を向上させることができる。
即ち、いま、符号化対象のBピクチャから、過去参照画像または未来参照画像までのフレーム数を、それぞれDfまたはDbとすると、Df=1およびDb=2の場合(符号化対象のBピクチャからの距離が、過去参照画像の方が近い場合)、例えば、図4(A)に示すように、式Eb>p×EfかつEb>q×Ef+(1−p×q)×Tiが成り立つとき、順方向予測符号化を選択し、式Eb≦p×EfかつEb<r×Ef+(1−p×r)×Tiが成り立つとき、逆方向予測符号化を選択する。また、式r×Ef+(1−p×r)×Ti≦EbかつEb≦q×Ef+(1−p×q)×Tiが成り立つとき、双方向予測符号化を選択する。
ここで、Tiは0以上の定数で、0<r<qであり、また、qは、図16におけるjより小さい値である。図4(A)においては、q=5/4,r=3/4となっている。また、p=1となっている。
この場合、予測残差EfがTi未満(以下)か、または予測誤差Ebがp×Ti未満となるときは、双方向予測符号化は選択されない。即ち、この場合、双方向予測符号化は、予測残差EfがTi以上となる(より大きくなる)か、または予
測誤差Ebがp×Ti以上となるときに限り選択され得る。
従って、この場合、動きベクトルの大きさ|MV|が大きくなるにつれて、定数Tiを大きな値に設定することにより、双方向予測符号化が選択され難くなる
。
即ち、T1<T2<・・・<Tn<Tn+1、および0<mv0<mv1<・・・<mvn-1<mvnとする場合において、動きベクトルの大きさ|MV|が、mv0以上mv1未満のときは、TiをT1に、mv1以上mv2未満のときは、TiをT2に、・・・、mvn-1以上mvn未満のときは、TiをTnに、mvn以上のときは、TiをTn+1に設定する。このようにすることで、画像の動きが速いほど、予測精度の低下し、動きベクトルに割り当てるビット量が大きく増加する双方向予測符号化が選択され難くなり、その結果、符号化効率を向上させることができる。
また、この場合、符号化対象のBピクチャが、過去参照画像に近いことから、その過去参照画像のみを用いる順方向予測符号化が選択され易くなっているので、この点からも、符号化効率を向上させることができる。
一方、Df=2およびDb=1の場合(符号化対象のBピクチャからの距離が、未来参照画像の方が近い場合)、例えば、図4(B)に示すように、式Eb>s×EfかつEb>t×Ef+(1−s×t)×Tiが成り立つとき、順方向予測符号化を選択し、式Eb≦s×EfかつEb<u×Ef+(1−s×u)×Tiが成り立つとき、逆方向予測符号化を選択する。また、式u×Ef+(1−s×u)×Ti≦EbかつEb≦t×Ef+(1−s×t)×Tiが成り立つとき、双方向予測符号化を選択する。
ここで、0<u<tであり、また、uは、図16におけるkより大きい値である。図4(B)においては、t=4/3,u=4/5となっている。また、s=1となっている。
この場合も、予測残差EfがTi未満か、または予測誤差Ebがs×Ti未満となるときは、双方向予測符号化は選択されない。即ち、この場合、双方向予測符号化は、予測残差EfがTi以上となるか、または予測誤差Ebがs×Ti以上となるときに限り選択され得る。
従って、上述の場合と同様に、動きベクトルの大きさ|MV|が大きくなるにつれて、定数Tiを大きな値に設定することにより、双方向予測符号化が選択さ
れ難くなり、その結果、符号化効率を向上させることができる。
また、この場合、符号化対象のBピクチャが、未来参照画像に近いことから、その未来参照画像のみを用いる逆方向予測符号化が選択され易くなっているので、この点からも、符号化効率を向上させることができる。
なお、画像の動きが遅い場合には、前述したように、双方向予測符号化の予測精度が高く、また、発生符号量も少なくなるので、双方向予測符号化が選択されるのが望ましい。そこで、動きベクトルの大きさ|MV|が所定の値mv0未満
となった場合には、例えば、図16と同一の図5に示すように、式Eb>j×Efが成り立つときは、順方向予測符号化を選択し、式Eb<k×Efが成り立つときは、逆方向予測符号化を選択し、式k×Ef≦Eb≦j×Efが成り立つときは、双方向予測符号化を選択するようにする。
即ち、図4において、例えば、t=q=j,r=u=k,Ti=0とする。
このようにすることで、動きベクトルの大きさ|MV|がmv0未満となった場合には、予測精度の高い双方向予測符号化が選択され易くなり、その結果、符号化効率を向上させることができる。
なお、画像の動きの速さは、動きベクトルの大きさ|MV|の他、例えば、動きベクトルMVのx成分の絶対値とy成分の絶対値との和|x|+|y|などにも反映される。そこで、上述の定数Tiは、この成分の絶対値和|x|+|y|
に対応して設定することも可能である。
次に、双方向予測符号化による予測精度は、画像の動きの速さの他、その複雑さによっても変化する。即ち、双方向予測符号化による予測精度は、基本的に、画像の動きが、物体が、水平方向にパンしているなど、一定の単純なものであるときは高くなり、複雑になるほど低下する。
このため、双方向予測符号化による場合には、順方向動きベクトルと逆方向動きベクトルとの両方を伝送しなければならないことをも考慮すると、画像の動きが複雑な場合には、双方向予測符号化による予測残差が最も小さいときであっても、符号化対象のBピクチャから時間的に最も近い参照画像(過去参照画像または未来参照画像までの距離が等しい場合には、そのうちのいずれか一方)のみを用いて予測符号化を行う方が、発生する全体のデータ量が少なくなることが多い。
一方、例えば、物体が平行移動している画像においては、その順方向動きベクトルと逆方向動きベクトルの方向は逆になる。即ち、順方向動きベクトルのx成分またはy成分の符号と、逆方向動きベクトルのx成分またはy成分の符号とは(x成分どうしの符号とy成分どうしの符号は)、それぞれ異なるものとなる。
逆に、物体が複雑な動きをしている場合、x成分どうしの符号またはy成分どうしの符号のうちの少なくとも一方は同一となる。
従って、例えば、いま、順方向動きベクトルのx成分またはy成分をそれぞれFxまたはFyとするとともに、逆方向動きベクトルのx成分またはy成分をそれぞれBxまたはByとすると、次式で表されるSMVは、画像の動きの複雑さを反映したものとなる。
SMV=|Fx+Bx|+|Fy+By|
なお、このSMVは、画像の動きの複雑さに対応して変化する他、順方向予測符号化および逆方向予測符号化の両方の予測精度が高い場合には小さくなり、いずれか一方の予測精度が低い場合には大きくなる傾向がある。
そこで、I/Pピクチャの間に、例えば、図2に示したように、2枚のBピクチャが配置されている場合においては、SMVに対応して、次のように予測モードを設定することによっても、符号化効率を向上させることができる。
即ち、まず、Df=1およびDb=2の場合、例えば、図4(A)に示したように、式Eb>p×EfかつEb>q×Ef+(1−p×q)×Tiが成り立つ
とき、順方向予測符号化を選択し、式Eb≦p×EfかつEb<r×Ef+(1−p×r)×Tiが成り立つとき、逆方向予測符号化を選択する。また、式r×
Ef+(1−p×r)×Ti≦EbかつEb≦q×Ef+(1−p×q)×Tiが成り立つとき、双方向予測符号化を選択する。
この場合、上述したように、予測残差EfがTi未満か、または予測誤差Ebがp×Ti未満となるときは、双方向予測符号化は選択されない。即ち、この場合、双方向予測符号化は、予測残差EfがTi以上となるか、または予測誤差Ebがp×Ti以上となるときに限り選択され得る。
従って、この場合、SMVが大きくなるにつれて、定数Tiを大きな値に設定することにより、双方向予測符号化が選択され難くなる。
即ち、0<MV0<MV1<・・・<MVn-1<MVnとする場合において、SMVが、MV0以上MV1未満のときは、TiをT1に、MV1以上MV2未満のときは、TiをT2に、・・・、MVn-1以上MVn未満のときは、TiをTnに、MVn以
上のときは、TiをTn+1に設定する。このようにすることで、画像の動きが複雑なほど、予測精度の低下する双方向予測符号化が選択され難くなり、その結果、符号化効率を向上させることができる。
また、この場合、符号化対象のBピクチャが、過去参照画像に近いことから、その過去参照画像のみを用いる順方向予測符号化が選択され易くなっているので、この点からも、符号化効率を向上させることができる。
一方、Df=2およびDb=1の場合、例えば、図4(B)に示したように、式Eb>s×EfかつEb>t×Ef+(1−s×t)×Tiが成り立つとき、順方向予測符号化を選択し、式Eb≦s×EfかつEb<u×Ef+(1−s×u)×Tiが成り立つとき、逆方向予測符号化を選択する。また、式u×Ef+(1−s×u)×Ti≦EbかつEb≦t×Ef+(1−s×t)×Tiが成り立つとき、双方向予測符号化を選択する。
この場合も、予測残差EfがTi未満か、または予測誤差Ebがs×Ti未満となるときは、双方向予測符号化は選択されない。即ち、この場合、双方向予測符号化は、予測残差EfがTi以上となるか、または予測誤差Ebがs×Ti以上となるときに限り選択され得る。
従って、やはり、上述の場合と同様に、SMVが大きくなるにつれて、定数Tiを大きな値に設定することにより、双方向予測符号化が選択され難くなり、その結果、符号化効率を向上させることができる。
また、この場合、符号化対象のBピクチャが、未来参照画像に近いことから、その未来参照画像のみを用いる逆方向予測符号化が選択され易くなっているので、この点からも、符号化効率を向上させることができる。
なお、画像の動きが非常に単純な場合、即ち、例えば、物体が、一定方向に平行移動しているような場合には、SMVは非常に小さな値となる(理想的には、0となる)。また、この場合、前述したように、双方向予測符号化の予測精度が高く、また、発生符号量も少なくなるので、双方向予測符号化が選択されるのが望ましい。そこで、SMVが所定の値MV0未満となった場合には、例えば、図
16と同一の図5に示すように、式Eb>j×Efが成り立つときは、順方向予測符号化を選択し、式Eb<k×Efが成り立つときは、逆方向予測符号化を選択し、式k×Ef≦Eb≦j×Efが成り立つときは、双方向予測符号化を選択するようにする。
即ち、図4において、例えば、t=q=j,r=u=k,Ti=0とする。
このようにすることで、SMVがMV0未満となった場合には、予測精度の高い双方向予測符号化が選択され易くなり、その結果、符号化効率を向上させることができる。
また、画像の動きが非常に単純な場合の例として、ビデオカメラをパンして撮影した画像があるが、この場合、動きベクトルのx成分が、そのy成分に比較して非常に大きくなる。そこで、例えば、gを所定の定数(1より大きい値である、例えば4など)として、式|x|>g|y|が成り立つときにも、上述のように、双方向予測符号化が選択され易くするようにすることが可能である。なお、このことは、式g|x|<|y|が成り立つときについても同様である。
以上のように、画像の動きの速さや複雑さに対応して、適応的に、予測モードを選択(決定)するようにすることで、符号化効率を、従来より向上させることができる。
なお、上述の場合においては、I/Pピクチャの間に、2枚のBピクチャが配置されているとしたが、その間に、1枚だけまたは3枚以上のBピクチャが配置されている場合についても同様のことがいえる。
次に、図6および図7は、本発明を適用した画像符号化装置の一実施の形態の構成を示している。
この画像符号化装置は、上述した、例えば、画像の動きの複雑さを反映するSMVに対応して予測モードを決定し、画像を、動き補償とDCT(Discrete Cosine Transform)とを組み合わせたハイブリッド符号化するようになされている
。
即ち、符号化すべき画像データは、例えば、フレーム(またはフィールド)単位で、画像符号化タイプ指定回路3に供給される。画像符号化タイプ指定回路3は、そこに入力されるフレームを、I,P、またはBピクチャ(以下、適宜、これらをまとめてピクチャタイプという)のいずれとして処理するのかを指定する。
具体的には、画像符号化タイプ指定回路3は、例えば、図8(A)に示すように、そこに入力される16フレームの画像F1乃至F16を1GOPのデータとして処理し、同図(B)に示すように、最初のフレームF1をIピクチャとして、2番目および3番目のフレームF2およびF3をBピクチャとして、4番目のフレームF4をPピクチャとして指定する。さらに、画像符号化タイプ指定回路3は、5番目および6番目のフレームF5およびF6をBピクチャとして、7番目のフレームF7をPピクチャとして指定し、以下、同様にして、残りのフレームF8乃至F16を、BまたはPピクチャとして指定する。
なお、図8(B)(同図(C)についても同様)において、I,P,Bに付してある下付けの数字は、MPEGにおけるテンポラルリファレンス(temporal referencd)に相当し、各フレームの表示順を表す。
画像符号化タイプ指定回路3においてピクチャタイプの指定されたフレームは、画像符号化順序替え回路4に出力される。画像符号化順序替え回路4では、フレームの並びが符号化順に並び替えられる。即ち、Bピクチャは、受信側において、自己が表示された後に表示される画像を参照画像(未来参照画像)として用いて復号化される場合があるため、その未来参照画像が既に復号化されていないと、Bピクチャを復号化することができない。そこで、画像符号化順序替え回路4では、未来参照画像となるフレームが、Bピクチャより先に符号化されるように、GOPを構成するフレームの並びが替えられる。
具体的には、例えば、図8(C)に示すように並び替えられる。
画像符号化順序替え回路4で並びの替えられたフレームのシーケンスは、スキャンコンバータ5に供給される。スキャンコンバータ5では、ラスタスキャンで入力されるフレームがブロックフォーマットの信号に変換される。
即ち、スキャンコンバータ5には、例えば、Hドットで構成されるラインを、Vラインだけ集めたフレームフォーマットの画像データが入力される。そして、スキャンコンバータ5は、この画像データを、図9(A)に示すように、16ラインで構成されるN個のスライスに区分し(従って、ここでは、V=16×N)、さらに、同図(B)に示すように、各スライスを、16ドットごとに区分することで、M個のマクロブロックに分割する(従って、ここでは、H=16×M)。
従って、各マクロブロックは、16×16ドットに対応する輝度信号で構成される。なお、マクロブロックは、図9(C)に示すように、8×8ドットに対応する輝度信号Y[1]乃至Y[4]に区分され、さらに、マクロブロックには、8×8ドットに対応する色差信号Cb[5]とCr[6]が対応付けられる。後述するDCT回路12(図7)では、この8×8ドットのブロック単位で、DCT処理が施される。
以上のようにして、スキャンコンバータ5で得られたマクロブロックは、図7の演算部11に供給される。
図6に戻り、カウンタ9は、画像符号化順序替え回路4が出力するフレーム同期信号をカウントしている。
即ち、画像符号化順序替え回路4は、スキャンコンバータ5に、並び替えたフレームを出力するタイミングで、フレーム同期信号を、カウンタ9に出力している。さらに、画像符号化順序替え回路4は、スキャンコンバータ5に出力するフレームのピクチャタイプTYPEを検出し、動きベクトル推定回路6、カウンタ9、および図7の予測モード決定回路21に出力している。
カウンタ9は、画像符号化順序替え回路4が出力するフレーム同期信号をカウントし、そのカウント値CNTを、画像間距離発生回路10に出力する。なお、カウンタ9は、画像符号化順序替え回路4が出力するピクチャタイプTYPEがIまたはPピクチャのとき、そのカウント値CNTを、例えば0にリセットするようになされている。
従って、カウンタ9が出力するカウント値CNTは、IまたはPピクチャの間に配置されたBピクチャの数を表す。
ここで、本実施の形態では、図8(B)に示したように、IまたはPピクチャの間に、2枚のBピクチャが配置されているので、カウンタ9が出力するカウント値CNTは、同図(D)に示すように、0,1、または2となる。
画像間距離発生回路10は、カウンタ9からのカウント値CNTに基づいて、Bピクチャから、その予測符号化(インター符号化)に用いられる過去参照画像または未来参照画像それぞれまでの距離(フレーム数)DfまたはDbを算出し、図7の予測モード決定回路21に出力する。
即ち、画像間距離発生回路10は、過去参照画像までの距離Dfとして、図8(E)に示すように、カウント値CNTと同一の値を出力し、また、未来参照画像までの距離Dbとして、図8(F)に示すように、カウント値CNTを逆に並べた値を出力する。
一方、動きベクトル推定回路6では、順方向動きベクトルMVfおよび逆方向動きベクトルMBbが検出(推定)され、さらに、その順方向動きベクトルMVfまたは逆方向動きベクトルMVbそれぞれに対する予測残差(動きベクトル推定残差)EfまたはEbが算出される。
即ち、動きベクトル推定回路6には、画像符号化順序替え回路4から、ピクチャタイプTYPEが指定されたフレームと、そのピクチャタイプTYPEが供給されるようになされている。
動きベクトル推定回路6は、画像符号化順序替え回路4から供給されるフレームを、そのピクチャタイプTYPEにしたがって、記憶部7を構成する過去参照画像記憶部7A、現在画像記憶部7B、または未来参照画像記憶部7Cのうちのいずれかに記憶させ、現在画像記憶部7Bに記憶された画像を対象に、その動きベクトルを検出する。
具体的には、動きベクトル推定回路6は、例えば、図8に示した場合において、I1を過去参照画像記憶部7Aに記憶させ、P4を現在画像記憶部7Bに記憶させ、これにより、I1を過去参照画像として、P4の動きベクトル(順方向動きベクトル)MVfを検出し、その予測残差Efを求める。次に、現在画像記憶部7Bに記憶されていたP4を未来参照画像記憶部7Cに転送し、B2を現在画像記憶部7Bに記憶させ、これにより、I1またはP4を、それぞれ過去参照画像または未来参照画像として、B2の順方向動きベクトルMVfまたは逆方向動きベクト
ルMVbを検出し、それぞれの予測残差EfまたはEbを求める。
続いて、B3を現在画像記憶部7Bに記憶させ、これにより、上述した場合と同様に、B3の順方向動きベクトルMVfまたは逆方向動きベクトルMVbを検出し、それぞれの予測残差EfまたはEbを求める。
その後、未来参照画像記憶部7Cに記憶されていたP4を、過去参照画像記憶部7Aに転送して記憶させる(上書きする)とともに、P7を現在画像記憶部7Bに記憶させ、これにより、P4を過去参照画像として、P7の動きベクトルMVfを検出し、その予測残差Efを求める。
次に、現在画像記憶部7Bに記憶されていたP7を未来参照画像記憶部7Cに転送し、B5を現在画像記憶部7Bに記憶させ、これにより、P4またはP7を、それぞれ過去参照画像または未来参照画像として、B5の順方向動きベクトルMVfまたは逆方向動きベクトルMVbを検出し、それぞれの予測残差EfまたはEbを求める。以下、同様にして、動きベクトルの検出と、予測残差の算出が行われていく。
ここで、予測誤差EfおよびEbの算出方法について説明する。
いま、あるマクロブロックを注目マクロブロックとし、その注目マクロブロックを構成する左からi番目で、上からj番目の画素の画素値をAijと表すとともに、注目マクロブロックに最も近似する過去参照画像の16×16の範囲を構成する、左からi番目で、上からj番目の画素の画素値をFijと表す。この場合、予測誤差Efは、例えば、次式にしたがって算出される。
Ef=Σ|Aij−Fij|
なお、上式において、Σは、i,jを1乃至16に変えてのサメーションを表す。
また、注目マクロブロックに最も近似する未来参照画像の16×16の範囲を構成する、左からi番目で、上からj番目の画素の画素値をBijと表すと、予測誤差Ebは、例えば、次式にしたがって算出される。
Eb=Σ|Aij−Bij|
なお、上式においても、Σは、i,jを1乃至16に変えてのサメーションを表す。
以上のようにして求められた動きベクトルMVf,MBb、予測誤差Ef,Ebは、図7の予測モード決定回路21に供給される。また、動きベクトルMVf,MBbは、図7の可変長符号化回路15および動き補償回路20にも供給される。さらに、Bピクチャについての動きベクトルMVf,MBbは、動き量算出回路8にも供給される。
動き量算出回路8では、動きベクトルMVf,MBbから、上述したSMVが算出され、図7の予測モード決定回路21に供給される。
図7の予測モード決定回路21では、距離Df,Db、動きベクトルMVf,MVb、ピクチャタイプTYPE、およびSMVに基づいて、マクロブロックの予測モードが決定される。
即ち、ピクチャタイプTYPEがIピクチャである場合、即ち、符号化対象のマクロブロックがIピクチャである場合、予測モード決定回路21は、予測モードを、イントラ符号化モードに決定する。
また、ピクチャタイプTYPEがPピクチャである場合、即ち、符号化対象のマクロブロックがPピクチャである場合、予測モード決定回路21は、次のようにして、予測モードを、イントラ符号化モードまたは順方向予測符号化モードのうちのいずれかに決定する。
即ち、この場合、予測モード決定回路21は、まず、イントラ符号化時の予測残差として、例えば、次式で定義されるEintraを算出する。
Eintra=Σ|Aij−Aav|
なお、上式において、Aijは、符号化対象のマクロブロックを構成する左からi番目で、上からj番目の画素の画素値を表し、Aavは、その平均値を表す。また、Σは、i,jを1乃至16に変えてのサメーションを表す。
そして、予測モード決定回路21は、イントラ符号化時の予測残差Eintraが、順方向予測符号化における予測残差Efより小さいとき(以下のとき)、予測モードを、イントラ符号化モードに決定する。また、イントラ符号化時の予測残差Eintraが、順方向予測符号化における予測残差Ef以上のとき(より大きい
とき)、予測モードを、順方向予測符号化モードに決定する。
次に、ピクチャタイプTYPEがBピクチャである場合、即ち、符号化対象のマクロブロックがBピクチャである場合、予測モード決定回路21は、次のようにして、予測モードを、イントラ符号化モード、順方向予測符号化モード、逆方向予測符号化モード、または双方向予測符号化モードのうちのいずれかに決定する。
即ち、まず、予測モード決定回路21は、インター符号化、つまり、順方向予測符号化モード、逆方向予測符号化モード、または双方向予測符号化モードのうちの1つを選択(決定)する。
この選択は、SMV、予測残差Ef,Eb、距離Df,Db、および動きベクトルMVf,MVbに基づいて行われる。
即ち、まず、SMVに対応して、図4で説明した定数Tiが設定される。そして、距離DfおよびDbに対応して、図4(A)または図4(B)のうちのいずれか一方が選択され、その選択された方において、予測残差EfとEbとの上述したような大小関係に基づいて、順方向予測符号化モード、逆方向予測符号化モード、または双方向予測符号化モードの中から1つが選択される。
なお、SMVが所定値MV0以下の場合や、動きベクトルMVf,MVbのx
成分またはy成分の絶対値のうちのいずれか一方が、他方に比較して充分大きい場合などには、上述したように、図5で説明した予測残差EfとEbとの大小関係に基づいて、順方向予測符号化モード、逆方向予測符号化モード、または双方向予測符号化モードの中から1つが選択される。
そして、インター符号化の中から選択された予測モードに対応する予測残差が、インター符号化についての予測残差Einterとされる。なお、双方向予測符号化モードが選択された場合、予測残差Einterは、例えば、予測残差EfとEbの平均値とされる。従って、順方向予測符号化モード、逆方向予測符号化モード、または双方向予測符号化モードが選択された場合、予測残差Einterは、それぞれEf,Eb、または(Ef+Eb)/2とされる。
さらに、予測モード決定回路21では、上述した場合と同様にして、イントラ符号化時の予測残差Eintraが算出される。そして、予測モード決定回路21は、イントラ符号化時の予測残差Eintraが、インター符号化の中から選択したものの予測残差Einterより小さいとき、予測モードを、イントラ符号化モードに決定する。また、イントラ符号化時の予測残差Eintraが、予測残差Einter以上のとき、予測モードを、インター符号化の中から選択したものに決定する。
従って、Bピクチャについては、画像の動き複雑さ、さらには、参照画像までの距離に対応して、その予測モードが適応的に決定されるので、その符号化効率を、より向上させることが可能となる。
以上のようにして決定された予測モードは、予測モード決定部21から、演算部11、可変長符号化回路15、および動き補償回路20に供給される。
演算部11には、予測モード決定回路21から供給される予測モードで予測符号化すべきマクロブロック(符号化対象のマクロブロック)が、図6のスキャンコンバータ5から供給される。演算部11は、演算器11A乃至11CおよびスイッチSWを有しており、予測モードに対応して、スイッチSWが切り換えられる。
即ち、演算部11にIピクチャのマクロブロックが入力される場合においては、予測モードはイントラ符号化モードとなっている。この場合、スイッチSWは端子aを選択する。端子aには、符号化対象のマクロブロックが、そのまま供給されるようになされており、従って、このマクロブロックは、端子aを介して、DCT回路12に供給される。
DCT回路12では、演算部11からのマクロブロックがDCT処理され、これにより、DCT係数に変換される。このDCT係数は、量子化回路13に供給され、そこで、所定の量子化ステップで量子化された後、可変長符号化回路15に供給される。
可変長符号化回路15には、量子化回路13から量子化されたDCT係数が供給される他、同じく量子化回路13から量子化ステップが、予測モード決定回路21から予測モードが、図6の動きベクトル推定回路6から動きベクトルMVf,MVbが、それぞれ供給されるようになされている。可変長符号化回路15は、適宜、これらのデータを、例えば、ハフマン符号などの可変長符号に変換し、送信バッファ14に出力する。
送信バッファ14は、可変長符号化回路15からの可変長符号を一時記憶し、例えば、一定のデータレートにして出力する。送信バッファ14から出力される可変長符号は、例えば、光ディスクや、光磁気ディスク、磁気ディスク、光カード、磁気テープ、相変化ディスクなどの記録媒体31に記録され、あるいは、衛星回線、地上波、CATV網、インターネットなどの伝送路32を介して伝送される。
なお、送信バッファ14は、そのデータの蓄積量を量子化回路13に供給(フィードバック)するようになされている。量子化回路13は、この蓄積量に基づいて、量子化ステップを設定するようになされている。即ち、量子化回路13は、送信バッファ14がオーバーフローしそうなとき、量子化ステップを大きくし、これにより、データ発生量を減少させる。また、量子化回路13は、送信バッファ14がアンダーフローしそうなとき、量子化ステップを小さくし、これにより、データ発生量を増加させる。以上のようにして、送信バッファ14のオーバーフローおよびアンダーフローを防止するようになされている。
一方、量子化回路13が出力する量子化されたDCT係数と量子化ステップとは、可変長符号化回路15の他、逆量子化回路16にも供給される。逆量子化回路16は、量子化回路13からの量子化されたDCT係数を、同じく量子化回路13からの量子化ステップで逆量子化し、その結果得られるDCT係数を、IDCT回路17に出力する。
IDCT回路17では、逆量子化回路16からのDCT係数が逆DCT処理され、これにより、演算部11の出力とほぼ同一の値の画像データが復元され、演算器18に供給される。演算器18は、そこに入力される画像データが、イントラ符号化されるものである場合には、特に処理を行わず、その画像データを、そのままフレームメモリ19に出力して記憶させる。
なお、フレームメモリ19は、未来参照画像または過去参照画像として用いられる画像を記憶する未来参照画像記憶回路19Aおよび過去参照画像記憶回路19Bを有しており、最初に符号化され、復号化されたIピクチャは、過去参照画像記憶回路19Bに記憶される。
次に、演算部11に入力されたマクロブロックがPピクチャである場合において、予測モードがイントラ符号化モードであるときには、スイッチSWは端子aを選択する。従って、この場合、Pピクチャのマクロブロックは、上述のIピクチャにおける場合と同様に符号化され、また、ローカルデコードされて、フレームメモリ19に供給される。なお、Iピクチャの次に符号化され、復号化されたPピクチャは、未来参照画像記憶回路19Aに記憶される。
一方、演算部11に入力されたマクロブロックがPピクチャである場合において、予測モードが順方向予測符号化モードであるときには、スイッチSWは、端子bを選択する。端子bには、演算器11Aの出力が供給されるようになされており、また、演算器11Aには、符号化対象のマクロブロックと、動き補償回路20の出力とが供給されるようになされている。
動き補償回路20は、予測モードが順方向予測符号化モードの場合、過去参照画像記憶回路19Bに記憶されている画像(いまの場合、Iピクチャ)を過去参照画像として読み出し、動きベクトルMVfにしたがって動き補償を施すことにより予測画像を生成する。即ち、動き補償回路20は、符号化対象のマクロブロックに対応する位置から、動きベクトルMVfに対応する分だけずらしたアドレスのデータを、過去参照画像記憶回路19Bから読み出し、これを予測画像として演算器11Aに供給する。
演算器11Aは、符号化対象のマクロブロックを構成する各画素値から、予測画像を構成する、対応する画素値を減算し、その減算値(差分値)を出力する。従って、この場合、演算部11からは、符号化対象のマクロブロックと、過去参照画像から得られた予測画像との差分値が、DCT回路12に供給される。この差分値は、イントラ符号化における場合と同様に符号化されて出力される。
さらに、この差分値は、上述した場合と同様に、DCT回路12、量子化回路13、逆量子化回路16、およびIDCT回路17を介することで、元の値とほぼ同一の値に復元され、演算器18に供給される。
この場合、演算器18には、動き補償回路20から、演算器11Aに供給される予測画像と同一のデータが供給されており、演算器18では、復元された差分値と、その予測画像とが加算され、これにより、Pピクチャがローカルデコードされる。このローカルデコードされたPピクチャは、フレームメモリ19に供給されて記憶される。
なお、Iピクチャの次に符号化され、復号化されたPピクチャは、上述したように、未来参照画像記憶回路19Aに記憶される。
次に、演算部11に入力されたマクロブロックがBピクチャである場合において、予測モードがイントラ符号化モードまたは順方向予測符号化モードであるときには、スイッチSWは端子aまたはbをそれぞれ選択する。従って、この場合、Bピクチャのマクロブロックは、上述した場合と同様に符号化される。
一方、演算部11に入力されたマクロブロックがBピクチャである場合において、予測モードが逆方向予測符号化モードであるときには、スイッチSWは、端子cを選択する。端子cには、演算器11Bの出力が供給されるようになされており、また、演算器11Bには、符号化対象のマクロブロックと、動き補償回路20の出力とが供給されるようになされている。
動き補償回路20は、予測モードが逆方向予測符号化モードの場合、未来参照画像記憶回路19Aに記憶されている画像(いまの場合、Pピクチャ)を未来参照画像として読み出し、動きベクトルMVbにしたがって動き補償を施すことにより予測画像を生成する。即ち、動き補償回路20は、符号化対象のマクロブロックに対応する位置から、動きベクトルMVbに対応する分だけずらしたアドレスのデータを、未来参照画像記憶回路19Aから読み出し、これを予測画像として演算器11Bに供給する。
演算器11Bは、符号化対象のマクロブロックを構成する各画素値から、予測画像を構成する、対応する画素値を減算し、その減算値(差分値)を出力する。従って、この場合、演算部11からは、符号化対象のマクロブロックと、未来参照画像から得られた予測画像との差分値が、DCT回路12に供給される。この差分値は、イントラ符号化における場合と同様に符号化されて出力される。
また、演算部11に入力されたマクロブロックがBピクチャである場合において、予測モードが双方向予測符号化モードであるときには、スイッチSWは、端子dを選択する。端子dには、演算器11Cの出力が供給されるようになされており、また、演算器11Cには、符号化対象のマクロブロックと、動き補償回路20の出力とが供給されるようになされている。
動き補償回路20は、予測モードが双方向予測符号化モードの場合、過去参照画像記憶回路19Bに記憶されている画像(いまの場合、Iピクチャ)を過去参照画像として読み出し、動きベクトルMVfにしたがって動き補償を施すことにより予測画像(以下、適宜、過去予測画像という)を生成するとともに、未来参照画像記憶回路19Aに記憶されている画像(いまの場合、Pピクチャ)を未来参照画像として読み出し、動きベクトルMVbにしたがって動き補償を施すことにより予測画像(以下、適宜、未来予測画像という)を生成する。この過去予測画像および未来予測画像は、演算器11Cに供給される。
演算器11Cは、まず、動き補償回路20より供給される過去予測画像および未来予測画像の、例えば平均値(以下、適宜、平均予測画像という)を演算する。そして、演算器11Cは、符号化対象のマクロブロックを構成する各画素値から、平均予測画像を構成する、対応する画素値を減算し、その減算値(差分値)を出力する。従って、この場合、演算部11からは、符号化対象のマクロブロックと、平均予測画像との差分値が、DCT回路12に供給される。この差分値は、イントラ符号化における場合と同様に符号化されて出力される。
なお、本実施の形態においては、Bピクチャは、他の画像を符号化する際に、参照画像として用いられないため、ローカルデコードされない(する必要がない)。また、過去参照画像記憶回路19Aおよび未来参照画像記憶回路19Bは、必要に応じてバンク切り換えすることができるようになされており、これにより、過去参照画像記憶回路19Aおよび未来参照画像記憶回路19Bに記憶されている画像データを、過去参照画像および未来参照画像のいずれとしても用いることができるようになされている。さらに、上述の処理は、輝度信号Yおよび色差信号Cb,Crのすべてに施される。但し、色差信号Cb,Crについては、例えば、輝度信号Yを処理するときに用いた動きベクトルの大きさを1/2にしたものが、その動きベクトルとして用いられる。
次に、図10のフローチャートを参照して、図7の予測モード決定回路21の処理(予測モード決定処理)について、さらに説明する。
予測モード決定回路21では、図10のフローチャートにしたがった処理が、マクロブロックごとに行われる。
即ち、予測モード決定回路21では、まず最初に、ステップS1において、SMVが、閾値MV0未満かどうかが判定される。ステップS1において、SMVが、閾値MV0未満であると判定された場合、ステップS2に進み、以下、図5で説明したようにして、インター符号化の中の1つが選択される。
即ち、ステップS2では、予測残差Ebが、予測残差Efのj倍(j×Ef)より大きいかどうかが判定される。ステップS2において、Ebがj×Efより大きいと判定された場合、ステップS3に進み、インター符号化として、順方向予測符号化が選択され、処理を終了する。
その後は、上述したように、選択されたインター符号化についての予測残差と、イントラ符号化についての予測残差との大小関係に基づいて、最終的な予測モードが決定される。
一方、ステップS2において、Ebがj×Efより大きくないと判定された場合、ステップS4に進み、予測残差Ebが、予測残差Efのk倍(k×Ef)未満であるかどうかが判定される。ステップS4において、Ebがk×Ef未満であると判定された場合、ステップS5に進み、インター符号化として、逆方向予測符号化が選択され、処理を終了する。
また、ステップS4において、Ebがk×Ef未満でないと判定された場合、即ち、Ebが、k×Ef以上かつj×Ef以下である場合、ステップS6に進み、インター符号化として、双方向予測符号化が選択され、処理を終了する。
なお、予測モード決定回路21は、ステップS1の処理を行う前に、順方向動きベクトルMVfまたは逆方向動きベクトルMVbのx成分およびy成分について、例えば、式|x|>g|y|または|y|>g|x|が成り立つかどうかを判定し、成り立つ場合には、SMVを、0などのMV0未満の値に、強制的に設
定するようになされている。従って、例えば、物体が、ほぼ水平または垂直方向に移動しているような画像については、図5で説明したように、双方向予測符号化が選択され易い条件の下で、インター符号化の選択が行われる。
一方、ステップS1において、SMVがMV0未満でないと判定された場合、ステップS71に進み、以下、図4で説明したようにして、インター符号化の選択が行われる。
即ち、ステップS71では、SMVが、MV0以上MV1未満であるかどうかが判定される。ステップS71において、SMVが、MV0以上MV1未満であると判定された場合、ステップS81に進み、定数TiがT1に設定され、ステップS9に進む。
また、ステップS71において、SMVが、MV0以上MV1未満でないと判定された場合、ステップS72に進み、SMVが、MV1以上MV2未満であるかどうかが判定される。
以下、同様に、ステップS7cでは、SMVが、MVc-1以上MVc未満であるかどうかが判定され、SMVが、MVc-1以上MVc未満である場合には、ステップS8cに進み、定数TiがTcに設定され、ステップS9に進む。また、SMVが、MVc-1以上MVc未満でない場合には、ステップS7c+1に進む。
そして、ステップS7nにおいて、SMVが、MVn-1以上MVn未満でないと判定された場合、即ち、SMVがMVn以上の場合、ステップS8n+1に進み、定数TiがTn+1に設定され、ステップS9に進む。
ステップS9では、距離Df,Dbに対応した画像間距離判定処理が行われ、処理を終了する。
次に、図11のフローチャートは、図10のステップS9における画像間距離判定処理の詳細を示している。なお、図11においては、IまたはPピクチャの間に、1または2枚のBピクチャが配置されていることを前提としている。
画像間距離判定処理では、まず最初に、ステップS11において、Dfが1で、かつDbが2であるかどうかが判定される。ステップS11において、Dfが1で、かつDbが2であるかと判定された場合、ステップS12に進み、以下、図4(A)で説明したようにして、インター符号化が選択される。
即ち、ステップS12では、Ebが、q×Ef+(1−p×q)×Tiより大きく、かつp×Efより大きいかどうかが判定される。ステップS12において、Ebが、q×Ef+(1−p×q)×Tiより大きく、かつp×Efより大きいと判定された場合、ステップS13に進み、順方向予測符号化が選択され、リターンする。また、ステップS12において、Ebが、q×Ef+(1−p×q)×Tiより大きくないか、またはp×Efより大きくないと判定された場合、ステップS14に進み、Ebが、r×Ef+(1−p×r)×Ti未満で、かつp×Ef未満であるかどうかが判定される。
ステップS14において、Ebが、r×Ef+(1−p×r)×Ti未満で、かつp×Ef未満であると判定された場合、ステップS15に進み、逆方向予測符号化が選択され、リターンする。また、ステップS14において、Ebが、r×Ef+(1−p×r)×Ti未満でないか、またはp×Ef未満でないと判定された場合、ステップS16に進み、双方向予測符号化が選択され、リターンする。
一方、ステップS11において、Dfが1でないか、またはDbが2でないと判定された場合、ステップS17に進み、Dfが2で、かつDbが1であるかどうかが判定される。
ステップS17において、Dfが2で、かつDbが1であると判定された場合、ステップS18に進み、以下、図4(B)で説明したようにして、インター符号化が選択される。
即ち、ステップS18では、Ebが、t×Ef+(1−s×t)×Tiより大きく、かつs×Efより大きいかどうかが判定される。ステップS18において、Ebが、t×Ef+(1−s×t)×Tiより大きく、かつs×Efより大きいと判定された場合、ステップS19に進み、順方向予測符号化が選択され、リターンする。また、ステップS18において、Ebが、t×Ef+(1−s×t)×Tiより大きくないか、またはs×Efより大きくないと判定された場合、ステップS20に進み、Ebが、u×Ef+(1−s×u)×Ti未満で、かつs×Ef未満であるかどうかが判定される。
ステップS20において、Ebが、u×Ef+(1−s×u)×Ti未満で、かつs×Ef未満であると判定された場合、ステップS21に進み、逆方向予測符号化が選択され、リターンする。また、ステップS20において、Ebが、u×Ef+(1−s×u)×Ti未満でないか、またはs×Ef未満でないと判定された場合、ステップS22に進み、双方向予測符号化が選択され、リターンする。
一方、ステップS17において、Dfが2でないか、またはDbが1でないと判定された場合、ステップS23に進み、以下、図5で説明したようにして、インター符号化の中の1つが選択される。即ち、ステップS23乃至S27において、図10のステップS2乃至S6における場合とそれぞれ同様の処理が行われ、これにより、インター符号化の選択が行われる。
以上のように、画像の動きの複雑さを表すSMVに対応して、予測モードを決定するようにしたので、その符号化効率を、従来より向上させることが可能となる。
即ち、画像の動きが複雑な場合は、予測精度、さらには、動きベクトルの伝送に必要なデータ量を考慮して、双方向予測符号化モードが選択され難くし、その逆に、画像の動きが単純な場合は、双方向予測符号化モードが選択され易くしたので、効率的な符号化を行うことが可能となる。
なお、画像の動きの複雑さの他、上述したように、画像の動きの速さ、さらには、その両方などに対応して、予測モードを決定するようにすることなども可能である。
また、本実施の形態では、画像の動きの複雑さを、上述のSMVで表すようにしたが、その他の物理量によって表すようにすることも可能である。
さらに、本実施の形態においては、画像の動きの速さを、動きベクトルの大きさや、そのx成分およびy成分の絶対値の和によって表現するようにしたが、やはり、その他の物理量により表すことも可能である。
また、本実施の形態では、双方向予測符号化モードを選択され易くする場合、図5で説明した条件の下で、インター符号化の選択を行うようにしたが、その他、例えば、図18と同様の図12に示すような条件の下で、インター符号化の選択を行うようにすることにより、双方向予測符号化モードを選択され易くすることも可能である。但し、この場合、図18における場合よりも、定数aおよびcは大きくし、または定数bおよびdは小さくするのが望ましい。
なお、本件発明者が行ったシミュレーションによれば、図4におけるqまたはtは、図12におけるaまたはcそれぞれより小さい方が、また、図4におけるrまたはuは、図12におけるbまたはdそれぞれより大きい方が、符号化効率が向上することが確認されている。さらに、予測誤差EbおよびEfが小さい場合には、双方向予測符号化モードを用いないようにする方が、符号化効率が向上することも確認されている。
3 画像符号化タイプ指定回路, 4 画像符号化順序替え回路, 5 スキャンコンバータ, 6 動きベクトル推定回路, 7 記憶部, 7A 過去参照画像記憶部, 7B 現在画像記憶部, 7C 未来参照画像記憶部, 8 動き量算出回路, 9 カウンタ, 10 画像間距離発生算出回路, 11 演算部, 11A乃至11C 演算器, 12 DCT回路, 13 量子化回路, 14 送信バッファ, 15 可変長符号化回路, 16 逆量子化回路, 17 IDCT回路, 18 演算器, 19 フレームメモリ, 19A 未来参照画像記憶回路, 19B 過去参照画像記憶回路, 20 動き補償回路, 21 予測モード決定回路, 31 記録媒体, 32 伝送路