(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)のうちＭＰＥＧ１では、この様な画像を圧縮するために、以下のようにすることが規定されている。
【００１６】
先ず、Ｉ０の画像を圧縮する。
【００１７】
次に、Ｐ３の画像を圧縮するのだが、Ｐ３そのものを圧縮するのではなく、Ｐ３とＩ０の画像との差分データを圧縮する。
【００１８】
その次に、Ｂ１の画像を圧縮するのだが、Ｂ１そのものを圧縮するのではなく、Ｂ１とＩ０或いは、Ｂ１とＰ３との差分データ或いはＩ０とＰ３の平均値との差分（いずれか情報の少ない方）を圧縮する。
【００１９】
その次に、Ｂ２の画像を圧縮するのだが、Ｂ２そのものを圧縮するのではなく、Ｂ２とＩ０或いは、Ｂ２とＰ３との差分データ或いはＩ０とＰ３の平均値との差分（どちらか情報の少ない方を選んで）を圧縮する。
【００２０】
次に、Ｐ６の画像を圧縮するのだが、Ｐ６そのものを圧縮するのではなく、Ｐ６とＰ３の画像との差分データを圧縮する。
【００２１】
上述したような処理を順番に並べて表すと、
0003711571.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 ）である。同じ圧縮方法でも、上記量子化ステップを大きくすれば発生ビット量は減り、小さくすれば増える。
【００５８】
この量子化ステップの値は、次のようにして制御する。
【００５９】
エンコーダには、圧縮後のデータを一定のビットレートにするために、出力に緩衝バッファ（出力バッファ１８）が設けられており、これによって画像毎のある程度のデータ発生量の差は吸収できるようになされている。
【００６０】
しかし、定められたビットレートを超えるようなデータの発生が続けば、出力バッファ１８の残量が増加し、ついにはオーバーフローを起こすことになる。逆にビットレートを下回るデータの発生が続けば出力バッファ１８の残量は減少し、最後にはアンダーフローを引き起こすことになる。
【００６１】
したがって、エンコーダは、出力バッファ１８の残量をフィードバックすることにより、前記量子化ステップ制御器１９が量子化器１５の量子化ステップをコントロールし、ここで出力バッファ１８の残量が少なくなればあまり圧縮しないように量子化ステップを小さくなるよう制御し、出力バッファ１８の残量が多くなれば圧縮率を高くするように量子化ステップを大きくするようにコントロールを行うようにしている。
【００６２】
また、前述した圧縮方法（前記フレーム内符号化やフレーム間予測符号化）によって発生する符号化データ量の範囲には、大きな差がある。
【００６３】
特にフレーム内符号化方式で圧縮をすると大量のデータが発生するため、出力バッフファ１８の空き容量が小さい場合には量子化ステップサイズを大きくしなければならず、場合によっては量子化ステップサイズを最大にしてもバッファ１８のオーバーフローを招くかもしれない。よしんばバッファ１８に収まったとしても量子化ステップが大きければフレーム内符号化の画像は後のフレーム間予測符号化の画質に影響するので、フレーム内符号化での圧縮を行う前には出力バッファ１８に十分な空き容量が必要である。
【００６４】
したがって、予め定められた順序の圧縮方法を決めておき、フレーム内符号化の前には十分な出力バッファ１８の空き容量を確保するように、量子化ステップ制御器１９は量子化ステップサイズのフィードバックコントロールを行うようにしている。
【００６５】
以上のようにして一定レートの符号化データに抑えることが可能となる。
【００６６】
【発明が解決しようとする課題】
ここで、フレーム内符号化のピクチャは、圧縮後のデータサイズが大きく、一般的にフレーム間予測符号化のピクチャが多いほうが平均のビットレートに対して画質を向上させることができる。
【００６７】
しかし、通常はランダムアスセス性を考慮して定期的にフレーム内符号化のピクチャを挿入し、これによってＧＯＰを区切ることが多い。
【００６８】
一方、上記フレーム間予測符号化のピクチャのうち特にＢピクチャでは、データサイズがかなり小さくなり、また、フレーム内符号化のピクチャ１枚に対してある程度の枚数のフレーム間予測符号化のピクチャ（特にＢピクチャ）を間に入れることにより、適度な画質を確保しつつ出力バッファを介した平均ビットレートも低く保つことができる。
【００６９】
ところが、シーンチェンジ等の前の画像との相関が極めて低い画像では、フレーム間予測符号化では効率良く圧縮できない。むしろフレーム内符号化の方が効率良く圧縮できる。したがって、そのような画像の場合はフレーム内符号化を行うべきである。
【００７０】
しかしそうするとＧＯＰを区切るためのフレーム内符号化のピクチャとは異なる画像がフレーム内符号化のピクチャとして挿入されることになり、結果としてＧＯＰ内部でフレーム間予測符号化のピクチャに対するフレーム内符号化のピクチャの比率が高くなる。したがって、出力されるデータを一定のビットレートに抑えようとすると、画質が犠牲となる。
【００７１】
また、ランダムアクセスのためにＧＯＰを分けるのにシーンの変わり目とＧＯＰの切れ目が一致しないのは不都合である。
【００７２】
さらに、あるシーケンスを所定のフレームで丁度終了するように符号化する場合、その最後の画像がＧＯＰの切れ目になることは稀であるし、最後のＧＯＰの長さも短過ぎるものもできて最後に画質を損なう虞がある。
【００７３】
このため例えば、一度符号化を試みてその結果をフィードバックしてＧＯＰの切りわけをやり直すこともできるが、これでは効率が悪く、またリアルタイムエンコーダには不向きである。
【００７４】
また、最後の画像がＩピクチャ又はＰピクチャになるとは限らないが、ＧＯＰの最後はＩピクチャ又はＰピクチャで終わらなければならないという制約がある。しかし、これもまた符号化を再度行うことは効率が悪く、全ての組合せの符号化を行うことも装置の規模を大きくする。
【００７５】
そこで、本発明は、上述のような実情に鑑みて提案されたものであり、効率の良い画像圧縮が可能で、全体的に画質を向上させることができる画像符号化装置及び画像符号化方法を提供することを目的とするものである。
【００７６】
【課題を解決するための手段】
本発明の画像符号化装置は、上述した目的を達成するために提案されたものであり、入力画像データを複数枚蓄える画像データ蓄積手段と、上記画像データ蓄積手段に蓄積された画像データのシーンチェンジを検出するシーンチェンジ検出手段と、複数枚の画像で構成される単位の先頭から上記シーンチェンジ検出手段によりシーンチェンジが検出された画像までの長さが上記単位として区切れる最短境界値以上のとき上記シーチェンジ検出手段で検出された境界で上記複数枚の画像で構成される単位として切り分け、上記単位として切り分ける長さの目標値の次の画像がＢピクチャのときは上記目標値を１加算し、上記目標値とフレーム内符号化の画像が１枚だけとしたときに適度な画質が保証される長さの値とを加算した長さまでシーンチェンジが検出されないときは上記目標値の長さで上記単位として切り分けることを決定する単位長制御手段とを有することを特徴とする。
【００７７】
ここで、上記境界の直後の画像をフレーム内符号化方法により圧縮するように選択する圧縮方法選択手段を有することが好ましい。
【００７８】
また、本発明の画像符号化方法は、入力された画像データを複数枚蓄える画像データ蓄積ステップと、蓄積された上記画像データのシーンチェンジを検出するステップと、複数枚の画像で構成される単位の先頭からシーンチェンジが検出された画像までの長さが上記単位として区切れる最短境界値以上のときのみシーチェンジが検出された境界を上記複数枚の画像で構成される単位として切り分け、上記単位として切り分ける長さの目標値の次の画像がＢピクチャのときは上記目標値を１加算し、上記目標値とフレーム内符号化の画像が１枚だけとしたときに適度な画質が保証される長さの値とを加算した長さまでシーンチェンジが検出されないときは上記目標値の長さで上記単位として切り分けることを決定するステップとを有することを特徴とする。
【００７９】
【作用】
本発明によれば、入力画像データの情報量を評価してシーンチェンジを検出し、このシーンチェンジの検出に合わせて圧縮方法としてフレーム内符号化を選択することで、前後の画像の相関が低くなるシーンチェンジ部分での圧縮効率を上げるようにしている。
【００８０】
また、本発明によれば、シーンチェンジ検出に応じて、所定単位の長さを変更することで、シーンの変わり目と所定単位の切れ目とを一致させている。
【００８１】
さらに、フレーム内符号化される画像の枚数に対するフレーム間予測符号化される画像の枚数の比率が、所定比率より小さいときには、所定単位の長さをシーンチェンジ検出出力に応じた長さにせずに、例えば延ばすようにすることで、出力されるデータを一定のビットレートに抑え、画質のレベルを維持するようにしている。
【００８２】
【実施例】
以下、図面を参照し、本発明の実施例について詳述する。
【００８３】
図１には本発明実施例の画像符号化装置の概略構成を示す。なお、この図１において、前述した図５と同じの構成については同一の指示符号を付してその説明については省略する。
【００８４】
この図１の構成において、前記図５の構成に追加された構成要素はシーンチェンジ検出回路３１とＧＯＰ長制御回路３４と圧縮方法選択回路３２であり、また、フレームメモリ４０と量子化ステップ制御器３３が変更されている。
【００８５】
すなわち、本発明実施例の画像符号化装置は、入力画像データを複数フレーム蓄える画像データ蓄積手段であるフレームメモリ４０と、上記フレームメモリ４０に蓄積された複数フレームの画像データから当該入力画像データの情報量を評価し、シーンチェンジを検出するシーンチェンジ検出回路３１と、上記シーンチェンジ検出回路３１からのシーンチェンジ検出出力の供給に基づいてフレーム内符号化による圧縮方法を選択する選択手段と、上記選択手段により選択された圧縮方法に従って上記入力画像データに所定の圧縮符号化処理を施す圧縮符号化処理手段としての差分器１２から可変長符号化回路１７まで、及びローカルデコードと動き検出器２０，動き補償器２１等を有するものである。
【００８６】
ここで、上記選択手段は、上記シーンチェンジ検出回路３１からのシーンチェンジ検出出力に応じて、複数枚の画像で構成される所定単位（ＧＯＰ）内におけるフレーム内符号化される画像の枚数とフレーム間予測符号化される画像の枚数を適応的に変更して当該ＧＯＰ長さを決定する単位長制御手段としてのＧＯＰ長制御回路３４と、当該ＧＯＰ長制御回路３４からの出力に基づいて上記ＧＯＰ内の各画像の圧縮方法を選択する圧縮方法選択回路３２とからなる。
【００８７】
また、このときの上記選択手段は、フレーム内符号化される画像の枚数に対するフレーム間予測符号化される画像の枚数の比率が、所定比率より大きいときのみ上記シーンチェンジ検出出力に応じた上記ＧＯＰ長さの決定を行う。言い換えれば、フレーム内符号化される画像の枚数に対するフレーム間予測符号化される画像の枚数の比率が、所定比率より小さいときには、上記ＧＯＰ長さをシーンチェンジ検出出力に応じた長さにせずに、例えば延ばすようにする。
【００８８】
この図１において、先ず、入力端子１から入力された入力画像データは、フレームメモリ４０に蓄えられる。このフレームメモリ４０は、図５のフレームメモリ１０とは異なり、所定数のフレームを蓄積できるものである。このときの蓄積する所定数のフレームとしては、後述するように、フレーム内符号化のピクチャがＧＯＰに１枚だけとしたとき、それに対して適度な画質が保証されるだけのフレーム間予測符号化のピクチャがＧＯＰに含まれたときの当該ＧＯＰの長さ分よりも多くなければならない。言い換えれば、フレームメモリ４０に記憶されるフレーム数は、適度な画質が保証されるだけのフレーム内符号化ピクチャ１枚に対するフレーム間予測符号化ピクチャの枚数以上、すなわち、今符号化している画像をフレーム内符号化したとしてもそれによって発生したデータ量を打ち消すだけのフレーム間予測符号化ピクチャが連続して送出できるまで、フレーム内符号化がなされないことを保証できるだけ必要である。
【００８９】
もちろん上記所定フレーム数はこれに限定されることはなく様々な条件に合わせてもっと多くしても良い。例えば、予めＧＯＰが決まってからレートコントールを行うタイプの装置の場合、後述するようにＧＯＰ長が決定して符号化が開始されるまで画像を蓄えるだけの容量のフレームメモリを必要とする。
【００９０】
上記フレームメモリ４０に蓄積された画像データは、適宜、シーンチェンジ検出回路３１に送られる。
【００９１】
ここで、シーンチェンジは、前後の画像で相関が著しく損なわれる所と言える。本実施例では、例えば動きベクトル補償後の画像との差分値の画像全体の総和を求めて、最後の値と比較することによってシーンチェンジを検出することができる。
【００９２】
例えば、このシーンチェンジの検出の際には、先ず、画像情報の評価として大別して２通りのパラメータを算出する。
【００９３】
第１のパラメータは、フレーム内符号化で圧縮を行った場合の圧縮後のデータ量を予測することが可能なように、その画像自身の情報量を示すものである。この第１のパラメータとしては、例えば、フレームメモリ４０から供給された画像データに対して、ＤＣＴ処理をブロック毎に行い、そのＤＣＴ係数の和や統計をとったものとしたり、また、それでは規模が大きくなる場合には、平均自乗誤差のブロック毎の和を求めたものとする。いずれにしても、画像の情報量を表し、圧縮後のデーター量を類推するに足るパラメータが用いられる。
【００９４】
第２のパラメータは、フレーム間予測符号化で圧縮を行った場合の圧縮後のデータ量を予測することが可能な、画像の差分情報量を示すものである。この場合のパラメータとしては、例えば、フレームメモリ４０に格納された画像と動き補償後の画像との差分値のブロック内の和を用いる。このパラメータ算出の際には、一般的な動きベクトル検出回路（動き検出器２０）で得られる動きベクトルが検出された最小誤差を利用することができる。
【００９５】
次に、ＧＯＰ長制御回路３４では、上記シーンチェンジ検出回路３１からのシーンチェンジ検出出力に基づいて、後述する図２及び図３のフローチャートで説明するようにＧＯＰ長の制御を行う。
【００９６】
このＧＯＰ長制御回路３４で決定されたＧＯＰ長の情報が圧縮方法選択回路３２に送られる。
【００９７】
ここで、フレーム内符号化方式による圧縮では少なくともＧＯＰの最初になければならない。ＧＯＰはランダムアクセスを考慮してある程度の間隔とするので、必然的にフレーム内符号化のピクチャはある程度定期的に発生するし、シーンチェンジ等によっても発生する。したがって、当該圧縮方法選択回路３２には、上記ＧＯＰ長制御回路３４からのＧＯＰ長を示す情報と共に、上記ＧＯＰ長制御回路３４を介した画像のカウントとシーンチェンジ検出回路３１の出力が加えられるようになっている。
【００９８】
当該圧縮方法選択回路３２は、上記シーンチェンジ検出回路３１からの出力に基づいて、フレーム内符号化／フレーム間予測符号化（Ｐ，Ｂピクチャ）のいずれの圧縮方式で圧縮を行うのかを選択すると共に、上記ＧＯＰ長を示す情報に基づいてフレーム内符号化のピクチャの挿入を行う。
【００９９】
また、量子化ステップ制御器３３は、可変長符号化回路１７からの符号量を示す情報と、上記圧縮方法選択回路３２で選択した圧縮方式を示す情報とに基づいて、量子化器１５の量子化ステップを制御する。
【０１００】
次に本実施例の構成における処理の流れを、図２と図３のフローチャートに沿って説明する。
【０１０１】
ここで、図２と図３のフローチャートの説明に先立ち、これらフローチャートで述べる定数及び変数を以下のように定める。
【０１０２】
通常のＧＯＰの長さを定数(DefaultLen)とし、
フレーム内符号化のピクチャがＧＯＰに１枚だけとしたときにそれに対して適度な画質が保証されるだけのフレーム間予測符号化のピクチャがＧＯＰに含まれたときの当該ＧＯＰの長さを変数(MinLen)、
ＧＯＰを区切れる最短の境界を変数(MinGOP)、
ランダムアクセス保証のためのＧＯＰの最長値を変数(MaxLen)、
次のＧＯＰの区切りの目標値を変数(TargetLen) 、
ＧＯＰ先頭からの長さを変数(CurLen)、
符号化順序でのピクチャ番号を変数(PicNo) 、
ｎ番目のＧＯＰの先頭のピクチャ番号を保持する変数(GOPbegin[n]) 、
ｎ番目のＧＯＰの末尾のピクチャ番号を保持する変数(GOPend[n]) とする。
【０１０３】
また、フローチャートには示していないが、下記の条件を前提とする。
【０１０４】
先ず、前段で入力画像を順次フレームメモリ４０に蓄え、シーンチェンジを検出する。当該シーンチェンジの検出の目的は、前述のようにフレーム間予測符号化で効率良く圧縮できない画像を検出することであるため、例えば動き補償後の差分の結果が前と比べて急激に大きくなった場合を検出することでできる。
【０１０５】
また、適応的にＧＯＰを区切るためにフレーム内符号化のピクチャを初めは設定せずＭに応じて全てＰピクチャ，Ｂピクチャとして動き検出をする。ＧＯＰ決定時には符号化順序に並べ換えられているとする。
【０１０６】
以下、図２のフローチャートから説明する。
【０１０７】
ステップＳ１５１では、最初に各変数をリセットする。すなわち、
ｎ          ＝０
CurLen      ＝１
PicNo       ＝０
GOPbegin[n] ＝PicNo
TargetLen   ＝DefaultLen
MinGOP      ＝MinLen
のようにリセットする。
【０１０８】
次のステップＳ１５２では、ＧＯＰにおいて最初のＰピクチャか否かの判定を行う。このステップＳ１５２で最初のＰピクチャでないと判定した場合にはステップＳ１５７に進み、ここでピクチャタイプをＰピクチャからＩピクチャに変更する。また、ステップＳ１５２で最初のＰピクチャであると判定した場合にはステップＳ１５３に進む。
【０１０９】
当該ステップＳ１５３では、現在のピクチャ(Current picture) がシーケンス最後の画像かどうかを判定する。このステップＳ１５３で現在のピクチャがシーケンスの最後の画像であると判定した場合には、ステップＳ１５４に進み、ここで、その画像をＧＯＰ最後とする。一方、ステップＳ１５３で最後の画像でないと判定した場合にはステップＳ１５８に進む。
【０１１０】
上記ステップＳ１５４の次のステップＳ１５５では、ディスプレイ表示順(Display order) でシーケンス(Sequence)の最後がＰピクチャかどうかを判定する。当該ステップＳ１５５で最後のＰピクチャでないと判定した場合（Ｂピクチャであると判定した場合）には、ステップＳ１５６に進む。当該ステップＳ１５６では、Ｂピクチャでシーケンスを終えることはできないので、Ｐピクチャになるように変更する。また、ステップＳ１５５で最後がＰピクチャであると判定した場合には処理を終了する。
【０１１１】
また、上記ステップＳ１５３で最後の画像でないと判定した場合に進むステップＳ１５８では、シーンチェンジされた(SceneChange) か否かを判定する。当該ステップＳ１５８において、シーンチェンジと判定した場合にはステップＳ１５９に進み、シーンチェンジでないと判定した場合にはステップＳ１６４に進む。
【０１１２】
上記ステップＳ１５８でシーンチェンジと判定した場合のステップＳ１５９では、上記変数(CurLen)と変数(MaxLen)とを比較し、 CurLen ＜MaxLenと判定した場合にはステップＳ１６０に進み、それ以外であると判定した場合にはステップＳ１６３に進む。
【０１１３】
上記ステップＳ１６０では変数(CurLen)と変数(MinGOP)とを比較し、CurLen＜ MinGOP と判定した場合にはステップＳ１６１に進み、それ以外であると判定した場合にはステップＳ１６３に進む。
【０１１４】
ステップＳ１６１では、ＧＯＰが短く、Ｉピクチャで発生するデータ量を分散できないため、シーンチェンジ後の最初のＰピクチャをフレーム内符号化のピクチャとし、新たにシーンチェンジのために増えたＩピクチャの分も考慮して、
MinGOP    += MinLen
TargetLen += MinLen
とする。その後はステップＳ１６２に進む。
【０１１５】
また、ステップＳ１６３では、変数(CurLen)と変数(MaxLen)との比較結果が CurLen ≧ MaxLen なら、ＧＯＰが長くなり過ぎるのを避けるため、シーンチェンジを機にＧＯＰを切り分ける。その後はステップＳ１６２に進む。
【０１１６】
一方、ステップＳ１５８で、シーンチェンジでないと判定した場合のステップＳ１６４では、変数(CurLen)と変数(TargetLen) とを比較する。このステップＳ１６４でCurLen＝TargetLen と判定した場合にはステップＳ１６６に進む。
【０１１７】
このステップＳ１６６では、次の画像のピクチャタイプがＢピクチャかどうかを判定し、Ｂピクチャであると判定した場合にはステップＳ１６７に進む。このステップＳ１６７では、Ｂピクチャでシーケンスを終わることはできないので、目標のＧＯＰの長さを１伸ばす。その後はステップＳ１６２に進む。
【０１１８】
また、ステップＳ１６４でCurLen≠TargetLen と判定した場合にはステップＳ１６５に進む。このステップＳ１６５では、変数(CurLen)と、変数(TargetLen) ＋変数(MinLen)とを比較する。当該ステップＳ１６５において、 CurLen ≦ TargetLen + MinLen と判定した場合にはステップＳ１６８に進み、 CurLen ＞ TargetLen + MinLen と判定した場合にはステップＳ１６２に進む。
【０１１９】
当該ステップＳ１６８では、目標のＧＯＰの長さでＧＯＰを区切っても次のＧＯＰの先頭のＩピクチャで発生するデータ量を分散するに足る区間先までシーンチェンジが存在しないので、変数(TargetLen) でＧＯＰを区切る。このステップＳ１６８の後は、ステップＳ１６２に進む。
【０１２０】
ステップＳ１６２では、変数(CurLen),(PicNo)をカウントアップし、ステップＳ１５２へ戻る。
【０１２１】
次に、図３のフローチャートでは、ステップＳ１６９において、ＧＯＰの長さを指定の長さに決め、次のＧＯＰ長決定のため変数を初期化する。ステップＳ１７０では、ディスプレイ表示順(Display order) でＧＯＰの最後がＰピクチャかどうかを判定する。当該ステップＳ１７０で最後のＰピクチャでないと判定した場合（Ｂピクチャであると判定した場合）には、ステップＳ１７１に進む。当該ステップＳ１７１では、ＢピクチャでＧＯＰを終えることはできないので、Ｐピクチャになるように変更する。また、ステップＳ１７０で最後がＰピクチャであると判定した場合には処理を終了する。
【０１２２】
なお、上述した図２，図３のフローチャートにおいて、ＧＯＰの末尾のピクチャタイプを変更する方法としては、以下のようなものを挙げることができる。
【０１２３】
すなわち、ＧＯＰの最後はＩピクチャかＰピクチャでなければならないが、例えばシーンチェンジでＧＯＰを区切る場合、Ｍ＝２以上のシーケンスでは前のＧＯＰが必ずしもそうなるとは限らない。そこで、上述のように、ＧＯＰの最後がＢピクチャで終わっていた場合、その最後のＢピクチャをＰピクチャに変えるようにしている。
【０１２４】
この例として、例えば、ビットストリームの順番(Bitstream order) が図４の（ｃ）のようになっており、ディスプレイ表示順(Display order) が図４の（ａ）のようになっているとして、上記図４の（ａ）のディスプレイ表示順の例えばＢ１３とＰ１４の間にシーンチェンジが発生しているような場合について説明する。この場合、図４の（ａ）のシーンチェンジ直前のＢ１３を図４の（ｂ）に示すようにＰピクチャ（例えばＰ１３）に変更し、また、図４の（ａ）のシーンチェンジ直後のＰ１４を図４の（ｂ）に示すようにＩピクチャ（例えばＩ１４）に変更する。
【０１２５】
ここで、リアルタイムエンコーダの場合は符号化を再度行うことは困難であるので、本実施例では、上記図４の（ａ）及び（ｂ）に示すようにＢ１３をＰ１３に変更する際に、Ｐ１１からのフォワードベクトル(forward vector)のみを用いてＰピクチャ（Ｐ１３）として符号化する。またこのとき、Ｂ１２については、Ｐ１１からのフォワードベクトル(forward vector)のみを用いながらＢピクチャ（Ｂ１１）として符号化する。
【０１２６】
上述したように、本発明実施例の画像符号化装置においては、入力画像データの情報量を評価してシーンチェンジを検出し、このシーンチェンジの検出に合わせて圧縮方法としてフレーム内符号化を選択することで、前後の画像の相関が低くなるシーンチェンジ部分での圧縮効率を上げることができる。
【０１２７】
また、本実施例装置においては、シーンチェンジ検出に応じて、ＧＯＰ長さを変更することで、シーンの変わり目とＧＯＰの切れ目とを一致させることができる。
【０１２８】
さらに、フレーム内符号化される画像の枚数に対するフレーム間予測符号化される画像の枚数の比率が、所定比率より小さいときには、ＧＯＰ長さをシーンチェンジ検出出力に応じた長さにせずに、例えば延ばすようにすることで、出力されるデータを一定のビットレートに抑え、画質のレベルを維持することが可能となっている。
【０１２９】
【発明の効果】
本発明の画像符号化装置においては、入力画像データの情報量を評価してシーンチェンジを検出し、このシーンチェンジの検出に合わせて圧縮方法としてフレーム内符号化を選択することで、前後の画像の相関が低くなるシーンチェンジ部分での圧縮効率を上げることができ、したがって、効率の良い画像圧縮が可能で、全体的に画質を向上させることができる。
【０１３０】
また、本発明においては、シーンチェンジ検出に応じて、所定単位の長さを変更することで、シーンの変わり目と所定単位の切れ目とを一致させることが可能となる。
【０１３１】
また、本発明においては、フレーム内符号化される画像の枚数に対するフレーム間予測符号化される画像の枚数の比率が、所定比率より小さいときには、所定単位の長さをシーンチェンジ検出出力に応じた長さにせずに、例えば延ばすようにすることで、出力されるデータを一定のビットレートに抑えることができ、したがって、出力されるデータを一定のビットレートに抑えることができると共に、画質を犠牲にしなくても済む。
【図面の簡単な説明】
【図１】本発明実施例の画像符号化装置の概略構成を示すブロック回路図である。
【図２】ＧＯＰ決定のフローチャートである。
【図３】決定されたＧＯＰに応じたピクチャタイプ決定のフローチャートである。
【図４】ＧＯＰ末尾のピクチャタイプの変更例を説明するための図である。
【図５】従来の画像符号化装置の概略構成を示すブロック回路図である。
【図６】画像の解像度と構成について説明するための図である。
【図７】マクロブロックとブロックについて説明するための図である。
【図８】ジグザグスキャンについて説明するための図である。
【図９】ＧＯＰの一例について説明するための図である。
【符号の説明】
１１  ブロック分割器
１２  差分器
１３，２４  スイッチ
１４  ＤＣＴ回路
１５  量子化器
１６  ジグザグスキャン回路
１７  可変長符号化回路
１８  出力バッファ
２０  動き検出器
２１  動き補償器
２５  加算器
２６  逆ＤＣＴ回路
２７  逆量子化器
３１  シーンチェンジ検出回路
３２  圧縮方法選択回路
３３  量子化ステップ制御器
３４  ＧＯＰ長制御回路
４０  フレームメモリ
【図１】
0003711571.tif 000003
【図２】
0003711571.tif 000004
【図３】
0003711571.tif 000005
【図４】
0003711571.tif 000006
【図５】
0003711571.tif 000007
【図６】
0003711571.tif 000008
【図７】
0003711571.tif 000009
【図８】
0003711571.tif 000010
【図９】
0003711571.tif 000011