(57)【要約】【課題】符号量が最少となるように整数部と誤差部とに分離する。【解決手段】本発明では、シフト量決定部で、少なくとも１つの過去のフレームのシフト量をフレームシフト量保持バッファに記録しておき、現フレーム内の振幅値が最大のサンプル値を、整数部で表現できる最大の振幅となるようにシフト量候補を算出し、前記シフト量候補と前記フレームシフト量保持バッファに記録されたシフト量を用いて、あらかじめ定めた基準にしたがって、現フレームのシフト量を決定し、整数部として符号化する信号の振幅の範囲を決める。また、分割部で、前記シフト量決定部で定めたシフト量にしたがって、前記デジタル信号を整数信号と誤差信号に分割し、整数信号符号化で整数信号を符号化し、誤差信号符号化で誤差信号を符号化する。そして、統合部（Multiplexer）で前記整数信号符号化部の出力と前記誤差信号符号化部の出力とを統合する。【選択図】図９
2007006337.tif 000002
【特許請求の範囲】
【請求項１】
デジタル信号を複数のサンプル値（以下、「フレーム」という。）ごとに分割するフレームバッファと、
整数部として符号化する信号の振幅の範囲を決めるシフト量決定部と、
前記シフト量決定部で定めたシフト量にしたがって、前記デジタル信号を整数信号と誤差信号（前記デジタル信号から前記整数信号を引いた残りの全部または一部をいう。以下同じ。）に分割する分割部と、
整数信号を符号化する整数信号符号化部と、
誤差信号を符号化する誤差信号符号化部と、
前記整数信号符号化部の出力と前記誤差信号符号化部の出力とを統合する統合部と、
を備える信号符号化装置であって、
現フレーム内の振幅値が最大のサンプル値を、整数部の最大値、最小値の範囲内でシフト量の変更のみによって表現可能な最大の振幅となるようにシフト量候補を算出するシフト量候補算出部と、
少なくとも１つの過去のフレームのシフト量を記録するフレームシフト量保持バッファを有し、
前記シフト量候補と前記フレームシフト量保持バッファに記録されたシフト量を用いて、あらかじめ定めた基準にしたがって、現フレームのシフト量を決定することを特徴とする前記シフト量決定部
を備える信号符号化装置。
【請求項２】
請求項１記載の信号符号化装置であって、
前記シフト量候補と前記フレームシフト量保持バッファに記録された１つのシフト量との関係が、あらかじめ定められた範囲内の場合には、前記フレームシフト量保持バッファに記録された１つのシフト量を現フレームのシフト量とし、
前記シフト量候補と前記フレームシフト量保持バッファに記録された１つのシフト量との関係が、あらかじめ定められた範囲外の場合には、前記シフト量候補を現フレームのシフト量とすることを特徴とする前記シフト量決定部
を備える信号符号化装置。
【請求項３】
請求項１記載の信号符号化装置であって、
前記シフト量候補により整数部で表現できる最大の振幅が、前記フレームシフト量保持バッファに記録された直前フレームのシフト量により整数部で表現できる最大の振幅より小さく、かつ前記シフト量候補と前記直前フレームのシフト量との差があらかじめ定められた閾値より小さい場合には、前記直前フレームのシフト量を現フレームのシフト量とし、
前記シフト量候補により整数部で表現できる最大の振幅が、前記直前フレームのシフト量により整数部で表現できる最大の振幅以上の場合、または前記シフト量候補と前記直前フレームのシフト量との差があらかじめ定められた閾値以上の場合には、前記シフト量候補を現フレームのシフト量とすることを特徴とする前記シフト量決定部
を備える信号符号化装置。
【請求項４】
請求項１記載の信号符号化装置であって、
前記フレームシフト量保持バッファに直前のフレームのシフト量を記録しておき、
前記シフト量候補が直前のフレームのシフト量よりも小さい場合には、直前のフレームのシフト量から前記シフト量候補までの各シフト量での符号化後のデータ量を計算して、最もデータ量が少ないシフト量を現フレームのシフト量とし、
前記シフト量候補が直前のフレームのシフト量以上の場合には、前記シフト量候補を現フレームのシフト量とすることを特徴とする前記シフト量決定部
を備える信号符号化装置。
【請求項５】
請求項１記載の信号符号化装置であって、
前記フレームシフト量保持バッファに過去のＮ個（Ｎは２以上の整数）のフレームのシフト量を記録しておき、
前記シフト量候補が、過去のＮ個のフレームのシフト量の中で、ｎ番目（ｎは、１以上Ｎ未満の整数）に小さいシフト量よりも大きく、かつ直前のフレームのシフト量よりも小さい場合には、直前のフレームのシフト量を現フレームのシフト量とし、
前記シフト量候補が、過去のＮ個のフレームのシフト量の中で、ｎ番目（ｎは、１以上Ｎ未満の整数）に小さいシフト量以下、または直前のフレームのシフト量以上の場合には、前記シフト量候補を現フレームのシフト量とすることを特徴とする前記シフト量決定部
を備える信号符号化装置。
【請求項６】
請求項１記載の信号符号化装置であって、
前記シフト量候補が、前記フレームシフト量保持バッファに記録された直前のフレームのシフト量以下の場合には、直前のフレームのシフト量を現フレームのシフト量とし、
前記シフト量候補が、前記フレームシフト量保持バッファに記録された直前のフレームのシフト量よりも大きい場合には、前記シフト量候補を現フレームのシフト量とすることを特徴とする前記シフト量決定部
を備える信号符号化装置。
【請求項７】
フレームバッファでデジタル信号を複数のサンプル値（以下、「フレーム」という。）ごとに分割するフレームバッファステップと、
シフト量決定部で整数部として符号化する信号の振幅の範囲を決めるシフト量決定ステップと、
分割部で前記シフト量決定部で定めたシフト量にしたがって、前記デジタル信号を整数信号と誤差信号に分割する分割ステップと、
整数信号符号化で整数信号を符号化する整数信号符号化ステップと、
誤差信号符号化で誤差信号を符号化する誤差信号符号化ステップと、
統合部で前記整数信号符号化部の出力と前記誤差信号符号化部の出力とを統合する統合ステップと、
を有する信号符号化方法であって、
前記シフト量決定ステップが、
少なくとも１つの過去のフレームのシフト量をフレームシフト量保持バッファに記録しておき、
現フレーム内の振幅値が最大のサンプル値を、整数部の最大値、最小値の範囲内でシフト量の変更のみによって表現可能な最大の振幅となるようにシフト量候補を算出し、
前記シフト量候補と前記フレームシフト量保持バッファに記録されたシフト量を用いて、あらかじめ定めた基準にしたがって、現フレームのシフト量を決定すること
を特徴とする信号符号化方法。
【請求項８】
請求項７記載の信号符号化方法であって、
前記シフト量決定ステップが、
前記シフト量候補と前記フレームシフト量保持バッファに記録された１つのシフト量との関係が、あらかじめ定められた範囲内の場合には、前記フレームシフト量保持バッファに記録された１つのシフト量を現フレームのシフト量とし、
前記シフト量候補と前記フレームシフト量保持バッファに記録された１つのシフト量との関係が、あらかじめ定められた範囲外の場合には、前記シフト量候補を現フレームのシフト量とすること
を特徴とする信号符号化方法。
【請求項９】
請求項７記載の信号符号化方法であって、
前記シフト量決定ステップが、
前記シフト量候補により整数部で表現できる最大の振幅が、前記フレームシフト量保持バッファに記録された直前フレームのシフト量により整数部で表現できる最大の振幅より小さく、かつ前記シフト量候補と前記直前フレームのシフト量との差があらかじめ定められた閾値より小さい場合には、前記直前フレームのシフト量を現フレームのシフト量とし、
前記シフト量候補により整数部で表現できる最大の振幅が、前記直前フレームのシフト量により整数部で表現できる最大の振幅以上の場合、または前記シフト量候補と前記直前フレームのシフト量との差があらかじめ定められた閾値以上の場合には、前記シフト量候補を現フレームのシフト量とすること
を特徴とする信号符号化方法。
【請求項１０】
請求項７記載の信号符号化方法であって、
前記シフト量決定ステップが、
前記フレームシフト量保持バッファに直前のフレームのシフト量を記録しておき、
前記シフト量候補が直前のフレームのシフト量よりも小さい場合には、直前のフレームのシフト量から前記シフト量候補までの各シフト量での符号化後のデータ量を計算して、最もデータ量が少ないシフト量を現フレームのシフト量とし、
前記シフト量候補が直前のフレームのシフト量以上の場合には、前記シフト量候補を現フレームのシフト量とすること
を特徴とする信号符号化方法。
【請求項１１】
請求項７記載の信号符号化方法であって、
前記シフト量決定ステップが、
前記フレームシフト量保持バッファに過去のＮ個（Ｎは２以上の整数）のフレームのシフト量を記録しておき、
前記シフト量候補が、過去のＮ個のフレームのシフト量の中で、ｎ番目（ｎは、１以上Ｎ未満の整数）に小さいシフト量よりも大きく、かつ直前のフレームのシフト量よりも小さい場合には、直前のフレームのシフト量を現フレームのシフト量とし、
前記シフト量候補が、過去のＮ個のフレームのシフト量の中で、ｎ番目（ｎは、１以上Ｎ未満の整数）に小さいシフト量以下、または直前のフレームのシフト量以上の場合には、前記シフト量候補を現フレームのシフト量とすること
を特徴とする信号符号化方法。
【請求項１２】
請求項７記載の信号符号化方法であって、
前記シフト量決定ステップが、
前記シフト量候補が、前記フレームシフト量保持バッファに記録された直前のフレームのシフト量以下の場合には、直前のフレームのシフト量を現フレームのシフト量とし、
前記シフト量候補が、前記フレームシフト量保持バッファに記録された直前のフレームのシフト量よりも大きい場合には、前記シフト量候補を現フレームのシフト量とすること
を特徴とする信号符号化方法。
【請求項１３】
信号符号化部に、
デジタル信号を複数のサンプル値（以下、「フレーム」という。）ごとに分割するフレームバッファステップと、
整数部として符号化する信号の振幅の範囲を決めるシフト量決定ステップと、
前記シフト量決定部で定めたシフト量にしたがって、前記デジタル信号を整数信号と誤差信号に分割する分割ステップと、
整数信号を符号化する整数信号符号化ステップと、
誤差信号を符号化する誤差信号符号化ステップと、
前記整数信号符号化部の出力と前記誤差信号符号化部の出力とを統合する統合ステップとを有し、
信号復号化部に、
符号化データを分割する分割ステップと、
整数信号を復号化する整数信号復号化ステップと、
誤差信号を復号化する誤差信号復号化ステップと、
復号化した整数信号と誤差信号とを結合する結合ステップとを有する
信号コーデック方法であって、
前記シフト量決定ステップが、
少なくとも１つの過去のフレームのシフト量をフレームシフト量保持バッファに記録しておき、
現フレーム内の振幅値が最大のサンプル値を、整数部の最大値、最小値の範囲内でシフト量の変更のみによって表現可能な最大の振幅となるようにシフト量候補を算出し、
前記シフト量候補と前記フレームシフト量保持バッファに記録されたシフト量を用いて、あらかじめ定めた基準にしたがって、現フレームのシフト量を決定すること
を特徴とする信号コーデック方法。
【請求項１４】
請求項１から６のいずれかに記載の信号符号化装置をコンピュータにより実現する信号符号化プログラム。
【請求項１５】
請求項１４記載の信号符号化プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のサンプル値を情報符号化する情報符号化装置、方法、プログラム、および記録媒体に関する。
【背景技術】
【０００２】
近年、音響信号データや画像情報データを通信路により伝送する場合や情報記録媒体に記録する場合に、情報圧縮符号化技術が用いられている。また編集加工が容易な浮動小数点形式のデータの可逆圧縮も重要で、例えば非特許文献１または特許文献１の符号化方法がある。これらの符号化方法では、浮動小数点形式のデータサンプル列を、複数サンプルをまとめてフレームを構成させる。そして、フレームごとに、フレーム内の最大の振幅の値が整数の最大値となるようにビットシフト量を決定する。決定したビットシフト量を用いて各サンプルを整数信号と誤差信号に分離し、それぞれをフレームごとに符号化する。
【０００３】
従来技術での符号化処理部の機能構成を図１に示す。符号化処理部８００は、フレームバッファ８１０、シフト量算出部８２０、整数信号・誤差信号分離部８３０、整数信号符号化部８４０、誤差信号符号化部８５０、統合部（Multiplexer）８６０から構成される。
この符号化処理のイメージを図２に示す。フレームは、複数のサンプル値から構成されていて、各サンプル値は有限のビット列から構成されている。図２は整数部を２３ビットで表現した浮動小数点表現の場合を示している。図２では網掛けされたビットには０または１が入るが、他のビットはすべて０である。フレーム単位で符号化する際には、フレーム内のサンプル値を整数部と誤差部（入力信号から整数部を引いた残りの全部または一部）とに分離する。図２の点線で囲んだ部分が整数部である。整数部は、フレーム内で最大の振幅の値が整数の最大値となるようにマッピングを行うことで決められる。分離された整数部と誤差部は、それぞれ別々に符号化された後、統合されて符号化データとなる。
【０００４】
なお、図２に示すイメージは、浮動小数点表現の場合だけでなく、整数表現の場合などにも適用できる。どのような表現であれ、当該振幅を表現する最大のビット（ＭＳＢ：Most Significant Bit）から有限個離れた最小のビット（ＬＳＢ：Least Significant Bit）までのビット列のみが０または１が存在しうるビットであり、他のビットはすべて０ならば、同じ方法が適用できる。たとえば、３２ビットや６４ビットの整数表現の場合に、サンプルごとに特定の２４ビットだけに０か１のビットがあり、他のビットは０という場合でもよい。
【０００５】
代表的な浮動小数点表示としては、IEEE754 32bit浮動小数点がある。この浮動小数点は、
【数１】
2007006337.tif 000003
【０００６】
と表現される。ここで、Ｓは符号部、Ｍは仮数部、Ｅは指数部である。また、IEEE754では、Ｅ０＝２７−１＝１２７と決められている。上記式中のＥ−Ｅ０は−１２７≦Ｅ−Ｅ０≦１２８の範囲の値である。仮数部Ｍは、２進表現で値が１となるビットがＭＳＢに来るように、かつ、ＭＳＢビットと次のビットの間に小数点の位置がくるように正規化され、１となるＭＳＢビットを除いた小数点以下のビットである２３ビットで構成されている。以下の説明では、整数部の信号（以下、「整数信号」という。また、誤差部の信号を「誤差信号」という。）の量子化ビット数Ｑを２４とする。
【０００７】
図３は、図１に示した符号化処理部８００の処理フローである。フレームバッファ８１０は、デジタルの入力信号ｘ（ｉ）を一時的に蓄積し、ＮＦ個のサンプル値ｘ（ｉ）（ｉ＝１〜ＮＦ）でフレームを構成する（Ｓ８１０）。シフト量算出部８２０は、図２を用いて説明した方法によって、フレーム単位にシフト量Ｓｊを決定する（Ｓ８２０）。整数信号・誤差信号分離部８３０は、シフト量Ｓｊを用いて、当該フレーム入力信号のＮＦ個のサンプルそれぞれを整数部と誤差部に分離する（Ｓ８３０）。整数信号符号化部８４０は、整数信号・誤差信号分離部８３０で分離された整数信号を符号化する（Ｓ８４０）。誤差信号符号化部８５０は、整数信号・誤差信号分離部８３０で分離された誤差信号を符号化する（Ｓ８５０）。統合部（Multiplexer）８６０は、符号化された整数信号と誤差信号とシフト量を統合し、符号化データを出力する（Ｓ８６０）。
【０００８】
図４にはシフト量算出部８２０の処理（ステップＳ８２０）の詳細な処理フロー例を示す。ただし、この処理例は、IEEE754 32bit浮動小数点で表現されたサンプル値の場合の処理例である。シフト量算出部８２０では、まず、フレーム入力信号中の全サンプル（ＮＦ個）を読み込む（Ｓ８２０１）。次に変数ｉに１を設定し、ΔＥｍａｘに−１２７（Ｅ０）を設定する（Ｓ８２０２）。現フレームのｉ番目のサンプルの指数部Ｅｉ−Ｅ０すなわちＥｉ−１２７を計算して変数ΔＥｉに代入する（Ｓ８２０３）。ΔＥｉ＞ΔＥｍａｘであるかどうかを判定し（Ｓ８２０４）、真であればΔＥｉをΔＥｍａｘ設定する（Ｓ８２０５）。ｉ＜ＮＦかを確認する（Ｓ８２０６）。ｉ＜ＮＦならば、ｉにｉ＋１を代入し（Ｓ８２０７）、ステップＳ８２０３に戻る。ｉ＜ＮＦでないならば、ΔＥｍａｘ＞−１２７であるかどうかをチェックする（Ｓ８２０８）。ΔＥｍａｘ＞−１２７の場合には、シフト量ＳｊにΔＥｍａｘを代入して（Ｓ８２０９）、処理を終了する。ΔＥｍａｘ≦−１２７の場合には、当該フレーム中のサンプルは全て０であったということなのでシフト量Ｓｊを０に設定する（Ｓ８２１０）。この処理は、サンプルの中で最大振幅が、整数部で表現可能な最大値、最小値の範囲を超えない範囲で、最大の振幅に割り当てられるようにシフト値を決定することに相当する。
【０００９】
また、図５にシフト量算出部８２０の処理フローの変形例（ステップＳ８２０’）を示す。IEEE754 32bit浮動小数点表現されたサンプルでは、Ｅ−Ｅ０が１２８や、−１２７の場合には、ＮａＮや非正規化数などの特殊な値となっている。最大振幅を判定する際に、フレーム内のサンプルのうち、−１２７＜Ｅ−Ｅ０＜１２８の範囲内の数値のみを用いてシフト量を算出する点が図４と異なる。また、ｉ番目のサンプルを分析する際に、これまでに得られたΔＥｍａｘを用いてｉ番目のサンプルの小数点の位置を移動させ、桁調整後の値が想定する量子化ビット数で表現可能な値の範囲内にあるかどうかを判定する。このとき、桁調整の結果、所定の量子化ビット数で表現可能な値の範囲を超えてしまう場合には、ΔＥｍａｘを1増加させ、範囲を超えないようにする点が図４の処理と異なる。
【００１０】
具体的な処理フローの違いは以下のとおりである。ステップＳ８２０２とステップＳ８２０３との間にステップＳ８２２１を追加し、−１２７＜Ｅｉ−１２７＜１２８かを確認する（Ｓ８２２１）。Ｓ８２２１が真の場合にはステップＳ８２０３に進み、真でない場合にはステップＳ８２０６へ進む。また、ステップＳ８２０５とステップＳ８２０６との間にステップＳ８２２０を追加する。ステップＳ８２２０では、まずＸ’ｉに、Ｘｉと２の（−ΔＥ＋（Ｑ−１））乗との積を代入する（Ｓ８２２２）。Ｘ’ｉ＞２Ｑ−１−１またはＸ’ｉ＜−２Ｑ−１を確認する（Ｓ８２２３）。ステップＳ８２２３が真の場合には、ΔＥｍａｘに１を加える（Ｓ８２２４）。ステップ８２２３が真でない場合には、ステップ８２０６へ進む。
【００１１】
図６に、ステップＳ８３０のシフト量Ｓｊを用いて入力信号Ｘｉを整数信号Ｙｉと誤差信号Ｚｉに分離する手順を詳細に示す。ＮＦ個の各サンプルＸｉに対して逐次以下の処理を行う。内部のメモリに、フレームバッファからＮＦ個のサンプルを取り込む（Ｓ８３０１）。サンプルの番号を示すｉに１を代入する（Ｓ８３０２）。入力サンプルＸｉの指数部（Ｅｉ−１２７）が、−１２７より大きく、かつ１２８未満の範囲に含まれているか否かを判定する（Ｓ８３０３）。ステップＳ８３０３で指数部が前記の範囲外であると判定された場合には、i番目のサンプルは値が０であるか、非正規化数もしくはＮａＮなどの特殊な数である。したがって、桁合わせ後のサンプルＹｉは０とし、Ｘ’ｉを誤差部Ｚｉとする（Ｓ８３０９）。ステップＳ８３０３で指数部が前記の範囲内であった場合には、Ｘｉに２の（−Ｓｊ＋（Ｑ−１））乗を掛け合わせてＸ’ｉを得る（Ｓ８３０４）。もしくは、サンプルＸｉの指数値ＥｉからＥｉ’＝Ｅｉ−Ｓｊ＋（Ｑ−１）によって、Ｘ’ｉの指数値（Ｅ’ｉ−１２７）のＥ’ｉを求める。ここで、Ｑは整数部の量子化ビット数２４である。この処理は、フレーム内の全てのサンプルに共通の２の（−Ｓｊ＋（Ｑ−１））乗を掛け合わせて、フレーム内の振幅最大のサンプルが、整数部の量子化ビット数で表現可能な最大振幅を超えないように、シフト量Ｓｊを用いて小数点の位置を桁合わせすることに相当する。得られたＸ’ｉの指数値（Ｅ’ｉ−１２７）が、−１２７より大きく、かつ１２８未満の範囲に含まれているか否かをチェックする（Ｓ８３０５）。指数部が前記の範囲外の場合には、サシプルＹｉは０とする（Ｓ８３０９）。指数部が前記の範囲内の場合には、Ｘ’ｉが正かを確認する（Ｓ８３０６）。Ｘ’ｉが正の場合には、Ｘ’ｉの小数点以下を切り捨てたものを整数部Ｙｉとする（Ｓ８３０７）。Ｘ’ｉが負の場合には、Ｘ’ｉの小数点以下を切り上げたものを整数部Ｙｉとする（Ｓ８３０８）。Ｙｉが０でない場合には、Ｘ’ｉの小数点以下の部分を誤差部Ｚｉとする（Ｓ８３０７，Ｓ８３０８）。ｉがＮＦより小さいかを確認する（Ｓ８３１０）。ｉがＮＦより小さい場合は、ｉにｉ＋１を代入する（Ｓ８３１１）。ｉがＮＦ以上の場合は、終了する。整数信号と誤差信号の分離は、上記の手順に限る必要はなく、特許文献１にはいくつかの分離方法が示されている。
【００１２】
図７に復号化処理部の機能構成を示す。復号化処理部９００は、符号化データを分割する分割部（Demultiplexer）９１０、整数信号を復号化する整数信号復号化部９２０、誤差信号を復号化する誤差信号復号化部９３０、整数・誤差信号を結合する整数・誤差信号結合処理部９４０から構成される。
【非特許文献１】Dai Yang, and Takehiro Moriya, ”Lossless Compression for Audio Data in the IEEE Floating-Point Format, AES Convention Paper 5987, AES 115th Convention, New York, NY, USA, 2003 0CTOBER 10-13.
【特許文献１】国際公開第２００４／１１４５２７号パンフレット
【発明の開示】
【発明が解決しようとする課題】
【００１３】
図２を用いて従来の方法の問題点を説明する。非特許文献１の方法では、フレーム内で最大の振幅の値が整数の最大値となるようにマッピングを行い、整数部と誤差部に分離してそれぞれを符号化する。しかし、連続するフレームで最大振幅が異なる場合には、整数部に割り当てられた信号がフレーム間で不連続になることがある。そのような場合には、整数部にフレーム間予測を用いた圧縮符号化を適用する際の圧縮率の低下や、誤差部の統計的な性質がフレームごとに変化することに起因した誤差部の圧縮効率の低下の恐れがある。したがって、最大振幅を基準として整数部と誤差部とに分離することが最適な圧縮効率を得ることにならないという問題があった。
【課題を解決するための手段】
【００１４】
本発明では、シフト量決定部で、少なくとも１つの過去のフレームのシフト量をフレームシフト量保持バッファに記録しておき、現フレーム内の振幅値が最大のサンプル値を、整数部の最大値、最小値の範囲内でシフト量の変更のみによって表現可能な最大の振幅となるようにシフト量候補を算出し、前記シフト量候補と前記フレームシフト量保持バッファに記録されたシフト量を用いて、あらかじめ定めた基準にしたがって、現フレームのシフト量を決定し、整数部として符号化する信号の振幅の範囲を決める。また、分割部で、前記シフト量決定部で定めたシフト量にしたがって、前記デジタル信号を整数信号と誤差信号に分割し、整数信号符号化で整数信号を符号化し、誤差信号符号化で誤差信号を符号化する。そして、統合部（Multiplexer）で前記整数信号符号化部の出力と前記誤差信号符号化部の出力と前記シフト量とを統合する。
【００１５】
本発明の整数部として符号化する信号の振幅の範囲を決める符号化処理のイメージを、図８に示す。フレーム１とフレーム２の各サンプル値は、図２の場合と同じである。フレーム１では、最大振幅である３番目のサンプルにあわせてフレーム１のシフト量が決められている。このシフト量にしたがって、フレーム１の整数部も決まる。フレーム２のシフト量を決める際には、図２の場合は、フレーム２の中で振幅が最大のサンプル値にあわせたシフト量としている。しかし、このようにシフト量を変化させると、フレーム間予測を用いた圧縮符号化では圧縮率が悪くなる場合がある。そこで、図８に示すフレーム２では、フレーム１と同じシフト量としている。フレーム２のシフト量を、どのような場合にフレーム１と同じにするのか、フレーム２のシフト量を変化させるとしても、どの程度変化させるのかなどの決め方は様々である。たとえば、以下のような方法が考えられるが、これらに限る必要はない。１つ目は、閾値をあらかじめ決めておき、フレーム１のシフト量とフレーム２のシフト量候補（振幅が最大のサンプル値にあわせたシフト量）との差が閾値以内であればフレーム２のシフト量をフレーム１と同じにする方法である。２つ目は、フレーム１のシフト量からフレーム２のシフト量候補までの各シフト量での符号化後のデータ量を計算して、最もデータ量が少ないシフト量をフレーム２のシフト量とする方法である。３つ目は、過去のＮ個（Ｎは２以上の整数）のフレームのシフト量を記録しておき、シフト量候補が、過去のＮ個のフレームのシフト量の中で、ｎ番目（ｎは、１以上Ｎ未満の整数）に小さいシフト量よりも大きく、かつ直前のフレーム（フレーム１）のシフト量よりも小さい場合には、直前のフレーム（フレーム１）のシフト量を現フレーム（フレーム２）のシフト量とし、シフト量候補が、過去のＮ個のフレームのシフト量の中で、ｎ番目（ｎは、１以上Ｎ未満の整数）に小さいシフト量以下、または直前のフレーム（フレーム１）のシフト量以上の場合には、シフト量候補を現フレーム（フレーム２）のシフト量とする方法である。４つ目は、シフト量候補が、フレーム１のシフト量以下の場合には、フレーム１のシフト量をフレーム２のシフト量とし、シフト量候補が、フレーム１のシフト量よりも大きい場合には、シフト量候補をフレーム２のシフト量とする方法である。
【発明の効果】
【００１６】
本発明によれば、過去のフレームのシフト量も考慮した上で現フレームのシフト量を決定するので、符号量をさらに少なくすることができる。また１つ目の手段の場合、フレームのシフト量Ｓｊを決定することで、頻繁なシフト量の変化がなくなり、フレーム間予測を用いて圧縮符号化する場合の圧縮率を向上することができる。２つ目の手段の場合、処理の時間はかかるが、確実に符号量の少ないシフト量を選定することができる。３つ目の手段の場合、閾値をあらかじめ決めておくのではなく、過去のシフト値から求めているので、入力信号の特徴を考慮して閾値を変更することができる。４つ目の手段の場合、処理の内容を最も簡単にできる。
【発明を実施するための最良の形態】
【００１７】
以下では、説明の重複を避けるため同じ機能を有する構成部や同じ処理を行う処理ステップには同一の番号を付与し、説明を省略する。
［第１実施形態］
図９に本発明の符号化処理部の機能構成例を示す。符号化処理部１００は、フレームバッファ８１０、シフト量候補算出部１２０とシフト量選定部１３０とフレームシフト量保存バッファ１４０から構成されるシフト量決定部１１０、整数信号・誤差信号分離部８３０、整数信号符号化部８４０、誤差信号符号化部８５０、統合部（Multiplexer）８６０から構成される。図１の従来の符号化処理部８００との違いは、シフト量決定部１１０である。
【００１８】
符号化処理部１００の処理フローは、図３のステップＳ８２０を、図１０のステップＳ１１０に置き換えたものとなる。ステップＳ１１０では、まず、シフト量候補算出部１２０で、フレーム内のサンプル値の最大振幅を整数部の量子化ビット数で表現可能な最大振幅にマッピングしてシフト量候補ΔＥを求める（Ｓ１２０）。このステップＳ１２０の処理はステップＳ８２０と実質的に同じである。違いは、求めたΔＥｍａｘをシフト量Ｓｊ（Ｓ８２０９、Ｓ８２１０）とするのではなく、シフト量候補ΔＥとすることだけである。また、図５で示したステップＳ８２０’を用いても良い。シフト量選定部１３０は、現フレームが先頭フレームかランダムアクセスフレーム（ＲＡフレーム：過去のフレームからの予測を用いないフレーム）かを判断する（Ｓ１４０）。先頭フレームかランダムアクセスフレームの場合には、シフト量選定部１３０は、シフト量候補ΔＥを現フレームのシフト量とする（Ｓ１５０）。先頭フレームでもランダムアクセスフレームでもない場合には、シフト量選定部１３０は、フレームシフト量保持バッファから１つまたは複数の過去のフレームのシフト量Ｓｊ−ｋ（ｋは１以上の整数）を読み出し、過去のフレームのシフト量とシフト量候補ΔＥを用いて現フレームのシフト量Ｓｊを決定する（Ｓ１３０）。
【００１９】
図１１に、シフト量選定部１３０の処理（ステップＳ１３０）の詳細な処理フロー例を示す。シフト量選定部１３０は、フレームシフト量保持バッファ１４０から直前のフレームのシフト量Ｓｊ−１を、シフト量候補算出部１２０からシフト量候補ΔＥを読み込む（Ｓ１３０１）。Ｓｊ−１＞ΔＥを確認する（Ｓ１３０２）。真の場合にはＳｊ−１＜ΔＥ＋αを確認する（Ｓ１３０３）。ここで、αはあらかじめ定めておく閾値である。ステップＳ１３０２とＳ１３０３とがともに真の場合には、直前のフレームのシフト量Ｓｊ−１を現フレームのシフト量Ｓｊとする（Ｓ１３０４）。また、ステップＳ１３０２とＳ１３０３のどちらかが真でない場合には、シフト量候補ΔＥを現フレームのシフト量Ｓｊとする（Ｓ１３０５）。
【００２０】
αはシフト量の揺らぎが一定以上になった場合にのみシフト量を変化させるようにするための閾値で、たとえばあらかじめ５に設定しておく。α＝５の場合には、当該フレームの最大振幅を分析して得られたシフト量侯補ΔＥが、前のフレームのシフト量Ｓｊ−１よりも大きくなるか、もしくはＳｊ−１−５よりも小さい値となった場合にのみシフト量を変化させることに相当する。最適な閾値αは、入力信号により変化するので明確に定めることはできない。しかし、αを小さくしすぎると頻繁にシフト量が変わりフレーム間予測による信号圧縮率が悪くなりやすい。一方、閾値αを大きくしすぎると、シフト量が変化しないことにより、フレーム単位での効率の良い符号化ができなくなる。
【００２１】
このようにフレームのシフト量Ｓｊを決定することで、頻繁なシフト量の変化がなくなり、フレーム間予測を用いて圧縮符号化する場合の圧縮率を向上することができる。
［第２実施形態］
第１実施形態では、シフト量決定部１１０のシフト量選定部１３０は、図１１に示したように、閾値をあらかじめ決めておき、直前のフレームのシフト量と現フレームのシフト量候補との差が閾値以内であれば現フレームのシフト量を直前のフレームと同じにした。本実施形態では、シフト量決定部１１０のシフト量選定部１３０は、直前のフレームのシフト量から現フレームのシフト量候補までの各シフト量での符号化後のデータ量を計算して、最もデータ量が少ないシフト量を現フレームのシフト量とする。
【００２２】
図１２にステップＳ１３０の代わりとなるシフト量選定部１３０の処理フロー（ステップＳ１３０’）を示す。シフト量選定部１３０は、フレームシフト量保持バッファ１４０から直前のフレームのシフト量Ｓｊ−１を、シフト量候補算出部１２０からシフト量候補ΔＥを読み込む（Ｓ１３０１）。Ｓｊ−１＞ΔＥを確認する（Ｓ１３０２）。ステップＳ１３０２が真の場合には、Ｄｍｉｎを無限大、ｉを直前のフレームのシフト量Ｓｊ−１とする（Ｓ１３１１）。ただし、無限大とは、整数信号の符号量と誤差信号の符号量のそれぞれが取りうる最大の値の和を超えた値とすればよい。シフト量をｉとした場合の整数信号の符号量と誤差信号の符号量とを求め、統合した場合の符号化データの符号量Ｄｉを求める（Ｓ１３１２）。ＤｍｉｎがＤｉよりも大きいかを確認する（Ｓ１３１３）。ＤｍｉｎがＤｉよりも大きい場合は、ＤｉをＤｍｉｎ、ｉをｉｍｉｎとする（Ｓ１３１４）。ＤｍｉｎがＤｉ以下の場合にはステップＳ１３１５に進む。ｉ＞ΔＥであることを確認する（Ｓ１３１５）。ステップＳ１３１５が真の場合は、ｉにｉ−１を代入する（Ｓ１３１６）。ステップＳ１３１５が真でない場合は、シフト量ＳｊをＤｍｉｎを与えるｉの値とする（Ｓ１３１７）。
ステップＳ１３０２が真でない場合には、シフト量Ｓｊをシフト量候補ΔＥとする（Ｓ１３０５）。
【００２３】
このように処理すると、処理の時間はかかるが、確実に符号量の少ないシフト量を選定することができる。
［第３実施形態］
本実施形態では、シフト量決定部１１０のシフト量選定部１３０は、過去のＮ個（Ｎは２以上の整数）のフレームのシフト量を記録しておく。シフト量候補が、過去のＮ個のフレームのシフト量の中で、ｎ番目（ｎは、１以上Ｎ未満の整数）に小さいシフト量よりも大きく、かつ直前のフレームのシフト量よりも小さい場合には、直前のフレームのシフト量を現フレームのシフト量とする。シフト量候補が、過去のＮ個のフレームのシフト量の中で、ｎ番目（ｎは、１以上Ｎ未満の整数）に小さいシフト量以下、または直前のフレームのシフト量以上の場合には、シフト量候補を現フレームのシフト量とする。
【００２４】
図１３にステップＳ１３０の代わりとなるシフト量選定部１３０の処理フロー（ステップＳ１３０”）を示す。シフト量選定部１３０は、フレームシフト量保持バッファ１４０から過去のフレームのシフト量Ｓｊ−ｋ（ｋ＝１〜Ｎ）を、シフト量候補算出部１２０からシフト量候補ΔＥを読み込む（Ｓ１３０１）。ただし、Ｎは２以上の整数である。閾値αをＮ個の過去のシフト量の中で、ｎ番目に小さいシフト量とする（Ｓ１３２２）。ステップＳ１３０２以降の処理は、第１実施形態と同じである。
本実施形態では、閾値をあらかじめ決めておくのではなく、過去のシフト値から求めている。したがって、入力信号の特徴を考慮して閾値を変更することができる。
［第４実施形態］
本実施形態では、シフト量決定部１１０のシフト量選定部１３０は、シフト量候補が、直前のフレームのシフト量以下の場合には、直前のフレームのシフト量を現フレームのシフト量とする。シフト量候補が、直前のフレームのシフト量よりも大きい場合には、シフト量候補を現フレームのシフト量とする。
図１４にステップＳ１３０の代わりとなるシフト量選定部１３０の処理フロー（ステップＳ１３０''’）を示す。図１１のフローとの違いは、ステップＳ１３０３が削除された点である。したがって、本実施形態の場合、シフト量は増加することはあるが、減少することはない。ただし、処理の内容は最も簡単である。
【００２５】
なお、上記の実施形態はコンピュータに、上記方法の各ステップを実行させるプログラムを読み込ませ、実施することもできる。また、コンピュータに読み込ませる方法としては、プログラムをコンピュータ読み取り可能な記録媒体に記録しておき、記録媒体からコンピュータに読み込ませる方法、サーバ等に記録されたプログラムを電気通信回線等を通じてコンピュータに読み込ませる方法などがある。
【図面の簡単な説明】
【００２６】
【図１】従来技術での符号化処理部の機能構成を示す図。
【図２】従来技術での符号化処理のイメージを示す図。
【図３】従来の符号化処理部の処理フローを示す図。
【図４】シフト量算出部の処理の詳細な処理フローを示す図。
【図５】シフト量算出部の処理フローの変形例を示す図。
【図６】シフト量Ｓｊを用いて入力信号Ｘｉを整数信号Ｙｉと誤差信号Ｚｉに分離する手順を示す図。
【図７】復号化処理部の機能構成を示す図。
【図８】本発明のシフト量を決める符号化処理のイメージを示す図。
【図９】本発明の符号化処理部の機能構成例を示す図。
【図１０】シフト量決定部１１０の処理フローを示す図。
【図１１】シフト量選定部１３０の処理（ステップＳ１３０）の詳細な処理フロー例を示す図。
【図１２】第２実施形態のシフト量選定部１３０の処理フローを示す図。
【図１３】第３実施形態のシフト量選定部１３０の処理フローを示す図。
【図１４】第４実施形態のシフト量選定部１３０の処理フローを示す図。
【図１】
2007006337.tif 000004
【図２】
2007006337.tif 000005
【図３】
2007006337.tif 000006
【図４】
2007006337.tif 000007
【図５】
2007006337.tif 000008
【図６】
2007006337.tif 000009
【図７】
2007006337.tif 000010
【図８】
2007006337.tif 000011
【図９】
2007006337.tif 000012
【図１０】
2007006337.tif 000013
【図１１】
2007006337.tif 000014
【図１２】
2007006337.tif 000015
【図１３】
2007006337.tif 000016
【図１４】
2007006337.tif 000017