説明

量子化制御回路、量子化パラメータ変更方法、及び符号化回路

【課題】量子化ノイズを低減すること。
【解決手段】量子化制御回路13は、所定サイズのピクチャを分割したマクロブロック毎に、マクロブロックに含まれ隣接する画素値の差に応じて非線形検出値を算出し、その非線形検出値に応じてマクロブロックを量子化する量子化部12bの量子化ステップを制御する量子化パラメータを変更する

【発明の詳細な説明】
【技術分野】
【0001】
量子化制御回路、量子化パラメータ変更方法、及び符号化回路に関する。
【背景技術】
【0002】
従来、画像信号の符号化に、離散コサイン変換(DCT:Discrete Cosine Transform)が用いられている。このような装置は、入力画像信号に対してブロック毎にDCT演算を行い、演算結果の値を量子化し、量子化後の値を符号化する。
【0003】
上記のDCT演算を用いた画像圧縮方法では、色の変化が少ない背景に例えば黒い線等のようにシャープな輪郭が表現された部分では、視覚的に、蚊の大群のような細かいもやもやとしたノイズ、所謂モスキートノイズ(Mosquito Noise)が発生する。これは、DCT演算により、高周波成分の情報が減少することに起因する。
【0004】
したがって、表示された画像の品質低下を抑制するため、画像データを復号する際に、フィルタを用いてモスキートノイズを除去する方法が提案されている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2000−295615号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、復号時にノイズを除去する方法では、この方法を用いていない装置では表示画像の品質低下が発生する。このため、装置にかかわらず画像の品質低下を抑制することが要求されている。
【課題を解決するための手段】
【0007】
本発明の一観点によれば、所定サイズのブロックを分割したサブブロック毎に、サブブロックに含まれ隣接する画素値の差に応じて算出した非線形検出値に応じて前記サブブロックを量子化する際の量子化ステップを制御する量子化パラメータを変更する。
【発明の効果】
【0008】
本発明の一観点によれば、量子化ノイズが低減される。
【図面の簡単な説明】
【0009】
【図1】一実施形態の符号化装置のブロック図である。
【図2】マクロブロックの説明図である。
【図3】量子化制御回路のブロック図である。
【図4】(a)(b)は非線形検出処理の説明図である。
【図5】非線形検出処理の説明図である。
【図6】非線形検出処理の説明図である。
【図7】符号化処理のフローチャートである。
【図8】(a)(b)は非線形検出処理の説明図である。
【発明を実施するための形態】
【0010】
以下、一実施形態を図1〜図7に従って説明する。
図1に示すように、符号化装置は、画像メモリ11に格納された画像データを符号化する符号化回路12を含む。
【0011】
画像メモリ11は、複数枚の画面の画像データ(画素値)を記憶する容量のメモリである。画像メモリ11には、画像信号Siに応じた画像データを記憶する。画像メモリ11に記憶された画像データは、マクロブロック単位で読み出される。
【0012】
符号化回路12は、直交変換部12a、量子化部12b、符号化部12cを含む。直交変換部12aは、画像メモリ11から読み出されたマクロブロック単位の画像データを離散コサイン変換(DCT:Discrete Cosine Transform)し、変換後のデータ(DCT係数値)を出力する。量子化部12bは、直交変換部12aの出力データを量子化し、量子化後のデータ(量子化係数値)を出力する。符号化部12cは、量子化部12bの出力データを可変長符号化変換し、変換後のデータ(符号化データSo)を出力する。
【0013】
また、符号化装置は、量子化制御回路13を含む。量子化制御回路13には、画像信号Siが入力される。量子化制御回路13は、画像信号Siに基づく1画面(1ピクチャ)分の画像データに基づいて、量子化部12bにおける量子化ステップを制御する制御情報を生成する。そして、量子化制御回路13は、その制御情報を出力する。
【0014】
量子化部12bは、量子化制御回路13にて生成された制御情報に応じた量子化ステップでDCT係数値を量子化したデータを生成する。
詳しくは、量子化制御回路13は、1つのピクチャに含まれるエッジを検出し、その検出結果に応じて制御情報を生成する。エッジは、複数の画素から構成される画素列において、隣接する2つの画素の画素値の差が大きい部分、即ち画素列において、画素値が線形に変化しない非線形な部分である。このような画素値の非線形は、色の変化が少ない背景に例えば黒い線等のようにシャープな輪郭が表現された部分で発生する。そして、このような輪郭が表現された部分では、量子化ステップが粗いと量子化ノイズ(モスキートノイズ)が発生する。
【0015】
量子化制御回路13は、1つのピクチャに含まれるエッジを検出し、その検出結果に応じて、輪郭が含まれるピクチャに対する量子化ステップを細かくするように、制御情報を生成する。同じ画像データを用いた場合、量子化部12bにおいて、細かい量子化ステップにて量子化されたデータは、粗い量子化ステップにて量子化されたデータに比べて、高周波成分がより多く保持されている。従って、量子化ステップを細かくすることにより、画質の劣化を抑制することができる。
【0016】
本実施形態では、図2に示すように、16×16個の画素を1つのマクロブロックMBとする。個々の画素を示す場合、二次元配列された画素の配列方向のうち、1つの方向(図において左右方向)をX方向とし、X方向と異なる方向(図において上下方向)をY方向とし、各方向について左上から右下に向って0から15の番号を付し、それぞれの方向における番号を用いて画素ax,yとする。例えば、図面左上の画素は、画素a0,0とし、図面右上の画素は、画素a15,0とし、図面右下の画素は、画素a15,15とする。
【0017】
図3に示すように、量子化制御回路13は設定レジスタ21を有している。設定レジスタ21には、量子化制御回路13に含まれる部に供給される各種情報が記憶されている。これらの情報は、例えば図示しないCPUにより設定される。従って、設定レジスタ21は、符号化装置と外部装置(CPU)とを接続するインタフェースの機能を有している、又はインタフェースが設定レジスタを含む構成としてもよい。
【0018】
設定レジスタ21に記憶された情報は、しきい値情報、サイズ情報、パラメータセットを含む。
しきい値情報は、垂直用しきい値Vth、水平用しきい値Hth、斜め用しきい値VHth、マクロブロック判定用しきい値MBth、ピクチャ判定用しきい値Qthを含む。しきい値Vth,Hth,VHthは、マクロブロックの非線形性を判定するために用いられる。しきい値MBthは、非線形値に基づいてマクロブロックの短波長性を判定するために用いられる。しきい値Qthは、1つのピクチャに含まれるマクロブロックの短波長性に基づいて、当該ピクチャに対して量子化ステップの制御を行うか否かを判定するために用いられる。垂直用しきい値Vth、水平用しきい値Hth、斜め用しきい値VHthは、非線形値算出部22に供給される。マクロブロック判定用しきい値MBthは、MB短波長検出部30に供給される。ピクチャ判定用しきい値Qthは、細分化判定部32に供給される。
【0019】
サイズ情報は、画面サイズ設定値Sz、マクロブロック数Pを含む。画面サイズ設定値Szは、入力される画像信号Siに従って符号化回路12及び量子化制御回路13の供給される1つのピクチャに含まれる画素数、つまり画像信号Siを出力する撮像素子(図示略)の画素数に応じた設定値である。画面サイズ設定値Szは、画面終端検出部25に供給される。マクロブロック数Pは、1つのピクチャに含まれるマクロブロックの数である。マクロブロックMBは、16×16個の画素aを含む。従って、マクロブロック数Spは、画面サイズ設定値Szと、マクロブロックに含める画素aの数に基づいて設定される。マクロブロック数Pは、平均値算出部27、細分化判定部32に供給される。
【0020】
パラメータセットPsは、パラメータQpBdOffsety 、定数k、等を含む。パラメータQpBdOffsetyは、1画素当りのビット幅に対応するパラメータであり、QpBdOffsety=6×bit_depth_luma_minus8 により算出される。なお、bit_depth_luma_minus8は、1画素当りのビット幅から「8」を引いた値である。パラメータセットPsは、差分値算出部33に供給される。
【0021】
非線形値算出部22は、マクロブロック単位の画素値としきい値Vth,Hth,VHthに基づいて、マクロブロックに対する非線形検出値Gを算出する。非線形検出値Gは、マクロブロックに含まれる画素の値(以下、単に画素値という)が線形的に変化しないポイント、即ち非線形なポイントの数に対応する。つまり、非線形値算出部22は、非線形ポイントをカウントし、そのカウント値を当該マクロブロックMBに対応する非線形検出値Gとして出力する。
【0022】
詳述すると、非線形値算出部22は、マクロブロックMBに含まれる各画素について、その画素を含む画素列が非線形ポイントを含むか否かを判定する。画素列は、二次元配列された画素a(図2参照)について、所定の方向(縦方向(Y軸方向),横方向(X軸方向),斜め方向)に連続する3つの画素を含む。3つの画素の画素値を、画素の配列方向に従って、第1の画素値、第2の画素値、第3の画素値とする。
【0023】
非線形値算出部22は、画素列に含まれる3つの画素値のうち、中央の画素値(第2の画素値)と、その画素値に隣接する2つの画素値の内の一方(第1の画素値)に基づいて線形予測値を算出する。つまり、第1の画素値と第2の画素値に基づいて、第2の画素値から線形的に変化した場合の画素値(線形予測値)を算出する。詳しくは、第1の画素値と第2の画素値の差分を算出し、その差分値を第2の画素値に加算して線形予測値を算出する。第2の画素値に隣接する画素値のうち、第1の画素値と異なる方向に隣接する画素値(第3の画素値)は、この画素列の画素値が線形的に変化していれば、算出した線形予測値に基づく予測範囲内の値となる。この予測範囲はしきい値Vth,Hth,VHthにより設定される。従って、非線形値算出部22は、線形予測値と第3の画素値との差分の絶対値を算出し、この絶対値がしきい値より小さい場合には、第1〜第3の画素値が線形であると判定する。一方、非線形値算出部22は、絶対値がしきい値より大きい場合には、第1〜第3の画素値が非線形であると判定し、この画素列に非線形ポイントが含まれるとして、カウント値をカウントアップする。
【0024】
画素値の第1の例を図4(a)に示す。画素列に含まれ横方向に隣接する3つの画素A,B,Cの画素値を、「5」,「20」,「3」とする。非線形値算出部22は、画素A,Bの画素値に基づいて線形予測値を算出する。図4(b)は、各画素A〜Cの画素値と線形予測値Eが棒グラフとして示す。この時、線形予測値Eは「35」となる。非線形値算出部22は、この線形予測値Eと画素値Cとの差分を算出し、この差分の絶対値としきい値(例えば水平用しきい値Hth)とを比較する。例えば、水平用しきい値Hthを「5」とすると、この場合、差分値(絶対値)は「32」であり、しきい値Hth(=5)よりも大きい。従って、非線形値算出部22は、この画素列に非線形ポイントが含まれると判定し、カウント値をカウントアップする。
【0025】
画素値の第2の例を図5に示す。今、非線形値算出部22は、画素列を斜めに隣接する3つの画素a0,0,a1,1,a2,2とする。これらの画素値は図に示す通りであり、線形予測値は「0」となる。このとき、斜め用しきい値VHthを「5」とすると、線形予測値と画素a2,2の画素値の差分は、しきい値VHthより大きい。従って、非線形値算出部22は、この画素列に非線形ポイントが含まれると判定し、カウント値をカウントアップする。次に、画素列を画素a1,1,a2,2,a3,3とした場合、線形予測値は「197」となり、この線形予測値と画素a3,3の画素値の差分は、しきい値VHthより小さい。従って、非線形値算出部22は、この画素列に非線形ポイントが含まれないと判定し、カウント値を保持する。
【0026】
そして、非線形値算出部22は、上記の判定を、各マクロブロックについて、マクロブロックに含まれる全ての画素値ついて行う。即ち、非線形値算出部22は、次式に従って、マクロブロックに対する非線形検出値Gを算出する。
【0027】
【数1】

つまり、非線形値算出部22は、線形予測値がしきい値越える画素列の判定値を「1」とし、線形予測値がしきい値以下の画素列の判定値を「0」とする。そして、非線形値算出部22は、マクロブロックMBについて、画素列の判定値を累積加算し、その累積的な加算結果を非線形検出値Gとして出力する。
【0028】
非線形検出値Gは、隣接する画素値の差がしきい値以上である非線形ポイントの数に対応し、マクロブロックにおける画素値変化の度合いを示す。つまり、大きな非線形検出値Gのマクロブロックは、小さな非線形検出値Gのマクロブロックに比べ、多くのエッジを含む、つまり直交変換したデータに高周波成分が多いことを示す。従って、非線形検出値Gを算出することは、マクロブロック単位で高周波度(画素値変化の激しさ)、つまり短波長度を算出していることと等しい。
【0029】
尚、上記の式(1)において、右辺第1項は、図2に示すマクロブロックに含まれる画素aについて、縦方向に隣接する3つの画素を含む画素列に対する判定及びカウントを示す。同様に、右辺第2項は、横方向に隣接する3つの画素を含む画素列に対する判定及びカウントを示す。また、右辺第3項は、図2に示すマクロブロックに含まれる画素aについて、左上から右下に向う斜め方向に隣接する3つの画素を含む画素列に対する判定及びカウントを示し、右辺第4項は、右上から左下に向う斜め方向に隣接する3つの画素を含む画素列に対する判定及びカウントを示す。
【0030】
このように、非線形値算出部22は、4つの方向に隣接する3つの画素値により非線形検出値Gを算出することにより、マクロブロックMBに含まれる任意の方向に沿って延びるエッジを検出することができる。
【0031】
画面先頭検出部23は、画像信号Siに基づいて、各ピクチャにおいて最初の画素データが入力されるタイミング、即ち画素値の入力開始タイミングを検出し、先頭検出信号Ssとクリア信号Sclを出力する。入力開始タイミングは、信号読み出しパルス、垂直同期信号、転送開始パルス信号、等により検出される。先頭検出信号Ssは書き込み制御部24に供給され、クリア信号Scは累積加算部26に供給される。
【0032】
書き込み制御部24は、画面先頭検出部23から出力される先頭検出信号Ssに応答して、非線形値算出部22から出力される非線形検出値Gを、その非線形検出値Gを算出したマクロブロックMBに対応するメモリ28の領域(メモリアドレス)に書き込む制御を行う。例えば、書き込み制御部24は、非線形値算出部22から非線形検出値Gが出力される毎に、マクロブロックに対応するアドレス信号を含む書き込み制御信号WCをメモリ28に供給する。メモリ28は、その書き込み制御信号WCに応答し、制御信号WCに含まれるアドレス信号により指定されるメモリアドレスに、非線形値算出部22から出力される非線形検出値Gを記憶する。
【0033】
画面終端検出部25は、画像信号Siに基づいて、各ピクチャにおいて最後の画素データが入力されるタイミング、即ち画素値の入力終了タイミングを検出し、終端検出信号Seを出力する。入力終了タイミングは、画素値のカウント結果、水平同期信号のカウント結果、転送終了パルス信号、等により検出される。終端検出信号Seは、読み出し制御部29、ピクチャ平均値算出部27、細分化判定部32に供給される。
【0034】
累積加算部26は、非線形値算出部22から出力される非線形検出値Gを累積加算し、その加算結果の値を出力する。つまり、累積加算部26は、値を記憶するレジスタを有し、そのレジスタに記憶した記憶値に非線形値算出部22から出力される非線形検出値Gを加算し、記憶値(=累積値)を出力する。また、累積加算部26は、画面先頭検出部23から出力されるクリア信号Scに応答して記憶値をクリア(=0)する。クリア信号Scは、ピクチャの先頭に応じて画面先頭検出部23から出力される。従って、累積加算値は、ピクチャの先頭でクリアされる。従って、累積加算部26は、非線形値算出部22から出力される非線形検出値Gを、ピクチャ単位で累積加算する。
【0035】
平均値算出部27は、累積加算部26から出力される累積値SGを1つのピクチャに含まれるマクロブロックの数(総マクロブロック数)Pで除算し、その演算結果を出力する。累積値は、1つのピクチャに含まれるマクロブロックに対応する非線形検出値Gの合計値であり、その合計値を総マクロブロック数で除算した結果は、1つのピクチャに含まれる全てのマクロブロックにおける非線形検出値Gの平均値(EdgeAverage )である。この平均値EAは、差分値算出部33に供給される。
【0036】
読み出し制御部29は、終端検出信号Seに応答して、メモリ28に記憶された非線形検出値Gを読み出すための読み出し制御信号RCを生成する。終端検出信号Seは、1つのピクチャの最終画素のデータに対応して出力される。読み出し制御部29は、例えば要望か回路12において処理されるマクロブロックMBに対応する非線形検出値Gを読み出すようにアドレス信号を含む読み出し制御信号RCを生成する。従って、メモリ28には1つのピクチャに対応する数の非線形検出値Gが記憶され、それらの非線形検出値Gが読み出し制御部29によって順次読み出される。メモリ28から出力される非線形検出値RGは、差分値算出部33に供給される。尚、各マクロブロックMBの非線形検出値RGを区別する場合に、マクロブロックMBの番号mbを付した符号Gmbを用いるものとする。
【0037】
短波長検出部30は、非線形値算出部22から出力される非線形検出値Gmbと、設定レジスタ21から供給されるマクロブロック判定用しきい値MBthとを比較し、その比較結果に応じた検出値MMを出力する。短波長検出部30は、非線形検出値Gmbがしきい値MBthより大きい場合に第1の所定値(例えば「1」)の検出値MMを出力し、非線形検出値Gmbがしきい値MBth以下の場合に第2の所定値(例えば「0」)の検出値MMを出力する。
【0038】
マクロブロック判定用しきい値MBthは、マクロブロックにおける非線形ポイントのカウント値に対するしきい値であり、マクロブロックに対応する画像に含まれる周波数成分について、量子化ステップの変更が必要か否かを判定するための設定値である。短波長成分は、高周波成分であり、非線形ポイントによって生じる。従って、しきい値MBthは、多くの短波長成分を含むマクロブロックについて量子化ステップの変更が必要であると判定するように設定される。従って、検出値MMが第1の所定値「1」の場合、当該検出値MMに対応するマクロブロックMBについて、量子化ステップの変更が必要であることを示し、検出値MMが第2の所定値「0」の場合に量子化ステップの変更が必要ないことを示す。
【0039】
累積加算部31は、短波長検出部30から出力される検出値MMを累積加算し、その加算結果の累積値Hを出力する。つまり、累積加算部31は、値を記憶するレジスタを有し、そのレジスタに記憶した記憶値に、短波長検出部30から出力される検出値MMを加算し、その加算結果をレジスタに記憶する。そして、累積加算部31は、レジスタに記憶した累積値Hを出力する。この累積値Hは、細分化判定部32に供給される。
【0040】
尚、累積加算部31は、画面先頭検出部23から出力されるクリア信号Scに応答して記憶値をクリア(=0)する。従って、累積加算部31は、短波長検出部30から出力される検出値MMを、ピクチャ単位で累積加算する。
【0041】
即ち、短波長検出部30と累積加算部31は、ピクチャ単位、つまり1つのピクチャに含まれるマクロブロックMBのうち、量子化ステップの変更が必要なマクロブロックMBの数を検出する。つまり、短波長検出部30と累積加算部31は、次式に対応する処理を実行し、累積値Hを出力する。
【0042】
【数2】

細分化判定部32は、累積加算部31から供給される累積値Hと、設定レジスタ21から供給されるピクチャ判定用しきい値Qth,総マクロブロック数Pに基づいて、量子化ステップの変更に対する判定フラグFIを設定する。この判定フラグFIは、差分値算出部33に供給される。
【0043】
ピクチャ判定用しきい値Qthは、1つのピクチャに対して量子化ステップの変更を行うか否かを判定するためのしきい値であり、1つのピクチャに含まれる総マクロブロック数Pに対する量子化ステップが必要と判定されたマクロブロック数の比率として設定されている。これにより、ピクチャサイズの異なる画像についても、同じしきい値Qthを用いることができる。
【0044】
即ち、細分化判定部32は、累積加算部31から供給される累積値Hを設定レジスタ21から供給される総マクロブロック数Pで除算し、その演算結果と設定レジスタ21から供給されるしきい値Qthを比較する。そして、細分化判定部32は、演算結果がしきい値Qthより大きい場合に、当該ピクチャに対して量子化ステップの変更が必要と判定し、その旨を示す値(例えば、「1」、)の判定フラグFIを出力する。一方、細分化判定部32は、演算結果がしきい値Qth以下の場合に、当該ピクチャに対して量子化ステップの変更が必要ないと判定し、その旨を示す値(例えば、「0」、)の判定フラグFIを出力する。
【0045】
即ち、図6に示すように、1つのピクチャIpは、量子化ステップの変更を必要とする第1のマクロブロックMBaと、量子化ステップの変更を必要とする第2のマクロブロックMBbを含む。
【0046】
ピクチャIpに対する第2のマクロブロックMBbの比率が小さい場合、その第2のマクロブロックMBbに発生する量子化ノイズは、ピクチャIp全体に対して目立ち難い。つまり、視覚的に、表示された画像の品質低下は少ない。一方、ピクチャIpに対する第2のマクロブロックMBbの比率が大きい場合、その第2のマクロブロックMBbに発生する量子化ノイズは、ピクチャIp全体に対して目立ち易い。つまり、視覚的に、表示された画像の品質が低下する。つまり、細分化判定部32は、量子化ノイズが目立ち易いか否かにより、判定フラグFIを設定するということもできる。この場合、ピクチャIpに対する量子化ノイズの目立ち易いマクロブロックMBの比率によりしきい値Qthが設定されるとすることもできる。
【0047】
差分値算出部33は、細分化判定部32から供給されるフラグFIに基づいて、量子化ステップの変更が必要な場合に、平均値算出部27から供給される平均値EAと、メモリ28から読み出された非線形検出値Gと、設定レジスタ21から供給されるパラメータセットPsに基づいて、次式により、差分値mb_qp_delta (以下、差分値MDとする)を算出する。一方、差分値算出部33は、フラグFIに基づいて、量子化ステップの変更が必要ない場合に、演算処理を行うことなく値が「0」の差分値MDを出力する。
【0048】
【数3】

上記式において、「Clip3」は、値を設定された範囲内の値に制限する処理を示す。例えば、「R=Clpi3(x、y、z)」は、xが範囲の下限値を、yが範囲の上限値を、zが対象の値(演算結果)を、Rが処理結果を示す。値zが下限値以下の場合には処理結果R=xとし、値zが上限値y以上の場合には処理結果R=yとし、値zが下限値xと上限値yとの間の値の場合には処理結果R=zとする。
【0049】
差分値MDは、符号化回路12の量子化部12b(図1参照)において用いられる量子化パラメータQPに対応する値である。さらに詳しくは、差分値MDは、量子化部12bにおいて処理されるマクロブロックの量子化パラメータQPと、その直前に処理されたマクロブロックの量子化パラメータQPの差分値である。量子化パラメータQP(Quantization Parameter)は量子化ステップと対応する。例えば、H.264/AVC符号化規格では、量子化パラメータQPと量子化ステップの対数が比例する。従って、差分値MDの値を変更することは、量子化パラメータQPを変更すること、即ち量子化ステップを変更することである。そして、差分値MDが「0」の場合、直前のマクロブロックに対する量子化ステップが維持され、差分値MDが「0」以外の場合、量子化ステップが変更される。
【0050】
上記したように、差分値MDは、1つのピクチャにおける非線形検出値Gの平均値EAと、各マクロブロックの非線形検出値Gに基づいて算出される。従って、量子化制御回路13は、マクロブロックの非線形検出値Gに応じて、そのマクロブロックに対する量子化ステップを制御する。また、量子化制御回路13は、1つのピクチャに含まれる非線形なマクロブロックの数に応じて、量子化ステップの制御/非制御を判定する。
【0051】
各マクロブロックの非線形検出値Gを平均値EAから減算することは、非線形検出値Gと平均値EAから算出する差分値MDを、上記設定範囲内において、非線形検出値Gと反比例するように生成することである。これにより、非線形検出値Gが大きいほど、差分値MDが小さくなり、量子化ステップが細かくなる。即ち、非線形ポイントが多いマクロブロックMB、つまり短波長性(高周波性)の高いマクロブロックMBほど量子化ステップを細かくする。
【0052】
差分値MDは、非線形検出値Gが平均値EAと等しいときにゼロ(0)になり、量子化部12bにおいて量子化ステップは変更されない。そして、非線形検出値Gが平均値EAより小さいとき、差分値MDは「0」より大きな値となり、量子化部12bにおける量子化ステップは、平均値EAと等しい非線形検出値Gによる量子化ステップよりも粗くなる。
【0053】
量子化ステップを細かくすることは、可変長符号化変換により生成された符号データのデータ量を多くし、量子化ステップを粗くすることは、可変長符号化変換により生成された符号データのデータ量を少なくする。従って、量子化ステップを粗くすることにより、可変長符号化変換により生成された符号データの量の増加を抑制することができる。
【0054】
次に、上記のように構成された符号化装置の動作を説明する。
図7に示すステップ51〜67は、符号化装置が実行する処理を示す。そして、ステップ51〜59は図1に示す量子化制御回路13が実行する処理を示し、ステップ60〜67は図1に示す符号化回路12が実行する処理を示す。従って、各ステップに対応する回路の動作として説明する。
【0055】
ステップ51において、量子化制御回路13は、入力画像の受信を開始を検出すると、非線形検出値Gに対する累積値SGと、短波長検出値MMに対する累積値Hをクリアする。
【0056】
ステップ52において、量子化制御回路13は、入力画像のマクロブロックMB毎に、非線形ポイントをカウントし、そのカウント値を非線形検出値Gとする。そして、量子化制御回路13は、非線形検出値Gを累積加算し、加算結果を累積値SGとする。また、量子化制御回路13は、非線形検出値Gとしきい値MBthとを比較してマクロブロックMBの短波長性を検出し、その検出値MMを累積加算し、加算結果を累積値Hとする。
【0057】
そして、ステップ53において、量子化制御回路13は、算出した非線形検出値Gを、メモリ28のマクロブロックMBに対応する領域に格納する。
ステップ54において、量子化制御回路13は、1ピクチャ分の入力画像の受信を終了したか否かを判断し、受信が終了していない場合にステップ52に移行し、受信が終了した場合に次のステップに移行する。
【0058】
ステップ55において、量子化制御回路13は、1つのピクチャに対する累積値Hと総マクロブロック数Pに基づいて、1つのピクチャにおいて短波長と判定されたマクロブロックの比率を算出し、その比率値としきい値Qthとを比較して、その比較結果に応じて判定フラグFIを設定する。つまり、量子化制御回路13は、1つのピクチャに対する量子化ステップ変更の要否を判定し、判定フラグFIを設定する。
【0059】
ステップ56において、量子化制御回路13は、判定フラグFIに基づいて、その判定フラグが眞(=true:1)の場合に次のステップ57に移行し、判定フラグFIが偽(=false:0)の場合にステップ60に移行する。即ち、量子化制御回路13は、1つのピクチャに対して量子化ステップの変更が必要と判定した場合にステップ57〜59の処理を実行し、量子化ステップの変更が必要ないと判定した場合にステップ57〜59の処理をスキップする。
【0060】
ステップ57において、量子化制御回路13は、累積値SGに基づいて、1つのピクチャにおける非線形検出値Gの平均値EA(EdgeAverage )を算出する。
ステップ58において、量子化制御回路13は、メモリ28から非線形検出値Gを読み出す。そして、ステップ59において、量子化制御回路13は、読み出した非線形検出値Gに基づいて差分値MDを算出する。
【0061】
ステップ60において、符号化回路12は、マクロブロック単位の画像データを直交変換(離散コサイン変換:DCT)し、その変換後のデータを差分値MDに基づく量子化ステップにて量子化する。なお、図7に示すステップの実行開始時において、差分値MDがクリアされている。従って、量子化制御回路13がステップ58〜59をスキップした場合、符号化回路12には、クリアされた差分値MD(=0)が入力される。従って、符号化回路12は、そのクリアされた差分値MDに基づいて、先に処理したのマクロブロックMBに対する量子化ステップにて、今のマクロブロックMBの画像データを量子化する。
【0062】
ステップ61において、符号化回路12は、ステップ60における変換処理により生成された画像データを、可変長符号化変換し、変換後のデータ(符号化データSo)を出力する。
【0063】
ステップ62において、符号化回路12は、ステップ60における変換処理により生成された画像データ(量子化係数)を、逆量子化して変換係数を再生する。更に、符号化回路12は、再生された変換係数を逆直交変換(逆離散コサイン変換:逆DCT)する。つまり、符号化回路12は、量子化により生成した量子化係数を復号する。
【0064】
ステップ63において、符号化回路12は、デブロッキングフィルタによる処理を行い、復号後の画像データ中のブロック歪みを除去する。
ステップ64において、符号化回路12は、画面内予測処理を行い、図示しないフレームメモリに格納されている参照フレームを参照してブロック単位の予測画像を生成する。
【0065】
ステップ65において、符号化回路12は、動き補償処理を行い、図示しないフレームメモリに格納されている参照フレームを参照して動きベクトルを生成する。
ステップ66において、符号化回路12は、ステップ64,65の処理結果に基づき、ローカルデコード画(予測フレーム)を生成する。
【0066】
ステップ67において、符号化回路12は、ローカルデコード画と入力画像との差分を取得する。符号化回路12は、ステップ60における処理について、ステップ67において取得した差分を含めて直交変換及び量子化を行う。
【0067】
以上記述したように、本実施形態によれば、以下の効果を奏する。
(1)量子化制御回路13は、所定サイズのピクチャIpを分割したマクロブロックMB毎に、マクロブロックMBに含まれ隣接する画素値の差に応じて非線形検出値Gを算出し、その非線形検出値Gに応じてマクロブロックMBを量子化する際の量子化ステップを制御する量子化パラメータを変更するようにした。
【0068】
非線形検出値Gは、マクロブロックに含まれる画素の値(以下、単に画素値という)が線形的に変化しないポイント、即ち非線形なポイントの数に対応する。大きな非線形検出値Gのマクロブロックは、小さな非線形検出値Gのマクロブロックに比べ、多くのエッジを含む、つまり直交変換したデータに高周波成分が多いことを示す。従って、非線形ポイントが多いマクロブロックMB、つまり短波長性(高周波性)の高いマクロブロックMBほど量子化ステップを細かくすることで、量子化ノイズを低減することができる。
【0069】
(2)量子化制御回路13の非線形値算出部22は、マクロブロックMB毎に、マクロブロックMB内の画素列における画素値の差に応じて非線形検出値Gをカウントアップ算出する。差分値算出部33は、非線形検出値に基づいて量子化ステップを制御する差分値を算出する。従って、非線形検出値Gに応じた量子化パラメータ(差分値)を容易に算出することができる。
【0070】
(3)量子化制御回路13の累積加算部26は、非線形検出値を累積加算する。平均値算出部27は、累積値SGと、ピクチャIpの画面サイズ設定値Szに基づいて、当該ピクチャIpにおける非線形検出値Gの平均値EAを算出する。そして、差分値算出部33は、平均値EAと非線形検出値RGとに基づいて量子化ステップを制御するための差分値MDを算出する。従って、非線形検出値Gが大きいほど、差分値MDが小さくなり、量子化ステップが細かくすることができる。
【0071】
(4)量子化制御回路13は、非線形検出値に応じて短波長のピクチャIpを検出し、その検出結果に基づいて、ピクチャIpに対して量子化ステップを変更するか否かを示すための判定フラグを設定し、判定フラグに応じて、量子化ステップの変更が必要と判定したピクチャに対して算出した差分値を出力し、量子化ステップの変更が不要と判定したピクチャに対して所定値の差分値を出力するようにした。従って、量子化ステップの制御/非制御を容易に判定することができる。
【0072】
(5)短波長検出部30は、非線形検出値Gとしきい値MBthとを比較して短波長のマクロブロックMBを検出した旨の検出値MMを生成する。累積加算部31は検出値MMを累積加算する。細分化判定部32は、累積値HとピクチャIpに含まれるマクロブロックMBの数Pに基づいて、ピクチャIpに含まれる短波長と判定したマクロブロックMBの比率を算出し、その比率としきい値Qthとを比較して判定フラグFIを設定する。従って、各ピクチャIpに対する量子化ステップの制御/非制御を容易に判定することができる。
【0073】
(6)非線形値算出部22は、3つの画素値のうちの2つから線形予測値を算出し、線形予測値の算出に用いなかった画素値と線形予測値との差を算出し、その差分値としきい値とを比較して非線形検出値Gを算出するようにした。その結果、マクロブロックMBに含まれるエッジなどの非線形なポイントを検出し、マクロブロックMBにおける非線形ポイントの数を容易に算出することができる。
【0074】
尚、上記実施形態は、以下の態様で実施してもよい。
・非線形値算出部22において、3つの画素値を含む画素列において、その画素列に含まれる両端の第1の画素値と第3の画素値から線形予測値を算出し、その線形算出値と画素列の中央の第2の画素値との差分値を算出し、その差分値としきい値とを比較して線形ポイントを判定する。
【0075】
・非線形値算出部22における画素列に含まれる画素の数を適宜変更する。例えば、2つの画素を含む画素列について、非線形ポイントの判定を行う。非線形値算出部22は、2つの画素値の差分値の絶対値を算出し、その絶対値と画素列の方向に対応するしきい値とを比較し、絶対値がしきい値より大きい場合に、当該画素列が非線形ポイントを含むと判定する。従って、非線形値算出部22は、以下の式により、マクロブロックMBに対する非線形検出値Gを算出する。
【0076】
【数4】

上記の構成により、マクロブロック単位での高周波度(画素値変化の激しさ)を算出することができる。
【0077】
例えば、図8(a)に示すように、3つの画素A,B,Cの画素値を、「5」,「6」,「30」とする。図8(b)は、各画素A〜Cの画素値を棒グラフとして示す。
非線形値算出部22は、画素A,Bの画素値の差分値D(=1)を算出し、その差分値Dとしきい値(例えば水平用しきい値Hth)と比較する。例えば、水平用しきい値Hthを「5」とすると、差分値Dはしきい値Hthより小さいため、非線形値算出部22は、この画素A,B間は、非線形ポイントではない、と判定する。
【0078】
次に、非線形値算出部22は、画素B,Cの画素値の差分値D(=26)を算出し、その差分値Dとしきい値(例えば水平用しきい値Hth)と比較する。この場合、差分値Dはしきい値Hthより大きいため、非線形値算出部22は、この画素B,C間は、非線形ポイントである、と判定する。このように、非線形ポイントをカウントすることにより、マクロブロックMB単位での高周波度(画素値変化の激しさ)を検出することができる。
【0079】
・マクロブロックのサイズを16×16画素以外の画素数、例えば、8×8画素,4×4画素などのように、サイズを適宜変更する。また、例えば8×16画素のように、縦の画素数と横の画素数を異なる値に設定したマクロブロック毎に非線形検出値Gを算出する。
【0080】
・量子化制御回路13が画像メモリ11に記憶された画像データをマクロブロック単位で読み出して制御情報を生成する、即ち画像メモリ11に記憶されたピクチャについて量子化ステップの細分化を判定する。このように、画像メモリ11に記憶された画像データを読み出す場合、画面先頭検出部23は、画像データの読み出し開始時にクリア信号Scと先頭検出信号Ssを出力し、画面終端検出部25は、読み出し終了時に終端検出信号Seを出力するように変更されればよい。また、読み出し開始を示す信号をクリア信号Scと先頭検出信号Ssとして用い、読み出し終了を示す信号を終端検出信号Seとして用いることで、両検出部23,25を省略してもよい。
【0081】
・図3に示す短波長検出部30、累積加算部31、細分化判定部32を省略し、全てのピクチャについて、差分値MDを算出する。
・図7に示すステップ55,56を省略し、全てのピクチャについて、差分値MDを算出する。
【0082】
・画像のコード変換(例えば、規格MPEG2から規格H.264へ)を行う画像処理装置の符号化回路に適用する。
・設定レジスタ21に記憶した各種パラメータのうちの少なくとも1つを固定値としてそのパラメータを用いる処理部に設定する。
【0083】
・符号化回路12と量子化制御回路13とを1つの回路として実施する。また、符号化回路12と量子化制御回路13のうちの少なくとも一方を、図7に示すステップを含むプログラムを実行するプロセッサ(例えばCPU)とすること。
【0084】
上記各実施形態に関し、以下の付記を開示する。
(付記1)
所定サイズのブロックを分割したサブブロック毎に、サブブロックに含まれ隣接する画素値の差に応じて算出した非線形検出値に応じて前記サブブロックを量子化する際の量子化ステップを制御する量子化パラメータを変更する、ことを特徴とする量子化制御回路。
(付記2)
前記サブブロック毎に、前記サブブロック内の画素列における画素値の差に応じて非線形検出値をカウントアップ算出する非線形値算出部と、
前記非線形検出値に基づいて前記量子化ステップを制御する量子化パラメータを算出するパラメータ算出部と、
を有することを特徴とする付記1に記載の量子化制御回路。
(付記3)
前記非線形検出値を累積加算する第1の累積加算部と、
前記第1の累積加算部の累積値と、前記ブロックのサイズに基づいて、当該ブロックにおける非線形検出値の平均値を算出する平均値算出部と、
を含み、
前記パラメータ算出部は、前記平均値と前記非線形検出値とに基づいて前記量子化ステップを制御する量子化パラメータを算出する、
ことを特徴とする付記2に記載の量子化制御回路。
(付記4)
前記非線形検出値に応じて短波長のブロックを検出し、その検出結果に基づいて、前記ブロックに対して量子化ステップを変更するか否かを示すための判定フラグを設定する判定部を有し、
前記判定部の判定結果に応じて、算出値又は所定値を量子化パラメータとして出力する、
ことを特徴とする付記1〜3のうちの何れか一項に記載の量子化制御回路。
(付記5)
前記判定部は、
前記非線形検出値としきい値とを比較して短波長のサブブロックを検出した旨の検出値を生成する短波長検出部と、
前記検出値を累積加算する第2の累積加算部と、
前記第2の累積加算部の累積値とブロックに含まれるサブブロックの数に基づいて、ブロックに含まれる短波長と判定したサブブロックの比率を算出し、その比率としきい値とを比較して前記判定フラグを設定する細分化判定部と、
を含むことを特徴とする付記4に記載の量子化制御回路。
(付記6)
前記非線形値算出部は、3つの画素値のうちの2つから線形予測値を算出し、前記線形予測値の算出に用いなかった画素値と前記線形予測値との差を算出し、その差分値としきい値とを比較し、比較結果に応じて非線形検出値をカウントアップする、ことを特徴とする付記2に記載の量子化制御回路。
(付記7)
前記非線形値算出部は、隣接する2つの画素値の差を算出し、その差分値としきい値とを比較し、比較結果に応じて非線形検出値をカウントアップする、ことを特徴とする付記2に記載の量子化制御回路。
(付記8)
前記ブロックの画像データの先頭を検出して先頭検出信号を生成する先頭検出部と、
前記ブロックの画像の終端を検出して終端検出信号を生成する終端検出部と、
前記先頭検出信号に応答して前記非線形検出値をメモリに書き込む制御を行う書き込み制御部と、
前記終端検出信号に応答して前記メモリから非線形検出値を読み出す制御を行う読み出し制御部と、
を有し、
前記パラメータ算出部は、前記メモリから読み出された非線形検出値に基づき前記量子化パラメータを算出する、
ことを特徴とする付記2又は3に記載の量子化制御回路。
(付記9)
所定サイズのブロックを分割したサブブロック毎に、サブブロックに含まれ隣接する画素値の差に応じて算出した非線形検出値に応じて前記サブブロックを量子化する際の量子化ステップを制御する量子化パラメータを変更する、ことを特徴とする量子化パラメータ変更方法。
(付記10)
所定サイズのブロックを分割したサブブロック毎に、サブブロックに含まれ隣接する画素値の差に応じて算出した非線形検出値に応じて前記サブブロックを量子化する際の量子化ステップを制御する量子化パラメータを変更する量子化制御回路と、
前記量子化パラメータに応じて量子化ステップを設定し、該量子化ステップにて画像データを量子化し、量子化後のデータを符号データに変換する符号化回路と、
を有する符号化回路。
【符号の説明】
【0085】
12 符号化回路
12b 量子化部
13 量子化制御回路
22 非線形値算出部
33 差分値算出部(量子化パラメータ算出部)
G,Gmb 非線形検出値
H 累積値
MD 差分値(量子化パラメータ:mb_qp_delta)
Ip ピクチャ(ブロック)
MB マクロブロック(サブブロック)
x,y 画素,画素値

【特許請求の範囲】
【請求項1】
所定サイズのブロックを分割したサブブロック毎に、サブブロックに含まれ隣接する画素値の差に応じて算出した非線形検出値に応じて前記サブブロックを量子化する際の量子化ステップを制御する量子化パラメータを変更する、ことを特徴とする量子化制御回路。
【請求項2】
前記サブブロック毎に、前記サブブロック内の画素列における画素値の差に応じて非線形検出値をカウントアップ算出する非線形値算出部と、
前記非線形検出値に基づいて前記量子化ステップを制御する量子化パラメータを算出するパラメータ算出部と、
を有することを特徴とする請求項1に記載の量子化制御回路。
【請求項3】
前記非線形検出値を累積加算する第1の累積加算部と、
前記第1の累積加算部の累積値と、前記ブロックのサイズに基づいて、当該ブロックにおける非線形検出値の平均値を算出する平均値算出部と、
を含み、
前記パラメータ算出部は、前記平均値と前記非線形検出値とに基づいて前記量子化ステップを制御する量子化パラメータを算出する、
ことを特徴とする請求項2に記載の量子化制御回路。
【請求項4】
前記非線形検出値に応じて短波長のブロックを検出し、その検出結果に基づいて、前記ブロックに対して量子化ステップを変更するか否かを示すための判定フラグを設定する判定部を有し、
前記判定部の判定結果に応じて、算出値又は所定値を量子化パラメータとして出力する、
ことを特徴とする請求項1〜3のうちの何れか一項に記載の量子化制御回路。
【請求項5】
所定サイズのブロックを分割したサブブロック毎に、サブブロックに含まれ隣接する画素値の差に応じて算出した非線形検出値に応じて前記サブブロックを量子化する際の量子化ステップを制御する量子化パラメータを変更する、ことを特徴とする量子化パラメータ変更方法。
【請求項6】
所定サイズのブロックを分割したサブブロック毎に、サブブロックに含まれ隣接する画素値の差に応じて算出した非線形検出値に応じて前記サブブロックを量子化する際の量子化ステップを制御する量子化パラメータを変更する量子化制御回路と、
前記量子化パラメータに応じて量子化ステップを設定し、該量子化ステップにて画像データを量子化し、量子化後のデータを符号データに変換する符号化回路と、
を有する符号化回路。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2011−135269(P2011−135269A)
【公開日】平成23年7月7日(2011.7.7)
【国際特許分類】
【出願番号】特願2009−292234(P2009−292234)
【出願日】平成21年12月24日(2009.12.24)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】