(57)【特許請求の範囲】
【請求項１】
ソートの基準となる次元を指定し、指定された次元の代表ベクトルの値に基づいて代表ベクトルをソートすることによりコードブックを並び替えるソーティングステップと、
入力ベクトルと代表ベクトルとのひずみを計算し、次に探索する代表ベクトルのアドレスを計算する演算ステップと、
現在の最小のひずみとその代表ベクトルの番号を保持しており、現在の最小のひずみ をもつ代表ベクトルと上記演算ステップにより計算された代表ベクトルについてひずみを比較し、ひずみが小さい方を現在の最小のひずみとすることにより、符号化される代表ベクトルの候補を決める判定ステップと、
上記指定された次元を基準としてソートしたコードブックをコードブック記憶手段の指定したアドレスに書き込む記憶ステップとを有し、
上記演算ステップにおいて入力ベクトルと代表ベクトルとのひずみを計算し、次に探索する代表ベクトルのアドレスを計算する際に、最初に使用する初期代表ベクトルのアドレスを指定するとともに、ソートの基準となった次元を指示して、上記各ステップを繰り返し行い、最小のひずみを持つ代表ベクトルに入力ベクトルを符号化するベクトル量子化方法。
【請求項２】
ソートの基準となる次元を指定し、指定した次元の代表ベクトルの値に基づいて代表ベクトルをソートすることによりコードブックを並び替えるソーティングステップと、
入力ベクトルと代表ベクトルとのひずみを計算し、次に探索する代表ベクトルのアドレスを計算する演算ステップと、
現在の最小のひずみとその代表ベクトルの番号を保持しており、現在の最小のひずみ をもつ代表ベクトルと上記演算ステップにより計算された代表ベクトルについてひずみを比較し、ひずみが小さい方を現在の最小のひずみとすることにより、符号化される代表ベクトルの候補を決める判定ステップと、
上記指定された次元を基準としてソートしたコードブックをコードブック記憶手段の指定したアドレスに書き込む記憶ステップと、
ソートしたコードブックの並び順を記憶手段に書き込む記憶ステップとを有し、
上記演算ステップにおいて入力ベクトルと代表ベクトルとのひずみを計算し、次に探索する代表ベクトルのアドレスを計算する際に、最初に使用する初期代表ベクトルのアドレスを指定するとともに、ソートの基準となった次元を指示して、上記各ステップを繰り返し行い、上記判定ステップにおける判定結果に応じて、上記記憶手段に書き込まれたコードブックの並び順を参照し、上記コードブック記憶ステップにおいて、上記指定された次元を基準としてソートしたコードブックを上記コードブック記憶手段に書き込み、最小のひずみを持つ代表ベクトルに入力ベクトルを符号化するベクトル量子化方法。
【請求項３】
コードブックを記憶するコードブック記憶手段と、
上記コードブック記憶手段からコードブックを読み出し、指定された次元を基準としてコードブックをソートし、ソートしたコードブックを上記コードブック記憶手段の指定したアドレスに書き込むソーティング手段と、
入力ベクトルと代表ベクトルとのひずみを計算し、次に探索する代表ベクトルのアドレスを計算する演算手段と、
現在の最小のひずみとその代表ベクトルの番号を保持しており、現在の最小のひずみ をもつ代表ベクトルと上記演算手段により計算された代表ベクトルについてひずみを比較し、ひずみが小さい方を現在の最小のひずみとすることにより、符号化される代表ベクトルの候補を決める判定手段と、
上記ソーティング手段、演算手段及び判定手段の処理フローを制御する制御手段とを備え、
上記制御手段は、上記ソーティング手段にソートの基準となる次元を指定し、上記演算手段に、当該演算手段において入力ベクトルと代表ベクトルとのひずみを計算し、次に探索する代表ベクトルのアドレスを計算する際に、最初に使用する初期代表ベクトルのアドレスを指定するとともに、ソートの基準となった次元を指示し、上記演算手段による演算処理と、上記判定手段による判定処理と、上記ソーティング手段によるソーティング処理を繰り返し行い、最小のひずみを持つ代表ベクトルに入力ベクトルを符号化するベクトル量子化装置。
【請求項４】
上記判定手段は、さらに、ひずみの部分和の比較を行うことを特徴とする請求項３に記載のベクトル量子化装置。
【請求項５】
上記初期代表ベクトルに前の入力ベクトルが符号化された代表ベクトルを指定することを特徴とする請求項３又は請求項４のいずれか１項に記載のベクトル量子化装置。
【請求項６】
上記初期代表ベクトルに前フレームの同位置の入力ベクトルが符号化された代表ベクトルを指定して動画の画像をベクトル量子化することを特徴とする請求項５に記載のベクトル量子化装置。
【請求項７】
上記演算手段は、入力ベクトルと複数の代表ベクトルとのひずみを並列に計算し、次に探索する代表ベクトルのアドレスを計算し、上記判定手段は、複数のひずみを比較して符号化される代表ベクトルの候補を決めることを特徴とする請求項３に記載のベクトル量子化装置。
【請求項８】
コードブックを記憶するコードブック記憶手段と、
ソートされたコードブックの並び順を記憶する記憶手段と、
上記コードブック記憶手段からコードブックを読み出し、指定された次元を基準としてコードブックをソートし、ソートしたコードブックを上記コードブック記憶手段の指定したアドレスに書き込むとともに、ソートしたコードブックの並び順を上記記憶手段に書き込むソーティング手段と、
入力ベクトルと代表ベクトルとのひずみを計算し、次に探索する代表ベクトルのアドレスを計算する演算処理を行う演算手段と、
現在の最小のひずみとその代表ベクトルの番号を保持しており、現在の最小のひずみ をもつ代表ベクトルと上記演算手段により計算された代表ベクトルについてひずみを比較し、ひずみが小さい方を現在の最小のひずみとすることにより、符号化される代表ベクトルの候補を決める判定手段と、
上記ソーティング手段、演算手段及び判定手段の処理フローを制御する制御手段とを備え、
上記制御手段は、上記ソーティング手段にソートの基準となる次元を指定し、上記演算手段に、当該演算手段において入力ベクトルと代表ベクトルとのひずみを計算し、次に探索する代表ベクトルのアドレスを計算する際に、最初に使用する初期代表ベクトルのアドレスを指定するとともに、ソートの基準となった次元を指示し、上記演算手段による演算処理と、上記判定手段による判定処理と、上記ソーティング手段によるソーティング処理を繰り返し行い、最小のひずみを持つ代表ベクトルに入力ベクトルを符号化するベクトル量子化装置。
【請求項９】
上記判定手段は、さらに、ひずみの部分和の比較を行うことを特徴とする請求項８に記載のベクトル量子化装置。
【請求項１０】
上記初期代表ベクトルに前の入力ベクトルが符号化された代表ベクトルを指定することを特徴とする請求項８又は請求項９のいずれか１項に記載のベクトル量子化装置。
【請求項１１】
上記初期代表ベクトルに前フレームの同位置の入力ベクトルが符号化された代表ベクトルを指定して動画の画像をベクトル量子化することを特徴とする請求項８に記載のベクトル量子化装置。
【請求項１２】
上記演算手段は、入力ベクトルと複数の代表ベクトルとのひずみを並列に計算し、次に探索する代表ベクトルのアドレスを計算し、上記判定手段は、複数のひずみを比較して符号化される代表ベクトルの候補を決めることを特徴とする請求項８に記載のベクトル量子化装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ベクトル量子化技術に関わり、特にパターン認識・計算幾何学・画像信号・音声信号などにおけるベクトル量子化方法及びベクトル量子化装置に関するものである。
【０００２】
【従来の技術】
ベクトル量子化は、入力空間を有限個の代表ベクトルで符号化する手法である。ベクトル量子化の応用例として、パターン認識の特徴抽出、計算幾何学の最近点問題、情報の圧縮、画像や音声などの量子化などが挙げられる。
【０００３】
図２１にベクトル量子化の概念図を示す。ベクトル量子化には
（１）入力ベクトルの符号化
（２）コードブックの生成
という２つの側面をもつ。
【０００４】
ベクトル量子化の（１）入力ベクトルの符号化の手続では、入力ベクトルｘ（１０５０）に対してあらかじめ与えられているＮ個の代表ベクトル｛コードベクトルと呼ばれることもある｝からなるコードブックＷ＝｛ｗｉ∈ＲＫ：ｉ＝１，・・・，Ｎ｝（１０４０）の中から最も近い代表ベクトルｗｍｉｎを選びだし（１０６０）、その代表ベクトルの番号ｍｉｎ、又は、その代表ベクトルの値を出力する（１０７０）。
【０００５】
その際、最も近い代表ベクトルを選ぶときの測度として、非負のひずみ測度ｄ（ｘ，ｗｉ）を利用する。すなわち、代表ベクトルの番号を出力したいときの式は、次の（１）式にて表すことができる。
【０００６】
【数１】
0004631178.tif 000002
【０００７】
また、代表ベクトルの値を出力したいときの式は、次の（１）式にて表すことができる。
【０００８】
【数２】
0004631178.tif 000003
【０００９】
また、ベクトル量子化の（２）コードブックの生成では、初期コードブック（１０１０）を設定し、コードブック生成用の入力ベクトル集合（１０３０）を与えて、入力ベクトル集合に合うように代表ベクトルの値を修正することを繰り返して最適化し（１０２０）、最終的に最適なコードブック（１０４０）を得る。コードブック生成用の入力ベクトルは，（１）入力ベクトルの符号化で入力される入力ベクトルと異なっていてもかまわない。
【００１０】
上記（１）入力ベクトルの符号化は、１つの入力ベクトルに対して、全ての代表ベクトルとのひずみを計算し、最も近い代表ベクトルを選択する全探索が基本であるため、符号化に時間が非常にかかる点が問題点である。
【００１１】
この問題を解決する手法の一つとして、特開平４−１５６１８１号公報に開示されたベクトル量子化方法及びベクトル量子化装置がある。このベクトル量子化技術は、文献［中野恵一，笠原博徳：“ソートされたコードブックを用いた高速ベクトル量子化（Fast Vector Quantization Using Sorted Codebook：VQ-SC）”電子情報通信学会論文誌D-II Vol.J77-D-II No.10 pp.1984-1992,1994］に関連するものであって、ＶＱ−ＳＣは、大雑把に述べると以下のようなアルゴリズムである。
（１）代表ベクトルを各次元ごとにソートし，その順番を記憶しておく。
（２）探索が済んだ代表ベクトルかどうかをしめすフラグをクリアする。
（３）ひずみの下限値となるひずみを計算する。
（４）分枝限定法の原理に基づいて、ひずみの上限値を利用することで解の精度を向上する可能性のない代表ベクトルの探索を省略する。探索が済んだ代表ベクトルはフラグをたてる。ひずみの下限値に使われている代表ベクトルの探索が省略された場合には、ひずみの下限値を更新する。ひずみの上限値とひずみの下限値が一致するまで探索を続ける。次の探索する代表ベクトルの決め方は、ヒューリスティックである。
【００１２】
ひずみの上限値とひずみの下限値を利用することにより、コードブックの一部を調べれば全探索した場合と同じ代表ベクトルが高速に探索できる。
【００１３】
【発明が解決しようとする課題】
しかし、上記の方法には次のような問題点がある。
（１）各次元ごとに代表ベクトルをソートする必要があり、次元が高くなるとソートにかかる時間が大きくなる。
（２）各次元ごとにソートされた代表ベクトルの順番を記憶しておく必要があり、記憶しておくメモリ容量が膨大になる。
（３）各入力ベクトルごとにどの代表ベクトルの探索が済んだかどうかを示すフラグをクリアする必要があり、入力ベクトルが多いと、クリアする時間が膨大になる。また、代表ベクトルの数分、フラグのためのメモリ容量が必要である。
（４）次の探索する代表ベクトルをヒューリスティックに決めてよいため、効率の良い決定方法を考える必要がある。
【００１４】
そこで、本発明の目的は、上記の問題点を解決することができるようにしたベクトル量子化方法及びベクトル量子化装置を提供することにある。
【００１５】
【課題を解決するための手段】
ここで、Ｋ次元の入力ベクトルｘに対して、最小のひずみをもつ代表ベクトルｗｍｉｎを探索するときに、ある次元ｋに対して、次の（３）式となるような代表ベクトルｗｉ  を探索する必要はない。
【００１６】
【数３】
0004631178.tif 000004
【００１７】
しかし、式（３）は、符号化されるｗｍｉｎ  が求まっているときの条件であり、式（３）を計算することができない。また、ｋ次元に対する代表ベクトルの値は、規則正しく並んでいるわけではなく、順番がランダムな状態になっているので、探索終了条件を決めることができない。
【００１８】
そこで、本発明では、次のような方法を採用する。
（１）  いままでの探索で見つかった最小の代表ベクトルをｗｃｕｒｍｉｎとする。すなわち、探索が終了すれば最終的に得られたをｄｃｕｒｍｉｎ持つ代表ベクトルｗｃｕｒｍｉｎが最小のひずみをもつ代表ベクトルｗｍｉｎ  ＝ｗｃｕｒｍｉｎとなる。
（２）  探索を始める前に、ｋ次元の値に応じて代表ベクトルを小さい順（又は大きい順）にソートしておく。式（３）を満足する代表ベクトルが存在したら、ソートしてあるのでそれ以上先の代表ベクトルは最小のひずみを持つ代表ベクトルになる可能性は全くない。すなわち、代表ベクトルをソートをしておくことで、探索の効率を大幅に上げることができる。
【００１９】
式（３）のひずみの計算を考察すると、一般に各次元の代表ベクトルの値のとりうる範囲（レンジ）は異なるはずである。したがって、レンジが最も広いものを選ぶと探索回数は減るはずである。画像の階調変換では、Ｒ，Ｇ，Ｂはどの次元でも０〜２５５の値をとるので、どの次元を選択しても同じような回数になると思われる。
【００２０】
ソートしておくことで探索の打切り方法が決まるが、最低限の回数で探索を打ち切ることが望ましい。そのためには、一番最初に設定する最小の代表ベクトルｗｃｕｒｍｉｎの決め方が重要である。この初期の代表ベクトルの決め方次第で、探索効率が大幅に変わることが予想される。
【００２１】
２つの場合に分けて、探索する初期の代表ベクトルの決め方は、以下のように設定する方法が効率的な選択であると考えられる。
【００２２】
あらかじめ決められている代表ベクトルに入力ベクトルを符号化するとき、一般的には、隣の入力データが符号化された代表ベクトルを初期値とする。
【００２３】
静止画の場合、隣の画素どうしは同じような色を持つ可能性が高いので、隣の画素の代表ベクトルを初期値とする。
【００２４】
動画の場合、２つのやり方が考えられる。一つは静止画の場合と同様，隣の画素の代表ベクトルを初期値とする。もうひとつは，フレーム間の絵は似ていることを利用して、前フレームの同じ位置の代表ベクトルを初期値とする。
【００２５】
本発明は、ベクトル量子化方法であって、ソートの基準となる次元を指定し、指定された次元の代表ベクトルの値に基づいて代表ベクトルをソートすることによりコードブックを並び替えるソーティングステップと、入力ベクトルと代表ベクトルとのひずみを計算し、次に探索する代表ベクトルのアドレスを計算する演算ステップと、現在の最小のひずみとその代表ベクトルの番号を保持しており、現在の最小のひずみ をもつ代表ベクトルと上記演算ステップにより計算された代表ベクトルについてひずみを比較し、ひずみが小さい方を現在の最小のひずみとすることにより、符号化される代表ベクトルの候補を決める判定ステップと、上記指定された次元を基準としてソートしたコードブックをコードブック記憶手段の指定したアドレスに書き込む記憶ステップとを有し、上記演算ステップにおいて入力ベクトルと代表ベクトルとのひずみを計算し、次に探索する代表ベクトルのアドレスを計算する際に、最初に使用する初期代表ベクトルのアドレスを指定するとともに、ソートの基準となった次元を指示して、上記各ステップを繰り返し行い、最小のひずみを持つ代表ベクトルに入力ベクトルを符号化することを特徴とする。
【００２７】
また、本発明は、ベクトル量子化方法であって、ソートの基準となる次元を指定し、指定した次元の代表ベクトルの値に基づいて代表ベクトルをソートすることによりコードブックを並び替えるソーティングステップと、入力ベクトルと代表ベクトルとのひずみを計算し、次に探索する代表ベクトルのアドレスを計算する演算ステップと、現在の最小のひずみとその代表ベクトルの番号を保持しており、現在の最小のひずみ をもつ代表ベクトルと上記演算ステップにより計算された代表ベクトルについてひずみを比較し、ひずみが小さい方を現在の最小のひずみとすることにより、符号化される代表ベクトルの候補を決める判定ステップと、上記指定された次元を基準としてソートしたコードブックをコードブック記憶手段の指定したアドレスに書き込む記憶ステップと、ソートしたコードブックの並び順を記憶手段に書き込む記憶ステップとを有し、上記演算ステップにおいて入力ベクトルと代表ベクトルとのひずみを計算し、次に探索する代表ベクトルのアドレスを計算する際に、最初に使用する初期代表ベクトルのアドレスを指定するとともに、ソートの基準となった次元を指示して、上記各ステップを繰り返し行い、上記判定ステップにおける判定結果に応じて、上記記憶手段に書き込まれたコードブックの並び順を参照し、上記コードブック記憶ステップにおいて、上記指定された次元を基準としてソートしたコードブックを上記コードブック記憶手段に書き込み、最小のひずみを持つ代表ベクトルに入力ベクトルを符号化することを特徴とする。
【００２９】
本発明は、ベクトル量子化装置であって、コードブックを記憶するコードブック記憶手段と、上記コードブック記憶手段からコードブックを読み出し、指定された次元を基準としてコードブックをソートし、ソートしたコードブックを上記コードブック記憶手段の指定したアドレスに書き込むソーティング処理を行うソーティング手段と、入力ベクトルと代表ベクトルとのひずみを計算し、次に探索する代表ベクトルのアドレスを計算する演算処理を行う演算手段と、現在の最小のひずみとその代表ベクトルの番号を保持しており、現在の最小のひずみ をもつ代表ベクトルと上記演算手段により計算された代表ベクトルについてひずみを比較し、ひずみが小さい方を現在の最小のひずみとすることにより、符号化される代表ベクトルの候補を決める判定処理を行う判定手段と、上記ソーティング手段、演算手段及び判定手段の処理フローを制御する制御手段とを備え、上記制御手段は、上記ソーティング手段にソートの基準となる次元を指定し、上記演算手段に、当該演算手段において入力ベクトルと代表ベクトルとのひずみを計算し、次に探索する代表ベクトルのアドレスを計算する際に、最初に使用する初期代表ベクトルのアドレスを指定するとともに、ソートの基準となった次元を指示し、上記演算手段による上記演算処理と、上記判定手段による判定処理と、上記ソーティング手段によるソーティング処理を繰り返し行い、最小のひずみを持つ代表ベクトルに入力ベクトルを符号化することを特徴とする。
【００３１】
また、本発明は、ベクトル量子化装置であって、コードブックを記憶するコードブック記憶手段と、ソートされたコードブックの並び順を記憶する記憶手段と、上記コードブック記憶手段からコードブックを読み出し、指定された次元を基準としてコードブックをソートし、ソートしたコードブックを上記コードブック記憶手段の指定したアドレスに書き込むとともに、ソートしたコードブックの並び順を上記記憶手段に書き込むソーティング手段と、入力ベクトルと代表ベクトルとのひずみを計算し、次に探索する代表ベクトルのアドレスを計算する演算手段と、現在の最小のひずみとその代表ベクトルの番号を保持しており、現在の最小のひずみ をもつ代表ベクトルと上記演算手段により計算された代表ベクトルについてひずみを比較し、ひずみが小さい方を現在の最小のひずみとすることにより、符号化される代表ベクトルの候補を決める判定処理を行う判定手段と、上記ソーティング手段、演算手段及び判定手段の処理フローを制御する制御手段とを備え、上記制御手段は、上記ソーティング手段にソートの基準となる次元を指定し、上記演算手段に、当該演算手段において入力ベクトルと代表ベクトルとのひずみを計算し、次に探索する代表ベクトルのアドレスを計算する際に、最初に使用する初期代表ベクトルのアドレスを指定するとともに、ソートの基準となった次元を指示し、上記演算手段による演算処理と、上記判定手段による判定処理と、上記ソーティング手段によるソーティング処理を繰り返し行い、最小のひずみを持つ代表ベクトルに入力ベクトルを符号化することを特徴とする。
【００３３】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照しながら詳細に説明する。
【００３４】
本発明は、例えば図１に示すような構成のベクトル量子化器１００に適用される。
【００３５】
このベクトル量子化器１００は、入力部１１０、ソーティング装置１２０、コードブックメモリ１３０、演算装置１４０、判定装置１５０及び制御装置１６０から構成される。
【００３６】
このベクトル量子化器１００において、入力部１１０は、入力端子１０１より新しいコードブックを受け取る。そして、この入力部１１０は、コードブックを記憶するコードブックメモリ１３０に、コードブックを書き込むアドレスと新しいコードブックを与える。
【００３７】
ソーティング装置１２０は、制御装置１６０からのソートの指示とどの次元ｋを基準としてソートするかの指示を受け、コードブックメモリ１３０からコードブックを読み出し、指定された次元を基準としてコードブックをソートする。また、ソーティング装置１２０は、ソートしたコードブックをコードブックメモリ１３０の指定したアドレスに書き込む。
【００３８】
コードブックメモリ１３０は、入力部１１０から書き込むアドレスと新しいコードブックを受け取り、そのコードブックを指定されたアドレスに格納する。また、コードブックメモリ１３０は、コードブックをソーティング装置１２０に渡す。また、コードブックメモリ１３０は、ソーティング装置１２０によりソートされたコードブックと書き込むアドレスを受け取り、指定されたアドレスにコードブックを格納する。さらに、コードブックメモリ１３０は、ひずみ計算・アドレス計算を行う演算装置１４０から、アドレスを受け取り、代表ベクトルのデータ（代表ベクトルの値ｗｉ，番号ｉなど）を渡す。
【００３９】
演算装置１４０は、制御装置１６０からひずみ・アドレスの計算の指示を受け、コードブックメモリ１３０に読み込みたい代表ベクトルのアドレス（初期の代表ベクトルは制御回路から指示される）を指定して、対応するデータ（代表ベクトルの番号と値）を読み込む。また、演算装置１４０は、入力端子１０２から入力ベクトルｘを受け取り、入力ベクトルと代表ベクトルとのひずみｄ（ｘ，ｗｉ）を計算する。そして、演算装置１４０は、ひずみｄ（ｘ，ｗｉ）とデータ（代表ベクトルの番号と値）を判定装置１５０に渡す。また、演算装置１４０は、制御装置１６０からソートの基準となった次元ｋの指示を受け、ｋ次元だけのひずみｄ（ｘｋ，ｗｉｋ）も判定装置１５０に渡す。さらに、演算装置１４０は、判定装置１５０から、判定結果により探索する代表ベクトルの方向を示すｕｐ／ｄｏｗｎの情報を受け、次の探索する代表ベクトルのアドレスを計算する。なお、演算装置１４０は、探索終了を示す情報finishを受けた場合は、代表ベクトルの探索を終了する。
【００４０】
判定装置１５０は、現在の最小のひずみｄｃｕｒｍｉｎとその代表ベクトルの番号ｍｉｎを保持しており、現在の最小のひずみｄｃｕｒｍｉｎをもつｍｉｎ番の代表ベクトルと演算装置１４０により計算されたｉ番の代表ベクトルについてひずみｄ（ｘ，ｗｉ）を比較し、ひずみが小さい方を新しいｍｉｎ番、現在の最小のひずみｄｃｕｒｍｉｎとする。また、判定装置１５０は、制御装置１６０からの指示により、現在の最小のひずみを持つ代表ベクトルの番号ｍｉｎ（インデックス）、又は代表ベクトルの値を出力端子１０３に出力する。また、判定装置１５０は、制御装置１６０から判定の指示を受け、ｋ次元だけのひずみｄ（ｘｋ，ｗｉｋ）と現在の最小のひずみｄｃｕｒｍｉｎを比較し、ｄ（ｘｋ，ｗｉｋ）の方が大きければ、次に探索する代表ベクトルの方向を示すｕｐ／ｄｏｗｎの情報を変更し、また、ｕｐ／ｄｏｗｎ両方向とも調べ終わった場合には探索終了を示す情報finishを演算装置１４０に渡し、ｄ（ｘｋ，ｗｉｋ）の方が小さければ、同方向の次の代表ベクトルを調べる情報を演算装置１４０に渡す。
【００４１】
制御装置１６０は、ソーティング装置１２０、演算装置１４０及び判定装置１５０の処理フローを制御する。また、制御装置１６０は、ソーティング装置１２０にソートの基準となる次元を指定する。また、制御装置１６０は、演算装置１４０に初期代表ベクトルのアドレス（又は番号）を指定し、また、ソートの基準となった次元を指示する。さらに、制御装置１６０は、判定装置１５０に出力端子１０３に出力するのが代表ベクトルの番号なのか、代表ベクトルの値なのかを指示する。
【００４２】
このような構成のベクトル量子化器１００において、本発明では、図２のフローチャートに示す符号化アルゴリズムにしたがってソートされた代表ベクトルを用いた高速ベクトル量子化（Vector Quantization by Searching in Sirted Codebook：ＶＱ−ＳＳＣ）を行う。
【００４３】
すなわち、このベクトル量子化器１００では、先ず、ステップＦ１０１において代表ベクトルをソートするための基準の次元ｋを指定する。
【００４４】
次のステップＦ１０２では、次元ｋの代表ベクトルの値に基づいて代表ベクトルをソートする。
【００４５】
ソートされた順番の情報については、以下の２通りのやり方が考えられる。
【００４６】
（１）直接代表ベクトルの順番を入れ替えてしまう。代表ベクトルの番号を変更したくないときは、代表ベクトルの番号の情報を持つ構造体にして入れ替える。
【００４７】
直接ならべ変えているので、自分より下位の代表ベクトルの番号ｌｏｗｅｒは、自分の配列の番号−１とした配列の番号となり、自分より上位の代表ベクトルの番号ｕｐｐｅｒは、自分の配列の番号＋１とした配列の番号となる。
【００４８】
（２）ソートしたときの順番を示す配列を用意する場合、各代表ベクトルが保持すべき情報は、自分より下位の代表ベクトルの番号ｌｏｗｅｒと、自分より上位の代表ベクトルの番号ｕｐｐｅｒである。
【００４９】
ここで、上記ステップＦ１０１とステップＦ１０２は、コードブックが変わらない限り一度だけ行えばよい。
【００５０】
次のステップＦ１０３では、入力ベクトルｘと初期の代表ベクトルｗｉ  とのひずみの計算を行い、このひずみｄ（ｘ，ｗｉ）を現在の最小のひずみｄｃｕｒｍｉｎとし、番号ｉを符号化の候補として保存しておく。
【００５１】
ｄｃｕｒｍｉｎ＝ｄ（ｘ，ｗｉ）            （４）
ｍｉｎ＝ｉ                         （５）
次のステップＦ１０４では、初期の代表ベクトルｗｉの両隣の代表ベクトルの番号、すなわち、
ｌｏｗｅｒ＝下位方向の隣の代表ベクトルの番号
ｕｐｐｅｒ＝上位方向の隣の代表ベクトルの番号
を保存する。
【００５２】
次のステップＦ１０５では、入力ベクトルｘとｌｏｗｅｒ番の代表ベクトルｗｌｏｗｅｒとのひずみｄ（ｘ，ｗｌｏｗｅｒ）の計算を行い、計算途中のｄ（ｘｋ，ｗｌｏｗｅｒｋ）を保存しておく。
【００５３】
次のステップＦ１０６では、ステップＦ１０５で計算したひずみｄ（ｘ，ｗｌｏｗｅｒ）が現在の最小のひずみｄｃｕｒｍｉｎより小さいか否か、すなわち、
ｄ（ｘ，ｗｌｏｗｅｒ）＜ｄｃｕｒｍｉｎ          （６）
が成り立つか否かを判定する。もし、この（６）式が成り立つならば、次のステップＦ１０７へ進み、さもなければ、ステップＦ１０８へ移る。
【００５４】
ステップＦ１０７では、
ｄｃｕｒｍｉｎ＝ｄ（ｘ，ｗｌｏｗｅｒ）     （７）
ｍｉｎ＝ｌｏｗｅｒ              （８）
とする。
【００５５】
次のステップＦ１０８では、下位方向の探索を続けるかどうか判断する。このステップＦ１０８において、もし、
ｄ（ｘｋ，ｗｌｏｗｅｒｋ）＞ｄｃｕｒｍｉｎ    （９）
を満足するなら，下位方向の探索は終了で、ステップＦ１１０へ移り、さもなければ、次のステップＦ１０９へ進む。
【００５６】
ステップＦ１０９は、代表ベクトルの番号ｌｏｗｅｒの更新ステップであり、現在のｌｏｗｅｒ番の代表ベクトルの下位方向の隣の代表ベクトルの番号を新しいｌｏｗｅｒとして、ステップＦ１０５へ戻る。
【００５７】
ステップＦ１１０では、入力ベクトルｘとｕｐｐｅｒ番の代表ベクトルｗｕｐｐｅｒとのひずみｄ（ｘ，ｗｕｐｐｅｒ）の計算を行い、計算途中のｄ（ｘｋ，ｗｕｐｐｅｒｋ）を保存しておく。
【００５８】
次のステップＦ１１１では、ステップＦ１１０で計算したひずみｄ（ｘ，ｗｕｐｐｅｒ）が現在の最小のひずみｄｃｕｒｍｉｎより小さいか否か、すなわち、
ｄ（ｘ，ｗｕｐｐｅｒ）＜ｄｃｕｒｍｉｎ      （１０）
が成り立つか否かを判定する。もし、この（１０）式が成り立つならば、次のステップＦ１１２へ進み、さもなければ、ステップＦ１１３へ移る。
【００５９】
ステップＦ１１２では、
ｄｃｕｒｍｉｎ＝ｄ（ｘ，ｗｕｐｐｅｒ）      （１１）
ｍｉｎ＝ｕｐｐｅｒ               （１２）
とする。
【００６０】
次のステップＦ１１３では、上位方向の探索を続けるかどうか判断する。このステップＦ１１３では、もし、
ｄ（ｘｋ，ｗｕｐｐｅｒｋ）＞ｄｃｕｒｍｉｎ    （１３）
を満足するなら、上位方向の探索は終了で、ステップＦ１１５へ移り、さもなければ、次のステップＦ１１４へ進む。
【００６１】
ステップＦ１１４は、代表ベクトル番号ｕｐｐｅｒの更新ステップであり、現在のｕｐｐｅｒ番の代表ベクトルの上位方向の隣の代表ベクトルの番号を新しいｕｐｐｅｒとして、ステップＦ１１０へ戻る。
【００６２】
次のステップＦ１１５は、入力ベクトルｘを代表ベクトルｗｍｉｎに符号化する。このステップＦ１１５において、入力ベクトルｘは、最小のひずみｄｃｕｒｍｉｎを持つ番号ｍｉｎの代表ベクトルｗｍｉｎに符号化される。
【００６３】
ここで、このベクトル量子化器１００におけるベクトル量子化の符号化アルゴリズム（ＶＱ−ＳＳＣ）の動作について、例題を用いて説明する。
【００６４】
この例題では、ひずみ測度として二乗誤差ひずみ測度を用いている。
【００６５】
ｄ（ｘ，ｗ）＝（ｘ−ｗ）２               （１４）
当然、このほかのひずみ測度を用いた場合も、本発明は有効である。また、次元ごとに違うひずみ測度を用いたときも、本発明は有効である。
【００６６】
３次元の入力ベクトルｘ＝（１２，１６，１３）に対して、従来どおりすべての代表ベクトルに対してひずみを計算し、ベクトル量子化（符号化）される代表ベクトルを求めた例を図３に示す。この場合、１２個の代表ベクトルに対してひずみを計算しないと、符号化される代表ベクトルが決まらない。今回の例題では、最小ひずみ８を持つ９番の代表ベクトルｗ９＝（１４，１８，３）に符号化される。
【００６７】
これに対して、ベクトル量子化の符号化アルゴリズム（ＶＱ−ＳＳＣ）では、ｋ＝１に対して代表ベクトルをソートしてある。わかりやすいようにソートした順に代表ベクトルの番号をつけた状態にしてある。実際は、わざわざ代表ベクトルの番号をつけ直す必要ななく、自分の代表ベクトルの両隣（上位方向・下位方向）の代表ベクトルの番号を保存するようにプログラムすればよい。
【００６８】
もし、符号化される代表ベクトルが事前にわかっているならば、最小ひずみが８なので、√８以下の最大の整数、すなわち、２以下の範囲を探索すればよい。図３から、１次元で１２±２となる代表ベクトルは、（７），（８），（９）番の３個の代表ベクトルだけを調べればよい。
【００６９】
しかし、事前に符号化される代表ベクトルがわかるはずがないので、次のようなアルゴリズム（探索０〜探索６）を用いて探索をすることになる。
【００７０】
すなわち、探索０では、図４に示すように、初期の代表ベクトルを（７）番の代表ベクトルとし、ひずみｄ（ｘ，ｗ７）を計算する。
【００７１】
ｄ（ｘ，ｗ７）＝１７
ｌｏｗｅｒ＝６
ｕｐｐｅｒ＝８
そして、最小のひずみｄｃｕｒｍｉｎ＝１７とその代表ベクトルの番号ｍｉｎ＝７を保存保存する。
【００７２】
探索１では、図５に示すように、ｌｏｗｅｒ（６）番の代表ベクトルのひずみｄ（ｘ，ｗｌｏｗｅｒ）を計算する。
【００７３】
ｄ（ｘ１  ，ｗｌｏｗｅｒ１）＝９
ｄ（ｘ，ｗｌｏｗｅｒ）＝１８９
そして、ｄ（ｘ，ｗｌｏｗｅｒ）と現在の最小のひずみｄｃｕｒｍｉｎとを比較すると、ｄ（ｘ，ｗｌｏｗｅｒ）はｄｃｕｒｍｉｎよりも大きいので、最小のひずみｄｃｕｒｍｉｎはそのままの値すなわち
ｄｃｕｒｍｉｎ＝１７
ｍｉｎ＝７
を保持する。また、ｄ（ｘ１  ，ｗｌｏｗｅｒ１）は現在の最小のひずみｄｃｕｒｍｉｎよりも小さいので、次のｌｏｗｅｒ＝５の探索２に移る。
【００７４】
次の探索２では、図６に示すように、ｌｏｗｅｒ（５）番の代表ベクトルのひずみｄ（ｘ，ｗｌｏｗｅｒ）を計算する。
【００７５】
ｄ（ｘ１  ，ｗｌｏｗｅｒ１）＝９
ｄ（ｘ，ｗｌｏｗｅｒ）＝１４
そして、ｄ（ｘ，ｗｌｏｗｅｒ）と現在の最小のひずみｄｃｕｒｍｉｎとを比較すると、ｄ（ｘ，ｗｌｏｗｅｒ）はｄｃｕｒｍｉｎよりも小さいので、最小のひずみｄｃｕｒｍｉｎを更新して
ｄｃｕｒｍｉｎ＝１４
ｍｉｎ＝５
とする。また、ｄ（ｘ１  ，ｗｌｏｗｅｒ１）はｄｃｕｒｍｉｎ＝１４よりも小さいので、次のｌｏｗｅｒ＝４の探索３に移る。
【００７６】
探索３では、図７に示すように、ｌｏｗｅｒ（４）番の代表ベクトルのひずみを計算を行う。
【００７７】
ｄ（ｘ１  ，ｗｌｏｗｅｒ１）＝１６
ｄ（ｘ，ｗｌｏｗｅｒ）＝１８６
そして、ｄ（ｘ，ｗｌｏｗｅｒ）と現在の最小のひずみｄｃｕｒｍｉｎとを比較すると、ｄ（ｘ，ｗｌｏｗｅｒ）はｄｃｕｒｍｉｎよりも大きいので、最小のひずみｄｃｕｒｍｉｎはそのままの値すなわち
ｄｃｕｒｍｉｎ＝１４
ｍｉｎ＝５
を保持する。また、ｄ（ｘ１，ｗｌｏｗｅｒ１）はｄｃｕｒｍｉｎ＝１４よりも大きいので、下位方向の探索は終了し、次にｕｐｐｅｒ＝８の上位方向の探索４に移る。
【００７８】
探索４では、図８に示すように、ｕｐｐｅｒ（８）番の代表ベクトルのひずみを計算する。
【００７９】
ｄ（ｘ１，ｗｕｐｐｅｒ１）＝１
ｄ（ｘ，ｗｕｐｐｅｒ）＝４６
そして、ｄ（ｘ，ｗｕｐｐｅｒ）と現在の最小のひずみｄｃｕｒｍｉｎとを比較すると、ｄ（ｘ，ｗｌｏｗｅｒ）はｄｃｕｒｍｉｎよりも大きいので、最小のひずみｄｃｕｒｍｉｎはそのままの値すなわち
ｄｃｕｒｍｉｎ＝１４
ｍｉｎ＝５
を保持する。また、ｄ（ｘ１  ，ｗｕｐｐｅｒ１）はｄｃｕｒｍｉｎ＝１４よりも小さいので、次のｕｐｐｅｒ＝９の探索５に移る。
【００８０】
探索５では、図９に示すように、ｕｐｐｅｒ（９）番の代表ベクトルのひずみを計算する。
【００８１】
ｄ（ｘ１，ｗｕｐｐｅｒ１）＝４
ｄ（ｘ，ｗｕｐｐｅｒ）＝８
そして、ｄ（ｘ，ｗｕｐｐｅｒ）と現在の最小のひずみｄｃｕｒｍｉｎとを比較すると、ｄ（ｘ，ｗｌｏｗｅｒ）はｄｃｕｒｍｉｎよりも小さいので、最小のひずみｄｃｕｒｍｉｎを更新して、
ｄｃｕｒｍｉｎ＝８
ｍｉｎ＝９
とする。また、ｄ（ｘ１，ｗｕｐｐｅｒ１）はｄｃｕｒｍｉｎ＝９よりも小さいので、次のｕｐｐｅｒ＝１０の探索６に移る。
【００８２】
探索６では、図１０に示すように、ｕｐｐｅｒ（１０）番の代表ベクトルのひずみを計算する。
【００８３】
ｄ（ｘ１，ｗｕｐｐｅｒ１）＝９
ｄ（ｘ，ｗｕｐｐｅｒ）＝４１
そして、ｄ（ｘ，ｗｕｐｐｅｒ）と現在の最小のひずみｄｃｕｒｍｉｎとを比較すると、ｄ（ｘ，ｗｌｏｗｅｒ）はｄｃｕｒｍｉｎよりも大きいので、最小のひずみｄｃｕｒｍｉｎはそのままの値すなわち
ｄｃｕｒｍｉｎ＝８
ｍｉｎ＝９
を保持する。また、（ｘ１，ｗｕｐｐｅｒ１）はｄｃｕｒｍｉｎ＝９よりも大きいので、上位方向の探索終了する。
【００８４】
このようにして下位方向、上位方向、両方とも探索を終了し、最終的に得られた最小のひずみｄｃｕｒｍｉｎ＝８をもつｍｉｎ＝９番の代表ベクトルが入力ベクトルｘ＝（１２，１６，１３）に対する符号化される代表ベクトルである。
【００８５】
ここで、図１１より、あらかじめ符号化される代表ベクトルがわかっている場合は３個の代表ベクトルを探索すれば十分であるが、一般には無理なので初期代表ベクトルを決めて探索する必要がある。今回の場合、最小ひずみを更新しながら探索したので、７個の代表ベクトルを探索することで最小のひずみを持つ代表ベクトルを得ることができた。これが階調変換では，代表ベクトルの数が２５６個あるので、探索範囲を大幅に制限することが期待できる。
【００８６】
以上、このベクトル量子化器１００におけるベクトル量子化の符号化アルゴリズム（ＶＱ−ＳＳＣ）の動作について、例題を用いて説明したが、次に、上記ベクトル量子化器１００による静止画像の符号化のシミュレーション結果（図１２及び図１３）、及び動画像の符号化のシミュレーション結果（図１４及び図１５）について説明する。
【００８７】
上記ベクトル量子化器１００による静止画像の符号化の例題として、各８ビット（Ｒ，Ｇ，Ｂ）のフルカラーの画像を２５６色に減色する階調変換を取り上げる。コードブックは，各画像ごとに最適なものを作成してある。ソートは、Ｒ，Ｇ，Ｂそれぞれを選択したときの代表ベクトルの探索回数を示す。
【００８８】
テスト画像として、Kodak PHOTOCD に入っている図１７、図１８、図１９及び図２０に示す２４枚のＢＭＰファイルに対しても、次の２通りのやり方で２５６色に階調変換した。
（１）  図１２から、どの色を選択しても平均約２０個以下の探索で、符号化されるべき代表ベクトルを発見していることがわかる。すなわち、ソートに使う色はそれほど気にする必要はなく、どの色を選択しても同じような探索回数になる。
（２）  Ｋｏｄｏｋ  ＰＨＯＴＯＣＤの２４枚のＢＭＰファイルの適用から、探索回数が最も少ない色は絵によって異なる。ただ、Ｋｏｄａｋ  ＰＨＯＴＯＣＤの場合、赤色を基準にソートをすれば、平均として速く符号化される代表ベクトルを見つけることができることが図１２及び図１３から読みとれる。
【００８９】
また、動画像などの符号化に用いた場合も、前フレームの代表ベクトルを初期代表ベクトルに選んだり、隣の画素の代表ベクトルを初期代表ベクトルに選んだりすれば、探索する代表ベクトルの数は少なくなる。
【００９０】
シミュレーションでは，Ｆｌｏｗｅｒ  Ｇａｒｄｅｎの連続する１０枚のフレームに対して、２５６色の代表ベクトルに符号化する（シーンチェンジはない）。その２５６色の代表ベクトルは、１枚目のフレームに対して設計されたものである。初期代表ベクトルの選び方を
（１）前フレームの代表ベクトルを選択した場合、
（２）隣の画素の代表ベクトルを選択した場合、
の２通り行った。図１４に探索回数及び探索時間を示している。図１５に各フレームと探索回数の関係を示した。ただし、時間の測定は、次の環境で行った。
【００９１】
ＣＰＵ：ＰｅｎｔｉｕｍＩＩ  ４００ＭＨｚ
Ｍｅｍｏｒｙ：６４Ｍｂｙｔｅ
ＯＳ：ＷｉｎｄｏｗｓＮＴ４．０
このように、初期代表ベクトルに前フレームの画素を使った場合、探索した代表ベクトルの平均の個数が約４４個であり、隣の画素を使った場合、約２７個である。それぞれ、全探索に比べて１／５．８２、１／９．４８の探索で符号化される代表ベクトルを見つけている。今回のＦｌｏｗｅｒ  Ｇａｒｄｅｎでは、初期代表ベクトルに隣の画素を用いた方がよい結果を得ることができた。
【００９２】
また、本発明は、ひずみの部分和を用いた高速化手法を組み合わせるとより一層の効果がある。ひずみの部分和を用いた高速化手法は、次式で示されるひずみの部分和が現在の最小のひずみｄｃｕｒｍｉｎと比較して大きいときは、次の代表ベクトルを探索する。
【００９３】
【数４】
0004631178.tif 000005
【００９４】
すなわち、ひずみを最後まで求めるのではなく、計算途中のひずみと現在の最小のひずみを比較することで探索の効率をあげる手法である。このひずみの部分和を用いた高速化手法は、文献［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.］に詳述されている。
【００９５】
ここでは、上述の図１に示したベクトル量子化器１００の変形例の変形例として、図１６を参照して差分のみを説明する。
【００９６】
コードブックメモリ１３０は、コードブックとアドレスをソーティング装置１２０に渡す。
【００９７】
ソーティング装置１２０は、制御装置１６０からのソートの指示とどの次元ｋを基準としてソートするかの指示を受け、コードブックメモリ１３０からコードブックのアドレスとコードブックを読み出し、指定された次元を基準としてコードブックをソートする。そして、そのソートされた代表ベクトルの順番通りに、各代表ベクトルのアドレスを並び替え、ソート順に並んだアドレスをコードブックソート表１７０に書き込む。
【００９８】
演算装置１４０は、判定装置１５０から、判定結果により探索する代表ベクトルの方向を示すｕｐ／ｄｏｗｎの情報を受け、次の探索する代表ベクトルのアドレスをコードブックソート表１７０に参照しに行き、アドレスを受け取る。そして、コードブックメモリ１３０に、そのアドレスを指定して、対応するデータ（代表ベクトルの番号と値）を読み込む。
【００９９】
そして、コードブックソート表１７０は、ソーティング装置１２０から受け取ったアドレスを格納する。また、コードブックソート表１７０は、演算装置１４０からの次の探索する代表ベクトルの参照の指示に従って、その代表ベクトルのアドレスを演算装置１４０に渡す。
【０１００】
【発明の効果】
以上説明したように、本発明によれば、一部分の代表ベクトルを探索するだけで全探索と同じ代表ベクトルを高速に選択することができる。また、本発明によれば、従来方法と比較して、記憶するメモリが少なくて済む。また、本発明によれば、従来方法と比較して、ソートはいずれかの一次元についてのみ行えばよいので、時間が短縮できる。また、本発明によれば、従来方法と比較して、ソートされた代表ベクトルの順番を記憶しておくメモリが必要ない。また、本発明によれば、従来方法と比較して、代表ベクトルの探索が済んだかどうかを示すフラグのメモリが必要なく、入力ベクトルごとにフラグをクリアする時間も必要ない。
さらに、本発明によれば、次の探索する代表ベクトルの決め方は、一意に決まる。
【図面の簡単な説明】
【図１】本発明を適用したベクトル量子化器の構成を示すブロック図である。
【図２】上記ベクトル量子化器におけるベクトル量子化の符号化アルゴリズム（ＶＱ−ＳＳＣ）を示すフローチャートである。
【図３】全検索による代表ベクトルの探索の例を示す図である。
【図４】上記符号化アルゴリズム（ＶＱ−ＳＳＣ）による代表ベクトルの探索例（探索０）を示す図である。
【図５】同じく代表ベクトルの探索例（探索１）を示す図である。
【図６】同じく代表ベクトルの探索例（探索２）を示す図である。
【図７】同じく代表ベクトルの探索例（探索３）を示す図である。
【図８】同じく代表ベクトルの探索例（探索４）を示す図である。
【図９】同じく代表ベクトルの探索例（探索５）を示す図である。
【図１０】同じく代表ベクトルの探索例（探索６）を示す図である。
【図１１】上記符号化アルゴリズム（ＶＱ−ＳＳＣ）の探索範囲を示す図である。
【図１２】上記符号化アルゴリズム（ＶＱ−ＳＳＣ）による静止画像の符号化のシミュレーション結果（ソートにＲ，Ｇ，Ｂそれぞれを選択したときの代表ベクトルの探索回数の比較）を示す図である。
【図１３】  Kodak PHOTOCD に対する階調変換の代表ベクトルの探索回数を示す図である。
【図１４】動画像(Flower Garden) の符号化を示す図である。
【図１５】動画像(Flower Garden) に対して、１フレーム目のコードブックを利用して階調変換したときの探索回数を示す図である。
【図１６】本発明を適用したベクトル量子化器の変形例を示すブロック図である。
【図１７】  Kodak PHOTOCD（２４枚）の６枚を示す図である。
【図１８】  Kodak PHOTOCD（２４枚）の６枚を示す図である。
【図１９】  Kodak PHOTOCD（２４枚）の６枚を示す図である。
【図２０】  Kodak PHOTOCD（２４枚）の６枚を示す図である。
【図２１】ベクトル量子化の概念図である。
【符号の説明】
１００，２００  ベクトル量子化器、１０１，１０２  入力端子、１０３  出力端子、１１０  入力部、１２０  ソーティング装置、１３０  コードブックメモリ、１４０  演算装置、１５０  判定装置、１６０  制御装置、１７０  コードブックソート表
【図１】
0004631178.tif 000006
【図２】
0004631178.tif 000007
【図３】
0004631178.tif 000008
【図４】
0004631178.tif 000009
【図５】
0004631178.tif 000010
【図６】
0004631178.tif 000011
【図７】
0004631178.tif 000012
【図８】
0004631178.tif 000013
【図９】
0004631178.tif 000014
【図１０】
0004631178.tif 000015
【図１１】
0004631178.tif 000016
【図１２】
0004631178.tif 000017
【図１３】
0004631178.tif 000018
【図１４】
0004631178.tif 000019
【図１５】
0004631178.tif 000020
【図１６】
0004631178.tif 000021
【図１７】
0004631178.tif 000022
【図１８】
0004631178.tif 000023
【図１９】
0004631178.tif 000024
【図２０】
0004631178.tif 000025
【図２１】
0004631178.tif 000026