(57)【特許請求の範囲】
【請求項１】
入力画像データを複数枚蓄える画像データ蓄積手段と、
上記画像データ蓄積手段に蓄積された入力画像データを複数のブロックに分割し、それぞれのブロック毎にサーチ側とリファレンス側のピクセル毎に求めた誤差値を１画面分合計した第１の合計値と、時間的に過去の１画面分の誤差値を合計した第２の合計値との比が所定の閾値を越えた場合をシーンチェンジ検出したと判定するシーンチェンジ検出手段と、
上記シーンチェンジ検出手段によりシーンチェンジ検出したと判定された場合、画像データの圧縮方法としてフレーム内符号化を選択する圧縮方法選択手段と、
上記圧縮方法選択手段により選択された圧縮方法に従って上記入力画像データに量子化を含む所定の圧縮符号化処理を施す圧縮符号化処理手段と、
上記シーンチェンジ検出手段によるシーンチェンジ検出出力に応じて上記圧縮符号化処理手段内での上記量子化の際の量子化ステップを制御する量子化ステップ制御手段とを有し、
上記量子化ステップ制御手段は、上記量子化されたデータを蓄積するバッファが、上記シーンチェンジ検出されたフレームが量子化されて蓄積されるときに上記バッファの残量を減らしておけるように上記量子化ステップを大きくする制御を行う
ことを特徴とする画像符号化装置。
【請求項２】
上記シーンチェンジ検出手段は、上記第１の合計値が所定の閾値以下であるときには上記第２の合計値を保存しておくことを特徴とする請求項１記載の画像符号化装置。
【請求項３】
上記シーンチェンジ検出手段は、シーンチェンジを検出したときに上記第２の合計値を保存しておくことを特徴とする請求項１記載の画像符号化装置。
【請求項４】
入力画像データを複数枚蓄える画像データ蓄積手段と、
上記画像データ蓄積手段に蓄積された入力画像データを複数のブロックに分割し、それぞれのブロック毎にサーチ側とリファレンス側のピクセル毎に求めた差分値の第１の絶対値和と、時間的に過去の差分値の第２の絶対値和と比が所定の第１の閾値を越えたブロックをシーンチェンジであると判定する第１のシーンチェンジ検出手段と、
上記第１のシーンチェンジ検出手段でシーンチェンジと判定したブロックの１画面に対する割合が所定の第２の閾値を越えた場合、当該１画面はシーンチェンジであると判定する第２のシーンチェンジ検出手段と、
上記第２のシーンチェンジ検出手段によりシーンチェンジであると判定された場合、１画面の画像データの圧縮方法としてフレーム内符号化を選択する圧縮方法選択手段と、
上記圧縮方法選択手段により選択された圧縮方法に従って上記入力画像データに量子化を含む所定の圧縮符号化処理を施す圧縮符号化処理手段と、
上記第１、第２のシーンチェンジ検出手段によるそれぞれのシーンチェンジ検出出力に応じて上記圧縮符号化処理手段内での上記量子化の際の量子化ステップを制御する量子化ステップ制御手段とを有し、
上記量子化ステップ制御手段は、上記量子化されたデータを蓄積するバッファが、上記シーンチェンジ検出されたフレームが量子化されて蓄積されるときに上記バッファの残量を減らしておけるように上記量子化ステップを大きくする制御を行う
ことを特徴とする画像符号化装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、例えば画像を圧縮符号化する場合に用いて好適な画像符号化装置に関する。
【０００２】
【従来の技術】
従来の例えば画像を圧縮符号化する場合に用いて好適な画像符号化装置の構成例を図９に示す。
この図９の画像符号化装置において、入力端子１には、図１０に示すように、
輝度成分(Y)     352(H)×240(V)×30フレーム
クロマ成分(Cb)  174(H)×120(V)×30フレーム
クロマ成分(Cr)  174(H)×120(V)×30フレーム
のピクセル数にディジタル化された画像データが供給される。
【０００３】
上記入力端子１に供給された入力画像データは、当該入力画像データを一時的に蓄えて然るべき順番に入れ替えるためのフレームメモリ１０を介して、動き検出器２０とブロック分割器１１に送られる。
当該ブロック分割器１１は、フレームメモリ１０から供給されたそれぞれのフレームを、図１１に示すように、輝度成分(Y) ，クロマ成分(Cr),(Cb) それぞれを８×８ピクセルのブロックに分割する。なお、輝度成分(Y) の４つのブロック(Y0,Y1,Y2,Y3）と１つのクロマ成分(Cb)のブロックと、１つのクロマ成分(Cr)のブロックからなる合計６つのブロック(Y0,Y1,Y2,Y3,Cb,Cr) は、マクロブロック(MB)と呼ばれている。なお、マクロブロックを構成する輝度画素（ルミナンスピクセル）とクロマ画素（クロミナンスピクセル）との関係は、図１２に示すようになっている。
【０００４】
このブロック分割器１１からのマクロブロック単位のデータは差分器１２に送られる。
この差分器１２では、ブロック分割器１１からのデータと後述するフレーム間予測画像データとの差分をとり、その出力を後述するフレーム間予測符号化がなされるフレームのデータとして切換スイッチ１３の被切換端子ｂに送る。また、当該切換スイッチ１３の被切換端子ａには、上記ブロック分割器１１からのデータが後述するフレーム内符号化がなされるフレームのデータとして供給される。
【０００５】
上記切換スイッチ１３を介したブロック単位のデータはＤＣＴ回路１４によって離散コサイン変換（ＤＣＴ）処理され、そのＤＣＴ係数が量子化器１５に送られる。当該量子化器１５では、所定の量子化ステップ幅で上記ＤＣＴ出力を量子化し、この量子化した係数がジグザグスキャン回路１６に送られる。
当該ジグザグスキャン回路１６では、上記量子化係数を図１３に示すようにいわゆるジグザグスキャンによって並べ換え、その出力を可変長符号化回路１７に送る。この可変長符号化回路１７では、上記ジグザグスキャン回路１６の出力データを可変長符号化（ＶＬＣ）し、その出力を出力バッファ１８に送ると共に、当該可変長符号化処理により発生した符号量を示す情報を、量子化ステップ制御器１９に送る。量子化ステップ制御器１９は、可変長符号化回路１７からの符号量を示す情報に基づいて量子化器１５の量子化ステップ幅を制御する。また、上記出力バッファ１８から出力されたデータは圧縮符号化がなされた符号化出力として出力端子２から出力される。
【０００６】
また、上記量子化器１５からの出力は、逆量子化器２７によって逆量子化され、さらに逆ＤＣＴ回路２６によって逆ＤＣＴ処理される。当該逆ＤＣＴ回路２６の出力は、加算器２５に送られる。
この加算器２５には、フレーム間予測符号化のフレームのときにオンとなる切換スイッチ２４を介した動き補償器２１からのフレーム間予測画像データも供給され、当該データと上記逆ＤＣＴ回路２６の出力データとの加算が行われる。この加算器２５の出力データは、フレームメモリ２２に一時的に蓄えられた後、動き補償器２１に送られる。
【０００７】
当該動き補償器２１は、上記動き検出器２０によって検出された動きベクトルに基づいて動き補償を行い、これによって得たフレーム間予測画像データを出力する。
以下、上記図９の従来の画像符号化装置の具体的な動作について詳細に説明する。ここで、説明のために以下のように各フレームの呼び名を定義する。
【０００８】
先ず、表示順にフレームを並べたとき、それぞれを
Ｉ０，Ｂ１，Ｂ２，Ｐ３，Ｂ４，Ｂ５，Ｐ６，Ｂ７，Ｂ８，Ｉ９，Ｂ１０，Ｂ１１，Ｂ１２，・・・・・
と呼ぶこととする。これらのフレームのうち、Ｉ，Ｐ，Ｂは、後に説明するが、圧縮方法の種類を示し、これらＩ，Ｐ，Ｂの次の数字は、単純に表示順を示している。また、フレーム間予測符号化におけるこれらＩ，Ｐ，Ｂの関係は、図１４に示すようになる。
【０００９】
カラー動画像符号化方式の国際標準化作業グループであるいわゆるＭＰＥＧ（Moving Picture Expert Group)のうちＭＰＥＧ１では、この様な画像を圧縮するために、以下のようにすることが規定されている。
先ず、Ｉ０の画像を圧縮する。
次に、Ｐ３の画像を圧縮するのだが、Ｐ３そのものを圧縮するのではなく、Ｐ３とＩ０の画像との差分データを圧縮する。
【００１０】
その次に、Ｂ１の画像を圧縮するのだが、Ｂ１そのものを圧縮するのではなく、Ｂ１とＩ０或いは、Ｂ１とＰ３との差分データ或いはＩ０とＰ３の平均値との差分（いずれか情報の少ない方）を圧縮する。
その次に、Ｂ２の画像を圧縮するのだが、Ｂ２そのものを圧縮するのではなく、Ｂ２とＩ０或いは、Ｂ２とＰ３との差分データ或いはＩ０とＰ３の平均値との差分（どちらか情報の少ない方を選んで）を圧縮する。
【００１１】
次に、Ｐ６の画像を圧縮するのだが、Ｐ６そのものを圧縮するのではなく、Ｐ６とＰ３の画像との差分データを圧縮する。
上述したような処理を順番に並べて表すと、
0003755155.tif 000002
となる。このようにエンコード順は、
Ｉ０，Ｐ３，Ｂ１，Ｂ２，Ｐ６，Ｂ４，Ｂ５，Ｐ９，Ｂ７，Ｂ８，Ｉ９，Ｐ１２，Ｂ１０，Ｂ１１，・・・・
のように、表示順とは順番が入れ替わる。圧縮後のデータ（符号化データ）はこの順番に並ぶことになる。
【００１２】
以下、上述したことを図９の構成の動作と共にさらに詳しく述べる。
１枚目の画像（すなわちＩ０）のエンコードでは、先ず、上記フレームメモリ１０から１枚目に圧縮すべき画像のデータが、ブロック分割器１１によってブロック化される。このブロック分割器１１からは、前記Ｙ０，Ｙ１，Ｙ２，Ｙ３，Ｃｂ，Ｃｒの順にブロック毎のデータが出力され、被切換端子ａ側に切り換えられた切換スイッチ１３を介してＤＣＴ回路１４に送られる。このＤＣＴ回路１４では、それぞれのブロックについて縦横２次元の離散コサイン変換処理を行う。これにより、時間軸であったデータが周波数軸に変換される。
【００１３】
このＤＣＴ回路１４からのＤＣＴ係数は、量子化器１５に送られ、当該量子化器１５で所定の量子化ステップ幅で量子化される。その後、ジグザグスキャン回路１６によって図１３のようにジグザグ順に並べ変えられる。このようにジグザグ順に並べると、後ろへ行くほど、その係数は周波数成分の高い係数となるから、一般的に係数の値は後ろの方が小さくなる傾向にある。したがって、ある値Ｓで量子化すると、後ろへ行くほど、その結果は０になる頻度が増し、結果的に高域の成分が切り落とされることになる。
【００１４】
その後、この量子化後の係数は、可変長符号化（ＶＬＣ）回路１７へ送られ、ここでいわゆるハフマンコーディングが施される。この結果得られる圧縮されたビットストリームは、出力バッファ１８に一旦蓄えられた後、一定のビットレートで送出される。当該出力バッファ１８は、不規則に発生するビットストリームを一定のビットレートで送出できるようにするための緩衝のためのメモリである。
【００１５】
以上の様に１枚の画像だけ単独で圧縮することをフレーム内（イントラ：Intra ）符号化と言い、この画像をＩピクチャと呼ぶ。
したがって、デコーダが上記のＩピクチャのビットストリームを受信した場合は、以上に述べたことを逆にたどり、１枚目の画像を完成させる。
次に、２枚目の画像（すなわちＰ３）のエンコードでは、以下のようになされる。
【００１６】
すなわち、この２枚目以降もＩピクチャとして圧縮してビットストリームを作っても良いが圧縮率を上げるには、連続する画像の内容には相関があることを利用して、以下の様な方法で圧縮する。
先ず、動き検出器２０では、２枚目の画像を構成するマクロブロック毎に、１枚目の画像（Ｉ０）の中からそれに良く似たパターンを捜し出し、それを動きベクトルという（ｘ，ｙ）の相対位置の座標として表現する。
【００１７】
また、２枚目の画像ではそれぞれのブロックを、上記Ｉピクチャの場合のようにそのままＤＣＴ回路１４に送るのではなく、そのブロック毎の動きベクトルに従って一枚目の画像から引っ張ってきたブロックとの差分のデータ（差分器１２による差分データ）を、ＤＣＴ回路１４へ送るようにする。なお、動きベクトルの検出方法としては、ＩＳＯ／ＩＥＣ  11172-2 annex D.6.2 に詳細に述べられているためここでは省略する。
【００１８】
ここで、例えば上記動きベクトルによって示された一枚目の画像のパターンと、これから圧縮しようとするブロックのパターンとの間で、相関が非常に強くなっていれば、その差分データは非常に小さくなり、したがって、上記フレーム内（イントラ）符号化で圧縮するよりも、上記動きベクトルと上記差分データとを符号化した方が、圧縮後のデータ量は小さくなる。
【００１９】
このような圧縮方法を、フレーム間（インター：Inter)予測符号化と呼んでいる。ただし、常に差分データが少なくなるわけではなく、絵柄（画像内容）によっては、差分を取るよりも、上記フレーム内符号化で圧縮した方が、圧縮率が上がる場合がある。このような場合は、上記フレーム内符号化で圧縮する。フレーム間予測符号化にするか、フレーム内符号化にするかは、マクロブロック毎に異なる。
【００２０】
以上のことを図９の画像符号化装置（エンコーダ）に即して説明すると、先ず、フレーム間予測符号化を行うためには、エンコーダ側でたえずデコーダ側で作られる画像と同じ画像を作って置く必要がある。
そのためにエンコーダ内には、デコーダと同じ回路が存在する。その回路をローカルデコーダ（局部復号器）と呼ぶ。図９の逆量子化器２７と逆ＤＣＴ回路２６と加算器２５とフレームメモリ２２と動き補償器２１が当該ローカルデコーダに対応し、フレームメモリ２２内に記憶される画像のことをローカルデコーデッドピクチャ（Local decoded picture)又はローカルデコーデッドデータ(Local decoded data)と呼ぶ。これに対して、圧縮前の画像のデータは、オリジナルピクチャ(Original picture)又はオリジナルデータ(Original data) と呼ぶ。
【００２１】
なお、前述した１枚目のＩピクチャの圧縮時にも、上記ローカルデコーダを通して復号化された１枚目の画像が、上記フレームメモリ２２内に格納される。ここで、注意すべきことは、このローカルデコーダによって得られる画像は、圧縮前の画像ではなく、圧縮後復元した画像であり、圧縮による画質劣化のある、デコーダが復号化する画像とまったく同じ画像であるということである。
【００２２】
このような状態のエンコーダに２枚目の画像（Ｐ３）のデータ(Original data）が入ってくるわけだが（この段階ですでに、動きベクトルは検出済でなければならない）、データはブロック毎に動きベクトルを持ち、このベクトルが動き補償器（MC:Motion Compensation）２１に与えられる。当該動き補償回路２１は、その動きベクトルの示すローカルデコーデッドピクチャ上のデータ（動き補償データ：MC data:１マクロブロック）を上記フレーム間予測画像データとして出力する。
【００２３】
上記２枚目のオリジナルデータとこの動き補償データ（フレーム間予測画像データ）のピクセル毎の、差分器１２による差分データが、上記ＤＣＴ回路１４に入力される。それからの後の圧縮方法は、基本的にＩピクチャと同じである。上述のような圧縮方法によって圧縮する画像をＰピクチャ（Predicted picture)と呼ぶ。
【００２４】
さらに詳しく説明すると、Ｐピクチャにおいてすべてのマクロブロックがフレーム間予測符号化で圧縮するとは限らず、フレーム内符号化で圧縮する方が効率が良いと判断されるときは、そのマクロブロックは当該フレーム内符号化で符号化を行う。
すなわち、Ｐピクチャにおいても、マクロブロック毎に、フレーム内符号化によるか（このマクロブロックをイントラマクロブロックと呼ぶ）、又はフレーム間予測符号化によるか（このマクロブロックをインターマクロブロックと呼ぶ）のどちらかを選択して圧縮を行う。
【００２５】
上述のように、上記ローカルデコーダでは、量子化器１５の出力が、逆量子化器２７で逆量子化され、さらに逆ＤＣＴ回路２６で逆ＤＣＴ処理された後、エンコード時に動き補償データ（MC data ）と足され最終的なローカルデコーデッドピクチャとなる。
次に、３枚目の画像（すなわちＢ１）のエンコードでは、以下のようになされる。
【００２６】
上記３枚目の画像（Ｂ１）のエンコードでは、Ｉ０，Ｐ３の２枚の画像それぞれに対する動きベクトルを探索する。ここで、Ｉ０に対する動きベクトルをフォワードベクトル（forward Vector）ＭＶｆ(x,y) と呼び、Ｐ３に対する動きベクトルをバックワードベクトル（Backward Vector)ＭＶｂ(x,y) と呼ぶ。
この３枚目の画像についても差分データを圧縮するわけであるが、どのデータを圧縮するのかが、問題である。この場合も一番情報量が少なくなるものとの差分を取れば良い。このときの圧縮方法の選択肢としては、
（１）フォワードベクトルＭＶｆ(x,y) の示すＩ０上のデータとの差分
（２）バックワードベクトルＭＶｂ(x,y) の示すＰ３上のデータとの差分
（３）フォワードベクトルＭＶｆ(x,y) の示すＩ０上のデータとバックワードベクトルＭＶｂ(x,y) の示すＰ３上のデータの平均値との差分
（４）差分データは使わない（フレーム内符号化）
の４つである。マクロブロック毎にこの４種類の圧縮方法から一つが選択される。上記圧縮方法の選択肢のうちの（１），（２），（３）の場合は、それぞれの動きベクトルも動き補償器２１に送られ、差分器２１ではその動き補償データとの差分をとり、これがＤＣＴ回路１４に送られる。上記圧縮方法の選択肢のうちの（４）の場合は、そのままのデータがＤＣＴ回路１４へ送られる。
【００２７】
上述した１枚目、２枚目のエンコードの処理の結果、ローカルデコーデッドピクチャを格納するフレームメモリ２２には、Ｉ０，Ｐ３の２枚のピクチャが、復元されているのでこのようなことが可能である。
次に、４枚目の画像（すなわちＢ２）のエンコードでは、以下のようになされる。
【００２８】
上記４枚目の画像（Ｂ２）のエンコードでは、上述した３枚目（Ｂ１）のエンコード方法のところの説明文で、Ｂ１をＢ２に置き換えたこと以外は、上記３枚目のエンコードと同じ方法で圧縮する。
次に、５枚目の画像（すなわちＰ６）のエンコードでは、以下のようになされる。
【００２９】
上記５枚目の画像（Ｐ６）のエンコードでは、上述した２枚目（Ｐ３）のエンコード方法のところの説明文で、Ｐ３をＰ６に、Ｉ０をＰ３に置き換えただけで、他は同じ説明となる。
６枚目以降は、上述の繰り返しとなるので説明は省略する。
また、ＭＰＥＧにおいては、ＧＯＰ（Group Of Picture）と呼ばれるものが規定されている。
【００３０】
すなわち、何枚かのピクチャの集まりがグループオブピクチャ（ＧＯＰ）と呼ばれており、当該ＧＯＰは符号化データ（圧縮後のデータ）上で見て連続した画像の集まりでなくてはならないものである。また、ＧＯＰはランダムアクセスを考慮したもので、そのためには符号化データ上で見てＧＯＰの最初に来るピクチャは上記Ｉピクチャである必要がある。さらに、表示順（ディスプレイ順）でＧＯＰの最後は、Ｉ又はＰピクチャでなくてはならない。
【００３１】
図１５には、最初が４枚のピクチャからなるＧＯＰで、それ以降が６枚のピクチャからなるＧＯＰとなる例を挙げる。なお、図１５のＡはディスプレイ順を示し、図１５のＢは符号化データ順を示している。
この図１５において、ＧＯＰ２に注目すると、Ｂ４，Ｂ５はＰ３，Ｉ６から形成されるため、例えばランダムアクセスでＩ６にアクセスされると、Ｐ３が無いため、Ｂ４，Ｂ５は正しく復号化できない。このようにＧＯＰ内だけで正しく復号化できないＧＯＰは、クローズドＧＯＰ（Closed GOP）でないという。
【００３２】
これに対し、もしＢ４，Ｂ５がＩ６だけしか参照していないとしならば、例えばランダムアクセスでＩ６にアクセスしても、Ｐ３は必要ないため、これらＢ４，Ｂ５は正しく復号化できることになる。このようにＧＯＰ内だけの情報で、完全に復号化できるＧＯＰをクローズドＧＯＰ（Closed GOP）と呼ぶ。
以上のような圧縮方法の選択の中から一番効率の良い方法で圧縮するわけであるが、その結果発生する符号化データ（Coded data）の量は、入力画像にも依存し、実際に圧縮してみないと判らない。
【００３３】
しかし、圧縮後のデータのビットレートを一定にするためにコントロールすることも必要である。当該コントロールを行うためのパラメータは、量子化器１５に与える前記符号量を表す情報としての量子化ステップ（又は量子化スケール：Q-scale ）である。同じ圧縮方法でも、上記量子化ステップを大きくすれば発生ビット量は減り、小さくすれば増える。
【００３４】
この量子化ステップの値は、次のようにして制御する。
エンコーダには、圧縮後のデータを一定のビットレートにするために、出力に緩衝バッファ（出力バッファ１８）が設けられており、これによって画像毎のある程度のデータ発生量の差は吸収できるようになされている。
しかし、定められたビットレートを超えるようなデータの発生が続けば、出力バッファ１８の残量が増加し、ついにはオーバーフローを起こすことになる。逆にビットレートを下回るデータの発生が続けば出力バッファ１８の残量は減少し、最後にはアンダーフローを引き起こすことになる。
【００３５】
したがって、エンコーダは、出力バッファ１８の残量をフィードバックすることにより、前記量子化ステップ制御器１９が量子化器１５の量子化ステップをコントロールし、ここで出力バッファ１８の残量が少なくなればあまり圧縮しないように量子化ステップを小さくなるよう制御し、出力バッファ１８の残量が多くなれば圧縮率を高くするように量子化ステップを大きくするようにコントロールを行うようにしている。
【００３６】
また、前述した圧縮方法（前記フレーム内符号化やフレーム間予測符号化）によって発生する符号化データ量の範囲には、大きな差がある。
特にフレーム内符号化方式で圧縮をすると大量のデータが発生するため、出力バッファ１８の空き容量が小さい場合には量子化ステップサイズを大きくしなければならず、場合によっては量子化ステップサイズを最大にしてもバッファ１８のオーバーフローを招くかもしれない。よしんばバッファ１８に収まったとしても量子化ステップが大きければフレーム内符号化の画像は後のフレーム間予測符号化の画質に影響するので、フレーム内符号化での圧縮を行う前には出力バッファ１８に十分な空き容量が必要である。
【００３７】
したがって、予め定められた順序の圧縮方法を決めておき、フレーム内符号化の前には十分な出力バッファ１８の空き容量を確保するように、量子化ステップ制御器１９は量子化ステップサイズのフィードバックコントロールを行うようにしている。
以上のようにして一定レートの符号化データに抑えることが可能となる。
【００３８】
【発明が解決しようとする課題】
ところで、上述した従来の方法では、以下の理由により高画質を得られないことが欠点となっている。
すなわち、出力バッファの残量をフィードバックすることによって量子化ステップをコントロールする従来の方法では、フィードバックに基本的に遅延があるため入力画像の急激な情報量変化に追随できない。そのため、入力画像の情報量が急激に増加した場合、大量の圧縮データが発生し、バッファの残量を大幅に減らし、時にはオーバーフローを引き起こす。また、オーバーフローしなかったとしても、出力バッファの残量は非常に少なくっているので、次に圧縮される画像は量子化ステップが大きくなり、その結果画質の低下を招くことになる。逆に、入力画像の情報量が急激に減少した場合、発生する圧縮データは小さなものになるにもかかわらず、上記遅延のために量子化ステップはすぐには小さくならないので、当該遅延の間の画質を上げることができない。
【００３９】
また、一般に入力画像は様々で、同じ圧縮率であっても同じ画質を得られるとは限らない。それは画像の情報量そのものの違いや、圧縮方法に依存した特徴（前後で相関が高い等）に依存するからである。したがって、画質を均質に圧縮するには画像に適応的に圧縮方法、圧縮率などを変えなければならない。
さらに、時々刻々情報量の変化する入力画像を一定のビットレートで平均的に高画質に圧縮するためには、出力バッファによって低ビットレートを維持できる範囲でかつ画質が均質になるように、情報量の多い画像（絵）には多めの圧縮データを許し、情報量の少ない画像には少なめの圧縮データにすることが必要だが、次のような場合に従来の方法ではそれができない。
【００４０】
例えば、情報量の少ない画像が連続し、そのあとで急に情報量の多い画像が入ってくる場合を考えると、先に供給される情報量の少ない画像に対しては量子化ステップをあまり小さくし過ぎず、その後に続く情報量が多い画像が符号化されるまで出力バッファの残量を低く保つべきであるのに、前述した出力バッファ残量をフィードバックする方式では、上記情報量が少ない画像が連続するうちに出力バッファの残量を増加させてしまうようになる。
【００４１】
逆に、情報量が多い画像の後に情報量の少ない画像が続く場合では、先に供給される情報量の多い画像を大きな量子化ステップで圧縮して出力バッファの残量を減らさなくても、その後に続くのは情報量の少ない画像なのでオーバーフローし難いはずであるが、上記出力バッファ残量フィードバック方式では、続く画像の情報量がわからないためバッファの残量を減らす方向、すなわち量子化ステップを大きくする方向に制御し、画質を低下させてしまう。
【００４２】
さらに、入力画像の情報量の急激な変化の顕著な例がシーンチェンジであるが、シーンチェンジは前の画像との相関が極めて低いため、フレーム内符号化で圧縮したほうが効率良く圧縮できるが、予め情報量を知っており、かつ前後の画像のそれとの比較ができなければシーンチェンジかどうか、すなわち、フレーム内符号化で圧縮するか、あるいはフレーム間予測符号化で圧縮するか判断することができない。
【００４３】
またさらに、フレーム内符号化で圧縮をするには出力バッファに十分な空き容量が必要であるが、前の画像の画質を著しく損なうことなく出力バッファに十分な空き容量を確保するためには、充分前のフレームから準備を行い、当該出力バッファの残量を減らしておかなければならない。したがって、フレーム内符号化で圧縮をすることは圧縮を行うよりも充分以前に判っていなければならない。
【００４４】
そこで、本発明は、上述のような実情に鑑みて提案されたものであり、シーンチェンジが検出でき、効率の良い画像圧縮が可能で、全体的に画質を向上させることができると共に、コストの低減も可能な画像符号化装置を提供することを目的とするものである。
【００４５】
【課題を解決するための手段】
本発明の画像符号化装置は、上述した目的を達成するために提案されたものであり、入力画像データを複数枚蓄える画像データ蓄積手段と、上記画像データ蓄積手段に蓄積された入力画像データを複数のブロックに分割し、それぞれのブロック毎にサーチ側とリファレンス側のピクセル毎に求めた誤差値を１画面分合計した第１の合計値と、時間的に過去の１画面分の誤差値を合計した第２の合計値との比が所定の閾値を越えた場合をシーンチェンジ検出したと判定するシーンチェンジ検出手段と、上記シーンチェンジ検出手段によりシーンチェンジ検出したと判定された場合、画像データの圧縮方法としてフレーム内符号化を選択する圧縮方法選択手段と、上記圧縮方法選択手段により選択された圧縮方法に従って上記入力画像データに量子化を含む所定の圧縮符号化処理を施す圧縮符号化処理手段と、上記シーンチェンジ検出手段によるシーンチェンジ検出出力に応じて上記圧縮符号化処理手段内での上記量子化の際の量子化ステップを制御する量子化ステップ制御手段とを有し、上記量子化ステップ制御手段は、上記量子化されたデータを蓄積するバッファが、上記シーンチェンジ検出されたフレームが量子化されて蓄積されるときに上記バッファの残量を減らしておけるように上記量子化ステップを大きくする制御を行うことを特徴とするものである。
ここで、上記シーンチェンジ検出手段は、上記第１の合計値が所定の閾値以下であるときには上記第２の合計値を保存しておく（更新しない）こと、及び／又は、シーンチェンジを検出したときに上記第２の合計値を保存しておく（更新しない）ことを行う。
【００４６】
また、本発明の画像符号化装置は、入力画像データを複数枚蓄える画像データ蓄積手段と、上記画像データ蓄積手段に蓄積された入力画像データを複数のブロックに分割し、それぞれのブロック毎にサーチ側とリファレンス側のピクセル毎に求めた差分値の第１の絶対値和と、時間的に過去の差分値の第２の絶対値和と比が所定の第１の閾値を越えたブロックをシーンチェンジであると判定する第１のシーンチェンジ検出手段と、上記第１のシーンチェンジ検出手段でシーンチェンジと判定したブロックの１画面に対する割合が所定の第２の閾値を越えた場合、当該１画面はシーンチェンジであると判定する第２のシーンチェンジ検出手段と、上記第２のシーンチェンジ検出手段によりシーンチェンジであると判定された場合、１画面の画像データの圧縮方法としてフレーム内符号化を選択する圧縮方法選択手段と、上記圧縮方法選択手段により選択された圧縮方法に従って上記入力画像データに量子化を含む所定の圧縮符号化処理を施す圧縮符号化処理手段と、上記第１、第２のシーンチェンジ検出手段によるそれぞれのシーンチェンジ検出出力に応じて上記圧縮符号化処理手段内での上記量子化の際の量子化ステップを制御する量子化ステップ制御手段とを有し、上記量子化ステップ制御手段は、上記量子化されたデータを蓄積するバッファが、上記シーンチェンジ検出されたフレームが量子化されて蓄積されるときに上記バッファの残量を減らしておけるように上記量子化ステップを大きくする制御を行うことを特徴とするものである。
【００４８】
【作用】
本発明によれば、直前の誤差値（第１の誤差値）と過去の誤差値（第２の誤差値）とを比較することで、ブロック毎にシーンチェンジであるか否かを検出している。
また、本発明によれば、直前の差分の絶対値和（第１の絶対値和）と過去の差分の絶対値和（第２の絶対値和）とを比較してブロック毎にシーンチェンジを検出し、さらにシーンチェンジと判定されたブロックの１画面中の割合からこの１画面がシーンチェンジであるか否かを検出している。
【００４９】
ここで、第１の誤差値や第１の差分の絶対値和が所定の閾値以下のときには、過去の第２の誤差値や第２の差分の絶対値和を保存しておく（更新しない）ことで、誤差値や差分の絶対値和の変動が少ない画像のシーンチェンジの検出精度を上げている。また、第１の誤差値や第１の差分の絶対値和からそのブロックがシーンチェンジであると検出したときにも、過去の第２の誤差値や第２の差分の絶対値和を保存しておく（更新しない）ことで、次のブロックのシーンチェンジの検出を可能としている。
【００５０】
【実施例】
以下、図面を参照し、本発明の実施例について詳述する。
図１には本発明実施例の画像符号化装置の概略構成を示す。なお、この図１において、前述した図９と同じの構成については同一の指示符号を付してその説明については省略する。
【００５１】
この図１の構成において、前記図９の構成に追加された構成要素はシーンチェンジ検出回路３１と圧縮方法選択回路３２と動きベクトル発生回路３４であり、また、フレームメモリ４０と動き検出器４１及び量子化ステップ制御器３３が変更されている。
すなわち、本発明の第１の実施例の画像符号化装置は、入力画像データを複数枚フレーム分蓄える画像データ蓄積手段であるフレームメモリ４０と、上記フレームメモリ４０に蓄積された入力画像データを複数のブロックに分割し、それぞれのブロック毎にサーチ側とリファレンス側のピクセル毎に求めた誤差値を１画面分合計した第１の合計値(SAD) と、時間的に過去の１画面分の誤差値を合計した第２の合計値(prev_SAD)との比に基づいてシーンチェンジ検出を行うシーンチェンジ検出回路３１と、上記シーンチェンジ検出回路３１によるシーンチェンジ検出出力に応じて画像データの圧縮方法（フレーム内符号化／フレーム間予測符号化）を選択する圧縮方法選択回路３２と、上記圧縮方法選択回路３２により選択された圧縮方法に従って上記入力画像データに所定の圧縮符号化処理を施す圧縮符号化処理手段である差分器１２から可変長符号化回路１７まで及びローカルデコーダと、圧縮符号化された画像データを蓄積する出力バッファ１８と、上記シーンチェンジ検出回路３１によるシーンチェンジ検出出力に応じて上記出力バッファ１８の蓄積量を制御するバッファ制御手段としての作用を有する量子化ステップ制御器３３とを有することを特徴とするものである。
【００５２】
また、本発明の第２の実施例の画像符号化装置は、上記図１のシーンチェンジ検出回路３１において、上記フレームメモリ４０に蓄積された入力画像データを複数のブロックに分割し、それぞれのブロック毎にサーチ側とリファレンス側のピクセル毎に求めた差分値（誤差）の第１の絶対値和(AD[i]) と、時間的に過去の差分値（誤差）の第２の絶対値和(prev ＿AD[i])との比に基づいてシーンチェンジ検出を行う（第１のシーンチェンジ検出手段）と共に、シーンチェンジと判定したブロックの１画面に対する割合に基づいて、当該１画面のシーンチェンジを検出する（第２のシーンチェンジ検出手段）ようにしている。
【００５３】
この図１において、先ず、入力端子１から入力された入力画像データは、フレームメモリ４０に蓄えられる。このフレームメモリ４０は、図９のフレームメモリ１０とは異なり、所定数のフレームを蓄積できるものである。このときの蓄積する所定数としては、多過ぎるとフレームメモリ４０が大規模になってしまうので好ましくない。上記所定数として効率的な長さ（フレーム数）は、ビットレートと出力バッファ１８の容量、フレーム内符号化の圧縮方式の画像同士の間隔（ほとんどの場合ＧＯＰの長さといっても差し支えない）に大きく依存する。これは圧縮方法及び圧縮率の違いから生ずる圧縮データの大きさのむらを上記出力バッファ１８によって吸収し、定ビットレートにすることができる範囲が、上記ビットレート及び出力バッファ容量とフレーム内符号化がなされる画像同士の間隔等の条件によって制約されるからである。
【００５４】
ところで、一般的にフレーム内符号化方式で圧縮することは定期的に行われる（これがＧＯＰの区切りになることが多い）ものであり、このフレーム内符号化の圧縮方式は当該圧縮後のデータ量が他の方式（フレーム間予測符号化）に比べてかなり大きいものである。このため、当該フレーム内符号化による圧縮画像同士（或いはＧＯＰ）の間隔で情報量を調べ、データ量の配分をするのは、一つの合理的な方法である。
【００５５】
しかし、本実施例の方式では、後述するシーンチェンジ等によって前後の画像の相関が著しく低くなった場合にも、フレーム内符号化方式で圧縮するようにしている。
その場合、定期的に行うはずである近傍のフレーム内符号化によって圧縮を行う画像は、定ビットレート或いは均質な画質の維持が困難になるため、フレーム内符号化による圧縮である必然性を失い、フレーム内符号化で圧縮することを取り止める必要がでてくる。
【００５６】
したがって、フレーム内符号化による圧縮を行う周期の２倍程度を上記フレームメモリ４０の長さ（上記所定数）とすることが適当である。
もちろん、上記フレーム数は一例であり、これに限定されることはなく様々な条件に合わせて変更することは可能である。
次に、シーンチェンジ検出回路３１は、入力画像のシーンチェンジを後述するように動き検出で得たパラメータを用いて検出する。
【００５７】
ここで、当該シーンチェンジ検出回路３１においてシーンチェンジを検出する目的は、フレーム間予測符号化かフレーム内符号化のいずれかの圧縮方式を決定するための判断材料にすることが主である。それは、前後で相関の極めて低い画像では、フレーム間予測符号化で圧縮するよりもフレーム内符号化で圧縮する方が効率良く圧縮できるからである。また、圧縮後のデータも大きなものとなるため、データ量配分や出力バッファマネジメントの観点からもシーンチェンジを把握することは重要である。
【００５８】
また、上記フレームメモリ４０に蓄積された画像データは、適宜、画像情報評価回路５０にも送られる。
ここで、当該画像情報評価回路５０は、大別して２通りのパラメータを算出するものである。
第１のパラメータは、フレーム内符号化で圧縮を行った場合の圧縮後のデータ量を予測することが可能なように、その画像自身の情報量を示すものである。この第１のパラメータとしては、例えば、フレームメモリ４０から供給された画像データに対して、ＤＣＴ処理をブロック毎に行い、そのＤＣＴ係数の和や統計をとったものとしたり、また、それでは規模が大きくなる場合には、平均自乗誤差のブロック毎の和を求めたものとする。いずれにしても、当該画像情報評価回路５０では、画像の情報量を表し、圧縮後のデーター量を類推するに足るパラメータを算出する。
第２のパラメータは、フレーム間予測符号化で圧縮を行った場合の圧縮後のデータ量を予測することが可能な、画像の差分情報量を示すものである。この場合のパラメータとしては、例えば、フレームメモリ４０に格納された画像と動き補償後の画像との差分値のブロック内の和を用いる。このパラメータ算出の際には、一般的な動きベクトル検出回路で得られる動きベクトルが検出された最小誤差を利用することができる。
【００５９】
次に、圧縮方法選択回路３２については説明する。当該圧縮方法選択回路３２は、上記シーンチェンジ検出回路３１からの出力と画像情報評価回路５０からの情報量パラメータとに基づいて、フレーム内符号化／フレーム間予測符号化（Ｐ，Ｂピクチャ）のいずれの圧縮方式で圧縮を行うのかを選択する回路である。
ここで、フレーム内符号化方式による圧縮では少なくともＧＯＰの最初になければならない。ＧＯＰはランダムアクセスを考慮してある程度の間隔とするので、必然的にＩピクチャはある程度定期的に発生するし、シーンチェンジ等によっても発生する。したがって、画像のカウントとシーンチェンジ検出回路３１の出力が当該圧縮方法選択回路３２に加えられるようになっている。
【００６０】
次に本実施例の構成における処理の流れを、図２のフローチャートに沿って説明する。
先ず、ステップＳ１では、入力端子１に入力された画像データが順次フレームメモリ４０へ格納される。
ここで、先に述べたようにＩピクチャの頻度や間隔の決定が画質に影響を及ぼすので、これに関係して符号化に先だってＧＯＰを決めておく必要があり、また、後述するようにレートコントロールをするために符号化に先だって１ＧＯＰ分の画像についての情報を収集しなければならない。このように、次々と入力されてくる画像データに対してその間の分析をし、符号化するまでの十分な遅延時間を稼ぐため、大量のフレームメモリ４０を用いる。
【００６１】
次に、ステップＳ２では、フレーム内符号化で圧縮するために必要な動きベクトルを動き検出器４１及び動きベクトル発生回路３４で検出する。すなわち、このステップＳ２では、上記フレームメモリ４０に格納された画像データは予め定められたスケジュールでメモリ中の各画像データをＰピクチャ或いはＢピクチャとして圧縮符号化できるように、先ず動き検出器４１で動き検出（モーションエスティメーション）を行う。なお、動き検出を行う画像についてはＩピクチャを規定しない。それはどの画像データがＩピクチャになるのかこの時点では確定していないからであり、またＩピクチャは動き補償を必要としないため、後にどの画像データでもＩピクチャにすることが可能だからである。
【００６２】
ここでは、動き検出をする際に用いられる最小歪み（Minimum Distortion）或いは誤差（差分値）の絶対値和（ＡＤ：Absolute Difference ）と呼ばれるものを符号化に用いるパラメータの一つとして読み出し格納する。
なお、上記誤差の絶対値和（ＡＤ）は、リファレンス側の画像を８×８ピクセルのブロックに分割し、輝度データ８×８×４ピクセルと色差データ８×８×２ピクセルのマクロブロック（ＭＢ）に対し、動き検出を行なった際に求めた動きベクトルで切りだされるサーチ側のマクロブロックとの各画素同士の差の絶対値和で、以下の式(1) で求めることができる。
【００６３】
【数１】
0003755155.tif 000003
【００６４】
これをさらにマクロブロック内のブロックについて集計したものを用いてマクロブロックの誤差の絶対値和（ＡＤ）とする。
このパラメータはシーンチェンジの判定やフレーム間予測符号化で圧縮する場合の画像の相関も考慮した情報量の推定に用いる。
このパラメータはまた、マクロブロックタイプを決定するために使われる。
【００６５】
画像の情報量を推定するパラメータ（ＳＡＤ）は、式(2) のように、一つの画像内の上記誤差の絶対値和（ＡＤ）を合計したものである。
ＳＡＤ＝ΣＡＤ                        (2)
もちろん、上記誤差の絶対値和（ＡＤ）以外に最小歪み（Minimum Distortion）を用いてもよい。
【００６６】
次に、ステップＳ３では、上記シーンチェンジ検出回路３１でシーンチェンジの検出を行う。このシーンチェンジ検出回路３１でのシーンチェンジ検出は、動き検出器４１で得られた上記パラメータＡＤを使って、シーンチェンジを検出する。
ここで、シーンチェンジ検出回路３１におけるシーンチェンジ検出のロジックには２つのバリエーションがある。
【００６７】
すなわち、第１の実施例に対応する第１のシーンチェンジ検出方法は、上記誤差の絶対値和（ＡＤ）を１画面分合計した合計値（ＳＡＤ）を使うものであり、第２の実施例に対応する第２のシーンチェンジ検出方法は、上記誤差の絶対値和（ＡＤ）を使い各マクロブロックで判定を行い、シーンチェンジと判定された割合で検出する。これらどちらも、考え方は、過去の誤差の絶対値和（ＡＤ）の値から検出しようとしている現在の誤差の絶対値和（ＡＤ）の値が、ある比率以上に大きくなった場合をシーンチェンジとするものである。
【００６８】
すなわち、この第１のシーンチェンジ検出方法では、例えば、あるフレームから前方向の動きベクトルの検出を行ったときにマクロブロック毎の誤差の絶対値和を１画面分（１フレーム分）合計した値（合計値(SAD) ）と、過去のフレームで同様に前方向の動きベクトル検出を行ったときにマクロブロック毎の誤差の絶対値和を１画面分（１フレーム分）合計した値（合計値(prev ＿SAD)との比（SAD ／prev＿SAD)が、ある閾値(Thresh)を越えた場合は当該フレームがシーンチェンジであると判定する。
【００６９】
ただし、この第１のシーンチェンジ検出方法の場合、誤差の絶対値の合計値(SAD) が、ある閾値(min＿SAD)と比べて異常に小さい場合には、直前の誤差の絶対値の上記合計値(prev ＿SAD)を更新しないようにする。また、シーンチェンジであると判定された場合は、直前の上記合計値(prev ＿SAD)を更新しないようにする。
【００７０】
上記第１のシーンチェンジ検出方法の詳細なフローチャートは、図３に示すようになる。
この図３において、ステップＳ２０１では初期値の設定を行う。この初期値設定はシーンチェンジを始まる前に行う。この初期値として、変数(small＿SAD)は、通常の連続したシーンでの少なめの前記合計値(SAD) とし、適切な値に設定する。また、変数(thresh)は、例えば３を設定しておく。
【００７１】
次のステップＳ２０２では各フレーム毎に地点Ａを設定し、ステップＳ２０３では動き検出を行い、前記誤差の絶対値和（ＡＤ）を１画面分集計して合計値(SAD) を求める。
次に、ステップＳ２０４では、前述したように、あるフレームにおける合計値（SAD)と、過去のフレームにおける合計値(prev ＿SAD)との比（SAD ／prev＿SAD)が、ある閾値(Thresh)を越えたかいなかの判定を行う。当該ステップＳ２０４において、越えたと判定した場合にはステップＳ２０６でシーンチェンジを検出したと判定し、その後ステップＳ２０９に進んで地点Ｂへ抜ける。一方、ステップＳ２０４において、越えないと判定した場合にはステップＳ２０５でシーンチェンジでないと判定する。
【００７２】
ステップＳ２０５の次はステップＳ２０７に進む。このステップＳ２０７では、誤差の絶対値の合計値(SAD) が、ある閾値(min＿SAD)と比べて小さいか否かの判断を行う。このステップＳ２０７において、小さくないと判定した場合にはステップＳ２０９に進んで地点Ｂへ抜ける。一方、ステップＳ２０７において、小さいと判定した場合には、ステップＳ２０８に進む。
【００７３】
ステップＳ２０８では、過去のフレームの合計値(prev ＿SAD)を当該フレームの合計値(SAD) とすることで、合計値を更新しないようにし、その後、ステップＳ２０９に進んで地点Ｂへ抜ける。
次に、上記誤差の絶対値和（ＡＤ）を使用して、図４に示すような縦１５マクロブロック×横２２マクロブロックからなる画像の各マクロブロック毎の比較判定によって、シーンチェンジを検出する第２のシーンチェンジ検出方法について説明する。
【００７４】
この第２のシーンチェンジ検出方法では、例えば、あるフレームから前方向の動きベクトルの検出を行ったときに、マクロブロック毎の誤差の絶対値和(AD[i]) と、過去（直前）のフレームで同様に前方向の動きブロック検出を行ったときにマクロブロック毎の誤差の絶対値和(prev ＿AD[i])との比（AD[i] ／prev＿AD[i])が、ある閾値(Thresh)を越えた場合は、そのマクロブロックはシーンチェンジとなっていると判定する。
【００７５】
ただし、この第２のシーンチェンジ検出方法の場合、マクロブロック毎の誤差の絶対値和(AD[i]) が、ある閾値(min＿AD) と比べて異常に小さい場合は、マクロブロック毎の直前の誤差の絶対値和(prev ＿AD[i])を更新しない。また、シーンチェンジであると判定されたマクロブロックでは、マクロブロック毎の直前の誤差の絶対値和(prev ＿AD[i])を更新しない。
【００７６】
さらに、この第２のシーンチェンジ検出方法では、上述のようにしてシーンチェンジと判定されたマクロブロックの数(MB ＿SC＿num)と、１画面（１フレーム）のマクロブロックの数の合計との比(MB ＿SC＿num ／１画面のマクロブロック数）が、ある閾値(thresh)を越えた場合は、そのフレームはシーンチェンジであると判定する。
【００７７】
このように、第２のシーンチェンジ検出方法では、第１のシーンチェンジ検出方法のような単純な検出と異なり、マクロブロック毎に判定を行なうため、それぞれのマクロブロック領域でのシーンチェンジ判定ができ、より精度の高いシーンチェンジ検出が可能となる。また、シーンチェンジと判定されたマクロブロックでは、マクロブロックタイプの判定でフレーム内符号化のマクロブロック（イントラマクロブロック）とする等の副次的な利用も有効である。
【００７８】
したがって、第２のシーンチェンジ検出方法では、第１のシーンチェンジ検出方法に比べて、例えばアニメーションのような画像の場合のシーンチェンジの誤検出低減に役立つ。
なお、当該アニメーション画像のシーンチェンジ検出については後述する。
第２のシーンチェンジ検出方法の詳細なフローチャートは、図５に示すようになる。
【００７９】
この図５において、ステップＳ２１１では初期値の設定を行う。この初期値設定はシーンチェンジを始まる前に行う。この初期値として、変数(small＿AD) は、通常の連続したシーンでの少なめの前記誤差の絶対値和(AD)とし、また、変数(thresh)は、例えば０．３を設定しておく。
次のステップＳ２１２では各フレーム毎に地点Ａを設定し、ステップＳ２１３では動き検出を行う。
【００８０】
次に、ステップＳ２１４では、マクロブロックの数を示す変数(MB ＿SC＿num)とフレーム内のマクロブロックの番号(i) をそれぞれ初期化する。
その後、マクロブロック毎の判定の処理に移る。
このマクロブロック毎の判定の処理では、先ず、ステップＳ２１５において、前述したように、あるフレームのマクロブロック毎の誤差の絶対値和(AD[i]) と、過去（直前）のフレームにおけるマクロブロック毎の誤差の絶対値和(prev ＿AD[i])との比（AD[i] ／prev＿AD[i])が、ある閾値(Thresh)を越えたか否かの判定を行う。当該ステップＳ２１５において、越えたと判定した場合にはステップＳ２１７でシーンチェンジを検出したと判定し、その後ステップＳ２１９に進む。一方、ステップＳ２１５において、越えないと判定した場合にはステップＳ２１６でシーンチェンジでないと判定した後、ステップＳ２１８に進む。
【００８１】
上記ステップＳ２１９ではマクロブロックの数を示す変数(MB ＿SC＿num)を１ずつ増加させ、ステップＳ２１８では過去（直前）のフレームにおけるマクロブロックの誤差の絶対値和(prev ＿AD[i])当該フレームのマクロブロックの誤差の絶対値和(AD[i]) とすることで、合計値を更新しないようにする。これらステップＳ２１８とＳ２１９の後はステップＳ２２０に進み、ここでマクロブロックの番号(i) を１ずつ増加させる。
【００８２】
次のステップＳ２２１では、マクロブロックの番号(i) が１画面（１フレーム）のマクロブロック数以上となったか否かの判定を行い、なっていないと判定した場合にはステップＳ２１５に戻り、なったと判定した場合にはステップＳ２２２に進む。
ステップＳ２２２では、マクロブロックの数(MB ＿SC＿num)と、１画面（１フレーム）のマクロブロックの数の合計との比(MB ＿SC＿num ／１画面のマクロブロック数）が、ある閾値(thresh)を越えたか否かの判定を行う。このステップＳ２２２において、越えたと判定した場合にはステップＳ２２３において当該フレームはシーンチェンジであると判定し、越えていないと判定した場合にはステップＳ２２４で当該フレームはシーンチェンジでないと判定する。
【００８３】
図２のフローチャートに戻って、ステップＳ３の上述したシーンチェンジ検出の後のステップＳ４では、ＧＯＰ長の決定を行い、ステップＳ５では圧縮方法の選択（ピクチャタイプの決定）とを行う。
すでに述べたように、符号化に際してランダムアクセス性を考慮して適当なフレーム数毎にＧＯＰを区切る。このとき少なくともＧＯＰの符号順で最初のピクチャはＩピクチャでなければならないからピクチャの数をカウントし定期的にピクチャタイプをＩピクチャにする。
【００８４】
一方、上記シーンチェンジによって前後のピクチャで相関が低くなった場合、これも先に述べたようにＩピクチャで圧縮符号化すると効率が良い。しかしながら、Ｉピクチャは圧縮率が低いため、低ビットレートにおいては頻繁に現れると画質の低下を招く。したがってシーンチェンジが検出された場合、Ｉピクチャ同士の間隔を適度に保つよう適応的にＧＯＰの長さを決める。
【００８５】
次のステップＳ６では、マクロブロックタイプの判定を行う。すなわち、このステップＳ６では、マクロブロック毎の圧縮方法と、マクロブロックタイプとを決める。
ここで、マクロブロックタイプの決定のためには、先ず画像情報評価回路５０において、先ず、上記動き検出で得られたパラメータ以外に誤差の平均絶対値和（ＭＡＤ：Mean Absolute Difference）、アクティビティ（Activity）を各画像毎に評価する。
【００８６】
上記誤差の平均絶対値和（ＭＡＤ）はＩピクチャの情報量を推定するためのパラメータで、下記の式(3) によって８×８画素のブロック毎に求める。また、必要に応じてマクロブロック或いは画面で集計を行う。このパラメータはまた、マクロブロックタイプを決定するために使われる。
【００８７】
【数２】
0003755155.tif 000004
【００８８】
これをさらに、式(4) のように、マクロブロック内のブロックについて合計したものを用いてマクロブロックの判定に用いる。
ＭＡＤ＝Σ blockＭＡＤ     (4)
またさらに、式(5) のように、マクロブロックの値を一つの画像内で合計してその値を、その画像の（Ｉピクチャとしての）情報量を表すパラメータＳＭＡＤとする。
【００８９】
ＳＭＡＤ＝ΣＭＡＤ         (5)
また、上記アクティビティは、一つの画面の中でそのマクロブロックの画像の状態に応じて、よりきめ細かに量子化ステップを制御することにより画質を維持しながら、より圧縮効率を高めるためにその画像の状態を定量化するパラメータである。
【００９０】
例えば一つのブロック内で画像が画素のレベル変化の少ない平坦な部分（フラットな部分）では量子化による歪みが目立ち易く、量子化ステップを小さくしてやるべきで、逆にレベル変化が多い複雑なパターンのブロックでは量子化歪みは目立ち難く、情報量も多いので量子化ステップを大きくするべきである。
そこで、例えばブロックの平坦度（フラットネス）を表すパラメータをこのアクティビティとして用いるようにしている。
【００９１】
上述のようにして求めた、上記誤差の平均絶対値和（ＭＡＤ）と既に求めている誤差の絶対値和（ＡＤ）は、それぞれフレーム内符号化／フレーム間予測符号化で圧縮したときの圧縮後のデータ量に関係するので、この２つのパラメータを比較すればフレーム内符号化／フレーム間予測符号化のどちらのマクロブロックタイプがより少ないデータ量になるか判定できる。
【００９２】
次のステップＳ７では、レートコントロールのためのビット配分を行う。
各ピクチャ毎の圧縮符号化された後のデータサイズは、その符号化方式や元々の画像データが持つ情報量、前後の相関などによって大きく変動する。平均的な画質を保つようにするならばことさらである。
各ピクチャ毎の圧縮符号化された後のデータサイズのむらは出力バッファ１８によってある程度吸収されるが、平均的には一定のビットレートにしなければならない。したがって、ある区間を定めればその間のピクチャのトータルの圧縮後のデータ量が決まる。そこで、既に決定しているピクチャタイプと、予め調べておいた画像の情報量パラメータとを用いて各ピクチャ毎に圧縮後のデータ量、すなわち各ピクチャが使って良いビットの量を決める。
【００９３】
情報量の少ない画像やＢピクチャには少なく、情報量の多い画像やＩピクチャには多くする。これをビット配分と呼ぶ。これによって画質のばらつきを抑え、なおかつ一定レートに保つことが容易になる。
例えば本実施例ではＧＯＰをその区間として、次の式(6) ，式(7) のようにビット配分を行う。
0003755155.tif 000005
ここでいう情報量パラメータは、先に述べたパラメータＳＭＡＤ，ＳＡＤを用い、これに圧縮するピクチャタイプ別の乗数をかけたものである。また、上記乗数は各ピクチャタイプ間のパラメータと画質との関係を調整するものである。
【００９４】
なお、上記式(7) の上記画像情報量パラメータのＧＯＰ合計値は、式(8) に示すようにして求める。
0003755155.tif 000006
次のステップＳ８では、量子化ステップ制御器３３において基本量子化ステップの決定及び画面内の量子化ステップの制御を行う。
【００９５】
上述のようにしてピクチャタイプが決まり、マクロブロックタイプが決まれば、上記画像情報評価回路５０によって求めた情報量パラメータと量子化ステップとから量子化後のデータサイズをある程度予測できる。したがって、情報量パラメータと量子化後のデータ量が決まっていれば、量子化ステップを逆算することができる。このようにして求めた量子化ステップを、そのピクチャの基本量子化ステップとする。
【００９６】
量子化ステップ制御器３３では、上述のように画面内の量子化ステップを各ブロック毎になるべく画質を高く、かつ、圧縮効率も高くするように制御する。この制御は、上記アクティビティやマクロブロックタイプなどの情報を基に基本量子化ステップを制御することで実現する。
次のステップＳ１９では、符号化を行う。
【００９７】
上述のようにして圧縮符号化の全てのパラメータが決まっているので、その後はＭＰＥＧの規則にしたがって圧縮符号化する。
最後に、ステップＳ１１では、予測パラメータの更新を行う。
ここで、画像情報量と基本量子化ステップ、圧縮後のデータ量の関係は、圧縮する画像に依存する。したがって、ここでは、その関係を表す式に用いるパラメータ、予測パラメータを、圧縮後の実際のデータ量をフィードバックすることにより学習させ、予測の精度を向上させている。
【００９８】
次に、前述したアニメーション画像のシーンチェンジ検出について、以下に説明する。
アニメーション画像についての前記画像の情報量を推定するパラメータである誤差の絶対値和（ＡＤ）を１画面分合計した合計値（ＳＡＤ）は、図６、図７に示すように、動きのある部分でも、実際には０に近い値と、より大きな値の繰り返しになっている。これはアニメーションの多くの場合、画像（絵）の変化は秒当たり３０フレームに対して、毎フレームではなく、例えば７フレーム／秒等になっているためである（さらに少ない場合もある）。なお、比較のため、図８には、アニメーション画像ではなく実写画像の場合の合計値（ＳＡＤ）を示している。
【００９９】
このように、コマ数の少ないアニメーションでは、少ないコマ数で動きをつけるために、動きのある部分は上記合計値（ＳＡＤ）が比較的大きな値をとることがある。
図７に示すように、クロスフェード部を除いた上記合計値（ＳＡＤ）の最大値は２８６３になっている。一方、図６のシーンチェンジ部での合計値（ＳＡＤ）は、８３６６になっている。ここでもしも、この２つの部分が連続していた場合、第１のシーンチェンジ検出方法を行うと検出できないことになる。
【０１００】
そこで、第２のシーンチェンジ検出方法において、アニメーションのような画像のシーンチェンジを行う場合には、以下のようにする。
先ず、マクロブロック毎に合計値（ＳＡＤ）の変化率を求める。
次に、合計値（ＳＡＤ）は、検索画像と参照画像の距離が遠くなると大きくなる傾向にあるので、距離の影響を小さくするため、式(9) に示すように、補正係数ＫMOD で割る。
【０１０１】
補正されたＳＡＤ＝ＳＡＤ／ＫMOD            (9)
ここで、式(10)に示すように、ＫMOD は距離が遠くなるに従って大きくなる。
ＫMOD ＝１＋０．５×（（検索画像と参照画像の距離）−１）     (10)
次に、式(11)に示すように、マクロブロック毎の合計値（ＳＡＤ）の変化率を求める。
【０１０２】
ＳＡＤ変化率＝（ＭＢのＳＡＤ）／（ＭＢの前回のＳＡＤ）      (11)
また、このＳＡＤ変化率が決められた閾値ＴSAD を越えるマクロブロック（ＭＢ）の数をＣOVERとする。例外処理として、あるマクロブロックについて式(11)の計算時に、もしも分母（マクロブロックの前回のＳＡＤ）が０で、分子（マクロブロックのＳＡＤ）が０でない場合、閾値ＴSAD を越えるものとして処理する。
【０１０３】
最後に、もしも式(12)に示すような場合において、ＴMB＜ＣOVERなら、シーンチェンジという判定をする。
ＴMB＝（画面全体のマクロブロック数）×（判定比率）          (12)
これは、例えば、判定比率を０．５にすれば、画面全体のうち半分以上の面積が大きく変わったらシーンチェンジとすることを近似していることになる。
【０１０４】
上述のようなことから、このシーンチェンジ判定方法では、大きく変化のあった部分の面積が画面全体に対してどれくらいの比率を占めているかをシーンチェンジの判定規準にしている。これにより、画面の小さな部分だけに大きな変化が起きた場合でも、シーンチェンジと判定してしまうことを防ぐことができる。また、画面の面積でどのくらい大きく変わったらシーンチェンジとみなすかを閾値を変えることで直接的に制御できるようになる。
【０１０５】
上述したように、本発明実施例の画像符号化装置においては、圧縮符号化の構成の前段に数フレーム分のフレームメモリ４０と、入力画像データの情報量を評価する画像情報評価回路５０を有し、さらにシーンチェンジ検出回路３１によって画像間の相関等を調べてシーンチェンジを検出するようにしている。本実施例装置では、上記シーンチェンジが検出されたフレームをフレーム内符号化で圧縮できるように、充分前のフレームから量子化ステップ制御器３３で量子化器１５の量子化ステップを制御し、出力バッファ１８の残量を減らしておけるようにしている。このため、シーンチェンジ検出回路３１と圧縮符号化処理手段との間に充分な容量のフレームメモリ４０を備えている。
【０１０６】
このように、本発明実施例装置においては、画像情報評価回路５０によって符号化に先だって入力画像データが本来持っている情報量の大小を数フレーム先まで事前に見積もり、それに合わせてビット量をそれぞれの画像に配分し、そのとき、配分したビット量の総和から導かれるビットレートが一定になるようにする。また、前の画像と相関が著しく低くなる場合、すなわちシーンチェンジを検出したときには、圧縮方法をフレーム内符号化に変更している。さらに、本実施例装置では、圧縮方法に応じたデータ量の配分をとることが可能なため、シーンチェンジが検出されるような前の画像と相関が著しく低くなる画像でも画質の劣化を抑えて圧縮することができる。
【０１０７】
【発明の効果】
本発明においては、直前の誤差値（第１の誤差値）と過去の誤差値（第２の誤差値）とを比較することで、ブロック毎にシーンチェンジであるか否かを検出することができ、効率の良い画像圧縮が可能となり、全体的に画質が向上する。また、シーンチェンジ検出の為に新たに追加した回路は非常に簡単であり、コストがかからず、さらに回路は非常に簡単である割りにはシーンチェンジの検出精度が高く、効果が大きい。さらに、もしも人間には認識できるがこのシーンチェンジ検出方法で検出できないシーンチェンジがあったとしても、それは変動率が小さい場合なので、その画像に特別に多くのビットを配分する必要はなく、したがってバッファ残量を空けておく必要もないため、未検出が画質劣化の問題になり難い。
【０１０８】
ここで、第１の誤差値が所定の閾値以下のときには、過去の第２の誤差値を保存しておく（更新しない）ことで、誤差値の変動が少ない画像のシーンチェンジの検出精度を上げることができ、したがって、効率の良い画像圧縮が可能となる。また、第１の誤差値からそのブロックがシーンチェンジであると検出したときにも、過去の第２の誤差値を保存しておく（更新しない）ことで、引き続き来るシーンチェンジを検出でき、効率の良い画像圧縮が可能となる。さらに、これらのことを同時に行えば、さらに効率の良い画像圧縮が可能となる。
【０１０９】
また、本発明においては、直前の差分の絶対値和（第１の絶対値和）と過去の差分の絶対値和（第２の絶対値和）とを比較してブロック毎にシーンチェンジを検出し、さらにシーンチェンジと判定されたブロックの１画面中の割合からこの１画面がシーンチェンジであるか否かを検出しているため、シーンチェンジの検出率が向上し、また、画面内での変更箇所及び比率が前もってわかるため、ビット配分やマクロブロックタイプの判定にも利用でき、より効率の良い画像圧縮が可能となり、全体的に画質が向上する。
【０１１０】
この場合も、第１の差分の絶対値和が所定の閾値以下のときには、過去の差分の絶対値和を保存しておく（更新しない）ことで、差分の絶対値和の変動が少ない画像のシーンチェンジの検出精度を上げることができ、したがって、効率の良い画像圧縮が可能となる。また、第１の差分の絶対値和からそのブロックがシーンチェンジであると検出したときにも、過去の第２の差分の絶対値和を保存しておく（更新しない）ことで、引き続き来るシーンチェンジを検出でき、効率の良い画像圧縮が可能となる。さらに、これらのことを同時に行えば、さらに効率の良い画像圧縮が可能となる。
【図面の簡単な説明】
【図１】本発明実施例の画像符号化装置の概略構成を示すブロック回路図である。
【図２】本実施例装置の動作を説明するためのフローチャートである。
【図３】誤差値の合計値（ＳＡＤ）を使用したシーンチェンジ検出（第１のシーンチェンジ検出方法）のフローチャートである。
【図４】マクロブロック毎のシーンチェンジ判定の説明に使用する図である。
【図５】差分値（誤差）の絶対値和（ＡＤ）を使用したシーンチェンジ検出（第２のシーンチェンジ検出方法）のフローチャートである。
【図６】画像の例としてアニメーション画像にシーンチェンジが含まれるときの誤差値の合計値（ＳＡＤ）を示す図である。
【図７】画像の例としてアニメーション画像にクロスフェードが含まれるときの誤差値の合計値（ＳＡＤ）を示す図である。
【図８】画像の例として実写画像の誤差値の合計値（ＳＡＤ）を示す図である。
【図９】従来の画像符号化装置の概略構成を示すブロック回路図である。
【図１０】画像の解像度と構成について説明するための図である。
【図１１】マクロブロックとブロックについて説明するための図である。
【図１２】ルミナンスピクセルとクロミナンスピクセルの配置について説明するための図である。
【図１３】ジグザグスキャンについて説明するための図である。
【図１４】参照画像の構成について説明するための図である。
【図１５】ＧＯＰの一例について説明するための図である。
【符号の説明】
２２  フレームメモリ
１１  ブロック分割器
１２  差分器
１３，２４  スイッチ
１４  ＤＣＴ回路
１５  量子化器
１６  ジグザグスキャン回路
１７  可変長符号化回路
１８  出力バッファ
２１  動き補償器
２５  加算器
２６  逆ＤＣＴ回路
２７  逆量子化器
３１  シーンチェンジ検出回路
３２  圧縮方法選択回路
３３  量子化ステップ制御器
３４  動きベクトル発生回路
４１  動き検出器
５０  画像情報評価回路
【図１】
0003755155.tif 000007
【図２】
0003755155.tif 000008
【図３】
0003755155.tif 000009
【図４】
0003755155.tif 000010
【図５】
0003755155.tif 000011
【図６】
0003755155.tif 000012
【図７】
0003755155.tif 000013
【図８】
0003755155.tif 000014
【図９】
0003755155.tif 000015
【図１０】
0003755155.tif 000016
【図１１】
0003755155.tif 000017
【図１２】
0003755155.tif 000018
【図１３】
0003755155.tif 000019
【図１４】
0003755155.tif 000020
【図１５】
0003755155.tif 000021