(57)【要約】【課題】  データ値が急激に変化するパターンのデータ、例えば文字画像のデータに対して汎用性の高いコードブックを実現できるようにする。【解決手段】  コードベクトルを構成するデータ列において、データ列の各データがとり得る値の最大値または最小値が占める割合を設定し、設定された割合に従ってデータ列を構成する任意のデータに上記最大値または最小値を割り当てるとともに、最大値または最小値を割り当てたデータ以外のデータにそれぞれ最小値または最大値を割り当てることによってコードベクトルのデータ列を作成する。【選択図】  図１０
2005012824.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つ以上のデータを有するデータ列であるコードベクトルの集合から成り、ベクトル量子化で用いられるコードブックを作成する方法において、
上記コードベクトルを構成するデータ列において、上記データ列の各データがとり得る値の最大値または最小値が占める割合を設定し、上記設定された割合に従って上記データ列を構成する任意のデータに上記最大値または最小値を割り当てるとともに、上記最大値または最小値を割り当てたデータ以外のデータにそれぞれ最小値または最大値を割り当てることによって上記コードベクトルのデータ列を作成することを特徴とするベクトル量子化で用いるコードブックの作成方法。
【請求項２】
上記最小値が割り当てられたデータの配列状態に応じて、所定のデータに対して中間値を割り当てることを特徴とする請求項１に記載のベクトル量子化で用いるコードブックの作成方法。
【請求項３】
少なくとも１つ以上のデータを有するデータ列であるコードベクトルの集合から成り、ベクトル量子化で用いられるコードブックを作成する装置において、
上記コードベクトルを構成するデータ列において、上記データ列の各データがとり得る値の最大値または最小値が占める割合を設定する割合設定手段と、
上記設定された割合に従って、上記データ列を構成する任意のデータに上記最大値または最小値を割り当てるとともに、上記最大値または最小値を割り当てたデータ以外のデータにそれぞれ最小値または最大値を割り当てることによって上記コードベクトルのデータ列を作成するコードベクトル作成手段とを備えたことを特徴とするベクトル量子化で用いるコードブックの作成装置。
【請求項４】
上記コードベクトル作成手段は、上記最小値が割り当てられたデータの配列状態に応じて、所定のデータに中間値を割り当てることを特徴とする請求項３に記載のベクトル量子化で用いるコードブックの作成装置。
【請求項５】
少なくとも１つ以上のデータを有するデータ列であるコードベクトルの集合から成り、ベクトル量子化で用いられるコードブックを作成する手順のプログラムを記憶した記録媒体であって、
上記コードベクトルを構成するデータ列において、上記データ列の各データがとり得る値の最大値または最小値が占める割合を設定し、上記設定された割合に従って上記データ列を構成する任意のデータに上記最大値または最小値を割り当てるとともに、上記最大値または最小値を割り当てたデータ以外のデータにそれぞれ最小値または最大値を割り当てることによって上記コードベクトルのデータ列を作成する手順をコンピュータに実行させるためのプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項６】
上記最小値が割り当てられたデータの配列状態に応じて、所定のデータに対して中間値を割り当てる手順を更にコンピュータに実行させるためのプログラムを記録したことを特徴とする請求項５に記載のコンピュータ読み取り可能な記録媒体。
【請求項７】
少なくとも１つ以上のデータを有するデータ列であるコードベクトルの集合から成り、ベクトル量子化で用いられるコードブックであって、上記コードベクトルを構成するデータ列において、上記データ列の各データがとり得る値の最大値または最小値が占める割合に従って、上記データ列を構成する任意のデータに上記最大値または最小値を割り当てるとともに、上記最大値または最小値を割り当てたデータ以外のデータにそれぞれ最小値または最大値を割り当て、上記最小値が割り当てられたデータの配列状態に応じて、所定のデータに対して中間値を割り当てることによって１つのコードベクトルとするデータ構造を有するコードブックが記録されたコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ベクトル量子化で用いるコードブックの作成方法および装置、更にはこれらの処理を行うためのプログラムや所定のデータ構造を有するコードブックを記憶した記録媒体に関するものである。
【背景技術】
【０００２】
従来、データ圧縮の手法が種々提案されている。その中で、圧縮データの伸長処理を非常に簡単に行うことが可能なデータ圧縮アルゴリズムの１つとして、「ベクトル量子化」という手法が良く知られている。このアルゴリズムは、古くから信号処理の分野で知られており、特に、画像信号や音声信号のデータ圧縮、あるいはパターン認識に応用されてきた。
【０００３】
このベクトル量子化では、ある大きさ（例えば４×４画素のブロック）の画素パターン（コード）を幾つか用意しておき、それぞれにユニークな番号などを与える（この集合体を「コードブック」という）。そして、例えば２次元配列の画像データ中から同じ大きさ（例えば４×４画素）のブロックを順次取り出し、それと最も似通ったパターンをコードブック中から見つけ出して、そのパターンの番号を当該ブロックに当てはめるというデータ圧縮を行う。ベクトル量子化では、１つのブロック内のデータ列が１つのベクトルに対応する。
【０００４】
このようにコード化された圧縮データの受信側あるいは伸長側では、各ブロック毎に番号に対応するパターンをコードブックの中から取り出すだけで、元の画像を再現することができる。したがって、伸長側では、コードブックさえ受け取っているか、あるいはあらかじめ保持していれば、特に特殊な演算は必要としないため、非常に簡単なハードウェアで元の画像を再生することが可能となる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述のようなベクトル量子化を実行する上で、必ず必要となるのがコードブックの作成である。そして、ベクトル量子化の特性上、再現される再生画像の良否は、使用するコードブックの良否と密接に関係している。したがって、例えば画像のデータ圧縮を行う際に、高い圧縮率を保持したまま高画質の再生画像を得るようにするためには、このコードブックとしていかに性能の良いものを作成するかが課題となっている。
【０００６】
従来、コードブックの最適化の手法としては、Kohonen の自己組織化マップの手法などを始めとして幾つかの手法が知られている。これらの手法では、サンプル画像などを用いて適当な数式処理を行うことにより、コードブックの最適化を図るものである。しかしながら、従来の最適化技術は何れも、得られるコードブックは、最適化の際に使用したデータに対してのみ有用なコードブックとなってしまうという問題があった。
【０００７】
すなわち、例えば、ある人の顔の画像データを用いて最適化されたコードブックは、その最適化に用いた画像に対しては最良のコードブックとなるが、他の画像に対しては必ずしも最良のコードブックになるとは限らない。したがって、例えば、そのコードブックを他の人の顔の画像データに対して用いてデータ圧縮を実施すると、圧縮データから再生した画像の画質は低下することになる。
【０００８】
さらに、最適化に用いた画像と同じ"人の顔"という分類に含まれる画像に対しては、再生画像として比較的良好な画質が得られても、風景や文字といった異なる分類の画像に対しては、画質が劣化してしまうことが多い。つまり、コードブックに含まれているパターンが画像によって全く異なっているため、汎用性の低いコードブックになってしまうという問題があった。
【０００９】
また、上記従来の最適化技術では、最適化されたコードブック中にどのようなパターンが含まれているのか分からないという問題もあった。
【００１０】
本発明は、このような問題を解決するために成されたものであり、データ値が急激に変化するパターンのデータ、例えば文字画像のデータに対して汎用性の高いコードブックを実現できるようにすることを第１の目的とする。
また、本発明は、最適化されたコードブック中にどのようなパターンが含まれているのかを容易に認識できるようにすることを第２の目的とする。
【課題を解決するための手段】
【００１１】
本発明によるベクトル量子化で用いるコードブックの作成方法は、少なくとも１つ以上のデータを有するデータ列であるコードベクトルの集合から成り、ベクトル量子化で用いられるコードブックを作成する方法において、上記コードベクトルを構成するデータ列において、上記データ列の各データがとり得る値の最大値または最小値が占める割合を設定し、上記設定された割合に従って上記データ列を構成する任意のデータに上記最大値または最小値を割り当てるとともに、上記最大値または最小値を割り当てたデータ以外のデータにそれぞれ最小値または最大値を割り当てることによって上記コードベクトルのデータ列を作成することを特徴とする。ここで、上記最小値が割り当てられたデータの配列状態に応じて、所定のデータに対して中間値を割り当てるようにしても良い。
本発明によるベクトル量子化で用いるコードブックの作成装置は、少なくとも１つ以上のデータを有するデータ列であるコードベクトルの集合から成り、ベクトル量子化で用いられるコードブックを作成する装置において、上記コードベクトルを構成するデータ列において、上記データ列の各データがとり得る値の最大値または最小値が占める割合を設定する割合設定手段と、上記設定された割合に従って、上記データ列を構成する任意のデータに上記最大値または最小値を割り当てるとともに、上記最大値または最小値を割り当てたデータ以外のデータにそれぞれ最小値または最大値を割り当てることによって上記コードベクトルのデータ列を作成するコードベクトル作成手段とを備えたことを特徴とする。ここで、上記コードベクトル作成手段は、上記最小値が割り当てられたデータの配列状態に応じて、所定のデータに中間値を割り当てるようにしても良い。
本発明によるコンピュータ読み取り可能な記録媒体は、少なくとも１つ以上のデータを有するデータ列であるコードベクトルの集合から成り、ベクトル量子化で用いられるコードブックを作成する手順のプログラムを記憶した記録媒体であって、上記コードベクトルを構成するデータ列において、上記データ列の各データがとり得る値の最大値または最小値が占める割合を設定し、上記設定された割合に従って上記データ列を構成する任意のデータに上記最大値または最小値を割り当てるとともに、上記最大値または最小値を割り当てたデータ以外のデータにそれぞれ最小値または最大値を割り当てることによって上記コードベクトルのデータ列を作成する手順をコンピュータに実行させるためのプログラムを記録したことを特徴とする。
また、本発明による他のコンピュータ読み取り可能な記録媒体は、少なくとも１つ以上のデータを有するデータ列であるコードベクトルの集合から成り、ベクトル量子化で用いられるコードブックであって、上記コードベクトルを構成するデータ列において、上記データ列の各データがとり得る値の最大値または最小値が占める割合に従って、上記データ列を構成する任意のデータに上記最大値または最小値を割り当てるとともに、上記最大値または最小値を割り当てたデータ以外のデータにそれぞれ最小値または最大値を割り当て、上記最小値が割り当てられたデータの配列状態に応じて、所定のデータに対して中間値を割り当てることによって１つのコードベクトルとするデータ構造を有するコードブックが記録されたことを特徴とする。
【発明の効果】
【００１２】
本発明によれば、ベクトルを構成するデータ列において、データ列の各データがとり得る値の最大値または最小値が占める割合を設定し、設定された割合に従って上記データ列を構成する任意のデータに上記最大値または最小値を割り当てるとともに、上記最大値または最小値を割り当てたデータ以外のデータにそれぞれ最小値または最大値を割り当てることによって１つのコードベクトルを作成するようにしたので、少なくともデータ値が急激に変化するパターンのデータ、例えば文字画像のデータに対しては汎用性の高いコードブックを容易に作成することができる。また、作成されたコードブック中にどのようなパターンが含まれているのかを容易に認識することもできる。
【００１３】
以上のように、本発明によれば、所望の値をコードベクトルのデータに与えることで、単調に変化するデータや急激に変化するデータを含む種々のデータに対応できる汎用性の高いコードブックを実現することができる。そして、本発明により作成したコードブックを用いることにより、種々の画像について、高い圧縮率であっても高品位の画像を再生できる、汎用性の高いデータ圧縮・伸長システムを実現することが可能となる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の一実施形態を図面に基づいて説明する。
（第１の実施形態）
第１の実施形態では、例えば顔画像用のコードブックを作成する装置および方法について説明する。図１は、本実施形態によるコードブック作成装置の構成例を示す機能ブロック図であり、図２は、本実施形態によるコードブック作成装置の動作を示すフローチャートである。また、図３は、本実施形態による顔画像用のコードブックの作成方法を説明するための概念図である。
【００１５】
一般に、顔画像は画素値が全体的に滑らかに変化するパターンが大半を占めており、その変化は単調で、変化量は非常に小さいものである。そこで、本実施形態では、顔画像用コードブックの典型的なコードパターンとして、図３に示すように、８つの方向に単調に変化するパターンを作成することとした。
【００１６】
すなわち、例えば４画素×４画素のブロックから成る各画素値の集合をコードブック中の１つのベクトル（以下、コードベクトルと言う）とし、ブロックのエッジ部分（上下左右の各辺および四隅の各点）の何れかを始点として、ブロック内の画素値（例えば輝度値）が徐々に変化するパターンを作成する。なお、ここでは一例として４×４画素単位のコードベクトルを作成しているが、この大きさに限定されるものではない。
【００１７】
図３（ａ）において、パターン１（図では丸付き数字で示す）は、ブロックの左辺を始点として、縦１列を１単位として輝度値が右辺に向かってＡ→Ｂ→Ｃ→Ｄのように徐々に大きくなっていくパターンである。変化の度合いは、例えば図３（ｂ）に示すように、１画素ごとに輝度値で２０ずつ変化させていくものとする。すなわち、ブロック内の最左列の輝度値をＫとすると、２列目、３列目、最右列の輝度値はそれぞれＫ＋２０、Ｋ＋４０、Ｋ＋６０となる。
【００１８】
本実施形態では、この変化の度合いとして輝度値で２０を最大とし、度合いを例えば１０、５、２、１と様々に変えてパターンを生成する。さらに、変化の始点となる画素の輝度値Ｋは、とり得る最小値と最大値を与えてその間にわたって適宜分散して与える。これにより、パターン１のようにブロック内で左から右に向かって輝度値が徐々に変化していくパターンにもバリエーションを持たせてある。なお、徐々に変化する輝度値のステップ幅は、上述した例に限定されるものではない。
【００１９】
ここでは図３（ａ）中のパターン１についてのみ詳しく説明したが、他のパターン２〜８（図では丸付き数字で示す）についても同様である。ちなみに、パターン２はブロックの右辺を始点として、縦１列を１単位として輝度値が左辺に向かって徐々に大きくなっていくパターン、パターン３はブロックの下辺を始点として、横１列を１単位として輝度値が上辺に向かって徐々に大きくなっていくパターン、パターン４はブロックの上辺を始点として、横１列を１単位として輝度値が下辺に向かって徐々に大きくなっていくパターンである。
【００２０】
また、パターン５はブロックの左上角を始点として、斜め１列を１単位として輝度値が右下角に向かって徐々に大きくなっていくパターン、パターン６はブロックの右上角を始点として、斜め１列を１単位として輝度値が左下角に向かって徐々に大きくなっていくパターン、パターン７はブロックの左下角を始点として、斜め１列を１単位として輝度値が右上角に向かって徐々に大きくなっていくパターン、パターン８はブロックの右下角を始点として、斜め１列を１単位として輝度値が左上角に向かって徐々に大きくなっていくパターンである。これらのパターン５〜８では、輝度値が７段階にわたって徐々に変化していく。
【００２１】
次に、上記図３に示したようなコードベクトルを作成する装置の機能構成およびその動作を、図１に示すブロック図および図２に示すフローチャートを用いて説明する。
図２において、まずステップＳ１で、例えば４×４画素単位のブロックを幾つかのグループ（グループ数Ｎ）に分類する。例えば、図３（ａ）に示したパターン１のコードベクトルを作成する場合は、縦１列を１つのグループとしてＡ〜Ｄの４つのグループに分ける。
【００２２】
このグループ分けを行う際には、まず図１の始点設定部１を用いて、ブロック内のどこを始点にするかを設定する。例えば図３（ａ）のパターン１を作成する場合は、ブロック内の左辺４つの画素（グループＡ）を始点として設定する。なお、この始点設定部１は、例えばキーボードやマウス等の入力デバイスによって構成し、ユーザが任意の始点を設定するようにしても良いし、図３（ａ）に示した８つのパターン１〜８を順に作成するべく、装置自身が自動的に始点を設定するように構成しても良い。
【００２３】
グループ化部２は、始点設定部１によってどこが始点として設定されたかに応じて、グループ分けを行う。例えば、図３（ａ）のパターン１やパターン２を作成する場合は、縦方向の１列を１つのグループとしてグループ分けを行い、パターン３やパターン４を作成する場合は、横方向の１列を１つのグループとしてグループ分けを行う。また、パターン５〜８を作成する場合は、斜め方向の１列を１つのグループとしてグループ分けを行う。
【００２４】
次に、ステップＳ２で、図１の増分設定部３を用いて、隣り合うグループ間の輝度値の増分（step）を設定する。なお、この増分設定部３も、例えばキーボードやマウス等の入力デバイスによって構成し、ユーザが任意の増分を設定するようにしても良いし、あらかじめ決められたデフォルト値を装置が自動的に設定するように構成しても良い。また、このステップＳ２では、処理済のグループ数をカウントするためのカウント値ｉを０に初期化する処理も行う。
【００２５】
次に、ステップＳ３では、図１の始点輝度値設定部４により、上記ブロック内の始点の輝度値を設定する。ここで始点の輝度値を与えるときは、例えば、
０〜（最大輝度値（＝２５５）−（Ｎ−１）×step）
の間をｎ等分し、それぞれの等分値を始点の輝度値として夫々設定する。なお、ここでは、等分値を与えているが、上記０〜（２５５−（Ｎ−１）×step）の範囲内であれば、必ずしも等分値である必要はない。また、ここでは演算によって複数の輝度値を与えているが、上記の範囲内でユーザが自分の判断で始点の輝度値を任意に入力するようにしても良い。
【００２６】
このようにして始点の輝度値、輝度の増分などの必要な情報が設定されると、それらの情報が図１のコードブック作成部５に与えられる。コードブック作成部５は、図２のステップＳ４以降の処理を実行することにより、１つのコードベクトルを作成する。すなわち、ステップＳ３の処理までで、１つのコードベクトル中の始点となる輝度値が設定されたので、次のステップＳ４では、始点の隣りのグループに処理を移すとともに、カウント値ｉを１つ増やす。
【００２７】
そして、ステップＳ５でカウント値ｉがグループ数Ｎの値よりも小さいかどうかを判断し、小さい場合は、未処理のグループが残っているということなのでステップＳ６に進み、現在のグループに対して、（始点のグループの輝度値＋ｉ×step）で計算される輝度値を与える。また、カウント値ｉを１つ増やしてステップＳ５に戻り、未処理のグループがなくなるまで同様の処理を繰り返す。
【００２８】
全てのグループに対して輝度値を与え終わると、始点から終点に向かってグループ毎に徐々に輝度値が大きくなっていくパターンのコードベクトルが生成されたことになる。この場合は、ステップＳ７に進み、そのとき生成した１つのコードベクトルを図１のコードブックデータメモリ６に格納する。
【００２９】
以上のように、図２に示したフローチャートの処理が１回終わると、１つのコードベクトルが作成され、それがコードブックデータメモリ６に格納される。このような処理を、ブロック内の始点の位置、始点の輝度値および増分の値を様々に変えながら複数回行うことにより、図３（ａ）に示したような８つのパターン１〜８のコードベクトルが、異なる輝度値で複数生成されることになる。これら複数のコードベクトルの集合が顔画像用のコードブックとなる。コードブックサイズは、例えば５１２である。
【００３０】
図４は、本実施形態の手法により作成したサイズ５１２のコードブックを使用して、５つの顔画像に対してベクトル量子化（ＶＱ）処理を行った後、それを同じコードブックを用いて復元した各画像のＰＳＮＲ（Peak signal to noise ratio）特性を示す図である。参考のために、それぞれの画像を用いてKohonen の自己組織化マップの手法によりコードブックを個別に最適化し、それぞれのコードブックを使って各画像にＶＱ処理をした後で、ＶＱ時に使用したのと同じそれぞれのコードブックを使って復元した各画像のＰＳＮＲ特性も示した。
【００３１】
この図４の結果から明らかなように、本実施形態の手法により作成した１つのコードブックを用いた場合に得られるＰＳＮＲ特性は、Kohonen のアルゴリズムにより作成した５つのコードブックを用いた場合に得られるＰＳＮＲ特性に匹敵するものとなっている。このように、本実施形態によれば、たった１つのコードブックでも、それぞれの顔画像に対してKohonen のアルゴリズムで最適に作成した場合のＰＳＮＲ特性とほぼ同等な特性が得られており、極めて汎用性の高いコードブックを作成できていることが確認される。
【００３２】
以上のように、第１の実施形態によれば、１つのコードブックだけで種々の顔画像に対応することが可能な汎用性の高いコードブックを得ることができる。また、本実施形態においては、あらかじめ決められた所定の演算パターンに従って個々のコードベクトルを作成しているので、最適化されたコードブック中にどのようなパターンが含まれているのかを容易に認識することもできる。
【００３３】
なお、上記実施形態では、ブロック内の始点から終点に向かって輝度値が徐々に大きくなるパターンを生成したが、これとは逆に、輝度値が徐々に小さくなるパターンを生成するようにしても良い。
また、本実施形態では変化の度合いの最大値を２０としたが、必ずしも２０を用いる必要はなく、例えば４０や１０などの任意の値を適宜与えてやれば良い。また、コードブックサイズも５１２である必要はない。
【００３４】
（第２の実施形態）
第２の実施形態では、例えば風景画像用のコードブックを作成する装置および方法について説明する。図５は、本実施形態によるコードブック作成装置の構成例を示す機能ブロック図であり、図６は、本実施形態によるコードブック作成装置の動作を示すフローチャートである。また、図７は、本実施形態による風景画像用のコードブックの作成方法を説明するための概念図である。
【００３５】
風景画像を調べたところ、顔画像の典型パターンと同様に画素値が単調に変化するパターンが多く見受けられるが、その変化の度合いが非常に大きなものが多く含まれていることが分かった。そこで、本実施形態では、ブロック内で輝度値が徐々に変化し、かつ、輝度値のダイナミックレンジをほぼ全範囲にわたって使用するパターンのコードベクトルを作成することとした。
【００３６】
すなわち、ブロックの四隅の何れかを始点とし、その対角側を終点として輝度値が徐々に変化するパターンを使い、ブロック内を例えば５つの領域に分けて定義する。一方、２５６レベルから成る輝度値のダイナミックレンジを５つの範囲に分けて定義する。そして、ブロック内のそれぞれの領域の輝度値をそれぞれのレベル範囲内で適宜与えることによって、風景用のパターンを作成する。本実施形態では、このような風景用パターンとして、ブロックの四隅を始点として４つの方向に輝度値が徐々に変化するパターンを作成する。
【００３７】
図７（ａ）は、ブロックの左上角を始点として、輝度値が右下角に向かって徐々に大きくなっていくパターンを示している。この図７（ａ）に示すように、４画素×４画素単位のブロックを斜め方向に５つの領域Ａ〜Ｅに分けて定義する。一方、図７（ｂ）に示すように、０〜２５５の輝度値のダイナミックレンジを上記５つの領域Ａ〜Ｅに対応して５つの範囲に分けて定義する。
【００３８】
この例では、領域Ａに対して輝度値０〜６３、領域Ｂに対して輝度値６３〜９５、領域Ｃに対して輝度値９５〜１５９、領域Ｄに対して輝度値１５９〜１９１、領域Ｅに対して輝度値１９１〜２５５を定義する。そして、ブロック内のそれぞれの領域Ａ〜Ｅの輝度値として、それぞれに割り当てられたレベルの範囲に属する値を適宜選んで与えることにより、風景用のパターンを作成する。
【００３９】
次に、上記図７に示したようなコードベクトルを作成する装置の機能構成およびその動作を、図５に示すブロック図および図６に示すフローチャートを用いて説明する。
図６において、まずステップＳ１１で、例えば４×４画素単位のブロックを幾つかのグループ（グループ数Ｎ）に分類する。例えば、図７（ａ）に示したパターンのコードベクトルを作成する場合は、ブロック内の各画素をＡ〜Ｅの５つのグループに分ける。
【００４０】
このグループ分けを行う際には、まず図５の始点設定部１１を用いて、ブロック内のどこを始点にするかを設定する。例えば図７（ａ）のパターンを作成する場合は、ブロック内の左上角の３画素を始点として設定する。なお、この始点設定部１１は、例えばキーボードやマウス等の入力デバイスによって構成し、ユーザが任意の始点を設定するようにしても良いし、４つの方向に変化するパターンを順に作成するべく、装置が自動的に始点を設定するように構成しても良い。グループ化部１２は、始点設定部１１によってどこが始点として設定されたかに応じて、グループ分けを行う。
【００４１】
次に、ステップＳ１２で、図５のダイナミックレンジ分割部１３を用いて、上記グループ化したＮ個の領域に対応して、輝度値のダイナミックレンジをＮ個（Ｓ0 ，Ｓ1 ，…，ＳN-1 ）に分ける。また、このステップＳ１２では、処理済のグループ数をカウントするためのカウント値ｉを０に初期化する処理も行う。このようにしてブロックのグループ化やダイナミックレンジの分割が行われると、それらの情報が図１のコードブック作成部１４に与えられる。
【００４２】
コードブック作成部１４は、図６のステップＳ１３以降の処理を実行することにより、１つのコードベクトルを作成する。すなわち、ステップＳ１３では、始点となるグループ（図７の例ではグループＡ）に対して、そのグループに対応する輝度のレベル範囲Ｓ0 内に属する何れかの輝度値を設定する。次のステップＳ１４では、始点の隣りのグループ（図７の例ではグループＢ）に処理を移すとともに、カウント値ｉを１つ増やす。
【００４３】
そして、ステップＳ１５でカウント値ｉがグループ数Ｎの値よりも小さいかどうかを判断し、小さい場合は、未処理のグループが残っているということなのでステップＳ１６に進み、現在のグループに対して、そのグループに対応する輝度のレベル範囲Ｓi 内に属する何れかの輝度値を設定する。また、カウント値ｉを１つ増やしてステップＳ１５に戻り、未処理のグループがなくなるまで同様の処理を繰り返す。
【００４４】
全てのグループに対して輝度値を与え終わると、始点から終点に向かってグループ毎に徐々に輝度値が大きくなっていくパターンのコードベクトルが生成されたことになる。この場合は、ステップＳ１７に進み、そのとき生成した１つのコードベクトルを図５のコードブックデータメモリ１５に格納する。
【００４５】
以上のように、図６に示したフローチャートの処理が１回終わると、１つのコードベクトルが作成され、それがコードブックデータメモリ１５に格納される。このような処理を、ブロック内の始点の位置、各領域の画素に与える輝度値を様々に変えながら複数回行うことにより、４つの方向に変化するパターンのコードベクトルが、異なる輝度値で複数生成されることになる。これら複数のコードベクトルの集合が風景画像用のコードブックとなる。
【００４６】
なお、ここでは図示を省略しているが、本実施形態で作成したコードブックを第１の実施形態と同様に数種類の風景画像に対して適用したところ、それぞれの風景画像に対してKohonen のアルゴリズムで最適に作成したコードブックのＰＳＮＲ特性とほぼ同等な特性が得られ、比較的良好なＰＳＮＲ特性を得ることができた。
【００４７】
以上のように、第２の実施形態によれば、１つのコードブックだけで種々の風景画像に対応することが可能な汎用性の高いコードブックを得ることができる。また、本実施形態においては、あらかじめ決められた所定のパターンに従って個々のコードベクトルを作成しているので、最適化されたコードブック中にどのようなパターンが含まれているのかを容易に認識することもできる。
【００４８】
なお、上記実施形態では、ブロック内の始点から終点に向かって輝度値が徐々に大きくなるパターンを生成したが、これとは逆に、輝度値が徐々に小さくなるパターンを生成するようにしても良い。
また、本実施形態では、ブロック内の領域を５つに区切ったが、これはコードベクトルを５つの領域に分けただけであって、５つである必要はない。
【００４９】
（第３の実施形態）
第３の実施形態では、例えば文字が入った画像用のコードブックを作成する装置および方法について説明する。図８は、本実施形態によるコードブック作成装置の構成例を示す機能ブロック図であり、図９は、本実施形態によるコードブック作成装置の動作を示すフローチャートである。また、図１０は、本実施形態による文字画像用のコードブックの作成方法を説明するための概念図である。
【００５０】
文字が入った画像を調べたところ、非常に変化に富んだパターンが大半を占めていることが分かった。また、輝度値の変化も２５６レベルのダイナミックレンジをフルに使い切るものがほとんどであった。そこで、本実施形態では、文字画像用のコードベクトルとして、図１０に示すように４つの典型的なパターンのベクトルを作成することとした。
【００５１】
１つ目のパターンは、図１０（ａ）に示すように、４画素×４画素の背景白パターン（最大輝度値のパターン）に対して、１×１，１×２，１×３，１×４，２×２，２×３，２×４の７種類の黒パターン（最小輝度値のパターン）を適宜埋め込んだパターンである。２つ目のパターンは、図１０（ｂ）に示すように、ブロック内において斜線状に黒点を埋め込んだパターンである。
【００５２】
３つ目のパターンは、図１０（ｃ）に示すように、黒点を十字状に交わるように埋め込んだパターンである。また、４つ目のパターンは、図１０（ｄ）に示すように、黒点で成る線を途中で折れ曲がったように埋め込んだパターンである。さらに、これらのパターンにおいて、ブロック内における黒点の占め方が直線的であるか否かに応じて、黒点に隣接する画素値を中間値に設定する。
【００５３】
次に、上記図１０に示したようなコードベクトルを作成する装置の機能構成およびその動作を、図８に示すブロック図および図９に示すフローチャートを用いて説明する。
図９において、まずステップＳ２１で、例えば４×４画素単位のブロックの中で、黒点（最小輝度値）の画素の占める割合を決定する。
【００５４】
このブロック内に占める黒点の割合は、図８の最小輝度割合設定部２１によって行う。なお、この最小輝度割合設定部２１は、例えばキーボードやマウス等の入力デバイスによって構成し、ユーザが任意の割合を設定するようにしても良いし、様々なパターンを順に作成するべく、装置が自動的に設定するように構成しても良い。
【００５５】
次に、ステップＳ２２で、図８の最大／最小輝度値設定部２２を用いて、上記設定された黒点の割合に従って、ブロック内の所定の画素位置に黒点（最小輝度値）を与え、その他の画素位置に白点（最大輝度値）を与える。次に、ステップＳ２３で、ブロック内における黒点の占め方が直線的であるかどうかを判断する。直線的でない場合は、上記ステップＳ２２までの処理で作成されたコードベクトルを図８のコードブックデータメモリ２４に格納する。
【００５６】
一方、ブロック内における黒点の占め方が直線的である場合は、ステップＳ２４に進み、図８の輝度値変更部２３を用いて、黒点の画素に隣接する白点の画素の輝度値を、中間色の輝度値に変更する。そして、このようにして作成されたコードベクトルを、図８のコードブックデータメモリ２４に格納する。
【００５７】
以上のように、図９に示したフローチャートの処理が１回終わると、１つのコードベクトルが作成され、それがコードブックデータメモリ２４に格納される。このような処理を、ブロック内で黒点の占める割合、黒点の与える位置等を様々に変えながら複数回行うことにより、様々なパターンのコードベクトルが複数生成されることになる。これら複数のコードベクトルの集合が文字画像用のコードブックとなる。
【００５８】
なお、ここでは図示を省略しているが、本実施形態で作成したコードブックを第１の実施形態と同様に数種類の文字画像に対して適用したところ、それぞれの文字画像に対してKohonen のアルゴリズムで最適に作成したコードブックのＰＳＮＲ特性とほぼ同等な特性が得られ、比較的良好なＰＳＮＲ特性を得ることができた。
【００５９】
以上のように、第３の実施形態によれば、１つのコードブックだけで種々の文字画像に対応することが可能な汎用性の高いコードブックを得ることができる。また、本実施形態においては、あらかじめ決められた所定の規則に従って個々のコードベクトルを作成しているので、作成されたコードブック中にどのようなパターンが含まれているのかを容易に認識することもできる。
【００６０】
なお、上記実施形態では、ブロック内における黒点の占めるパターンとして、１×１，１×２，１×３，１×４，２×２，２×３，２×４の７種類にパターン分けしたが、７種類である必要はない。
【００６１】
（第４の実施形態）
第４の実施形態は、上記第１〜第３の実施形態で示した方法により作成したそれぞれのコードブックを、サイズ１０２４の１つのコードブックにまとめたものである。
【００６２】
図１１は、本実施形態によるサイズ１０２４のコードブックを使用して、顔画像、風景画像、文字画像を含む１９種類の画像Ａ〜Ｓに対してベクトル量子化（ＶＱ）処理を行った後、それを同じコードブックを用いて復元した各画像のＰＳＮＲ特性を示す図である。参考のために、それぞれの画像を用いてKohonen の自己組織化マップの手法によりコードブックを個別に最適化し、それぞれのコードブックを使って各画像にＶＱ処理をした後で、ＶＱ時に使用したのと同じそれぞれのコードブックを使って復元した各画像のＰＳＮＲ特性も示した。
【００６３】
この図１１の結果から明らかなように、本実施形態の手法により作成した１つのコードブックを用いた場合に得られるＰＳＮＲ特性は、Kohonen のアルゴリズムにより作成した１９個のコードブックを用いた場合に得られるＰＳＮＲ特性に匹敵するものとなっている。このように、本実施形態によれば、たった１つのコードブックでも、それぞれの画像に対してKohonen のアルゴリズムで最適に作成した場合のＰＳＮＲ特性とほぼ同等な特性が得られており、単調に変化する画像や急激に変化する画像を含む様々な画像に対して高品位の画像を再生することができ、極めて汎用性の高いコードブックが作成できていることが確認される。
【００６４】
なお、本実施形態ではコードブックのサイズを１０２４としたが、必ずしも１０２４である必要はなく、例えば用途に応じて１２８や５１２などと適宜決めてやることが可能である。また、３種類のコードブックを１つにまとめたが、適当な２種類のコードブックを１つにまとめるようにしても良い。
【００６５】
また、以上に述べた第１〜第４の各実施形態では、４画素×４画素単位のコードベクトルを作成する例を示したが、４画素×４画素である必要はなく、またベクトル量子化の対象が画像データである必要もない。
【００６６】
（本発明の他の実施形態）
なお、以上に説明した本実施形態のコードブック作成装置は、ＣＰＵ、ＲＯＭおよびＲＡＭ等を備えたマイクロコンピュータシステムによって構成され、その動作はＲＯＭやＲＡＭに格納された作業プログラムに従って実現される。この場合、上記コードブック作成装置の各機能ブロックの機能を実現するためのプログラムを外部から記録媒体を介してコンピュータに供給し、そのプログラムに従って上記各機能ブロックを動作させるようにしても良い。
【００６７】
この場合、かかるプログラムを記憶する記録媒体としては、例えばフロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｉ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ、ｚｉｐ、磁気テープ、あるいは不揮発性のメモリカード等を用いることができる。
【００６８】
また、コンピュータが供給されたプログラムを実行することにより上述の実施形態の機能が実現されるだけでなく、そのプログラムがコンピュータにおいて稼働しているＯＳ（オペレーティングシステム）あるいは他のアプリケーションソフト等と共同して上述の実施形態の機能が実現される場合や、供給されたプログラムの処理の全てあるいは一部がコンピュータの機能拡張ボードや機能拡張ユニットにより行われて上述の実施形態の機能が実現される場合も、かかるプログラムは本発明の実施形態に含まれる。
【図面の簡単な説明】
【００６９】
【図１】第１の実施形態による顔画像用のコードブック作成装置の構成例を示す機能ブロック図である。
【図２】第１の実施形態による顔画像用のコードブック作成装置の動作を示すフローチャートである。
【図３】第１の実施形態による顔画像用のコードブックの作成方法を説明するための概念図である。
【図４】第１の実施形態により作成されたコードブックと、Kohonen の自己組織化マップの手法により個々に最適化されたコードブックとのＰＳＮＲ特性の比較結果を示す図である。
【図５】第２の実施形態による風景画像用のコードブック作成装置の構成例を示す機能ブロック図である。
【図６】第２の実施形態による風景画像用のコードブック作成装置の動作を示すフローチャートである。
【図７】第２の実施形態による風景画像用のコードブックの作成方法を説明するための概念図である。
【図８】第３の実施形態による文字画像用のコードブック作成装置の構成例を示す機能ブロック図である。
【図９】第３の実施形態による文字画像用のコードブック作成装置の動作を示すフローチャートである。
【図１０】第３の実施形態による文字画像用のコードブックの作成方法を説明するための概念図である。
【図１１】第４の実施形態により作成されたコードブックと、Kohonen の自己組織化マップの手法により個々に最適化されたコードブックとのＰＳＮＲ特性の比較結果を示す図である。
【符号の説明】
【００７０】
１  始点設定部
２  グループ化部
３  増分設定部
４  始点輝度値設定部
５  コードブック作成部
６  コードブックデータメモリ
１１  始点設定部
１２  グループ化部
１３  ダイナミックレンジ分割部
１４  コードブック作成部
１５  コードブックデータメモリ
２１  最小輝度割合設定部
２２  最大／最小輝度値設定部
２３  輝度値変更部
２４  コードブックデータメモリ
【図１】
2005012824.tif 000003
【図２】
2005012824.tif 000004
【図３】
2005012824.tif 000005
【図４】
2005012824.tif 000006
【図５】
2005012824.tif 000007
【図６】
2005012824.tif 000008
【図７】
2005012824.tif 000009
【図８】
2005012824.tif 000010
【図９】
2005012824.tif 000011
【図１０】
2005012824.tif 000012
【図１１】
2005012824.tif 000013