(57)【要約】【課題】マクロブロック内に複数の動きが存在することにより予測残差が大きくなる可能性が高い領域の画質を改善することができるようにする。【解決手段】動き境界検出部１７は、動画像を構成する各入力画像を所定サイズの複数の画素ブロックに分割し、各画素ブロック内に、異なった動きの境界である動き境界の有無を判定する。量子化部１９の量子化制御部１９Aは、画素ブロックが動き境界有りと判定された場合に、符号量制御部２１から供給された量子化パラメータの値を、動き境界が無い場合に設定される値よりも小さく設定する。本発明は、例えば、動画像データを符号化する符号化装置に適用できる。【選択図】図１
2012054759.tif 000002
【特許請求の範囲】
【請求項１】
動画像を構成する各入力画像を所定サイズの複数の画素ブロックに分割し、前記入力画像より時間的に１つ前に入力された画像を参照画像として、前記画素ブロックの動きベクトルを検出する動きベクトル検出手段と、
前記画素ブロックを、それより小さな複数のサブブロックに分割し、前記複数のサブブロックそれぞれの動きベクトルを検出するサブ動きベクトル検出手段と、
前記画素ブロック内の各サブブロックの動きベクトル検出結果である各サブ動きベクトルと、前記画素ブロックの動きベクトルとの関係に基づいて、前記画素ブロック単位で、前記画素ブロック内の動き境界の有無を判定する動き境界判定手段と、
前記動き境界有りと判定された場合に、前記画素ブロックを量子化するための量子化パラメータの値を、前記動き境界が無い場合に設定される値よりも小さく設定する量子化制御手段と
を備える符号化装置。
【請求項２】
前記入力画像より時間的に前の前記参照画像までの前記サブ動きベクトルの連続性をカウントしたカウント値を記憶する記憶手段と、
前記カウント値に基づいて、前記サブブロックの前記サブ動きベクトルの連続性の有無を判定する連続性判定手段と
をさらに備え、
前記動き境界判定手段は、前記サブ動きベクトルの連続性があると判定された前記サブブロックの個数が第１の閾値以上存在する前記画素ブロックを、前記動き境界有りと判定する
請求項１に記載の符号化装置。
【請求項３】
前記動き境界判定手段は、さらに、前記画素ブロックの動きベクトルと相関がある前記サブ動きベクトルの個数が第２の閾値以上、かつ、前記相関が無い前記サブ動きベクトルの個数が第３の閾値以上である前記入力画像の前記画素ブロックを、前記動き境界有りと判定する
請求項２に記載の符号化装置。
【請求項４】
前記量子化制御手段は、前記量子化パラメータの値を小さく設定するためのオフセット量を、前記画素ブロックの前記動きベクトルと前記相関が無い前記サブ動きベクトルを有する領域の大きさに応じて、段階的に変更する
請求項１に記載の符号化装置。
【請求項５】
動画像を構成する各入力画像を所定サイズの複数の画素ブロックに分割し、前記入力画像より時間的に１つ前に入力された画像を参照画像として、前記画素ブロックの動きベクトルを検出し、
前記画素ブロックを、それより小さな複数のサブブロックに分割し、前記複数のサブブロックそれぞれの動きベクトルを検出し、
前記画素ブロック内の各サブブロックの動きベクトル検出結果である各サブ動きベクトルと、前記画素ブロックの動きベクトルとの関係に基づいて、前記画素ブロック単位で、前記画素ブロック内の動き境界の有無を判定し、
前記動き境界有りと判定された場合に、前記画素ブロックを量子化するための量子化パラメータの値を、前記動き境界が無い場合に設定される値よりも小さく設定する
ステップを含む符号化方法。
【請求項６】
コンピュータを、
動画像を構成する各入力画像を所定サイズの複数の画素ブロックに分割し、前記入力画像より時間的に１つ前に入力された画像を参照画像として、前記画素ブロックの動きベクトルを検出する動きベクトル検出手段と、
前記画素ブロックを、それより小さな複数のサブブロックに分割し、前記複数のサブブロックそれぞれの動きベクトルを検出するサブ動きベクトル検出手段と、
前記画素ブロック内の各サブブロックの動きベクトル検出結果である各サブ動きベクトルと、前記画素ブロックの動きベクトルとの関係に基づいて、前記画素ブロック単位で、前記画素ブロック内の動き境界の有無を判定する動き境界判定手段と、
前記動き境界有りと判定された場合に、前記画素ブロックを量子化するための量子化パラメータの値を、前記動き境界が無い場合に設定される値よりも小さく設定する量子化制御手段
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化装置、符号化方法、およびプログラムに関し、特に、マクロブロック内に複数の動きが存在することにより予測残差が大きくなる可能性が高い領域の画質を改善することができるようにする符号化装置、符号化方法、およびプログラムに関する。
【背景技術】
【０００２】
近年のマルチメディアの発展に伴い、様々な動画像圧縮符号化方式が提案されている。動画像圧縮符号化方式の代表的なものに、MPEG(Moving Picture Expert Group)-1,2,4やH.264(ITU-T Q6/16 VCEG)といったものがある。これらの圧縮符号化の処理は、原画像をブロックと呼ばれる所定の領域に分割し、このブロックを単位にして、動き補償予測及びDCT変換処理などの符号化処理を施すものである。なお、動き補償予測を行う場合には、既に符号化済みの画像データを局所復号化して得られた画像を参照画像とすることから、復号化処理が必要となる。
【０００３】
MPEG方式に準拠して画像の圧縮符号化を行う場合、その符号量は画像自体の特性である空間周波数特性、シーン、及び量子化スケール値に応じて大きく異なる場合が多い。このような符号化特性を有する符号化装置を実現する上で、良好な画質に復号化するために重要な技術が符号量制御である。
【０００４】
従来の符号量制御では、視覚的に劣化の目立ちやすいブロックを抽出するための特徴量として、空間アクティビティが用いられている（例えば、特許文献１，２参照）。
【０００５】
例えば、符号量制御のアルゴリズムの一つであるTM5(Test Model 5)では、マクロブロックの空間アクティビティに基づいて、平坦部（空間アクティビティが低い部分）ほど量子化パラメータを小さくするような量子化制御が行われている。
【０００６】
このような空間アクティビティに基づく量子化制御によれば、主観的な画質の劣化が目立ちやすい平坦領域の画質を向上することができる。
【０００７】
ところで、フレーム間予測で予測残差が大きくなる領域は、主観的な画質の劣化が目立ちやすいと言える。しかしながら、空間アクティビティと予測残差との間に相関がないので、上述したような空間アクティビティに基づく量子化制御では、主観的な画質の劣化が目立ちやすい、予測残差が大きくなる可能性の高い領域の手当てが十分にできない。
【０００８】
そこで、特許文献３には、静止と動きの境界領域を求めることによって、予測残差が大きくなる可能性の高い領域の画質を改善する技術が提案されている。特許文献３に開示された技術では、マクロブロックの動きベクトルに基づいて、静止と動きの境界を検出し、量子化パラメータを小さくするような制御が行われている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平１１−１９６４１７号公報
【特許文献２】特開２００９−２００８７１号公報
【特許文献３】特開２０１０−１３０５５８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、マクロブロックの動きベクトルに基づいて量子化パラメータの制御を行う特許文献３の技術では、マクロブロック内に複数の動きが存在することにより予測残差が大きくなる可能性が高い領域の画質を改善することは困難である。例えば、画像（背景画像）の上に動きテロップが表示されている場合の、動きテロップを含むマクロブロックは、特許文献３の技術で画質を改善することが困難である。
【００１１】
本発明は、このような状況に鑑みてなされたものであり、マクロブロック内に複数の動きが存在することにより予測残差が大きくなる可能性が高い領域の画質を改善することができるようにするものである。
【課題を解決するための手段】
【００１２】
本発明の一側面の符号化装置は、動画像を構成する各入力画像を所定サイズの複数の画素ブロックに分割し、前記入力画像より時間的に１つ前に入力された画像を参照画像として、前記画素ブロックの動きベクトルを検出する動きベクトル検出手段と、前記画素ブロックを、それより小さな複数のサブブロックに分割し、前記複数のサブブロックそれぞれの動きベクトルを検出するサブ動きベクトル検出手段と、前記画素ブロック内の各サブブロックの動きベクトル検出結果である各サブ動きベクトルと、前記画素ブロックの動きベクトルとの関係に基づいて、前記画素ブロック単位で、前記画素ブロック内の動き境界の有無を判定する動き境界判定手段と、前記動き境界有りと判定された場合に、前記画素ブロックを量子化するための量子化パラメータの値を、前記動き境界が無い場合に設定される値よりも小さく設定する量子化制御手段とを備える。
【００１３】
本発明の一側面の符号化方法は、動画像を構成する各入力画像を所定サイズの複数の画素ブロックに分割し、前記入力画像より時間的に１つ前に入力された画像を参照画像として、前記画素ブロックの動きベクトルを検出し、前記画素ブロックを、それより小さな複数のサブブロックに分割し、前記複数のサブブロックそれぞれの動きベクトルを検出し、前記画素ブロック内の各サブブロックの動きベクトル検出結果である各サブ動きベクトルと、前記画素ブロックの動きベクトルとの関係に基づいて、前記画素ブロック単位で、前記画素ブロック内の動き境界の有無を判定し、前記動き境界有りと判定された場合に、前記画素ブロックを量子化するための量子化パラメータの値を、前記動き境界が無い場合に設定される値よりも小さく設定するステップを含む。
【００１４】
本発明の一側面のプログラムは、コンピュータを、動画像を構成する各入力画像を所定サイズの複数の画素ブロックに分割し、前記入力画像より時間的に１つ前に入力された画像を参照画像として、前記画素ブロックの動きベクトルを検出する動きベクトル検出手段と、前記画素ブロックを、それより小さな複数のサブブロックに分割し、前記複数のサブブロックそれぞれの動きベクトルを検出するサブ動きベクトル検出手段と、前記画素ブロック内の各サブブロックの動きベクトル検出結果である各サブ動きベクトルと、前記画素ブロックの動きベクトルとの関係に基づいて、前記画素ブロック単位で、前記画素ブロック内の動き境界の有無を判定する動き境界判定手段と、前記動き境界有りと判定された場合に、前記画素ブロックを量子化するための量子化パラメータの値を、前記動き境界が無い場合に設定される値よりも小さく設定する量子化制御手段として機能させるためのものである。
【００１５】
本発明の一側面においては、動画像を構成する各入力画像が、所定サイズの複数の画素ブロックに分割され、入力画像より時間的に１つ前に入力された画像を参照画像として、画素ブロックの動きベクトルが検出され、画素ブロックが、それより小さな複数のサブブロックに分割され、複数のサブブロックそれぞれの動きベクトルが検出され、画素ブロック内の各サブブロックの動きベクトル検出結果である各サブ動きベクトルと、画素ブロックの動きベクトルとの関係に基づいて、画素ブロック単位で、画素ブロック内の動き境界の有無が判定され、動き境界有りと判定された場合に、画素ブロックを量子化するための量子化パラメータの値が、動き境界が無い場合に設定される値よりも小さく設定される。
【発明の効果】
【００１６】
本発明の一側面によれば、マクロブロック内に複数の動きが存在することにより予測残差が大きくなる可能性が高い領域の画質を改善することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明を適用した符号化装置の一実施の形態の構成例を示すブロック図である。
【図２】動き境界検出部の詳細構成を示すブロック図である。
【図３】連続性判定部の連続性判定について説明する図である。
【図４】動き境界検出処理を説明するフローチャートである。
【図５】量子化処理を説明するフローチャートである。
【図６】オフセット量Qp-OFFを設定例を示す図である。
【図７】図１の符号化装置による画質改善の例について説明する図である。
【図８】図１の符号化装置による画質改善の例について説明する図である。
【図９】本発明を適用したコンピュータの一実施の形態の構成例を示すブロック図である。
【発明を実施するための形態】
【００１８】
［符号化装置の構成例］
図１は、本発明を適用した符号化装置の一実施の形態の構成例を示している。
【００１９】
図１の符号化装置１は、外部から入力される動画像データを、例えば、H.264方式で符号化する。なお、符号化装置１が行う符号化の符号化方式は、H.264方式に限らず、MPEG-1,2,4等のその他の方式でもよい。
【００２０】
動画像並べ替え部１１は、入力画像としての、動画像を構成する各フレーム画像を取得して一時記憶し、所定のタイミングで読み出すことで、フレーム画像を、符号化処理の順番に並び替えて出力する。並び替え後のフレーム画像は、動きベクトル検出部１２、イントラ予測部１３、及びインター予測部１４に供給される。
【００２１】
動きベクトル検出部１２は、符号化処理順に供給される各フレーム画像を、所定領域の画素ブロック（以下、マクロブロックと称する。）に分割し、画素ブロック毎に動きベクトルを算出する。具体的には、動きベクトル検出部１２は、参照フレームメモリ２５に格納されている復号画像を参照画像として読み出し、動画像並べ替え部１１から供給されたフレーム画像を分割した各マクロブロックを、復号画像と比較して、マクロブロックの動きベクトルを算出する。そして、動きベクトル検出部１２は、フレーム画像と復号画像とに基づいて最適な動き補償パラメータを決定する。動き補償パラメータとしては、動きベクトル、動き補償予測ブロックの形状、参照フレームの選択方法等がある。マクロブロックは、例えば、１６×１６画素又は８×８画素等に設定される。
【００２２】
イントラ予測部１３は、内部メモリに格納された現フレーム画像内の符号化済み領域の局所復号画像データを読み出して、フレーム内予測による動き補償処理を行う。
【００２３】
インター予測部１４は、フレーム間予測動き補償処理を行う。インター予測部１４は、まず、動画像並べ替え部１１からのフレーム画像と、動きベクトル検出部１２からの動き補償パラメータとを受け取る。また、インター予測部１４は、参照フレームメモリ２５に格納されている復号画像を参照画像として読み出す。
【００２４】
インター予測部１４は、参照フレームメモリ２５から読み出した復号画像に対して、動き補償パラメータを用いた重み係数の乗算やオフセットの加算等により、フレーム間の振幅補償処理を行う。そして、インター予測部１４は、輝度信号及び色差信号のそれぞれについて予測残差信号を生成する。すなわち、インター予測部１４は、符号化対象のマクロブロックに対応する動きベクトルに基づき、符号化対象のマクロブロックに対応する予測信号を、復号画像から生成する。そして、インター予測部１４は、符号化対象のマクロブロックの画像信号から予測信号を減算することによって予測残差信号を生成する。
【００２５】
モード判定部１５は、イントラ予測部１３及びインター予測部１４それぞれによる動き補償処理の結果を受け取り、この結果から算出される符号化コストに基づき、一つ以上の予測モードの候補から最適な符号化モードを決定する。モード判定部１５は、決定した符号化モードを、予測残差信号とともに直交変換部１６に供給する。
【００２６】
直交変換部１６は、予測残差信号に対して、モード判定部１５において決定された符号化モードによる直交変換処理を実行し、直交変換係数を算出する。
【００２７】
動き境界検出部１７は、マクロブロックと同じブロック単位で、異なった動きの境界である動き境界の有無を検出し、検出結果を動き境界情報として、動き境界情報並び替え部１８に供給する。動き境界検出部１７は、処理対象として注目しているマクロブロック（以下、注目マクロブロックと称する。）に対して、注目マクロブロックよりも小さなブロック（以下、サブブロックと称する。）単位で動きベクトルを求めることによって、動き境界の有無を検出する。サブブロックは、注目マクロブロックよりも小さければよく、１６×１６画素や８×８画素のマクロブロックに対しては、例えば、４×４画素や２×２画素とすることができる。また、サブブロックは、１画素でもよい。
【００２８】
動き境界情報並べ替え部１８は、動画像並べ替え部１１と同様に、動き境界検出部１７から供給された動き境界情報を、フレーム画像単位で、符号化処理の順番に並び替える。並び替え後の動き境界情報は、量子化部１９に供給される。
【００２９】
量子化部１９は、直交変換部１６により算出された直交変換係数、符号量制御部２１により決定された量子化パラメータ、及び動き境界情報並び替え部１８により並び替えられた動き境界情報を、それぞれ取得する。
【００３０】
量子化部１９は、マクロブロックに適用する量子化パラメータの値を、動き境界情報に応じて適応的に制御する量子化制御部１９Aを含んでいる。量子化制御部１９Aは、注目マクロブロックが動き境界を含むマクロブロックである場合、量子化パラメータの値を、符号量制御部２１から供給された値よりも小さな値に変更する。一方、注目マクロブロックが動き境界を含むマクロブロックではない場合、量子化制御部１９Aは、量子化パラメータの値を符号量制御部２１から供給された値のままとする。
【００３１】
量子化部１９は、量子化制御部１９Aによる制御後の量子化パラメータ（の値）を用いて、直交変換部１６から供給される直交変換係数の量子化処理を実行し、量子化直交変換係数を算出する。
【００３２】
可変長符号化部２０は、量子化部１９から供給される量子化直交変換係数に対して、可変長符号化、算術符号化等による可変長符号化処理を実行する。また、可変長符号化部２０は、動きベクトル等の符号化モード情報に対しても可変長符号化処理を実行する。可変長符号化部２０は、可変長符号化処理を施した量子化直交変換係数及び符号化モード情報をあわせて、動画像符号化データとして出力する。
【００３３】
符号量制御部２１は、可変長符号化部２０で算出した動画像符号化データを用いて、マクロブロック毎の符号化データの情報量（発生符号量）を算出する。符号量制御部２１は、算出したマクロブロック毎の符号化データの情報量に基づくフィードバック制御による符号量制御処理を実行する。すなわち、符号量制御部２１は、算出したマクロブロック毎の符号化データの情報量に基づいて、マクロブロック毎に量子化パラメータを設定し、量子化部１９に供給する。
【００３４】
逆量子化部２２は、量子化部１９から供給される量子化直交変換係数に対して逆量子化処理を実行し、直交変換係数を算出する。逆直交変換部２３は、逆量子化部２２で算出された直交変換係数に対する逆直交変換処理を実行し、予測残差信号を算出する。予測復号化部２４は、逆直交変換部２３からの予測残差信号を、モード判定部１５から供給される符号化モードに基づいて復号し、復号画像信号を生成する。
【００３５】
参照フレームメモリ２５は、予測復号化部２４から供給される復号画像信号を記憶する。参照フレームメモリ２５に記憶された復号画像信号は、動き補償予測における参照画像として使用される。
【００３６】
[動き境界検出部１７の詳細構成]
次に、図２を参照して動き境界検出部１７の詳細構成について説明する。
【００３７】
動き境界検出部１７は、ブロックマッチング部３１、フレームメモリ３２、画素単位動きベクトル検出部３３、ベクトルメモリ３４、連続性判定部３５、及び、動き境界判定部３６を備える。
【００３８】
ブロックマッチング部３１は、動きベクトル検出部１２と同様、入力画像とフレームメモリ３２に記憶されている参照画像（１フレーム前の入力画像）とを比較して、入力画像のマクロブロック毎に、動きベクトルを検出する。ブロックマッチング部３１は、検出されたマクロブロックの動きベクトルと、そのときの差分最小値を、それぞれ、動きベクトル情報と残差情報として、動き境界判定部３６に供給する。また、ブロックマッチング部３１は、動きベクトル情報と残差情報を出力したマクロブロックを、注目マクロブロックとして、画素単位動きベクトル検出部３３に供給する。
【００３９】
なお、動きベクトル検出部１２が並び替え後の符号化処理順に隣接するフレーム画像どうしで動きベクトルを算出するのに対して、ブロックマッチング部３１は、並び替え前の入力された順番で隣接するフレーム画像どうしで動きベクトルを算出する点で、動きベクトル検出部１２と異なる。従って、ブロックマッチング部３１は、動きベクトル検出部１２よりも、より正確なマクロブロックの動きベクトルを算出することができる。
【００４０】
フレームメモリ３２は、入力画像を参照画像として一定期間記憶し、ブロックマッチング部３１及び画素単位動きベクトル検出部３３に供給する。
【００４１】
画素単位動きベクトル検出部３３は、注目マクロブロックを構成する各サブブロックを、フレームメモリ３２に記憶されている参照画像と比較して、各サブブロックの動きベクトルを検出する。以下では、画素単位動きベクトル検出部３３が検出するサブブロックの動きベクトルを、ブロックマッチング部３１が検出するマクロブロック単位の動きベクトルと区別して、サブ動きベクトルと称する。検出された注目マクロブロックの各サブ動きベクトルは、ベクトルメモリ３４に供給され、記憶される。ベクトルメモリ３４は、サブ動きベクトルの他、後述するカウント値も記憶する。
【００４２】
連続性判定部３５は、注目マクロブロック内のサブ動きベクトルの連続性の有無を判定する。具体的には、連続性判定部３５は、注目マクロブロック内の各サブ動きベクトルが、所定の数フレームに渡って続いている場合には、サブ動きベクトルの連続性が有ると判定する。
【００４３】
また、連続性判定部３５は、サブ動きベクトルの連続性が有ると判定した場合には、ベクトルメモリ３４に記憶されている、連続性をカウントするカウント値を１だけカウントアップして更新する。サブ動きベクトルに連続性がないと判定された時点で、ベクトルメモリ３４に記憶されているカウント値はリセットされる。
【００４４】
図３を参照して、連続性判定部３５の連続性判定について説明する。
【００４５】
なお、図３では、縦方向を時間軸、横方向をｘ軸とし、サブブロックのｘ方向の時間的変化のみ示している。
【００４６】
例えば、注目マクロブロックを１画素のサブブロックに分けたとして、画素単位動きベクトル検出部３３において、第Ｎフレームの注目マクロブロックの所定のサブブロックとしての画素ｘａのサブ動きベクトルが、（Mvx,Mvy）と検出されたとする。
【００４７】
このとき、第Ｎフレームの画素ｘａに、動きの連続性がある場合には、第Ｎフレームの画素ｘａからサブ動きベクトル（Mvx,Mvy）だけ移動した第Ｎ−１フレームの画素ｘｂのサブ動きベクトルが、画素ｘａのサブ動きベクトルと同じ（Mvx,Mvy）となっているはずである。
【００４８】
従って、連続性判定部３５は、第Ｎフレームの注目マクロブロックのサブブロックである画素ｘａの連続性を判定する場合、ベクトルメモリ３４に記憶されている第Ｎ−１フレームの、画素ｘａからサブ動きベクトル（Mvx,Mvy）だけ移動した先の画素ｘｂのサブ動きベクトル（Mvx',Mvy'）を参照する。そして、連続性判定部３５は、サブ動きベクトル（Mvx,Mvy）とサブ動きベクトル（Mvx',Mvy'）の差分絶対和δ＝｜Mvx - Mvx'｜＋｜Mvy - Mvy'｜を求め、その差分絶対和δが所定の閾値MV_COUNT_TH以下である場合、動きの連続性が有ると判定する。
【００４９】
また、連続性判定部３５は、画素ｘａに動きの連続性が有ると判定した場合、ベクトルメモリ３４に記憶されている、第Ｎ−１フレームの画素ｘｂのカウント値MVc’に１をカウントした値を、第Ｎフレームの画素ｘａのカウント値MVcとする（MVc=MVc'+1）。
【００５０】
このようにカウント値を保存し、カウント値が所定の閾値以上である場合を、動きの連続性が有ると判断することで、単なる動き検出ミスによる空間方向の動きベクトルのばらつきを区別することができる。換言すれば、検出ミスによる動きベクトルのばらつきを除外して、動きの連続性を正確に検出することができる。
【００５１】
図２に戻り、動き境界判定部３６は、動きベクトル情報と残差情報、サブ動きベクトル情報、及び、連続性判定情報を用いて、注目マクロブロックについて、マクロブロック内の動き境界の有無を判定する。
【００５２】
[動き境界検出処理のフローチャート]
図４を参照して、注目マクロブロックごとに実行される、動き境界検出部１７の動き境界検出処理について説明する。なお、必要に応じて、図３に示した例を引用して説明する。
【００５３】
初めに、ステップＳ１において、ブロックマッチング部３１は、注目マクロブロックのブロックマッチングを行う。具体的には、ブロックマッチング部３１は、注目マクロブロックと、フレームメモリ３２に記憶されている１フレーム前の入力画像とを比較して、注目マクロブロックの動きベクトル（BMVx,BMVy）を検出する。ブロックマッチング部３１は、検出された動きベクトル（BMVx,BMVy）と、そのときの差分最小値SUB_MINを、それぞれ、動きベクトル情報と残差情報として、画素単位動きベクトル検出部３３及び動き境界判定部３６に供給する。
【００５４】
ステップＳ２において、動き境界判定部３６は、ブロックマッチング部３１で算出された差分最小値SUB_MINが所定の閾値MV_SUB_TH以上であるかを判定する。ここで、閾値MV_SUB_THは、予め設定された固定値であるが、動きベクトルの誤差は、動きベクトルが大きい程、大きくなる傾向がある。そのため、動きベクトル要素BMVxとBMVyそれぞれの絶対値の和（｜BMVx｜＋｜BMVy｜）が設定値ｂ（ｂ＞０）未満であればMV_SUB_TH＝ａ（＞０）とし、設定値ｂ以上であればMV_SUB_TH＝ｃ（＞ａ）とするなど、動きベクトルの大きさに応じて、閾値MV_SUB_THを変えるようにしてもよい（ａ，ｂ，ｃはいずれも正の数で、ａ＜ｃ）。
【００５５】
ステップＳ２で、差分最小値SUB_MINが所定の閾値MV_SUB_TH未満であると判定された場合、処理は後述するステップＳ１４に進む。
【００５６】
一方、ステップＳ２で、差分最小値SUB_MINが所定の閾値MV_SUB_TH以上であると判定された場合、処理はステップＳ３に進み、画素単位動きベクトル検出部３３は、注目マクロブロックを構成するサブブロックそれぞれについて動きベクトル（サブ動きベクトル）を検出する。検出結果は、ベクトルメモリ３４、連続性判定部３５、及び動き境界判定部３６のそれぞれに供給される。例えば、図３に示したように、注目マクロブロックを構成する所定の１つのサブブロックである画素ｘａのサブ動きベクトルが（Mvx,Mvy）と検出されたとする。
【００５７】
ステップＳ４において、連続性判定部３５は、注目マクロブロックを構成するサブブロックそれぞれに対応する、１フレーム前のサブ動きベクトルとカウント値を、ベクトルメモリ３４から読み出す。例えば、図３に示した例では、注目マクロブロックを構成する所定の１つのサブブロックである画素ｘａに対応する１フレーム前のサブ動きベクトルとカウント値として、画素ｘｂのサブ動きベクトル（Mvx',Mvy'）とカウント値MVc’が、読み出される。
【００５８】
ステップＳ５において、連続性判定部３５は、注目マクロブロックを構成するサブブロックそれぞれについて、対応する１フレーム前のサブ動きベクトルとの絶対差分和δを算出する。例えば、図３に示した例では、連続性判定部３５は、画素ｘａのサブ動きベクトル（Mvx,Mvy）と画素ｘｂのサブ動きベクトル（Mvx',Mvy'）の差分絶対和δ＝｜Mvx - Mvx'｜＋｜Mvy - Mvy'｜を算出する。
【００５９】
ステップＳ６において、連続性判定部３５は、注目マクロブロックを構成するサブブロックそれぞれについて、算出された絶対差分和δが所定の閾値MV_COUNT_TH以上であるか否かを判定する。
【００６０】
ステップＳ６で、算出された絶対差分和δが所定の閾値MV_COUNT_TH以上であると判定された場合、処理はステップＳ７に進み、連続性判定部３５は、サブブロックのカウント値をゼロにリセットする。例えば、図３に示した例では、連続性判定部３５は、第Ｎフレームの画素ｘａのカウント値MVcをゼロとする（MVc=0）。
【００６１】
一方、ステップＳ６で、算出された絶対差分和δが所定の閾値MV_COUNT_TH未満であると判定された場合、処理はステップＳ８に進み、連続性判定部３５は、サブブロックのカウント値を１フレーム前の値に１だけカウントアップしたものとする。例えば、図３に示した例では、連続性判定部３５は、画素ｘｂのカウント値MVc’に１をカウントした値を、第Ｎフレームの画素ｘａのカウント値MVcとする（MVc=MVc'+1）。
【００６２】
ステップＳ７及びＳ８の処理は、ステップＳ６の判定処理が行われた注目マクロブロックを構成するサブブロックそれぞれについて実行される。そして、注目マクロブロックを構成するサブブロック全てのカウント値が動き境界判定部３６に供給される
【００６３】
そして、ステップＳ９において、動き境界判定部３６は、注目マクロブロック内で、カウント値が所定の閾値MV_COUNT_TH以上、かつ、注目マクロブロックの動きベクトル（BMVx,BMVy）との差分絶対値和Δが所定の閾値MV_SAME_TH以下である、サブブロックの数（同方向サブブロック数）MV_SAME_COUNTを算出する。ここで、注目マクロブロックの動きベクトル（BMVx,BMVy）とサブ動きベクトル（Mvx,Mvy）と差分絶対値和Δは、Δ＝｜BMVx - Mvx｜＋｜BMVy - Mvy｜で計算される。閾値MV_COUNT_THは、サブ動きベクトルの連続性を表す判断するための値であり、例えば、３などに設定される。
【００６４】
ステップＳ１０において、動き境界判定部３６は、ステップＳ９で算出された同方向サブブロック数MV_SAME_COUNTが所定の閾値SAME_COUNT_TH以上であるかを判定する。ステップＳ１０では、信頼度の高い連続性のあるサブブロックの動きがマクロブロックの動きと同じであるか否かが判断される。閾値SAME_COUNT_THは、例えば、マクロブロックの画素数の３％に相当するサブブロックの個数（画素数）などに設定される。
【００６５】
ステップＳ１０で、同方向サブブロック数MV_SAME_COUNTが所定の閾値SAME_COUNT_TH未満であると判定された場合、即ち、信頼度の高い連続性のあるサブブロックの動きがマクロブロックの動きと同じではない場合、処理は後述するステップＳ１４に進む。
【００６６】
一方、ステップＳ１０で、同方向サブブロック数MV_SAME_COUNTが所定の閾値SAME_COUNT_TH以上であると判定された場合、処理はステップＳ１１に進み、動き境界判定部３６は、注目マクロブロック内で、注目マクロブロックの動きベクトル（BMVx,BMVy）との差分絶対値和Δが所定の閾値MV_DIFF_TH以上である、サブブロックの数（別方向サブブロック数）MV_DIFF_COUNTを算出する。閾値MV_DIFF_THについても、ステップＳ２の処理で上述したように、動きベクトル要素BMVxとBMVyそれぞれの絶対値の和（｜BMVx｜＋｜BMVy｜）が設定値ｂ以上であるか否かによって閾値MV_DIFF_THを変えるようにしてもよい。この場合、動きベクトル要素BMVxとBMVyそれぞれの絶対値の和（｜BMVx｜＋｜BMVy｜）が設定値ｂ未満であればMV_DIFF_TH＝ａとし、設定値ｂ以上であればMV_SUB_TH＝｛ａ＋（｜BMVx｜＋｜BMVy｜−ｃ）／ｄ｝とすることができる（ｄは正の数）。
【００６７】
ステップＳ１２において、動き境界判定部３６は、ステップＳ１１で算出した別方向サブブロック数MV_DIFF_COUNTが所定の閾値DIFF_COUNT_TH以上であるかを判定する。ステップＳ１２では、注目マクロブロックの動きベクトル（BMVx,BMVy）とは異なった動きベクトルを有するサブブロックが多いか否かが判断される。閾値DIFF_COUNT_THは、例えば、マクロブロックの画素数の１０％に相当するサブブロックの個数（画素数）などに設定される。
【００６８】
ステップＳ１２で、別方向サブブロック数MV_DIFF_COUNTが所定の閾値DIFF_COUNT_TH以上であると判定された場合、処理はステップＳ１３に進み、動き境界判定部３６は、注目マクロブロックについて「動き境界有り」と判定して、処理を終了する。
【００６９】
一方、ステップＳ１２で、別方向サブブロック数MV_DIFF_COUNTが所定の閾値DIFF_COUNT_TH未満であると判定された場合、処理はステップＳ１４に進み、動き境界判定部３６は、注目マクロブロックについて「動き境界無し」と判定して、処理を終了する。
【００７０】
以上の処理により、動き境界検出部１７において、注目マクロブロック内の動き境界の有無が判定される。
【００７１】
[量子化処理のフローチャート]
次に、図５のフローチャートを参照して、注目マクロブロック内の動き境界の有無に応じて量子化パラメータQpを変更して量子化する量子化処理について説明する。
【００７２】
初めに、ステップＳ３１において、量子化部１９は、注目マクロブロックの直交変換係数を直交変換部１６から取得する。
【００７３】
ステップＳ３２において、量子化制御部１９Aは、符号量制御部２１から、注目マクロブロックの量子化パラメータQpを取得する。
【００７４】
ステップＳ３３において、量子化部１９は、動き境界情報並べ替え部１８から、注目マクロブロックが「動き境界有り」かまたは「動き境界無し」かを示す、注目マクロブロックの動き境界情報を取得する。
【００７５】
ステップＳ３４において、量子化制御部１９Aは、注目マクロブロックが動き境界を含んでいるか、即ち、注目マクロブロックが「動き境界有り」かを判定する。
【００７６】
ステップＳ３４で、注目マクロブロックが動き境界を含んでいると判定された場合、処理はステップＳ３５に進み、量子化制御部１９Aは、量子化パラメータQpを、符号量制御部２１から取得した値から、予め決定した所定のオフセット量Qp-OFFだけ小さな値に設定（変更）する。
【００７７】
一方、ステップＳ３４で、注目マクロブロックが動き境界を含んでいないと判定された場合、ステップＳ３５の処理がスキップされる。即ち、注目マクロブロックが動き境界を含んでいない場合、量子化パラメータQpは、符号量制御部２１から供給された値そのままとされる。
【００７８】
ステップＳ３６において、量子化部１９は、量子化制御部１９Aによる制御後の量子化パラメータQpを用いて直交変換係数を量子化して、処理を終了する。
【００７９】
以上の量子化処理によれば、注目マクロブロックが動き境界を含んでいない場合には、符号量制御部２１から取得したままの量子化パラメータQpによって量子化が行われる。一方、注目マクロブロックが動き境界を含んでいる場合には、符号量制御部２１から取得した量子化パラメータQpよりも所定のオフセット量Qp-OFFだけ小さな量子化パラメータQp'によって量子化が行われる。
【００８０】
[変形例]
上述した例では、注目マクロブロックが動き境界を含んでいる場合、符号量制御部２１から取得した量子化パラメータQpを、一定のオフセット量Qp-OFFだけ小さくした量子化パラメータQp'に変更する制御が行われた。
【００８１】
しかし、オフセット量Qp-OFFは、注目マクロブロックの動きベクトル（BMVx,BMVy）とは異なった動きベクトルを有する領域の大きさによって変えるようにしてもよい。即ち、オフセット量Qp-OFFは段階的に設定されるものでもよい。
【００８２】
例えば、図６に示すように、注目マクロブロックの動きベクトル（BMVx,BMVy）とは異なった動きベクトルを有する領域の大きさを、動き境界検出部１７で算出された別方向サブブロック数MV_DIFF_COUNTに基づく画素数として求め、その画素数に応じてオフセット量Qp-OFFを変えてもよい。なお、図６は、注目マクロブロックを１６×１６画素とした場合の例である。
【００８３】
この場合、注目マクロブロックの別方向サブブロック数MV_DIFF_COUNT、または、その画素数が、注目マクロブロックの動き境界情報とともに、動き境界情報並べ替え部１８を介して、動き境界検出部１７から量子化部１９に供給される。そして、図５のステップＳ３５において、量子化制御部１９Aが、図６に従い、別方向サブブロック数MV_DIFF_COUNTに対応する画素数に応じてオフセット量Qp-OFFを調整する。
【００８４】
このようにすることで、動きベクトル（BMVx,BMVy）とは異なった動きベクトルを有する領域が大きければ、注目マクロブロックの劣化量も大きいと推測できるため、画質の劣化を防ぐことができる。
【００８５】
なお、図６のテーブルは、別方向サブブロック数MV_DIFF_COUNTに対応する画素数により、オフセット量Qp-OFFを分類しているが、別方向サブブロック数MV_DIFF_COUNTそのものによって分類しても勿論良い。別方向サブブロック数MV_DIFF_COUNTに対応する画素数で分類する利点としては、サブブロックのサイズを変更した場合でもテーブルを変更する必要がない点が挙げられる。
【００８６】
[本発明の効果について]
図７及び図８を参照して、図１の符号化装置１による画質改善の例について説明する。
【００８７】
図７は、縦縞の静止背景に『ア』という水平動きテロップが移動している画面（フレーム画像）のマクロブロックを示している。
【００８８】
水平動きテロップの文字『ア』が、第Ｎ−１フレームではマクロブロックＭＢ１に含まれており、第ＮフレームではマクロブロックＭＢ１の左隣のマクロブロックＭＢ２に移動している。マクロブロックＭＢ１の水平動きテロップを除く背景画像は、縞のない一様な画像であり、マクロブロックＭＢ２の水平動きテロップを除く背景画像は、縦縞の画像である。従って、水平動きテロップの文字『ア』は、第Ｎ−１フレームから第Ｎフレームにかけて、縞のない画像上から、縦縞の画像上に移動している。
【００８９】
この画像を、第Ｎ−１フレームのフレーム画像を参照画像、第Ｎフレームのフレーム画像を入力画像として一般的なフレーム間予測により符号化すると、背景の縦縞部分が残差として残ってしまい、予測残差が大きくなる。そのため、復号画像に符号化歪みが残り、画質の劣化を生じる可能性がある。
【００９０】
しかし、本発明を適用した符号化装置１による符号化では、マクロブロック内の動き境界の有無が判定され、「動き境界有り」と判定されたマクロブロックについては量子化パラメータQpが、予め設定された値よりも小さい値に設定される。
【００９１】
図８は、第Ｎ−１フレームのマクロブロックＭＢ１について、サブブロックを２×２として、サブブロックの動きベクトル（サブ動きベクトル）の検出例を概念的に示した図である。
【００９２】
図８Aに示される第Ｎ−１フレームのマクロブロックＭＢ１の画像のうち、水平動きテロップの文字『ア』は、水平方向左側に所定の移動量で移動し、背景画像は、文字『ア』と反対方向に、文字『ア』より少し遅い速度で移動しているとする。
【００９３】
この場合、第Ｎ−１フレームのマクロブロックＭＢ１の各サブブロックについて、図８Bの矢印で示されるようなサブ動きベクトルが検出され、これにより、マクロブロックＭＢ１には、動き境界が有ると検出される。そして、動き境界を含んだマクロブロックＭＢ１については、量子化パラメータQpの値が、動き境界が検出されない場合に設定される値よりも小さく設定されるので、細かく量子化される。その結果、視聴者が知覚する主観画質が向上する。
【００９４】
つまり、水平動きテロップなど、注目マクロブロック内に背景とテロップ動きが混在することにより、フレーム間予測による動き補償において予測誤差が大きくなる可能性が高い領域に対応するマクロブロックについて、量子化パラメータを制御することで、画質の劣化を低減することができる。
【００９５】
以上のように、マクロブロック内に複数の動きが存在することにより予測残差が大きくなる可能性が高い領域の画質を改善することができる
【００９６】
上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどが含まれる。
【００９７】
図９は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
【００９８】
コンピュータにおいて、CPU（Central Processing Unit）１０１，ROM（Read Only Memory）１０２，RAM（Random Access Memory）１０３は、バス１０４により相互に接続されている。
【００９９】
バス１０４には、さらに、入出力インタフェース１０５が接続されている。入出力インタフェース１０５には、入力部１０６、出力部１０７、記憶部１０８、通信部１０９、及びドライブ１１０が接続されている。
【０１００】
入力部１０６は、キーボード、マウス、マイクロホンなどよりなる。出力部１０７は、ディスプレイ、スピーカなどよりなる。記憶部１０８は、ハードディスクや不揮発性のメモリなどよりなる。通信部１０９は、ネットワークインタフェースなどよりなる。ドライブ１１０は、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブル記録媒体１１１を駆動する。
【０１０１】
以上のように構成されるコンピュータでは、CPU１０１が、例えば、記憶部１０８に記憶されているプログラムを、入出力インタフェース１０５及びバス１０４を介して、RAM１０３にロードして実行することにより、上述した一連の処理が行われる。
【０１０２】
コンピュータ（CPU１０１）が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブル記録媒体１１１に記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することができる。
【０１０３】
コンピュータでは、プログラムは、リムーバブル記録媒体１１１をドライブ１１０に装着することにより、入出力インタフェース１０５を介して、記憶部１０８にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部１０９で受信し、記憶部１０８にインストールすることができる。その他、プログラムは、ROM１０２や記憶部１０８に、あらかじめインストールしておくことができる。
【０１０４】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０１０５】
本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【符号の説明】
【０１０６】
１  符号化装置，  １７  動き境界検出部，  １８  動き境界情報並べ替え部，  １９  量子化部，  １９A  量子化制御部，  ２１  符号量制御部，  ３１  ブロックマッチング部，  ３２  フレームメモリ，  ３３  画素単位動きベクトル検出部，  ３４  ベクトルメモリ，  ３５  連続性判定部，  ３６  動き境界判定部
【図１】
2012054759.tif 000003
【図２】
2012054759.tif 000004
【図３】
2012054759.tif 000005
【図４】
2012054759.tif 000006
【図５】
2012054759.tif 000007
【図６】
2012054759.tif 000008
【図７】
2012054759.tif 000009
【図８】
2012054759.tif 000010
【図９】
2012054759.tif 000011