JP2012054759A - 符号化装置、符号化方法、およびプログラム - Google Patents
符号化装置、符号化方法、およびプログラム Download PDFInfo
- Publication number
- JP2012054759A JP2012054759A JP2010195696A JP2010195696A JP2012054759A JP 2012054759 A JP2012054759 A JP 2012054759A JP 2010195696 A JP2010195696 A JP 2010195696A JP 2010195696 A JP2010195696 A JP 2010195696A JP 2012054759 A JP2012054759 A JP 2012054759A
- Authority
- JP
- Japan
- Prior art keywords
- motion
- sub
- motion vector
- pixel block
- boundary
- 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.)
- Withdrawn
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
- Image Analysis (AREA)
Abstract
【課題】マクロブロック内に複数の動きが存在することにより予測残差が大きくなる可能性が高い領域の画質を改善することができるようにする。
【解決手段】動き境界検出部17は、動画像を構成する各入力画像を所定サイズの複数の画素ブロックに分割し、各画素ブロック内に、異なった動きの境界である動き境界の有無を判定する。量子化部19の量子化制御部19Aは、画素ブロックが動き境界有りと判定された場合に、符号量制御部21から供給された量子化パラメータの値を、動き境界が無い場合に設定される値よりも小さく設定する。本発明は、例えば、動画像データを符号化する符号化装置に適用できる。
【選択図】図1
【解決手段】動き境界検出部17は、動画像を構成する各入力画像を所定サイズの複数の画素ブロックに分割し、各画素ブロック内に、異なった動きの境界である動き境界の有無を判定する。量子化部19の量子化制御部19Aは、画素ブロックが動き境界有りと判定された場合に、符号量制御部21から供給された量子化パラメータの値を、動き境界が無い場合に設定される値よりも小さく設定する。本発明は、例えば、動画像データを符号化する符号化装置に適用できる。
【選択図】図1
Description
本発明は、符号化装置、符号化方法、およびプログラムに関し、特に、マクロブロック内に複数の動きが存在することにより予測残差が大きくなる可能性が高い領域の画質を改善することができるようにする符号化装置、符号化方法、およびプログラムに関する。
近年のマルチメディアの発展に伴い、様々な動画像圧縮符号化方式が提案されている。動画像圧縮符号化方式の代表的なものに、MPEG(Moving Picture Expert Group)-1,2,4やH.264(ITU-T Q6/16 VCEG)といったものがある。これらの圧縮符号化の処理は、原画像をブロックと呼ばれる所定の領域に分割し、このブロックを単位にして、動き補償予測及びDCT変換処理などの符号化処理を施すものである。なお、動き補償予測を行う場合には、既に符号化済みの画像データを局所復号化して得られた画像を参照画像とすることから、復号化処理が必要となる。
MPEG方式に準拠して画像の圧縮符号化を行う場合、その符号量は画像自体の特性である空間周波数特性、シーン、及び量子化スケール値に応じて大きく異なる場合が多い。このような符号化特性を有する符号化装置を実現する上で、良好な画質に復号化するために重要な技術が符号量制御である。
従来の符号量制御では、視覚的に劣化の目立ちやすいブロックを抽出するための特徴量として、空間アクティビティが用いられている(例えば、特許文献1,2参照)。
例えば、符号量制御のアルゴリズムの一つであるTM5(Test Model 5)では、マクロブロックの空間アクティビティに基づいて、平坦部(空間アクティビティが低い部分)ほど量子化パラメータを小さくするような量子化制御が行われている。
このような空間アクティビティに基づく量子化制御によれば、主観的な画質の劣化が目立ちやすい平坦領域の画質を向上することができる。
ところで、フレーム間予測で予測残差が大きくなる領域は、主観的な画質の劣化が目立ちやすいと言える。しかしながら、空間アクティビティと予測残差との間に相関がないので、上述したような空間アクティビティに基づく量子化制御では、主観的な画質の劣化が目立ちやすい、予測残差が大きくなる可能性の高い領域の手当てが十分にできない。
そこで、特許文献3には、静止と動きの境界領域を求めることによって、予測残差が大きくなる可能性の高い領域の画質を改善する技術が提案されている。特許文献3に開示された技術では、マクロブロックの動きベクトルに基づいて、静止と動きの境界を検出し、量子化パラメータを小さくするような制御が行われている。
しかしながら、マクロブロックの動きベクトルに基づいて量子化パラメータの制御を行う特許文献3の技術では、マクロブロック内に複数の動きが存在することにより予測残差が大きくなる可能性が高い領域の画質を改善することは困難である。例えば、画像(背景画像)の上に動きテロップが表示されている場合の、動きテロップを含むマクロブロックは、特許文献3の技術で画質を改善することが困難である。
本発明は、このような状況に鑑みてなされたものであり、マクロブロック内に複数の動きが存在することにより予測残差が大きくなる可能性が高い領域の画質を改善することができるようにするものである。
本発明の一側面の符号化装置は、動画像を構成する各入力画像を所定サイズの複数の画素ブロックに分割し、前記入力画像より時間的に1つ前に入力された画像を参照画像として、前記画素ブロックの動きベクトルを検出する動きベクトル検出手段と、前記画素ブロックを、それより小さな複数のサブブロックに分割し、前記複数のサブブロックそれぞれの動きベクトルを検出するサブ動きベクトル検出手段と、前記画素ブロック内の各サブブロックの動きベクトル検出結果である各サブ動きベクトルと、前記画素ブロックの動きベクトルとの関係に基づいて、前記画素ブロック単位で、前記画素ブロック内の動き境界の有無を判定する動き境界判定手段と、前記動き境界有りと判定された場合に、前記画素ブロックを量子化するための量子化パラメータの値を、前記動き境界が無い場合に設定される値よりも小さく設定する量子化制御手段とを備える。
本発明の一側面の符号化方法は、動画像を構成する各入力画像を所定サイズの複数の画素ブロックに分割し、前記入力画像より時間的に1つ前に入力された画像を参照画像として、前記画素ブロックの動きベクトルを検出し、前記画素ブロックを、それより小さな複数のサブブロックに分割し、前記複数のサブブロックそれぞれの動きベクトルを検出し、前記画素ブロック内の各サブブロックの動きベクトル検出結果である各サブ動きベクトルと、前記画素ブロックの動きベクトルとの関係に基づいて、前記画素ブロック単位で、前記画素ブロック内の動き境界の有無を判定し、前記動き境界有りと判定された場合に、前記画素ブロックを量子化するための量子化パラメータの値を、前記動き境界が無い場合に設定される値よりも小さく設定するステップを含む。
本発明の一側面のプログラムは、コンピュータを、動画像を構成する各入力画像を所定サイズの複数の画素ブロックに分割し、前記入力画像より時間的に1つ前に入力された画像を参照画像として、前記画素ブロックの動きベクトルを検出する動きベクトル検出手段と、前記画素ブロックを、それより小さな複数のサブブロックに分割し、前記複数のサブブロックそれぞれの動きベクトルを検出するサブ動きベクトル検出手段と、前記画素ブロック内の各サブブロックの動きベクトル検出結果である各サブ動きベクトルと、前記画素ブロックの動きベクトルとの関係に基づいて、前記画素ブロック単位で、前記画素ブロック内の動き境界の有無を判定する動き境界判定手段と、前記動き境界有りと判定された場合に、前記画素ブロックを量子化するための量子化パラメータの値を、前記動き境界が無い場合に設定される値よりも小さく設定する量子化制御手段として機能させるためのものである。
本発明の一側面においては、動画像を構成する各入力画像が、所定サイズの複数の画素ブロックに分割され、入力画像より時間的に1つ前に入力された画像を参照画像として、画素ブロックの動きベクトルが検出され、画素ブロックが、それより小さな複数のサブブロックに分割され、複数のサブブロックそれぞれの動きベクトルが検出され、画素ブロック内の各サブブロックの動きベクトル検出結果である各サブ動きベクトルと、画素ブロックの動きベクトルとの関係に基づいて、画素ブロック単位で、画素ブロック内の動き境界の有無が判定され、動き境界有りと判定された場合に、画素ブロックを量子化するための量子化パラメータの値が、動き境界が無い場合に設定される値よりも小さく設定される。
本発明の一側面によれば、マクロブロック内に複数の動きが存在することにより予測残差が大きくなる可能性が高い領域の画質を改善することができる。
[符号化装置の構成例]
図1は、本発明を適用した符号化装置の一実施の形態の構成例を示している。
図1は、本発明を適用した符号化装置の一実施の形態の構成例を示している。
図1の符号化装置1は、外部から入力される動画像データを、例えば、H.264方式で符号化する。なお、符号化装置1が行う符号化の符号化方式は、H.264方式に限らず、MPEG-1,2,4等のその他の方式でもよい。
動画像並べ替え部11は、入力画像としての、動画像を構成する各フレーム画像を取得して一時記憶し、所定のタイミングで読み出すことで、フレーム画像を、符号化処理の順番に並び替えて出力する。並び替え後のフレーム画像は、動きベクトル検出部12、イントラ予測部13、及びインター予測部14に供給される。
動きベクトル検出部12は、符号化処理順に供給される各フレーム画像を、所定領域の画素ブロック(以下、マクロブロックと称する。)に分割し、画素ブロック毎に動きベクトルを算出する。具体的には、動きベクトル検出部12は、参照フレームメモリ25に格納されている復号画像を参照画像として読み出し、動画像並べ替え部11から供給されたフレーム画像を分割した各マクロブロックを、復号画像と比較して、マクロブロックの動きベクトルを算出する。そして、動きベクトル検出部12は、フレーム画像と復号画像とに基づいて最適な動き補償パラメータを決定する。動き補償パラメータとしては、動きベクトル、動き補償予測ブロックの形状、参照フレームの選択方法等がある。マクロブロックは、例えば、16×16画素又は8×8画素等に設定される。
イントラ予測部13は、内部メモリに格納された現フレーム画像内の符号化済み領域の局所復号画像データを読み出して、フレーム内予測による動き補償処理を行う。
インター予測部14は、フレーム間予測動き補償処理を行う。インター予測部14は、まず、動画像並べ替え部11からのフレーム画像と、動きベクトル検出部12からの動き補償パラメータとを受け取る。また、インター予測部14は、参照フレームメモリ25に格納されている復号画像を参照画像として読み出す。
インター予測部14は、参照フレームメモリ25から読み出した復号画像に対して、動き補償パラメータを用いた重み係数の乗算やオフセットの加算等により、フレーム間の振幅補償処理を行う。そして、インター予測部14は、輝度信号及び色差信号のそれぞれについて予測残差信号を生成する。すなわち、インター予測部14は、符号化対象のマクロブロックに対応する動きベクトルに基づき、符号化対象のマクロブロックに対応する予測信号を、復号画像から生成する。そして、インター予測部14は、符号化対象のマクロブロックの画像信号から予測信号を減算することによって予測残差信号を生成する。
モード判定部15は、イントラ予測部13及びインター予測部14それぞれによる動き補償処理の結果を受け取り、この結果から算出される符号化コストに基づき、一つ以上の予測モードの候補から最適な符号化モードを決定する。モード判定部15は、決定した符号化モードを、予測残差信号とともに直交変換部16に供給する。
直交変換部16は、予測残差信号に対して、モード判定部15において決定された符号化モードによる直交変換処理を実行し、直交変換係数を算出する。
動き境界検出部17は、マクロブロックと同じブロック単位で、異なった動きの境界である動き境界の有無を検出し、検出結果を動き境界情報として、動き境界情報並び替え部18に供給する。動き境界検出部17は、処理対象として注目しているマクロブロック(以下、注目マクロブロックと称する。)に対して、注目マクロブロックよりも小さなブロック(以下、サブブロックと称する。)単位で動きベクトルを求めることによって、動き境界の有無を検出する。サブブロックは、注目マクロブロックよりも小さければよく、16×16画素や8×8画素のマクロブロックに対しては、例えば、4×4画素や2×2画素とすることができる。また、サブブロックは、1画素でもよい。
動き境界情報並べ替え部18は、動画像並べ替え部11と同様に、動き境界検出部17から供給された動き境界情報を、フレーム画像単位で、符号化処理の順番に並び替える。並び替え後の動き境界情報は、量子化部19に供給される。
量子化部19は、直交変換部16により算出された直交変換係数、符号量制御部21により決定された量子化パラメータ、及び動き境界情報並び替え部18により並び替えられた動き境界情報を、それぞれ取得する。
量子化部19は、マクロブロックに適用する量子化パラメータの値を、動き境界情報に応じて適応的に制御する量子化制御部19Aを含んでいる。量子化制御部19Aは、注目マクロブロックが動き境界を含むマクロブロックである場合、量子化パラメータの値を、符号量制御部21から供給された値よりも小さな値に変更する。一方、注目マクロブロックが動き境界を含むマクロブロックではない場合、量子化制御部19Aは、量子化パラメータの値を符号量制御部21から供給された値のままとする。
量子化部19は、量子化制御部19Aによる制御後の量子化パラメータ(の値)を用いて、直交変換部16から供給される直交変換係数の量子化処理を実行し、量子化直交変換係数を算出する。
可変長符号化部20は、量子化部19から供給される量子化直交変換係数に対して、可変長符号化、算術符号化等による可変長符号化処理を実行する。また、可変長符号化部20は、動きベクトル等の符号化モード情報に対しても可変長符号化処理を実行する。可変長符号化部20は、可変長符号化処理を施した量子化直交変換係数及び符号化モード情報をあわせて、動画像符号化データとして出力する。
符号量制御部21は、可変長符号化部20で算出した動画像符号化データを用いて、マクロブロック毎の符号化データの情報量(発生符号量)を算出する。符号量制御部21は、算出したマクロブロック毎の符号化データの情報量に基づくフィードバック制御による符号量制御処理を実行する。すなわち、符号量制御部21は、算出したマクロブロック毎の符号化データの情報量に基づいて、マクロブロック毎に量子化パラメータを設定し、量子化部19に供給する。
逆量子化部22は、量子化部19から供給される量子化直交変換係数に対して逆量子化処理を実行し、直交変換係数を算出する。逆直交変換部23は、逆量子化部22で算出された直交変換係数に対する逆直交変換処理を実行し、予測残差信号を算出する。予測復号化部24は、逆直交変換部23からの予測残差信号を、モード判定部15から供給される符号化モードに基づいて復号し、復号画像信号を生成する。
参照フレームメモリ25は、予測復号化部24から供給される復号画像信号を記憶する。参照フレームメモリ25に記憶された復号画像信号は、動き補償予測における参照画像として使用される。
[動き境界検出部17の詳細構成]
次に、図2を参照して動き境界検出部17の詳細構成について説明する。
次に、図2を参照して動き境界検出部17の詳細構成について説明する。
動き境界検出部17は、ブロックマッチング部31、フレームメモリ32、画素単位動きベクトル検出部33、ベクトルメモリ34、連続性判定部35、及び、動き境界判定部36を備える。
ブロックマッチング部31は、動きベクトル検出部12と同様、入力画像とフレームメモリ32に記憶されている参照画像(1フレーム前の入力画像)とを比較して、入力画像のマクロブロック毎に、動きベクトルを検出する。ブロックマッチング部31は、検出されたマクロブロックの動きベクトルと、そのときの差分最小値を、それぞれ、動きベクトル情報と残差情報として、動き境界判定部36に供給する。また、ブロックマッチング部31は、動きベクトル情報と残差情報を出力したマクロブロックを、注目マクロブロックとして、画素単位動きベクトル検出部33に供給する。
なお、動きベクトル検出部12が並び替え後の符号化処理順に隣接するフレーム画像どうしで動きベクトルを算出するのに対して、ブロックマッチング部31は、並び替え前の入力された順番で隣接するフレーム画像どうしで動きベクトルを算出する点で、動きベクトル検出部12と異なる。従って、ブロックマッチング部31は、動きベクトル検出部12よりも、より正確なマクロブロックの動きベクトルを算出することができる。
フレームメモリ32は、入力画像を参照画像として一定期間記憶し、ブロックマッチング部31及び画素単位動きベクトル検出部33に供給する。
画素単位動きベクトル検出部33は、注目マクロブロックを構成する各サブブロックを、フレームメモリ32に記憶されている参照画像と比較して、各サブブロックの動きベクトルを検出する。以下では、画素単位動きベクトル検出部33が検出するサブブロックの動きベクトルを、ブロックマッチング部31が検出するマクロブロック単位の動きベクトルと区別して、サブ動きベクトルと称する。検出された注目マクロブロックの各サブ動きベクトルは、ベクトルメモリ34に供給され、記憶される。ベクトルメモリ34は、サブ動きベクトルの他、後述するカウント値も記憶する。
連続性判定部35は、注目マクロブロック内のサブ動きベクトルの連続性の有無を判定する。具体的には、連続性判定部35は、注目マクロブロック内の各サブ動きベクトルが、所定の数フレームに渡って続いている場合には、サブ動きベクトルの連続性が有ると判定する。
また、連続性判定部35は、サブ動きベクトルの連続性が有ると判定した場合には、ベクトルメモリ34に記憶されている、連続性をカウントするカウント値を1だけカウントアップして更新する。サブ動きベクトルに連続性がないと判定された時点で、ベクトルメモリ34に記憶されているカウント値はリセットされる。
図3を参照して、連続性判定部35の連続性判定について説明する。
なお、図3では、縦方向を時間軸、横方向をx軸とし、サブブロックのx方向の時間的変化のみ示している。
例えば、注目マクロブロックを1画素のサブブロックに分けたとして、画素単位動きベクトル検出部33において、第Nフレームの注目マクロブロックの所定のサブブロックとしての画素xaのサブ動きベクトルが、(Mvx,Mvy)と検出されたとする。
このとき、第Nフレームの画素xaに、動きの連続性がある場合には、第Nフレームの画素xaからサブ動きベクトル(Mvx,Mvy)だけ移動した第N−1フレームの画素xbのサブ動きベクトルが、画素xaのサブ動きベクトルと同じ(Mvx,Mvy)となっているはずである。
従って、連続性判定部35は、第Nフレームの注目マクロブロックのサブブロックである画素xaの連続性を判定する場合、ベクトルメモリ34に記憶されている第N−1フレームの、画素xaからサブ動きベクトル(Mvx,Mvy)だけ移動した先の画素xbのサブ動きベクトル(Mvx',Mvy')を参照する。そして、連続性判定部35は、サブ動きベクトル(Mvx,Mvy)とサブ動きベクトル(Mvx',Mvy')の差分絶対和δ=|Mvx - Mvx'|+|Mvy - Mvy'|を求め、その差分絶対和δが所定の閾値MV_COUNT_TH以下である場合、動きの連続性が有ると判定する。
また、連続性判定部35は、画素xaに動きの連続性が有ると判定した場合、ベクトルメモリ34に記憶されている、第N−1フレームの画素xbのカウント値MVc’に1をカウントした値を、第Nフレームの画素xaのカウント値MVcとする(MVc=MVc'+1)。
このようにカウント値を保存し、カウント値が所定の閾値以上である場合を、動きの連続性が有ると判断することで、単なる動き検出ミスによる空間方向の動きベクトルのばらつきを区別することができる。換言すれば、検出ミスによる動きベクトルのばらつきを除外して、動きの連続性を正確に検出することができる。
図2に戻り、動き境界判定部36は、動きベクトル情報と残差情報、サブ動きベクトル情報、及び、連続性判定情報を用いて、注目マクロブロックについて、マクロブロック内の動き境界の有無を判定する。
[動き境界検出処理のフローチャート]
図4を参照して、注目マクロブロックごとに実行される、動き境界検出部17の動き境界検出処理について説明する。なお、必要に応じて、図3に示した例を引用して説明する。
図4を参照して、注目マクロブロックごとに実行される、動き境界検出部17の動き境界検出処理について説明する。なお、必要に応じて、図3に示した例を引用して説明する。
初めに、ステップS1において、ブロックマッチング部31は、注目マクロブロックのブロックマッチングを行う。具体的には、ブロックマッチング部31は、注目マクロブロックと、フレームメモリ32に記憶されている1フレーム前の入力画像とを比較して、注目マクロブロックの動きベクトル(BMVx,BMVy)を検出する。ブロックマッチング部31は、検出された動きベクトル(BMVx,BMVy)と、そのときの差分最小値SUB_MINを、それぞれ、動きベクトル情報と残差情報として、画素単位動きベクトル検出部33及び動き境界判定部36に供給する。
ステップS2において、動き境界判定部36は、ブロックマッチング部31で算出された差分最小値SUB_MINが所定の閾値MV_SUB_TH以上であるかを判定する。ここで、閾値MV_SUB_THは、予め設定された固定値であるが、動きベクトルの誤差は、動きベクトルが大きい程、大きくなる傾向がある。そのため、動きベクトル要素BMVxとBMVyそれぞれの絶対値の和(|BMVx|+|BMVy|)が設定値b(b>0)未満であればMV_SUB_TH=a(>0)とし、設定値b以上であればMV_SUB_TH=c(>a)とするなど、動きベクトルの大きさに応じて、閾値MV_SUB_THを変えるようにしてもよい(a,b,cはいずれも正の数で、a<c)。
ステップS2で、差分最小値SUB_MINが所定の閾値MV_SUB_TH未満であると判定された場合、処理は後述するステップS14に進む。
一方、ステップS2で、差分最小値SUB_MINが所定の閾値MV_SUB_TH以上であると判定された場合、処理はステップS3に進み、画素単位動きベクトル検出部33は、注目マクロブロックを構成するサブブロックそれぞれについて動きベクトル(サブ動きベクトル)を検出する。検出結果は、ベクトルメモリ34、連続性判定部35、及び動き境界判定部36のそれぞれに供給される。例えば、図3に示したように、注目マクロブロックを構成する所定の1つのサブブロックである画素xaのサブ動きベクトルが(Mvx,Mvy)と検出されたとする。
ステップS4において、連続性判定部35は、注目マクロブロックを構成するサブブロックそれぞれに対応する、1フレーム前のサブ動きベクトルとカウント値を、ベクトルメモリ34から読み出す。例えば、図3に示した例では、注目マクロブロックを構成する所定の1つのサブブロックである画素xaに対応する1フレーム前のサブ動きベクトルとカウント値として、画素xbのサブ動きベクトル(Mvx',Mvy')とカウント値MVc’が、読み出される。
ステップS5において、連続性判定部35は、注目マクロブロックを構成するサブブロックそれぞれについて、対応する1フレーム前のサブ動きベクトルとの絶対差分和δを算出する。例えば、図3に示した例では、連続性判定部35は、画素xaのサブ動きベクトル(Mvx,Mvy)と画素xbのサブ動きベクトル(Mvx',Mvy')の差分絶対和δ=|Mvx - Mvx'|+|Mvy - Mvy'|を算出する。
ステップS6において、連続性判定部35は、注目マクロブロックを構成するサブブロックそれぞれについて、算出された絶対差分和δが所定の閾値MV_COUNT_TH以上であるか否かを判定する。
ステップS6で、算出された絶対差分和δが所定の閾値MV_COUNT_TH以上であると判定された場合、処理はステップS7に進み、連続性判定部35は、サブブロックのカウント値をゼロにリセットする。例えば、図3に示した例では、連続性判定部35は、第Nフレームの画素xaのカウント値MVcをゼロとする(MVc=0)。
一方、ステップS6で、算出された絶対差分和δが所定の閾値MV_COUNT_TH未満であると判定された場合、処理はステップS8に進み、連続性判定部35は、サブブロックのカウント値を1フレーム前の値に1だけカウントアップしたものとする。例えば、図3に示した例では、連続性判定部35は、画素xbのカウント値MVc’に1をカウントした値を、第Nフレームの画素xaのカウント値MVcとする(MVc=MVc'+1)。
ステップS7及びS8の処理は、ステップS6の判定処理が行われた注目マクロブロックを構成するサブブロックそれぞれについて実行される。そして、注目マクロブロックを構成するサブブロック全てのカウント値が動き境界判定部36に供給される
そして、ステップS9において、動き境界判定部36は、注目マクロブロック内で、カウント値が所定の閾値MV_COUNT_TH以上、かつ、注目マクロブロックの動きベクトル(BMVx,BMVy)との差分絶対値和Δが所定の閾値MV_SAME_TH以下である、サブブロックの数(同方向サブブロック数)MV_SAME_COUNTを算出する。ここで、注目マクロブロックの動きベクトル(BMVx,BMVy)とサブ動きベクトル(Mvx,Mvy)と差分絶対値和Δは、Δ=|BMVx - Mvx|+|BMVy - Mvy|で計算される。閾値MV_COUNT_THは、サブ動きベクトルの連続性を表す判断するための値であり、例えば、3などに設定される。
ステップS10において、動き境界判定部36は、ステップS9で算出された同方向サブブロック数MV_SAME_COUNTが所定の閾値SAME_COUNT_TH以上であるかを判定する。ステップS10では、信頼度の高い連続性のあるサブブロックの動きがマクロブロックの動きと同じであるか否かが判断される。閾値SAME_COUNT_THは、例えば、マクロブロックの画素数の3%に相当するサブブロックの個数(画素数)などに設定される。
ステップS10で、同方向サブブロック数MV_SAME_COUNTが所定の閾値SAME_COUNT_TH未満であると判定された場合、即ち、信頼度の高い連続性のあるサブブロックの動きがマクロブロックの動きと同じではない場合、処理は後述するステップS14に進む。
一方、ステップS10で、同方向サブブロック数MV_SAME_COUNTが所定の閾値SAME_COUNT_TH以上であると判定された場合、処理はステップS11に進み、動き境界判定部36は、注目マクロブロック内で、注目マクロブロックの動きベクトル(BMVx,BMVy)との差分絶対値和Δが所定の閾値MV_DIFF_TH以上である、サブブロックの数(別方向サブブロック数)MV_DIFF_COUNTを算出する。閾値MV_DIFF_THについても、ステップS2の処理で上述したように、動きベクトル要素BMVxとBMVyそれぞれの絶対値の和(|BMVx|+|BMVy|)が設定値b以上であるか否かによって閾値MV_DIFF_THを変えるようにしてもよい。この場合、動きベクトル要素BMVxとBMVyそれぞれの絶対値の和(|BMVx|+|BMVy|)が設定値b未満であればMV_DIFF_TH=aとし、設定値b以上であればMV_SUB_TH={a+(|BMVx|+|BMVy|−c)/d}とすることができる(dは正の数)。
ステップS12において、動き境界判定部36は、ステップS11で算出した別方向サブブロック数MV_DIFF_COUNTが所定の閾値DIFF_COUNT_TH以上であるかを判定する。ステップS12では、注目マクロブロックの動きベクトル(BMVx,BMVy)とは異なった動きベクトルを有するサブブロックが多いか否かが判断される。閾値DIFF_COUNT_THは、例えば、マクロブロックの画素数の10%に相当するサブブロックの個数(画素数)などに設定される。
ステップS12で、別方向サブブロック数MV_DIFF_COUNTが所定の閾値DIFF_COUNT_TH以上であると判定された場合、処理はステップS13に進み、動き境界判定部36は、注目マクロブロックについて「動き境界有り」と判定して、処理を終了する。
一方、ステップS12で、別方向サブブロック数MV_DIFF_COUNTが所定の閾値DIFF_COUNT_TH未満であると判定された場合、処理はステップS14に進み、動き境界判定部36は、注目マクロブロックについて「動き境界無し」と判定して、処理を終了する。
以上の処理により、動き境界検出部17において、注目マクロブロック内の動き境界の有無が判定される。
[量子化処理のフローチャート]
次に、図5のフローチャートを参照して、注目マクロブロック内の動き境界の有無に応じて量子化パラメータQpを変更して量子化する量子化処理について説明する。
次に、図5のフローチャートを参照して、注目マクロブロック内の動き境界の有無に応じて量子化パラメータQpを変更して量子化する量子化処理について説明する。
初めに、ステップS31において、量子化部19は、注目マクロブロックの直交変換係数を直交変換部16から取得する。
ステップS32において、量子化制御部19Aは、符号量制御部21から、注目マクロブロックの量子化パラメータQpを取得する。
ステップS33において、量子化部19は、動き境界情報並べ替え部18から、注目マクロブロックが「動き境界有り」かまたは「動き境界無し」かを示す、注目マクロブロックの動き境界情報を取得する。
ステップS34において、量子化制御部19Aは、注目マクロブロックが動き境界を含んでいるか、即ち、注目マクロブロックが「動き境界有り」かを判定する。
ステップS34で、注目マクロブロックが動き境界を含んでいると判定された場合、処理はステップS35に進み、量子化制御部19Aは、量子化パラメータQpを、符号量制御部21から取得した値から、予め決定した所定のオフセット量Qp-OFFだけ小さな値に設定(変更)する。
一方、ステップS34で、注目マクロブロックが動き境界を含んでいないと判定された場合、ステップS35の処理がスキップされる。即ち、注目マクロブロックが動き境界を含んでいない場合、量子化パラメータQpは、符号量制御部21から供給された値そのままとされる。
ステップS36において、量子化部19は、量子化制御部19Aによる制御後の量子化パラメータQpを用いて直交変換係数を量子化して、処理を終了する。
以上の量子化処理によれば、注目マクロブロックが動き境界を含んでいない場合には、符号量制御部21から取得したままの量子化パラメータQpによって量子化が行われる。一方、注目マクロブロックが動き境界を含んでいる場合には、符号量制御部21から取得した量子化パラメータQpよりも所定のオフセット量Qp-OFFだけ小さな量子化パラメータQp'によって量子化が行われる。
[変形例]
上述した例では、注目マクロブロックが動き境界を含んでいる場合、符号量制御部21から取得した量子化パラメータQpを、一定のオフセット量Qp-OFFだけ小さくした量子化パラメータQp'に変更する制御が行われた。
上述した例では、注目マクロブロックが動き境界を含んでいる場合、符号量制御部21から取得した量子化パラメータQpを、一定のオフセット量Qp-OFFだけ小さくした量子化パラメータQp'に変更する制御が行われた。
しかし、オフセット量Qp-OFFは、注目マクロブロックの動きベクトル(BMVx,BMVy)とは異なった動きベクトルを有する領域の大きさによって変えるようにしてもよい。即ち、オフセット量Qp-OFFは段階的に設定されるものでもよい。
例えば、図6に示すように、注目マクロブロックの動きベクトル(BMVx,BMVy)とは異なった動きベクトルを有する領域の大きさを、動き境界検出部17で算出された別方向サブブロック数MV_DIFF_COUNTに基づく画素数として求め、その画素数に応じてオフセット量Qp-OFFを変えてもよい。なお、図6は、注目マクロブロックを16×16画素とした場合の例である。
この場合、注目マクロブロックの別方向サブブロック数MV_DIFF_COUNT、または、その画素数が、注目マクロブロックの動き境界情報とともに、動き境界情報並べ替え部18を介して、動き境界検出部17から量子化部19に供給される。そして、図5のステップS35において、量子化制御部19Aが、図6に従い、別方向サブブロック数MV_DIFF_COUNTに対応する画素数に応じてオフセット量Qp-OFFを調整する。
このようにすることで、動きベクトル(BMVx,BMVy)とは異なった動きベクトルを有する領域が大きければ、注目マクロブロックの劣化量も大きいと推測できるため、画質の劣化を防ぐことができる。
なお、図6のテーブルは、別方向サブブロック数MV_DIFF_COUNTに対応する画素数により、オフセット量Qp-OFFを分類しているが、別方向サブブロック数MV_DIFF_COUNTそのものによって分類しても勿論良い。別方向サブブロック数MV_DIFF_COUNTに対応する画素数で分類する利点としては、サブブロックのサイズを変更した場合でもテーブルを変更する必要がない点が挙げられる。
[本発明の効果について]
図7及び図8を参照して、図1の符号化装置1による画質改善の例について説明する。
図7及び図8を参照して、図1の符号化装置1による画質改善の例について説明する。
図7は、縦縞の静止背景に『ア』という水平動きテロップが移動している画面(フレーム画像)のマクロブロックを示している。
水平動きテロップの文字『ア』が、第N−1フレームではマクロブロックMB1に含まれており、第NフレームではマクロブロックMB1の左隣のマクロブロックMB2に移動している。マクロブロックMB1の水平動きテロップを除く背景画像は、縞のない一様な画像であり、マクロブロックMB2の水平動きテロップを除く背景画像は、縦縞の画像である。従って、水平動きテロップの文字『ア』は、第N−1フレームから第Nフレームにかけて、縞のない画像上から、縦縞の画像上に移動している。
この画像を、第N−1フレームのフレーム画像を参照画像、第Nフレームのフレーム画像を入力画像として一般的なフレーム間予測により符号化すると、背景の縦縞部分が残差として残ってしまい、予測残差が大きくなる。そのため、復号画像に符号化歪みが残り、画質の劣化を生じる可能性がある。
しかし、本発明を適用した符号化装置1による符号化では、マクロブロック内の動き境界の有無が判定され、「動き境界有り」と判定されたマクロブロックについては量子化パラメータQpが、予め設定された値よりも小さい値に設定される。
図8は、第N−1フレームのマクロブロックMB1について、サブブロックを2×2として、サブブロックの動きベクトル(サブ動きベクトル)の検出例を概念的に示した図である。
図8Aに示される第N−1フレームのマクロブロックMB1の画像のうち、水平動きテロップの文字『ア』は、水平方向左側に所定の移動量で移動し、背景画像は、文字『ア』と反対方向に、文字『ア』より少し遅い速度で移動しているとする。
この場合、第N−1フレームのマクロブロックMB1の各サブブロックについて、図8Bの矢印で示されるようなサブ動きベクトルが検出され、これにより、マクロブロックMB1には、動き境界が有ると検出される。そして、動き境界を含んだマクロブロックMB1については、量子化パラメータQpの値が、動き境界が検出されない場合に設定される値よりも小さく設定されるので、細かく量子化される。その結果、視聴者が知覚する主観画質が向上する。
つまり、水平動きテロップなど、注目マクロブロック内に背景とテロップ動きが混在することにより、フレーム間予測による動き補償において予測誤差が大きくなる可能性が高い領域に対応するマクロブロックについて、量子化パラメータを制御することで、画質の劣化を低減することができる。
以上のように、マクロブロック内に複数の動きが存在することにより予測残差が大きくなる可能性が高い領域の画質を改善することができる
上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどが含まれる。
図9は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
コンピュータにおいて、CPU(Central Processing Unit)101,ROM(Read Only Memory)102,RAM(Random Access Memory)103は、バス104により相互に接続されている。
バス104には、さらに、入出力インタフェース105が接続されている。入出力インタフェース105には、入力部106、出力部107、記憶部108、通信部109、及びドライブ110が接続されている。
入力部106は、キーボード、マウス、マイクロホンなどよりなる。出力部107は、ディスプレイ、スピーカなどよりなる。記憶部108は、ハードディスクや不揮発性のメモリなどよりなる。通信部109は、ネットワークインタフェースなどよりなる。ドライブ110は、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブル記録媒体111を駆動する。
以上のように構成されるコンピュータでは、CPU101が、例えば、記憶部108に記憶されているプログラムを、入出力インタフェース105及びバス104を介して、RAM103にロードして実行することにより、上述した一連の処理が行われる。
コンピュータ(CPU101)が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブル記録媒体111に記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することができる。
コンピュータでは、プログラムは、リムーバブル記録媒体111をドライブ110に装着することにより、入出力インタフェース105を介して、記憶部108にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部109で受信し、記憶部108にインストールすることができる。その他、プログラムは、ROM102や記憶部108に、あらかじめインストールしておくことができる。
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
1 符号化装置, 17 動き境界検出部, 18 動き境界情報並べ替え部, 19 量子化部, 19A 量子化制御部, 21 符号量制御部, 31 ブロックマッチング部, 32 フレームメモリ, 33 画素単位動きベクトル検出部, 34 ベクトルメモリ, 35 連続性判定部, 36 動き境界判定部
Claims (6)
- 動画像を構成する各入力画像を所定サイズの複数の画素ブロックに分割し、前記入力画像より時間的に1つ前に入力された画像を参照画像として、前記画素ブロックの動きベクトルを検出する動きベクトル検出手段と、
前記画素ブロックを、それより小さな複数のサブブロックに分割し、前記複数のサブブロックそれぞれの動きベクトルを検出するサブ動きベクトル検出手段と、
前記画素ブロック内の各サブブロックの動きベクトル検出結果である各サブ動きベクトルと、前記画素ブロックの動きベクトルとの関係に基づいて、前記画素ブロック単位で、前記画素ブロック内の動き境界の有無を判定する動き境界判定手段と、
前記動き境界有りと判定された場合に、前記画素ブロックを量子化するための量子化パラメータの値を、前記動き境界が無い場合に設定される値よりも小さく設定する量子化制御手段と
を備える符号化装置。 - 前記入力画像より時間的に前の前記参照画像までの前記サブ動きベクトルの連続性をカウントしたカウント値を記憶する記憶手段と、
前記カウント値に基づいて、前記サブブロックの前記サブ動きベクトルの連続性の有無を判定する連続性判定手段と
をさらに備え、
前記動き境界判定手段は、前記サブ動きベクトルの連続性があると判定された前記サブブロックの個数が第1の閾値以上存在する前記画素ブロックを、前記動き境界有りと判定する
請求項1に記載の符号化装置。 - 前記動き境界判定手段は、さらに、前記画素ブロックの動きベクトルと相関がある前記サブ動きベクトルの個数が第2の閾値以上、かつ、前記相関が無い前記サブ動きベクトルの個数が第3の閾値以上である前記入力画像の前記画素ブロックを、前記動き境界有りと判定する
請求項2に記載の符号化装置。 - 前記量子化制御手段は、前記量子化パラメータの値を小さく設定するためのオフセット量を、前記画素ブロックの前記動きベクトルと前記相関が無い前記サブ動きベクトルを有する領域の大きさに応じて、段階的に変更する
請求項1に記載の符号化装置。 - 動画像を構成する各入力画像を所定サイズの複数の画素ブロックに分割し、前記入力画像より時間的に1つ前に入力された画像を参照画像として、前記画素ブロックの動きベクトルを検出し、
前記画素ブロックを、それより小さな複数のサブブロックに分割し、前記複数のサブブロックそれぞれの動きベクトルを検出し、
前記画素ブロック内の各サブブロックの動きベクトル検出結果である各サブ動きベクトルと、前記画素ブロックの動きベクトルとの関係に基づいて、前記画素ブロック単位で、前記画素ブロック内の動き境界の有無を判定し、
前記動き境界有りと判定された場合に、前記画素ブロックを量子化するための量子化パラメータの値を、前記動き境界が無い場合に設定される値よりも小さく設定する
ステップを含む符号化方法。 - コンピュータを、
動画像を構成する各入力画像を所定サイズの複数の画素ブロックに分割し、前記入力画像より時間的に1つ前に入力された画像を参照画像として、前記画素ブロックの動きベクトルを検出する動きベクトル検出手段と、
前記画素ブロックを、それより小さな複数のサブブロックに分割し、前記複数のサブブロックそれぞれの動きベクトルを検出するサブ動きベクトル検出手段と、
前記画素ブロック内の各サブブロックの動きベクトル検出結果である各サブ動きベクトルと、前記画素ブロックの動きベクトルとの関係に基づいて、前記画素ブロック単位で、前記画素ブロック内の動き境界の有無を判定する動き境界判定手段と、
前記動き境界有りと判定された場合に、前記画素ブロックを量子化するための量子化パラメータの値を、前記動き境界が無い場合に設定される値よりも小さく設定する量子化制御手段
として機能させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010195696A JP2012054759A (ja) | 2010-09-01 | 2010-09-01 | 符号化装置、符号化方法、およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010195696A JP2012054759A (ja) | 2010-09-01 | 2010-09-01 | 符号化装置、符号化方法、およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012054759A true JP2012054759A (ja) | 2012-03-15 |
Family
ID=45907638
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010195696A Withdrawn JP2012054759A (ja) | 2010-09-01 | 2010-09-01 | 符号化装置、符号化方法、およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2012054759A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018012366A1 (ja) * | 2016-07-13 | 2018-01-18 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 復号装置、符号化装置、復号方法及び符号化方法 |
-
2010
- 2010-09-01 JP JP2010195696A patent/JP2012054759A/ja not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018012366A1 (ja) * | 2016-07-13 | 2018-01-18 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 復号装置、符号化装置、復号方法及び符号化方法 |
US11109031B2 (en) | 2016-07-13 | 2021-08-31 | Panasonic Intellectual Property Corporation Of America | Decoder, encoder, decoding method, and encoding method |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4529919B2 (ja) | 適応量子化装置及び適応量子化プログラム | |
US8155195B2 (en) | Switching distortion metrics during motion estimation | |
TWI399097B (zh) | 用於編碼視訊之系統及方法,以及電腦可讀取媒體 | |
US8494052B2 (en) | Dynamic selection of motion estimation search ranges and extended motion vector ranges | |
JP4724459B2 (ja) | 適応時間予測を用いた動きベクトル検出 | |
US9445094B2 (en) | Image coding apparatus, image coding method, and program, and image decoding apparatus, image decoding method, and program, relating to use of an image quality control parameter | |
JP4901772B2 (ja) | 動画像符号化方法及び動画像符号化装置 | |
KR100446083B1 (ko) | 움직임 추정 및 모드 결정 장치 및 방법 | |
JP4527677B2 (ja) | 動画像符号化方法、動画像符号化装置、動画像符号化プログラム | |
EP1993292A1 (en) | Dynamic image encoding method and device and program using the same | |
JP4875007B2 (ja) | 動画像符号化装置、動画像符号化方法、及び、動画像復号化装置 | |
WO2005062625A1 (ja) | 動画像を符号化する方法及び装置 | |
JP5489557B2 (ja) | 画像符号化装置及び画像符号化方法 | |
JP5618128B2 (ja) | 符号化装置、符号化方法、およびプログラム | |
US9438925B2 (en) | Video encoder with block merging and methods for use therewith | |
US9654775B2 (en) | Video encoder with weighted prediction and methods for use therewith | |
JP5748225B2 (ja) | 動画像符号化方法,動画像符号化装置および動画像符号化プログラム | |
JP5178616B2 (ja) | シーンチェンジ検出装置および映像記録装置 | |
US20150208082A1 (en) | Video encoder with reference picture prediction and methods for use therewith | |
JP5295089B2 (ja) | 画像符号化装置 | |
US8126277B2 (en) | Image processing method, image processing apparatus and image pickup apparatus using the same | |
JP2012054759A (ja) | 符号化装置、符号化方法、およびプログラム | |
JP6313614B2 (ja) | 動画像符号化装置及びその制御方法 | |
JP5701018B2 (ja) | 画像復号装置 | |
JP2005303362A (ja) | 画像符号化装置及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20131105 |