特許第6042949号(P6042949)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 華為技術有限公司の特許一覧

特許6042949パルス符号化及び復号化方法並びにパルスコーデック
<>
  • 特許6042949-パルス符号化及び復号化方法並びにパルスコーデック 図000016
  • 特許6042949-パルス符号化及び復号化方法並びにパルスコーデック 図000017
  • 特許6042949-パルス符号化及び復号化方法並びにパルスコーデック 図000018
  • 特許6042949-パルス符号化及び復号化方法並びにパルスコーデック 図000019
  • 特許6042949-パルス符号化及び復号化方法並びにパルスコーデック 図000020
  • 特許6042949-パルス符号化及び復号化方法並びにパルスコーデック 図000021
  • 特許6042949-パルス符号化及び復号化方法並びにパルスコーデック 図000022
  • 特許6042949-パルス符号化及び復号化方法並びにパルスコーデック 図000023
  • 特許6042949-パルス符号化及び復号化方法並びにパルスコーデック 図000024
  • 特許6042949-パルス符号化及び復号化方法並びにパルスコーデック 図000025
  • 特許6042949-パルス符号化及び復号化方法並びにパルスコーデック 図000026
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6042949
(24)【登録日】2016年11月18日
(45)【発行日】2016年12月14日
(54)【発明の名称】パルス符号化及び復号化方法並びにパルスコーデック
(51)【国際特許分類】
   G10L 19/08 20130101AFI20161206BHJP
   G10L 19/107 20130101ALI20161206BHJP
【FI】
   G10L19/08 F
   G10L19/107
【請求項の数】8
【全頁数】28
(21)【出願番号】特願2015-145274(P2015-145274)
(22)【出願日】2015年7月22日
(62)【分割の表示】特願2013-515680(P2013-515680)の分割
【原出願日】2011年5月31日
(65)【公開番号】特開2015-215630(P2015-215630A)
(43)【公開日】2015年12月3日
【審査請求日】2015年8月18日
(31)【優先権主張番号】201010213451.5
(32)【優先日】2010年6月24日
(33)【優先権主張国】CN
(73)【特許権者】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】▲馬▼ 付▲偉▼
(72)【発明者】
【氏名】▲張▼ ▲徳▼▲軍▼
【審査官】 大野 弘
(56)【参考文献】
【文献】 特表2010−526325(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G10L 19/08
G10L 19/107
(57)【特許請求の範囲】
【請求項1】
パルス符号化装置により、T個のトラックの中で符号化される必要があるパルスを決定するステップであって、Tは2以上の整数である、ステップと、
各トラックの中で符号化される必要がある少なくとも1つのパルスについての統計値を位置に従って別々に収集し、各トラックの中で前記少なくとも1つのパルスを有する位置の数Nt、トラックの中で前記少なくとも1つのパルスを有する位置の分布、及び前記少なくとも1つのパルスを有する各位置におけるパルス数を取得するステップであって、添え字のtはt番目のトラックを表し、t∈[0,T-1]である、ステップと、
位置の数{N0,N1,...,NT-1}に従って、第1のインデックスI1tを決定するステップと、
前記位置の分布に従って別々に各トラックの第2のインデックスI2tを決定するステップと、
各位置におけるパルス数に従って別々に各トラックの第3のインデックスI3tを決定するステップと、
各トラックの前記第1のインデックスI1t、各トラックの前記第2のインデックスI2t及び各トラックの前記第3のインデックスI3tに従って、コードインデックスIndを生成するステップと
を有するパルス符号化方法。
【請求項2】
各トラックの前記第3のインデックスI3tの計算式が、
I3t=CPPTΔNNt-CPPT-q(0)ΔNNth=1ΔNNt-1[CPPT-h-q(h-1)ΔNNt-h-CPPT-h-q(h)ΔNNt-h]
であり、NNtは前記t番目のトラックの中で符号化される必要があるパルスの総数を表し、ΔNNt=NNt-Ntであり、PPT=NNt-1であり、q(h)は(h+1)番目のパルスのポジションシリアル番号を表し、h∈[0,ΔNNt-1]であり、q(h)∈[0,Nt-1]であり、q(0)≦q(1)≦...≦q(ΔNNt-1)又はq(0)≧q(1)≧...≧q(ΔNNt-1)であり、Σは総和をとることを示す、
請求項1に記載のパルス符号化方法。
【請求項3】
各トラックの前記第2のインデックスI2tの計算式が、
I2t=CMtNt-CMt-p(0)Ntn=1Nt-1[CMt-p(n-1)-1Nt-n-CMt-p(n)Nt-n]
であり、Mtは前記t番目のトラックの中の位置の総数を表し、pt(n)はトラックの中でパルスを有するn番目の位置のポジションシリアル番号を表し、n∈[0,Nt-1]であり、pt(0)∈[0,Mt-Nt]であり、pt(n)∈[pt(n-1)+1,Mt-Nt+n]であり、pt(0)<pt(1)<...<pt(Nt-1)又はpt(0)>pt(1)>...>pt(Nt-1)である、
請求項1又は2に記載のパルス符号化方法。
【請求項4】
各トラックの中で符号化される必要があるパルスについての統計値を位置に従って別々に収集する間に、各トラックの中で前記パルスを有する各位置のパルス極性の正又は負の属性に従って、各トラックの中で前記パルスを有する各位置のパルス極性情報が取得され、
前記コードインデックスは、各トラックの中で前記パルスを有する各位置に対応する極性インデックスの情報を更に含み、前記極性インデックスは、インデックスに対応するパルスを有する位置のパルス極性情報を示す、請求項1−3の何れか1項に記載のパルス符号化方法。
【請求項5】
各トラックの中で前記パルスを有する各位置におけるパルス数に従って別々に各トラックの第3のインデックスI3tを決定するステップは、
前記t番目のトラックに関し、パルスを有するNt個の位置がNNt個のパルスを有する状態は、Nt個の位置がNNt-Nt個のパルスを有する状態に対応付けられ、NNtは前記t番目のトラックで符号化される必要があるパルスの総数を表し、及び、
所定の順序に従って、Nt個の位置に対するNNt-Nt個のパルスについて全ての可能な分布状態が配置され、配置のシリアル番号が、パルスを有する位置におけるパルス数を示す前記第3のインデックスI3tとして使用されることを有する、請求項1−4の何れか1項に記載のパルス符号化方法。
【請求項6】
T個のトラックの中で符号化される必要があるパルスを決定するように形成されるパルス統計部であって、Tは2以上の整数であり、各トラックの中で符号化される必要がある少なくとも1つのパルスについての統計値を位置に従って別々に収集し、各トラックの中で前記少なくとも1つのパルスを有する位置の数Nt、トラックの中で前記少なくとも1つのパルスを有する位置の分布、及び前記少なくとも1つのパルスを有する各位置におけるパルス数を取得し、添え字のtはt番目のトラックを表し、t∈[0,T-1]である、パルス統計部と、
第1、第2及び第3のインデックス部を有するインデックス演算部であって、前記第1のインデックス部は、位置の数{N0,N1,...,NT-1}に従って、第1のインデックスI1tを出力するように形成され、前記第2のインデックス部は、前記位置の分布に従って別々に各トラックの第2のインデックスI2tを出力するように形成され、前記第3のインデックス部は、パルス数に従って別々に各トラックの第3のインデックスI3tを出力するように形成される、インデックス演算部と、
各トラックの前記第1のインデックスI1t、各トラックの前記第2のインデックスI2t及び各トラックの前記第3のインデックスI3tに従って、コードインデックスIndを生成するように形成されるインデックス合成部と
を有するパルス符号化装置。
【請求項7】
各トラックの前記第3のインデックスI3tの計算式が、
I3t=CPPTΔNNt-CPPT-q(0)ΔNNth=1ΔNNt-1[CPPT-h-q(h-1)ΔNNt-h-CPPT-h-q(h)ΔNNt-h]
であり、NNtは前記t番目のトラックの中で符号化される必要があるパルスの総数を表し、ΔNNt=NNt-Ntであり、PPT=NNt-1であり、q(h)は(h+1)番目のパルスのポジションシリアル番号を表し、h∈[0,ΔNNt-1]であり、q(h)∈[0,Nt-1]であり、q(0)≦q(1)≦...≦q(ΔNNt-1)又はq(0)≧q(1)≧...≧q(ΔNNt-1)であり、Σは総和をとることを示す、
請求項6に記載のパルス符号化装置。
【請求項8】
各トラックの前記第2のインデックスI2tの計算式が、
I2t=CMtNt-CMt-p(0)Ntn=1Nt-1[CMt-p(n-1)-1Nt-n-CMt-p(n)Nt-n]
であり、Mtは前記t番目のトラックの中の位置の総数を表し、pt(n)はトラックの中でパルスを有するn番目の位置のポジションシリアル番号を表し、n∈[0,Nt-1]であり、pt(0)∈[0,Mt-Nt]であり、pt(n)∈[pt(n-1)+1,Mt-Nt+n]であり、pt(0)<pt(1)<...<pt(Nt-1)又はpt(0)>pt(1)>...>pt(Nt-1)である、
請求項6又は7に記載のパルス符号化装置。
【発明の詳細な説明】
【技術分野】
【0001】
<関連出願>
本願は「PULSE ENCODING AND DECODING METHOD AND PULSE CODEC」と題する西暦2010年1月24日付けで中国特許庁に出願された中国特許出願番号第201010213451.5による優先的利益を享受し、その中国特許出願の内容全体は本願のリファレンスに組み入れられる。
【0002】
技術分野
本発明はパルス符号化及び復号化方法並びにパルスコーデック等に関連する。
【背景技術】
【0003】
ベクトル符号化技術では、代数コードブックがしばしば使用され、適応フィルタリング後の残留信号について量子化符号化を実行する。トラックに関する最適な代数コードブックパルスの位置及び極性の情報が探索処理により得られた後、対応するインデックス値が符号化演算処理により取得され、デコード側がそのインデックス値に従ってパルスシーケンスを再構築できるようにする。無損失(ロスレス)再構築が保証されている前提条件がある場合、コードインデックス値に必要なビットを可能な限り減らすることができ、これが代数コードブックパルス符号化方法の研究開発を行う主な目的の1つである。
【0004】
適切な符号化方法である音声符号化における適応マルチレートワイドバンド(AMR_WB+)符号化方法を具体的な例として、既存の代数コードブックパルスで使用されている具体的な符号化方法を説明する。異なるコードビットレートの場合、1ないしN個のパルスがトラックの各々で符号化される。各々のトラックがM=2m個の位置を有していたとすると、AMR_WB+において、各トラックで1ないし6個のパルスを符号化するプロセスはそれぞれ次のとおりである。
【0005】
(1)1つのパルスが各トラックで符号化される。
【0006】
トラックの各々は2m個の位置を有するので、各トラックに関し、パルスの位置のインデックス(ポジションインデックス)は符号化にmビットを必要とし、パルスの極性インデックスは符号化に1ビットを必要とする。ある極性と共に1パルスのインデックス値は、次のように符号化される:
I1p(m)=p+s×2m
ここで、p∈[0,2m-1]はパルスのポジションインデックスであり;sはパルスの極性インデックスであり;パルスの極性が正の場合sは0に設定され、パルスの極性が負の場合sは1に設定され;I1p∈[0,2m+1-1]である。
【0007】
各トラックで1パルスを符号化するのに必要なビット数は:m+1である。
【0008】
(2)2つのパルスが各トラックで符号化される。
【0009】
(1)の結果によれば、各トラックにおいて1パルスを符号化するのにm+1ビットが必要であり、他のパルスのポジションインデックスを符号化するのにmビット必要である。パルスの順序については如何なる条件もないので、パルスのポジションインデックスを並べることで取得される値の相互関係は、他のパルスの極性を指定するのに使用されてもよい。2つのパルスのインデックス値は次のように符号化される:
I2p(m)=p1+I1p0×2m=p1+p0×2m+s×22m
ここで、p0,p1∈[0,2m-1]はそれぞれ2パルスのポジションインデックスであり;sはパルスp0の極性インデックスであり;パルスp1の具体的な極性指定規則は:p0<p1ならば2つのパルス極性が同じであることを示し、p0>p1ならば2つのパルス極性が互いに反対であることを示し;I2p∈[0,22m+1-1]である。
【0010】
各トラックで2パルスを符号化するのに必要なビット数は:2m+1である。
【0011】
(3)3つのパルスが各トラックで符号化される。
【0012】
各トラックは、セクションA及びセクションBという2つのセクションに分割される。各セクションは2m-1個の位置(ポジション)を各自有する。あるセクションは少なくとも2つのパルスを含む。(2)の結果によれば、セクションを符号化するために、2×(m-1)+1=2m-1ビットが必要とされる。トラック全体について別のパルスが探索され、(1)の結果によれば、m+1ビットが必要とされる。更に、2パルスを含むセクションを示すために更に1ビットが必要とされる。3パルスのインデックス値は次のように符号化される:
I3p(m)=I2p(m-1)+k×22m-1+I1p(m)×22m
ここで、kはセクションのインデックスであり;I3p∈[0,23m+1-1]である。
【0013】
各トラックで3パルスを符号化するのに必要なビット数は:3m+1である。
【0014】
(4)4つのパルスが各トラックで符号化される。
【0015】
各トラックは、セクションA及びセクションBという2つのセクションに分割される。各セクションは2m-1個の位置(ポジション)を各自有する。セクション各々に含まれるパルス数の組み合わせは次の表の通りである。
【表A】
【0016】
上記の表において、各タイプに対応する必要なビット数をもたらす基礎は次のとおりである:タイプ0及びタイプ4の場合、4つのパルスを含むセクションに関し、(3)のような方法が使用されるが、全体的なサーチに関するパルス数は2であり、これはI2p(m-2)+k×22m-3+I2p(m-1)×22m-2と等価であり;タイプ1の場合はI1p(m-1)+I3p(m-1)×2mと等価であり;タイプ2の場合はI2p(m-1)+I2p(m-1)×22m-1と等価であり;タイプ3の場合はI3p(m-1)+I1p(m-1)×23m-2と等価である。
【0017】
タイプ0及びタイプ4は予想される1つの状態と考えられ、タイプ1ないし3の各々は可能性のある状態と考えられるので、全部で4つの状態があり、従って、対応する状態を示すために2ビットが必要とされ、タイプ1ないし3の各々は4m-2+2=4ビットを必要とする。更に、タイプ0及びタイプ4を含む状態の場合、区別するために更に1ビットが必要とされ、タイプ0及びタイプ4は4m-3+2+1=4mビットを必要とする。
【0018】
各トラックで4パルスを符号化するのに必要なビット数は:4mである。
【0019】
(5)5つのパルスが各トラックで符号化される。
【0020】
各トラックは、セクションA及びセクションBという2つのセクションに分割される。各セクションは2m-1個の位置(ポジション)を各自有する。あるセクションは少なくとも3つのパルスを含む。(3)の結果によれば、セクションを符号化するために、3×(m-1)+1=3m-2ビットが必要とされる。トラック全体に関して他の2つのパルスが探索され、(2)の結果によれば、2m+1ビットが必要とされる。更に、3パルスを含むセクションを指定するために更に1ビットが必要とされる。5つのパルスのインデックス値は次のように符号化される:
I5p(m)=I3p(m-1)+k×23m-2+I1p(m)×23m-1
【0021】
各トラックで5パルスを符号化するのに必要なビット数は:5mである。
【0022】
(6)6つのパルスが各トラックで符号化される。
【0023】
各トラックは、セクションA及びセクションBという2つのセクションに分割される。各セクションは2m-1個の位置(ポジション)を各自有する。セクション各々に含まれるパルス数の組み合わせは次の表の通りである。
【表B】
【0024】
上記の表において、各タイプに対応する必要なビット数の基礎は(4)から導出されるので、繰り返しになるので説明しない。
【0025】
タイプ0及び6、タイプ1及び5、タイプ2及び4はそれぞれ1つの可能な状態と考えられ、タイプ3は別の1つの状態と考えられるので、全部で4つの状態が存在し、従って、対応する状態を示すために2ビットが必要とされ、タイプ3は6m-4+2=6m-2ビットを必要とする。組み合わせられたタイプを指定した場合、区別するために更に1ビットが必要とされ、タイプ3を除く他のタイプは6m-5+2+1=6m-2ビットを必要とする。
【0026】
各トラックで6パルスを符号化するのに必要なビット数は:6m-2である。
【0027】
本発明の基礎研究において、発明者等は次のことを見出した:AMR_WB+により提供される代数パルス符号化方法では、再帰処理に類似する符号化論理が使用され、符号化されるパルス数が比較的多い状態は、いくつかの状態に分割され、分割された状態では、処理を行うための符号化されるパルス数が比較的少なくなっており、従って演算処理が複雑であると共に、トラックで符号化されるパルス数が増えてくると、コードインデックスの冗長性が徐々に累積してゆき、コードビットを浪費してしまっている。
【発明の概要】
【0028】
本発明による実施の形態は、コードビットを節約することが可能なパルス符号化方法を提供する。
【0029】
実施の形態によるパルス符号化方法は、
T個のトラックの中で符号化される必要があるパルスを取得するステップであって、前記Tは2以上の整数である、ステップと、
各トラックの中で符号化される必要があるパルスについての統計情報を位置に応じて個別的に収集し、各トラックの中でパルスを有する位置の数Nt、トラックの中でパルスを有する位置の分布、及びパルスを有する各々の位置におけるパルス数を取得するステップであって、添え字のtはt番目のトラックを表し、t∈[0,T-1]である、ステップと、
各トラックの中でパルスを有する位置の数{N0,N1,...,NT-1}に従って、第1のインデックスI1を決定するステップであって、前記第1のインデックスI1は、パルスを有する位置の数に関し、各トラックの中でパルスを有する位置についての全ての可能な分布状態に対応し、前記パルスを有する位置の数はそれによって表現される、ステップと、
各トラックの中でパルスを有する位置の分布に従って別々にトラック各々の第2のインデックスI2tを決定するステップであって、前記第2のインデックスは、前記第1のインデックスI1に対応する可能性のある全ての分布状態のうち、対応するトラックの中でパルスを有する現在の位置の分布に対応する分布状態を示す、ステップと、
各トラックの中でパルスを有する位置各々におけるパルス数に従って別々に各トラックの第3のインデックスI3tを決定するステップと、
各トラックの第1のインデックス並びに第2及び第3のインデックスの情報を含むコードインデックスIndを生成するステップと
を有するパルス符号化方法である。
【0030】
実施の形態による別のパルス符号化方法は、
T個のトラックの中で符号化される必要があるパルスを取得するステップであって、前記Tは2以上の整数である、ステップと、
各トラックの中で符号化される必要があるパルスについての統計情報を位置に応じて個別的に収集し、各トラックの中でパルスを有する位置の数Nt、トラックの中でパルスを有する位置の分布、及びパルスを有する各々の位置におけるパルス数を取得するステップであって、添え字のtはt番目のトラックを表し、t∈[0,T-1]である、ステップと、
各トラックの中でパルスを有する位置の数に従って、各トラックの第1のインデックスI1tを決定するステップであって、前記第1のインデックスI1tは、パルスを有する位置の数に関し、トラックの中でパルスを有する位置についての全ての可能な分布状態に対応し、前記パルスを有する位置の数はそれによって表現される、ステップと、
各トラックの中でパルスを有する位置の分布に従って別々にトラック各々の第2のインデックスI2tを決定するステップであって、前記第2のインデックスは、前記第1のインデックスに対応する可能性のある全ての分布状態のうち、前記トラックの中でパルスを有する現在の位置の分布に対応する分布状態を示す、ステップと、
各トラックの中でパルスを有する位置各々におけるパルス数に従って別々に各トラックの第3のインデックスI3tを決定するステップと、
各トラックの前記第1、第2及び第3のインデックスの情報を含むコードインデックスIndを生成するステップと
を有するパルス符号化方法である。
【0031】
本発明による実施の形態は上記に関連するパルス復号化方法並びに関連するパルス符号化装置及び復号化装置等も提供する。
【0032】
本発明の実施の形態によれば、例えば2つより多い数のトラックが一緒に符号化され、1トラックの符号化の場合に未使用であったコードブックスペース(free codebook space)は、ジョイント符号化(joint encoding)の間に、節約されるコードビットをもたらすように合成されることが可能である。更に、トラック各々の中にありかつ符号化に必要なパルスは、場所又は位置、パルスを含む場所の数、トラックの中でパルスを含む場所の分布、及び別個に符号化されるパルスを含む位置各々におけるパルス数に従って合成され、同じ位置にある複数のパルスについて別個の符号化を実行してしまうことを回避し、コードビットを更に節約する。
【図面の簡単な説明】
【0033】
図1】本発明の第1の実施の形態による符号化方法の概略的なフローチャート。
図2】本発明の第1の実施の形態によるパルス位置マッピング方法の概略的なフローチャート。
図3】本発明の第2の実施の形態による符号化方法の概略的なフローチャート。
図4】本発明の第3の実施の形態による符号化方法の概略的なフローチャート。
図5】本発明の第4の実施の形態によるトラックパルスを重ね合わせる様子を概略的に示す図。
図6】本発明の第4の実施の形態によるパルス分散トラックのインデックスを概略的に示す図。
図7】本発明の第5の実施の形態による復号化方法の概略的なフローチャートを示す図。
図8】本発明の第6の実施の形態による復号化方法の概略的なフローチャートを示す図。
図9】本発明の第7の実施の形態による復号化方法の概略的なフローチャートを示す図。
図10】本発明の第8の実施の形態による符号化装置の概略的な論理構成図。
図11】本発明の第9の実施の形態による復号化装置の概略的な論理構成図。
【発明を実施するための形態】
【0034】
本発明の実施の形態はパルス符号化方法を提供し、パルス符号化方法ではコードビットを節約するために2つ以上のトラックが一緒に符号化又はエンコードされる。本発明の実施の形態は対応するパルス復号化方法及びパルスコーデック等も提供する。以下、それらを詳細に説明する。
【0035】
スピーチエンコーダ又は音声符号器では、コードブックサーチにより、各トラックの全てのパルスの位置及び極性(含まれていた場合)の情報が取得される。この情報はデコードを行う側に正しく転送される必要があり、これによりデコードを行う側は全てのパルスの位置及び極性(含まれていた場合)の情報を一意に復元できるようにする。この場合において、ビットレートをできるだけ小さくするために、できるだけ少ないビット数が情報の転送に使用されることが予想される。同じトラックにある全てのパルスの位置及び極性(含まれていた場合)の順列(又は置換)及び組み合わせの数はコードブック空間(codebook space)の最小値となること、及び対応するコードビット数は理論的な下限値になることが、理論的な解析から知られている。トラックにおける位置の総数及びトラックにおけるパルスの総数は固有である。トラックにおける位置の総数とトラックにおけるパルスの総数とが異なる値をとる場合、全てのパルスの位置及び極性の順列及び組み合わせの数は必ずしも2のべき乗の整数にはならないので、コードビット数の理論的下限値も必ずしも整数にはならず、その場合、単独のトラックの符号化に要する実際のコードビット数は、少なくとも、その理論的下限値の整数部分プラス1であり、必然的にコードブック空間の一部を未使用にしてしまう。例えば、以下の表1は、符号化されるのに必要なパルス総数Nが1トラックに関して1ないし6である場合における(ただし、位置の総数は16である)、コードビット数の理論的下限値及び実際の下限値と未使用部分の状態とを示す。
【表1】
【0036】
多くの場合、実際の下限値はコードブック空間をかなり浪費することを招いていることが表1から分かり、従って本発明では、2つ以上のトラックについて一緒に符号化すること、即ちジョイント符号化(joint encoding)が実行され、これにより単独トラック符号化における未使用コードブック空間が結合され、結合された未使用空間が十分大きければ、1つの実際のコードビットを減らすことができる。当然に、(トラック内の位置の総数とトラック内のパルスの総数とが同じである)同じタイプのトラックに関し、K個のトラックについてジョイント符号化のみが実行される場合、1つのコードビットが節約され、ここでK≧1/(1-kk)であり、kkは単一トラック符号化に関する理論的な下限値の少数部分である。例えば、表1に示されているようにkkが0.5未満であるパルス総数が3、4及び5であるトラックの場合、2つを一緒にジョイント符号化すると1つのコードビットを節約できる。表1においてパルス総数が6であるトラックについては、3つを一緒にジョイント符号化すると1つのコードビットを節約できる。当然に、異なるタイプのトラックのジョイント符号化(一緒に符号化すること)も同様な効果をもたらし、2つのトラックのkkの合計が1未満である又は3つのトラックのkkの合計が2未満である場合には、1ビットが節約され;明らかに、3つのトラックのkkの合計が1未満であった場合には2ビットが節約され、それ以上についても同様に類推できる。以下の表2は同じタイプの2トラックのジョイント符号化と単独トラック符号化との比較例を示し(パルスが極性を有することを考慮に入れている)、この場合において、トラック内の位置の総数は16であり、符号化に必要な総パルス数Nは3ないし5である。
【表2】
【0037】
表3は異なるタイプの2ないし3トラックのジョイント符号化と単独トラックの符号化との比較例を示し(パルスは極性を有することが考慮されている)、この場合において、トラック内の位置の総数は16であり、符号化に必要な総パルス数Nは3ないし5である。
【表3】
【0038】
上記は複数のトラックを一緒に符号化(ジョイント符号化)する場合に節約できるビット数の理論的解析例を示す。理論的に予想される効果を達成するには、可能な限り効率的にコードブック空間を利用するためにコードインデックスが必要とされる。以下、複数のトラックを一緒に符号化(ジョイント符号化)する際に実際のビット下限値を使用する符号化方法を、具体的な実施の形態により個別的に示す。
【0039】
具体例1:図1に示されているように、パルス符号化方法は以下のステップを含む:
【0040】
A1:T個のトラックの中にありかつ符号化される必要があるパルスを取得する。Tは2以上の整数である。
【0041】
T個のトラックにおける各トラックで符号化される必要のある総パルス数は、通常、ビットレートに従って決定される。明らかに、符号化される必要のあるパルス数が多いほど、コードインデックスに必要なビット数は多くなり、ビットレートも高くなる。本明細書において、pulse_numtは、t番目のトラックにあるパルスであって符号化される必要のあるパルスの総数を表す。pulse_numt=NNt、t∈[0,T-1]であることが仮定されている。ジョイント符号化におけるトラックの総パルス数は同じであっても異なっていてもよい。
【0042】
A2:各々のトラックにおける符号化される必要があるパルスについての統計情報を、位置に応じて別々に収集し、各トラックでパルスを有する位置の数Nt、トラックでパルスを有する位置の分布及びパルスを有する位置各々についてのパルス数を取得する。
【0043】
本明細書において、pos_numtはパルスを有する位置であってt番目のトラックにある位置の数を表す。トラックにおけるNNt個のパルスの分布は位置に関して重なっていてもよく、pos_numt=Ntであることが仮定されている。当然に、Nt∈[1,NNt]である。
【0044】
パルス位置ベクトルPt(Nt)={pt(0),pt(1),...,pt(Nt-1)}はパルスを有する位置であってt番目のトラックにある位置の分布を表し、ここでpt(n)はt番目のトラックにあるパルスを有する位置のポジションシリアル番号を表し、n∈[0,Nt-1]であり、pt(n)∈[0,Mt-1]であり、本明細書におけるMtはt番目のトラックにおける位置の総数を表し、概してMtは8、16等であってもよく、ジョイント符号化のトラックにおける位置の総数は同じであっても異なっていてもよい。
【0045】
パルス番号ベクトルSUt(Nt)={sut(0),sut(1),...,sut(Nt-1)}はパルスを有する位置であってt番目のトラックにある位置各々におけるパルス数を表し、sut(n)はpt(n)の位置のパルス数を表し、明らかに、sut(0)+sut(1)+...+sut(Nt-1)=NNtである。
【0046】
更に、符号化される必要のあるパルスは極性又はシンボル(symbol)を有していてもよく、すなわち正又は負の属性を有していてもよい。この場合において、トラックの中にあるパルスであって符号化される必要のあるパルスについての統計情報が、位置に応じて収集される場合に、パルスを有する各々の位置のパルス極性情報が取得される必要もある。
【0047】
本明細書においては、パルス極性ベクトルSt(Nt)={st(0),st(1),...,st(Nt-1)}は、パルスを有する位置であってt番目のトラックにある位置各々のパルス極性情報を表し、st(n)はpt(n)の位置のパルス極性を表しかつpt(n)の位置の極性インデックスと呼ばれる。st(n)で表現されるパルス極性は正又は負の2進数的な性質を有することに基づいて、一般に、次のような簡易な符号化方法が使用されてよい:正のパルスを表すためにst(n)=0が使用され、負のパルスを表すためにst(n)=1が使用される。明らかに、符号化される必要のあるパルスに関し、パルス極性は必須の属性ではなく、実際のニーズによれば、パルスは位置及び数量に関する情報を有するだけでもよく、その場合、パルス極性情報に関する統計情報を収集する必要はない。
【0048】
明らかに、Pt(Nt)、SUt(Nt)及びSt(Nt)の値は1対1の対応関係を有する。
【0049】
トラックのジョイント符号化に必要なパラメータPt(Nt)、SUt(Nt)及びSt(Nt)が統計情報を収集することで取得された後に、パラメータはインデックスに符号化される必要があり、パラメータとインデックスとの間の対応関係が設定され、デコードする側がインデックスに従って対応するパラメータを復元できるようにする。対応関係に関し、2つの通知方法が使用されてもよい。通知方法の1つは、代数的な方法を使用して関数計算式を指定し、この場合、符号化する側がインデックスを取得するためにパラメータに対して順行計算(フォワード計算)を実行し、復号化又はデコードする側がそのパラメータを取得するためにインデックスに対して逆行計算(リバース計算)を実行する。別の通知方法は、マッピング方式を使用して問合せの関連性を指定し、この場合、符号化及び復号化する側の双方がパラメータをインデックスに関連付けるマッピングテーブルを格納しておく必要がある。パラメータの具体的な性質に応じて2種類の方法についての選択が実行されてよい。一般的に言えば、データ量が多い状況では、関数計算式によって対応関係を指定するように設計すると、符号化及び復号化する側での記憶容量を節約することができ、好ましい。以下、パラメータの各々を符号化する例をそれぞれ説明する。
【0050】
A3:パルスを有する位置であって各々のトラックにある位置の数{N0,N1,...,NT-1}に従って、第1のインデックスI1を決定し、ここで、第1のインデックスI1は、パルスを有する位置の個数の下で、パルスを有しかつ各トラックにある位置の全ての可能な分布状況に対応し、ここで、パルスを有する位置の数はそれによって表現される。
【0051】
{N0,N1,...,NT-1}の組み合わせについての可能な状態の総数は、Πt=0T-1Ntである。
Ntの値は大きくなく、一般に、ジョイント符号化のトラックの総数Tは非常に大きくはなく、{N0,N1,...,NT-1}の組み合わせの可能な状態の総数も非常に大きくはなく、
従って、{N0,N1,...,NT-1}の組み合わせと第1のインデックスI1との間の対応関係は、関数計算式でも又は問合せの関連性でも実現可能である。
【0052】
{N0,N1,...,NT-1}の組み合わせとI1との間に対応関係が設定されると、概して、それらとI1との間に1対1の対応関係が設定され、例えば第1のインデックスは1つの{N0,N1,...,NT-1}の組み合わせに対応する。pos_numtの値NtはPt(Nt)の全ての可能な状態の総数Wt(Nt)を決定し、Wt(Nt)=CMtNtであり、「C」は組み合わせの数を取得することを示し、I1はΠt=0T-1Wt(Nt)可能なPt(Nt)の組み合わせ{P0(N0),P1(N1),...,PT-1(NT-1)}に対応する。
【0053】
当然に、所定のトラックの或るNtの値が少ない数の状態のPt(Nt)に対応する場合、Ntの値は同じI1に対応するように組み合わせられ、すなわち少なくとも1つのI1が2つより多い数の{N0,N1,...,NT-1}の組み合わせに対応し、この場合、別の追加的なインデックスIftが同じI1に対応する{N0,N1,...,NT-1}の組み合わせを識別するために必要とされ、すなわち、I1に対応する1でないNtの値と共にトラックの現在のNtの値を更に決定するために追加的なインデックスIftが使用される。
【0054】
様々なI1はトラックのジョイント符号化の分類インデックスと考えてもよく、各トラックのパルス位置の数の組み合わせに従って、ジョイント符号化のコードブック空間全体を幾つかの部分(パート)に分割する。ジョイント符号化の組み合わせ分類の状態の具体例は以下に示されている。表4は3パルス2トラックのジョイント符号化に関する組み合わせ分類方法を示す。全部で3×3個のNt値の組み合わせが示されており、各々の組み合わせは1つの分類(I1)に対応する。トラック内の位置の総数Mtは全部で16であると仮定されている。
【表4】
【0055】
表5は4パルス2トラックのジョイント符号化の組み合わせ分類方法を示す。全部で4×4個のNt値の組み合わせがあり、各々の組み合わせは1つの分類(I1)に対応する。トラック内の位置の総数Mtは全部で16であると仮定されている。
【表5】
【0056】
表6は5パルス2トラックのジョイント符号化の組み合わせ分類方法を示す。上記2つの具体例との相違は、Nt=1,2,3の状態が分類の際に組み合わせられていることである。全部で3×3個の分類(I1)があり、いくつかの分類の各々が複数のNt値の組み合わせに対応している。トラック内の位置の総数Mtは全部で16であると仮定されている。
【表6】
【0057】
表6から分かるように、複数のNt値(一般的には、Nt値は小さな数の位置の組み合わせに対応する)が分類の際に一緒に組み合わせられ、ジョイント符号化の分類総数を効果的に減らす(例えば、表6において分類数は9であり、これは、1対1の対応関係の場合の分類での数25よりもかなり小さい)。従って、当然に、1でないNtの値が存在する場合、分類状態の現在のNt値を特定するために別の追加的なインデックスIftが使用される必要がある。すなわち、I1によって分割された空間は、追加的なインデックスIftによって指定された部分空間に更に分割される。
【0058】
A4:パルスを有する位置であって各々のトラックにある位置の分布Pt(Nt)に従ってトラック各々の第2のインデックスI2tを別々に決定し、第2のインデックスI2tは、第1のインデックスI1に対応する全ての可能な分布状態の中で、対応するトラックにパルスを有する現在の位置に対応する分布状態を指定する。
【0059】
Pt(Nt)の可能な総数はWt(Nt)=CMtNtであり、データ量は多いので、第2のインデックスI2tと共に対応関係の計算式を使用することが好ましいが、当然に問合せの関係性(マッピングテーブル)を使用することも実現可能である。明らかに、Wt(Nt)はI2tについての可能な値の数である。I2tの値が0からカウントされる場合、I2t∈[0,Wt(Nt)-1]である。
【0060】
明らかに、追加的なインデックスIftを使用する必要がある場合、第1のインデックスI1及び追加的なインデックスIftにより、I2tの範囲を決めるNt値が一緒に決定される。
【0061】
代数計算によりPt(Nt)及びI2tの対応関係を決定するために、第2のインデックスI2tの計算式が次のように与えられる:
【数1】
ここで、pt(n)はトラックの中でパルスを有するn番目の位置のポジションシリアル番号を表し、n∈[0,Nt-1]であり、pt(0)∈[0,Mt-Nt]であり、pt(n)∈[pt(n-1)+1,Mt-Nt+n]であり、pt(0)<pt(1)<...<pt(Nt-1)又はpt(0)>pt(1)>...>pt(Nt-1)である。
【0062】
上記の方法を利用することで、トラック各々の第2のインデックスI2tが計算式から取得される。コードインデックスの中でI2tが占めるデータ量は多いので、この計算法を使用すると、符号化及び復号化を行う側で可能な限り多くの記憶容量を削減できる。一方、I2tは連続的に符号化されかつ厳密にPt(Nt)に1対1に対応するので、コードビットを最大限活用でき、無駄を回避できる。計算方法の原理、具体的な導出及び説明については、公開番号がCN101295506(特許文献1)である中国特許出願(公開日は西暦2008年10月29日である)を参照されたい。具体的には、その出願書類の明細書第13頁第18行ないし第15頁第9行(実施の形態2、第14図及び第15図);及び対応する復号化計算法については、出願書類の明細書第16頁第23行ないし第17頁第12行を参照されたい(実施の形態4)。
【0063】
A5:パルスを有しかつトラックにある位置各々におけるパルスの数SUt(Nt)に従ってトラック各々の第3のインデックスI3tを別々に決定する。
【0064】
SUt(Nt)はPt(Nt)と同じ次元数のベクトルであるが、sut(0)+ sut(1)+...+ sut(Nt-1)=NNtという制限が課せられており、一般にNtの値は大きくはなく、通常は1ないし6程度の値であり、従ってSUt(Nt)の可能な総数は大きくはなく、第3のインデックスI3tとの対応関係について、関数計算式又は問合せによる関連性(マッピングテーブル)の何れを用いて実現されてもよい。留意すべきことに、極端な状況の場合、例えばNt=1又はNt=NNtであった場合、SUt(Nt)は唯1つの可能な状態しか有しておらず、如何なるI3tも通知される必要はなく、この場合I3tは最終的なコードインデックスの生成に影響を及ぼさない任意的な値となる。
【0065】
SUt(Nt)及びI3tの間の対応関係を代数計算により決定するために、第3のインデックスI3tの計算は次のように行われる:
【0066】
t番目のトラックに関し、Nt個の位置(ポジション)がNNt個のパルスを有している状態は、Nt個のポジションがNNt-Nt個のパルを有する状態に対応付けられ(マッピングされ)、ここでNNtは符号化される必要がありかつt番目のトラックにあるパルスの総数を表す。例えば、図2に示されているような6パルス4ポジション(NNt=6,Nt=4)の4種類に関し、SUt(Nt)は常に{1,2,1,2}であり、(各々の位置は少なくとも1つのパルスを有するので)各々の位置のパルス数から1が減算されて{0,1,0,1}が取得され、SUt(Nt)の情報は2パルス4ポジション符号化状態に対応付けられる。
【0067】
決められた順序に従って、Nt個の位置におけるNNt-Nt個のパルスの全ての可能な分布状態が並べられ、並べられたシリアル番号が、パルスを有する位置におけるパルス数を示す第3のインデックスI3tとして使用される。
【0068】
上記の計算法を反映する計算式は次のとおりである:
【数2】
ここで、ΔNNt=NNt-Ntであり、PPT=NNt-1であり、q(h)は(h+1)番目のパルスのポジションシリアル番号を表し、h∈[0,ΔNNt-1]であり、q(h)∈[0,Nt-1]であり、q(0)≦q(1)≦...≦q(ΔNNt-1)又はq(0)≧q(1)≧...≧q(ΔNNt-1)であり、Σは総和をとることを表す。
【0069】
計算方法の原理、具体的な導出及び説明については、公開番号がCN101388210(特許文献2)である中国特許出願(公開日は西暦2008年3月18日である)を参照されたい。具体的には、その出願書類の明細書第8頁第23行ないし第10頁第7行(実施の形態2、第6図);及び対応する復号化計算法については、出願書類の明細書第21頁第10行ないし第21頁第27行を参照されたい(実施の形態6)。
【0070】
A6:Tトラックの一般コードインデックス(general code index)Indを生成し、コードインデックスIndは、トラック各々の第1のインデックスI1及び第2及び第3のインデックスI2tと各トラックのI3tの情報を含む。
【0071】
I1、I2t、I3t、追加的なインデックスIft(含まれていた場合)及び極性インデックスIst(含まれていた場合)は、デコードする側で特定可能な何らかの方法でコードインデックスに置換され、最も簡易な例の場合、固定的なフィールドに別々に保存される。各トラックで符号化される必要のあるパルスの総数pulse_numtが指定されている前提条件の場合、I1により指定されるpos_numt各々の値NtはI2t及びI3tの可変範囲を決定し、すなわちI2t及びI3tにより必要とされるコードビット数を決定し(含まれていた場合、Istにより必要とされるコードビット数も決定する)、このため、コードインデックスを構築するために以下の方法が使用される。
【0072】
(1)第1のインデックスI1が初期値として使用され、他のインデックスの情報は多重される。I1の値は、コードインデックスの独立した値の範囲に対応する。このように、デコードする側は、コードインデックスの値の範囲に応じて、pos_numtの値の組み合わせ{N0,N1,...,NT-1}を直接的に決定してもよい。明らかに、追加的なインデックスを伴う状況の場合、第1のインデックスに対応する1でないNtの値を有するトラックのNtの値の組み合わせのみが、I1に応じて決定でき、例えば表6の「1,2,3」の組み合わせである。如何なるNt値又はNt値の組み合わせが決定されるとしても、必要な符号化空間が決定され、I1により決定される値の範囲(一般的には、所定長のフィールドに対応する)は、T個のトラック各々のI2t、I3t及びIftにより使用されるT個の部分に更に分割される。
【0073】
(2)I2t及びI3tはデコードする側で指定できる任意の方法で設定されてよく、例えば最も簡易な方法の場合、別々に保存されてもよい。I2t及びI3tは通常は2のべき乗の整数によっては表現できないので、できるだけコードビット数を節約するために、t番目のトラックのI2t及びI3tはI1によって決定される値の範囲から指定されるセクションに設けられる以下の形式に組み合わせられてもよい:
【数3】
ここで、I2t及びI3tは何れも0から始まって符号化され、I2t∈[0,Wt(Nt)-1]であり、I3t∈[0,Class(Nt)-1]であり、Class(Nt)はSUt(Nt)の可能な総数である。明らかに、この方法は、I1により指定される値の範囲がWt(Nt)の長さを有するClass(Nt)セクションに分割されることと等価であり、各々のセクションはSUt(Nt)の分布状態に対応する。
【0074】
Iftが使用されなければならない場合、明らかに、I1によりトラックについて指定される値の範囲は使用する異なるNtにIftにより先ず指定される必要があり、その後にI2t及びI3tが各Ntに指定される空間に設定され、この場合、次式が成立する。
【数4】
【0075】
(3)符号化されるパルスが極性を伴うパルスである場合、明らかに、Index(t)は各パルスの極性インデックスst(n)の情報を更に含む必要がある。例えば、t番目のトラックの極性インデックスIstはI1によりトラックについて指定された値の範囲内の固定的な位置(例えば、末尾)に設けられる長さNtのフィールドとして使用されてもよく、この場合、次式が成立する。
Index(t)=(I2t+I3t×CMtNt)×2Nt+Ist(第1のインデックスに対応する1つのNt値を伴うトラックの場合)又は
Index(t)=Ift+(I2t+I3t×CMtNt)×2Nt+Ist(第1のインデックスに対応する1つでないNt値を伴うトラックの場合)
ただし、Ist=st(0)+2Nt-1+st(1)×2Nt-2+...+st(Nt-1)である。
【0076】
結果的に、T個のトラックの一般コードインデックスの構成法は、次式のように表現できる:
【数5】
ここで、Imax(t)はIndex(t)の上限値を表し、「Π」は乗算を表す。デコードを行う場合に、Imax(t)で除算したときの剰余を得る方法がIndex(t)を1つずつ分離するのに使用されてもよい。例えば、(Ind-I1)をImax(T-1)で除算したときの剰余を取得してIndex(T-1)を取得し、Index(T-1)を(Ind-I1)から減算したものをImax(T-1)で除算し、更にImax(T-2)で除算したときの剰余を取得してIndex(T-2)を取得し、以後同様に、Index(0)が取得されるまで行われる。
【0077】
コードインデックスを構成する上記の方法例は実施の形態による1つの代替的な方法であるに過ぎず、当業者はコードインデックスを構成する基本情報を用いて別のコードインデックス構造の構成法を容易に取得できることが、容易に理解されるであろう。例えば、インデックスの位置は置き換わってもよいし、或いは再構築されてもよい。具体的には、異なるトラックのIt2が最初に組み合わせられ、次にI3t及びIstが組み合わせられてもよい。本発明の実施の形態はコードインデックスの具体的な構成法に限定されない。
【0078】
具体例2:ジョイント符号化のトラック各々のインデックスが別々に計算され、図3に示されるようにコードインデックスを形成することと組み合わせられる実施の形態によるパルス符号化方法は、以下のステップを有する:
【0079】
B1:T個のトラックの中にありかつ符号化される必要があるパルスを取得する。Tは2以上の整数である。
【0080】
B2:各々のトラックにおける符号化される必要があるパルスについての統計情報を、位置に応じて個別に収集し、各トラックでパルスを有する位置の数Nt、トラックでパルスを有する位置の分布Pt(Nt)及びパルスを有する位置各々におけるパルス数SUt(Nt)を取得する。
【0081】
ステップB1及びB2は具体例1におけるステップA1及びA2と同様に実行されてよい。
【0082】
B3:パルスを有しかつ各々のトラックにある位置の数Ntに従って、各トラックの第1のインデックスI1tを別々に決定し、第1のインデックスI1tは、パルスを有する位置の数のうちパルスを有しかつトラックにある位置の全ての可能な分布状態に対応し、パルスを有する位置の数は第1のインデックスI1tにより表現される。
【0083】
B4:パルスを有しかつ各々のトラックにある位置の分布Pt(Nt)に従ってトラック各々の第2のインデックスI2tを別々に決定し、第2のインデックスI2tは、第1のインデックスI1tに対応する全ての可能な分布状態のうち、パルスを有しかつトラックにある現在の位置の分布に対応する分布状態を示す。
【0084】
B5:パルスを有しかつ各トラックにある位置各々におけるパルス数に従って各トラックの第3のインデックスI3tを別々に決定する。
【0085】
ステップB3ないしB5は具体例1のステップA3ないしA5と同様に実行されてもよい。各トラックのインデックスを取得するための詳細な方法については、公開番号がCN101295506(特許文献1)である中国特許出願(公開日は西暦2008年10月29日である)を参照されたい。具体的には、その出願書類の明細書第6頁第13行ないし第15頁第9行(実施の形態1及び実施の形態2);及び対応する復号化計算法については、出願書類の明細書第15頁第11行ないし第17頁第12行を参照されたい(実施の形態3及び実施の形態4)。
【0086】
B6:T個のトラックの一般コードインデックスを生成する。コードインデックスIndはトラック各々の第1、第2及び第3のインデックスI1t、I2t及びI3tの情報を含む。
【0087】
I1t、I2t、I3t及び極性インデックスIst(含まれていた場合)は、デコードする側で特定可能な何らかの方法でコードインデックスに置換され、最も簡易な例の場合、固定的なフィールドに別々に保存される。当然に、組み合わせが実行されてもよい。例えば、トラックのインデックスが別々に組み合わせられ、重ね合わせられてもよい。すなわち、以下に示す方法を使用してコードインデックスを構築してもよい:
【数6】
ここで、Imax(t)はIndex(t)の上限値を表す。
Index(t)=I1t+I2t+I3t×CMtNt(パルスの極性が考慮されない場合)又は
Index(t)=I1t+(I2t+I3t×CMtNt)×2Nt+Ist(パルスの極性が考慮される場合)。
【0088】
コードインデックスを構成する上記の方法例は実施の形態による1つの代替的な方法であるに過ぎず、当業者はコードインデックスを構成する基本情報を用いて別のコードインデックス構造の構成法を容易に取得できることが、容易に理解されるであろう。例えば、インデックスの位置は置き換わってもよいし、或いは各トラックの中で再構築されてもよい。本発明の実施の形態はコードインデックスの具体的な構成法に限定されない。
【0089】
具体例3:パルス符号化方法。この具体例は、コードビットを更に節約するために具体例1又は具体例2に基づいて提案される方法である。
【0090】
この具体例によるパルス符号化方法によりコードインデックスIndを生成する方法は、具体例1又は具体例2の方法と同様に実行されてよい。コードインデックスIndが生成されると、図4に示されているように、以下の処理が実行され、その処理は以下のステップを含む:
【0091】
C1:コードインデックスIndと調整閾値THRとを比較する。
ここで、THR≦2Bmax-Imax(T)であり、Imax(t)はIndの上限値を表し、Bmaxはコードインデックスを符号化するのに使用されるビット数の上限値を表し、IndがTHRより小さかったならば、本方法はステップC2に進み、そうでなかったならば本方法はステップC3に進む。
【0092】
C2:コードビットを使用することでIndを符号化する。この数は第1の数である。
【0093】
C3:コードビットを使用することでIndにオフセット値THR0を加えたものを符号化する。この数は第2の数である。THR≦THR0≦2Bmax-Imax(T)であり、第1の数は第2の数より小さく、第2の数はBmax以下であり、第1の数及び第2の数は何れも正の整数である。
【0094】
例えば、4パルストラックを2つジョイント符号化する場合(トラック各々における位置の総数は16であると仮定されている)、Indの可能な総数はImax(T)=44032×44032(パルスが極性を有することを考慮に入れている)となり、31コードビットが必要とされ、未使用コードブック空間は231-44032×44032=208666624となり、THR=THR0=208666624のように設定され;Indが208666624コードビットよりも小さかった場合、第1の数である数値(30)がIndを符号化するために使用され;Indが208666624コードビットよりも大きかった場合、第2の数である数値(31)がInd+208666624を符号化するために使用される。明らかに、31ビットに基づくと更に9.7%ビットを節約できる可能性がある。当然に、更にビットを節約するために、調整閾値THRは208666624よりも小さな数に設定されてもよいが、ビットを節約できる状態が生じる確率が大幅に減少するので、比較考量する必要がある。
【0095】
ビットを節約する方法の原理、具体的な導出及び説明については、例えば、(出願日が西暦2009年6月19日である)中国特許出願(CN200910150637.8)に示されている。
【0096】
更に、ビットを節約できる状況が生じる確率を増やすために、以下の好適な方法を使用して、第1のインデックスI1とコードインデックスIndにおける{N0,N1,...,NT-1}の組み合わせとの間に対応関係を設定してもよい。{N0,N1,...,NT-1}の組み合わせの出現確率に関する統計情報を収集し、出現確率が高い組み合わせに対応する第1のインデックスを小さな値にし、出現確率の高い組み合わせについての符号化インデックス値を可能な限り小さくする。
【0097】
具体例4:パルス符号化方法。この具体例は、具体例1及び具体例2とは異なる観点からトラックのジョイント符号化を行う新たな方を提案する。
【0098】
具体例1及び具体例2では、パルスを有する位置であってトラックの中にある位置の状態についてジョイント分類が実行されるか(具体例1)或るいは第1のインデックスが各トラックに設定されるか(具体例2)によらず、各トラックのパルス位置について処理が別々に実行されなければならない。本具体例では、新たなアイディアが採用され、すなわちジョイント符号化の複数のトラックが1つのトラックを形成するように重ねられ、パルス分布情報が重ね合わせられる。例えば、図5に示されているように、2つの3パルストラックが重ね合わせられて1つの6パルストラックを形成し(各トラックの位置の数(ポジション数)は16であると仮定されている)、(1)−(3)の以下の処理が行われる:
【0099】
(1)(合成された)単独のトラックにおけるパルスの分布状態に従って、重ね合わせられたトラックの分布インデックスが計算される。例えば、具体例2で説明したI1t、I2t、I3t及びIstの組み合わせ方法が使用されてもよい。
【0100】
(2)パルスが所属しているトラックの状態に応じて、トラックインデックスが設定される。例えば、図6に示されているように、図5の重ね合わせから得られた3つの位置にある6パルスは、異なるトラック分布状態を表し、対応する状態をそれぞれ指定するために異なるトラックインデックスが使用されてもよい。図6における「0」はトラック0のパルスに対応し、「×」はトラック1のパルスに対応する。
【0101】
(3)単独のトラックに関するものでありかつパルスを重ね合わせることで得られる分布インデックスと、パルスが所属するトラックを指定するトラックインデックスとが一緒に組み合わせられ、最終的なコードインデックスが得られる。
【0102】
この具体例によるジョイント符号化も具体例1及び具体例2と同様にコードビットを節約し、更に、具体例3と組み合わせて使用することでコードビットを更に節約してもよい。
【0103】
具体例5:パルス復号化方法。この具体例の復号化方法は具体例1の符号化方法に従って得られたコードインデックスを復号化又はデコードし、復号化方法は、符号化方法の逆プロセスであり、図7に示すように以下のステップを含む:
【0104】
D1:コードインデックスIndを取得し、そのコードインデックスから第1のインデックスI1を抽出し、第1のコードインデックスI1に応じて、パルスを有する位置であってT個のトラックの各トラックにある位置の数{N0,N1,...,NT-1}を決定する。
【0105】
Indから各インデックスの情報を抽出する処理は、符号化の際に複数のインデックスをIndに合成するのと逆の手順によって実行されてよい。例えば、各インデックスが固定的なフィールドに別々に保存されていた場合、各インデックスは直接的に抽出されてよい。
【0106】
I1を初期値として使用して他のインデックスを重ね合わせる具体例1による構造をIndが使用していた場合、先ずI1が抽出され、I1に対応する{N0,N1,...,NT-1}の組み合わせに従って各トラックのIndex(t)がIndから分離される。この場合、I1はIndの独立した値の範囲に対応するので、デコードする側は、幾つかの一群の独立した値の範囲の中でIndが所属している値の範囲を判定し、かつIndが所属している値の範囲に対応する初期値に従って第1のインデックスI1を決定する。
【0107】
第1のインデックスI1に対応する1でないNt値を有するトラックが存在する状況の場合、明らかに、そのトラックについて、I1はNt値の組み合わせを決定し、更に抽出された追加的なインデックスIftにより実際のNt値が決定され、この場合、分離されたIndex(t)はIftの情報を含んでいる。
【0108】
D2:各トラックの第2のインデックスI2t及び各トラックの第3のインデックスI3tをコードインデックスIndから抽出する。
【0109】
I1と同様に、I2t及びI3tの抽出も、Index(NN)への合成と逆の手順に従って実行され、独立した配置について抽出が直接的に行われてもよい。合成の後に重ね合わせが行われる具体例1の符号化方法がI2t及びI3tについて使用されていた場合、I2t、I3t、Ift(含まれていた場合)及びIst(含まれていた場合)はIndex(t)から分離され、合成プロセスに応じて逆の手順が実行される。
【0110】
例えば、Ift及びIstが含まれていない場合、I2t=Index(t)%Wt(Nt)及びI3t=Int[Index(t)/Wt(Nt)]であり、ここで%は剰余を求めることを表し、Intは端数処理又は丸める処理を表す。Iftが含まれている場合、I1を決定するのと同様に、Index(t)が所属する値の範囲に対応する初期値に従って追加的なインデックスIftが決定され、Iftが分離された後、決定されたNt値に従ってI2t、I3t及びIst(含まれていた場合)が更に抽出される。
【0111】
D3:各トラックについて、第2のインデックスI2tに従って、パルスを有する位置の数の下で、トラックの中でパルスを有する位置の分布を決定する。パルスを有する位置の分布は第1のインデックスI1及びIft(含まれていた場合)に対応する。
【0112】
I2tをデコードする場合、I2tをエンコードするのと逆の処理が使用される。エンコードの際にI2tがある計算式を用いて取得されている場合、デコードの際に同じ計算式を用いることで逆の処理が実行される。エンコードの際にI2tが問合せの関係(マッピングテーブル)を用いることで取得されている場合、デコードの際に同じ対応関係が使用される。
【0113】
D4:各トラックについて、第3のインデックスI3tに従って、パルスを有する位置各々におけるパルス数を決定する。
【0114】
D5:各トラックについて、トラックの中でパルスを有する位置の分布Pt(Nt)及びパルスを有する位置各々におけるパルス数SUt(Nt)に従って、トラックについてのパルスシーケンスを再構築する。
【0115】
パルスが極性を有する場合において、各トラックのパルスシーケンスが再構築されると、各々の極性インデックスst(n)が示すパルス極性情報に従って、パルスを有する各々の位置のパルス極性の正又は負の属性が復元される。
【0116】
具体例6:パルス復号化方法。この具体例の復号化方法は具体例2の符号化方法により得られたコードインデックスを復号化し、復号化の手順は符号化の手順と逆の手順であり、図8に示されているように、以下のステップを含む:
【0117】
E1:コードインデックスIndを取得し、コードインデックスIndから各トラックの第1のインデックスI1tを抽出し、第1のインデックスI1tに応じて各トラックについてパルスを有する位置の数Ntを決定する。
【0118】
各トラックのパルスの総数NNtが決定される場合(異なるビットレートの条件の下では、コードインデックスのビット総数は異なり、従って、デコードする側はコードインデックスの長さ(ビット数)に応じて各トラック伸そうパルス数NNtを直接的に決定してもよい)、Index(t)の上限値Imax(t)が決定され、従って、各トラックのIndex(t)がIndから直接的に取得され、Index(t)の値の範囲に応じてI1t及び対応するNtが決定される。
【0119】
E2:各トラックの第2のインデックスI2t及び各トラックの第3のインデックスI3tをコードインデックスIndから抽出する。すなわち、I2t及びI3tはIndex(t)から取得され、これは具体例5のステップD2のように実行されてよい。パルス極性が含まれていた場合、Istが更に取得される。
【0120】
E3:各トラックについて、第2のインデックスI2tに従って、パルスを有する位置の数の下で、トラックの中でパルスを有する位置の分布を決定し、パルスを有する位置の数は第1のインデックスI1tに対応する。
【0121】
E4:各トラックについて、第3のインデックスI3tに従って、パルスを有する位置各々におけるパルス数を決定する。
【0122】
E5:各トラックについて、トラックの中でパルスを有する位置の分布Pt(Nt)及びパルスを有する位置各々におけるパルス数SUt(Nt)に従って、トラックについてのパルスシーケンスを再構築する。
【0123】
ステップE3ないしE5は具体例5におけるステップD3ないしD5と同様に実行されてもよい。
【0124】
具体例7:パルス復号化方法。この具体例の復号化方法は、具体例3の符号化方法に対応し、コードインデックスを取得するために具体例3の可変長符号化によるコードストリームを復号化し、本方法は図9に示されているように以下のステップを有する:
【0125】
F1:符号化されているコードストリームからコードビットを抽出する。この数は第1の数である。
【0126】
F2:第1の数である復号化されたコードビット値が調整閾値THRよりも小さかった場合、本方法はステップF3に進み、そうでなかった場合はステップF4に進む。
【0127】
F3:第1の数であるデコードされたビット値をコードインデックスIndとして使用する。
【0128】
F4:そうでなかった場合、抽出されるコードビット数を第2の数まで増やし、コードビットの復号化された値からオフセット値THR0を減算することで得られた値(第2の数)をコードインデックスIndとして使用する。
【0129】
この具体例の復号化方法によれば、符号化されているコードストリームからコードインデックスIndが取得された後、コードインデックスIndは、具体例5又は具体例6の復号化方法に従って更に復号化される。
【0130】
具体例8:パルス符号化装置又はパルスエンコーダ。この具体例のエンコーダは具体例1の符号化方法を実行するのに使用されてもよく、図10に示されているように、以下の要素を含む:
【0131】
パルス統計情報処理部101は、T個のトラックにありかつ符号化される必要のあるパルスを取得するように形成されており、Tは2以上の整数であり;及び各トラックにありかつ符号化される必要のあるパルスについての統計情報を、位置に応じて別々に収集し、各トラックの中でパルスを有する位置の数Ntと、トラックの中でパルスを有する位置の分布と、パルスを有する各々の位置でのパルス数とを取得し、添え字のtはt番目のトラックを表し、t∈[0,T-1]である。
【0132】
インデックス演算部102は以下の要素を含む:
第1のインデックス部1021は、各トラックの中でパルスを有する位置の数{N0,N1,...,NT-1}に従って、第1のインデックスI1を出力するように形成されており、I1は、パルスを有する位置の数の下で、各トラックの中でパルスを有する位置についての全ての可能な分布状態に対応し、パルスを有する位置の数はそれによって表現される。
【0133】
第2のインデックス部1022は、各トラックの中でパルスを有する位置の分布に従って、各トラックの第2のインデックスI2tを別々に出力するように形成されており、I2tは、I1に対応する全ての可能な分布状態の中で、対応するトラックの中でパルスを有する現在の位置の分布に対応する分布状態を示す。
【0134】
第3のインデックス部1023は、各トラックの中でパルスを有する位置各々におけるパルス数に従って、各トラックの第3のインデックスI3tを別々に出力するように形成されている。
【0135】
インデックス合成部103は、各トラックの第1のインデックスI1並びに第2、第3のインデックスI2t、I3tの情報を合成し、コードインデックスIndを生成する。
【0136】
少なくとも1つの第1のインデックスが2以上の{N0,N1,...,NT-1}の組み合わせに対応する場合、インデックス演算部102は追加的なインデックス部1024(図10では破線枠のブロックで示されている)を更に有し、追加的なインデックス部1024は、第1のインデックスに対応する1でないNtの値を有するトラックについて、トラックの中でパルスを有する現在の位置の数に対応する追加的なインデックスIftを決定し、追加的なインデックスIftは、パルスを有する位置の数の下で、トラックの中でパルスを有する位置についての可能な全ての分布状態に対応し、パルスを有する位置の数はそれによって表現される。この場合、インデックス合成部103は追加的なインデックスIftの情報をコードインデックスIndに組み込む。
【0137】
更に、具体例3の方法を使用することでコードインデックスについて可変長符号化が実行される場合、本具体例のパルスエンコーダ10はコードビット調整部104(図10では破線枠のブロックで示されている)を更に有し、コードビット調整部104は、インデックス合成部103がコードインデックスを生成した後にコードインデックスIndを調整閾値THRと比較するように形成されている。この場合において、
THR≦2Bmax-Imax(T)
であり、Imax(T)はIndの上限値を表し、Bmaxはコードインデックスを符号化するのに使用されるビット数の上限値を表し、
IndがTHRより小さかった場合、第1の数であるコードビットはIndを符号化するために使用され;そうでなかった場合、第2の数であるコードビットはIndにオフセット値THR0を加えたものを符号化するために使用され、ただし、THR≦THR0≦2Bmax-Imax(T)であり、使用される第1の数は第2の数より小さく、第2の数はBmax以下であり、第1の数及び第2の数は共に正の整数である。
【0138】
具体例9:パルス復号化装置又はパルスデコーダ20。本具体例のデコーダは具体例5の復号化方法を実行するために使用されてよく、図11に示されているように以下の要素を含む:
【0139】
第1の抽出部201は、コードインデックスIndを取得し、コードインデックスIndから第1のインデックスI1を抽出し、第1のインデックスに従って、T個のトラックの各トラックの中でパルスを有する位置の数{N0,N1,...,NT-1}を決定するように形成されている。
【0140】
第2の抽出部202は、各トラックの第2のインデックスI2t及び各トラックの第3のインデックスI3tをコードインデックスIndから抽出するように形成されている。
【0141】
第1の復号化部203は、各トラックについて、第2のインデックスI2tに従って、パルスを有する位置の数の下で、トラックの中でパルスを有する位置の分布を決定するように形成されており、パルスを有する位置の数は第1のインデックスに対応する。
【0142】
第2の復号化部204は、各トラックについて、第3のインデックスI3tに従って、パルスを有する位置各々についてのパルス数を決定するように形成されている。
【0143】
パルス再構築部205は、各トラックについて、トラックの中でパルスを有する位置の分布とパルスを有する位置各々におけるパルス数とに従って、トラックについてのパルスシーケンスを再構築するように形成されている。
【0144】
少なくとも1つの第1のインデックスが2つ以上の{N0,N1,...,NT-1}の組み合わせに対応する場合、本具体例のデコーダは次の要素を更に含む:
【0145】
追加的な抽出部206(図11において破線枠のブロックで示されている)は、第1のインデックスに対応する1でないNt値のトラックについて、トラックの中でパルスを有する現在の位置の数に対応する追加的なインデックスIftを抽出するように形成されており、追加的なインデックスIftは、パルスを有する位置の数の下で、トラックの中でパルスを有する位置についての可能な全ての分布状態に対応し、パルスを有する位置の数はそれによって表現される。この場合、第2の抽出部202は、対応するトラックの中でパルスを有する現在の位置の数に応じて、トラックの第2のインデックスI2t及びトラックの第3のインデックスI3tを抽出し、対応するトラックの中でパルスを有する現在の位置の数は追加的な抽出部206により抽出された追加的なインデックスIftによって決定される。
【0146】
更に、具体例7の方法を使用することで可変長符号化によるコードストリームについて復号化が行われる場合、本具体例のパルスデコーダ20は復号化ビット調整部207(図11において破線枠のブロックで示されている)を更に有し、復号化ビット調整部207は、符号化されているコードストリームから、第1の数であるコードビットを抽出し;第1の数であるコードビットの復号後の値が調整閾値THRより小さかった場合、第1の数である符号ビットの復号後の値を、出力するコードインデックスIndとして使用し;そうでなかった場合、抽出される符号ビットの数を第2の数まで増やし、第2の数であるコードビットの復号後の値からオフセット値THR0を減算することで得られた値を、出力するコードインデックスIndとして使用する。
【0147】
上記の実施の形態による方法のステップの全部又は一部が関連するハードウェアの動作を制御するプログラムにより実現されてよいことを、当業者は認めるであろう。プログラムはコンピュータで読み取ることが可能な記憶媒体に保存され、記憶媒体はリードオンリメモリ、ランダムアクセスメモリ、磁気ディスク又は光ディスク等を含んでよい。
【0148】
以上、本発明の実施の形態によるパルスの符号化及び復号化の方法並びにパルスコーデックが詳細に説明された。本発明の原理及び実現手段は具体的な実施の形態により説明されている。上記の実施の形態に関する説明は本発明による方法及び核心的なアイディアの理解を促すように行われているに過ぎない。本発明のアイディアによる具体的な実現手段及び応用例に対して、当業者は変形を施すことができる。従って本明細書は本発明を限定するように解釈してはならない。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11