JP4035747B2 - 符号化装置および符号化方法 - Google Patents
符号化装置および符号化方法 Download PDFInfo
- Publication number
- JP4035747B2 JP4035747B2 JP34819998A JP34819998A JP4035747B2 JP 4035747 B2 JP4035747 B2 JP 4035747B2 JP 34819998 A JP34819998 A JP 34819998A JP 34819998 A JP34819998 A JP 34819998A JP 4035747 B2 JP4035747 B2 JP 4035747B2
- Authority
- JP
- Japan
- Prior art keywords
- picture
- bit
- encoding
- rate
- amount
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/434—Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
- H04N21/4347—Demultiplexing of several video streams
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/236—Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
- H04N21/2365—Multiplexing of several video streams
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/236—Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
- H04N21/2365—Multiplexing of several video streams
- H04N21/23655—Statistical multiplexing, e.g. by controlling the encoder to alter its bitrate to optimize the bandwidth utilization
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Description
【発明の属する技術分野】
本発明は、符号化装置および符号化方法に関し、特に、GOPの途中でビットレートを変更できるようにし、もって、伝送路の容量を有効に利用することができるようにした、符号化装置および符号化方法に関する。
【0002】
【従来の技術】
最近、画像データ等をデジタルデータとして送受信するデジタル放送が注目されている。デジタル放送の利点は、アナログ放送に比べて、同じ伝送路においてより多くの番組データ(以下、プログラムという)を伝送することが可能であるということである。これは画像データを圧縮して伝送できるということによるところが大きい。画像データの圧縮の方法としては、例えばMPEG(Moving Picture Experts Group)規格で採用されている双方向予測符号化方式が用いられることが多い。この双方向予測符号化方式では、フレーム内符号化、フレーム間順方向予測符号化および双方向予測符号化の3つのタイプの符号化が行われ、各符号化タイプによる画像は、それぞれIピクチャ(intra coded picture)、Pピクチャ(predictive coded picture)またはBピクチャ(bidirectionally predictive coded picture)と呼ばれる。
【0003】
デジタル放送における画像の圧縮符号化では、圧縮符号化後のデータ量(ビット量)を、伝送路の伝送容量以下に抑えつつ、画質を高品質に保つ必要がある。
【0004】
所定の伝送容量の伝送路に対して、より多くの複数のプログラムを伝送する方法として、「統計多重」という手法がある。統計多重は、各プログラムの伝送レートを動的に変化させることにより、より多くのプログラムを伝送する手法である。この統計多重では、例えば、伝送レートを減らしても画質の劣化が目立たないプログラムについては伝送レートを減らすことにより、より多くのプログラムの伝送を可能にする。
【0005】
ここで、図1および図2を参照して、統計多重について更に説明する。図1は、従来の固定レートにより多重化した場合の各プログラムに対する割当符号レートの一例を表したものであり、縦軸が各プログラムに対する割当符号レートを表し、横軸が時刻を表している。図1に示したように、例えば天気予報、ニュースおよびドラマといった多重化される各プログラムの割当符号レートは、初期値として割り当てられた符号レートのまま一定であり、時間の経過によって変動していない。各プログラムに対して初期値として割り当てられる符号レートは、各プログラムの画質の劣化が最も目立つ部分(時刻)における画質の劣化が許容範囲に収まるように割り当てられている。従って、画質の劣化が目立つ部分以外の部分には、必要以上の符号レートが割り当てられていることになる。
【0006】
図2は、統計多重の手法を用いて、各プログラムに対する割当符号レートを動的に変化させて多重化した場合の各プログラムに対する割当符号レートの一例を表したものであり、縦軸が各プログラムに対する割当符号レートを表し、横軸が時刻を表している。統計多重は、各プログラムの画質の劣化が目立つ部分(時刻)が同一時間帯に重なることが稀であることを利用したものである。すなわち、あるプログラムでは画質劣化が目立つ部分であるとき、他のプログラムは符号レートを落としても画質劣化が目立たない場合が多いので、他のプログラムの符号レートを落として、画質劣化が目立つプログラムに対して符号レートを多く割り当てることができる。図2に示した例では、時刻t1において、ドラマ(1)の画像は画質劣化が目立つ部分であるが、ニュースおよびドラマ(2)の画像は画質劣化が目立たない部分であるので、ニュースおよびドラマ(2)の画像の符号レートが落とされ、ドラマ(1)の画像に対してその分だけ符号レートが多く割り当てられている。このようにして、統計多重を用いることにより、通常よりも多くのプログラムを伝送することができる。
【0007】
【発明が解決しようとする課題】
しかし、ここでGOP(Group of Picture)の位相の問題がある。通常、エンコーダは、TM5(Test Model Editing Committe:"Test Model5";ISO/IEC JTC/SC292/WG11/NO400(Apr.1993))に代表されるように、画像を、GOP単位でレートコントロールしてエンコードする。すなわち、ビットレートは、GOPの途中では変更されない。その結果、各プログラムのGOPの位相があっている場合はよい(一般的には、このような場合はほとんどない)が、GOPの位相にずれがある場合(一般的にはこの場合がほとんどである)、GOPの先頭でしかプログラムのビットレートが変更されないので、一度に全てのプログラムのビットレートを変更することができず、図3に示すように、デッドスペース(いずれのプログラムにもビットレートが割り当てられていない部分)が生じて、伝送容量を全て有効に使用することができないという課題があった。
【0008】
そこで、GOP単位でレートコントロールをせず、フレーム単位で個々に目標符号量を決めてエンコードする手法も考えられる。しかしながら、デジタル放送の場合、受信機(デコーダ)のVBV(Video Buffering Verifier)バッファをオーバーフローまたはアンダーフローさせないように発生符号量を厳しく制御する必要があるが、このように、フレーム単位で目標符号量を決定するようにすると、VBVバッファがオーバーフローまたはアンダーフローしないように制御することが困難になる。
【0009】
本発明はこのような状況に鑑みてなされたもので、GOPの途中でもビットレートを変更できるようにし、もって、伝送路の容量を有効に利用することができるようにすることを目的とする。
【0014】
【課題を解決するための手段】
請求項1に記載の符号化装置は、GOP の途中において指定ビットレートが第1のビットレートから第2のビットレートに変更された場合に、 GOP 内における未符号化ピクチャに対して割り当てられるビット量の変化軌跡が、その GOP の先頭ピクチャから第2のビットレートで各ピクチャを符号化した際の軌跡になるように、未符号化ピクチャのビット量を補正し、補正された未符号化ピクチャのビット量に基づいて、符号化対象ピクチャに対して割り当てられる目標ビット量を演算する制御手段と、制御手段によって演算された目標ビット量に従って、符号化対象ピクチャを符号化する符号化手段とを備えることを特徴とする。
【0015】
この符号化装置においては、GOPの途中において指定ビットレートが第1のビットレートから第2のビットレートに変更された場合、未符号化ピクチャのビット量の変化軌跡が、GOPの先頭ピクチャから第2のビットレートで各ピクチャを符号化していた時の軌跡になるように、未符号化ピクチャのビット量が補正され、補正された未符号化ピクチャのビット量に基づいて、符号化対象ピクチャに対して割り当てられる目標ビット量が演算される。
【0028】
請求項8に記載の符号化方法は、GOP の途中において指定ビットレートが第1のビットレートから第2のビットレートに変更された場合に、 GOP 内における未符号化ピクチャに対して割り当てられるビット量の変化軌跡が、その GOP の先頭ピクチャから第2のビットレートで各ピクチャを符号化した際の軌跡になるように、未符号化ピクチャのビット量を補正し、補正された未符号化ピクチャのビット量に基づいて、符号化対象ピクチャに対して割り当てられる目標ビット量を演算する制御工程と、制御工程によって演算された目標ビット量に従って、符号化対象ピクチャを符号化する符号化工程とを含むことを特徴とする。
【0029】
この符号化方法においては、GOPの途中において指定ビットレートが第1のビットレートから第2のビットレートに変更された場合、未符号化ピクチャのビット量の変化軌跡が、GOPの先頭ピクチャから第2のビットレートで各ピクチャを符号化していた時の軌跡になるように、未符号化ピクチャのビット量が補正され、補正された未符号化ピクチャのビット量に基づいて、符号化対象ピクチャに対して割り当てられる目標ビット量が演算される。
【0038】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。図4は、本発明を適用した画像多重化システム1の構成例を表す。画像多重化システム1は、それぞれ、本発明における番組データとしてのプログラムPi(i=1,2,・・・,n)を入力し、圧縮符号化する複数の画像符号化装置2−iと、各画像符号化装置2−iに対してフィードバック型のビットレート制御を行うコントローラ3と、各画像符号化装置2−iよりそれぞれ出力される圧縮符号化データstiを多重化して、伝送路に対して画像データSmを出力する多重化装置4とを備えている。画像符号化装置2−iは、プログラムPiの複雑さ(グローバルコンプレクシティ)Ciを求め、コントローラ3に出力している。コントローラ3は、各画像符号化装置2−iからのグローバルコンプレクシティCiに基づいて、統計多重により、各画像符号化装置2−iのビットレートbit_rate#iを決定し、各画像符号化装置2−iに出力している。
【0039】
画像多重化システム1は、伝送システムとして用いられる場合には、多重化装置4より出力される画像データSmを、伝送用データとして伝送路に対して出力する。また、画像多重化システム1は、放送システムとして用いられる場合には、多重化装置4より出力される画像データSmを、放送用データとして、放送用の伝送路を介して受信装置側に送信する。
【0040】
図5は、図4における画像符号化装置2−1(図示は省略するが、画像符号化装置2−2乃至2−nも同様に構成される)の詳細な構成を示すブロック図である。この図に示したように、画像符号化装置2−1は、プログラムP1を入力し、符号化する順番に従ってピクチャ(Iピクチャ,Pピクチャ,Bピクチャ)の順番を並べ替える画像並べ替え回路11と、この画像並べ替え回路11の出力データを入力し、フレーム構造かフィールド構造かを判別し、判別結果に応じた走査変換を行うとともに、16×16画素のマクロブロック化を行う走査変換マクロブロック化回路12を備える。動き検出回路21は、走査変換マクロブロック化回路12の出力データに基づいて、圧縮符号化の対象となるピクチャにおいて注目マクロブロックを探すとともに、参照されるピクチャにおいて、注目マクロブロックとの間の画素値の差分の絶対値和あるいは自乗和が最小となるマクロブロック(予測マクロブロック)を探して、それらから、動きベクトルMVを検出して動き補償回路22に送る。
【0041】
減算回路13は、走査変換マクロブロック化回路12の出力から、動き補償回路22が動き検出回路21からの動きベクトルMVに基づいて生成した予測画像データ(予測マクロブロック)を減算し、DCT(Discrete Cosine Transform)回路14に出力する。DCT回路14は、入力されたデータをDCT変換し、量子化回路15に出力する。量子化回路15は、DCT回路14より入力されたデータを、レートコントローラ23の量子化スケールコード決定回路33が出力する量子化スケールコードQ1に基づいて量子化し、可変長符号化回路16と、逆量子化回路18に出力している。
【0042】
可変長符号化回路16は、量子化回路15より入力されたデータを可変長符号化し、バッファメモリ17を介して多重化装置4に出力する。バッファメモリ17の使用可能な容量は、コントローラ24により制御される。
【0043】
逆量子化回路18は、量子化回路15より供給されたデータを逆量子化し、逆DCT回路19に出力する。逆DCT回路19は、逆量子化回路18より供給されたデータを逆DCT変換し、加算回路20に出力している。加算回路20は、動き補償回路22より出力された予測画像データと、逆DCT回路19より出力されたデータとを加算し、加算して得られたもとの画像データ(局部的に復号された画像データ)を動き補償回路22に出力し、内蔵するフレームメモリに記憶させる。
【0044】
レートコントローラ23は、図4のコントローラ3からの信号bit_rate#1と、バッファメモリ17からの発生符号量S1に基づいて量子化スケールコードQ1を生成し、量子化回路15に出力している。このため、レートコントローラ23の複雑さ計算回路31は、次式に従ってグローバルコンプレクシティ(global comlpexity)C1(次式では、Xi,Xp,Xbとして表されている)を算出する。このグローバルコンプレクシティC1は、画像の絵柄の複雑さを示すデータであり、次式に示すように、圧縮映像データの発生符号量(データ量)S1(バッファメモリ17より供給される)と、量子化スケールコードQ1(量子化スケールコード決定回路33より供給される)とを乗算して得られる値である。
Xi=Si×Qi ・・・(1)
Xp=Sp×Qp ・・・(2)
Xb=Sb×Qb ・・・(3)
【0045】
なお、上記式において、Xi,Xp,Xbは、それぞれ、Iピクチャ、Pピクチャ、またはBピクチャのグローバルコンプレクシティC1を表し、Si,Sp,Sbは、それぞれIピクチャ、Pピクチャ、またはBピクチャを可変長符号化回路16で符号化した際の発生符号量S1を表し、Qi,Qp,Qbは、それぞれIピクチャ、Pピクチャ、またはBピクチャを生成する際の量子化スケールコードQ1を表す。
【0046】
このグローバルコンプレクシティC1は、図17と図18を参照して後述するフィードフォワード型のビットレート制御システムにおいて用いられる符号化難易度D1とは必ずしも一致しないが、量子化スケールコードQ1が極端に大きかったり小さかったりしない限り、符号化難易度D1とほぼ一致する。
【0047】
複雑さ計算回路31は、以上のようにして、式(1)乃至式(3)に基づいて演算により求めたコンプレクシティC1(Xi,Xp,Xb)を、図4のコントローラ3に出力し、また、発生符号量S1(Si,Sp,Sb)とともに、目標ビット量設定回路32に出力する。目標ビット量設定回路32は、コントローラ3より供給される信号bit_rate#1、複雑さ計算回路31より供給されるコンプレクシティC1(Xi,Xp,Xb)、並びに発生符号量S1(Si,Sp,Sb)に基づいて、目標ビット量T1を設定し、設定した目標ビット量T1を量子化スケールコード決定回路33に出力する。量子化スケールコード決定回路33は、入力された目標ビット量T1に対応して量子化スケールコードQ1を決定し、量子化回路15と複雑さ計算回路31に出力している。
【0048】
次に、図4に示した画像多重化システム1の動作について説明する。この画像多重化システム1では、各プログラムPiは、それぞれ、各画像符号化装置2−iによって符号化される。画像符号化装置2−iは、プログラムPiについて、既に符号化した画像の複雑さを表すグローバルコンプレクシティCiを演算し、コントローラ3に出力する。コントローラ3は、統計多重の手法を用いて、入力された各グローバルコンプレクシティCiに基づいて、各プログラムPiに対する単位時間当たりの目標発生符号量である目標符号レートとしての目標ビットレートbit_rate#iを決定し、各画像符号化装置2−iに対して出力する。画像符号化装置2−iは、入力された目標ビットレートbit_rate#iに基づいて、プログラムPiを圧縮符号化し、圧縮符号化データstiを多重化装置4に出力する。多重化装置4は、入力された各圧縮符号化データstiを多重化して、出力用の画像データSmを生成し、伝送路に対して出力する。
【0049】
次に、図5に示した画像符号化装置2−1の基本的な動作について説明する。まず、プログラムP1は、画像符号化装置2−1の画像並べ替え回路11によって、符号化する順番に従ってピクチャ(Iピクチャ,Pピクチャ,Bピクチャ)の順番が並べ替えられる。次に、走査変換マクロブロック化回路12は、そのピクチャがフレーム構造かフィールド構造かを判別し、判別結果に応じた走査変換およびマクロブロック化を行う。走査変換マクロブロック化回路12の出力データは、動き検出回路21と減算回路13に送られる。
【0050】
入力されたピクチャがIピクチャの場合には、減算回路13において予測画像データとの差分をとることなく、走査変換マクロブロック化回路12の出力データがそのままDCT回路14に入力され、DCT係数に変換される。DCT係数は、量子化スケールコード決定回路33で決定された量子化スケールコードQ1に基づいて量子化回路15によって量子化された後、可変長符号化回路16によって可変長符号化される。可変長符号化回路16の出力データは、バッファメモリ17によって一旦保持された後、ビットストリームからなる圧縮符号化データst1として、多重化装置4に出力される。
【0051】
また、逆量子化回路18は量子化回路15の出力データを逆量子化する。逆DCT回路19は逆量子化回路18の出力データに対して逆DCTを行い、加算回路20を介して動き補償回路22に入力して保持させる。
【0052】
入力されたピクチャがPピクチャの場合には、動き補償回路22によって、保持している過去のIピクチャまたはPピクチャに対応する画像データと、動き検出回路21からの動きベクトルMVとに基づいて予測画像データが生成され、予測画像データが減算回路13と加算回路20に出力される。減算回路13は、走査変換マクロブロック化回路12の出力データと動き補償回路22からの予測画像データとの差分を演算する。この差分データは、DCT回路14によってDCT係数に変換され、量子化回路15によって量子化される。可変長符号化回路16は、量子化回路15の出力データを可変長符号化し、バッファメモリ17を介して、圧縮符号化データSt1として、多重化装置4に出力する。
【0053】
また、逆量子化回路18は、量子化回路15の出力データを逆量子化する。逆DCT回路19は、逆量子化回路18の出力データに対して逆DCTを行う。加算回路20は、逆DCT回路19の出力データと、動き補償回路22が出力する予測画像データとを加算し、動き補償回路22に入力して保持させる。
【0054】
入力されたピクチャがBピクチャの場合には、動き補償回路22によって、保持されている過去および未来のIピクチャまたはPピクチャに対応する2つの画像データと、動き検出回路21からの2つの動きベクトルMVとに基づいて、予測画像データが生成され、減算回路13と加算回路20に出力される。減算回路13は、走査変換マクロブロック化回路12の出力データと動き補償回路22からの予測画像データとの差分を演算する。この差分データは、DCT回路14によってDCT係数に変換され、量子化回路15によって量子化される。可変長符号化回路16は、量子化回路15の出力データを可変長符号化し、バッファメモリ17を介して圧縮符号化データst1として、多重化装置4に出力する。なお、Bピクチャは動き補償回路22に保持されない。
【0055】
次に、図6と図7のフローチャートを参照して、レートコントローラ23とコントローラ24によるレートコントロールの動作について説明する。なお、以下の説明においては、各プログラムPiに対応する発生符号量Si、グローバルコンプレクシティCi、目標ビット量Ti、量子化スケールコードQi、圧縮符号化データsti、ビットレートbit_rate#iなどの添字iは、記号が複雑になるので、それらを個々に区別する必要がある場合を除き、基本的に省略する。
【0056】
ステップS1において、レートコントローラ23の目標ビット量設定回路32は、次の式(4)乃至式(6)に基づいて、GOP(通常、1GOPは15フレームのピクチャで構成される)のピクチャ(j)に対する目標符号量Ti(j),Tp(j),Tb(j)をそれぞれ演算する。
【0057】
【数1】
【0058】
上記式において、R(j)は、GOP内のまだ符号化していない(これから符号化する)ピクチャの符号量(ビット量)を表し、Np,Nbは、GOP内でまだ符号化されていないPピクチャまたはBピクチャの枚数を表し、Xi,Xp,Xbは、それぞれIピクチャ、Pピクチャ、またはBピクチャのグローバルコンプレクシティCを表している。KpとKbは、Iピクチャの量子化スケールコードを基準としたPピクチャとBピクチャの量子化スケールコードの比率を表し、次式で示す値とされる。$
Kp=1.0 ・・・(7)
Kb=1.4 ・・・(8)
【0059】
すなわち、Pピクチャの量子化スケールコードは、Iピクチャの量子化スケールコードの1倍とされるが、Bピクチャの量子化スケールコードは、IピクチャとPピクチャの量子化スケールコードの常に1.4倍とされる。これにより、Bピクチャが、IピクチャまたはPピクチャに比較して、多少粗めに符号化されるので、Bピクチャで節約できる符号量をIピクチャとPピクチャの符号量に加えることができ、IピクチャとPピクチャのS/Nが改善されるとともに、それを参照するBピクチャのS/Nも改善されることとなり、総合的にS/Nが改善される。
【0060】
なお、コンプレクシティXi,Xp,Xbの初期値は、目標レートであるbit_rate(j)(ビット/秒)に基づいて次式で示す値に設定される。
【0061】
Xi=160×bit_rate(j)/115 ・・・(9)
Xp=60×bit_rate(j)/115 ・・・(10)
Xb=42×bit_rate(j)/115 ・・・(11)
【0062】
bit_rate(j)は、コントローラ3よりピクチャ(j)に対して指定されるビットレートを表す。pic_rateは、ピクチャレートを表し、例えば、NTSC方式の場合、30(フレーム/秒)となる。さらに、max{A,B}は、AとBのうち、大きい方を選択する関数を意味する。
【0063】
R(j),Np,Nb,Kp,Kb,pic_rateの各値は、それぞれ各画像符号化装置2−i毎に設けられているコントローラ24(図5)から供給される値である。Xi,Xp,Xbは、上述したように、複雑さ計算回路31が式(1)乃至式(3)に従って演算した値である。
【0064】
式(4)乃至(6)では、未符号化ピクチャ全体の発生する推定符号量が割当対象ピクチャの何枚分の符号量に相当するかが求められる。
【0065】
例えば、式(4)の第1引数の分母の第2項のNpXp/XiKpは、GOP内のNp枚の未符号化Pピクチャが、Iピクチャ何枚分の符号量に相当するかを表し、第3項のNbXb/XiKbは、GOP内のNb枚の未符号化Bピクチャが、Iピクチャ何枚分の符号量に相当するかを表している。第1項の1は、GOP内のIピクチャの数を表している(1GOP内のIピクチャの数は、常に1とされている)ので、結局、式(4)の第1引数は、GOP内の残りの(N−j+1)枚のピクチャが、全てIピクチャであると仮定した場合における1ピクチャ当たりの符号量を表している。
【0066】
同様に、式(5)の第1引数の分母の第2項のNbKpXb/KbXpは、GOP内のNb枚の未符号化Bピクチャが、Pピクチャ何枚分の符号量に相当するかを表している。従って、式(5)の第1の引数は、GOP内の残りの(N−j+1)枚のピクチャが、全てPピクチャであると仮定した場合における1ピクチャ当たりの符号量を表している。
【0067】
さらに、式(6)の第1引数の分母の第2項のNpKbXp/KpXbは、GOP内のNp枚の未符号化Pピクチャが、Bピクチャ何枚分の符号量に相当するかを表しており、第1の引数は、GOP内の残りの(N−j+1)枚のピクチャが、全てBピクチャであると仮定した場合における1ピクチャ当たりの符号量を表している。
【0068】
基本的には、式(4)乃至式(6)の第1引数の値に、Iピクチャ、Pピクチャ、またはBピクチャの目標符号量Ti(j),Tp(j),Tb(j)(以下、Iピクチャ、Pピクチャ、またはBピクチャの区別をする必要がないときは、単に、T(j)とも記述する)が決定されるが、演算により求めたその値があまりにも小さい場合には、画像復号装置のVBVバッファがオーバーフローする恐れがあるので、式(4)乃至式(6)の第2引数に規定される値bit_rate(j)/(8×pic_rate)が、目標符号量T(j)として選択される。
【0069】
ピクチャ(j)がエンコードされる直前のVBVバッファの占有量をB*(j)とすると、このピクチャ(j)に対し、目標符号量T(j)と同じ値だけのビット量が、実際に符号化により発生したとすると、次のピクチャ(j+1)のエンコード直前のVBVバッファの占有量B*(j+1)は、次の式で表される。ステップS2において、コントローラ24は、次式に従って、この占有量B*(j+1)を演算する。
【0070】
B*(j+1)=B*(j)−T(j)+(tj+1−tj)×bit_rate(j+1)・・・(12)
【0071】
また、ステップS2において、コントローラ24は、次式からVBVバッファの使用範囲を決定する。
【0072】
vbv_size(j+1)=min{τmax×bit_rate(j+1),vbv_size(0)}・・・(13)
【0073】
なお、vbv_size(0)は、VBVバッファの遅延時間が最高の値τmaxとなる場合のビットレートの値を表しており、min{A,B}は、AとBのうち、小さい方を選択する関数を表す。
【0074】
すなわち、この例では、VBVバッファの遅延時間の最高値が予め規定され、VBVバッファの遅延時間が、予め規定したこの最高値を上回るようなビットレートが使用される場合には、コントローラ24がVBVバッファ(図5のバッファメモリ17に対応する)の使用範囲を狭めて(VBVバッファの容量を等価的に小さくして)、その遅延時間が、最高値に等しくなるように制御する。最高値τmaxは、次式で表される。
【0075】
τmax=vbv_size(0)/bit_rate(0) ・・・(14)
【0076】
ここで、vbv_size(0)は、VBVバッファの容量を表し、bit_rate(0)は、VBVバッファの遅延時間が最高値τmaxとなる場合におけるビットレートを表す。
【0077】
次に、ステップS3において、コントローラ24は、ステップS2で演算したVBVバッファの占有量B*(j+1)と、vbv_size(j+1)の大きさを比較し、B*(j+1)が、vbv_size(j+1)と等しいか、それより大きい場合(VBVバッファの容量vbv_size(j+1)をそのまま使用したのでは、VBVバッファの遅延時間が値τmaxを越えてしまい、目標符号量T(j)を補正する必要がある場合)には、ステップS4に進み、ステップS1で計算した目標符号量T(j)を、次式に従って、B*(j+1)とvbv_size(j+1)の差の分だけ補正する。
【0078】
T(j)=T(j)+B*(j+1)−vbv_size(j+1) ・・・(15)
【0079】
ステップS3において、B*(j+1)が、vbv_size(j+1)より小さいと判定された場合には、VBVバッファが使用できない範囲に入ることがないので、ステップS4の処理はスキップされる。
【0080】
次に、ステップS5において、ピクチャ(j)が、ステップS1で計算されたか、またはステップS4で補正された目標符号量Ti(j),Tp(j),Tb(j)に基づいてエンコード(符号化処理)される。すなわち、量子化スケールコード決定回路33は、目標ビット量設定回路32が設定した目標符号量T1(Ti(j),Tp(j)またはTb(j))に対応する量子化スケールコードQ1を決定し、量子化回路15が、この量子化スケールコードQ1に対応してピクチャ(j)を量子化する。この場合の処理は、上述した通りであるので、ここでは、その説明を省略する。
【0081】
以上までは、ピクチャ(j)の処理であるが、ステップS6からは、ピクチャ(j+1)の処理が行われる。次にステップS6において、コントローラ24は、次式に従って、ピクチャ(j)を符号化する前の未符号化ピクチャの符号量R(j)から、ピクチャ(j)を符号化して発生した符号量S(j)を減算して、次のピクチャ(j+1)を符号化する場合における符号量R(j+1)を求める。
【0082】
R(j+1)=R(j)−S(j) ・・・(16)
【0083】
さらにステップS7において、コントローラ24は、ステップS6で更新された符号量R(j+1)を、次式に従って、さらにVBVバッファ使用範囲の変化量{vbv_size(j)−vbv_size(j+1)}で補正する。
【0084】
R(j+1)=R(j+1)+{vbv_size(j)−vbv_size(j+1)}・・・(17)
【0085】
以上のステップS7までの処理の意味を、図8乃至図13を参照して、さらに説明する。コントローラ24は、コントローラ3より指定されるビットレートbit_rate(j)(この文字jは、図4のbit_rate#iにおける文字i(プログラムPiに対応する)を表すものではなく、ピクチャの順番を表す。両者をまとめて記述すれば、bit_rate#i(j)となる)が、VBVバッファの遅延時間が最高値τmaxとなる場合のビットレートbit_rate(0)(以下、閾値とも称する)に等しい場合、VBVバッファ(バッファメモリ17)を、図8に示すように制御する。同図に示すように、VBVバッファの容量は、ビットレートbit_rate(0)で順次増加し、遅延時間τmaxだけ経過した時点で、VBVバッファの容量は、vbv_size(0)となる。以下、VBVバッファに記憶された画像データは、適宜読み出され、復号されるたびに減少される。また、新たな画像データが書き込まれると、そのデータ量は増加する。以上のような動作が、順次繰り返される。
【0086】
一方、コントローラ3より指定されたビットレートbit_rate(1)が、閾値bit_rate(0)より大きい場合、コントローラ24は、ステップS5のエンコード処理時において、バッファメモリ17を制御し、時間τ1だけ、画像データの出力を遅延させる。この遅延時間τ1は、次式により演算される。
【0087】
τ1=τmax−τ2=τmax−vbv_size(0)/bit_rate(1) ・・・(18)
【0088】
VBVバッファには、この遅延時間τ1の後、ビットレートbit_rate(1)でデータが書き込まれ、書き込み開始後、時間τ2が経過した時点において、VBVバッファの容量は、vbv_size(1)=vbv_size(0)となる。図9を図8と比較して明らかなように、VBVバッファの最大の遅延時間τmaxは、両者とも同一となっている。
【0089】
一方、コントローラ3より指定されたビットレートbit_rate(2)が、閾値bit_rate(0)より小さいとき、コントローラ24は、バッファメモリ17を制御し、その容量を(使用可能な範囲を)vbv_size(2)以下に設定(制限)する。この演算は、図6のステップS2で行われる。すなわち、VBVバッファの容量vbv_size(0)のうち、vbv_size(2)を越える範囲は、この例の場合使用されない。その結果、VBVバッファの容量vbv_sizeは、遅延時間τmaxが経過した時点において、vbv_size(2)(=τmax×bit_rate(2))となる。従って、この場合においても、VBVバッファの遅延時間は、τmaxとされる。すなわち、図8乃至図10のいずれの場合においても、VBVバッファの遅延時間は、τmaxとして一定とされる。
【0090】
これにより、ビットレートのシームレスな変更が広範囲にわたって可能となり、デジタル放送の生放送に適用可能となる。
【0091】
図10において、遅延時間τ3(=vbv_size(0)/bit_rate(2))の時間だけVBVバッファにデータが書き込まれると、その容量は、vbv_size(0)となるが、この例では、容量vbv_size(2)以下の範囲だけが使用可能とされるので、実際には、その容量がvbv_size(0)に達することはない。
【0092】
図11は、ビットレートが、bit_rate(1)からbit_rate(2)に途中で変更された場合のVBVバッファの変化の様子を表している。時刻t1までの時間において、ビットレートの値は、閾値bit_rate(0)より大きい値bit_rate(1)とされている。従って、この場合のVBVバッファの変化の様子は、図9に示した場合と同様となる。これに対して、時刻t1において、ビットレートが閾値bit_rate(0)より小さいビットレートbit_rate(2)に変更されると、VBVバッファの容量は、vbv_size(2)(=τmax×bit_rate(2))に制限される。
【0093】
TM5のような固定レート、かつ固定のVBVバッファの容量を前提としたレート制御方式を使用した場合、VBVバッファの使用範囲を計算しただけでは、図12に示したような問題が生じる。
【0094】
すなわち、ビットレートが閾値bit_rate(0)より大きい値bit_rate(1)から小さい値bit_rate(2)に変更された場合(ただし、簡単のためビットレートレートの変更はGOPの先頭で行われたものとする)、制限されたVBVバッファの範囲内でデータの容量が推移するには、VBVバッファのデータ推移の軌跡は、図12において実線で示すように変化する必要がある。しかしながら、TM5において、目標符号量は、VBVバッファの最大値に近い領域を推移するように決定されるので、使用範囲を制限しただけでは、VBVバッファは、図12において点線で示すように、使用することができない範囲を推移してしまうことになる。
【0095】
そこで、例えば、VBVバッファが狭くなったとき、最初のIピクチャの発生ビット量だけ、スタッフィングにより増加するようにすることも考えられる。しかしながら、そのようにすると、最初のIピクチャの発生ビット量が大きくなるので、TM5のGOPの残りのビット量R(j)が、式(16)(R(j+1)=R(j)−S(j))に従って更新されると、R(j+1)が非常に小さい値となってしまい、GOPの残りのピクチャに割り当てるビット量が少なくなって、結局VBVバッファの軌跡は、図12の上の方の使用できない範囲に戻ろうとしてしまう。
【0096】
そこで、ステップS3において、上記した式(12)により計算したバッファ占有量B*(j+1)と、式(13)で求めたVBVバッファの容量vbv_size(2)の大きさを比較し、B*(j+1)が、vbv_size(2)より大きい場合には、式(15)に示すように、その差分(B*(j+1)−vbv_size(2))だけ、ステップS1で演算した目標符号量T(j)がステップS4で補正される。その結果、図13に示すように、補正後の目標符号量T(j)は、VBVバッファの容量vbv_size(2)より、差分(B*(j+1)−vbv_size(2))だけ小さい値となり、VBVバッファの使用不可の領域が使用されてしまうようなことが防止される。
【0097】
以上のようにして、VBVバッファの使用可能範囲を制限するための処理が行われた後、図6に続く図7のフローチャートのステップS8以降の処理が行われる。ここでは、GOPの途中でビットレートが変更された場合の処理が行われる。
【0098】
目標ビット量設定回路32は、ステップS8でピクチャ(j+1)はGOPの先頭のピクチャであるか否かを判定する。ピクチャ(j+1)がGOPの先頭のピクチャでない場合には、ステップS9に進み、目標ビット量設定回路32は、そのGOP内において、ビットレートの変更が、コントローラ3より指令されているか否かを判定する。ビットレートの変更が指令されていない場合には、ステップS10に進み、目標ビット量設定回路32は、処理対象がシーケンスエンドに達したか否かを判定し、達していない場合には、ステップS1に戻り、それ以降の処理が繰り返し実行される。処理対象がシーケンスエンドに達したと判定された場合、処理は終了される。
【0099】
ステップS9において、ビットレートの変更が指令されたと判定された場合、目標ビット量設定回路32は、ステップS12に進み、次式に従って、ステップS7で補正した符号量R(j+1)を、GOPの残りのピクチャの枚数(N−j)にピクチャ当たりのビット量の差分(bit_rate(j+1)−bit_rate(j))/pic_rateを乗算した値で補正する。
【0100】
R(j+1)={bit_rate(j+1)−bit_rate(j)}×(N−j)/pic_rate+R(j+1) ・・・(19)
【0101】
すなわち、GOPの途中でビットレートが変更されない場合、符号量Rは、図14に示すように、エンコードが進むに従って、初期値R1から漸次小さい値に変化する。なお、図14において、実線は、各ピクチャが等しい符号量でエンコードされるものと仮定した場合のものであり、実際には、IピクチャやPピクチャの発生ビット量が、Bピクチャよりも多くなるので、符号量Rは点線で示したように変化する。
【0102】
これに対して、GOPのピクチャ(j)をエンコードした後、次のピクチャ(j+1)からビットレートを変更することが要求された場合、符号量R(j+1)がステップS12で式(19)で示すように補正される。すなわち、符号量Rが、ビットレートbit_rate(1)の割合で、初期値R1から、漸次減少するように制御されていたものが、ピクチャ(j+1)のタイミングにおいて、符号量が補正後の値R(j+1)に変更される。この補正後の値R(j+1)は、初めから、初期値をR2としてビットレートbit_rate(2)でエンコードしていたと仮定した場合のピクチャ(j+1)の符号量R(j+1)に等しい。これにより、GOPの途中におけるビットレートの変更が可能となる。
【0103】
次に、ステップS13に進み、目標ビット量設定回路32は、ステップS12で補正した符号量R(j+1)が、予め設定してある所定の最小値Rminより小さいか否かを判定する。符号量R(j+1)が、最小値Rminと等しいか、それより大きい場合には、ステップS14において、変数eに0が設定される。これに対して、符号量R(j+1)が、最小値Rminより小さい場合には、ステップS15において、変数eに符号量R(j+1)と最小値Rminとの差(R(j+1)−Rmin)が設定される。この変数eは、ステップS11で使用されるものである。この変数eの機能については後述する。
【0104】
ステップS14または、ステップS15の処理の後、ステップS10に進み、それ以降の処理が繰り返し実行される。
【0105】
一方、ステップS8において、ピクチャ(j+1)が、GOPの先頭のピクチャであると判定された場合には、ステップS11に進み、目標ビット量設定回路32は、次式に従って、符号量R(j+1)を補正する。
【0106】
R(1)=bit_rate(j+1)×N/pic_rate+R(j+1)+e・・・(20)
【0107】
その後、ステップS10に戻り、それ以降の処理が繰り返し実行される。
【0108】
ここで、変数eの機能について説明する。ステップS12で、式(19)により補正された符号量R(j+1)が、予め設定されている所定の最小値Rminより小さくなった場合、これを放置して、次のGOPのビットレートを制御すると、VBVバッファがオーバーフローしてしまう恐れがある。
【0109】
そこで、GOPの途中でビットレートの変更が指令され、GOPの最後のピクチャ(N枚目のピクチャ)をエンコードした時点において、R(j+1)が、最小値Rminより小さい場合には、図16に示すように、その差分eだけ、次のGOPの符号量Rの初期値R2を小さくさせ、値(R2−e)を初期値として、そのGOPの符号量を設定させる。これにより、VBVバッファのオーバーフローが防止される。
【0110】
以上においては、各画像符号化装置2−iにおいて、実際に符号化されたデータのグローバルコンプレクシティCiをコントローラ3にフィードバックすることにより、プログラムPiを統計多重するようにしたが、フィードフォワード型の制御によりビットレートを制御することもできる。図17は、この場合の構成例を表している。図17に示した画像多重化システム1の構成は、基本的に図4に示した画像多重化システム1と同様であるが、各画像符号化装置2−iから、コントローラ3に出力されるのが、グローバルコンプレクシティCiではなく、符号化難易度Diとされている。その他の構成は、図4における場合と同様である。
【0111】
図18は、図17の画像符号化装置2−1(図示は省略するが、画像符号化装置2−2乃至2−nも、画像符号化装置2−1と同様に構成されている)の構成例を表している。その基本的な構成は、図5に示した場合と同様であるが、図18の構成例においては、走査変換マクロブロック化回路12と減算回路13の間に、イントラAC演算回路41とFIFO(First In First Out)42が設けられている。また、レートコントローラ23には、ME残差計算回路51と符号化難易度計算回路52が付加されている。
【0112】
イントラAC演算回路41は、走査変換マクロブロック化回路12の出力を入力し、IピクチャにおけるイントラACを算出し、符号化難易度計算回路52に出力している。イントラAC演算回路41はまた、走査変換マクロブロック化回路12より供給された画像データをFIFO42に出力する。FIFO42は、入力された画像データを、少なくとも、目標ビット量設定回路32が、目標ビット量を設定するのに必要な時間に対応する時間だけ、入力された画像データを遅延して演算回路13に出力する。
【0113】
ME残差計算回路51は、動き検出回路21が出力するME残差データに基づいて、ME残差を計算し、符号化難易度計算回路52に出力している。なお、ここでME残差とは、動き予測誤差の絶対値または2乗値を、ピクチャ全体について加算したものであり、ME残差データは、ME残差を求めるためのデータである。
【0114】
符号化難易度計算回路52は、ME残差計算回路51により算出されたME残差と、イントラAC演算回路41により演算されたイントラACに基づいて、ピクチャの符号化の難易度を表す符号化難易度D1を算出し、コントローラ3に送出するとともに、目標ビット量設定回路32に出力する。なお、この構成例においては、符号化難易度計算回路52により演算された符号化難易度D1がコントローラ3に伝送されているため、複雑さ計算回路31が演算により求めたグローバルコンプレクシティC1は、コントローラ3に供給されない。
【0115】
図18の画像符号化装置2−1のその他の構成は、図5における場合と同様である。
【0116】
次に、図18の画像符号化装置2−1の、主に、図5における場合と異なる構成の動作について説明する。イントラAC演算回路41は、走査変換マクロブロック化回路12の出力する画像データから、イントラACを演算する。イントラACとは、Iピクチャにおいて、8×8画素のDCTブロック内の各画素の画素値と、DCTブロック内の画素値の平均値との差分の絶対値の総和を意味し、次式で表される。
【0117】
Intra_AC=Σ|fcurr(x,y)−(Σfcurr)/N|・・・(21)
【0118】
なお、この式において、Intra_ACは、イントラACを表し、fcurr(x,y)は、DCTブロック内の各画素の画素値を表し、Σfcurrは、DCTブロック内の画素値の総和を表し、NはDCTブロック内の画素数を表している。また、Σは、マクロブロック内の各画素についての総和を表している。
【0119】
動き検出回路21は、動きベクトルを求める際に、その値が、最小となったマクロブロック間における画素値の差分の絶対値和(あるいは自乗和でもよい)をME残差データとして、ME残差計算回路51に出力する。ME残差計算回路51は、動き検出回路21からのME残差データをピクチャ全体について加算し、ME残差を計算する。すなわち、ME残差計算回路51で次式が演算される。
【0120】
ME_reside=Σ|fj(x,y)−fj-1(x,y)| ・・・(22)
【0121】
上式において、ME_resideはME残差を表し、fj(x,y),fj-1(x,y)は、各マクロブロックの画素値を表す。Σは、マクロブロック内の各画素についての総和を表している。
【0122】
符号化難易度計算回路52は、イントラAC演算回路41より供給されたイントラACと、ME残差計算回路51より供給されたME残差に基づいて、符号化難易度を計算する。符号化難易度とは、ピクチャの符号化の難易度を表すものであって、符号化したときに同じ画質を保つために必要なデータ量の比率と言い換えることができる。イントラACは、絵柄の複雑さを表し、ME残差は、映像の動きの早さ、および絵柄の複雑さを表し、それらは符号化の難易度と強い相関を有するので、これらを変数とする、例えば1次関数により、符号化難易度D1が、符号化難易度計算回路52で演算される。
【0123】
このようにして、先読みした統計量(イントラAC)に基づいて、精度の高い符号化難易度が演算される。コントローラ3は、この符号化難易度Diに基づいて、目標ビットレートbit_rate#iを決定し、各画像符号化装置2−iに出力する。
【0124】
次に、図18の目標ビット量設定回路32とコントローラ24の動作について、図19と図20のフローチャートを参照して説明する。ステップS31乃至ステップS37の処理は、基本的に、図6に示したステップS1乃至ステップS7の処理と同様の処理である。ただし、ステップS31においては、上述した式(1)乃至式(3)に代えて、次の式に従って、ピクチャ(j)の目標符号量T(j)が演算される。なお、式(23)においては、ピクチャタイプに対応する添え字i,p,bは省略されている。
【0125】
【数2】
【0126】
ここで、T(j)は、ピクチャ(j)の目標符号量を表し、R’(j)は、処理対象ピクチャから後の先読みするL枚(いまの場合、簡単のため、先読み枚数Lは1GOPの枚数Nと等しいものとする)のピクチャのビット量を表し、Djは、ピクチャ(j)の符号化難易度を表している。すなわち、上記式により、ピクチャ(j)の目標符号量T(j)が、L枚分のビット量R’(j)を、そのピクチャの符号化難易度Djと、L枚の先読みしたピクチャの符号化難易度Djの和の比で重み付けして求められる。
【0127】
次のステップS32乃至ステップS35の処理は、図6のステップS2乃至ステップS5の処理と同様の処理であり、ここでは、その説明は省略する。ステップS36では、式(16)に代えて、次の式(24)に基づいて、符号量R’(j+1)が更新される。
【0128】
R’(j+1)=R’(j)−S(j)+F(j+L) ・・・(24)
【0129】
なお、R’(j)の初期値は、L枚分のピクチャの符号量に対応して次式で表される。
【0130】
R’(1)=bit_rate(1)×L/pic_rate ・・・(25)
【0131】
上記式(24)において、F(j+L)は、ピクチャ(j+L)のピクチャタイプに応じたビット量であり、例えば、次式により規定される。なお、式(24)においては、式(26)乃至式(28)におけるピクチャタイプに対応する添え字i,p,bは省略されている。
【0132】
【数3】
【0133】
上記式において、Gは、GOPの残りの符号量に対応し、図4と図5に示したフィードバック型のレートコントロールシステムにおける符号量Rに対応する。この符号量Gも、ステップS36において、次式に従って更新される。
【0134】
G(j+L+1)=G(j+L)−F(j+L) ・・・(29)
【0135】
なお、式(29)におけるF(j)は、上記式(26)乃至(28)のうち、対応するピクチャタイプの式により表されるものである。
【0136】
符号量R’は、これから符号化されるL枚のピクチャの符号量を表すから、基本的には、図21に実線で示すように、エンコードの進行状況に拘らず、常に一定の値となる。実際には、各ピクチャタイプ毎に符号量が変化するので、図21において破線で示すように、実線で示す値の近傍で変化する。
【0137】
これに対して、符号量Gは、1GOPの符号量であるから、図22に示すように、フィードバック型のレートコントロールにおける符号量Rと同様に、エンコードの進行にともなって、漸次小さい値に変化する。
【0138】
次に、ステップS37で、図6のステップS7における式(17)に代えて、式(30)に従って、符号量R’(j+1)の更新処理が行われる。
【0139】
R’(j+1)=R’(j+1)+{vbv_size(j)−vbv_size(j+1)}・・・(30)
【0140】
以上のステップS31乃至ステップS37の処理は、フィードバック型レートコントロールの例において説明した場合のように、VBVバッファの使用する範囲を制限するために行われる処理である。
【0141】
次に、ステップS38に進み、目標ビット量設定回路32は、ピクチャ(j+1)が、GOPの先頭のピクチャであるか否かを判定する。ピクチャ(j+1)がGOPの先頭のピクチャでない場合には、ステップS39に進み、GOPの途中においてビットレートの変更が指令されているか否かが判定される。ビットレートの変更が指令されていない場合には、ステップS40に進み、エンコード処理がシーケンスエンドに達しているか否かが判定され、まだ達していない場合には、ステップS31に戻り、それ以降の処理が繰り返し実行される。ステップS40において、処理がシーケンスエンドまで達していると判定された場合、処理は終了される。
【0142】
ステップS39において、GOPの途中においてビットレートが変更されていると判定された場合、ステップS41に進み、目標ビット量設定回路32は、次式に従って、符号量R’(j+1)と符号量G(j+1)を更新する。
【0143】
R’(j+1)={bit_rate(j+1)−bit_rate(j)}×L/pic_rate+R’(j+1) ・・・(31)
G(j+1)={bit_rate(j+1)−bit_rate(j)}×(N−j)/pic_rate+G(j+1) ・・・(32)
【0144】
このように、ビットレートが、GOPの途中で変更された場合には、符号量R’は、図23に示すように、所定の値R1から所定の値R2に変化する。
【0145】
一方、符号量Gは、図24に示すように、初期値R1から、ビットレートbit_rate(1)でエンコードが行われてきたときの値G(j+1)から、最初から初期値R2でエンコードを行ってきた場合における値G(j+1)に変更される。このことは、図15を参照して説明した符号量Rにおける場合と同様である。
【0146】
次に、ステップS42に進み、目標ビット量設定回路32は、符号量G(j+1)が、最小値Gminより小さいか否かを判定し、符号量Gが、最小値Gminと等しいか、それより大きい場合には、ステップS43において、変数eに0を設定する。
【0147】
符号量G(j+1)が、最小値Gminより小さい場合には、ステップS44において、変数eに、両者の差(G(j+1)−Gmin)が設定される。この処理は、図7におけるステップS13乃至ステップS15の処理と同様の処理である。この変数eは、後述するステップS46、またはステップS47の処理において用いられる。
【0148】
ステップS38において、ピクチャ(j+1)が、GOPの先頭のピクチャであると判定された場合、ステップS45に進み、目標ビット量設定回路32は、ビットレートの変更が指令されているか否かを判定する。ここで、ビットレートの変更の有無の判定が行われ、図7のステップS8において、ピクチャ(j+1)がGOPの先頭のピクチャであると判定された場合に、ビットレートの変更処理が行われないのは、図7の処理の場合には、ピクチャ(j+1)がGOPの先頭のピクチャであっても、そうでなくても、ステップS11で同一の式(20)が用いられるので、ビットレートの変更判断が不要であるのに対して、図20のフローチャートの処理においては、ピクチャ(j+1)がGOPの先頭のピクチャである場合においても、ビットレートの変更の有無により処理が異なるので、ステップS45の判定処理が挿入されている。
【0149】
すなわち、ステップS45において、ビットレートの変更が指令されていないと判定された場合には、ステップS46において、目標ビット量設定回路32は、次式に従って、符号量Gを更新する。
【0150】
G(1)=bit_rate(j+1)×N/pic_rate+G(j+1)+e・・・(33)
【0151】
一方、ステップS45において、ビットレートの変更が指令されていると判定された場合には、ステップS47に進み、目標ビット量設定回路32は、次式に従って、符号量R’(1)と符号量G(1)を更新する。
【0152】
R’(1)={bit_rate(1)−bit_rate(j)}×L/pic_rate+R’(J+1) ・・・(34)
G(1)=bit_rate(1)×N/pic_rate+G(j+1)+e・・・(35)
【0153】
ステップS46の処理とステップS47の処理を比較して明らかなように、ステップS47の処理は、ステップS46の処理に較べて、符号量R’(1)の更新処理が、符号量G(1)の処理に加えて付加されている。
【0154】
変数eの機能は、図16を参照して説明した場合と同様であり、図25に示すように、符号量Gの変化にともなってGOPの最後のピクチャの符号化が行われた直後において、eの値が0でない場合には、次のGOPの符号化時の符号量Gの初期値R2の値が、eの分だけ小さい値に調整される。
【0155】
ステップS43,S44,S46,S47の処理の後、ステップS40に進み、それ以降の処理が繰り返し実行される。
【0156】
以上のフィードバック型、およびフィードフォワード型のビットレートコントロールの実施の形態のいずれにおいても、VBVバッファの使用範囲を制限するようにしたが、画質を考慮したとき、若干の問題が生じる場合がある。すなわち、図26に示すように、最初のGOPにおいて、3Mbpsのビットレートが設定され、次のGOPにおいて、1.5Mbpsのビットレートが設定され、さらに、その次のGOPにおいて、再び3Mbpsのビットレートが設定されたとする。このとき、VBVバッファの容量を1.8Mbitとし、閾値bit_rate(0)を3.0Mbpsとすると、遅延時間τmax=1.8/3.0=0.6(秒)となる。
【0157】
このとき、各GOPにおけるTM5の符号量Rの初期値は、bit_rate×N/pic_rateの式から次のように求められる。なお、GOPの枚数Nを15とし、pic_rate=30とする。
【0158】
すなわち、最初のGOPにおいては、初期値Rは、1.5(=3.0×15/30)Mbitsとなる。次のGOPにおいては、初期値は、0.75(=1.5×15/30)となるが、その値が、図6のステップS7の式(17)に基づいて、VBVバッファの容量の差分(vbv_size(1)−vbv_size(2))で補正される変更前(前のGOP)のVBVバッファ容量vbv_size(1)は、1.8(=τmax×bit_rate(1)=0.6×3.0)とされているのに対して、第2番目のGOPにおけるVBVバッファの容量vbv_size(2)は、0.9(=τmax×bit_rate(2)=0.6×1,5)となるので、その差分は0.9(=1.8−0.9)となり、結局、初期値Rは、1.65(=0.75+(1.8−0.9))Mbitsとなる。
【0159】
一方、第3番目のGOPにおいては、初期値は1.5(=3.0×15/30)となるが、VBVバッファの変更前の容量vbv_size(2)は、0.9であるのに対して、このGOPにおける容量vbv_size(3)は1.8となる。従って、初期値Rは、0.6(=1.5+(0.9−1.8))Mbitsとなる。
【0160】
2番目のGOPにおいては、本来エンコードしやすい絵柄であるので、ビットレートを1.5Mbpsと小さい値に設定したにも拘らず、符号量Rの初期値は1.65と大きな値に設定されてしまう。これに対して、第3番目のGOPにおいては、エンコードが難しい絵柄であるから、ビットレートを3.0Mbpsと大きくしたにも拘らず、符号量Rの初期値は0.6Mbpsと小さい値に設定されてしまう。すなわち、2番目のGOPの符号量の初期値Rが大きくなり、最後のGOPの符号量Rの初期値が非常に小さくなるという逆転現象が生じている。
【0161】
これは、図27に示すように、ビットレートbit_rateの値が、閾値bit_rate(0)より小さくなったとき、急激にVBVバッファの容量vbv_sizeの使用範囲を制限するようにしたことに起因する。なお、図27において、横軸は、ビットレートbit_rateを表し、縦軸は、VBVバッファの容量vbv_sizeを表している。そして、図27において、影を付して示した範囲は、VBVバッファの使用が制限されている範囲を表している。
【0162】
そこで、図28に示すように、閾値bit_rate(0)より大きい閾値bit_rate(0U)を設定し、さらに閾値bit_rate(0)より小さい閾値bit_rate(0L)を設定し、ビットレートbit_rateの値が、閾値bit_rate(0U)より小さくなったとき、VBVバッファの使用範囲をビットレートが閾値bit_rate(0L)になるまで、徐々に制限し、ビットレートが閾値bit_rate(0L)より小さくなった場合には、図27に示した場合と同様に、さらに急激にVBVバッファの使用範囲を制限するようにすることができる。この場合、図6のステップS2の式(13)におけるVBVバッファの使用範囲を規定する右辺の第1引数を、ビットレートがbit_rate(0L)以下のとき、τmax×bit_rate(j+1)とするが、ビットレートがbit_rate(0L)乃至bit_rate(0U)の間の値であるとき、次式に変更するようにすればよい。
【0163】
{(vbv_size(0)−vbv_size(0L))×bit_rate+vbv_size(0L)×bit_rate(0U)−vbv_size(0)×vbv_size(0L)} /{bit_rate(0U)−bit_rate(0L)} ・・・(36)
【0164】
なお、vbv_size(0L)は、次式で表される。
【0165】
vbv_size(0L)=vbv_size(0)×bit_rate(0L)/bit_rate(0)・・・(37)
【0166】
なお、フィードフォワード型のビットレートコントロールにおいても、図19のステップS32における演算において、同様にVBVバッファの容量が演算される。
【0167】
図18のイントラAC演算回路41において、イントラACを演算するようにしたが、イントラACに代えて、フラットネスを演算するようにしてもよい。フラットネスとは、画像の空間的な平坦さを表すデータである。この場合、8×8画素のDCTブロックが2画素×2画素の小ブロックに分割される。そして、各小ブロック内における対角線上に位置する画素データ(画素値)の差分が算出され、その差分の絶対値のうち小さい方が選択される。選択された差分値が、さらに所定の閾値と比較され、差分値が閾値より小さい小ブロックの総数が、フラットネスとしてピクチャ毎に求められる。
【0168】
なお、フラットネスの値は、画像の図柄が空間的に複雑であるほど小さくなり、平坦であれば大きくなる。このフラットネスは、符号化難易度Djと、強い負の相関関係を有する。従って、圧縮符号化前にIピクチャとなるピクチャの符号化難易度Djをフラットネスから求め、このフラットネスからIピクチャに対する目標符号量T(j)を求めることができる。
【0169】
以上のように、固定ビットレートに用いるレートコントロール方法を用いながら、GOPの途中でビットレートが変更できるようにしたので、絵柄の符号が難易度の変化に速やかに対応して、ビットレートを変更することができる。その結果、各プログラムのGOPの位相が同期していないような場合においても、伝送容量を無駄なく有効に使用することができ、全体として画質の向上を図ることができる。
【0170】
また、固定ビットレートエンコードで使用されるレートコントロール方法を使用することにより、VBVバッファ(またはデコーダのバッファ)のアンダーフローまたはオーバーフローをおこさないようなレートコントロールが統計多重の場合にまで拡張することができる。
【0171】
本発明は、必ずしも統計多重に限らず、例えば、ハードディスクのような記録メディアに蓄積保存するためにデータをエンコードするような場合、固定レート符号化のレートコントロール方法を用いながら、シームレスにビットレートを変更するのに適用することができ、絵柄に応じてビットレートを変更し、結果的に所定の画質を実現する蓄積メディアの容量を節約することが可能となる。
【0172】
上述の実施の形態においては、TM5のアルゴリズムによりGOPを単位にして目標符号量を計算する場合について述べたが、本発明はこれに限らず、符号化処理するピクチャから所定数のピクチャを単位にして目標伝送レートによる符号量を計算して目標符号量を算出する場合等においても、広く適用することができる。
【0173】
また上述の実施の形態においては、残り符号量Rを補正することにより、ピクチャ単位でビットレートを変更する場合について述べたが、本発明はこれに限らず、GOP単位でビットレートを変更する場合等にも広く適用することができる。
【0174】
さらに上述の実施の形態においては、MPEGにより各プログラムを符号化処理して伝送する場合について述べたが、本発明はこれに限らず、種々の符号化方式により種々のプログラムを符号化処理して伝送する場合に広く適用することができる。
【0175】
なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものとする。
【0176】
また、上記したような処理を行うコンピュータプログラムをユーザに提供する提供媒体としては、磁気ディスク、CD-ROM、固体メモリなどの記録媒体の他、ネットワーク、衛星などの通信媒体を利用することができる。
【0179】
【発明の効果】
本発明によれば、GOPの途中において、指定ビットレートが第1のビットレートから第2のビットレートに変更された場合、未符号化ピクチャのビット量の変化軌跡が、GOPの先頭ピクチャから第2のビットレートで各ピクチャを符号化していたときの軌跡になるように未符号化ピクチャのビット量を補正し、補正された未符号化ピクチャのビット量に基づいて符号化対象ピクチャに対して割り当てられる目標ビット量を演算するようにした。
【0191】
従って、画像データの統計多重時に、GOPの位相に不一致があったとしても、伝送効率の低下を抑制することができる。
【図面の簡単な説明】
【図1】固定レートによる多重化を説明する図である。
【図2】統計多重による多重化を説明する図である。
【図3】統計多重におけるGOPの位相があっていない場合における符号割当レートの変化を説明する図である。
【図4】本発明を適用した画像多重化システムの構成例を示すブロック図である。
【図5】図4の画像符号化装置2−1の構成例を示すブロック図である。
【図6】図5の画像符号化装置2−1の動作を説明するフローチャートである。
【図7】図5の画像符号化装置2−1の動作を説明するフローチャートである。
【図8】 VBVバッファの容量の変化を説明する図である。
【図9】 VBVバッファの容量の変化を説明する図である。
【図10】 VBVバッファの容量の変化を説明する図である。
【図11】 VBVバッファの容量の変化を説明する図である。
【図12】 VBVバッファの容量の変化を説明する図である。
【図13】 VBVバッファの容量の変化を説明する図である。
【図14】符号量Rの変化を説明する図である。
【図15】 GOPの途中でビットレートを変更した場合の符号量Rの変化を説明する図である。
【図16】図7のステップS11の値eの機能を説明する図である。
【図17】本発明を適用した画像多重化システムの他の構成例を示すブロック図である。
【図18】図17の画像符号化装置2−1の構成例を示すブロック図である。
【図19】図18の画像符号化装置2−1の動作を説明するフローチャートである。
【図20】図18の画像符号化装置2−1の動作を説明するフローチャートである。
【図21】符号量R’の変化を説明する図である。
【図22】符号量Gの変化を説明する図である。
【図23】 GOPの途中においてビットレートを変更した場合における符号量R’の変化を説明する図である。
【図24】 GOPの途中においてビットレートを変更した場合における符号量Gの変化を説明する図である。
【図25】図20のステップS46,S47における値eの機能を説明する図である。
【図26】符号量Rの逆転現象を説明する図である。
【図27】符号量Rの逆転現象の原因を説明する図である。
【図28】符号量Rの逆転現象を抑制する原理を説明する図である。
【符号の説明】
1 画像多重化システム, 2−1乃至2−n 画像符号化装置, 3 コントローラ, 4 多重化装置, 11 画像並べ変え回路, 12 走査変換マクロブロック化回路, 13 減算回路, 14 DCT回路, 15 量子化回路, 16 可変長符号化回路, 17 バッファメモリ, 18 逆量子化回路, 19 逆DCT回路, 20 加算回路, 21 動き検出回路, 22 動き補償回路, 23 レートコントローラ, 24 コントローラ, 31 複雑差計算回路, 32 目標ビット量設定回路, 33 量子化スケールコード決定回路
Claims (8)
- ビデオデータを符号化する符号化装置において、
GOP の途中において指定ビットレートが第1のビットレートから第2のビットレートに変更された場合に、上記 GOP 内における未符号化ピクチャに対して割り当てられるビット量の変化軌跡が、その GOP の先頭ピクチャから上記第2のビットレートで各ピクチャを符号化した際の軌跡になるように、上記未符号化ピクチャのビット量を補正し、上記補正された未符号化ピクチャのビット量に基づいて、符号化対象ピクチャに対して割り当てられる目標ビット量を演算する制御手段と、
上記制御手段によって演算された目標ビット量に従って、上記符号化対象ピクチャを符号化する符号化手段と
を備えることを特徴とする符号化装置。 - 上記制御手段は、上記指定ビットレートが上記第1のビットレートから上記第2のビットレートに変更されたとき、上記第1のビットレートと上記第2のビットレートとの差分に基づいて上記未符号化ピクチャのビット量を補正する
ことを特徴とする請求項1に記載の符号化装置。 - 上記制御手段は、補正された上記未符号化ピクチャのビット量を、これから符号化しようとする1つの符号化対象ピクチャのピクチャタイプに応じて分配することにより、その符号化対象ピクチャの目標ビット量を演算する
ことを特徴とする請求項2に記載の符号化装置。 - 上記制御手段は、上記第1のビットレートにおける1ピクチャあたりのビット量と上記第2のビットレートにおける1ピクチャあたりのビット量との差分に、未符号化ピクチャの枚数を乗算した値で上記未符号化ピクチャのビット量を補正する
ことを特徴とする請求項3に記載の符号化装置。 - 上記符号化対象ピクチャの目標ビット量を演算するアルゴリズムは、
上記符号化手段による各ピクチャの符号化処理の結果発生した発生ビット量に基づいて、画面の複雑さを示す各ピクチャのグロバールコンプレクシティを演算し、このグローバルコンプレクシティと上記未符号化ピクチャのビット量とに基づいて上記符号化対象ピクチャの目標ビット量を演算するフィードバック型の演算アルゴリズムである
ことを特徴とする請求項4に記載の符号化装置。 - 上記制御手段は、上記符号化対象ピクチャとそれ以降の未符号化ピクチャのビット量を、上記符号化対象ピクチャの直前のピクチャとそれ以降の未符号化ピクチャに割り当てられたビット量から上記直前のピクチャの符号化処理による発生ビット量を減算することによって求め、上記直前のピクチャまでを上記第1のビットレートで符号化し、上記符号化対象ピクチャから上記第2のビットレートで符号化する場合、求められた未符号化ピクチャのビット量をさらに補正する
ことを特徴とする請求項4に記載の符号化装置。 - 上記制御手段は、上記符号化対象ピクチャの直前のピクチャまでを上記第1のビットレートで符号化し、上記符号化対象ピクチャから上記第2のビットレートで符号化した後、上記符号化対象ピクチャの GOP の次の GOP の先頭ピクチャを符号化する場合には、上記次の GOP の未符号化ピクチャに対して割り当てられるビット量を、上記符号化対象ピクチャとそれ以降の未符号化ピクチャに割り当てられたビット量に応じて生成された補正値で補正する
ことを特徴とする請求項6に記載の符号化装置。 - ビデオデータを符号化する符号化方法において、
GOP の途中において指定ビットレートが第1のビットレートから第2のビットレートに変更された場合に、上記 GOP 内における未符号化ピクチャに対して割り当てられるビット量の変化軌跡が、その GOP の先頭ピクチャから上記第2のビットレートで各ピクチャを符号化した際の軌跡になるように、上記未符号化ピクチャのビット量を補正し、上記補正された未符号化ピクチャのビット量に基づいて、符号化対象ピクチャに対して割り当てられる目標ビット量を演算する制御工程と、
上記制御工程によって演算された目標ビット量に従って、上記符号化対象ピクチャを符号化する符号化工程と
を含むことを特徴とする符号化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP34819998A JP4035747B2 (ja) | 1997-12-08 | 1998-12-08 | 符号化装置および符号化方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP9-336811 | 1997-12-08 | ||
JP33681197 | 1997-12-08 | ||
JP34819998A JP4035747B2 (ja) | 1997-12-08 | 1998-12-08 | 符号化装置および符号化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11243539A JPH11243539A (ja) | 1999-09-07 |
JP4035747B2 true JP4035747B2 (ja) | 2008-01-23 |
Family
ID=26575588
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP34819998A Expired - Fee Related JP4035747B2 (ja) | 1997-12-08 | 1998-12-08 | 符号化装置および符号化方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4035747B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4203707B2 (ja) * | 2001-01-31 | 2009-01-07 | 日本電気株式会社 | 事前解析を用いた動画像符号化装置、動画像符号化方法、及びそのプログラム。 |
JP4586340B2 (ja) * | 2003-07-08 | 2010-11-24 | ソニー株式会社 | 符号化装置、および、符号化方法、並びに、プログラム |
-
1998
- 1998-12-08 JP JP34819998A patent/JP4035747B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH11243539A (ja) | 1999-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100471956B1 (ko) | 화상압축부호화장치및방법 | |
US5969764A (en) | Adaptive video coding method | |
US6229849B1 (en) | Coding device and method | |
KR100610520B1 (ko) | 비디오 데이터 부호화 장치, 비디오 데이터 부호화 방법, 비디오데이터 전송 장치 및 비디오 데이터 기록 매체 | |
US6141380A (en) | Frame-level rate control for video compression | |
US5805222A (en) | Video coding apparatus | |
KR20090108026A (ko) | 비디오 코딩 표준에 대한 개선된 비디오율 제어 | |
US20010046263A1 (en) | Video encoding apparatus that adjusts code amount by skipping encoding of image data | |
US20020085634A1 (en) | Video bitrate control method and device for digital video recording | |
JP3259702B2 (ja) | 動画像可変ビットレート符号化装置および方法 | |
JP3907875B2 (ja) | 符号化レート制御装置及び情報符号化装置 | |
KR100588795B1 (ko) | 부호화 장치 및 부호화 방법 | |
JP3508916B2 (ja) | 動画像可変ビットレート符号化方法および装置 | |
JP4362795B2 (ja) | 動画像符号化装置及びその方法 | |
JP3173369B2 (ja) | 画像圧縮符号化装置 | |
JP4193080B2 (ja) | 符号化装置及び方法 | |
JP4035747B2 (ja) | 符号化装置および符号化方法 | |
JP3812269B2 (ja) | 動画像符号化装置及びその方法 | |
JP3889552B2 (ja) | 符号量割り当て装置および方法 | |
JPH11196424A (ja) | 画像処理装置および方法、並びに提供媒体 | |
JP3211778B2 (ja) | 改良された適応性のあるビデオ符号化方法 | |
JPH10126792A (ja) | 画像符号化方法および装置 | |
JP3779066B2 (ja) | 動画像符号化装置 | |
JPH0775095A (ja) | レート制御回路 | |
JP4239734B2 (ja) | 符号化装置、および、符号化方法、並びに、プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050714 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070720 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070906 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20071004 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20071017 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101109 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111109 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111109 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121109 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121109 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131109 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |