JP4590747B2 - ベクトル量子化のコードブック生成方法及びコードブック生成装置 - Google Patents
ベクトル量子化のコードブック生成方法及びコードブック生成装置 Download PDFInfo
- Publication number
- JP4590747B2 JP4590747B2 JP2001030265A JP2001030265A JP4590747B2 JP 4590747 B2 JP4590747 B2 JP 4590747B2 JP 2001030265 A JP2001030265 A JP 2001030265A JP 2001030265 A JP2001030265 A JP 2001030265A JP 4590747 B2 JP4590747 B2 JP 4590747B2
- Authority
- JP
- Japan
- Prior art keywords
- representative vector
- vector
- representative
- strain
- partial
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Description
【発明の属する技術分野】
本発明は,ベクトル量子化技術に関わり,特にパターン認識・計算幾何学・画像信号・音声信号におけるベクトル量子化のコードブック生成装置及び方法に関するものである。
【0002】
【従来の技術】
ベクトル量子化は、入力空間を有限個の代表ベクトルで符号化する手法である。ベクトル量子化の応用例として、パターン認識の特徴抽出,計算幾何学のポスト配置問題,情報の圧縮,画像や音声などの量子化などが挙げられる。
【0003】
図34にベクトル量子化の概念図を示す。
【0004】
ベクトル量子化には
(1)入力ベクトルの符号化
(2)コードブックの生成
という2つの側面がある。
【0005】
ベクトル量子化の(1)入力ベクトルの符号化の手続では、入力ベクトルx(1050)に対してN個の代表ベクトル(コードベクトルと呼ばれることもある)からなるコードブックW={wi∈RK:i=0,・・・,N−1}(1040)の中から最も近い代表ベクトルwminを選びだし(1060)、その代表ベクトルのインデックスmin、又は、その代表ベクトルの値を出力する(1070)。
【0006】
その際、最も近い代表ベクトルを選ぶときの測度として、非負のひずみ測度d(x,wi)を利用する。すなわち、代表ベクトルの番号を出力したいときの式は、次の(1)式にて表すことができる。
【0007】
【数1】
【0008】
また、代表ベクトルの値を出力したいときの式は、次の(2)式にて表すことができる。
【0009】
【数2】
【0010】
また、ベクトル量子化の(2)コードブックの生成では、初期コードブック(1010)を設定し、コードブック生成用の入力ベクトル集合X=(x(t):t=0,・・・,T−1)(1030)を与えて、入力ベクトル集合に合うように代表ベクトルの値を修正することを繰り返して最適化し(1020)、最終的に最適なコードブック(1040)を得る。コードブック生成用の入力ベクトルは、(1)入力ベクトルの符号化で入力される入力ベクトルと異なっていてもかまわない。
【0011】
コードブックの評価には、与えられた入力ベクトル集合を対応する代表ベクトルで符号化したときに生じるひずみの期待値(平均ひずみ)を用いて行われる。この平均ひずみは非凸な関数であり、多くの局所的最小値を持つ。最適なコードブックとは、平均ひずみを最小にするコードブックである。すなわち、最適なコードブックを持つベクトル量子化器は、最もひずみの少ない符号化を行うことができる。平均ひずみは、次の(3)式にて定義される。
【0012】
【数3】
【0013】
ただし、δtiはクロネッカーのデルタであり、入力ベクトルxtが代表ベクトルwiに符号化されたとき1であり、それ以外は0である。
【0014】
コードブックを生成するアルゴリズムとして、適応修正型の競合学習アルゴリズムや一括修正型のLBGアルゴリズム[Linde,Y., Buzo, A., & Gray, R. M..“An algorithm for vector quantizer design."IEEE Transactions on Communications,28,pp.84-95, 1980.]がよく知られている。
【0015】
文献[Ueda, N., & Nakano, R..“A new competitive learning approach based on an equidistortion principle for designing optimal vector quantizers." Neural Networks,7, pp.1211-1227, 1994.]によれば,競合学習アルゴリズムはLBGアルゴリズムの適応型になっている。ここでは、LBGアルゴリズムによるコードブック生成法だけを取り上げるが、適応型の競合学習アルゴリズムにも適用可能である。
【0016】
LBGアルゴリズムは、収束条件を満足するまで、次のステップ(a),(b)を反復するアルゴリズムである。
【0017】
(a)T個のコードブック生成用の入力ベクトル集合に対して、現在のコードブックの中から各入力ベクトルx(t)に最も近い代表ベクトルwminを探索し、符号化される代表ベクトルの番号minを保存しておく。
【0018】
(b)入力ベクトル集合と各入力ベクトルが符号化される代表ベクトルの番号を用いて、代表ベクトルの重心を計算しコードブックを更新する。
【0019】
コードブック生成方法であるLBGアルゴリズムのステップ(a)は、各入力ベクトルに対して最もひずみが小さい代表ベクトルを探索し、符号化するステップである。この符号化のステップは、全ての代表ベクトルとのひずみを計算し、最も近い代表ベクトルを選択する全探索が基本であるため、非常に時間がかかる。この操作を全ての入力ベクトルに対して行う必要があるので時間は膨大にかかる。
【0020】
この問題を解決する手法の一つとして、特開平6−45946号公報に開示されたベクトル量子化方法及びベクトル量子化装置がある。このベクトル量子化技術は、文献[中野恵一,笠原博徳:“ソートされたコードブックを用いた高速ベクトル量子化(Fast Vector Quantization Using Sorted Codebook:VQ-SC)”電子情報通信学会論文誌D-II Vol.J77-D-II No.10 pp.1984-1992,1994]に関連するものであって、VQ−SCは、大雑把に述べると以下のようなアルゴリズムである。
【0021】
(1)代表ベクトルを各次元ごとにソートし,その順番を記憶しておく。
【0022】
(2)探索が済んだ代表ベクトルかどうかをしめすフラグをクリアする。
【0023】
(3)ひずみの下限値となるひずみを計算する。
【0024】
(4)分枝限定法の原理に基づいて、ひずみの上限値を利用することで解の精度を向上する可能性のない代表ベクトルの探索を省略する。探索が済んだ代表ベクトルはフラグをたてる。ひずみの下限値に使われている代表ベクトルの探索が省略された場合には、ひずみの下限値を更新する。ひずみの上限値とひずみの下限値が一致するまで探索を続ける。次の探索する代表ベクトルの決め方は、ヒューリスティックである。
【0025】
ひずみの上限値とひずみの下限値を利用することにより、コードブックの一部を調べれば全探索した場合と同じ代表ベクトルが高速に探索できる。
【0026】
【発明が解決しようとする課題】
しかし、上記の方法には次のような問題点がある。
【0027】
(1)各次元ごとに代表ベクトルをソートする必要があり、次元が高くなるとソートにかかる時間が大きくなる。
【0028】
(2)各次元ごとにソートされた代表ベクトルの順番を記憶しておく必要があり、記憶しておくメモリ容量が膨大になる。
【0029】
(3)各入力ベクトルごとにどの代表ベクトルの探索が済んだかどうかを示すフラグをクリアする必要があり、入力ベクトルが多いと、クリアする時間が膨大になる。また、代表ベクトルの数分、フラグのためのメモリ容量が必要である。
【0030】
(4)次の探索する代表ベクトルをヒューリスティックに決めてよいため、効率の良い決定方法を考える必要がある。
【0031】
そこで、本発明の目的は、上記の問題点を解決することができるようにしたベクトル量子化のコードブック生成方法及びコードブック生成装置を提供することにある。
【0032】
【課題を解決するための手段】
ここで、K次元の入力ベクトルxに対して、最小のひずみをもつ代表ベクトルwminを探索するときに、ある次元kに対して、次の(4)式となるような代表ベクトルwiを探索する必要はない。
【0033】
【数4】
【0034】
しかし、(4)式は、符号化されるwminが求まっているときの条件であり、(4)式を計算することができない。また、k次元に対する代表ベクトルの値は、規則正しく並んでいるわけではなく、順番がランダムな状態になっているので、探索終了条件を決めることができない。
【0035】
そこで、本発明では、次のような方法を採用する。
【0036】
(1)いままでの探索で見つかった最小の代表ベクトルをwcur minとする。すなわち、探索が終了すれば最終的に得られた代表ベクトルwcur minが最小のひずみdmin =dcur minをもつ代表ベクトルwmin =wcur minとなる。
【0037】
(2)探索を始める前に、k次元の値に応じて代表ベクトルを小さい順(又は大きい順)にソートしておく。(4)式を満足する代表ベクトルが存在したら、ソートしてあるのでそれ以上先の代表ベクトルは最小のひずみを持つ代表ベクトルになる可能性は全くない。すなわち、代表ベクトルをソートをしておくことで、探索の効率を大幅に上げることができる。
【0038】
(4)式のひずみの計算を考察すると、一般に各次元の代表ベクトルの値のとりうる範囲(レンジ)は異なるはずである。したがって、レンジが最も広いものを選ぶと探索回数は減るはずである。画像の階調変換では、R,G,Bはどの次元でも0〜255の値をとるので、どの次元を選択しても同じような回数になると思われる。
【0039】
ソートしておくことで探索の打切り方法が決まるが、最低限の回数で探索を打ち切ることが望ましい。そのためには、一番最初に設定する最小の代表ベクトルwcur minの決め方が重要である。この初期の代表ベクトルの決め方次第で、探索効率が大幅に変わることが予想される。
【0040】
2つの場合に分けて、探索する初期の代表ベクトルの決め方は、以下のように設定する方法が効率的な選択であると考えられる。
【0041】
LPGアルゴリズムなどの設計アルゴリズムを用いてベクトル量子化器を設計するときは、同じ入力データ集合を用いるので、収束間際のサイクルほど前サイクルと同じ代表ベクトルに符号化される可能性が高い。そのため、前サイクルで符号化された代表ベクトルを初期値とする。
【0042】
あらかじめ決められている代表ベクトルに入力ベクトルを符号化するとき、一般的には、隣の入力データが符号化された代表ベクトルを初期値とする。
【0045】
本発明は、ソートの基準となる次元を指定し、指定された次元の代表ベクトルの値に基づいて代表ベクトルをソートすることによりコードブックを並び替えるソーティングステップと、入力ベクトルと代表ベクトルとのひずみを計算し、次に探索する代表ベクトルのアドレスを計算する第1の演算ステップと、現在の最小のひずみとその代表ベクトルの番号を保持しており、現在の最小のひずみ をもつ代表ベクトルと上記第1の演算ステップにより計算された代表ベクトルについてひずみを比較し、ひずみが小さい方を現在の最小のひずみとすることにより、符号化される代表ベクトルの候補を決める判定ステップと、上記判定ステップによる判定結果に基づいて重心計算・平均ひずみ計算・部分ひずみ計算を行う第2の演算ステップと、上記第2の演算ステップにより得られる部分ひずみを基準としてソートする部分ひずみソーティングステップと、上記部分ひずみソーティングステップによりソートされた2つの部分ひずみの格差を比較する比較ステップと、上記比較ステップにおける比較結果に基づいて、部分ひずみの小さい代表ベクトルを部分ひずみの大きい代表ベクトルの近傍に移動させる代表ベクトル移動ステップとを有し、上記第1の演算ステップにおいて入力ベクトルと代表ベクトルとのひずみを計算し、次に探索する代表ベクトルのアドレスを計算する際に、最初に使用する初期代表ベクトルのアドレスを指定するとともに、ソートの基準となった次元を指示して、上記各ステップを繰り返し行い、最小のひずみを持つ代表ベクトルに入力ベクトルを符号化することを特徴とする。
【0057】
また、本発明は、ベクトル量子化装置であって、入力ベクトル集合を格納する入力ベクトル集合記憶手段と、コードブックを格納するコードブック記憶手段と、上記コードブック記憶手段からコードブックを読み出し、指定された次元を基準としてコードブックをソートし、ソートしたコードブックを上記コードブック記憶手段の指定したアドレスに書き込むソーティング手段と、入力ベクトルと代表ベクトルのひずみを計算し、次に探索する代表ベクトルのアドレスを計算する第1の演算手段と、現在の最小のひずみとその代表ベクトルの番号を保持しており、現在の最小のひずみをもつ代表ベクトルと上記第1の演算手段により計算された代表ベクトルについてひずみを比較し、ひずみが小さい方を新しい現在の最小のひずみとすることにより、代表ベクトルの候補を決める判定手段と、上記判定手段による判定結果に基づいて重心計算・平均ひずみ計算・部分ひずみ計算を行う第2の演算手段と、上記第2の演算手段により得られる部分ひずみを基準としてソートする部分ひずみソーティング手段と、上記部分ひずみソーティング手段によりソートされた2つの部分ひずみの格差を比較する比較手段と、上記比較手段による比較結果に基づいて、部分ひずみの小さい代表ベクトルを部分ひずみの大きい代表ベクトルの近傍に移動させる代表ベクトル移動手段と、上記ソーティング手段、第1の演算手段、判定手段、第2の演算手段、部分ひずみソーティング手段、部分ひずみ比較手段及び代表ベクトル移動手段の処理フローを制御する制御手段とを備え、上記制御手段は、上記ソーティング手段にソートの基準となる次元を指定し、上記第1の演算手段に、入力ベクトルと代表ベクトルとのひずみを計算して次に探索する代表ベクトルのアドレスを計算する第1の演算処理を行う際に最初に使用する初期代表ベクトルのアドレスを指定するとともに、ソートの基準となった次元を指示し、第2の演算手段に、上記判定手段による判定結果に基づいて重心計算・平均ひずみ計算・部分ひずみ計算を行う第2の演算処理を行う際に最初に使用する任意の初期コードブックの設定を指示して、上記第1の演算手段による第1の演算処理と、上記判定手段による判定処理と、上記ソーティング手段によるソーティング処理と、上記第2の演算手段による第2の演算処理と、上記部分ひずみソーティング手段による部分ひずみソーティング処理と、上記部分ひずみ比較手段による部分ひずみ比較処理と、上記代表ベクトル移動手段による代表ベクトル移動処理を繰り返し行い、最小のひずみを持つ代表ベクトルに入力ベクトルを符号化することを特徴とする。
【0067】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照しながら詳細に説明する。
【0068】
本発明は、例えば図1に示すような構成のベクトル量子化器のコードブック生成装置100に適用される。
【0069】
このコードブック生成装置100は、入力ベクトル集合メモリ110、ソーティング装置120、コードブックメモリ130、第1の演算装置140、判定装置150、第2の演算装置160及び制御装置170から構成される。
【0070】
このコードブック生成装置100において、入力ベクトル集合メモリ110は、入力ベクトル集合X=(x(t)∈RK:t=0,・・・,T−1)を記憶しておくメモリであり、第1の演算装置140からアドレスの指定をうけ、対応する入力ベクトルx(t)と初期代表ベクトルの番号を第1の演算装置140に渡す。また、入力ベクトル集合メモリ110は、判定装置150から、入力ベクトルx(t)の初期代表ベクトルの番号minを受け取り、格納する。
【0071】
ソーティング装置120は、制御装置170からのソートの指示とどの次元kを基準としてソートするかの指示を受け、コードブックメモリ130からコードブックを読み出し、指定された次元を基準としてコードブックをソートする。また、ソーティング装置120は、ソートしたコードブックをコードブックメモリ130の指定したアドレスに書き込む。
【0072】
コードブックメモリ130は、コードブックW(p)={wi (p)∈RK:i=0,・・・,N−1}を記憶しておくメモリであり、ひずみ計算・アドレス計算を行う第1の演算装置140からアドレスを受け取り、対応する代表ベクトルのデータ(代表ベクトルの値wi (p),番号i)を第1の演算装置140に渡す。また、コードブックメモリ130は、重心計算・平均ひずみ計算を行う第2の演算装置160から、データ(更新されたコードブックW(p+1))及び書き込むアドレスを受け取り、対応するアドレスにコードブックが書き込まれる。また、コードブックメモリ130は、コードブックをソーティング装置120に渡す。さらに、コードブックメモリ130は、ソーティング装置120によりソートされたコードブックと書き込むアドレスを受け取り、指定されたアドレスにコードブックを格納する。
【0073】
第1の演算装置140は、入力ベクトル集合メモリ110にアドレスを指定して、対応する入力ベクトルx(t)と初期代表ベクトルの番号を受け取る。また、第1の演算装置140は、制御装置170からひずみ・アドレスの計算の指示を受け、コードブックメモリ130に読み込みたい代表ベクトルのアドレスを指定して、対応するデータ(代表ベクトルの値wi (p),番号iなど)を読み込む。また、第1の演算装置140は、入力ベクトルと代表ベクトルとのひずみd(x(t),wi (p))を計算する。そして、第1の演算装置140は、ひずみd(x(t),wi (p))とデータ(代表ベクトルの番号と値)を判定装置150に渡す。また、第1の演算装置140は、制御装置170からソートの基準となった次元kの指示を受け、k次元だけのひずみd(xk (t),wik (p))も判定装置150に渡す。さらに、第1の演算装置140は、判定装置150から、判定結果により探索する代表ベクトルの方向を示すup/downの情報を受け、次の探索する代表ベクトルのアドレスを計算する。なお、第1の演算装置140は、探索終了を示す情報finishを受けた場合は、次の入力ベクトルx(t+1)の符号化に取りかかる。
【0074】
判定装置150は、現在の最小のひずみdcur minとその代表ベクトルの番号minを保持しており、現在の最小のひずみdcur minをもつmin番の代表ベクトルと第1の演算装置140により計算されたi番の代表ベクトルについてひずみd(x(t),wi (p))を比較し、ひずみが小さい方を新しいmin番、現在の最小のひずみdcur minとする。また、判定装置150は、制御装置170から判定の指示を受け、k次元だけのひずみd(xk (t),wik (p))と現在の最小のひずみdcur minを比較し、d(xk (t),wik (p))の方が大きければ、次に探索する代表ベクトルの方向を示すup/downの情報を変更し、また、up/down両方向とも調べ終わった場合には探索終了を示す情報finish を演算装置140に渡し、d(xk (t),wik (p))の方が小さければ、同方向の次の代表ベクトルを調べる情報を第1の演算装置140に渡す。また、判定装置150は、up/down両方向とも調べ終わり探索終了finishになったとき、第2の演算装置160に入力ベクトルx(t)、現在の最小のひずみを持つ初期代表ベクトルの番号min及び最小のひずみdcur minを出力する。さらに、判定装置150は、探索終了finishになったとき、現在の最小のひずみを持つ初期代表ベクトルの番号minを入力ベクトルx(t)の初期代表ベクトルとして入力ベクトル集合メモリ110に格納する。
【0075】
第2の演算装置160は、判定装置150から、入力ベクトルx(t)と符号化された代表ベクトルの番号minと入力ベクトルを符号化したときのひずみdcur minを受け取る。そして、この第2の演算装置160は、代表ベクトル番号minに対応するデータ(分子wminnumと分母wminden、さらに平均ひずみDsum)の計算を次の(5)式、(6)及び(7)式にしたがって行う。
【0076】
wminnum+=x(t) (5)
wminden+=1 (6)
Dsum+=dcur min (7)
また、この第2の演算装置160は、T個の入力ベクトルに対して、符号化が終了し、上記途中計算が終了したと制御装置170から指示を受けたら、代表ベクトル重心wi (p+1)、平均ひずみDの計算を次の(8)式及び(9)式にしたがって行う。
【0077】
【数5】
【0078】
また、この第2の演算装置160は、制御装置170からの指示により、全てのデータ(分子winumと分母widen、さらに平均ひずみDsum,∀i)をクリアする。
【0079】
また、この第2の演算装置160は、データ(更新されたコードブックW(p+1))及び書き込むアドレスを渡し、対応するアドレスに更新されたコードブックを書き込む。
【0080】
この第2の演算装置160は、制御装置170からの指示により、任意の初期コードブックをコードブックメモリ130に設定する。
【0081】
制御装置170は、ソーティング装置120、第1の演算装置140、判定装置150及び第2の演算装置160の処理フローを制御する。また、制御装置170は、ソーティング装置120にソートの基準となる次元を指定する。また、制御装置170は、第1の演算装置140に初期代表ベクトルのアドレス(又は番号)を指定し、また、ソートの基準となった次元を指示する。さらに、制御装置170は、第2の演算装置160に任意の初期コードブックの設定を指示する。
【0082】
このような構成のコードブック生成装置100において、本発明では、図2のフローチャートに示すコードブック生成アルゴリズムにしたがってソートされた代表ベクトルを用いた高速ベクトル量子化(Vector Quantization by Searching in Sirted Codebook:VQ−SSC)を利用したコードブック生成を行う。
【0083】
すなわち、このコードブック生成装置100では、先ず、ステップ(F101)において、代表ベクトル初期配置を設定する。また、代表ベクトルをソートするための基準の次元kを指定する。
【0084】
次のステップ(F102)では、次元kの代表ベクトルの値に基づいて代表ベクトルをソートする。ソートされた順番の情報については,以下の2通りのやり方が考えられる。
【0085】
(1)直接代表ベクトルの順番を入れ替えてしまう。代表ベクトルの番号を変更したくないときは、代表ベクトルの番号の情報を持つ構造体にして入れ替える。直接ならべ変えているので、自分より下位の代表ベクトルの番号lowerは、自分の配列の番号−1 とした配列の番号となる。また、自分より上位の代表ベクトルの番号upperは、自分の配列の番号+1とした配列の番号となる。
【0086】
(2)ソートしたときの順番を示す配列を用意する場合、各代表ベクトルが保持すべき情報は、自分より下位の代表ベクトルの番号lowerと、自分より上位の代表ベクトルの番号upperである。
【0087】
次のステップ(F103)では、入力ベクトルx(t)と初期の代表ベクトルwi (p)とのひずみの計算を行い、このひずみd(x(t),wi (p))を現在の最小のひずみdcur minとし、番号iを符号化の候補として保存しておく。
【0088】
dcur min=d(x(t),wi (p)) (10)
min=i (11)
次のステップ(F104)では、初期の代表ベクトルwi (p) の両隣の代表ベクトルの番号、すなわち、
lower=下位方向の隣の代表ベクトルの番号
upper=上位方向の隣の代表ベクトルの番号
を保存する。
【0089】
次のステップ(F105)では、入力ベクトルx(t)と代表ベクトルwlower (p)とのひずみd(x(t),wlower (p))の計算を行い、計算途中のd(xk (t),wlowerk (p))を保存しておく。そして、このステップ(F105)では、計算したひずみd(xk (t),wlowerk (p))が現在の最小のひずみdcur minより小さいか否か、すなわち、
d(x(t),wlower (p))<dcur min (12)
が成り立つか否かを判定し、この(12)式が成り立つならば、
dcur min=d(x(t),wlower (p)) (13)
min=lower (14)
とする。
【0090】
次のステップ(F106)では、下位方向の探索を続けるかどうか判断する。
このステップ(F106)において、もし、
d(xk (t),wlowerk (p))>dcur min (15)
を満足するなら、下位方向の探索は終了で、ステップ(F108)へ移り、さもなければ、次のステップ(F107)へ進む。
【0091】
ステップ(F107)は、代表ベクトルの番号lowerの更新ステップであり、現在のlower番の代表ベクトルの下位方向の隣の代表ベクトルの番号を新しいlowerとして、ステップ(F105)へ戻る。
【0092】
ステップ(F108)では、入力ベクトルx(t)とupper番の代表ベクトルwupper (p) とのひずみd(x(t),wupper (p))の計算を行い、計算途中のd(xk (t),wupperk (p))を保存しておく。このステップ(F108)では、計算したひずみd(x(t),wupper (p))が現在の最小のひずみdcur minより小さいか否か、すなわち、
d(x(t),wupper (p))<dcur min (16)
が成り立つか否かを判定して、この(16)式が成り立つならば、
dcur min=d(x(t),wupper (p)) (17)
min=upper (18)
とする。
【0093】
次のステップ(F109)では、上位方向の探索を続けるかどうか判断する。このステップ(F109)では、もし、
d(xk (t),wupperk (p))>dcur min (19)
を満足するなら、上位方向の探索は終了で、ステップ(F111)へ移り、さもなければ、次のステップ(F110)へ進む。
【0094】
ステップ(F110)は、代表ベクトル番号upperの更新ステップであり、現在のupper番の代表ベクトルの上位方向の隣の代表ベクトルの番号を新しいupperとして、ステップ(F108)へ戻る。
【0095】
次のステップ(F111)では、入力ベクトルの符号化と代表ベクトルの重心計算・平均ひずみの準備を行う。
【0096】
このステップ(F111)において、入力ベクトルx(t)は、最小のひずみdcur minを持つ番号minの代表ベクトルwmin (p)に符号化される。
【0097】
このステップ(F111)では、符号化された代表ベクトルminの位置を更新するステップ(F114)において用いる分子wminnum、分母wminden及び平均ひずみDsumの計算を次の(20)式、(21)及び(22)式にしたがって行っておく。
【0098】
wminnum+=x(t) (20)
wminden+=1 (21)
Dsum+=dcur min (22)
次のステップ(F112)では、すべての入力ベクトルの符号化が終了したか否かを判定する。このステップ(F112)では、もし、t=T−1が成り立つならば、ステップ(F114)へ移り、さもなければ、次のステップ(F113)へ進む。
【0099】
ステップ(F113)では、t=t+1として、ステップ(F103)に戻り、次の入力ベクトルの探索をする。
【0100】
ステップ(F114)では、代表ベクトルの重心の計算と平均ひずみの計算を行う。このステップ(F114)は、LBGアルゴリズムにおける代表ベクトルの重心の更新を行うステップであり、次の(23)式で表すことができる。
【0101】
【数6】
【0102】
しかし,(23)式の分子・分母の計算は先のステップ(F111)で済んでいるので、次の(24)式の計算を行えばよい。
【0103】
【数7】
【0104】
また、平均ひずみDは、次の(25)式により計算する。
【0105】
【数8】
【0106】
次のステップ(F115)では、収束判定を行う。このステップ(F115)における収束判定条件を満たさないときは、ステップ(F102)へ戻り、収束判定条件を満たすときは、処理を終了する。
【0107】
ここで、このステップ(F115)における収束判定条件には、次のようなものが考えられる。その他のものでも構わない。
【0108】
(1)代表ベクトルの更新がなくなったら終了する。
【0109】
(2)所望の平均ひずみ以下になったら終了する。
【0110】
(3)反復回数で打ち切る。
【0111】
ここで、このコードブック生成装置におけるベクトル量子化の符号化アルゴリズム(VQ−SSC)の動作について、例題を用いて説明する。
【0112】
この例題では、ひずみ測度として二乗誤差ひずみ測度を用いている。
【0113】
d(x,w)=(x−w)2 (26)
当然、このほかのひずみ測度を用いた場合も、本発明は有効である。また、次元ごとに違うひずみ測度を用いたときも、本発明は有効である。
【0114】
3次元の入力ベクトルx=(12,16,13)に対して、従来どおりすべての代表ベクトルに対してひずみを計算し、ベクトル量子化(符号化)される代表ベクトルを求めた例を図3に示す。この場合、12個の代表ベクトルに対してひずみを計算しないと、符号化される代表ベクトルが決まらない。今回の例題では、最小ひずみ8を持つ9番の代表ベクトルw9=(14,18,3)に符号化される。
【0115】
これに対して、このコードブック生成装置におけるベクトル量子化の符号化アルゴリズムでは、k=1に対して代表ベクトルをソートしてある。わかりやすいようにソートした順に代表ベクトルの番号をつけた状態にしてある。実際は、わざわざ代表ベクトルの番号をつけ直す必要ななく、自分の代表ベクトルの両隣(上位方向・下位方向)の代表ベクトルの番号を保存するようにプログラムすればよい。
【0116】
もし、符号化される代表ベクトルが事前にわかっているならば、最小ひずみが8なので、√8以下の最大整数である2以下の範囲を探索すればよい。図3から、1次元で12±2となる代表ベクトルは、(7),(8),(9)番の3個の代表ベクトルだけを調べればよい。
【0117】
しかし、事前に符号化される代表ベクトルがわかるはずがないので、次のようなアルゴリズム(探索0〜探索6)を用いて探索をすることになる。
【0118】
すなわち、探索0では、図4に示すように、初期の代表ベクトルを(7)番の代表ベクトルとし、ひずみd(x,w7)を計算する。
【0119】
d(x,w7)=17
lower=6
upper=8
そして、最小のひずみdcur min=17とその代表ベクトルの番号min=7を保存保存する。
【0120】
探索1では、図5に示すように、lower(6)番の代表ベクトルのひずみd(x,wlower)を計算する。
【0121】
d(x1,wlower1)=9
d(x,wlower)=189
そして、d(x,wlower)と現在の最小のひずみdcur minとを比較すると、d(x,wlower)はdcur minよりも大きいので、最小のひずみdcur minはそのままの値すなわち
dcur min=17
min=7
を保持する。また、d(x1 ,wlower1)は現在の最小のひずみdcur minよりも小さいので、次のlower=5の探索2に移る。
【0122】
次の探索2では、図6に示すように、lower(5)番の代表ベクトルのひずみd(x,wlower)を計算する。
【0123】
d(x1,wlower1)=9
d(x,wlower)=14
そして、d(x,wlower)と現在の最小のひずみdcur minとを比較すると、d(x,wlower)はdcur minよりも小さいので、最小のひずみdcur minを更新して
dcur min=14
min=5
とする。また、d(x1,wlower1)はdcur min=14よりも小さいので、次のlower=4の探索3に移る。
【0124】
探索3では、図7に示すように、lower(4)番の代表ベクトルのひずみを計算を行う。
【0125】
d(x1,wlower1)=16
d(x,wlower)=186
そして、d(x,wlower)と現在の最小のひずみdcur minとを比較すると、d(x,wlower)はdcur minよりも大きいので、最小のひずみdcur minはそのままの値すなわち
dcur min=14
min=5
を保持する。また、d(x1,wlower1)はdcur min=14よりも大きいので、下位方向の探索は終了し、次にupper=8の上位方向の探索4に移る。
【0126】
探索4では、図8に示すように、upper(8)番の代表ベクトルのひずみを計算する。
【0127】
d(x1,wupper1)=1
d(x,wupper)=46
そして、d(x,wupper)と現在の最小のひずみdcur minとを比較すると、d(x,wlower)はdcur minよりも大きいので、最小のひずみdcur minはそのままの値すなわち
dcur min=14
min=5
を保持する。また、d(x1,wupper1)はdcur min=14よりも小さいので、次のupper=9の探索5に移る。
【0128】
探索5では、図9に示すように、upper(9)番の代表ベクトルのひずみを計算する。
【0129】
d(x1,wupper1)=4
d(x,wupper)=8
そして、d(x,wupper)と現在の最小のひずみdcur minとを比較すると、d(x,wlower)はdcur minよりも小さいので、最小のひずみdcur minを更新して、
dcur min=8
min=9
とする。また、d(x1,wupper1)はdcur min=9よりも小さいので、次のuppe0の探索6に移る。
【0130】
探索6では、図10に示すように、upper(10)番の代表ベクトルのひずみを計算する。
【0131】
d(x1,wupper1)=9
d(x,wupper)=41
そして、d(x,wupper)と現在の最小のひずみdcur minとを比較すると、d(x,wlower)はdcur minよりも大きいので、最小のひずみdcur minはそのままの値すなわち
dcur min=8
min=9
を保持する。また、d(x1,wupper1)はdcur min=9よりも大きいので、上位方向の探索終了する。
【0132】
このようにして下位方向、上位方向、両方とも探索を終了し、最終的に得られた最小のひずみdcur min=8をもつmin=9番の代表ベクトルが入力ベクトルx=(12,16,13)に対する符号化される代表ベクトルである。
【0133】
ここで、図11より、あらかじめ符号化される代表ベクトルがわかっている場合は3個の代表ベクトルを探索すれば十分であるが、一般には無理なので初期代表ベクトルを決めて探索する必要がある。今回の場合、最小ひずみを更新しながら探索したので、7個の代表ベクトルを探索することで最小のひずみを持つ代表ベクトルを得ることができた。これが階調変換では,代表ベクトルの数が256個あるので、探索範囲を大幅に制限することが期待できる。
【0134】
また、本発明は、ひずみの部分和を用いた高速化手法を組み合わせるとより一層の効果がある。ひずみの部分和を用いた高速化手法は、次の(27)式で示されるひずみの部分和が現在の最小のひずみdcur minと比較して大きいときは、次の代表ベクトルを探索する。すなわち、ひずみを最後まで求めるのではなく、計算途中のひずみと現在の最小のひずみを比較することで探索の効率をあげる手法である。
【0135】
【数9】
【0136】
このひずみの部分和を用いた高速化手法は、文献[Bei C-D. & Gray, R. M..“An improvement of minimum distortion encoding algorithm for vector quantization.” IEEE Transactions on Communications, COM-33, pp.1132-1133, 1985.]に詳述されている。
【0137】
ここでは、上述の図1に示したコードブック生成装置の変形例として、図12を参照して差分のみを説明する。
【0138】
図12に示すコードブック生成装置’において、コードブックメモリ130は、コードブックとアドレスをソーティング装置120に渡す。
【0139】
ソーティング装置120は、制御装置170からのソートの指示とどの次元kを基準としてソートするかの指示を受け、コードブックメモリ130からコードブックのアドレスとコードブックを読み出し、指定された次元を基準としてコードブックをソートする。そして、そのソートされた代表ベクトルの順番通りに、各代表ベクトルのアドレスを並び替え、ソート順に並んだアドレスをコードブックソート表180に書き込む。
【0140】
第1の演算装置140は、判定装置150から、判定結果により探索する代表ベクトルの方向を示すup/downの情報を受け、次の探索する代表ベクトルのアドレスをコードブックソート表180に参照しに行き、アドレスを受け取る。そして、コードブックメモリ130に、そのアドレスを指定して、対応するデータ(代表ベクトルの番号iと値wi (p)など)を読み込む。
【0141】
そして、コードブックソート表180は、ソーティング装置120から受け取ったアドレスを格納する。また、コードブックソート表180は第1の、演算装置140からの次の探索する代表ベクトルの参照の指示に従って、その代表ベクトルのアドレスを第1の演算装置140に渡す。
【0142】
ここで、次の文献には、[Gersho,A..“Asymptotically optimal block quantization."IEEE Transactions on Information Theory,25,pp.373-380,1979.]、[Yamada, Y., Tazaki, S. & Gray, R. M..“Asymptotic performance of block quantizers with difference distortion measures." IEEE Transactions on Information Theory},26, pp.6-14, 1980.]、[Ueda, N., & Nakano, R..“A new competitive learning approach based on an equidistortion principle for designing optimal vector quantizers." Neural Networks,7, pp.1211-1227, 1994.]等には、ベクトル量子化の理論的な研究から、ひずみ測度に次の式28で示されるユークリッド(l2)ノルムのr乗を用いた場合の大域的最適解の必要条件である等ひずみ原理が示されている。
【0143】
【数10】
【0144】
多数の代表ベクトルに対して、入力空間の確率分布が多数の互いに素のクラスタから構成されているとき、最小の平均ひずみとなるベクトル量子化器における代表ベクトルの配置は、各代表ベクトルの部分ひずみが互いに等しくなるように配置された状態になる。
【0145】
i番目の代表ベクトルの部分ひずみDi は,次の(29)式を用いて計算する。
【0146】
【数11】
【0147】
ただし、δitはクロネッカーのデルタであり、代表ベクトルiが最も小さいひずみを持つとき1となる。
【0148】
等ひずみ原理の簡単な例を図13に示す。黒丸は代表ベクトルであり、点線はボロノイ領域である。入力ベクトルが二つの正方形のクラスタから一様に生起する問題に対する代表ベクトルの最適な配置である。そのとき,各代表ベクトルの部分ひずみは等しい状態になっている。
【0149】
上述の如くLBGアルゴリズムや競合学習は降下法であるため、コードブックが大域的最小値の近くに配置されたとき大域的最小値を見つけることができる。そこで、本発明では、代表ベクトルの配置を等ひずみ原理で示される配置の近傍に設定することで最適な配置が得られる可能性が高まることに着目し、あらかじめ、代表ベクトルを部分ひずみが等しいような配置の近傍に配置することは困難であるので、更新中に部分ひずみが等しくなるように代表ベクトルを移動させる。
【0150】
そこで、本発明では、等ひずみ原理に基づいたMin-Max Order Compare(MMOC) 操作を加えたLBGアルゴリズムを提案する。MMOC操作は、更新中に部分ひずみを計算し、部分ひずみのばらつきを減少させるように代表ベクトルを再配置する。MMOC操作により各代表ベクトルの部分ひずみを互いに等しい状態に近づけることができる。
【0151】
例えば図14に示すような構成のコードブック生成装置200により、VQ−SSCによる符号化を利用したMMOC操作を加えたLBGアルゴリズムを実行することができる。
【0152】
図14に示すコードブック生成装置200は、入力ベクトル集合メモリ210、ソーティング装置220、コードブックメモリ230、第1の演算装置240、判定装置250、第2の演算装置260、部分ひずみソーティング装置262、部分ひずみ比較装置264、代表ベクトル移動装置266及び制御装置270から構成される。
【0153】
このコードブック生成装置200において、入力ベクトル集合メモリ210は、入力ベクトル集合X=(x(t)∈RK:t=0,・・・,T−1)を記憶しておくメモリであり、第1の演算装置240からアドレスの指定をうけ、対応する入力ベクトルx(t)と初期代表ベクトルの番号を第1の演算装置240に渡す。また、入力ベクトル集合メモリ210は、判定装置250から、入力ベクトルx(t)の初期代表ベクトルの番号minを受け取り、格納する。
【0154】
ソーティング装置220は、制御装置270からのソートの指示とどの次元kを基準としてソートするかの指示を受け、コードブックメモリ230からコードブックを読み出し、指定された次元を基準としてコードブックをソートする。また、ソーティング装置220は、ソートしたコードブックをコードブックメモリ230の指定したアドレスに書き込む。
【0155】
コードブックメモリ230は、コードブックW(p)={wi (p)∈RK:i=0,・・・,N−1}を記憶しておくメモリであり、ひずみ計算・アドレス計算を行う第1の演算装置240からアドレスを受け取り、対応する代表ベクトルのデータ(代表ベクトルの値wi (p),番号i)を第1の演算装置240に渡す。また、このコードブックメモリ230は、代表ベクトル移動装置266から、データ(更新されたコードブックW(p+1)と書き込むアドレス)を受け取り、対応するアドレスに更新されたコードブックが書き込まれる。また、コードブックメモリ230は、コードブックをソーティング装置220に渡す。さらに、コードブックメモリ230は、ソーティング装置220によりソートされたコードブックと書き込むアドレスを受け取り、指定されたアドレスにコードブックを格納する。
【0156】
第1の演算装置240は、入力ベクトル集合メモリ210にアドレスを指定して、対応する入力ベクトルx(t)と初期代表ベクトルの番号を受け取る。また、第1の演算装置240は、制御装置270からひずみ・アドレスの計算の指示を受け、コードブックメモリ230に読み込みたい代表ベクトルのアドレスを指定して、対応するデータ(代表ベクトルの値wi (p),番号iなど)を読み込む。また、第1の演算装置240は、入力ベクトルと代表ベクトルとのひずみd(x(t),wi (p))を計算する。そして、第1の演算装置240は、ひずみd(x(t),wi (p))とデータ(代表ベクトルの番号と値)を判定装置250に渡す。また、第1の演算装置240は、制御装置270からソートの基準となった次元kの指示を受け、k次元だけのひずみd(xk (t) ,wik (p))も判定装置250に渡す。さらに、第1の演算装置240は、判定装置250から、判定結果により探索する代表ベクトルの方向を示すup/downの情報を受け、次の探索する代表ベクトルのアドレスを計算する。なお、第1の演算装置240は、探索終了を示す情報finishを受けた場合は、次の入力ベクトルx(t+1)の符号化に取りかかる。
【0157】
判定装置250は、現在の最小のひずみdcur minとその代表ベクトルの番号minを保持しており、現在の最小のひずみdcur minをもつmin番の代表ベクトルと第1の演算装置240により計算されたi番の代表ベクトルについてひずみd(x(t),wi (p))を比較し、ひずみが小さい方を新しいmin番、現在の最小のひずみdcur minとする。また、判定装置250は、制御装置270から判定の指示を受け、k次元だけのひずみd(xk (t) ,wik (p))と現在の最小のひずみdcur minを比較し、d(xk (t) ,wik (p))の方が大きければ、次に探索する代表ベクトルの方向を示すup/downの情報を変更し、また、up/down両方向とも調べ終わった場合には探索終了を示す情報finishを第1の演算装置240に渡し、d(xk (t) ,wik (p))の方が小さければ、同方向の次の代表ベクトルを調べる情報を第1の演算装置240に渡す。また、判定装置250は、up/down両方向とも調べ終わり探索終了finishになったとき、第2の演算装置260に入力ベクトルx(t)、現在の最小のひずみを持つ初期代表ベクトルの番号min及び最小のひずみdcur minを出力する。さらに、判定装置250は、探索終了finishになったとき、現在の最小のひずみを持つ初期代表ベクトルの番号minを入力ベクトルx(t)の初期代表ベクトルとして入力ベクトル集合メモリ210に格納する。
【0158】
第2の演算装置260は、判定装置250から、入力ベクトルx(t) と符号化された代表ベクトルの番号minと入力ベクトルを符号化したときのひずみdcur minを受け取る。そして、この第2の演算装置260は、代表ベクトル番号minに対応するデータ(分子wminnumと分母wminden、さらに部分ひずみDsum)の計算を次の(30)式、(31)及び(32)式にしたがって行う。
【0159】
wminnum+=x(t) (30)
wminden+=1 (31)
Dminsum+=dcur min (32)
また、この第2の演算装置260は、T個の入力ベクトルに対して、符号化が終了し、上記途中計算が終了したと制御装置270から指示を受けたら、符号化が終了し、上記途中計算が終了したと制御装置270から指示を受けたら、代表ベクトル重心wi (p+1)、部分ひずみDi及び平均ひずみDの計算を次の(33)式、(34)及び(35)式にしたがって行う。
【0160】
【数12】
【0161】
さらに、この第2の演算装置260は、制御装置270により、全てのデータ(分子winumと分母widen、さらに部分ひずみDisum,∀i)をクリアする。
【0162】
部分ひずみソーティング装置262は、第2の演算装置260からデータ(更新されたコードブックと部分ひずみ)をもらう。この部分ひずみソーティング装置262は、部分ひずみの大きさを基準にして、コードブックと部分ひずみをソートする。また、この部分ひずみソーティング装置262は、部分ひずみ比較装置264に、データ(ソートされたコードブックと部分ひずみ)を渡す。
【0163】
部分ひずみ比較装置264は、部分ひずみソーティング装置262から、データ(ソートされたコードブックと部分ひずみ)をもらう。この部分ひずみ比較装置264は、大きい部分ひずみと小さい部分ひずみを比較する。格差が大きい場合は、代表ベクトル移動装置266に小さい部分ひずみを持つ代表ベクトルを大きい部分ひずみを持つ代表ベクトルの近傍に移動させる情報を渡す。さらに、データ(上記移動情報とコードブック)を代表ベクトル移動装置266に渡す。
【0164】
代表ベクトル移動装置266は、部分ひずみ比較装置264から、小さい部分ひずみを持つ代表ベクトルを大きい部分ひずみを持つ代表ベクトルの近傍に移動させる情報とコードブックを受け取る。この代表ベクトル移動装置266は、上記移動情報に基づいて、小さい部分ひずみを持つ代表ベクトルを大きい部分ひずみを持つ代表ベクトルの近傍に移動させる。そして、この代表ベクトル移動装置266は、コードブックメモリ230にデータ(更新されたコードブックW(p+1))と書き込むアドレスを渡し、対応するアドレスに更新されたコードブックを書き込む。さらに、この代表ベクトル移動装置266は、制御装置270からの指示で、任意の初期コードブックをコードブックメモリ230に設定する。
【0165】
制御装置270は、ソーティング装置220、第1の演算装置240、判定装置250、第2の演算装置260、部分ひずみソーティング装置262、部分ひずみ比較装置264及び代表ベクトル移動装置266の処理フローを制御する。また、制御装置270は、ソーティング装置220にソートの基準となる次元を指定する。また、制御装置270は、第1の演算装置240に初期代表ベクトルのアドレス(又は番号)を指定し、また、ソートの基準となった次元を指示する。さらに、制御装置270は、第2の演算装置260に任意の初期コードブックの設定を指示する。
【0166】
このような構成のコードブック生成装置200において、本発明では、等ひずみ原理に基づいたMin-Max Order Compare(MMOC) 操作を加えたLBGアルゴリズムにより図15に示すフローチャートにしたがってコードブック生成を行う。
【0167】
すなわち、このベクトル量子化器200では、先ず、ステップ(F201)において、代表ベクトル初期配置を設定する。また、代表ベクトルをソートするための基準の次元kを指定する。さらに、MMOC操作のパラメータR,mを設定する。
【0168】
次のステップ(F202)では、次元kの代表ベクトルの値に基づいて代表ベクトルをソートする。ソートされた順番の情報については,以下の2通りのやり方が考えられる。
【0169】
(1)直接代表ベクトルの順番を入れ替えてしまう。代表ベクトルの番号を変更したくないときは、代表ベクトルの番号の情報を持つ構造体にして入れ替える。直接ならべ変えているので、自分より下位の代表ベクトルの番号lowerは、自分の配列の番号−1 とした配列の番号となる。また、自分より上位の代表ベクトルの番号upperは、自分の配列の番号+1とした配列の番号となる。
【0170】
(2)ソートしたときの順番を示す配列を用意する場合、各代表ベクトルが保持すべき情報は、自分より下位の代表ベクトルの番号lowerと、自分より上位の代表ベクトルの番号upperである。
【0171】
次のステップ(F203)では、入力ベクトルx(t)と初期の代表ベクトルwi (p)とのひずみの計算を行い、このひずみd(x(t),wi (p))を現在の最小のひずみdcur minとし、番号iを符号化の候補として保存しておく。
【0172】
dcur min=d(x(t),wi (p)) (36)
min=i (37)
次のステップ(F204)では、初期の代表ベクトルwi (p) の両隣の代表ベクトルの番号、すなわち、
lower=下位方向の隣の代表ベクトルの番号
upper=上位方向の隣の代表ベクトルの番号
を保存する。
【0173】
次のステップ(F205)では、入力ベクトルx(t)と代表ベクトルwlower (p)とのひずみd(x(t),wlower (p))の計算を行い、計算途中のd(xk (t),wlowerk (p))を保存しておく。そして、このステップ(F205)では、計算したひずみd(xk (t),wlowerk (p))が現在の最小のひずみdcur minより小さいか否か、すなわち、
d(x(t),wlower (p))<dcur min (38)
が成り立つか否かを判定し、この(38)式が成り立つならば、
dcur min=d(x(t),wlower (p)) (39)
min=lower (40)
とする。
【0174】
次のステップ(F206)では、下位方向の探索を続けるかどうか判断する。
このステップ(F206)において、もし、
d(xk (t),wlowerk (p))>dcur min (41)
を満足するなら、下位方向の探索は終了で、ステップ(F208)へ移り、さもなければ、次のステップ(F207)へ進む。
【0175】
ステップ(F207)は、代表ベクトルの番号lowerの更新ステップであり、現在のlower番の代表ベクトルの下位方向の隣の代表ベクトルの番号を新しいlowerとして、ステップ(F205)へ戻る。
【0176】
ステップ(F208)では、入力ベクトルx(t)とupper番の代表ベクトルwupper (p)とのひずみd(x(t),wupper (p))の計算を行い、計算途中のd(xk (t),wupperk (p))を保存しておく。
このステップ(F208)では、計算したひずみd(x(t),wupper (p))が現在の最小のひずみdcur minより小さいか否か、すなわち、
d(x(t),wupper (p))<dcur min (42)
が成り立つか否かを判定して、この(42)式が成り立つならば、
dcur min=d(x(t),wupper (p)) (43)
min=upper (44)
とする。
【0177】
次のステップ(F209)では、上位方向の探索を続けるかどうか判断する。
このステップ(F209)では、もし、
d(xk (t),wupperk (p))>dcur min (45)
を満足するなら、上位方向の探索は終了で、ステップ(F211)へ移り、さもなければ、次のステップ(F210)へ進む。
【0178】
ステップ(F210)は、代表ベクトル番号upperの更新ステップであり、現在のupper番の代表ベクトルの上位方向の隣の代表ベクトルの番号を新しいupperとして、ステップ(F208)へ戻る。
【0179】
次のステップ(F211)では、入力ベクトルの符号化と代表ベクトルの重心計算・平均ひずみの準備を行う。
【0180】
このステップ(F211)において、入力ベクトルx(t)は、最小のひずみdcur minを持つ番号minの代表ベクトルwmin (p)に符号化される。
【0181】
このステップ(F211)では、符号化された代表ベクトルminの位置を更新するステップ(F214)において用いる分子wminnum、分母wminden及び部分ひずみDminsumの計算を次の(46)式、(47)及び(48)式にしたがって行っておく。
【0182】
wminnum+=x(t) (46)
wminden+=1 (47)
Dminsum+=dcur min (48)
次のステップ(F212)では、すべての入力ベクトルの符号化が終了したか否かを判定する。このステップ(F212)では、もし、t=T−1が成り立つならば、ステップ(F214)へ移り、さもなければ、次のステップ(F213)へ進む。
【0183】
ステップ(F213)では、t=t+1として、ステップ(F203)に戻り、次の入力ベクトルの探索をする。
【0184】
ステップ(F214)では、代表ベクトルの重心の計算と平均ひずみ及び部分ひずみの計算を行う。このステップ(F214)は、LBGアルゴリズムにおける代表ベクトルの重心の更新を行うステップであり、次の(49)式で表すことができる。
【0185】
【数13】
【0186】
しかし,(49)式の分子・分母の計算は先のステップ(F211)で済んでいるので、次の(50)式の計算を行えばよい。
【0187】
【数14】
【0188】
また、部分ひずみDiは、次の(51)式により計算する。
【0189】
【数15】
【0190】
そして、平均ひずみDは次の(52)式により計算する。
【0191】
【数16】
【0192】
次のステップ(F215)では、収束判定を行う。このステップ(F215)における収束判定条件を満たさないときは、ステップ(F216)へ移り、収束判定条件を満たすときは、処理を終了する。
【0193】
ここで、このステップ(F215)における収束判定条件には、次のようなものが考えられる。その他のものでも構わない。
【0194】
(1)代表ベクトルの更新がなくなったら終了する。
【0195】
(2)所望の平均ひずみ以下になったら終了する。
【0196】
(3)反復回数で打ち切る。
【0197】
次のステップ(F216)では、部分ひずみに応じて、代表ベクトルと部分ひずみをソートする。
【0198】
そして、次のステップ(F217)及びステップ(F218)において、MMOC操作を実行する。
【0199】
すなわち、ステップ(F217)では、図16に示すように、大きい順にR個の部分ひずみDmax[r]と小さい順にR個の部分ひずみDmin[r]を比較する。
【0200】
そして、このステップ(F217)における比較の結果、次の(53)式が成り立ないときは、ステップ(F202)へ移り、(53)式が成り立つときはステップ(F218)へ進む。
【0201】
Dmax[r]>m×Dmin[r],(r=0,・・・,R−1) (53)
さらに、ステップ(F218)では、次の(54)式に示すように、小さい順の部分ひずみDmin[r]を持つ代表ベクトルwmin (p+1)[r]を大きい順の部分ひずみDmax[r]を持つ代表ベクトルwmax (p+1)[r]の近傍に再配置して、ステップ(F202)へ戻る。
【0202】
wmin (p+1)[r]←wmax (p+1)[r]+ε (54)
ただし、ε(≪1)は摂動項である。一回の反復で最大R個の移動が可能となる。
【0203】
MMOC操作において、現在の反復でMMOC操作により移動が行われる個数は前回の反復でMMOC操作により移動が行われた個数R’よりも増えることはほとんど起きない。そこで、MMOC操作は常にR個をMMOC操作にかけるのではなく、前回の反復での個数R’個をMMOC操作にかけた方が効率的である。最終的にR’は零になってしまうので、R’=0のときは最低限1個のMMOC操作を行うようにする。
【0204】
最も単純なR=1とした場合のMMOC操作を加えたLBGアルゴリズムの動作の概念図を図17に示す。また、実際の動作を図18に示す。
【0205】
ここで、図17を用いてMMC操作を加えたLBGアルゴリズムの動作を説明する。
【0206】
1反復目では、2番の代表ベクトルが符号化に全く使われていない、すなわち部分ひずみD2 =0である。それに対して、4番の代表ベクトルが符号化に大変よく使われており、部分ひずみD4 が最も大きい。そこで、2番の代表ベクトルの部分ひずみD2minと4番の代表ベクトルの部分ひずみD4maxを比較した場合、次の(55)式
D4max>m・D2min (55)
が成り立つので、2番の代表ベクトルを4番の代表ベクトルの近傍に移動する。
この移動により、部分ひずみの格差が減少する。
【0207】
そして、LBGアルゴリズムを用いて代表ベクトルの配置を修正する。
【0208】
2反復目では、1反復目と同様に1番の代表ベクトルの部分ひずみD1が最も小さく、4番の代表ベクトルの部分ひずみD4が最も大きい。そこで、1番の代表ベクトルの部分ひずみD1minと4番の代表ベクトルの部分ひずみD4maxを比較した場合、次の(56)式
D4max>m・D1min (56)
が成り立つとすると、1番の代表ベクトルを4番の代表ベクトルの近傍に移動する。この移動により、部分ひずみの格差がさらに減少する。
【0209】
そして、LBGアルゴリズムを用いて代表ベクトルの配置を修正する。
【0210】
3反復目では、1番の代表ベクトルの部分ひずみD1が最も小さく、5番の代表ベクトルの部分ひずみD5が最も大きい。しかし、1番の代表ベクトルの部分ひずみD1minと5番の代表ベクトルの部分ひずみD4maxを比較した場合、ほとんど部分ひずみの格差がないため
D4max>m・D1min (57)
が成り立たない。この代表ベクトルの配置は等ひずみ原理で示した大域的最適解の近傍の配置になっている。
【0211】
したがってLBGアルゴリズムを数回繰り返すことで、代表ベクトルの最適な配置を得ることができる。
【0212】
また、本発明は、上述の(27)式で示されるひずみの部分和が現在の最小のひずみdcur minと比較して大きいときは、次の代表ベクトルを探索するひずみの部分和を用いた高速化手法を組み合わせるとより一層の効果がある。
【0213】
ここでは、上述の図14に示したベクトル量子化器200の変形例として、図19を参照して差分のみを説明する。
【0214】
図19に示すベクトル量子化器200’において、コードブックメモリ230は、コードブックとアドレスをソーティング装置220に渡す。
【0215】
ソーティング装置220は、制御装置270からのソートの指示とどの次元kを基準としてソートするかの指示を受け、コードブックメモリ230からコードブックのアドレスとコードブックを読み出し、指定された次元を基準としてコードブックをソートする。そして、そのソートされた代表ベクトルの順番通りに、各代表ベクトルのアドレスを並び替え、ソート順に並んだアドレスをコードブックソート表280に書き込む。
【0216】
第1の演算装置240は、判定装置250から、判定結果により探索する代表ベクトルの方向を示すup/downの情報を受け、次の探索する代表ベクトルのアドレスをコードブックソート表280に参照しに行き、アドレスを受け取る。そして、コードブックメモリ230に、そのアドレスを指定して、対応するデータ(代表ベクトルの番号iと値wi (P)など)を読み込む。
【0217】
そして、コードブックソート表280は、ソーティング装置220から受け取ったアドレスを格納する。また、コードブックソート表280は、第1の演算装置240からの次の探索する代表ベクトルの参照の指示に従って、その代表ベクトルのアドレスを第1の演算装置240に渡す。
【0218】
次に、上記ベクトル量子化器200による静止画像の符号化のシミュレーション結果について説明する。
【0219】
テスト画像として、Kodak PHOTOCDに入っている図20、図21、図22及び図23に示す24枚のBMPファイルに対して階調変換を行った。
【0220】
MM0C操作(R=1)を加えたLBGアルゴリズムによる全探索とVQ−SSCによる各BMPファイルに対する階調変換のシミュレーションを行ったところ、図24に示す結果が得られた。このシミュレーション結果について、図25の(a)には各BMPファイルに対する全探索による階調変換の実行時間(◆)とVQ−SSCによる階調変換の実行時間(●)を比較して示してあり、また、図25の(b)には実行時間の改善量として、操作(全探索)の実行時間を操作(VQ−SSC)の実行時間で規格化したときの数値を示してある。
【0221】
この図24及び図25に示す階調変換のシミュレーション結果では、LBGアルゴリズム(全探索)では平均で197回の反復,約2000秒で収束しているのに対して、VQ−SSCで符号化を行えば、平均で約200秒で収束している。この実行時間は、VQ−SSCなしの場合と比較して平均で1/10.1に短縮されている。
【0222】
また、MMOC操作(R=30)を加えたLBGアルゴリズムによる全探索とVQ−SSCによる各BMPファイルに対する階調変換のシミュレーションを行ったところ、図26に示す結果が得られた。このシミュレーション結果について、図27の(a)には各BMPファイルに対する全探索による階調変換の実行時間(◆)とVQ−SSCによる階調変換の実行時間(●)を比較して示してあり、また、図27の(b)には実行時間の改善量として、操作(全探索)の実行時間を操作(VQ−SSC)の実行時間で規格化したときの数値を示してある。
【0223】
この図26及び図27に示す階調変換のシミュレーション結果では、MMOC操作(R=30)を加えたLBGアルゴリズム(全探索)では平均で24回の反復,約250秒で収束しているのに対して、VQ−SSCで符号化を行えば、平均で約33.3秒で収束している。この実行時間は、VQ−SSCなしの場合と比較して平均で1/7.6に短縮されている。
【0224】
また、本発明は、例えば図28に示すような構成のコードブック生成装置300により実施される。
【0225】
このコードブック生成装置300は、入力端子310、ソーティング装置320、コードブックメモリ330、第1の演算装置340、判定装置350、第2の演算装置360及び制御装置370から構成される。
【0226】
このコードブック生成装置300は、VQ−SSCによる符号化を利用した競合学習を行うものであって、入力端子310を介して入力ベクトルx(t)∈RKが第1の演算装置340に入力される。
【0227】
ソーティング装置320は、制御装置370からのソートの指示とどの次元kを基準としてソートするかの指示を受け、コードブックメモリ330からコードブックを読み出し、指定された次元を基準としてコードブックをソートする。また、ソーティング装置320は、ソートしたコードブックをコードブックメモリ330の指定したアドレスに書き込む。
【0228】
コードブックメモリ330は、コードブックW(t)={wi (t)∈RK:i=0,・・・,N−1}を記憶しておくメモリであり、ひずみ計算・アドレス計算を行う第1の演算装置340からアドレスを受け取り、対応する代表ベクトルのデータ(代表ベクトルの値wi (t),番号i)を第1の演算装置340に渡す。また、コードブックメモリ330は、重心計算・平均ひずみ計算を行う第2の演算装置360から、データ(更新された代表ベクトルの値wmin (t+1))及び書き込むアドレスを受け取り、対応するアドレスにコードブックが書き込まれる。また、コードブックメモリ330は、コードブックをソーティング装置320に渡す。さらに、コードブックメモリ330は、ソーティング装置320によりソートされたコードブックと書き込むアドレスを受け取り、指定されたアドレスにコードブックを格納する。
【0229】
第1の演算装置340は、入力端子310を介して入力ベクトルx(t)を受け取る。この第1の演算装置340は、制御装置370からひずみ・アドレスの計算の指示を受け、コードブックメモリ330に読み込みたい代表ベクトルのアドレスを指定して、対応するデータ(代表ベクトルの値wi (t),番号iなど)を読み込む。また、第1の演算装置340は、入力ベクトルと代表ベクトルとのひずみd(x(t),wi (t))を計算する。そして、第1の演算装置340は、ひずみd(x(t),wi (t))とデータ(代表ベクトルの番号と値)を判定装置350に渡す。また、第1の演算装置340は、制御装置370からソートの基準となった次元kの指示を受け、k次元だけのひずみd(xk (t),wik (t))も判定装置350に渡す。さらに、第1の演算装置340は、判定装置350から、判定結果により探索する代表ベクトルの方向を示すup/downの情報を受け、次の探索する代表ベクトルのアドレスを計算する。なお、第1の演算装置340は、探索終了を示す情報finishを受けた場合は、次の入力ベクトルx(t+1)の符号化に取りかかる。
【0230】
判定装置350は、現在の最小のひずみdcur minとその代表ベクトルの番号minを保持しており、現在の最小のひずみdcur minをもつmin番の代表ベクトルと第1の演算装置340により計算されたi番の代表ベクトルについてひずみd(x(t),wi (t))を比較し、ひずみが小さい方を新しいmin番、現在の最小のひずみdcur minとする。また、判定装置350は、制御装置370から判定の指示を受け、k次元だけのひずみd(xk (t),wik (t))と現在の最小のひずみdcur minを比較し、d(xk (t),wik (t))の方が大きければ、次に探索する代表ベクトルの方向を示すup/downの情報を変更し、また、up/down両方向とも調べ終わった場合には探索終了を示す情報finishを第1の演算装置340に渡し、d(xk (t),wik (t))の方が小さければ、同方向の次の代表ベクトルを調べる情報を第1の演算装置340に渡す。また、判定装置350は、up/down両方向とも調べ終わり探索終了finishになったとき、第2の演算装置360に入力ベクトルx(t)、現在の最小のひずみを持つ代表ベクトルのデータ(番号min及び値wmin (t))及び最小のひずみdcur minを出力する。さらに、判定装置350は、探索終了finishになったとき、現在の最小のひずみを持つ代表ベクトルの番号minを次入力ベクトルx(t+1)の初期代表ベクトルとして第2の演算装置360に渡す。
【0231】
第2の演算装置360は、判定装置350から、入力ベクトルx(t) と現在の最小のひずみを持つ代表ベクトルのデータ(番号min及び値wmin (t ))と最小のひずみdcur minを受け取る。そして、この第2の演算装置360は、平均ひずみDsumの計算を次の(58)式にしたがって行う。
【0232】
Dsum+=dcur min (58)
また、この第2の演算装置360は、代表ベクトルの値を次の(59)式にしたがって更新する。
【0233】
wmin (t+1)=wmin (t)+η(t)[x(t)−wmin (t)] (59)
また、この第2の演算装置360は、コードブックメモリ330の代表ベクトル番号minのアドレスに更新された代表ベクトルの値wmin (t+1)を書き込む。
【0234】
また、この演算装置360は、T個の入力ベクトルに対して、符号化が終了し、上記途中計算が終了したと制御装置370から指示を受けたら、平均ひずみDの計算を次の(60)式にしたがって行う。
【0235】
【数17】
【0236】
また、この第2の演算装置360は、制御装置370からの指示により、データ(平均ひずみDsum)をクリアする。
【0237】
さらに、この第2の演算装置360は、制御装置370からの指示により、任意の初期コードブックをコードブックメモリ330に設定する。
【0238】
制御装置370は、ソーティング装置320、第1の演算装置340、判定装置350及び第2の演算装置360の処理フローを制御する。また、制御装置370は、ソーティング装置320にソートの基準となる次元を指定する。また、制御装置370は、第1の演算装置340に初期代表ベクトルのアドレス(又は番号)を指定し、また、ソートの基準となった次元を指示する。さらに、制御装置370は、第2の演算装置360に任意の初期コードブックの設定を指示する。
【0239】
このような構成のコードブック生成装置300において、本発明では、図29のフローチャートに示す符号化アルゴリズムにしたがってコードブック生成を行う。
【0240】
すなわち、このコードブック生成装置300では、先ず、ステップ(F301)において、代表ベクトル初期配置を設定する。また、代表ベクトルをソートするための基準の次元kを指定する。
【0241】
次のステップ(F302)では、次元kの代表ベクトルの値に基づいて代表ベクトルをソートする。2回目以降は、更新された代表ベクトルw(t+1)だけ、対応する場所に入るように修正する。ソートされた順番の情報については、以下の2通りのやり方が考えられる。
【0242】
(1)直接代表ベクトルの順番を入れ替えてしまう。代表ベクトルの番号を変更したくないときは、代表ベクトルの番号の情報を持つ構造体にして入れ替える。直接ならべ変えているので、自分より下位の代表ベクトルの番号lowerは、自分の配列の番号−1とした配列の番号となる。また、自分より上位の代表ベクトルの番号upperは、自分の配列の番号+1とした配列の番号となる。
【0243】
(2)ソートしたときの順番を示す配列を用意する場合、各代表ベクトルが保持すべき情報は、自分より下位の代表ベクトルの番号lowerと、自分より上位の代表ベクトルの番号upperである。
【0244】
次のステップ(F303)では、入力ベクトルx(t)と初期の代表ベクトルwi (t)とのひずみの計算を行い、このひずみd(x(t),wi (t))を現在の最小のひずみdcur minとし、番号iを符号化の候補として保存しておく。
【0245】
dcur min=d(x(t),wi (t)) (61)
min=i (62)
次のステップ(F304)では、初期の代表ベクトルwi (t) の両隣の代表ベクトルの番号、すなわち、
lower=下位方向の隣の代表ベクトルの番号
upper=上位方向の隣の代表ベクトルの番号
を保存する。
【0246】
次のステップ(F305)では、入力ベクトルx(t)と代表ベクトルwlower (t)とのひずみd(x(t),wlower (t))の計算を行い、計算途中のd(xk (t),wlowerk (t))を保存しておく。そして、このステップ(F305)では、計算したひずみd(xk (t),wlowerk (t))が現在の最小のひずみdcur minより小さいか否か、すなわち、
d(x(t),wlower (t))<dcur min (63)
が成り立つか否かを判定し、この(63)式が成り立つならば、
dcur min=d(x(t),wlower (t)) (64)
min=lower (65)
とする。
【0247】
次のステップ(F306)では、下位方向の探索を続けるかどうか判断する。
このステップ(F306)において、もし、
d(xk (t),wlowerk (t))>dcur min (66)
を満足するなら、下位方向の探索は終了で、ステップ(F308)へ移り、さもなければ、次のステップ(F307)へ進む。
【0248】
ステップ(F307)は、代表ベクトルの番号lowerの更新ステップであり、現在のlower番の代表ベクトルの下位方向の隣の代表ベクトルの番号を新しいlowerとして、ステップ(F305)へ戻る。
【0249】
ステップ(F308)では、入力ベクトルx(t)とupper番の代表ベクトルwupper (t)とのひずみd(x(t),wupper (t))の計算を行い、計算途中のd(xk (t),wupperk (t))を保存しておく。このステップ(F308)では、計算したひずみd(x(t),wupper (t))が現在の最小のひずみdcur minより小さいか否か、すなわち、
d(x(t),wupper (t))<dcur min (67)
が成り立つか否かを判定して、この(67)式が成り立つならば、
dcur min=d(x(t),wupper (t)) (68)
min=upper (69)
とする。
【0250】
次のステップ(F309)では、上位方向の探索を続けるかどうか判断する。
このステップ(F309)では、もし、
d(xk (t),wupperk (t))>dcur min (70)
を満足するなら、上位方向の探索は終了で、ステップ(F311)へ移り、さもなければ、次のステップ(F310)へ進む。
【0251】
ステップ(F310)は、代表ベクトル番号upperの更新ステップであり、現在のupper番の代表ベクトルの上位方向の隣の代表ベクトルの番号を新しいupperとして、ステップ(F308)へ戻る。
【0252】
次のステップ(F311)では、入力ベクトルの符号化と代表ベクトルの重心計算・平均ひずみの準備を行う。このステップ(F311)において、入力ベクトルx(t)は、最小のひずみdcur minを持つ番号minの代表ベクトルwmin (t)に符号化される。このステップ(F311)では、符号化された代表ベクトルの値を次の(71)式にしたがって更新する。
【0253】
wmin (t+1)=wmin (t)+η(t)[x(t)−wmin (t)] (71)
また、このステップ(F311)では、平均ひずみDsumの計算を次の(72)式にしたがって行う。
【0254】
Dsum+=dcur min (72)
そして、t=T−1が成り立つとき、平均ひずみDの計算を次の(73)式にしたがって行う。
【0255】
【数18】
【0256】
次のステップ(F312)では、すべての入力ベクトルの符号化が終了したか否かを判定する。このステップ(F312)では、もし、データが終わりならば処理を終了し、さもなければ、次のステップ(F313)へ進む。
【0257】
ステップ(F313)では、t=t+1として、ステップ(F302)に戻り、次の入力ベクトルの探索をする。
【0258】
また、本発明は、上述の(27)式で示されるひずみの部分和が現在の最小のひずみdcur minと比較して大きいときは、次の代表ベクトルを探索するひずみの部分和を用いた高速化手法を組み合わせるとより一層の効果がある。
【0259】
ここでは、上述の図28に示したコードブック生成装置300の変形例として、図30を参照して差分のみを説明する。
【0260】
図30に示すコードブック生成装置300’において、コードブックメモリ330は、コードブックとアドレスをソーティング装置320に渡す。
【0261】
ソーティング装置320は、制御装置370からのソートの指示とどの次元kを基準としてソートするかの指示を受け、コードブックメモリ330からコードブックのアドレスとコードブックを読み出し、指定された次元を基準としてコードブックをソートする。そして、そのソートされた代表ベクトルの順番通りに、各代表ベクトルのアドレスを並び替え、ソート順に並んだアドレスをコードブックソート表380に書き込む。
【0262】
第1の演算装置340は、判定装置350から、判定結果により探索する代表ベクトルの方向を示すup/downの情報を受け、次の探索する代表ベクトルのアドレスをコードブックソート表380に参照しに行き、アドレスを受け取る。そして、コードブックメモリ330に、そのアドレスを指定して、対応するデータ(代表ベクトルの番号iと値wi (t)など)を読み込む。
【0263】
そして、コードブックソート表380は、ソーティング装置320から受け取ったアドレスを格納する。また、コードブックソート表380は、第1の演算装置340からの次の探索する代表ベクトルの参照の指示に従って、その代表ベクトルのアドレスを第1の演算装置340に渡す。
【0264】
また、本発明は、例えば図31に示すような構成のコードブック生成装置400により実施される。
【0265】
このコードブック生成装置400は、入力端子410、ソーティング装置420、コードブックメモリ430、第1の演算装置440、判定装置450、第2の演算装置460、部分ひずみソーティング装置462、部分ひずみ比較装置464、代表ベクトル移動装置466、制御装置470から構成される。
【0266】
このコードブック生成装置400は、VQ−SSCによる符号化を利用したMMOC操作を加えた競合学習を行うものであって、入力端子410を介して入力ベクトルx(t)∈RKが第1の演算装置440に入力される。
【0267】
ソーティング装置420は、制御装置470からのソートの指示とどの次元kを基準としてソートするかの指示を受け、コードブックメモリ430からコードブックを読み出し、指定された次元を基準としてコードブックをソートする。また、ソーティング装置420は、ソートしたコードブックをコードブックメモリ430の指定したアドレスに書き込む。
【0268】
コードブックメモリ430は、コードブックW(t)={wi (t)∈RK:i=0,・・・,N−1}を記憶しておくメモリであり、ひずみ計算・アドレス計算を行う第1の演算装置440からアドレスを受け取り、対応する代表ベクトルのデータ(代表ベクトルの値wi (t),番号i)を第1の演算装置440に渡す。また、コードブックメモリ430は、代表ベクトル移動装置466からデータ(更新された、コードブックW(T))及び書き込むアドレスを受け取り、対応するアドレスにコードブックが書き込まれる。また、コードブックメモリ430は、代表ベクトル計算・平均ひずみ計算・部分ひずみ計算を行う第2の演算装置460から、データ(更新された代表ベクトルの値wmin (t+1))及び書き込むアドレスを受け取り、対応するアドレスにコードブックが書き込まれる。また、コードブックメモリ430は、コードブックをソーティング装置420に渡す。さらに、コードブックメモリ430は、ソーティング装置420によりソートされたコードブックと書き込むアドレスを受け取り、指定されたアドレスにコードブックを格納する。
【0269】
第1の演算装置440は、入力端子410を介して入力ベクトルx(t)を受け取る。この第1の演算装置440は、制御装置470からひずみ・アドレスの計算の指示を受け、コードブックメモリ430に読み込みたい代表ベクトルのアドレスを指定して、対応するデータ(代表ベクトルの値wi (t),番号iなど)を読み込む。また、第1の演算装置440は、入力ベクトルと代表ベクトルとのひずみd(x(t),wi (t))を計算する。そして、第1の演算装置440は、ひずみd(x(t),wi (t))とデータ(代表ベクトルの番号と値)を判定装置450に渡す。また、第1の演算装置440は、制御装置470からソートの基準となった次元kの指示を受け、k次元だけのひずみd(xk (t),wik (t))も判定装置450に渡す。さらに、第1の演算装置440は、判定装置450から、判定結果により探索する代表ベクトルの方向を示すup/downの情報を受け、次の探索する代表ベクトルのアドレスを計算する。なお、第1の演算装置440は、探索終了を示す情報finishを受けた場合は、次の入力ベクトルx(t+1)の符号化に取りかかる。
【0270】
判定装置450は、現在の最小のひずみdcur minとその代表ベクトルの番号minを保持しており、現在の最小のひずみdcur minをもつmin番の代表ベクトルと第1の演算装置440により計算されたi番の代表ベクトルについてひずみd(x(t),wi (t))を比較し、ひずみが小さい方を新しいmin番、現在の最小のひずみdcur minとする。また、判定装置450は、制御装置470から判定の指示を受け、k次元だけのひずみd(xk (t),wik (t))と現在の最小のひずみdcur minを比較し、d(xk (t),wik (t))の方が大きければ、次に探索する代表ベクトルの方向を示すup/downの情報を変更し、また、up/down両方向とも調べ終わった場合には探索終了を示す情報finishを第1の演算装置440に渡し、d(xk (t),wik (t))の方が小さければ、同方向の次の代表ベクトルを調べる情報を第1の演算装置440に渡す。また、判定装置450は、up/down両方向とも調べ終わり探索終了finishになったとき、第2の演算装置460に入力ベクトルx(t)、現在の最小のひずみを持つ代表ベクトルのデータ(番号min及び値wmin (t))及び最小のひずみdcur minを出力する。さらに、判定装置450は、探索終了finishになったとき、現在の最小のひずみを持つ代表ベクトルの番号minを次入力ベクトルx(t+1)の初期代表ベクトルとして第2の演算装置460に渡す。
【0271】
第2の演算装置460は、判定装置450から、入力ベクトルx(t) と現在の最小のひずみを持つ代表ベクトルのデータ(番号min及び値wmin (t))と最小のひずみdcur minを受け取る。そして、この第2の演算装置460は、代表ベクトル番号minに対応するデータ(部分ひずみDminsum)の計算を次の(74)式にしたがって行う。
【0272】
Dminsum+=dcur min (74)
また、この第2の演算装置460は、代表ベクトルの値を次の(75)式にしたがって更新する。
【0273】
wmin (t+1)=wmin (t)+η(t)[x(t)−wmin (t)] (75)
また、この第2の演算装置460は、コードブックメモリ330の代表ベクトル番号minのアドレスに更新された代表ベクトルの値wmin (t+1)を書き込む。
【0274】
また、この演算装置460は、T個の入力ベクトルに対して、符号化が終了し、上記途中計算が終了したと制御装置470から指示を受けたら、次の(76)式及び(77)式にしたがって、部分ひずみDi及び平均ひずみDを計算する。
【0275】
【数19】
【0276】
さらに、この第2の演算装置460は、制御装置470により、全てのデータ(部分ひずみDisum,∀i)をクリアする。
【0277】
部分ひずみソーティング装置462は、第2の演算装置460からデータ(更新されたコードブックと部分ひずみ)をもらう。また、この部分ひずみソーティング装置462は、コードブックメモリ430からアドレスを指定して対応するデータ(コードブックW(T))をもらう。この部分ひずみソーティング装置462は、部分ひずみの大きさを基準にして、コードブックと部分ひずみをソートする。また、この部分ひずみソーティング装置462は、部分ひずみ比較装置464に、データ(ソートされたコードブックと部分ひずみ)を渡す。
【0278】
部分ひずみ比較装置464は、部分ひずみソーティング装置462から、データ(ソートされたコードブックと部分ひずみ)をもらう。この部分ひずみ比較装置464は、大きい部分ひずみと小さい部分ひずみを比較する。格差が大きい場合は、代表ベクトル移動装置466に小さい部分ひずみを持つ代表ベクトルを大きい部分ひずみを持つ代表ベクトルの近傍に移動させる情報を渡す。さらに、データ(上記移動情報とコードブックW(T))を代表ベクトル移動装置466に渡す。
【0279】
代表ベクトル移動装置466は、部分ひずみ比較装置464から、小さい部分ひずみを持つ代表ベクトルを大きい部分ひずみを持つ代表ベクトルの近傍に移動させる情報とコードブックW(T)を受け取る。この代表ベクトル移動装置466は、上記移動情報に基づいて、小さい部分ひずみを持つ代表ベクトルを大きい部分ひずみを持つ代表ベクトルの近傍に移動させる。そして、この代表ベクトル移動装置466は、コードブックメモリ430にデータ(更新されたコードブックW(T))と書き込むアドレスを渡し、対応するアドレスに更新されたコードブックを書き込む。さらに、この代表ベクトル移動装置466は、制御装置470からの指示で、任意の初期コードブックをコードブックメモリ430に設定する。
【0280】
制御装置470は、ソーティング装置420、第1の演算装置440、判定装置450、第2の演算装置460、部分ひずみソーティング装置462、部分ひずみ比較装置464及び代表ベクトル移動装置466の処理フローを制御する。また、制御装置470は、代表ベクトル移動装置466に任意の初期コードブックの設定を指示する。また、制御装置470は、ソーティング装置420にソートの基準となる次元を指定する。さらに、制御装置470は、第1の演算装置440に初期代表ベクトルのアドレス(又は番号)を指定し、また、ソートの基準となった次元を指示する。
【0281】
このような構成のコードブック生成装置400において、本発明では、等ひずみ原理に基づいたMin-Max Order Compare(MMOC) 操作を加えた競合学習により図32に示すフローチャートにしたがってコードブック生成を行う。
【0282】
すなわち、このコードブック生成装置400では、先ず、ステップ(F401)において、代表ベクトル初期配置を設定する。また、代表ベクトルをソートするための基準の次元kを指定する。さらに、MMOC操作のパラメータR,mを設定する。
【0283】
次のステップ(F402)では、次元kの代表ベクトルの値に基づいて代表ベクトルをソートする。2回目以降は、更新された代表ベクトルw(t+1)だけ、対応する場所に入るように修正する。ソートされた順番の情報については、以下の2通りのやり方が考えられる。
【0284】
(1)直接代表ベクトルの順番を入れ替えてしまう。代表ベクトルの番号を変更したくないときは、代表ベクトルの番号の情報を持つ構造体にして入れ替える。直接ならべ変えているので、自分より下位の代表ベクトルの番号lowerは、自分の配列の番号−1とした配列の番号となる。また、自分より上位の代表ベクトルの番号upperは、自分の配列の番号+1とした配列の番号となる。
【0285】
(2)ソートしたときの順番を示す配列を用意する場合、各代表ベクトルが保持すべき情報は、自分より下位の代表ベクトルの番号lowerと、自分より上位の代表ベクトルの番号upperである。
【0286】
次のステップ(F403)では、入力ベクトルx(t)と初期の代表ベクトルwi (t)とのひずみの計算を行い、このひずみd(x(t),wi (t))を現在の最小のひずみdcur minとし、番号iを符号化の候補として保存しておく。
【0287】
dcur min=d(x(t),wi (t)) (78)
min=i (79)
次のステップ(F404)では、初期の代表ベクトルwi (t) の両隣の代表ベクトルの番号、すなわち、
lower=下位方向の隣の代表ベクトルの番号
upper=上位方向の隣の代表ベクトルの番号
を保存する。
【0288】
次のステップ(F405)では、入力ベクトルx(t)と代表ベクトルwlower (t)とのひずみd(x(t),wlower (t))の計算を行い、計算途中のd(xk (t),wlowerk (t))を保存しておく。そして、このステップ(F405)では、計算したひずみd(xk (t),wlowerk (t))が現在の最小のひずみdcur minより小さいか否か、すなわち、
d(x(t),wlower (t))<dcur min (80)
が成り立つか否かを判定し、この(80)式が成り立つならば、
dcur min=d(x(t),wlower (t)) (81)
min=lower (82)
とする。
【0289】
次のステップ(F406)では、下位方向の探索を続けるかどうか判断する。
このステップ(F406)において、もし、
d(xk (t),wlowerk (t))>dcur min (83)
を満足するなら、下位方向の探索は終了で、ステップ(F408)へ移り、さもなければ、次のステップ(F407)へ進む。
【0290】
ステップ(F407)は、代表ベクトルの番号lowerの更新ステップであり、現在のlower番の代表ベクトルの下位方向の隣の代表ベクトルの番号を新しいlowerとして、ステップ(F405)へ戻る。
【0291】
ステップ(F408)では、入力ベクトルx(t)とupper番の代表ベクトルwupper (t)とのひずみd(x(t),wupper (t))の計算を行い、計算途中のd(xk (t),wupperk (t))を保存しておく。このステップ(F408)では、計算したひずみd(x(t),wupper (t))が現在の最小のひずみdcur minより小さいか否か、すなわち、
d(x(t),wupper (t))<dcur min (84)
が成り立つか否かを判定して、この(84)式が成り立つならば、
dcur min=d(x(t),wupper (t)) (85)
min=upper (86)
とする。
【0292】
次のステップ(F409)では、上位方向の探索を続けるかどうか判断する。
このステップ(F409)では、もし、
d(xk (t),wupperk (t))>dcur min (87)
を満足するなら、上位方向の探索は終了で、ステップ(F411)へ移り、さもなければ、次のステップ(F410)へ進む。
【0293】
ステップ(F410)は、代表ベクトル番号upperの更新ステップであり、現在のupper番の代表ベクトルの上位方向の隣の代表ベクトルの番号を新しいupperとして、ステップ(F408)へ戻る。
【0294】
次のステップ(F411)では、入力ベクトルの符号化と代表ベクトルの更新・平均ひずみの準備を行う。 このステップ(F411)において、入力ベクトルx(t)は、最小のひずみdcur minを持つ番号minの代表ベクトルwmin (t)に符号化される。このステップ(F411)では、符号化された代表ベクトルの値を次の(88)式にしたがって更新する。
【0295】
wmin (t+1)=wmin (t)+η(t)[x(t)−wmin (t)] (88)
また、このステップ(F411)では、部分ひずみDminsumの計算を次の(89)式にしたがって行う。
【0296】
Dminsum+=dcur min (89)
そして、t=T−1が成り立つとき、部分ひずみDi及び平均ひずみDの計算を行う。また、部分ひずみDiは、次の(90)式により計算する。
【0297】
【数20】
【0298】
そして、平均ひずみDは次の(91)式により計算する。
【0299】
【数21】
【0300】
次のステップ(F412)では、すべての入力ベクトルの符号化が終了したか否かを判定する。このステップ(F412)では、もし、データが終わりならば処理を終了し、さもなければ、次のステップ(F413)へ進む。
【0301】
ステップ(F413)は、MMOCモードに入るか否かを判定するステップであり、t=T−1が成り立たないときには、ステップ(F414)に進み、t=T−1が成り立つときには、ステップ(F415)に進む。
【0302】
ステップ(F414)では、t=t+1として、ステップ(F402)に戻り、次の入力ベクトルの探索をする。
【0303】
また、ステップ(F415)では、部分ひずみに応じて、代表ベクトルと部分ひずみをソートする。
【0304】
そして、次のステップ(F416)及びステップ(F417)において、MMOC操作を実行する。
【0305】
すなわち、ステップ(F416)では、図16に示すように、大きい順にR個の部分ひずみDmax[r]と小さい順にR個の部分ひずみDmin[r]を比較する。
【0306】
そして、このステップ(F306)における比較の結果、次の(92)式が成り立ないときは、ステップ(F402)へ戻り、(92)式が成り立つときはステップ(F417)へ進む。
【0307】
Dmax[r]>m×Dmin[r],(r=0,・・・,R−1) (92)
さらに、ステップ(F417)では、次の(93)式に示すように、小さい順の部分ひずみDmin[r]を持つ代表ベクトルwmin (T)[r]を大きい順の部分ひずみDmax[r]を持つ代表ベクトルwmax (T)[r]の近傍に再配置して、ステップ(F402)へ戻る。
【0308】
wmin (T)[r]←wmax (T)[r]+ε (93)
ただし、ε(≪1)は摂動項である。一回の反復で最大R個の移動が可能となる。
【0309】
また、本発明は、上述の(27)式で示されるひずみの部分和が現在の最小のひずみdcur minと比較して大きいときは、次の代表ベクトルを探索するひずみの部分和を用いた高速化手法を組み合わせるとより一層の効果がある。
【0310】
ここでは、上述の図31に示したコードブック生成装置400の変形例として、図33を参照して差分のみを説明する。
【0311】
図33に示すコードブック生成装置400’において、コードブックメモリ430は、コードブックとアドレスをソーティング装置420に渡す。
【0312】
ソーティング装置420は、制御装置470からのソートの指示とどの次元kを基準としてソートするかの指示を受け、コードブックメモリ430からコードブックのアドレスとコードブックを読み出し、指定された次元を基準としてコードブックをソートする。そして、そのソートされた代表ベクトルの順番通りに、各代表ベクトルのアドレスを並び替え、ソート順に並んだアドレスをコードブックソート表480に書き込む。
【0313】
第1の演算装置440は、判定装置450から、判定結果により探索する代表ベクトルの方向を示すup/downの情報を受け、次の探索する代表ベクトルのアドレスをコードブックソート表480に参照しに行き、アドレスを受け取る。そして、コードブックメモリ430に、そのアドレスを渡し、対応するデータ(代表ベクトルの番号iと値wi (t)など)を読み込む。
【0314】
そして、コードブックソート表480は、ソーティング装置420から受け取ったアドレスを格納する。また、コードブックソート表480は、第1の演算装置440からの次の探索する代表ベクトルの参照の指示に従って、その代表ベクトルのアドレスを第1の演算装置440に渡す。
【0315】
【発明の効果】
以上説明したように、本発明によれば、一部分の代表ベクトルを探索するだけで全探索と同じ代表ベクトルを高速に選択することができる。また、本発明によれば、従来方法と比較して、記憶するメモリが少なくて済む。また、本発明によれば、従来方法と比較して、ソートはいずれかの一次元についてのみ行えばよいので、時間が短縮できる。また、本発明によれば、従来方法と比較して、ソートされた代表ベクトルの順番を記憶しておくメモリが必要ない。また、本発明によれば、従来方法と比較して、代表ベクトルの探索が済んだかどうかを示すフラグのメモリが必要なく、入力ベクトルごとにフラグをクリアする時間も必要ない。
さらに、本発明によれば、次の探索する代表ベクトルの決め方は、一意に決まる。
【図面の簡単な説明】
【図1】本発明を適用したコードブック生成装置の構成を示すブロック図である。
【図2】上記コードブック生成装置において実行されるけるVQ−SSCを用いたLBGアルゴリズム処理を示すフローチャートである。
【図3】全探索による代表ベクトルの探索の例を示す図である。
【図4】上記符号化アルゴリズム(VQ−SSC)による代表ベクトルの探索例(探索0)を示す図である。
【図5】同じく代表ベクトルの探索例(探索1)を示す図である。
【図6】同じく代表ベクトルの探索例(探索2)を示す図である。
【図7】同じく代表ベクトルの探索例(探索3)を示す図である。
【図8】同じく代表ベクトルの探索例(探索4)を示す図である。
【図9】同じく代表ベクトルの探索例(探索5)を示す図である。
【図10】同じく代表ベクトルの探索例(探索6)を示す図である。
【図11】上記符号化アルゴリズム(VQ−SSC)の探索範囲を示す図である。
【図12】図1に示したコードブック生成装置の変形例の構成を示すブロック図である。
【図13】等ひずみ原理を例示する図である。
【図14】本発明を適用したコードブック生成装置の構成を示すブロック図である。
【図15】上記コードブック生成装置おいてVQ−SSCを用いた等ひずみ原理に基づいたMin-Max Order Compare(MMOC) 操作を加えたLBGアルゴリズムを示すフローチャートである。
【図16】上記LBGアルゴリズムにいて、ソートされた昇順の部分ひずみと降順の部分ひずみの比較処理を模式的に示す図である。
【図17】R=1とした場合のMMOC操作を加えたLBGアルゴリズムの動作の概念図である。
【図18】R=1とした場合のMMOC操作を加えたLBGアルゴリズムの実際の動作を模式的に示す図である。
【図19】図14に示したベクトル量子化器の変形例の構成を示すブロック図である。
【図20】 Kodak PHOTOCD(24枚)の6枚を示す図である。
【図21】 Kodak PHOTOCD(24枚)の6枚を示す図である。
【図22】 Kodak PHOTOCD(24枚)の6枚を示す図である。
【図23】 Kodak PHOTOCD(24枚)の6枚を示す図である。
【図24】MMOC操作(R=1)を加えたLBGアルゴリズムによる全探索とVQ−SSCによるKodak PHOTOCDに対する階調変換のシミュレーション結果を示す図である。
【図25】上記シミュレーション結果について、全探索による階調変換の実行時間(◆)とVQ−SSCによる階調変換の実行時間(●)の比較及び実行時間の改善量を示す図である。
【図26】MMOC操作(R=30)を加えたLBGアルゴリズムによる全探索とVQ−SSCによるKodak PHOTOCDに対する階調変換のシミュレーション結果を示す図である。
【図27】上記シミュレーション結果について、全探索による階調変換の実行時間(◆)とVQ−SSCによる階調変換の実行時間(●)の比較及び実行時間の改善量を示す図である。
【図28】本発明を適用したコードブック生成装置を示すブロック図である。
【図29】上記コードブック生成装置において実行されるVQ−SSCを用いた競合学習処理を示すフローチャートである。
【図30】図29に示したコードブック生成装置の変形例の構成を示すブロック図である。
【図31】本発明を適用したコードブック生成装置を示すブロック図である。
【図32】上記コードブック生成装置において実行されるVQ−SSCを用いた競合学習処理を示すフローチャートである。
【図33】図31に示したコードブック生成装置の変形例の構成を示すブロック図である。
【図34】ベクトル量子化の概念図である。
【符号の説明】
100,100’,200,200’ コードブック生成装置、110,210 入力ベクトル集合メモリ、120,220 ソーティング装置、130,230 コードブックメモリ、140,240 第1の演算装置、150,250判定装置、160,260 第2の演算装置、170,270 制御装置、180,280 コードブックソート表、262 部分ひずみソーティング装置、264 部分ひずみ比較装置、266 代表ベクトル移動装置、300,300’,400,400’ コードブック生成装置、110,210 入力ベクトル集合メモリ、120,220 ソーティング装置、310,410 入力端子、320,420 ソーティング装置、330,430 コードブックメモリ、340,440 第1の演算装置、350,450 判定装置、360,460 第2の演算装置、370,470 制御装置、380,480 コードブックソート表、462 部分ひずみソーティング装置、464 部分ひずみ比較装置、466 代表ベクトル移動装置
Claims (9)
- ソートの基準となる次元を指定し、指定された次元の代表ベクトルの値に基づいて代表ベクトルをソートすることによりコードブックを並び替えるソーティングステップと、
入力ベクトルと代表ベクトルとのひずみを計算し、次に探索する代表ベクトルのアドレスを計算する第1の演算ステップと、
現在の最小のひずみとその代表ベクトルの番号を保持しており、現在の最小のひずみ をもつ代表ベクトルと上記第1の演算ステップにより計算された代表ベクトルについてひずみを比較し、ひずみが小さい方を現在の最小のひずみとすることにより、符号化される代表ベクトルの候補を決める判定ステップと、
上記判定ステップによる判定結果に基づいて重心計算・平均ひずみ計算・部分ひずみ計算を行う第2の演算ステップと、
上記第2の演算ステップにより得られる部分ひずみを基準としてソートする部分ひずみソーティングステップと、
上記部分ひずみソーティングステップによりソートされた2つの部分ひずみの格差を比較する比較ステップと、
上記比較ステップにおける比較結果に基づいて、部分ひずみの小さい代表ベクトルを部分ひずみの大きい代表ベクトルの近傍に移動させる代表ベクトル移動ステップとを有し、
上記第1の演算ステップにおいて入力ベクトルと代表ベクトルとのひずみを計算し、次に探索する代表ベクトルのアドレスを計算する際に、最初に使用する初期代表ベクトルのアドレスを指定するとともに、ソートの基準となった次元を指示して、上記各ステップを繰り返し行い、最小のひずみを持つ代表ベクトルに入力ベクトルを符号化するベクトル量子化のコードブック生成方法。 - 上記第1の演算ステップでは、入力ベクトルと複数の代表ベクトルとのひずみを並列に計算し、次に探索する代表ベクトルのアドレスを計算し、上記判定ステップでは、上記第1の演算ステップにより得られる複数のひずみを比較して符号化される代表ベクトルの候補を決める請求項1記載のベクトル量子化のコードブック生成方法。
- 上記比較ステップでは、上記部分ひずみソーティングステップによりソートされた複数個の部分ひずみの格差を比較し、
上記代表ベクトル移動ステップでは、上記比較ステップにおける比較結果に基づいて、複数の部分ひずみの小さい代表ベクトルを部分ひずみの大きい代表ベクトルの近傍に移動させる請求項1又は請求項2のいずれか1項に記載のベクトル量子化のコードブック生成方法。 - 入力ベクトル集合を格納する入力ベクトル集合記憶手段と、
コードブックを格納するコードブック記憶手段と、
上記コードブック記憶手段からコードブックを読み出し、指定された次元を基準としてコードブックをソートし、ソートしたコードブックを上記コードブック記憶手段の指定したアドレスに書き込むソーティング手段と、
入力ベクトルと代表ベクトルのひずみを計算し、次に探索する代表ベクトルのアドレスを計算する第1の演算手段と、
現在の最小のひずみとその代表ベクトルの番号を保持しており、現在の最小のひずみをもつ代表ベクトルと上記第1の演算手段より計算された代表ベクトルについてひずみを比較し、ひずみが小さい方を新しい現在の最小のひずみとすることにより、代表ベクトルの候補を決める判定手段と、
上記判定手段による判定結果に基づいて重心計算・平均ひずみ計算・部分ひずみ計算を行う第2の演算手段と、
上記第2の演算手段により得られる部分ひずみを基準としてソートする部分ひずみソーティング手段と、
上記部分ひずみソーティング手段によりソートされた2つの部分ひずみの格差を比較する比較手段と、
上記比較手段による比較結果に基づいて、部分ひずみの小さい代表ベクトルを部分ひずみの大きい代表ベクトルの近傍に移動させる代表ベクトル移動手段と、
上記ソーティング手段、第1の演算手段、判定手段、第2の演算手段、部分ひずみソーティング手段、部分ひずみ比較手段及び代表ベクトル移動手段の処理フローを制御する制御手段とを備え、
上記制御手段は、上記ソーティング手段にソートの基準となる次元を指定し、上記第1の演算手段に、入力ベクトルと代表ベクトルとのひずみを計算して次に探索する代表ベクトルのアドレスを計算する第1の演算処理を行う際に最初に使用する初期代表ベクトルのアドレスを指定するとともに、ソートの基準となった次元を指示し、第2の演算手段に、上記判定手段による判定結果に基づいて重心計算・平均ひずみ計算・部分ひずみ計算を行う第2の演算処理を行う際に最初に使用する任意の初期コードブックの設定を指示して、上記第1の演算手段による第1の演算処理と、上記判定手段による判定処理と、上記ソーティング手段によるソーティング処理と、上記第2の演算手段による第2の演算処理と、上記部分ひずみソーティング手段による部分ひずみソーティング処理と、上記部分ひずみ比較手段による部分ひずみ比較処理と、上記代表ベクトル移動手段による代表ベクトル移動処理を繰り返し行い、最小のひずみを持つ代表ベクトルに入力ベクトルを符号化するベクトル量子化のコードブック生成装置。 - 上記第1の演算手段は、入力ベクトルと複数の代表ベクトルとのひずみを並列に計算し、次に探索する代表ベクトルのアドレスを計算し、上記判定手段は、上記第1の演算手段により得られる複数のひずみを比較して符号化される代表ベクトルの候補を決める請求項4記載のベクトル量子化のコードブック生成装置。
- 上記比較手段は、上記部分ひずみソーティングステップによりソートされた複数個の部分ひずみの格差を比較し、
上記代表ベクトル移動手段は、上記比較手段における比較結果に基づいて、複数の部分ひずみの小さい代表ベクトルを部分ひずみの大きい代表ベクトルの近傍に移動させる請求項4又は請求項5のいずれか1項に記載のベクトル量子化のコードブック生成装置。 - 上記ソーティング手段によりソートしたコードブックの並び順を格納する記憶手段をさらに備えることを特徴とする請求項4乃至請求項6のいずれか1項に記載のベクトル量子化のコードブック生成装置。
- 初期の代表ベクトルに前の入力ベクトルが符号化された代表ベクトルを指定することを特徴とする請求項4乃至請求項7のいずれか1項に記載のベクトル量子化のコードブック生成装置。
- 初期の代表ベクトルに前回の反復のときに符号化された代表ベクトルを指定することを特徴とする請求項4乃至請求項8のいずれか1項に記載のベクトル量子化のコードブック生成装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001030265A JP4590747B2 (ja) | 2001-02-06 | 2001-02-06 | ベクトル量子化のコードブック生成方法及びコードブック生成装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001030265A JP4590747B2 (ja) | 2001-02-06 | 2001-02-06 | ベクトル量子化のコードブック生成方法及びコードブック生成装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002232296A JP2002232296A (ja) | 2002-08-16 |
JP4590747B2 true JP4590747B2 (ja) | 2010-12-01 |
Family
ID=18894504
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001030265A Expired - Fee Related JP4590747B2 (ja) | 2001-02-06 | 2001-02-06 | ベクトル量子化のコードブック生成方法及びコードブック生成装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4590747B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4556120B2 (ja) * | 2005-01-07 | 2010-10-06 | ソニー株式会社 | 情報処理装置および方法、並びにプログラム |
JP2009021873A (ja) * | 2007-07-12 | 2009-01-29 | Sony Corp | ベクトル量子化装置、及び、ベクトル量子化方法 |
FR2931964A1 (fr) * | 2008-06-02 | 2009-12-04 | Centre Nat Rech Scient | Procede de denombrement des vecteurs dans les reseaux reguliers de points. |
FR2931963A1 (fr) * | 2008-06-02 | 2009-12-04 | Centre Nat Rech Scient | Procede de traitement de donnees numeriques |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02186836A (ja) * | 1989-01-13 | 1990-07-23 | Mitsubishi Electric Corp | ベクトル量子化器 |
JPH04156181A (ja) * | 1990-10-19 | 1992-05-28 | Olympus Optical Co Ltd | ベクトル量子化方法およびベクトル量子化装置 |
JPH05304478A (ja) * | 1992-04-27 | 1993-11-16 | Olympus Optical Co Ltd | ベクトル量子化コードブック作成装置 |
JPH0645946A (ja) * | 1992-07-27 | 1994-02-18 | Olympus Optical Co Ltd | ベクトル量子化コードブック作成及び探索装置 |
JPH06237179A (ja) * | 1992-12-01 | 1994-08-23 | Nippon Telegr & Teleph Corp <Ntt> | ベクトル量子化器の設計方法およびベクトル量子化器 |
JPH08279757A (ja) * | 1995-04-06 | 1996-10-22 | Casio Comput Co Ltd | 階層式ベクトル量子化装置 |
JPH08305856A (ja) * | 1995-05-01 | 1996-11-22 | Nippon Telegr & Teleph Corp <Ntt> | 画像の系統的分類方法及び装置 |
JPH10200890A (ja) * | 1997-01-09 | 1998-07-31 | Matsushita Electric Ind Co Ltd | 画像符号化方法 |
-
2001
- 2001-02-06 JP JP2001030265A patent/JP4590747B2/ja not_active Expired - Fee Related
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02186836A (ja) * | 1989-01-13 | 1990-07-23 | Mitsubishi Electric Corp | ベクトル量子化器 |
JPH04156181A (ja) * | 1990-10-19 | 1992-05-28 | Olympus Optical Co Ltd | ベクトル量子化方法およびベクトル量子化装置 |
JPH05304478A (ja) * | 1992-04-27 | 1993-11-16 | Olympus Optical Co Ltd | ベクトル量子化コードブック作成装置 |
JPH0645946A (ja) * | 1992-07-27 | 1994-02-18 | Olympus Optical Co Ltd | ベクトル量子化コードブック作成及び探索装置 |
JPH06237179A (ja) * | 1992-12-01 | 1994-08-23 | Nippon Telegr & Teleph Corp <Ntt> | ベクトル量子化器の設計方法およびベクトル量子化器 |
JPH08279757A (ja) * | 1995-04-06 | 1996-10-22 | Casio Comput Co Ltd | 階層式ベクトル量子化装置 |
JPH08305856A (ja) * | 1995-05-01 | 1996-11-22 | Nippon Telegr & Teleph Corp <Ntt> | 画像の系統的分類方法及び装置 |
JPH10200890A (ja) * | 1997-01-09 | 1998-07-31 | Matsushita Electric Ind Co Ltd | 画像符号化方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2002232296A (ja) | 2002-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lu et al. | Design of compliant mechanisms for morphing structural shapes | |
JP4590747B2 (ja) | ベクトル量子化のコードブック生成方法及びコードブック生成装置 | |
US20210350569A1 (en) | Apparatus for determining arrangement of objects in space and method thereof | |
Rous | A global approach to the search problem in surface crystallography by low-energy electron diffraction | |
Ramírez et al. | Design parameters effects on relative density of triply periodic minimal surfaces for additive manufacturing | |
JP3741544B2 (ja) | 順序回路の状態探索方法および装置並びに状態探索プログラムを記録した記録媒体 | |
CN112182819B (zh) | 一种基于赋权图的结构拓扑优化方法、系统以及可读存储介质 | |
Vanderplaats | A robust feasible directions algorithm for design synthesis | |
Wu | Optimal hole shape for minimum stress concentration using parameterized geometry models | |
US20200117838A1 (en) | Method for generating a set of shape descriptors for a set of two or three dimensional geometric shapes | |
US20220215137A1 (en) | Information processing apparatus, information processing method, and computer-readable recording medium storing information processing program | |
JP4631178B2 (ja) | ベクトル量子化方法及びベクトル量子化装置 | |
Jeong et al. | A non-uniform corner-cutting subdivision scheme with an improved accuracy | |
CN110895618A (zh) | 一种气弹簧布置布置参数的确定方法及装置 | |
Jin et al. | Adaptive diversity maintenance and convergence guarantee in multiobjective evolutionary algorithms | |
JP4479105B2 (ja) | ベクトル量子化のコードブック生成方法及びコードブック生成装置 | |
Martínez et al. | A hybridization of MOEA/D with the nonlinear simplex search algorithm | |
JP2009021873A (ja) | ベクトル量子化装置、及び、ベクトル量子化方法 | |
PEKAR et al. | Optimal Pole Placement for LTI-TDS via Some Advanced Iterative Algorithms-Part I: Theory | |
Grippo et al. | Derivative-Free Methods for Unconstrained Optimization | |
KR102593054B1 (ko) | 임베딩 모델 성능 평가 방법 및 장치 | |
US20220115085A1 (en) | Non-transitory computer-readable storage medium, structure search device, and structure search method | |
Iuliano et al. | Application of surrogate-based optimization techniques to aerodynamic design cases | |
JP2023541088A (ja) | 学習率がニアゼロである場合の勾配降下法 | |
Ghosh et al. | COIN Report 2023015 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080205 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20091209 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091215 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100208 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100601 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100722 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20100817 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100830 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130924 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130924 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |