(57)【特許請求の範囲】
【請求項１】
画像データを符号化した符号化ストリームにおいて規定される仮想デコーダを、前記画像データを量子化した量子化データを２値化して得られるバイナリデータで規定する際に用いられるバイナリパラメータを設定する設定部と、
前記バイナリデータに対してコンテキストを用いて算術符号化して、符号化ストリームを生成する符号化部と、
前記設定部により設定されたバイナリパラメータと、前記符号化部により生成された符号化ストリームとを伝送する伝送部と
を備える画像処理装置。
【請求項２】
前記設定部は、前記仮想デコーダのバッファのサイズと、前記バッファに蓄積されるデータのデータ量を示す位置とを前記バイナリデータによる規定に変換する際に用いられるパラメータを、前記バイナリパラメータとして設定する
請求項１に記載の画像処理装置。
【請求項３】
前記設定部は、前記符号化ストリームの符号量を前記バイナリデータのデータ量に換算する際に用いられる変換パラメータを、前記バイナリパラメータとして設定する
請求項１に記載の画像処理装置。
【請求項４】
前記設定部は、前記変換パラメータを用いて、前記仮想デコーダの規定を、前記符号化ストリームによる規定からバイナリデータによる規定に変換するかを示すパラメータを、前記バイナリパラメータとして設定する
請求項３に記載の画像処理装置。
【請求項５】
前記設定部は、前記符号化ストリームで規定される仮想デコーダと、前記バイナリデータで規定される仮想デコーダとを異なるパラメータを用いて設定するかを示すパラメータを、前記バイナリパラメータとして設定する
請求項１に記載の画像処理装置。
【請求項６】
前記伝送部は、前記バイナリパラメータを、前記符号化部により生成された符号化ストリームの付加情報として伝送する
請求項１に記載の画像処理装置。
【請求項７】
前記伝送部は、前記バイナリパラメータを、前記符号化部により生成された符号化ストリームに挿入して伝送する
請求項１に記載の画像処理装置。
【請求項８】
前記設定部は、前記バイナリデータの処理速度を規定する仮想デコーダを規定する際に用いられるパラメータを、前記バイナリパラメータとして設定する
請求項１に記載の画像処理装置。
【請求項９】
前記設定部は、前記バイナリデータの処理速度を示すパラメータを、前記バイナリパラメータとして設定する
請求項８に記載の画像処理装置。
【請求項１０】
前記設定部は、前記仮想デコーダのバッファのサイズを示すパラメータを、前記バイナリパラメータとして設定する
請求項８に記載の画像処理装置。
【請求項１１】
前記バイナリパラメータに応じて決定される、前記符号化ストリームの最大処理量と、前記バイナリデータの最大処理量とを用いて、前記符号化ストリームの目標レートであるターゲットビットを決定する決定部をさらに備える
請求項８に記載の画像処理装置。
【請求項１２】
画像処理装置の画像処理方法であって、
設定部が、画像データを符号化した符号化ストリームにおいて規定される仮想デコーダを、前記画像データを量子化した量子化データを２値化して得られるバイナリデータで規定する際に用いられるバイナリパラメータを設定し、
符号化部が、前記バイナリデータに対してコンテキストを用いて算術符号化して、符号化ストリームを生成し、
伝送部が、設定されたバイナリパラメータと、生成された符号化ストリームとを伝送する
画像処理方法。
【請求項１３】
コンピュータを、
画像データを符号化した符号化ストリームにおいて規定される仮想デコーダを、前記画像データを量子化した量子化データを２値化して得られるバイナリデータで規定する際に用いられるバイナリパラメータを設定する設定部と、
前記バイナリデータに対してコンテキストを用いて算術符号化して、符号化ストリームを生成する符号化部と、
前記設定部により設定されたバイナリパラメータと、前記符号化部により生成された符号化ストリームとを伝送する伝送部と
して機能させるためのプログラム。
【請求項１４】
コンピュータを、
画像データを符号化した符号化ストリームにおいて規定される仮想デコーダを、前記画像データを量子化した量子化データを２値化して得られるバイナリデータで規定する際に用いられるバイナリパラメータを設定する設定部と、
前記バイナリデータに対してコンテキストを用いて算術符号化して、符号化ストリームを生成する符号化部と、
前記設定部により設定されたバイナリパラメータと、前記符号化部により生成された符号化ストリームとを伝送する伝送部と
して機能させるためのプログラムを記録したコンピュータが読み取り可能な記録媒体。
【請求項１５】
画像データを符号化した符号化ストリームで規定される仮想デコーダを、前記画像データを量子化した量子化データを２値化して得られるバイナリデータで規定する際に用いられるバイナリパラメータを用いて、前記符号化ストリームを復号する復号部
を備える画像処理装置。
【請求項１６】
前記符号化ストリームと前記バイナリパラメータとを受け取る受け取り部を更に備え、
前記復号部は、前記受け取り部より受け取られたバイナリパラメータを用いて、前記受け取り部により受け取られた符号化ストリームを復号する
請求項１５に記載の画像処理装置。
【請求項１７】
前記受け取り部は、前記バイナリパラメータを、前記符号化ストリームの付加情報として受け取る
請求項１６に記載の画像処理装置。
【請求項１８】
前記バイナリパラメータは、前記符号化ストリームに挿入されており、
前記受け取り部は、前記バイナリパラメータを、前記符号化ストリームから取得する
請求項１６に記載の画像処理装置。
【請求項１９】
画像処理装置の画像処理方法であって、
復号部が、画像データを符号化した符号化ストリームで規定される仮想デコーダを、前記画像データを量子化した量子化データを２値化して得られるバイナリデータで規定する際に用いられるバイナリパラメータを用いて、前記符号化ストリームを復号する
画像処理方法。
【請求項２０】
コンピュータを、
画像データを符号化した符号化ストリームで規定される仮想デコーダを、前記画像データを量子化した量子化データを２値化して得られるバイナリデータで規定する際に用いられるバイナリパラメータを用いて、前記符号化ストリームを復号する復号部と
して機能させるためのプログラム。
【請求項２１】
コンピュータを、
画像データを符号化した符号化ストリームで規定される仮想デコーダを、前記画像データを量子化した量子化データを２値化して得られるバイナリデータで規定する際に用いられるバイナリパラメータを用いて、前記符号化ストリームを復号する復号部と
して機能させるためのプログラムを記録したコンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、画像処理装置および方法、プログラム、並びに、記録媒体に関し、特に、レート制御をより容易に行うことができるようにした画像処理装置および方法、プログラム、並びに、記録媒体に関する。
【背景技術】
【０００２】
画像符号化方式のAVC（Advanced Video Coding）においては、ストリームを破綻なく伝送するために、仮想参照デコーダ（HRD（Hypothetical reference decoder））という概念が導入されている（例えば、非特許文献１参照）。エンコーダは、仮想デコーダを破綻させないようにレート制御しながらビットストリームを生成する必要がある。
【０００３】
このレート制御の方法として、様々な方法が提案されている（例えば、特許文献１および特許文献２参照）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】大久保榮，角野眞也，菊池義浩、鈴木輝彦，”改定三版  H.264/AVC教科書”，株式会社インプレスＲ＆Ｄ，２００９年１月１日，ｐ１８５−１９４
【特許文献】
【０００５】
【特許文献１】特開２００９−５５３８４号公報
【特許文献２】特開２００９−１１１６２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、さらに好適なレート制御方法が存在することは望ましく、検討が行われている。例えば、より容易なレート制御方法が求められている。
【０００７】
本開示は、このような状況に鑑みてなされたものであり、より容易にレート制御を行うことができるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
本開示の一側面は、画像データを符号化した符号化ストリームにおいて規定される仮想デコーダを、前記画像データを量子化した量子化データを２値化して得られるバイナリデータで規定する際に用いられるバイナリパラメータを設定する設定部と、前記バイナリデータに対してコンテキストを用いて算術符号化して、符号化ストリームを生成する符号化部と、前記設定部により設定されたバイナリパラメータと、前記符号化部により生成された符号化ストリームとを伝送する伝送部とを備える画像処理装置である。
【０００９】
前記設定部は、前記仮想デコーダのバッファのサイズと、前記バッファに蓄積されるデータのデータ量を示す位置とを前記バイナリデータによる規定に変換する際に用いられるパラメータを、前記バイナリパラメータとして設定することができる。
【００１０】
前記設定部は、前記符号化ストリームの符号量を前記バイナリデータのデータ量に換算する際に用いられる変換パラメータを、前記バイナリパラメータとして設定することができる。
【００１１】
前記設定部は、前記変換パラメータを用いて、前記仮想デコーダの規定を、前記符号化ストリームによる規定から、バイナリデータによる規定に変換するかを示すパラメータを、前記バイナリパラメータとして設定することができる。
【００１２】
前記設定部は、前記符号化ストリームで規定される仮想デコーダと、前記バイナリデータで規定される仮想デコーダとを異なるパラメータを用いて設定するかを示すパラメータを、前記バイナリパラメータとして設定することができる。
【００１３】
前記伝送部は、前記バイナリパラメータを、前記符号化部により生成された符号化ストリームの付加情報として伝送することができる。
【００１４】
前記伝送部は、前記バイナリパラメータを、前記符号化部により生成された符号化ストリームに挿入して伝送することができる。
【００１５】
前記設定部は、前記バイナリデータの処理速度を規定する仮想デコーダを規定する際に用いられるパラメータを、前記バイナリパラメータとして設定することができる。
【００１６】
前記設定部は、前記バイナリデータの処理速度を示すパラメータを、前記バイナリパラメータとして設定することができる。
【００１７】
前記設定部は、前記仮想デコーダのバッファのサイズを示すパラメータを、前記バイナリパラメータとして設定することができる。
【００１８】
前記バイナリパラメータに応じて決定される、前記符号化ストリームの最大処理量と、前記バイナリデータの最大処理量とを用いて、前記符号化ストリームの目標レートであるターゲットビットを決定する決定部をさらに備えることができる。
【００１９】
本開示の一側面は、また、画像処理装置の画像処理方法であって、設定部が、画像データを符号化した符号化ストリームにおいて規定される仮想デコーダを、前記画像データを量子化した量子化データを２値化して得られるバイナリデータで規定する際に用いられるバイナリパラメータを設定し、符号化部が、前記バイナリデータに対してコンテキストを用いて算術符号化して、符号化ストリームを生成し、伝送部が、設定されたバイナリパラメータと、生成された符号化ストリームとを伝送する画像処理方法である。
本開示の一側面は、さらに、コンピュータを、画像データを符号化した符号化ストリームにおいて規定される仮想デコーダを、前記画像データを量子化した量子化データを２値化して得られるバイナリデータで規定する際に用いられるバイナリパラメータを設定する設定部と、前記バイナリデータに対してコンテキストを用いて算術符号化して、符号化ストリームを生成する符号化部と、前記設定部により設定されたバイナリパラメータと、前記符号化部により生成された符号化ストリームとを伝送する伝送部として機能させるためのプログラムである。
本開示の一側面は、さらに、コンピュータを、画像データを符号化した符号化ストリームにおいて規定される仮想デコーダを、前記画像データを量子化した量子化データを２値化して得られるバイナリデータで規定する際に用いられるバイナリパラメータを設定する設定部と、前記バイナリデータに対してコンテキストを用いて算術符号化して、符号化ストリームを生成する符号化部と、前記設定部により設定されたバイナリパラメータと、前記符号化部により生成された符号化ストリームとを伝送する伝送部として機能させるためのプログラムを記録したコンピュータが読み取り可能な記録媒体である。
【００２０】
本開示の他の側面は、画像データを符号化した符号化ストリームで規定される仮想デコーダを、前記画像データを量子化した量子化データを２値化して得られるバイナリデータで規定する際に用いられるバイナリパラメータを用いて、前記符号化ストリームを復号する復号部を備える画像処理装置である。
前記符号化ストリームと前記バイナリパラメータとを受け取る受け取り部を更に備え、前記復号部は、前記受け取り部より受け取られたバイナリパラメータを用いて、前記受け取り部により受け取られた符号化ストリームを復号することができる。
前記受け取り部は、前記バイナリパラメータを、前記符号化ストリームの付加情報として受け取ることができる。
前記バイナリパラメータは、前記符号化ストリームに挿入されており、前記受け取り部は、前記バイナリパラメータを、前記符号化ストリームから取得することができる。
【００２１】
本開示の他の側面は、また、画像処理装置の画像処理方法であって、復号部が、画像データを符号化した符号化ストリームで規定される仮想デコーダを、前記画像データを量子化した量子化データを２値化して得られるバイナリデータで規定する際に用いられるバイナリパラメータを用いて、符号化ストリームを復号する画像処理方法である。
本開示の一側面は、さらに、コンピュータを、画像データを符号化した符号化ストリームで規定される仮想デコーダを、前記画像データを量子化した量子化データを２値化して得られるバイナリデータで規定する際に用いられるバイナリパラメータを用いて、前記符号化ストリームを復号する復号部として機能させるためのプログラムである。
本開示の一側面は、さらに、コンピュータを、画像データを符号化した符号化ストリームで規定される仮想デコーダを、前記画像データを量子化した量子化データを２値化して得られるバイナリデータで規定する際に用いられるバイナリパラメータを用いて、前記符号化ストリームを復号する復号部として機能させるためのプログラムを記録したコンピュータが読み取り可能な記録媒体である。
【００２２】
本開示の一側面においては、画像データを符号化した符号化ストリームにおいて規定される仮想デコーダを、その画像データを量子化した量子化データを２値化して得られるバイナリデータで規定する際に用いられるバイナリパラメータが設定され、前記バイナリデータに対してコンテキストを用いて算術符号化が行われて、符号化ストリームが生成され、設定されたバイナリパラメータと、生成された符号化ストリームとが伝送される。
【００２３】
本開示の他の側面においては、画像データを符号化した符号化ストリームで規定される仮想デコーダを、その画像データを量子化した量子化データを２値化して得られるバイナリデータで規定する際に用いられるバイナリパラメータを用いて、その符号化ストリームが復号される。
【発明の効果】
【００２４】
本開示によれば、画像を処理することができる。特に、より容易にレート制御を行うことができる。
【図面の簡単な説明】
【００２５】
【図１】画像符号化装置の主な構成例を示すブロック図である。
【図２】HRDモデルの例を示す図である。
【図３】シンタックスの例を示す図である。
【図４】符号化処理のタイミングチャートの例を説明する図である。
【図５】Bitで定義されるHRDのレート制御の様子の例を説明する図である。
【図６】HRDのBitによる定義とBinによる定義の例を比較する図である。
【図７】Binで定義されるHRDのレート制御の様子の例を説明する図である。
【図８】シンタックスの他の例を示す図である。
【図９】可逆符号化部の主な構成例を示すブロック図である。
【図１０】レート制御部の主な構成例を示すブロック図である。
【図１１】符号化処理の流れの例を説明するフローチャートである。
【図１２】レート制御処理の流れの例を説明するフローチャートである。
【図１３】パラメータ設定処理の流れの例を説明するフローチャートである。
【図１４】CPB位置変換処理の流れの例を説明するフローチャートである。
【図１５】画像復号装置の主な構成例を示すブロック図である。
【図１６】可逆復号部の主な構成例を示すブロック図である。
【図１７】復号処理の流れの例を説明するフローチャートである。
【図１８】可逆復号処理の流れの例を説明するフローチャートである。
【図１９】BinHRDを説明する図である。
【図２０】シンタックスのさらに他の例を示す図である。
【図２１】レート制御部の他の構成例を示すブロック図である。
【図２２】レート制御処理の流れの、他の例を説明するフローチャートである。
【図２３】パーソナルコンピュータの主な構成例を示すブロック図である。
【図２４】テレビジョン装置の概略的な構成の一例を示すブロック図である。
【図２５】携帯電話機の概略的な構成の一例を示すブロック図である。
【図２６】記録再生装置の概略的な構成の一例を示すブロック図である。
【図２７】撮像装置の概略的な構成の一例を示すブロック図である。
【発明を実施するための形態】
【００２６】
以下、本開示を実施するための形態（以下実施の形態とする）について説明する。なお、説明は以下の順序で行う。
１．第１の実施の形態（画像符号化装置）
２．第２の実施の形態（画像復号装置）
３．第３の実施の形態（画像符号化装置）
４．第４の実施の形態（パーソナルコンピュータ）
５．第５の実施の形態（テレビジョン受像機）
６．第６の実施の形態（携帯電話機）
７．第７の実施の形態（ハードディスクレコーダ）
８．第８の実施の形態（カメラ）
【００２７】
＜１．第１の実施の形態＞
［画像符号化装置］
図１は、画像符号化装置の主な構成例を示すブロック図である。
【００２８】
図１に示される画像符号化装置１００は、H．264及びMPEG（Moving Picture Experts Group）4 Part10（AVC（Advanced Video Coding））符号化方式のように、ストリームを破綻なく伝送させるようにコードストリームのレート制御を行いながら、画像データを符号化する。
【００２９】
図１に示されるように画像符号化装置１００は、A/D変換部１０１、画面並べ替えバッファ１０２、演算部１０３、直交変換部１０４、量子化部１０５、可逆符号化部１０６、および蓄積バッファ１０７を有する。また、画像符号化装置１００は、逆量子化部１０８、逆直交変換部１０９、演算部１１０、ループフィルタ１１１、フレームメモリ１１２、選択部１１３、イントラ予測部１１４、動き予測・補償部１１５、予測画像選択部１１６、およびレート制御部１１７を有する。
【００３０】
A/D変換部１０１は、入力された画像データをA/D変換し、変換後の画像データ（デジタルデータ）を、画面並べ替えバッファ１０２に供給し、記憶させる。画面並べ替えバッファ１０２は、記憶した表示の順番のフレームの画像を、GOP（Group Of Picture）に応じて、符号化のためのフレームの順番に並べ替え、演算部１０３、イントラ予測部１１４、および動き予測・補償部１１５に供給する。
【００３１】
演算部１０３は、画面並べ替えバッファ１０２から読み出された画像から、予測画像選択部１１６を介してイントラ予測部１１４若しくは動き予測・補償部１１５から供給される予測画像を減算し、その差分情報を直交変換部１０４に出力する。
【００３２】
直交変換部１０４は、演算部１０３から供給される差分情報に対して、例えば離散コサイン変換やカルーネン・レーベ変換等の直交変換を施し、量子化部１０５に供給する。量子化部１０５は、直交変換部１０４から供給される変換係数を量子化する。量子化部１０５は、レート制御部１１７から供給される符号量の目標値に関する情報に基づいて量子化パラメータを設定し、その量子化を行う。なお、この量子化の方法は任意である。量子化部１０５は、量子化された変換係数を可逆符号化部１０６に供給する。
【００３３】
可逆符号化部１０６は、量子化部１０５において量子化された変換係数を任意の符号化方式で符号化する。係数データは、レート制御部１１７の制御の下で量子化されているので、この符号量は、レート制御部１１７が設定した目標値となる（若しくは目標値に近似する）。
【００３４】
また、可逆符号化部１０６は、イントラ予測のモードを示す情報などをイントラ予測部１１４から取得し、インター予測のモードを示す情報や動きベクトル情報などを動き予測・補償部１１５から取得する。さらに、可逆符号化部１０６は、ループフィルタ１１１において使用されたフィルタ係数等を取得する。
【００３５】
可逆符号化部１０６は、これらの各種情報を任意の符号化方式で符号化し、符号化データのヘッダ情報の一部とする（多重化する）。可逆符号化部１０６は、符号化して得られた符号化データを蓄積バッファ１０７に供給して蓄積させる。
【００３６】
可逆符号化部１０６の符号化方式としては、例えば、可変長符号化または算術符号化等が挙げられる。可変長符号化としては、例えば、H．264/AVC方式で定められているCAVLC（Context-Adaptive Variable Length Coding）などが挙げられる。算術符号化としては、例えば、CABAC（Context-Adaptive Binary Arithmetic Coding）などが挙げられる。
【００３７】
蓄積バッファ１０７は、可逆符号化部１０６から供給された符号化データを、一時的に保持する。蓄積バッファ１０７は、所定のタイミングにおいて、保持している符号化データを、例えば、後段の図示せぬ記録装置（記録媒体）や伝送路などに出力する。
【００３８】
また、量子化部１０５において量子化された変換係数は、逆量子化部１０８にも供給される。逆量子化部１０８は、その量子化された変換係数を、量子化部１０５による量子化に対応する方法で逆量子化し、得られた変換係数を、逆直交変換部１０９に供給する。
【００３９】
逆直交変換部１０９は、逆量子化部１０８から供給された変換係数を、直交変換部１０４による直交変換処理に対応する方法で逆直交変換し、逆直交変換された出力（復元された差分情報）は、演算部１１０に供給される。
【００４０】
演算部１１０は、逆直交変換部１０９から供給された逆直交変換結果、すなわち、復元された差分情報に、予測画像選択部１１６を介してイントラ予測部１１４若しくは動き予測・補償部１１５から供給される予測画像を加算し、局部的に復号された画像（復号画像）を得る。その復号画像は、ループフィルタ１１１およびフレームメモリ１１２に供給される。
【００４１】
ループフィルタ１１１は、デブロックフィルタや適応ループフィルタ等を含み、演算部１１０から供給される復号画像に対して適宜フィルタ処理を行う。例えば、ループフィルタ１１１は、復号画像に対してデブロックフィルタ処理を行うことにより復号画像のブロック歪を除去する。また、例えば、ループフィルタ１１１は、そのデブロックフィルタ処理結果（ブロック歪みの除去が行われた復号画像）に対して、ウィナーフィルタ（Wiener Filter）を用いてループフィルタ処理を行うことにより画質改善を行う。
【００４２】
なお、ループフィルタ１１１が、復号画像に対して任意のフィルタ処理を行うようにしてもよい。また、ループフィルタ１１１は、必要に応じて、フィルタ処理に用いたフィルタ係数等の情報を可逆符号化部１０６に供給し、それを符号化させるようにすることもできる。
【００４３】
ループフィルタ１１１は、フィルタ処理結果（フィルタ処理後の復号画像）をフレームメモリ１１２に供給する。
【００４４】
選択部１１３は、フレームメモリ１１２から供給される参照画像の供給先を選択する。例えば、イントラ予測の場合、選択部１１３は、フレームメモリ１１２から供給される参照画像をイントラ予測部１１４に供給する。また、例えば、インター予測の場合、選択部１１３は、フレームメモリ１１２から供給される参照画像を動き予測・補償部１１５に供給する。
【００４５】
イントラ予測部１１４は、選択部１１３を介してフレームメモリ１１２から供給される参照画像を用いてイントラ予測（画面内予測）を行う。イントラ予測部１１４は、最適なモードで生成した予測画像を、予測画像選択部１１６に供給する。また、イントラ予測部１１４は、採用されたイントラ予測モードを示すイントラ予測モード情報等を、適宜可逆符号化部１０６に供給し、符号化させる。
【００４６】
動き予測・補償部１１５は、画面並べ替えバッファ１０２から供給される入力画像と、選択部１１３を介してフレームメモリ１１２から供給される参照画像とを用いて、動き予測（インター予測）を行い、動き補償処理によって予測画像（インター予測画像情報）を生成する。動き予測・補償部１１５は、最適なインター予測モードで生成した予測画像を、予測画像選択部１１６に供給する。また、動き予測・補償部１１５は、採用されたインター予測モードを示す情報や、符号化データを復号する際に、そのインター予測モードで処理を行うために必要な情報等を可逆符号化部１０６に供給し、符号化させる。
【００４７】
予測画像選択部１１６は、演算部１０３や演算部１１０に供給する予測画像の供給元を選択する。つまり、予測画像選択部１１６は、イントラ予測部１１４から供給される予測画像と、動き予測・補償部１１５から供給される予測画像とのいずれか一方を選択し、選択した方の予測画像を、演算部１０３や演算部１１０に供給する。
【００４８】
レート制御部１１７は、可逆符号化部１０６において発生したバイナリデータのデータ量（発生Binとも称する）や、蓄積バッファ１０７に蓄積された符号化データの符号量（発生Bitとも称する）等に基づいて、オーバフローあるいはアンダーフローが発生しないように、量子化部１０５の量子化動作のレートの制御方法を決定したり、その制御方法で実際にレートを制御したりする。
【００４９】
量子化部１０５は、レート制御部１１７から供給される、レートを制御する制御情報（ビットレートの目標値）であるターゲットビット（Target Bit）を取得し、そのターゲットビット（目標レート）が得られるように量子化パラメータを制御し、量子化を行う。
【００５０】
可逆符号化部１０６は、CABAC等の算術符号化を行う場合、バイナリデータのデータ量（発生Bin）をレート制御部１１７に供給する。
【００５１】
蓄積バッファ１０７は、可逆符号化部１０６がCAVLC等の可変長符号化を行う場合、コードストリームのデータ量（発生Bit）をレート制御部１１７に供給する。また、蓄積バッファ１０７は、レート制御部１１７において設定された、仮想デコーダに関する各種パラメータを取得し、それをコードストリームとともに伝送させる。
【００５２】
［HRDモデル］
デコーダは、エンコーダから伝送路を介して供給されるビットストリームを取得すると、それをバッファに保持する。デコーダは、ビットストリームを復号する際、そのバッファから必要なデータを読み出して復号を行う。その際、バッファがオーバフロー（ビットストリームがバッファからあふれてしまう場合）したり、アンダーフロー（デコーダが復号する際にビットストリームがまだ入力しきれていない場合）したりすると、デコーダは、正しくビットストリームを復号することができなくなる。
【００５３】
そのため、エンコーダは、そのビットストリームをデコードするデコーダを破綻させることがないように（オーバフローやアンダーフローが発生しないように）、ビットストリームを生成しなければならない。
【００５４】
これを実現するために、AVC等の符号化方式においては、仮想デコーダという概念が導入された。仮想デコーダとは、デコーダの振る舞い（バッファの状態）を仮想的にモデル化したものである。エンコーダは、この仮想デコーダを破たんさせないように符号化を行うことにより、デコーダを破綻させることがないビットストリームを生成することができる。
【００５５】
HRD（Hypothetical reference decoder）は、H.264/AVC標準が規定する仮想デコーダモデルである。このHRDには、例えばデコーダに入力される前のビットストリームを保存するバッファであるCPB（Coded Picture Buffer）が含まれる。
【００５６】
図２は、レート制御部１１７で計算されるHRDモデルの例を説明する図である。HRDでは、このCPBへのビットストリームの流入速度（trace rate）と、CPBのサイズ（CPB size）が規定される。trace rateは、bit_rate_scaleとbit_rate_value_minus1により規定され、CPB sizeは、cpb_size_scaleとcpb_size_value_minus1で規定される。
【００５７】
これらの変数（bit_rate_scale，bit_rate_value_minus1，cpb_size_scale、およびcpb_size_value_minus1）は、図３に示されるようにシンタックス（HRD Parameters syntax）に記述される。
【００５８】
図２のグラフにおいて、横軸は時間方向を示し、縦軸は、CPBに蓄積されるビットストリームの符号量を示す。垂直方向の各点線は、CPBからのデータの読み出しタイミングを示す。つまり、各点線の間隔がフレーム間隔（frame_rate）を示す。また図２のグラフの曲線は、現在のビットストリームの蓄積量を示す。
【００５９】
この仮想デコーダモデルにおいて、エンコーダから供給されるビットストリームは、次の垂直方向の点線（読み出しタイミング）までCPBに蓄積される。つまり、このときの曲線の傾きは、ビットストリームの流入速度（trace rate）を示す。
【００６０】
読み出しタイミングになると、CPBに蓄積されている所定量のビットストリームが、瞬時に読み出される。したがって、図２のグラフの曲線は垂直に降下する。そしてまた、次の読み出しタイミング（垂直方向の点線）までビットストリームの蓄積が行われる。
【００６１】
CPBにおいては、このようなビットストリームの入出力が繰り返し行われる。なお、図２において、水平方向の点線は、CPBのバッファサイズ（CPB size）（蓄積可能な符号量の最大値）を示す。つまり、図２のグラフの曲線が、この水平方向の点線より上に位置する場合、デコードタイミングでバッファがあふれるオーバフロー（Overflow）が発生したことを示す。
【００６２】
また、CPBからビットストリームが読み出されることにより、図２のグラフの曲線が、横軸より下に位置する場合、デコードタイミングにデータが届かないアンダーフロー（Underflow）が発生したことを示す。
【００６３】
つまり、エンコーダ（画像符号化装置１００）は、CPB sizeの中でアンダーフローやオーバフローが発生しないようにレート制御を行う必要がある。
【００６４】
従来、これらのパラメータはすべて発生符号量で規定されていた。しかしながら、実際エンコーダではCABACの場合、算術符号器に入力するためにバイナライゼーションという処理によりバイナリデータ（２値データやBinとも称する）に変換されその後、算術符号により最終的なビットストリーム（Bitとも称する）に変換される。一般的には算術符号は遅延が発生するために一画面分の最終的なBitが確定するタイミングではマクロブロックのモード判定などの条件選択はすべて終了してしまっている。
【００６５】
図４に符号化に関する各処理のタイミングチャートの例を示す。各四角は、それぞれの処理単位毎の各処理を示す。図３に示されるように、算術符号化後の発生Bit量が確定するタイミングでは、符号化（その他の処理）は終了してしまっている。アーキテクチャ依存ではあるが、binからbitが確定するまでに数フレーム遅延するものも存在する。
【００６６】
レート制御においては、これから符号化するというタイミングでHRDがアンダーフローしないために使用できるBit量が求められる。CABACで符号化している場合、Bitの確定に遅延が発生するためにマクロブロックでフィードバック制御を行ったとしても、図５に示されるように、ある程度のマージンが必要になる。
【００６７】
つまり、図５に示されるように、Bit確定の遅延を考慮したマージンを確保する必要があるので、エンコーダは、使用可能Bit量として、実際に使用できるBit量からそのマージン分を減算した分しか確保することができない恐れがあった。
【００６８】
上述したようにbinからbitが確定するまでに数フレーム遅延するような場合、たとえば、buffering period seiで定義されるinitial_cpb_removal_delayなどを決定するときにbitでのHRDトレースが終了していない可能性がある。その場合、さらにマージンを確保する必要が生じ、確保できる使用可能Bit量はさらに低減される恐れがあった。
【００６９】
これにより、不要に符号量が抑制されるだけでなく、条件が厳しくなることにより、符号化が困難になる恐れがあった。
【００７０】
［Binによる規定］
そこで、図１の画像符号化装置１００のレート制御部１１７は、HRD制御をBinで定義する。つまり、レート制御部１１７は、CPBへのビットストリームの流入速度と、CPBのサイズをBinにより規定する（trace rate binおよびCPB size bin）。
【００７１】
なお、発生Binは、発生Bitより必ず大きい。また、Bitの遷移は必ず、BinのHRDの推移より小さくなる。したがって、BinでHRDを定義し、CPBをBinのサイズ分確保するようにすれば、ビットストリームにおいても必ず条件が満たされる。つまり、デコーダにおいて破綻しないようなビットストリームの生成が可能である。
【００７２】
このようにHRDをBinで規定することにより、遅延によるマージンを確保する必要が無いので、Bitで規定する場合よりもHRDの規定が容易になる。つまり、画像符号化装置１００は、より容易にレート制御を行うことができる。
【００７３】
HRD（CPB）の規定は、例えば、そのサイズや位置（蓄積量）を規定することにより行われる。例えば、レート制御部１１７は、所定のパラメータを用いて、Bitで規定されたHRD（CPB）を、Binによる規定に変換する。このBitで規定されたHRD（CPB）をBinで規定する際に用いるパラメータをバッファモデルパラメータと称する（バイナリパラメータとも称する）。
【００７４】
一般的にCABACのBinはBitに対して1.2倍程度になる。そこで、BinのHRDをBitのHRDの1.2倍とするようにしてもよい。図６は、その場合の、Binで規定するHRDモデルと、Bitで規定するHRDモデルを比較した場合の例を示す図である。図６に示されるグラフは、図２に示されるグラフに、Binで規定するHRDモデルの例を重畳したものである。
【００７５】
図６に示されるように、Binで規定するHRDモデルの場合のCPBサイズ（CPB size bin）は、Bitで規定するHRDモデルの場合（CPB size）よりも大きい。また、Binで規定するHRDモデルの場合の、その時点のCPBのデータ蓄積量を示すCPB位置（CPB pos bin）は、Bitで規定するHRDモデルの場合（CPB pos）よりも大きい。また、そのCPB位置の推移は、Binで規定するHRDモデルの場合の方が大きい。
【００７６】
したがって、レート制御部１１７は、Binにより規定されるHRDモデルを用いて、破綻しないようにビットレートを制御することにより、Bitにより規定されるHRDモデルにおいても破綻しないビットストリームを生成することができるようにレート制御を行うことができる。
【００７７】
このような制御のために、レート制御部１１７は、Binにより規定する場合と、Bitにより規定する場合との比を示すbit_to_binをバッファモデルパラメータとして設定する。つまり、bit_to_binは、ビットストリームの符号量をバイナリデータのデータ量に換算する変換用のパラメータである。また、レート制御部１１７は、このバッファモデルパラメータbit_to_binを用いて、Bitで規定されたHRD（CPB）を、Binによる規定に変換する。
【００７８】
まず、CPBへのビットストリームの流入速度（BitRate）と、CPBのサイズ（CpbSize）とは、発生Bit量を用いて、以下の式（１）および式（２）のように規定される。
【００７９】
BitRate［SchedSelIdx］＝（bit_rate_value_minus1［SchedSelIdx］＋1）
×2（6＋bit_rate_scale）
・・・（１）
CpbSize［SchedSelIdx］＝（cpb_size_value_minus1［SchedSelIdx］＋1）
×2（4＋cpb_size_scale）
・・・（２）
【００８０】
ここで求められたBitRate（trace rate）とCpbSizeは、bit_to_binパラメータを用いて、以下の式（３）および式（４）に示されるように再計算され、Binによる規定に変換される。
Bitrate＝Bitrate×（32＋bit_to_bin）＞＞5  ・・・（３）
CpbSize＝CpbSize×（32＋bit_to_bin）＞＞5  ・・・（４）
【００８１】
ここで、「＞＞5」は５ビットの右シフトを示す。また、パラメータbit_to_binは「０」乃至「３２」の値をとるものとする。例えばbit_to_binが「０」の場合、Binで規定されるBitRateとCpbSizeは、Bitで規定される場合の1.0倍となる。また例えば、bit_to_binが「３２」の場合、Binで規定されるBitRateとCpbSizeは、Bitで規定される場合の2.0倍となる。つまり、bit_to_binは、1/32精度で1.0乃至2.0を表現することができる。
【００８２】
なお、ストリームの途中でCABACとCAVLCとを切り換えることが可能である。このように符号化方式を切り換える場合、レート制御部１１７は、さらに、CPB位置（CPB pos）を、bit_to_binパラメータを用いて、以下の式（５）若しくは式（６）に示されるように再計算する。
【００８３】
CABACからCAVLCに切り替わる場合
CpbPos＝CpbPos×32／（32＋bit_to_bin）  ・・・（５）
CAVLCからCABACに切り替わる場合
CpbPos＝CpbPos×（32＋bit_to_bin）＞＞5  ・・・（６）
【００８４】
図７に符号化方式を切り換える場合のHRDモデルの例を示す。図７に示されるグラフは、図２や図６に示されるグラフと同様のグラフである。ただし、図７の例の場合、符号化方式を、途中でCABACからCAVLCに切り替え、さらにCAVLCからCABACに切り換えている。
【００８５】
なお、bit_to_binパラメータの値は、CABACの場合「1.2」とし、CAVLCの場合「1.0」とする。すなわち、CABACの場合、HRDをBinにより規定し、CAVLCの場合、HRDをBitにより規定する。
【００８６】
直線１３１は、CABACで符号化を行う１回目の期間のCPBバッファサイズ（CPB size）を示す。直線１３２は、CAVLCで符号化を行う期間のCPBバッファサイズ（CPB size）を示す。直線１３３は、CABACで符号化を行う２回目の期間のCPBバッファサイズ（CPB size）を示す。つまり、直線１３１および直線１３３は、Binで規定されるCPBバッファサイズ（CPB size）を示し、直線１３２は、Bitで規定されるCPBバッファサイズ（CPB size）を示す。
【００８７】
CABACにより符号化が開始されると、CPB位置は、曲線１３４のように遷移する。つまり、ビットストリームがCPBに蓄積され、読み出しタイミングになると、CPB位置１３４−１まで蓄積されたビットストリームがCPB位置１３４−２まで読み出される。その後、また蓄積が行われ、次の読み出しタイミングにおいて、CPB位置１３４−３まで蓄積されたビットストリームがCPB位置１３４−４まで読み出される。同様に、その次の読み出しタイミングにおいては、CPB位置１３４−５まで蓄積されたビットストリームがCPB位置１３４−６まで読み出され、さらにその次の読み出しタイミングにおいては、CPB位置１３４−７まで蓄積されたビットストリームがCPB位置１３４−８まで読み出される。
【００８８】
これらはBin換算である。Bit換算（1/1.2）の場合、各読み出しタイミングにおいて、ビットストリームは、CPB位置P1乃至P4まで蓄積されることになる。このように、Bitにより規定されるCPB位置（P1乃至P4）は、Binにより規定されるCPB位置（CPB位置１３４−１、CPB位置１３４−３、CPB位置１３４−５、およびCPB位置１３４−７）よりも必ず小さくなる。したがって、Bitにより規定されるHRDにおいてもオーバフローが生じることはない。
【００８９】
符号化方式がCABACからCAVLCに切り替わる際、CPB位置（CPB pos）は、bit_to_binパラメータを用いて、上述した式（５）のように再計算される。つまり、CPB位置１３４−８が、CPB位置１３５−１に変換される。
【００９０】
このとき、CPB位置１３５−１は、CPB位置１３４−８より小さいが、Binにより規定されるHRDの方が、Bitにより規定されるHRDよりもCPB位置の推移は小さいので、この変換によりアンダーフローが生じることは無い。
【００９１】
CAVLCによる符号化により、CPB位置は、曲線１３５のように変化する。符号化方式がCAVLCからCABACに切り替わる際、CPB位置（CPB pos）は、bit_to_binパラメータを用いて、上述した式（６）のように再計算される。つまり、CPB位置１３５−２が、CPB位置１３６−１に変換される。
【００９２】
このとき、CPB位置１３６−１は、CPB位置１３５−２より大きく、この変換によりアンダーフローが生じることはない。その後、CABACによる符号化により、CPB位置は、曲線１３６のように変化する。
【００９３】
このように、レート制御部１１７は、オーバフローやアンダーフローを発生させることなく、Binによる規定とBitによる規定とを容易に切り換えることができるので、符号化方式の切り換える場合であっても容易にレートを制御することができる。
【００９４】
［シンタックス］
レート制御部１１７は、以上のようなレート制御のために、図３に示したHRD Parametersに、図８に示されるようにシンタックスを追加する。図８に示されるHRD Parametersには、図３に示されるHRD Parametersに、use_bin_hrd_flag，use_bit_to_bin_flag、および、bit_to_binが追加されている（上から第９行目乃至第１１行目）。
【００９５】
バイナリパラメータuse_bin_hrd_flagは、binのHRDをBitのHRDと別のHRD parameterで用意するかどうかを示すパラメータ（フラグ）である。このuse_bin_hrd_flagがtrueの場合は、bitのHRDとbinのHRDが別々に定義され、別々にトレースされる。
【００９６】
バイナリパラメータuse_bit_to_bin_flagは、bit_to_binによるHRDトレース変換を行うかどうかを決定するパラメータ（フラグ）である。
【００９７】
バイナリパラメータbit_to_binは、binでHRDをトレースする際の変換パラメータである。use_bin_hrd_flagがtrueの場合のみ定義される。
【００９８】
これらのようなシンタックスが復号側に伝送される。
【００９９】
［可逆符号化部］
次に、図１の画像符号化装置１００の各部についてより具体的に説明する。図９は、可逆符号化部１０６の主な構成例を示すブロック図である。
【０１００】
図９に示されるように、画像符号化装置１００は、符号化モード設定部１４１、CABAC処理部１４２、およびCAVLC処理部１４３を有する。
【０１０１】
符号化モード設定部１４１は、可逆符号化処理のモードを設定する。より具体的には、符号化モード設定部１４１は、CABAC処理部１４２およびCAVLC処理部１４３を制御し、可逆符号化処理をCABACで行うかCAVLCで行うかを設定する。符号化モード設定部１４１は、選択した符号化モードを示すパラメータ（フラグ）であるentropy_coding_mode_flagを生成し、それをレート制御部１１７に供給する。
【０１０２】
CABAC処理部１４２は、符号化モード設定部１４１の制御に従ってCABACによる符号化を行う。つまり、CABAC処理部１４２は、符号化モード設定部１４１により符号化モードとしてCABACが選択された場合、符号化処理を行う。
【０１０３】
図９に示されるように、CABAC処理部１４２は、２値化部１５１、コンテキスト計算部１５２、および２値算術符号化部１５３を有する。２値化部１５１は、量子化部１０５から供給される多値信号を２値化し、得られた２値信号（バイナリデータ）を２値算術符号化部１５３に供給する。２値算術符号化部１５３は、２値化部１５１から供給される２値信号を、コンテキスト計算部１５２から供給される２値信号発生確率を用いて符号化し、得られた符号化ビットを蓄積バッファ１０７に供給する。
【０１０４】
２値化部１５１は、また、２値化により発生したバイナリデータのデータ量（発生Bin）をレート制御部１１７に供給する。
【０１０５】
CAVLC処理部１４３は、符号化モード設定部１４１の制御に従ってCAVLCによる符号化を行う。つまり、CAVLC処理部１４３は、符号化モード設定部１４１により符号化モードとしてCAVLCが選択された場合、符号化処理を行う。CAVLC処理部１４３は、量子化部１０５から供給される多値信号を符号化し、得られた符号化ビットを蓄積バッファ１０７に供給する。
【０１０６】
［レート制御部］
図１０は、図１のレート制御部１１７の主な構成例を示すブロック図である。図１０に示されるように、レート制御部１１７は、パラメータ設定部１６１、HRDトレース部１６２、CPB位置変換部１６３、およびターゲットビット決定部１６４を有する。
【０１０７】
パラメータ設定部１６１は、パラメータ（フラグを含む）等のシンタックスの値を設定する。この設定方法は任意である。例えば、パラメータ設定部１６１は、例えば、開発者やユーザ等の外部から値を取得し、その値をパラメータとして設定するようにしてもよい。また、例えば、パラメータ設定部１６１は、符号化する画像データや符号化結果等に基づいて各値を設定するようにしてもよい。さらに、例えば、パラメータ設定部１６１は、予め定められた所定の値をパラメータとして設定するようにしてもよい。
【０１０８】
なお、パラメータ設定部１６１は、Bitで規定されたHRDをBinで規定する際に用いるものであればどのようなパラメータを設定するようにしてもよい。
【０１０９】
図１０の例において、パラメータ設定部１６１は、use_bin_hrd_flag設定部１７１、use_bit_to_bin_flag設定部１７２、および、bit_to_bin設定部１７３を有する。
【０１１０】
use_bin_hrd_flag設定部１７１は、use_bin_hrd_flagを設定する。use_bit_to_bin_flag設定部１７２は、use_bit_to_bin_flagを設定する。bit_to_bin設定部１７３は、bit_to_binを設定する。これらの値は、蓄積バッファ１０７に供給され、シンタックスとして復号側に伝送される。
【０１１１】
また、bit_to_bin設定部１７３は、生成したbit_to_binをCPB位置変換部１６３に供給する。
【０１１２】
HRDトレース部１６２は、最新のCPB位置を求める。例えば、HRDトレース部１６２は、発生Binや発生Bitに基づいて、最新のCPB位置を算出したり、CPB位置変換部１６３を用いて、符号化方式の切り替え等の際の、Binによる規定とBitによる規定との切り替えに伴い、CPB位置を更新させたりする。
【０１１３】
HRDトレース部１６２は、図１０に示されるように、entropy_coding_mode_flag取得部１８１、entropy_coding_mode_flag判定部１８２、last_entropy_coding_mode_flag記憶部１８３、発生量取得部１８４、およびCPB位置更新部１８５を有する。
【０１１４】
entropy_coding_mode_flag取得部１８１は、可逆符号化部１０６からentropy_coding_mode_flagを取得し、それをentropy_coding_mode_flag判定部１８２に供給する。entropy_coding_mode_flag判定部１８２は、entropy_coding_mode_flag取得部１８１から供給されたentropy_coding_mode_flagと、last_entropy_coding_mode_flag記憶部１８３に記憶されている前回のentropy_coding_mode_flagであるlast_entropy_coding_mode_flagとで値が一致するか否かを判定する。
【０１１５】
値が一致する場合、entropy_coding_mode_flag判定部１８２は、符号化モードが切り替わらないと判定し、前回と同モードでCPB位置を更新させるように指示する制御情報をCPB位置更新部１８５に供給する。また、値が不一致の場合、entropy_coding_mode_flag判定部１８２は、符号化モードが切り替わると判定し、entropy_coding_mode_flagをCPB位置変換部１６３に供給し、符号化モードの切り替えに伴うCPB位置変換を行わせる。
【０１１６】
発生量取得部１８４は、CABACの場合、可逆符号化部１０６から発生Bin（発生したバイナリデータのデータ量）を取得し、それをCPB位置更新部１８５に供給する。また、発生量取得部１８４は、CAVLCの場合、蓄積バッファ１０７から発生Bit（発生したビットストリームの符号量）を取得し、それをCPB位置更新部１８５に供給する。
【０１１７】
CPB位置更新部１８５は、entropy_coding_mode_flag判定部１８２から供給される制御情報に従って、CPB位置の更新を行う。例えば、entropy_coding_mode_flag判定部１８２から、発生Bin若しくは発生Bitに基づいてCPB位置の更新を行うように指示された場合、CPB位置更新部１８５は、発生量取得部１８４に発生Bin若しくは発生Bitを取得させ、それに基づいて最新のCPB位置を求める。例えば、CABACの場合、CPB位置更新部１８５は、発生量取得部１８４から供給される発生Binを用いて最新のCPB位置を求める。また、例えば、CAVLCの場合、CPB位置更新部１８５は、発生量取得部１８４から供給される発生Bitを用いて最新のCPB位置を求める。CPB位置更新部１８５は、求めた最新のCPB位置をターゲットビット決定部１６４に供給する。
【０１１８】
また、CPB位置更新部１８５は、entropy_coding_mode_flag判定部１８２から符号化モードを切り換えることが通知された場合、CPB位置変換部１６３から供給されるCPB位置を最新のCPB位置として、ターゲットビット決定部１６４に供給する。
【０１１９】
CPB位置変換部１６３は、HRDトレース部１６２のentropy_coding_mode_flag判定部１８２からentropy_coding_mode_flagが供給された場合、符号化モードが切り換えられたと判定し、CPB位置を変換する。CPB位置変換部１６３は、パラメータ設定部１６１により設定されたパラメータbit_to_binを用いてCPB位置を、Bitにより規定される位置からBinにより規定される位置へ、若しくは、Binにより規定される位置から、Bitにより規定される位置へ変換する。
【０１２０】
図１０に示されるように、CPB位置変換部１６３は、entropy_coding_mode_flag取得部１９１、entropy_coding_mode_flag判定部１９２、bit_to_bin取得部１９３、およびCPB位置算出部１９４を有する。
【０１２１】
entropy_coding_mode_flag取得部１９１は、HRDトレース部１６２から供給されるentropy_coding_mode_flagを取得し、それをentropy_coding_mode_flag判定部１９２に供給する。entropy_coding_mode_flag判定部１９２は、そのentropy_coding_mode_flagの値がtrueであるか否かを判定し、その判定結果をbit_to_bin取得部１９３に供給する。
【０１２２】
bit_to_bin取得部１９３は、パラメータ設定部１６１（bit_to_bin設定部１７３）からbit_to_binを取得し、それを、判定結果とともにCPB位置算出部１９４に供給する。
【０１２３】
CPB位置算出部１９４は、entropy_coding_mode_flagがtrueの場合、符号化モードがCABACからCAVLCに切り替わったと判定し、上述した式（５）を用いてCPB位置を変換する。また、CPB位置算出部１９４は、entropy_coding_mode_flagがfalseの場合、符号化モードがCAVLCからCABACに切り替わったと判定し、上述した式（６）を用いてCPB位置を変換する。
【０１２４】
CPB位置算出部１９４は、算出したCPB位置をHRDトレース部１６２（CPB位置更新部１８５）に供給する。
【０１２５】
ターゲットビット設定部１６４は、HRDトレース部１６２（CPB位置更新部１８５）から供給された最新のCPB位置に基づいてターゲットビット（Target Bit）の値を決定する。ターゲットビット決定部１６４は、決定した値を量子化部１０５に供給する。
【０１２６】
以上のように各部が処理を行うことにより、レート制御部１１７は、Binにより規定するHRDを用いてより容易にレート制御を行うことができる。
【０１２７】
［符号化処理の流れ］
次に、以上のような画像符号化装置１００により実行される各処理の流れについて説明する。最初に、図１１のフローチャートを参照して、符号化処理の流れの例を説明する。
【０１２８】
ステップＳ１０１において、A/D変換部１０１は入力された画像をA/D変換する。ステップＳ１０２において、画面並べ替えバッファ１０２は、A/D変換された画像を記憶し、各ピクチャの表示する順番から符号化する順番への並べ替えを行う。
【０１２９】
ステップＳ１０３において、イントラ予測部１１４は、イントラ予測モードのイントラ予測処理を行う。ステップＳ１０４において、動き予測・補償部１１５は、インター予測モードでの動き予測や動き補償を行うインター動き予測処理を行う。
【０１３０】
ステップＳ１０５において、予測画像選択部１１６は、イントラ予測部１１４および動き予測・補償部１１５から出力された各コスト関数値に基づいて、最適なモードを決定する。つまり、予測画像選択部１１６は、イントラ予測部１１４により生成された予測画像と、動き予測・補償部１１５により生成された予測画像のいずれか一方を選択する。
【０１３１】
ステップＳ１０６において、演算部１０３は、ステップＳ１０２の処理により並び替えられた画像と、ステップＳ１０５の処理により選択された予測画像との差分を演算する。差分データは元の画像データに較べてデータ量が低減される。したがって、画像をそのまま符号化する場合に較べて、データ量を圧縮することができる。
【０１３２】
ステップＳ１０７において、直交変換部１０４は、ステップＳ１０６の処理により生成された差分情報を直交変換する。具体的には、離散コサイン変換、カルーネン・レーベ変換等の直交変換が行われ、変換係数が出力される。
【０１３３】
ステップＳ１０８において、量子化部１０５は、ステップＳ１０７の処理により得られた直交変換係数を量子化する。
【０１３４】
ステップＳ１０８の処理により量子化された差分情報は、次のようにして局部的に復号される。すなわち、ステップＳ１０９において、逆量子化部１０８は、ステップＳ１０８の処理により生成された量子化された直交変換係数（量子化係数とも称する）を量子化部１０５の特性に対応する特性で逆量子化する。ステップＳ１１０において、逆直交変換部１０９は、ステップＳ１０７の処理により得られた直交変換係数を、直交変換部１０４の特性に対応する特性で逆直交変換する。
【０１３５】
ステップＳ１１１において、演算部１１０は、予測画像を局部的に復号された差分情報に加算し、局部的に復号された画像（演算部１０３への入力に対応する画像）を生成する。ステップＳ１１２においてループフィルタ１１１は、ステップＳ１１１の処理により得られた局部的な復号画像に対して、デブロックフィルタ処理や適応ループフィルタ処理等を含むループフィルタ処理を適宜行う。
【０１３６】
ステップＳ１１３において、フレームメモリ１１２は、ステップＳ１１２の処理によりループフィルタ処理が施された復号画像を記憶する。なお、フレームメモリ１１２にはループフィルタ１１１によりフィルタ処理されていない画像も演算部１１０から供給され、記憶される。
【０１３７】
ステップＳ１１４において、可逆符号化部１０６は、ステップＳ１０８の処理により量子化された変換係数を符号化する。すなわち、差分画像に対して、可変長符号化や算術符号化等の可逆符号化が行われる。
【０１３８】
なお、可逆符号化部１０６は、ステップＳ１０８において算出された量子化パラメータを符号化し、符号化データに付加する。また、可逆符号化部１０６は、ステップＳ１０５の処理により選択された予測画像の予測モードに関する情報を符号化し、差分画像を符号化して得られる符号化データに付加する。つまり、可逆符号化部１０６は、イントラ予測部１１４から供給される最適イントラ予測モード情報、または、動き予測・補償部１１５から供給される最適インター予測モードに応じた情報なども符号化し、符号化データに付加する。
【０１３９】
ステップＳ１１５において蓄積バッファ１０７は、ステップＳ１１４の処理により得られた符号化データを蓄積する。蓄積バッファ１０７に蓄積された符号化データは、適宜読み出され、伝送路や記録媒体を介して復号側に伝送される。
【０１４０】
ステップＳ１１６においてレート制御部１１７は、HRDを用い、ステップＳ１１５の処理により蓄積バッファ１０７に蓄積された符号化データの符号量（発生符号量）若しくは、ステップＳ１１４の処理において生成されるバイナリデータのデータ量に基づいて、HRDにおいてオーバフローあるいはアンダーフローが発生しないように、量子化部１０５の量子化動作のレートを制御する。
【０１４１】
ステップＳ１１４においてCABAC等の算術符号化が行われる場合、レート制御部１１７は、Binにより規定されるHRDを用いてレート制御を行う。また、ステップＳ１１４においてCAVLC等の可変長符号化が行われる場合、レート制御部１１７は、Bitにより規定されるHRDを用いてレート制御を行う。
【０１４２】
ステップＳ１１６の処理が終了すると、符号化処理が終了される。
【０１４３】
［レート制御処理の流れ］
次に、図１２のフローチャートを参照して、図１１のステップＳ１１６において実行されるレート制御処理の流れの例を説明する。
【０１４４】
レート制御処理が開始されると、ステップＳ１２１において、パラメータ設定部１６１は、Bitで規定されるHRDをBinで規定する際に用いるバッファも出るパラメータを設定する。
【０１４５】
各種パラメータが設定されると、パラメータ設定部１６１は処理を進める。ステップＳ１２２において、HRDトレース部１６２のentropy_coding_mode_flag取得部１８１は、可逆符号化部１０６から供給されるentropy_coding_mode_flagを取得する。
【０１４６】
ステップＳ１２３において、entropy_coding_mode_flag判定部１８２は、ステップＳ１２２において取得されたentropy_coding_mode_flagがlast_entropy_coding_mode_flag記憶部１８３に記憶されるlast_entropy_coding_mode_flagと一致するか否かを判定する。
【０１４７】
一致すると判定した場合、entropy_coding_mode_flag判定部１８２は、処理をステップＳ１２４に進める。ステップＳ１２４において、発生量取得部１８４は、蓄積バッファ１０７から供給される発生Bit、若しくは、可逆符号化部１０６から供給される発生Binを取得する。
【０１４８】
これに対して一致しないと判定した場合、entropy_coding_mode_flag判定部１８２は、処理をステップＳ１２５に進める。ステップＳ１２５において、CPB位置変換部１６３は、CPB位置変換処理を行い、符号化モード切り替え時のCPB位置の変換を行う。
【０１４９】
ステップＳ１２４若しくはステップＳ１２５の処理が終了すると、ステップＳ１２６において、CPB位置更新部１８５は、CPB位置を更新する。
【０１５０】
ステップＳ１２７において、last_entropy_coding_mode_flag記憶部１８３は、自身が記憶するlast_entropy_coding_mode_flagを、entropy_coding_mode_flag判定部１８２から供給されたentropy_coding_mode_flagを用いて更新する（置き換える）。
【０１５１】
ステップＳ１２８において、ターゲットビット決定部１６４は、ステップＳ１２６において更新されたCPB位置に基づいて、ターゲットビット（Target Bit）を決定し、それを量子化部１０５に供給する。
【０１５２】
ステップＳ１２８の処理を終了すると、ターゲットビット決定部１６４は、レート制御処理を終了する。
【０１５３】
［パラメータ設定処理の流れ］
次に、図１３のフローチャートを参照して、図１２のステップＳ１２１において実行されるパラメータ設定処理の流れの例を説明する。
【０１５４】
パラメータ設定処理が開始されると、use_bin_hrd_flag設定部１７１は、ステップＳ１３１において、use_bin_hrd_flagを設定する。ステップＳ１３２において、use_bit_to_bin_flag設定部１７２は、use_bit_to_bin_flagを設定する。ステップＳ１３３において、bit_to_bin設定部１７３は、bit_to_binを設定する。
【０１５５】
ステップＳ１３４において、パラメータ設定部１６１は、ステップＳ１３１乃至ステップＳ１３３において設定された各パラメータを蓄積バッファ１０７に供給し、シンタックスとして、例えばSEI（Supplemental Enhancement Information）等のパラメータセットに格納させ、伝送させる。例えば、レート制御部１１７は、これらのシンタックスを、バッファ管理に関するSEI（buffering period sei）において定義し、伝送させるようにしてもよい。さらに、例えば、レート制御部１１７は、これらのシンタックスをビットストリーム（例えばヘッダ等）に含めて復号側に伝送させるようにしてもよい。
【０１５６】
ステップＳ１３４の処理を終了するとパラメータ設定部１６１は、パラメータ設定処理を終了し、処理を図１２に戻す。
【０１５７】
［CPB位置変換処理の流れ］
次に、図１４のフローチャートを参照して、図１２のステップＳ１２５において実行されるCPB変換処理の流れの例を説明する。
【０１５８】
CPB変換処理が開始されると、entropy_coding_mode_flag取得部１９１は、ステップＳ１４１において、HRDトレース部１６２から供給されるentropy_coding_mode_flagを取得する。ステップＳ１４２において、entropy_coding_mode_flag判定部１９２は、ステップＳ１４１において取得されたentropy_coding_mode_flagの値がtrueであるか否かを判定する。
【０１５９】
entropy_coding_mode_flagがtrueであると判定された場合、entropy_coding_mode_flag判定部１９２は、符号化モードがCABACからCAVLCに切り換えられたと判定し、処理をステップＳ１４３に進める。ステップＳ１４３において、bit_to_bin取得部１９３は、パラメータ設定部１６１により設定されたbit_to_binを取得する。ステップＳ１４４において、CPB位置算出部１９４は、式（５）を用いてCPB位置を算出する。
【０１６０】
また、ステップＳ１４２において、entropy_coding_mode_flagがfalseであると判定された場合、entropy_coding_mode_flag判定部１９２は、符号化モードがCAVLCからCABACに切り換えられたと判定し、処理をステップＳ１４５に進める。ステップＳ１４５において、bit_to_bin取得部１９３は、パラメータ設定部１６１により設定されたbit_to_binを取得する。ステップＳ１４６において、CPB位置算出部１９４は、式（６）を用いてCPB位置を算出する。
【０１６１】
ステップＳ１４４若しくはステップＳ１４６の処理が終了した場合、CPB位置変換部１６３は、CPB位置変換処理を終了し、処理を図１２に戻す。
【０１６２】
以上のように、各処理を行うことにより、レート制御部１１７は、BinによりHRDを規定することができ、また、その際に用いるバッファモデルパラメータを設定し、復号側に伝送させることができる。これにより、レート制御部１１７は、より容易にレート制御を行うことができる。
【０１６３】
なお、以上においては、レート制御部１１７が、bit_to_binを用いてBitにより規定されるHRDをBinにより規定されるHRDに変換するように説明したが、Bitにより規定されるHRDとBinにより規定されるHRDとを互いに独立して設定するようにしてもよい。
【０１６４】
＜２．第２の実施の形態＞
［画像復号装置］
図１５は、画像復号装置の主な構成例を示すブロック図である。図１５に示される画像復号装置２００は、画像符号化装置１００が生成した符号化データを、その符号化方法に対応する復号方法で復号する。
【０１６５】
図１５に示されるように画像復号装置２００は、蓄積バッファ２０１、可逆復号部２０２、逆量子化部２０３、逆直交変換部２０４、演算部２０５、ループフィルタ２０６、画面並べ替えバッファ２０７、およびD/A変換部２０８を有する。また、画像復号装置２００は、フレームメモリ２０９、選択部２１０、イントラ予測部２１１、動き予測・補償部２１２、および選択部２１３を有する。
【０１６６】
蓄積バッファ２０１は伝送されてきた符号化データを蓄積し、所定のタイミングにおいてその符号化データを可逆復号部２０２に供給する。可逆復号部２０２は、画像符号化装置１００から供給されるシンタックスに従って、蓄積バッファ２０１より供給された、図１の可逆符号化部１０６により符号化された情報を、可逆符号化部１０６の符号化方式に対応する方式で復号する。可逆復号部２０２は、復号して得られた差分画像の量子化された係数データを、逆量子化部２０３に供給する。
【０１６７】
また、可逆復号部２０２は、最適な予測モードにイントラ予測モードが選択されたかインター予測モードが選択されたかを判定し、その最適な予測モードに関する情報を、イントラ予測部２１１および動き予測・補償部２１２の内、選択されたと判定したモードの方に供給する。
【０１６８】
逆量子化部２０３は、可逆復号部２０２により復号されて得られた量子化された係数データを、図１の量子化部１０５の量子化方式に対応する方式で逆量子化し、得られた係数データを逆直交変換部２０４に供給する。
【０１６９】
逆直交変換部２０４は、図１の直交変換部１０４の直交変換方式に対応する方式で逆量子化部２０３から供給される係数データを逆直交変換する。逆直交変換部２０４は、この逆直交変換処理により、画像符号化装置１００において直交変換される前の残差データに対応する復号残差データを得る。
【０１７０】
逆直交変換されて得られた復号残差データは、演算部２０５に供給される。また、演算部２０５には、選択部２１３を介して、イントラ予測部２１１若しくは動き予測・補償部２１２から予測画像が供給される。
【０１７１】
演算部２０５は、その復号残差データと予測画像とを加算し、画像符号化装置１００の演算部１０３により予測画像が減算される前の画像データに対応する復号画像データを得る。演算部２０５は、その復号画像データをループフィルタ２０６に供給する。
【０１７２】
ループフィルタ２０６は、供給された復号画像に対して、デブロックフィルタ処理や適応ループフィルタ処理等を含むループフィルタ処理を適宜施し、それを画面並べ替えバッファ２０７に供給する。
【０１７３】
ループフィルタ２０６は、デブロックフィルタや適応ループフィルタ等を含み、演算部２０５から供給される復号画像に対して適宜フィルタ処理を行う。例えば、ループフィルタ２０６は、復号画像に対してデブロックフィルタ処理を行うことにより復号画像のブロック歪を除去する。また、例えば、ループフィルタ２０６は、そのデブロックフィルタ処理結果（ブロック歪みの除去が行われた復号画像）に対して、ウィナーフィルタ（Wiener Filter）を用いてループフィルタ処理を行うことにより画質改善を行う。
【０１７４】
なお、ループフィルタ２０６が、復号画像に対して任意のフィルタ処理を行うようにしてもよい。また、ループフィルタ２０６が、図１の画像符号化装置１００から供給されたフィルタ係数を用いてフィルタ処理を行うようにしてもよい。
【０１７５】
ループフィルタ２０６は、フィルタ処理結果（フィルタ処理後の復号画像）を画面並べ替えバッファ２０７およびフレームメモリ２０９に供給する。なお、演算部２０５から出力される復号画像は、ループフィルタ２０６を介さずに画面並べ替えバッファ２０７やフレームメモリ２０９に供給することができる。つまり、ループフィルタ２０６によるフィルタ処理は省略することができる。
【０１７６】
画面並べ替えバッファ２０７は、画像の並べ替えを行う。すなわち、図１の画面並べ替えバッファ１０２により符号化の順番のために並べ替えられたフレームの順番が、元の表示の順番に並べ替えられる。D/A変換部２０８は、画面並べ替えバッファ２０７から供給された画像をD/A変換し、図示せぬディスプレイに出力し、表示させる。
【０１７７】
フレームメモリ２０９は、供給される復号画像を記憶し、所定のタイミングにおいて、若しくは、イントラ予測部２１１や動き予測・補償部２１２等の外部の要求に基づいて、記憶している復号画像を参照画像として、選択部２１０に供給する。
【０１７８】
選択部２１０は、フレームメモリ２０９から供給される参照画像の供給先を選択する。選択部２１０は、イントラ符号化された画像を復号する場合、フレームメモリ２０９から供給される参照画像をイントラ予測部２１１に供給する。また、選択部２１０は、インター符号化された画像を復号する場合、フレームメモリ２０９から供給される参照画像を動き予測・補償部２１２に供給する。
【０１７９】
イントラ予測部２１１には、ヘッダ情報を復号して得られたイントラ予測モードを示す情報等が可逆復号部２０２から適宜供給される。イントラ予測部２１１は、図１のイントラ予測部１１４において用いられたイントラ予測モードで、フレームメモリ２０９から取得した参照画像を用いてイントラ予測を行い、予測画像を生成する。イントラ予測部２１１は、生成した予測画像を選択部２１３に供給する。動き予測・補償部２１２は、ヘッダ情報を復号して得られた情報を可逆復号部２０２から取得する。
【０１８０】
動き予測・補償部２１２は、図１の動き予測・補償部１１５において用いられたインター予測モードで、フレームメモリ２０９から取得した参照画像を用いてインター予測を行い、予測画像を生成する。
【０１８１】
このようにすることにより、可逆復号部２０２は、画像符号化装置１００から供給されるコードストリームを復号することができる。つまり、画像復号装置２００は、レート制御の容易化を実現させることができる。
【０１８２】
［可逆復号部］
図１６は、可逆復号部２０２の主な構成例を示すブロック図である。
【０１８３】
図１６に示されるように、可逆復号部２０２は、パラメータ取得部２３１、コードストリーム取得部２３２、および復号処理部２３３を有する。
【０１８４】
パラメータ取得部２３１は、蓄積バッファ２０１から供給される、画像符号化装置１００からシンタックスとして供給されたバッファモデルパラメータを受け取り、それを復号処理部２３３に供給する。
【０１８５】
コードストリーム取得部２３２は、蓄積バッファ２０１から供給される、画像符号化装置１００から供給されたコードストリームを受け取り、それを復号処理部２３３に供給する。
【０１８６】
復号処理部２３３は、パラメータ取得部２３１から供給されるバイナリパラメータに基づいて、コードストリーム取得部２３２から供給されるコードストリームに対して、画像符号化装置１００が設定したHRDと同様に振舞う。つまり、復号処理部２３３は、画像符号化装置１００のレート制御部１１７が設定したHRDと同様に、コードストリーム取得部２３２から供給されるコードストリームを復号する。復号処理部２３３は、得られた復号画像データを逆量子化部２０３に供給する。また、復号処理部２３３は、ヘッダ情報等を、適宜、イントラ予測部２１１若しくは動き予測・補償部２１２に供給する。
【０１８７】
このように可逆復号部２０２が、画像符号化装置１００において設定されたHRDと同様に動作することにより、画像復号装置２００は、レート制御の容易化を実現させることができる。
【０１８８】
［復号処理の流れ］
次に、以上のような画像復号装置２００により実行される各処理の流れについて説明する。最初に、図１７のフローチャートを参照して、復号処理の流れの例を説明する。
【０１８９】
復号処理が開始されると、ステップＳ２０１において、蓄積バッファ２０１は、伝送されてきたコードストリームを蓄積する。ステップＳ２０２において、可逆復号部２０２は、蓄積バッファ２０１から供給されるコードストリームを復号する。すなわち、図１の可逆符号化部１０６により符号化されたＩピクチャ、Ｐピクチャ、並びにＢピクチャが復号される。また、差分動き情報や差分量子化パラメータなど、コードストリームに含められた差分画像情報以外の各種情報も復号される。
【０１９０】
ステップＳ２０３において、逆量子化部２０３は、ステップＳ２０２の処理により得られた、量子化された直交変換係数を逆量子化する。
【０１９１】
ステップＳ２０４において逆直交変換部２０４は、ステップＳ２０３において逆量子化された直交変換係数を逆直交変換する。
【０１９２】
ステップＳ２０５において、イントラ予測部２１１若しくは動き予測・補償部２１２は、供給された情報を用いて予測処理を行う。
【０１９３】
ステップＳ２０６において、選択部２１３は、ステップＳ２０５において生成された予測画像を選択する。
【０１９４】
ステップＳ２０７において、演算部２０５は、ステップＳ２０４において逆直交変換されて得られた差分画像情報に、ステップＳ２０６において選択された予測画像を加算する。これにより復号画像が得られる。
【０１９５】
ステップＳ２０８において、ループフィルタ２０６は、ステップＳ２０７において得られた復号画像に対して、デブロックフィルタ処理や適応ループフィルタ処理等を含むループフィルタ処理を適宜行う。
【０１９６】
ステップＳ２０９において、画面並べ替えバッファ２０７は、ステップＳ２０８においてフィルタ処理された画像の並べ替えを行う。すなわち画像符号化装置１００の画面並べ替えバッファ１０２により符号化のために並べ替えられたフレームの順序が、元の表示の順序に並べ替えられる。
【０１９７】
ステップＳ２１０において、D/A変換部２０８は、ステップＳ２０９においてフレームの順序が並べ替えられた画像をD/A変換する。この画像が図示せぬディスプレイに出力され、画像が表示される。
【０１９８】
ステップＳ２１１において、フレームメモリ２０９は、ステップＳ２０８においてフィルタ処理された画像を記憶する。この画像は、ステップＳ２０５において、参照画像として、予測画像の生成に使用される。
【０１９９】
ステップＳ２１１の処理が終了すると、復号処理が終了される。
【０２００】
［可逆復号処理の流れ］
次に、図１８のフローチャートを参照して、図１７のステップＳ２０２において実行される可逆復号処理の流れの例を説明する。
【０２０１】
可逆復号処理が開始されると、ステップＳ２３１において、パラメータ取得部２３１は、画像符号化装置１００において生成され、シンタックスとして供給されたバッファモデルパラメータを受け取る。
【０２０２】
ステップＳ２３２において、復号処理部２３３は、ステップＳ２３１において受け取られたバイナリパラメータの値に応じて、復号方法を決定する。
【０２０３】
ステップＳ２３３において、コードストリーム取得部２３２は、画像符号化装置１００において生成され、供給されるコードストリームを受け取る。
【０２０４】
ステップＳ２３４において、復号処理部２３３は、ステップＳ２３３において受け取られたコードストリームを、ステップＳ２３２において決定した復号方法で復号する。
【０２０５】
コードストリームを復号すると、可逆復号部２０２は、可逆復号処理を終了し、処理を図１７に戻す。
【０２０６】
以上のように各処理を実行することにより、画像復号装置２００は、レート制御の容易化を実現させることができる。
【０２０７】
＜３．第３の実施の形態＞
［デコーダの設計］
ところで、AVC等の従来の規格においては、CABACのデコーダを設計する際、ビットストリームからバイナリデータへの変換は瞬時に行われなければならないということになっている。そのため、デコーダを設計する場合、１アクセスユニット（AU）の最大Bit長を最大フレームレート（Frame rate）でバイナリデータに変換することができるようにしなければならなかった。
【０２０８】
しかしながら、実際のビットストリームでは最大Bit長が長時間連続で現れることは少なく、実際には、Ｉピクチャ（I-picture）で大きな値が出た後、Ｐピクチャ（P-picture）やＢピクチャ（B-picture）では十分に小さな値が出る。そのため、一般的には、時間で平均すると最大フレームレート（Frame rate）で瞬時にバイナリデータに変換する必要がないこと多い。つまり、現状の設計は所謂ワーストケース（worst case）デザインのために、デコーダが実際に必要な性能よりも過剰に設計されてしまう恐れがあった。換言すると、この制約のために、CABACのデコーダを設計することが困難になる恐れがあった。
【０２０９】
そこで、バイナリデータの処理速度を規定する仮想デコーダを定義する。このようにすることでデコーダの設計に余裕が得られるようになる。さらに、正しくデコードできるかどうかをシンタックスから確認することができるようになり、アプリケーションの幅を広げることができる。例えば、モバイル機器等に搭載するデコーダの場合、バイナリデータの処理速度を多少小さくすることで消費電力を下げる等の工夫をすることができる。
【０２１０】
上述したようにエンコーダは、仮想デコーダに準拠したストリームを生成する。つまり、エンコーダにおいて、バイナリデータの処理速度を規定する仮想デコーダを定義し、この仮想デコーダを用いてレート制御が行われるようにする。このようにすることにより、エンコーダが、性能をある程度低減させたデコーダにおいても破綻しないようなコードストリームを生成することができるようになる。換言するに、エンコーダにおいてバイナリデータの処理速度を規定する仮想デコーダを定義することにより、デコーダの設計に余裕を設け、デコーダが過剰性能になることを抑制することができる（デコーダの性能を適切なレベルとなるように制御することができる）ようになる。
【０２１１】
［BinHRD］
図１９に、バイナリデータの処理速度を規定する仮想デコーダの例を示す。図１９において、上側が従来の仮想デコーダ（従来のHRD）であり、下側がバイナリデータの処理速度を規定する仮想デコーダ（BinHRD）を示す。
【０２１２】
従来のHRDに蓄積されたビットストリームは、矢印３０１や矢印３０２に示されるように、ビットストリームがバイナリデータに変換され、バイナリデータとしてBinHRDに流入され、蓄積される。なお、ビットストリームからバイナリデータへの変換は、瞬時に行われるものとする。
【０２１３】
図１９の下側に示されるBinHRDのグラフも、基本的に図１９の上側の従来のHRDと同様である。Bin buffer sizeは、BinHRDのサイズを示す。また、Bin process rateは、BinHRDに蓄積されたバイナリデータの読み出し速度を示す。1frameの間に処理が終われば、BinHRDは空になる。BinHRDがBin buffer sizeを超えないようにすれば、エンコードとデコードの整合性が保証される。
【０２１４】
BinHRDに蓄積されたバイナリデータは、Bin process rateで読み出されるが、じゅうらいの場合、１フレームの間（frame_rate）に全てのバイナリデータが読み出されるように設計する必要があった。しかしながら、上述したように、それでは、符号量の多いＩピクチャに合わせて設計されるので、符号量の少ないＰピクチャやＢピクチャに対して過剰性能となる。そこで、両矢印３０３に示されるように、複数フレーム（例えば、２、３フレーム程度）内で処理することが許容されるようにする。
【０２１５】
すなわち、バイナリデータの読み出し速度（Bin process rate）を遅くし、BinHRDの全てのバイナリデータを読み出すのに複数フレーム分の時間を要するようにしてもよいようにする。このようにすると、特に符号量の多いＩピクチャのバイナリデータを読み出すのに複数フレーム分の時間を要するようになるが、上述したようにＰピクチャやＢピクチャは符号量が少なく、かつ、Ｉピクチャが長時間連続する可能性も非常に少ないので、BinHRDがオーバフローする可能性は非常に少ない。
【０２１６】
以上のように、バイナリデータの処理速度を規定する仮想デコーダを定義することにより、バイナリデータの処理速度を低減させるようにデコーダを設計することができるようになる。
【０２１７】
［シンタックス］
この場合、図２０に示されるようにシンタックスが追加される。図２０に示されるように、この場合、バイナリパラメータbin_rateとbin_buffer_sizeが追加される。バイナリパラメータbin_rateは、バイナリデータの処理速度（BinHRDからのバイナリデータの読み出し速度）を示し、バイナリパラメータbin_buffer_sizeは、BinHRDのサイズを示す。
【０２１８】
なお、これらの値が設定されない場合、レベルや画サイズに応じた最大値が使用されるようにしてもよい。
【０２１９】
［画像符号化装置］
この場合の、画像符号化装置の構成は、図１に示される例と同様になる。
【０２２０】
［レート制御部］
図２１は、この場合のレート制御部１１７の主な構成例を示すブロック図である。
【０２２１】
図２１に示されるように、レート制御部１１７は、パラメータ設定部３１１、HRDトレース部３１２、BinHRDトレース部３１３、およびターゲットビット決定部３１４を有する。
【０２２２】
パラメータ設定部３１１は、パラメータ（フラグを含む）等のシンタックスの値を設定する。この設定方法は任意である。例えば、パラメータ設定部３１１は、例えば、開発者やユーザ等の外部から値を取得し、その値をパラメータとして設定するようにしてもよい。また、例えば、パラメータ設定部３１１は、符号化する画像データや符号化結果等に基づいて各値を設定するようにしてもよい。さらに、例えば、パラメータ設定部３１１は、予め定められた所定の値をパラメータとして設定するようにしてもよい。
【０２２３】
なお、パラメータ設定部３１１は、仮想デコーダに関するものであればどのようなパラメータを設定するようにしてもよい。
【０２２４】
図２１に示される例において、パラメータ設定部３１１は、bit_rate設定部３２１、bin_rate設定部３２２、およびbin_buffer_size設定部３２３を有する。
【０２２５】
bit_rate設定部３２１は、ビットストリームの処理速度であるbit_rateを設定する。bin_rate設定部３２２は、バイナリデータの処理速度であるbin_rateを設定する。bin_buffer_size設定部３２３は、BinHRDのサイズを示すbin_buffer_sizeを設定する。これらの値は、蓄積バッファ１０７に供給され、シンタックスとして復号側に伝送される。
【０２２６】
また、bit_rate設定部３２１は、生成したbit_rateをHRDトレース部３１２に供給する。また、bin_rate設定部３２２は、生成したbin_rateをBInHRDトレース部３１３に供給する。
【０２２７】
HRDトレース部３１２は、ビットストリームを処理する仮想デコーダ（HRD）の振る舞いをシミュレートする。つまり、HRDトレース部３１２は、HRDの最新のCPB位置を求める。HRDトレース部３１２は、図２１に示されるように、bit_rate取得部３３１、発生Bit取得部３３２、およびCPB位置更新部３３３を有する。
【０２２８】
bit_rate取得部３３１は、パラメータ設定部３１１（bit_rate設定部３２１）から供給されるbit_rateを取得し、それをCPB位置更新部３３３に供給する。発生Bit取得部３３２は、蓄積バッファ１０７からのコードストリーム（ビットストリーム）の読み出し量（符号量）である発生Bitを取得し、それをCPB位置更新部３３３に供給する。
【０２２９】
CPB位置更新部３３３は、bit_rate取得部３３１から供給されるbit_rateと、発生Bit取得部３３２から供給される発生Bitとに基づいて、HRDのCPB位置を更新する。つまり、CPBには、発生Bit分のビットストリームが蓄積され、所定の読み出しタイミングにおいて、bit_rate分のビットストリームが読み出される。CPB位置更新部３３３は、このようなビットストリームの入出力を、CPB位置に反映させる。CPB位置更新部３３３は、最新のCPB位置をターゲットビット決定部３１４に供給する。
【０２３０】
BinHRDトレース部３１３は、バイナリデータの処理速度を規定する仮想デコーダ（BinHRD）の振る舞いをシミュレートする。つまり、BinHRDトレース部３１３は、BinHRDの最新のバイナリデータ蓄積量（BinBuffer位置）を求める。BinHRDトレース部３１３は、図２１に示されるように、bin_rate取得部３４１、発生Bin取得部３４２、およびBinBuffer位置更新部３４３を有する。
【０２３１】
bin_rate取得部３４１は、パラメータ設定部３１１（bin_rate設定部３２２）から供給されるbin_rateを取得し、それをBinBuffer位置更新部３４３に供給する。発生Bin取得部３４２は、可逆符号化部１０６から供給されるバイナリデータのデータ量である発生Binを取得し、それをBinBuffer位置更新部３４３に供給する。
【０２３２】
BinBuffer位置更新部３４３は、bin_rate取得部３４１から供給されるbin_rateと、発生Bin取得部３４２から供給される発生Binとに基づいて、BinHRDのBinBuffer位置を更新する。つまり、BinHRDには発生Bin分のバイナリデータが蓄積され、bin_rateに示されるレートでそのバイナリデータが読み出される。BinBuffer位置更新部３４３は、このようなバイナリデータの入出力を、BinBuffer位置に反映させる。BinBuffer位置更新部３４３は、最新のBinBuffer位置をターゲットビット決定部３１４に供給する。
【０２３３】
ターゲットビット決定部３１４は、CPB位置やBinBuffer位置に基づいて、ターゲットビット（Target Bit）を決定する。
【０２３４】
図２１に示されるように、ターゲットビット決定部３１４は、CPB位置取得部３５１、最大許容Bit算出部３５２、BinBuffer位置取得部３５３、最大許容Bin算出部３５４、および設定部３５５を有する。
【０２３５】
CPB位置取得部３５１は、HRDトレース部３１２（CPB位置更新部３３３）から供給される最新のCPB位置を取得し、それを最大許容Bit算出部３５２に供給する。最大許容Bit算出部３５２は、CPB位置取得部３５１から供給される最新のCPB位置に基づいて、HRDからのビットストリームの読み出し可能な最大量を示す最大許容Bitを算出する。最大許容Bit算出部３５２は、算出した最大許容Bitを設定部３５５に供給する。
【０２３６】
BinBuffer位置取得部３５３は、BinHRDトレース部３１３（BinBuffer位置更新部３４３）から供給される最新のBinBuffer位置を取得し、それを最大許容Bin算出部３５４に供給する。最大許容Bin算出部３５４は、BinBuffer位置取得部３５３から供給される最新のBinBuffer位置に基づいて、BinHRDからのビットストリームの読み出し可能な最大量を示す最大許容Binを算出する。最大許容Bin算出部３５４は、算出した最大許容Binを設定部３５５に供給する。
【０２３７】
設定部３５５は、最大許容Bit算出部３５２から供給された最大許容Bitと、最大許容Bin算出部３５４から供給された最大許容Binとに基づいてターゲットビットを求める。より具体的には、BinHRDとHRDは両方を満たす必要がある。したがって、設定部３５５は、最大許容Bitと最大許容Binの小さい方からターゲットビットを求める。設定部３５５は、求めたターゲットビットを量子化部１０５に供給する。
【０２３８】
以上のように各部が処理を行うことにより、レート制御部１１７は、Binの処理速度を規定する仮想デコーダを定義することで、デコーダの設計をより容易にすることができる。また、正しくデコードできるか否かをシンタックスから確認することができるので、アプリケーションの幅を広げることが可能になる。これにより、仮想デコーダを破綻させないようにすることが容易になり、レート制御をより容易に行うことができる。
【０２３９】
［レート制御処理の流れ］
この場合のレート制御処理の流れの例を図２２のフローチャートを参照して説明する。なお、符号化処理は、図１１のフローチャートを参照して説明した第１の実施の形態の場合と同様に行われる。
【０２４０】
レート制御処理が開始されると、ステップＳ３２１において、bit_rate設定部３２１は、bit_rateを設定する。ステップＳ３２２において、bin_rate設定部３２２は、bin_rateを設定する。ステップＳ３２３において、bin_buffer_size設定部３２３は、bin_buffer_siceを設定する。
【０２４１】
ステップＳ３２４において、パラメータ設定部３１１は、ステップＳ３２１乃至ステップＳ３２３において生成された各種パラメータを蓄積バッファ１０７に供給し、シンタックスとして復号側に伝送させる。
【０２４２】
ステップＳ３２５において、HRDトレース部３１２のbit_rate取得部３３１は、ステップＳ３２１において設定されたbit_rateを取得する。ステップＳ３２６において、発生Bit取得部３３２は、発生Bitを取得する。ステップＳ３２７において、CPB位置取得部３３３は、ステップＳ３２５において取得されたbit_rateとステップＳ３２６において取得された発生Bitを用いてCPB位置を更新する。
【０２４３】
ステップＳ３２８において、BinHRDトレース部３１３のbin_rate取得部３４１は、ステップＳ３２２において設定されたbin_rateを取得する。ステップＳ３２９において、発生Bin取得部３４２は、発生Binを取得する。ステップＳ３３０において、BinBuffer位置更新部３４３は、ステップＳ３２８において取得されたbin_rateと、ステップＳ３２９において取得された発生Binを用いてBinBuffer位置を更新する。
【０２４４】
ステップＳ３３１において、ターゲットビット決定部３１４のBinBuffer位置取得部３５３は、ステップＳ３３０において更新された最新のBinBuffer位置を取得する。ステップＳ３３２において、最大許容Bin算出部３５４は、ステップＳ３３１において取得した最新のBinBuffer位置に従って最大許容Binを求める。
【０２４５】
ステップＳ３３３において、CPB位置取得部３５１は、ステップＳ３２７において更新された最新のCPB位置を取得する。ステップＳ３３４において、最大許容Bit算出部３５２は、ステップＳ３３３において取得した最新のCPB位置に従って最大許容Bitを求める。
【０２４６】
ステップＳ３３５において、設定部３５５は、ステップＳ３３２において求められた最大許容Binと、ステップＳ３３４において求められた最大許容Bitのうち、小さい方を用いてターゲットビットを求め、それを量子化部１０５に供給する。
【０２４７】
ステップＳ３３５の処理が終了すると、レート制御部１１７は、レート制御処理を終了し、処理を図１１に戻す。
【０２４８】
以上のように、レート制御処理を行うことにより、レート制御部１１７は、より容易にレート制御を行うことができる。
【０２４９】
なお、この場合の画像復号装置の構成は、図１５を参照して説明した画像復号装置２００の場合と同様である。また、可逆復号部の構成も、図１６を参照して説明した可逆復号部２０２の場合と同様であり、復号処理部２３３が、画像符号化装置１００から供給されるパラメータに応じて、上述した仮想デコーダと同様に動作すれば良い。
【０２５０】
なお、本技術は、例えば、MPEG、H．26x等の様に、離散コサイン変換等の直交変換と動き補償によって圧縮された画像情報（ビットストリーム）を、衛星放送、ケーブルテレビジョン、インターネット、または携帯電話機などのネットワークメディアを介して受信する際に用いられる画像符号化装置および画像復号装置に適用することができる。また、本技術は、光、磁気ディスク、およびフラッシュメモリのような記憶メディア上で処理する際に用いられる画像符号化装置および画像復号装置に適用することができる。さらに、本技術は、それらの画像符号化装置および画像復号装置などに含まれる動き予測補償装置にも適用することができる。
【０２５１】
＜４．第４の実施の形態＞
［パーソナルコンピュータ］
上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な汎用のパーソナルコンピュータなどが含まれる。
【０２５２】
図２３において、パーソナルコンピュータ５００のCPU（Central Processing Unit）５０１は、ROM（Read Only Memory）５０２に記憶されているプログラム、または記憶部５１３からRAM（Random Access Memory）５０３にロードされたプログラムに従って各種の処理を実行する。RAM５０３にはまた、CPU５０１が各種の処理を実行する上において必要なデータなども適宜記憶される。
【０２５３】
CPU５０１、ROM５０２、およびRAM５０３は、バス５０４を介して相互に接続されている。このバス５０４にはまた、入出力インタフェース５１０も接続されている。
【０２５４】
入出力インタフェース５１０には、キーボード、マウスなどよりなる入力部５１１、CRT（Cathode Ray Tube）やLCD（Liquid Crystal Display）などよりなるディスプレイ、並びにスピーカなどよりなる出力部５１２、ハードディスクなどより構成される記憶部５１３、モデムなどより構成される通信部５１４が接続されている。通信部５１４は、インターネットを含むネットワークを介しての通信処理を行う。
【０２５５】
入出力インタフェース５１０にはまた、必要に応じてドライブ５１５が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア５２１が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部５１３にインストールされる。
【０２５６】
上述した一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、ネットワークや記録媒体からインストールされる。
【０２５７】
この記録媒体は、例えば、図２３に示されるように、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM（Compact Disc - Read Only Memory）,DVD（Digital Versatile Disc）を含む）、光磁気ディスク（MD（Mini Disc）を含む）、若しくは半導体メモリなどよりなるリムーバブルメディア５２１により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているROM５０２や、記憶部５１３に含まれるハードディスクなどで構成される。
【０２５８】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０２５９】
また、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０２６０】
また、本明細書において、システムとは、複数のデバイス（装置）により構成される装置全体を表すものである。
【０２６１】
また、以上において、１つの装置（または処理部）として説明した構成を分割し、複数の装置（または処理部）として構成するようにしてもよい。逆に、以上において複数の装置（または処理部）として説明した構成をまとめて１つの装置（または処理部）として構成されるようにしてもよい。また、各装置（または各処理部）の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置（または処理部）の構成の一部を他の装置（または他の処理部）の構成に含めるようにしてもよい。つまり、本技術は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
【０２６２】
上述した実施形態に係る画像符号化装置及び画像復号装置は、衛星放送、ケーブルＴＶなどの有線放送、インターネット上での配信、及びセルラー通信による端末への配信などにおける送信機若しくは受信機、光ディスク、磁気ディスク及びフラッシュメモリなどの媒体に画像を記録する記録装置、又は、これら記憶媒体から画像を再生する再生装置などの様々な電子機器に応用され得る。以下、４つの応用例について説明する。
【０２６３】
＜５．第５の実施の形態＞
［第１の応用例：テレビジョン受像機］
図２４は、上述した実施形態を適用したテレビジョン装置の概略的な構成の一例を示している。テレビジョン装置９００は、アンテナ９０１、チューナ９０２、デマルチプレクサ９０３、デコーダ９０４、映像信号処理部９０５、表示部９０６、音声信号処理部９０７、スピーカ９０８、外部インタフェース９０９、制御部９１０、ユーザインタフェース９１１、及びバス９１２を備える。
【０２６４】
チューナ９０２は、アンテナ９０１を介して受信される放送信号から所望のチャンネルの信号を抽出し、抽出した信号を復調する。そして、チューナ９０２は、復調により得られた符号化ビットストリームをデマルチプレクサ９０３へ出力する。即ち、チューナ９０２は、画像が符号化されている符号化ストリームを受信する、テレビジョン装置９００における伝送手段としての役割を有する。
【０２６５】
デマルチプレクサ９０３は、符号化ビットストリームから視聴対象の番組の映像ストリーム及び音声ストリームを分離し、分離した各ストリームをデコーダ９０４へ出力する。また、デマルチプレクサ９０３は、符号化ビットストリームからEPG（Electronic Program Guide）などの補助的なデータを抽出し、抽出したデータを制御部９１０に供給する。なお、デマルチプレクサ９０３は、符号化ビットストリームがスクランブルされている場合には、デスクランブルを行ってもよい。
【０２６６】
デコーダ９０４は、デマルチプレクサ９０３から入力される映像ストリーム及び音声ストリームを復号する。そして、デコーダ９０４は、復号処理により生成される映像データを映像信号処理部９０５へ出力する。また、デコーダ９０４は、復号処理により生成される音声データを音声信号処理部９０７へ出力する。
【０２６７】
映像信号処理部９０５は、デコーダ９０４から入力される映像データを再生し、表示部９０６に映像を表示させる。また、映像信号処理部９０５は、ネットワークを介して供給されるアプリケーション画面を表示部９０６に表示させてもよい。また、映像信号処理部９０５は、映像データについて、設定に応じて、例えばノイズ除去などの追加的な処理を行ってもよい。さらに、映像信号処理部９０５は、例えばメニュー、ボタン又はカーソルなどのGUI（Graphical User Interface）の画像を生成し、生成した画像を出力画像に重畳してもよい。
【０２６８】
表示部９０６は、映像信号処理部９０５から供給される駆動信号により駆動され、表示デバイス（例えば、液晶ディスプレイ、プラズマディスプレイ又はOELD（Organic ElectroLuminescence Display）（有機ELディスプレイ）など）の映像面上に映像又は画像を表示する。
【０２６９】
音声信号処理部９０７は、デコーダ９０４から入力される音声データについてD/A変換及び増幅などの再生処理を行い、スピーカ９０８から音声を出力させる。また、音声信号処理部９０７は、音声データについてノイズ除去などの追加的な処理を行ってもよい。
【０２７０】
外部インタフェース９０９は、テレビジョン装置９００と外部機器又はネットワークとを接続するためのインタフェースである。例えば、外部インタフェース９０９を介して受信される映像ストリーム又は音声ストリームが、デコーダ９０４により復号されてもよい。即ち、外部インタフェース９０９もまた、画像が符号化されている符号化ストリームを受信する、テレビジョン装置９００における伝送手段としての役割を有する。
【０２７１】
制御部９１０は、CPUなどのプロセッサ、並びにRAM及びROMなどのメモリを有する。メモリは、CPUにより実行されるプログラム、プログラムデータ、EPGデータ、及びネットワークを介して取得されるデータなどを記憶する。メモリにより記憶されるプログラムは、例えば、テレビジョン装置９００の起動時にCPUにより読み込まれ、実行される。CPUは、プログラムを実行することにより、例えばユーザインタフェース９１１から入力される操作信号に応じて、テレビジョン装置９００の動作を制御する。
【０２７２】
ユーザインタフェース９１１は、制御部９１０と接続される。ユーザインタフェース９１１は、例えば、ユーザがテレビジョン装置９００を操作するためのボタン及びスイッチ、並びに遠隔制御信号の受信部などを有する。ユーザインタフェース９１１は、これら構成要素を介してユーザによる操作を検出して操作信号を生成し、生成した操作信号を制御部９１０へ出力する。
【０２７３】
バス９１２は、チューナ９０２、デマルチプレクサ９０３、デコーダ９０４、映像信号処理部９０５、音声信号処理部９０７、外部インタフェース９０９及び制御部９１０を相互に接続する。
【０２７４】
このように構成されたテレビジョン装置９００において、デコーダ９０４は、上述した実施形態に係る画像復号装置の機能を有する。それにより、テレビジョン装置９００の画像の復号に際して、より容易にレートを制御することができる。
【０２７５】
＜６．第６の実施の形態＞
［第２の応用例：携帯電話機］
図２５は、上述した実施形態を適用した携帯電話機の概略的な構成の一例を示している。携帯電話機９２０は、アンテナ９２１、通信部９２２、音声コーデック９２３、スピーカ９２４、マイクロホン９２５、カメラ部９２６、画像処理部９２７、多重分離部９２８、記録再生部９２９、表示部９３０、制御部９３１、操作部９３２、及びバス９３３を備える。携帯電話機９２０は、所謂通常の携帯電話機であってもよいが、所謂スマートフォンのような、通話機能を有する携帯型の情報端末であってもよい。
【０２７６】
アンテナ９２１は、通信部９２２に接続される。スピーカ９２４及びマイクロホン９２５は、音声コーデック９２３に接続される。操作部９３２は、制御部９３１に接続される。バス９３３は、通信部９２２、音声コーデック９２３、カメラ部９２６、画像処理部９２７、多重分離部９２８、記録再生部９２９、表示部９３０、及び制御部９３１を相互に接続する。
【０２７７】
携帯電話機９２０は、音声通話モード、データ通信モード、撮影モード及びテレビ電話モードを含む様々な動作モードで、音声信号の送受信、電子メール又は画像データの送受信、画像の撮像、及びデータの記録などの動作を行う。また、携帯電話機９２０は、例えばデータ通信やリムーバブルメディア等からの読み出し等により取得したソフトウェアプログラムを記憶し、実行することにより各種アプリケーションを実行することができる（アプリケーション実行モード）。
【０２７８】
音声通話モードにおいて、マイクロホン９２５により生成されるアナログ音声信号は、音声コーデック９２３に供給される。音声コーデック９２３は、アナログ音声信号を音声データへ変換し、変換された音声データをA/D変換し圧縮する。そして、音声コーデック９２３は、圧縮後の音声データを通信部９２２へ出力する。通信部９２２は、音声データを符号化及び変調し、送信信号を生成する。そして、通信部９２２は、生成した送信信号を、アンテナ９２１を介して基地局（図示せず）へ送信する。また、通信部９２２は、アンテナ９２１を介して受信される無線信号を増幅し及び周波数変換し、受信信号を取得する。そして、通信部９２２は、受信信号を復調及び復号して音声データを生成し、生成した音声データを音声コーデック９２３へ出力する。音声コーデック９２３は、音声データを伸張し及びD/A変換し、アナログ音声信号を生成する。そして、音声コーデック９２３は、生成した音声信号をスピーカ９２４に供給して音声を出力させる。
【０２７９】
また、データ通信モードにおいて、例えば、制御部９３１は、操作部９３２を介するユーザによる操作に応じて、電子メールを構成する文字データを生成する。また、制御部９３１は、文字を表示部９３０に表示させる。また、制御部９３１は、操作部９３２を介するユーザからの送信指示に応じて電子メールデータを生成し、生成した電子メールデータを通信部９２２へ出力する。通信部９２２は、電子メールデータを符号化及び変調し、送信信号を生成する。そして、通信部９２２は、生成した送信信号を、アンテナ９２１を介して基地局（図示せず）へ送信する。また、通信部９２２は、アンテナ９２１を介して受信される無線信号を増幅し及び周波数変換し、受信信号を取得する。そして、通信部９２２は、受信信号を復調及び復号して電子メールデータを復元し、復元した電子メールデータを制御部９３１へ出力する。制御部９３１は、表示部９３０に電子メールの内容を表示させると共に、電子メールデータを記録再生部９２９の記憶媒体に記憶させる。
【０２８０】
記録再生部９２９は、読み書き可能な任意の記憶媒体を有する。例えば、記憶媒体は、RAM又はフラッシュメモリなどの内蔵型の記憶媒体であってもよく、ハードディスク、磁気ディスク、光磁気ディスク、光ディスク、USB（Unallocated Space Bitmap）メモリ、又はメモリカードなどの外部装着型の記憶媒体であってもよい。
【０２８１】
また、撮影モードにおいて、例えば、カメラ部９２６は、被写体を撮像して画像データを生成し、生成した画像データを画像処理部９２７へ出力する。画像処理部９２７は、カメラ部９２６から入力される画像データを符号化し、符号化ストリームを記憶再生部９２９の記憶媒体に記憶させる。
【０２８２】
また、テレビ電話モードにおいて、例えば、多重分離部９２８は、画像処理部９２７により符号化された映像ストリームと、音声コーデック９２３から入力される音声ストリームとを多重化し、多重化したストリームを通信部９２２へ出力する。通信部９２２は、ストリームを符号化及び変調し、送信信号を生成する。そして、通信部９２２は、生成した送信信号を、アンテナ９２１を介して基地局（図示せず）へ送信する。また、通信部９２２は、アンテナ９２１を介して受信される無線信号を増幅し及び周波数変換し、受信信号を取得する。これら送信信号及び受信信号には、符号化ビットストリームが含まれ得る。そして、通信部９２２は、受信信号を復調及び復号してストリームを復元し、復元したストリームを多重分離部９２８へ出力する。多重分離部９２８は、入力されるストリームから映像ストリーム及び音声ストリームを分離し、映像ストリームを画像処理部９２７、音声ストリームを音声コーデック９２３へ出力する。画像処理部９２７は、映像ストリームを復号し、映像データを生成する。映像データは、表示部９３０に供給され、表示部９３０により一連の画像が表示される。音声コーデック９２３は、音声ストリームを伸張し及びD/A変換し、アナログ音声信号を生成する。そして、音声コーデック９２３は、生成した音声信号をスピーカ９２４に供給して音声を出力させる。
【０２８３】
さらに、アプリケーション実行モードにおいて、例えば、制御部９３１は、操作部９３２により受け付けられたユーザ指示等に基づいて、記録再生部９２９等に記憶されているソフトウェアプログラムを読み出し、実行する。これによりアプリケーションが実行され、必要に応じて、画像処理部９２７において画像処理が行われたり、表示部９２０により画像が表示されたり、カメラ部９２６により画像入力が受け付けられたり、スピーカ９２４から音声が出力されたり、マイクロホン９２５により音声入力が受け付けられたり、記録再生部９２９にデータが記録されたり、記録再生部９２９からデータが読み出されたり、通信部９２２を介して他の装置との通信が行われたりする。
【０２８４】
このように構成された携帯電話機９２０において、画像処理部９２７は、上述した実施形態に係る画像符号化装置及び画像復号装置の機能を有する。それにより、携帯電話機９２０での画像の符号化及び復号に際して、より容易にレート制御を行うことができる。
【０２８５】
＜７．第７の実施の形態＞
［第３の応用例：記録再生装置］
図２６は、上述した実施形態を適用した記録再生装置の概略的な構成の一例を示している。記録再生装置９４０は、例えば、受信した放送番組の音声データ及び映像データを符号化して記録媒体に記録する。また、記録再生装置９４０は、例えば、他の装置から取得される音声データ及び映像データを符号化して記録媒体に記録してもよい。また、記録再生装置９４０は、例えば、ユーザの指示に応じて、記録媒体に記録されているデータをモニタ及びスピーカ上で再生する。このとき、記録再生装置９４０は、音声データ及び映像データを復号する。
【０２８６】
記録再生装置９４０は、チューナ９４１、外部インタフェース９４２、エンコーダ９４３、HDD（Hard Disk Drive）９４４、ディスクドライブ９４５、セレクタ９４６、デコーダ９４７、OSD（On-Screen Display）９４８、制御部９４９、及びユーザインタフェース９５０を備える。
【０２８７】
チューナ９４１は、アンテナ（図示せず）を介して受信される放送信号から所望のチャンネルの信号を抽出し、抽出した信号を復調する。そして、チューナ９４１は、復調により得られた符号化ビットストリームをセレクタ９４６へ出力する。即ち、チューナ９４１は、記録再生装置９４０における伝送手段としての役割を有する。
【０２８８】
外部インタフェース９４２は、記録再生装置９４０と外部機器又はネットワークとを接続するためのインタフェースである。外部インタフェース９４２は、例えば、IEEE1394インタフェース、ネットワークインタフェース、USBインタフェース、又はフラッシュメモリインタフェースなどであってよい。例えば、外部インタフェース９４２を介して受信される映像データ及び音声データは、エンコーダ９４３へ入力される。即ち、外部インタフェース９４２は、記録再生装置９４０における伝送手段としての役割を有する。
【０２８９】
エンコーダ９４３は、外部インタフェース９４２から入力される映像データ及び音声データが符号化されていない場合に、映像データ及び音声データを符号化する。そして、エンコーダ９４３は、符号化ビットストリームをセレクタ９４６へ出力する。
【０２９０】
HDD９４４は、映像及び音声などのコンテンツデータが圧縮された符号化ビットストリーム、各種プログラムおよびその他のデータを内部のハードディスクに記録する。また、HDD９４４は、映像及び音声の再生時に、これらデータをハードディスクから読み出す。
【０２９１】
ディスクドライブ９４５は、装着されている記録媒体へのデータの記録及び読み出しを行う。ディスクドライブ９４５に装着される記録媒体は、例えばDVDディスク（DVD-Video、DVD-RAM、DVD-R、DVD-RW、DVD+R、DVD+RW等）又はBlu-ray（登録商標）ディスクなどであってよい。
【０２９２】
セレクタ９４６は、映像及び音声の記録時には、チューナ９４１又はエンコーダ９４３から入力される符号化ビットストリームを選択し、選択した符号化ビットストリームをHDD９４４又はディスクドライブ９４５へ出力する。また、セレクタ９４６は、映像及び音声の再生時には、HDD９４４又はディスクドライブ９４５から入力される符号化ビットストリームをデコーダ９４７へ出力する。
【０２９３】
デコーダ９４７は、符号化ビットストリームを復号し、映像データ及び音声データを生成する。そして、デコーダ９４７は、生成した映像データをOSD９４８へ出力する。また、デコーダ９０４は、生成した音声データを外部のスピーカへ出力する。
【０２９４】
OSD９４８は、デコーダ９４７から入力される映像データを再生し、映像を表示する。また、OSD９４８は、表示する映像に、例えばメニュー、ボタン又はカーソルなどのGUIの画像を重畳してもよい。
【０２９５】
制御部９４９は、CPUなどのプロセッサ、並びにRAM及びROMなどのメモリを有する。メモリは、CPUにより実行されるプログラム、及びプログラムデータなどを記憶する。メモリにより記憶されるプログラムは、例えば、記録再生装置９４０の起動時にCPUにより読み込まれ、実行される。CPUは、プログラムを実行することにより、例えばユーザインタフェース９５０から入力される操作信号に応じて、記録再生装置９４０の動作を制御する。
【０２９６】
ユーザインタフェース９５０は、制御部９４９と接続される。ユーザインタフェース９５０は、例えば、ユーザが記録再生装置９４０を操作するためのボタン及びスイッチ、並びに遠隔制御信号の受信部などを有する。ユーザインタフェース９５０は、これら構成要素を介してユーザによる操作を検出して操作信号を生成し、生成した操作信号を制御部９４９へ出力する。
【０２９７】
このように構成された記録再生装置９４０において、エンコーダ９４３は、上述した実施形態に係る画像符号化装置の機能を有する。また、デコーダ９４７は、上述した実施形態に係る画像復号装置の機能を有する。それにより、記録再生装置９４０での画像の符号化及び復号に際して、より容易にレート制御を行うことができる。
【０２９８】
＜８．第８の実施の形態＞
［第４の応用例：撮像装置］
図２７は、上述した実施形態を適用した撮像装置の概略的な構成の一例を示している。撮像装置９６０は、被写体を撮像して画像を生成し、画像データを符号化して記録媒体に記録する。
【０２９９】
撮像装置９６０は、光学ブロック９６１、撮像部９６２、信号処理部９６３、画像処理部９６４、表示部９６５、外部インタフェース９６６、メモリ９６７、メディアドライブ９６８、OSD９６９、制御部９７０、ユーザインタフェース９７１、及びバス９７２を備える。
【０３００】
光学ブロック９６１は、撮像部９６２に接続される。撮像部９６２は、信号処理部９６３に接続される。表示部９６５は、画像処理部９６４に接続される。ユーザインタフェース９７１は、制御部９７０に接続される。バス９７２は、画像処理部９６４、外部インタフェース９６６、メモリ９６７、メディアドライブ９６８、OSD９６９、及び制御部９７０を相互に接続する。
【０３０１】
光学ブロック９６１は、フォーカスレンズ及び絞り機構などを有する。光学ブロック９６１は、被写体の光学像を撮像部９６２の撮像面に結像させる。撮像部９６２は、CCD（Charge Coupled Device）又はCMOS（Complementary Metal Oxide Semiconductor）などのイメージセンサを有し、撮像面に結像した光学像を光電変換によって電気信号としての画像信号に変換する。そして、撮像部９６２は、画像信号を信号処理部９６３へ出力する。
【０３０２】
信号処理部９６３は、撮像部９６２から入力される画像信号に対してニー補正、ガンマ補正、色補正などの種々のカメラ信号処理を行う。信号処理部９６３は、カメラ信号処理後の画像データを画像処理部９６４へ出力する。
【０３０３】
画像処理部９６４は、信号処理部９６３から入力される画像データを符号化し、符号化データを生成する。そして、画像処理部９６４は、生成した符号化データを外部インタフェース９６６又はメディアドライブ９６８へ出力する。また、画像処理部９６４は、外部インタフェース９６６又はメディアドライブ９６８から入力される符号化データを復号し、画像データを生成する。そして、画像処理部９６４は、生成した画像データを表示部９６５へ出力する。また、画像処理部９６４は、信号処理部９６３から入力される画像データを表示部９６５へ出力して画像を表示させてもよい。また、画像処理部９６４は、OSD９６９から取得される表示用データを、表示部９６５へ出力する画像に重畳してもよい。
【０３０４】
OSD９６９は、例えばメニュー、ボタン又はカーソルなどのGUIの画像を生成して、生成した画像を画像処理部９６４へ出力する。
【０３０５】
外部インタフェース９６６は、例えばUSB入出力端子として構成される。外部インタフェース９６６は、例えば、画像の印刷時に、撮像装置９６０とプリンタとを接続する。また、外部インタフェース９６６には、必要に応じてドライブが接続される。ドライブには、例えば、磁気ディスク又は光ディスクなどのリムーバブルメディアが装着され、リムーバブルメディアから読み出されるプログラムが、撮像装置９６０にインストールされ得る。さらに、外部インタフェース９６６は、LAN又はインターネットなどのネットワークに接続されるネットワークインタフェースとして構成されてもよい。即ち、外部インタフェース９６６は、撮像装置９６０における伝送手段としての役割を有する。
【０３０６】
メディアドライブ９６８に装着される記録媒体は、例えば、磁気ディスク、光磁気ディスク、光ディスク、又は半導体メモリなどの、読み書き可能な任意のリムーバブルメディアであってよい。また、メディアドライブ９６８に記録媒体が固定的に装着され、例えば、内蔵型ハードディスクドライブ又はSSD（Solid State Drive）のような非可搬性の記憶部が構成されてもよい。
【０３０７】
制御部９７０は、CPUなどのプロセッサ、並びにRAM及びROMなどのメモリを有する。メモリは、CPUにより実行されるプログラム、及びプログラムデータなどを記憶する。メモリにより記憶されるプログラムは、例えば、撮像装置９６０の起動時にCPUにより読み込まれ、実行される。CPUは、プログラムを実行することにより、例えばユーザインタフェース９７１から入力される操作信号に応じて、撮像装置９６０の動作を制御する。
【０３０８】
ユーザインタフェース９７１は、制御部９７０と接続される。ユーザインタフェース９７１は、例えば、ユーザが撮像装置９６０を操作するためのボタン及びスイッチなどを有する。ユーザインタフェース９７１は、これら構成要素を介してユーザによる操作を検出して操作信号を生成し、生成した操作信号を制御部９７０へ出力する。
【０３０９】
このように構成された撮像装置９６０において、画像処理部９６４は、上述した実施形態に係る画像符号化装置及び画像復号装置の機能を有する。それにより、撮像装置９６０での画像の符号化及び復号に際して、より容易にレート制御を行うことができる。
【０３１０】
なお、本明細書では、差分量子化パラメータ等の各種情報が、符号化ストリームに多重化されて、符号化側から復号側へ伝送される例について説明した。しかしながら、これら情報を伝送する手法はかかる例に限定されない。例えば、これら情報は、符号化ビットストリームに多重化されることなく、符号化ビットストリームと関連付けられた別個のデータとして伝送され又は記録されてもよい。ここで、「関連付ける」という用語は、ビットストリームに含まれる画像（スライス若しくはブロックなど、画像の一部であってもよい）と当該画像に対応する情報とを復号時にリンクさせ得るようにすることを意味する。即ち、情報は、画像（又はビットストリーム）とは別の伝送路上で伝送されてもよい。また、情報は、画像（又はビットストリーム）とは別の記録媒体（又は同一の記録媒体の別の記録エリア）に記録されてもよい。さらに、情報と画像（又はビットストリーム）とは、例えば、複数フレーム、１フレーム、又はフレーム内の一部分などの任意の単位で互いに関連付けられてよい。
【０３１１】
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示はかかる例に限定されない。本開示の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【０３１２】
上述したストリーム、ビットストリーム、コードストリーム、符号化ストリーム、および符号化ビットストリームは、いずれも、画像符号化装置が出力する（画像符号化装置が生成した）符号化データを示すものである。つまり、これらは、狭義においてはそれぞれ互いに異なるものを指す場合もあるが、特に説明を付さない限り、基本的に互いに同じ意味を持つものとする。なお、符号化ストリームは、VCL（Video Coding Layer） NAL（Network Abstraction Layer）ユニット、Filler Data NALユニット、Non VCL NAL ユニット等、任意のデータを含むようにしてよい。例えば、符号化ストリームは、ビットストリームであってもよいがバイトストリームであってもよい。また、映像ストリームは、映像に関するデータのストリームであり、音声ストリームは、音声に関するデータのストリームである。映像ストリームおよび音声ストリームは、符号化ストリームに含まれる。
【０３１３】
また、以上の説明においてパラメータは、フラグを含む。
【０３１４】
なお、本技術は以下のような構成も取ることができる。
（１）  符号化ストリームにおいて規定される仮想デコーダをバイナリデータで規定する際に用いられるバイナリパラメータを設定する設定部と、
画像データを符号化して符号化ストリームを生成する符号化部と、
前記設定部により設定されたバイナリパラメータと、前記符号化部により生成された符号化ストリームとを伝送する伝送部と
を備える画像処理装置。
（２）  前記設定部は、前記仮想デコーダのバッファのサイズと、前記バッファに蓄積されるデータのデータ量を示す位置とを、前記バイナリパラメータとして設定する
前記（１）に記載の画像処理装置。
（３）  前記設定部は、前記符号化ストリームの符号量を前記バイナリデータのデータ量に換算する際に用いられる変換パラメータを、前記バイナリパラメータとして設定する
前記（１）または（２）に記載の画像処理装置。
（４）  前記設定部は、前記変換パラメータを用いて、前記仮想データを、符号化ストリームによる規定から、バイナリデータによる規定に変換するかを示すパラメータを、前記バイナリパラメータとして設定する
前記（３）に記載の画像処理装置。
（５）  前記設定部は、符号化ストリームで規定される仮想デコーダと、バイナリデータで規定される仮想デコーダとを異なるパラメータを用いて設定するかを示すパラメータを、前記バイナリパラメータとして設定する
前記（１）乃至（４）のいずれかに記載の画像処理装置。
（６）  前記伝送部は、前記バイナリパラメータを、前記符号化部により生成された符号化ストリームの付加情報として伝送する
前記（１）乃至（５）のいずれかに記載の画像処理装置。
（７）  前記伝送部は、前記バイナリパラメータを、前記符号化部により生成された符号化ストリームに挿入して伝送する
前記（１）乃至（５）のいずれかに記載の画像処理装置。
（８）  前記設定部は、バイナリデータの処理速度を規定する仮想デコーダを規定する際に用いられるパラメータを、前記バイナリパラメータとして設定する
前記（１）に記載の画像処理装置。
（９）  前記設定部は、前記バイナリデータの処理速度を示すパラメータを、前記バイナリパラメータとして設定する
前記（８）に記載の画像処理装置。
（１０）  前記設定部は、前記仮想デコーダのバッファのサイズを示すパラメータを、前記バイナリパラメータとして設定する
前記（８）または（９）に記載の画像処理装置。
（１１）  前記バイナリパラメータに応じて決定される、符号化ストリームの最大処理量と、バイナリデータの最大処理量とを用いて、符号化ストリームの目標レートであるターゲットビットを決定する決定部をさらに備える
前記（８）乃至（１０）のいずれかに記載の画像処理装置。
（１２）  画像処理装置の画像処理方法であって、
設定部が、符号化ストリームにおいて規定される仮想デコーダをバイナリデータで規定する際に用いられるバイナリパラメータを設定し、
符号化部が、画像データを符号化して符号化ストリームを生成し、
伝送部が、設定されたバイナリパラメータと、生成された符号化ストリームとを伝送する
画像処理方法。
（１３）  符号化ストリームで規定される仮想デコーダをバイナリデータで規定する際に用いられるバイナリパラメータと、画像データを符号化した符号化ストリームとを受け取る受け取り部と、
前記受け取り部により受け取られたバイナリパラメータを用いて、前記受け取り部により受け取られた符号化ストリームを復号する復号部と
を備える画像処理装置。
（１４）  画像処理装置の画像処理方法であって、
受け取り部が、符号化ストリームで規定される仮想デコーダをバイナリデータで規定する際に用いられるバイナリパラメータと、画像データを符号化した符号化ストリームとを受け取り、
復号部が、受け取られたバイナリパラメータを用いて、受け取られた符号化ストリームを復号する
画像処理方法。
【符号の説明】
【０３１５】
１００  画像符号化装置，  １０５  量子化部，  １０６  可逆符号化部，  １０７  蓄積バッファ，  １１７  レート制御部，  １６１  パラメータ設定部，  １６２  HRDトレース部，  １６３  CPB位置変換部，  １６４  ターゲットビット決定部，  ２００  画像復号装置，  ２０１  蓄積バッファ，  ２０２  可逆復号部，  ２０３  逆量子化部，  ２３１  パラメータ取得部，  ２３２  コードストリーム取得部，  ２３３  復号処理部，  ３１１  パラメータ設定部，  ３１２  HRDトレース部，  ３１３  BinHRDトレース部，  ３１４  ターゲットビット決定部
【図１】
0005787135.tif 000002
【図２】
0005787135.tif 000003
【図３】
0005787135.tif 000004
【図４】
0005787135.tif 000005
【図５】
0005787135.tif 000006
【図６】
0005787135.tif 000007
【図７】
0005787135.tif 000008
【図８】
0005787135.tif 000009
【図９】
0005787135.tif 000010
【図１０】
0005787135.tif 000011
【図１１】
0005787135.tif 000012
【図１２】
0005787135.tif 000013
【図１３】
0005787135.tif 000014
【図１４】
0005787135.tif 000015
【図１５】
0005787135.tif 000016
【図１６】
0005787135.tif 000017
【図１７】
0005787135.tif 000018
【図１８】
0005787135.tif 000019
【図１９】
0005787135.tif 000020
【図２０】
0005787135.tif 000021
【図２１】
0005787135.tif 000022
【図２２】
0005787135.tif 000023
【図２３】
0005787135.tif 000024
【図２４】
0005787135.tif 000025
【図２５】
0005787135.tif 000026
【図２６】
0005787135.tif 000027
【図２７】
0005787135.tif 000028