(57)【要約】【課題】浮動小数をエントロピー符号化する際にコンテキストを用いた場合でも、仮数部の符号化効率の低下を抑えるか防ぐ。【解決手段】符号化装置は、浮動小数の仮数を抽出する仮数抽出手段と、抽出された仮数を符号化する符号化手段とを、備える。符号化手段は抽出された仮数の位のうちの少なくとも一部の位に対応する固定小数表現の位に基づいて確率モデルを特定し、特定された確率モデルを用いて少なくとも一部の位を符号化する。【選択図】図３
2018037891.tif 000002
【特許請求の範囲】
【請求項１】
浮動小数の仮数を抽出する仮数抽出手段と、
抽出された前記仮数を符号化する符号化手段とを、備え、
前記符号化手段は抽出された前記仮数の位のうちの少なくとも一部の位に対応する固定小数表現の位に基づいて確率モデルを特定し、特定された確率モデルを用いて前記少なくとも一部の位を符号化する符号化装置。
【請求項２】
抽出された前記仮数をひとつ以上の境界で複数のパーティションに分割する仮数分割手段をさらに備え、
前記符号化手段は前記複数のパーティションのうちのひとつのパーティションに対応する固定小数表現の位に基づいて確率モデルを特定し、特定された確率モデルを用いて前記ひとつのパーティションを符号化する請求項１に記載の符号化装置。
【請求項３】
前記符号化手段は前記ひとつのパーティションのなかの最下位の位に対応する固定小数表現の位に基づいて確率モデルを特定する請求項２に記載の符号化装置。
【請求項４】
前記符号化手段は前記浮動小数の指数と前記ひとつのパーティションのなかの最下位の位の桁数とから対応する固定小数表現の位を取得する請求項３に記載の符号化装置。
【請求項５】
前記符号化手段は前記ひとつのパーティションよりも上位のパーティションに含まれる値の分布に基づいて確率モデルを特定する請求項２から４のいずれか１項に記載の符号化装置。
【請求項６】
前記符号化手段は前記上位のパーティションの値が全て０であるか否かに基づいて確率モデルを特定する請求項５に記載の符号化装置。
【請求項７】
前記浮動小数の仮数の予測値を取得し、抽出された前記仮数と前記予測値との差分を生成する差分生成手段をさらに備え、
前記符号化手段は符号化対象が抽出された前記仮数であるか生成された前記差分であるかによって確率モデルを切り替える請求項１から６のいずれか１項に記載の符号化装置。
【請求項８】
前記差分生成手段は、抽出された前記仮数の所定の位以下の位については差分を生成しない請求項７に記載の符号化装置。
【請求項９】
前記差分生成手段は、抽出された前記仮数の位のうち、固定小数表現における所定の位に対応する位以下の位については差分を生成しない請求項７に記載の符号化装置。
【請求項１０】
前記符号化装置はそれぞれが浮動小数で表される複数のコンポーネントを持つ量を符号化の対象とし、
前記符号化手段はコンポーネントにより確率モデルを切り替える請求項１から９のいずれか１項に記載の符号化装置。
【請求項１１】
前記符号化手段は抽出された前記仮数をエントロピー符号化し、
前記符号化手段は抽出された前記仮数の位のうちの少なくとも一部の位に対応する固定小数表現の位に基づいて、前記エントロピー符号化における確率モデルを特定する請求項１から１０のいずれか１項に記載の符号化装置。
【請求項１２】
浮動小数の仮数を抽出する仮数抽出ステップと、
抽出された前記仮数を符号化する符号化ステップとを、含み、
前記符号化ステップは抽出された前記仮数の位のうちの少なくとも一部の位に対応する固定小数表現の位に基づいて確率モデルを特定し、特定された確率モデルを用いて前記少なくとも一部の位を符号化するステップを含む符号化方法。
【請求項１３】
符号化された浮動小数の指数を復号する指数復号手段と、
符号化された浮動小数の仮数の位のうちの復号対象の位に対応する固定小数表現の位を復号された指数から決定する決定手段と、
決定された固定小数表現の位に基づいて確率モデルを特定し、特定された確率モデルを用いて前記復号対象の位を復号する仮数復号手段と、を備える復号装置。
【請求項１４】
符号化された浮動小数の指数を復号する指数復号ステップと、
符号化された浮動小数の仮数の位のうちの復号対象の位に対応する固定小数表現の位を復号された指数から決定する決定ステップと、
決定された固定小数表現の位に基づいて確率モデルを特定し、特定された確率モデルを用いて前記復号対象の位を復号する仮数復号ステップと、を含む復号方法。
【請求項１５】
コンピュータを請求項１乃至１１のいずれか１項または請求項１３に記載の装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化装置、符号化方法、復号装置および復号方法に関する。
【背景技術】
【０００２】
従来から浮動小数の圧縮において、符号化対象となる浮動小数の予測を行い、符号化対象値とその予測値との差分情報を符号化する技術が知られている。浮動小数を構成する符号部、指数部、仮数部のうちの仮数部の符号化において、予測値の仮数部と符号化対象値の仮数部との差分を計算し、差分値に対してコンテキストベースのエントロピー符号化を行う方法がある（例えば、非特許文献１参照）。非特許文献１に記載の技術では、差分の大きさを表す値を求め、その値を仮数部の差分の符号化コンテキストとして利用する。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Ｉｓｅｎｂｕｒｇ，  Ｍａｒｔｉｎ，  Ｐｅｔｅｒ  Ｌｉｎｄｓｔｒｏｍ，  ａｎｄ  Ｊａｃｋ  Ｓｎｏｅｙｉｎｋ．  「Ｌｏｓｓｌｅｓｓ  ｃｏｍｐｒｅｓｓｉｏｎ  ｏｆ  ｐｒｅｄｉｃｔｅｄ  ｆｌｏａｔｉｎｇ−ｐｏｉｎｔ  ｇｅｏｍｅｔｒｙ．」  Ｃｏｍｐｕｔｅｒ−Ａｉｄｅｄ  Ｄｅｓｉｇｎ  ３７．８  （２００５）：  ８６９−８７７．
【発明の概要】
【発明が解決しようとする課題】
【０００４】
非特許文献１に記載の方法では、仮数部の差分を符号化する際に仮数部の差分の大きさを表す値をコンテキストとして利用する。したがって、そのようにして得られた符号データを復号可能とするためには、別途仮数部の差分の大きさを表す値を符号化して符号データに含め、復号側では符号化された値を復号してから仮数部の差分を復号する必要がある。これは、符号化効率の低下の原因となりうる。
【０００５】
本発明はこうした課題に鑑みてなされたものであり、その目的は、浮動小数をエントロピー符号化する際にコンテキストを用いた場合でも、仮数部の符号化効率の低下を抑えるか防ぐことができる技術の提供にある。
【課題を解決するための手段】
【０００６】
本発明のある態様は符号化装置に関する。この符号化装置は、浮動小数の仮数を抽出する仮数抽出手段と、抽出された仮数を符号化する符号化手段とを、備える。符号化手段は抽出された仮数の位のうちの少なくとも一部の位に対応する固定小数表現の位に基づいて確率モデルを特定し、特定された確率モデルを用いて少なくとも一部の位を符号化する。
【０００７】
本発明の別の態様は、復号装置である。この復号装置は、符号化された浮動小数の指数を復号する指数復号手段と、符号化された浮動小数の仮数の位のうちの復号対象の位に対応する固定小数表現の位を復号された指数から決定する決定手段と、決定された固定小数表現の位に基づいて確率モデルを特定し、特定された確率モデルを用いて復号対象の位を復号する仮数復号手段と、を備える。
【発明の効果】
【０００８】
本発明によれば、浮動小数をエントロピー符号化する際にコンテキストを用いた場合でも、仮数部の符号化効率の低下を抑えるか防ぐことができる。
【図面の簡単な説明】
【０００９】
【図１】ＩＥＥＥ７５４の単精度浮動小数表現を示す説明図。
【図２】浮動小数の符号部、指数部、仮数部と実数の対応を示す説明図。
【図３】第１の実施の形態に係る符号化装置の機能及び構成を示すブロック図。
【図４】図３の符号化装置のハードウェア構成の例を示すブロック図。
【図５】図３の符号化装置における一連の処理の流れを示すフローチャート。
【図６】図５の仮数部の符号化ステップの詳細を示すフローチャート。
【図７】指数とコンテキスト番号と固定小数表現における位との対応を表す表を示す説明図。
【図８】第２の実施の形態に係る復号装置の機能及び構成を示すブロック図。
【図９】図８の復号装置における一連の処理の流れを示すフローチャート。
【図１０】図１０（Ａ）は、面情報の説明図、図１０（Ｂ）は、頂点座標の説明図。
【図１１】第４の実施の形態に係る３Ｄ処理装置の機能及び構成を示すブロック図。
【図１２】３Ｄ処理装置における一連の処理の流れを示すフローチャート。
【図１３】横軸に固定小数表現の小数位、縦軸に１の出現確率をプロットした図。
【図１４】変形例に係る差分情報の生成処理の流れを示すフローチャート。
【発明を実施するための形態】
【００１０】
以下、図面を参照して本発明の実施の形態を説明する。ただし、本発明の実施の形態は以下の実施の形態に限定されるものではない。各図面に示される同一または同等の構成要素、部材、処理には、同一の符号を付するものとし、適宜重複した説明は省略する。また、各図面において説明上重要ではない部材の一部は省略して表示する。
【００１１】
実施の形態の説明に入る前に、理解を助けるため、広く利用されているＩＥＥＥ７５４の浮動小数表現と、コンテキストベースのエントロピー符号化と、について説明する。
【００１２】
図１は、ＩＥＥＥ７５４の単精度浮動小数表現を示す説明図である。ＩＥＥＥ７５４の浮動小数表現では、単精度の場合、図１に示されるように上位１ｂｉｔが符号部Ｓ、次の上位８ｂｉｔが指数部Ｅ、残る２３ｂｉｔが仮数部Ｍを構成する。Ｓ、Ｅ、Ｍを用いて浮動小数Ｆを表すと以下の式１となる。
【数１】
2018037891.tif 000003
【００１３】
図２は、浮動小数の符号部Ｓ、指数部Ｅ、仮数部Ｍと実数の対応を示す説明図である。符号部Ｓは正負を特定し、指数部Ｅは１２７であれば［１、２）の区間、１２８であれば［２、４）の区間といったように２倍ずつ幅の異なる区間を特定し、仮数部Ｍは特定された区間を更に２２３分割した内の１区間を特定する。ＩＥＥＥ７５４の倍精度では指数部が１１ｂｉｔ、仮数部が５２ｂｉｔであり、他の表現では指数部が無いものや、基数が２でない等、表現が異なるものも存在する。しかしながら、浮動小数表現の基本的な考え方は上述のとおりである。
【００１４】
次にコンテキストベースのエントロピー符号化について説明する。エントロピー符号化では、符号化対象となるシンボルの出現確率（確率モデル）に応じて最適な符号を割り振り、データ量を削減する。エントロピー符号化後の１シンボルあたりのデータ量の下限はシンボルのエントロピーであるから、データ量を削減するには、エントロピーが小さくなるようなデータ加工を施すことが重要となる。この時、シンボルの出現確率が偏っている方がエントロピーは小さくなる。エントロピー符号化は例えば、ハフマン符号化、ゴロムライス符号化、算術符号化等を含む。
【００１５】
コンテキストは出現確率の事前条件を表し、適切な事前条件を選べば平均や分散の異なるデータを元のデータ集合から分離することができる。つまり、出現確率を偏りやすくすることができる。したがって、コンテキストの導入によりエントロピーの低減を期待することができる。コンテキストベースのエントロピー符号化では、符号化対象をその意味や状態によって複数のカテゴリに分類し、それぞれにコンテキスト番号を割り当て、コンテキスト番号ごとに管理された出現確率に基づいて符号化対象がエントロピー符号化される。
【００１６】
［第１の実施の形態］
本実施の形態では、符号化対象となる浮動小数とその予測値とが得られた際に、予測値を用いて浮動小数を符号化する。ここでは、浮動小数がＩＥＥＥ７５４の単精度で表現されているものとする。しかしながら、浮動小数の表現はＩＥＥＥ７５４に限られず、本実施の形態に係る技術的思想はあらゆる浮動小数表現について個々の性質に対応することで適用可能である。
【００１７】
本実施の形態では、浮動小数の仮数部を符号化するためのコンテキストとして、浮動小数の指数部から求めることができる固定小数表現の位を利用する。これにより、符号化対象のコンテキスト分離の性能を落とすことなく、コンテキストのための符号データを無くすことができ、圧縮性能が向上する。
【００１８】
図３は、第１の実施の形態に係る符号化装置３０１の機能及び構成を示すブロック図である。符号化装置３０１は、符号化対象となる浮動小数Ａとその予測値Ｐとが入力されると、符号化対象となる浮動小数Ａの符号データを出力する。符号化装置３０１は、対象取得部３０２と、予測取得部３０３と、符号／指数抽出部３０４と、仮数抽出部３０５と、符号／指数差分生成部３０６と、仮数差分生成部３０７と、仮数分割部３０８と、符号化部３０９と、符号出力部３１０と、を備える。
【００１９】
対象取得部３０２は、符号化対象となる浮動小数Ａを取得する。対象取得部３０２は、取得された浮動小数Ａを符号／指数抽出部３０４および仮数抽出部３０５に出力する。予測取得部３０３は、対象取得部３０２によって取得された浮動小数Ａの予測値Ｐを取得する。予測取得部３０３は、取得された予測値Ｐを符号／指数抽出部３０４および仮数抽出部３０５に出力する。
【００２０】
符号／指数抽出部３０４は、対象取得部３０２から出力された浮動小数Ａから符号部の値ＳＡおよび指数部の値ＥＡを抽出する。符号／指数抽出部３０４は、抽出された値ＳＡ、ＥＡを符号／指数差分生成部３０６に出力する。符号／指数抽出部３０４は、予測取得部３０３から出力された予測値Ｐから符号部の値ＳＰおよび指数部の値ＥＰを抽出する。符号／指数抽出部３０４は、抽出された値ＳＰ、ＥＰを符号／指数差分生成部３０６に出力する。
【００２１】
仮数抽出部３０５は、対象取得部３０２から出力された浮動小数Ａから仮数部の値ＭＡを抽出する。仮数抽出部３０５は、抽出された値ＭＡを仮数差分生成部３０７に出力する。仮数抽出部３０５は、予測取得部３０３から出力された予測値Ｐから仮数部の値ＭＰを抽出する。仮数抽出部３０５は、抽出された値ＭＰを仮数差分生成部３０７に出力する。
【００２２】
符号／指数差分生成部３０６は、浮動小数Ａの符号部の値ＳＡと予測値Ｐの符号部の値ＳＰとの差分を算出する。符号／指数差分生成部３０６は、浮動小数Ａの指数部の値ＥＡと予測値Ｐの指数部の値ＥＰとの差分を算出する。符号／指数差分生成部３０６は、算出された符号部の差分と指数部の差分とを表す差分信号ＳＤを仮数差分生成部３０７に出力する。符号／指数差分生成部３０６は、差分信号ＳＤと、差分信号ＳＤを符号化するためのコンテキストＣＴＸ１とを符号化部３０９に出力する。差分信号ＳＤおよびコンテキストの取り扱いについては後述する。
【００２３】
仮数差分生成部３０７は、符号／指数差分生成部３０６によって生成される差分信号ＳＤを監視し、浮動小数Ａの符号部、指数部のそれぞれが予測値Ｐの符号部、指数部と一致するかそうでないかを判定する。仮数差分生成部３０７は前者の場合、浮動小数Ａの仮数部の値ＭＡと予測値Ｐの仮数部の値ＭＰとの差分ＭＤを算出する。仮数差分生成部３０７は、算出された仮数部の差分を仮数分割部３０８に出力する。仮数差分生成部３０７は後者の場合、差分を算出せずに浮動小数Ａの仮数部の値ＭＡをそのまま仮数分割部３０８に出力する。
【００２４】
仮数分割部３０８は仮数差分生成部３０７の出力（仮数部の差分ＭＤまたは浮動小数Ａの仮数部の値ＭＡ）をビット単位に分割し、コンテキストＣＴＸ２と共に符号化部３０９に出力する。符号化部３０９は、入力された値のエントロピー符号化において適用されるべき確率モデルをコンテキストにしたがい特定する。符号化部３０９は、入力された値を特定された確率モデルを用いてエントロピー符号化し、符号出力部３１０に符号ＣＤを出力する。符号出力部３１０は入力された符号を出力する。
【００２５】
符号化部３０９は、非特許文献１に記載されているＷｉｔｔｅｎらの「Ａｒｉｔｈｍｅｔｉｃ  ｃｏｄｉｎｇ  ｆｏｒ  ｄａｔａ  ｃｏｍｐｒｅｓｓｉｏｎ」を利用して実現される。具体的には、符号化部３０９は非特許文献１のＦｉｇ．４に記載されている疑似コードにおけるｃｏｍｐｒｅｓｓ関数に相当し、引数のａｃがコンテキスト、ｓｙｍが符号化するシンボルを受けとる引数となっている。この疑似コードではコンテキストを表す引数ａｃの型である、ＡｒｉｔｈｍｅｔｉｃＣｏｄｅｒ構造体がそれぞれシンボルの出現確率を管理する。シンボルを符号化する毎に、選択されたオブジェクトが管理するシンボルの出現確率が更新される。したがって、コンテキスト番号に応じて異なるオブジェクトを渡すことで、コンテキストの分離が実現される。なお、符号化部３０９における符号化手段は上記に限られず、可逆符号化であれば他の算術符号化やランレングス符号化等を利用して実現されてもよい。
【００２６】
図３に示される符号化装置３０１の各部はハードウェアで構成されてもよいが、ソフトウェア（コンピュータプログラム）として実装されてもよい。この場合、このソフトウェアは、ＰＣ（パーソナルコンピュータ）等、一般のコンピュータのメモリにインストールされる。そしてこのコンピュータのＣＰＵがこのインストールされたソフトウェアを実行することで、このコンピュータは、上述の符号化装置３０１の機能を実現する。
【００２７】
図４は、本実施の形態の符号化装置３０１のハードウェア構成の例を示すブロック図である。符号化装置３０１はコンピュータとして実現される。本コンピュータは、ＣＰＵ１２０１と、ＲＡＭ１２０２と、ＲＯＭ１２０３と、キーボード１２０４と、マウス１２０５と、表示装置１２０６と、外部記憶装置１２０７と、記憶媒体ドライブ１２０８と、Ｉ／Ｆ１２０９と、バス１２１０と、を備える。ＣＰＵ１２０１は、ＲＡＭ１２０２やＲＯＭ１２０３に格納されているコンピュータプログラムやデータを用いて、コンピュータ全体の制御を行うと共に、符号化装置３０１の各部が行うものとして説明した上述の各処理を実行する。
【００２８】
ＲＡＭ１２０２は、コンピュータ読み取り可能な記憶媒体の一例である。ＲＡＭ１２０２は、外部記憶装置１２０７や記憶媒体ドライブ１２０８、更にはネットワークインタフェース（不図示）からロードされたコンピュータプログラムやデータを一時的に記憶するためのエリアを有する。更に、ＲＡＭ１２０２は、ＣＰＵ１２０１が各種の処理を実行する際に用いるワークエリアを有する。即ち、ＲＡＭ１２０２は、各種のエリアを適宜提供することができる。特にＲＡＭ１２０２は後述の符号化バッファを含む。ＲＯＭ１２０３は、コンピュータ読み取り可能な記憶媒体の一例であり、コンピュータの設定データや、ブートプログラムなどが格納されている。
【００２９】
キーボード１２０４、マウス１２０５は、コンピュータの操作者が操作することで、各種の指示をＣＰＵ１２０１に対して入力することができる。表示装置１２０６は、ＣＲＴや液晶画面などにより構成されており、ＣＰＵ１２０１による処理結果を画像や文字などで表示することができる。
【００３０】
外部記憶装置１２０７は、コンピュータ読み取り記憶媒体の一例であり、ハードディスクドライブ装置に代表される大容量情報記憶装置である。外部記憶装置１２０７には、ＯＳ（オペレーティングシステム）や、図３に示される各処理をＣＰＵ１２０１に実現させるためのコンピュータプログラムやデータ、各種テーブル、データベース等が保存されている。外部記憶装置１２０７に保存されているコンピュータプログラムやデータは、ＣＰＵ１２０１による制御に従って適宜ＲＡＭ１２０２にロードされ、ＣＰＵ１２０１による処理対象となる。
【００３１】
記憶媒体ドライブ１２０８は、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭなどの記憶媒体に記録されているコンピュータプログラムやデータを読み出し、読み出したコンピュータプログラムやデータを外部記憶装置１２０７やＲＡＭ１２０２に出力する。なお、外部記憶装置１２０７に保存されているものとして説明した情報の一部若しくは全部を記憶媒体に記録させておき、記憶媒体ドライブ１２０８に読み取らせてもよい。
【００３２】
Ｉ／Ｆ１２０９は、外部から浮動小数等を入力したり、符号データを出力したりするためのインタフェースであり、例えばＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）インタフェースである。バス１２１０は、上述の各部を繋ぐ。
【００３３】
上述の構成において、本コンピュータの電源がＯＮになると、ＣＰＵ１２０１はＲＯＭ１２０３に格納されているブートプログラムに従って、外部記憶装置１２０７からＯＳをＲＡＭ１２０２にロードする。この結果、キーボード１２０４、マウス１２０５を介した情報入力操作が可能となり、表示装置１２０６にＧＵＩを表示することが可能となる。ユーザが、キーボード１２０４やマウス１２０５を操作し、外部記憶装置１２０７に格納された符号化アプリケーションの起動指示を入力すると、ＣＰＵ１２０１はこのプログラムをＲＡＭ１２０２にロードし、実行する。これにより、本コンピュータが符号化装置３０１として機能することになる。
【００３４】
なお、ＣＰＵ１２０１が実行する符号化アプリケーションプログラムは、基本的に図３の符号化装置３０１に属する各部に相当する関数を備える。ここで、符号化処理結果は外部記憶装置１２０７に保存される。なお、このコンピュータは、以降の各実施の形態に係る符号化装置、復号装置にも同様に適用可能であることは、以下の説明より明らかである。
【００３５】
以上の構成による符号化装置３０１の動作を説明する。
図５は、符号化装置３０１における一連の処理の流れを示すフローチャートである。Ｓ４０１では、符号化装置３０１は符号化対象となる浮動小数Ａ及びその予測値Ｐを取得する。Ｓ４０２では、符号化装置３０１は浮動小数Ａを符号部ＳＡ、指数部ＥＡ、仮数部ＭＡに分離し、予測値Ｐを符号部ＳＰ、指数部ＥＰ、仮数部ＭＰに分離する。Ｓ４０３では、符号化装置３０１は浮動小数Ａの符号部ＳＡおよび指数部ＥＡを符号化する。ここでの符号化方法は、符号部ＳＡおよび指数部ＥＡを復号側で復元できれば任意の方法でよく、符号部ＳＡ、指数部ＥＡを独立に符号化してもよいし、依存関係を持って符号化してもよい。符号化方法として例えば非特許文献１に記載されている方法を採用してもよい。非特許文献１では符号部、指数部を用いて得られる符号部と指数部の差分情報を１つの符号にまとめて出力する仕組みが開示されている。この時の符号化コンテキストには、予測値の指数部が利用される。Ｓ４０４では、符号化装置３０１は浮動小数Ａの仮数部ＭＡを符号化する。
【００３６】
図３に示されるブロックと図５に示される処理との対応関係は以下の通りである。Ｓ４０１は対象取得部３０２及び予測取得部３０３が行う。Ｓ４０２は符号／指数抽出部３０４及び仮数抽出部３０５が行う。Ｓ４０３は符号／指数差分生成部３０６及び符号化部３０９が行う。Ｓ４０４は仮数差分生成部３０７及び仮数分割部３０８、符号化部３０９が行う。
【００３７】
図６は、図５の仮数部ＭＡの符号化ステップＳ４０４の詳細を示すフローチャートである。Ｓ５０１では、仮数差分生成部３０７は浮動小数Ａの符号部ＳＡと予測値Ｐの符号部ＳＰとが一致し、かつ浮動小数Ａの指数部ＥＡと予測値Ｐの指数部ＥＰとが一致するかを判定する。仮数差分生成部３０７は、符号部および指数部の両方が一致した場合（Ｓ５０１のＹＥＳ）、Ｓ５０２で仮数部の差分（ＭＤ＝ＭＡ−ＭＰ）を算出する。仮数差分生成部３０７は、一致しない場合（Ｓ５０１のＮＯ）、上記差分ＭＤを算出せずにＳ５０４に進む。この理由を説明する。図２に示されるように、浮動小数表現では符号および指数で値のおおまかな領域を特定し、仮数で詳細な値を特定する。したがって、符号および指数で予測に誤りがある場合、仮数の予測も大きく外れる蓋然性が高く、差分を求めることによるエントロピーの低下は期待できない。そこで、本実施の形態では、符号化対象の浮動小数Ａの指数部や仮数部が予測値Ｐのそれと一致しない場合は仮数部の差分の算出を行わないことで処理の無駄を省いている。
【００３８】
仮数部の差分ＭＤは、２３ｂｉｔで表現されるＭＡと同じく２３ｂｉｔで表現されるＭＰとの差分であり、２４ｂｉｔで表現される。Ｓ５０３では、仮数差分生成部３０７は２４ｂｉｔで表現されるＭＤを、非負の２３ｂｉｔ表現ＭＤ’に変換する。この変換は可逆かつ前述の性質を満たすものであればよく、例えばモジュロ演算によって実現されてもよい。その後、仮数差分生成部３０７はＭＤ’を符号化バッファにセットする。符号化バッファは符号化処理用の２３ｂｉｔの作業領域を表す。Ｓ５０４では、仮数差分生成部３０７は浮動小数Ａの仮数部ＭＡを符号化バッファにセットする。Ｓ５０５では、符号化部３０９は符号化バッファにセットされたＭＤ’またはＭＡの各ビットを独立に符号化する。この時、下からｎ番目（ｎは０以上の整数）のビットのコンテキスト番号をＥＡ＋ｎとする。以下で、コンテキスト番号をＥＡ＋ｎとする理由を述べる。
【００３９】
非特許文献１において、仮数部の差分の大きさを表す値を符号化する際のコンテキストに符号化対象の浮動小数の指数が利用されている。浮動小数表現では、指数は仮数部に対応する固定小数表現の位を決定する。指数が大きくなる程、仮数部に対応する固定小数表現の位が高くなり、表す値の精度が低下する。すると、固定小数で表現したときの予測精度が一定の場合、浮動小数で表現したときの指数が大きい場合かつ／または仮数におけるより高位の位の方が、予測が当たりやすく、差分が小さくなりやすい。したがって、非特許文献１では、符号化対象の浮動小数の指数部と仮数部の差分の大きさを表す値との相関が高いことから、その指数部をコンテキストに利用している。
【００４０】
しかしながら、非特許文献１に記載される手法と同じようにＭＤ’の各ビットの符号化の際に浮動小数Ａの指数部ＥＡをコンテキストとして利用すると、コンテキストによる確率モデルの切り替えが適切に行われない。仮数部の予測差分を求める際、下位のビットまで予測を当てることは難しく、仮数部の差分の中で上位の位ほど０となる確率が高く、ある位以下のビットは０と１がランダムに出現するようになる。すなわち、仮数部の差分のなかで上位か下位かによって値の分布、例えば０の出現確率が異なる。したがって、上位ビットと下位ビットとを１つのコンテキストとするのは効率的ではない。
【００４１】
前述したように、固定小数で表現したときの予測精度が常に一定であると仮定すると、仮数部の差分の各ビットの０と１との出現割合はそのビットが対応する固定小数表現の位で決まる。例えば、予測精度が±０．２５であるとすれば、固定小数表現で小数第２位（２−２の位）までの差分はほぼ０となり、そこから下位になるにしたがって０と１との出現割合がランダムに近づいていく。この性質から、コンテキストは浮動小数表現の仮数部の着目する位に対応する固定小数表現の位とすればよく、コンテキストをＥＡ＋ｎとするのはこれに対応する。
【００４２】
図７は、指数ＥＡとコンテキスト番号と固定小数表現における位との対応を表す表を示す説明図である。ｍ１は指数が１２７であった時のｎ＝１５となるビットを表し、ｍ２は指数が１２６であった時のｎ＝１６となるビットを表す。これらは共に固定小数表現で小数第８位に相当し、コンテキスト番号も同じ１４２が割り振られる。したがって、ｍ１のビットがエントロピー符号化されるときに使用される確率モデルとｍ２のビットがエントロピー符号化されるときに使用される確率モデルとは同じになる。
【００４３】
ただし、仮数部の差分を取った場合と取らなかった場合とでは、ＥＡ＋ｎが同じ値であっても異なるシンボルの出現確率を持つため、コンテキストの分離が必要となる。これは、ＥＡ＋ｎが０から２５５＋２２＝２７７の範囲を取るため、差分を取らなかった場合にのみ上記のコンテキスト番号に２７８を足すことで実現される。
【００４４】
また、着目する位よりも上位の位が全て０であったか否かでもシンボルの出現確率が異なる。上位の位が全て０である場合は、符号化対象となるシンボルが０となる確率が高く、そうでない場合はランダムに近い確率となることが予測される。したがって、着目する位よりも上位の位が全て０であったか否かでもコンテキストの分離を行う。
【００４５】
上述のように、浮動小数の仮数部の符号化のためのコンテキストを、仮数部の差分の大きさではなく、既に符号化済みの指数部に依存させることで、コンテキストのために別途符号を出力しなくても復号時にコンテキストを再現することができる。その結果、効率的に浮動小数の仮数部の符号化を行うことができる。
【００４６】
また、本実施の形態に係る符号化装置３０１によると、コンテキストのための符号データを別途出力する必要のないコンテキストベースのエントロピー符号化が実現される。したがって、仮数部の符号化効率の低下を抑えるか防ぐことができる。
【００４７】
なお、第１の実施の形態では、簡単のために仮数部が全て固定小数表現の小数位に対応する場合を説明したが、これに限られず、仮数部が整数位に対応する場合でも、同様にコンテキストの分離を行うことができる。
【００４８】
［第２の実施の形態］
第２の実施の形態に係る復号装置は、第１の実施の形態に係る符号化装置３０１による符号化の結果得られる符号データを復号し、浮動小数Ａを再構成する。本例では符号化装置３０１で浮動小数Ａの仮数部ＭＡがそのまま符号化された結果得られる符号データを復号する場合を説明する。浮動小数Ａの仮数部の差分ＭＤに対応する符号データを復号するための構成は、本明細書に触れた当業者には自明な本実施の形態の拡張である。
【００４９】
図８は、第２の実施の形態に係る復号装置１５０の機能及び構成を示すブロック図である。復号装置１５０は、符号データ取得部１５１と、指数復号部１５２と、小数位決定部１５３と、仮数復号部１５４と、を備える。
【００５０】
符号データ取得部１５１は、符号化装置３０１によって生成された符号データを取得する。指数復号部１５２は、符号データ取得部１５１によって取得された符号データから、符号部および指数部を復号する。小数位決定部１５３は、符号データから復号対象とする仮数部の位を選択する。小数位決定部１５３は、選択された復号対象の位に対応する固定小数表現の位を、指数復号部１５２における復号により得られた指数から決定する。仮数復号部１５４は、小数位決定部１５３によって決定された固定小数表現の位に基づいて確率モデルを特定し、特定された確率モデルを用いて復号対象の位を復号する。
【００５１】
図９は、図８の復号装置１５０における一連の処理の流れを示すフローチャートである。Ｓ９５１では、符号データ取得部１５１は符号データを取得する。Ｓ９５２では、指数復号部１５２は取得された符号データの符号部および指数部を復号する。Ｓ９５３では、小数位決定部１５３は符号データの仮数部の位のなかから復号対象の位を選択する。Ｓ９５４では、小数位決定部１５３は、ステップＳ９５２で得られた指数にステップＳ９５３で選択された復号対象の位の桁数を加えることで、復号対象の位に対応する固定小数表現の位を決定する。Ｓ９５５では、仮数復号部１５４は、決定された固定小数表現の位に基づいてコンテキスト番号を決定する。Ｓ９５６では、仮数復号部１５４は、決定されたコンテキスト番号に対応する確率モデルを使用して、復号対象の位を復号する。Ｓ９５７では、仮数復号部１５４は仮数部の全ての位が復号されたか否かを判定する。復号されていない位が残っていれば処理はステップＳ９５３に戻る。全ての位が復号されていれば、Ｓ９５８で復号装置１５０は復号された符号部、指数部、仮数部で表現される浮動小数Ａを出力する。
【００５２】
本実施の形態に係る復号装置１５０によると、復号の際にコンテキストのために別途符号を復号しなくてもコンテキストを再現することができる。その結果、効率的に浮動小数の仮数部の復号を行うことができる。
【００５３】
［第３の実施の形態］
第１の実施の形態では２３ｂｉｔで表される値を符号化バッファにセットし、各ビット独立に二値信号として符号化する場合について説明した。第３の実施の形態では、２３ｂｉｔの値を３つのパーティションに分割することで、仮数部について多値信号として符号化する。
【００５４】
本実施の形態と第１の実施の形態との差異は主に、仮数分割部３０８及び符号化部３０９が行う符号化バッファの値を符号化する処理（図６のステップＳ５０５）である。以下では、図６のステップＳ５０５に相当する処理の詳細を説明する。それ以外の処理や構成は第１の実施の形態に準じる。
【００５５】
第３の実施の形態に係る仮数分割部は、符号化バッファに登録されたの２３ｂｉｔの値を上位８ｂｉｔ、中位８ｂｉｔ、下位７ビットの３つのパーティションに分割する。すなわち、２３ｂｉｔの下から数えて７番目のビットと８番目のビットとの間にパーティションの境界があり、１５番目のビットと１６番目のビットとの間に別のパーティションの境界がある。なお、分割の仕方はこれに限られず任意でよく、例えば１３ｂｉｔと１２ｂｉｔとの２分割としてもよく、または４つ以上のパーティションに分割してもよい。
【００５６】
第３の実施の形態の符号化部は、それぞれのパーティションを符号化する際には、最下位ビットに対応する固定小数表現の位をコンテキストとして処理する。したがって、下位７ビットにはＥＡ、中位８ビットにはＥＡ＋７、上位８ｂｉｔにはＥＡ＋１５のコンテキスト番号が割り当てられる。ただし、８ビットである上位・中位ビットと７ビットである下位ビットとは桁数が異なるため、独立のコンテキストとして扱ってもよい。符号化部における符号化方法は第１の実施の形態における符号化方法に準じる。
【００５７】
本実施の形態では符号化処理を８ビットまたは７ビットの多値シンボルに対して行うため、隣接するビット間の相関関係を利用した符号化を実現することができる。その結果、第１の実施の形態よりも符号化性能の向上を期待することができる。更に、代替となる符号化方法は算術符号化に加えて、ゴロムライス符号やハフマン符号やＺＩＰ圧縮等のユニバーサル符号化を含み、より扱いやすくなる。
【００５８】
例えば、ハフマン符号化でコンテキスト分離を行う場合には、コンテキスト毎にハフマンテーブルを構築する方法や、シンボルをコンテキスト毎に独立に符号化する方法等がある。
【００５９】
第３の実施の形態に係る符号化装置によると、コンピュータ処理の上で扱いやすい８ｂｉｔに近い符号化単位で値を処理することができ、処理効率を高めることができる。更に、符号化性能の向上も期待できる。
【００６０】
なお、下位７ビットについては、上位８ビットや中位８ビットよりも予測が当たりにくいので、仮数差分生成部は下位７ビットについては浮動小数Ａの仮数部ＭＡと予測値Ｐの仮数部ＭＰとの差分を生成しなくてもよい。
【００６１】
［第４の実施の形態］
第４の実施の形態では、第１または第３の実施の形態で説明した符号化装置を利用して、３Ｄポリゴンの頂点座標の符号化を行う。本実施の形態で扱う３Ｄポリゴンは三角形パッチの集合として表現されている。各パッチは面情報及び頂点座標で構成されており、これらを合わせて形状情報と呼ぶ。
【００６２】
図１０（Ａ）は、面情報の説明図である。図１０（Ｂ）は、頂点座標の説明図である。１つの三角形パッチを表現するには三角形の頂点の座標を指定する必要がある。ただし、３Ｄポリゴンにおいては複数の三角形が同一の頂点座標を共有しているため、重複のない頂点座標をリストとして管理し、各三角形はその頂点を参照するための頂点ＩＤを持つ。具体的には各三角形の頂点のＩＤは図１０（Ａ）に示されるテーブルによって管理される。頂点座標は図１０（Ｂ）に示される各頂点の座標のＸＹＺ成分を保持するテーブルによって管理される。ここで、頂点ＩＤは４バイトの符号なし整数、頂点座標はＩＥＥＥ７５４の単精度浮動小数（４バイト）で表現される。
【００６３】
図１１は、第４の実施の形態に係る３Ｄ処理装置８００の機能及び構成を示すブロック図である。３Ｄ処理装置８００は、形状情報取得部８０１と、面情報抽出部８０２と、頂点座標抽出部８０３と、面情報符号化部８０４と、頂点座標予測部８０５と、浮動小数符号化部８０６と、符号出力部８０７と、３Ｄデータ生成部８０８と、を備える。
【００６４】
３Ｄデータ生成部８０８は、ユーザ入力等に基づき３Ｄポリゴンを生成する。３Ｄデータ生成部８０８は、３Ｄポリゴンを表す形状情報を図１０（Ａ）や図１０（Ｂ）に示されるテーブルの形で生成する。形状情報取得部８０１は３Ｄデータ生成部８０８によって生成された形状情報を取得し、取得された形状情報を面情報抽出部８０２及び頂点座標抽出部８０３に出力する。面情報抽出部８０２は、形状情報取得部８０１によって取得された形状情報から面情報を抽出し、符号化しやすいデータ構造に変換する。面情報抽出部８０２は、変換後のデータを面情報符号化部８０４に出力する。頂点座標抽出部８０３は、形状情報取得部８０１によって取得された形状情報から頂点座標を抽出する。頂点座標抽出部８０３は、抽出された頂点座標を頂点座標予測部８０５及び浮動小数符号化部８０６に出力する。
【００６５】
面情報符号化部８０４は面情報抽出部８０２によって抽出された面情報を符号化し、符号データを符号出力部８０７に出力すると共に、符号化の際に構築された面や頂点の隣接関係や頂点の符号化順などの補助情報を頂点座標予測部８０５に出力する。頂点座標予測部８０５は補助情報を基に各頂点の座標をそれよりも先に符号化される頂点の座標から予測する。頂点座標予測部８０５は、予測の結果得られる各頂点の予測座標を浮動小数符号化部８０６に出力する。浮動小数符号化部８０６は頂点座標予測部８０５から入力された予測座標を利用して、先に得られた順に頂点座標抽出部８０３から入力された浮動小数を符号化し、符号データを符号出力部８０７に出力する。浮動小数符号化部８０６は図３の符号化装置３０１に対応する。符号出力部８０７は入力された符号データを多重化して外部に出力する。
【００６６】
以上の構成による３Ｄ処理装置８００の動作を説明する。
図１２は、３Ｄ処理装置８００における一連の処理の流れを示すフローチャートである。Ｓ９０１では、３Ｄ処理装置８００は形状情報を取得する。Ｓ９０２では、３Ｄ処理装置８００は形状情報から面情報を抽出し、抽出された面情報を符号化する。面情報の符号化については多くの技術が提案されている。例えば、Ｔｏｕｍａらよる「Ｔｒｉａｎｇｌｅ  Ｍｅｓｈ  Ｃｏｍｐｒｅｓｓｉｏｎ」や、Ｍａｍｏｕらによる「ＴＦＡＮ：Ａ  ｌｏｗ  ｃｏｍｐｌｅｘｉｔｙ  ３Ｄ  ｍｅｓｈ  ｃｏｍｐｒｅｓｓｉｏｎ  ａｌｇｏｒｉｔｈｍ」等が用いられてもよい。
【００６７】
Ｓ９０３では、３Ｄ処理装置８００は頂点座標の符号化順に基づいた予測頂点座標を生成する。頂点座標の予測は単純なものであれば直前に符号化された頂点座標を予測とすることができる。ほかにも非特許文献１で説明されている平行四辺形予測（ｐａｒａｌｌｅｌｏｇｒａｍ  ｐｒｅｄｉｃｔｉｏｎ）を利用してもよい。Ｓ９０４では、３Ｄ処理装置８００は予測頂点座標を用いて頂点座標を符号化する。Ｓ９０５では、３Ｄ処理装置８００は符号データを出力する。
【００６８】
図１１のブロックと図１２の処理との対応関係は以下の通りである。Ｓ９０１は形状情報取得部８０１が行う。Ｓ９０２は面情報抽出部８０２及び面情報符号化部８０４が行う。Ｓ９０３は頂点座標抽出部８０３及び頂点座標予測部８０５が行う。Ｓ９０４は浮動小数符号化部８０６が行う。Ｓ９０４は符号出力部８０７が行う。
【００６９】
第４の実施の形態に係る３Ｄ処理装置８００によると、３Ｄポリゴンの処理において、第１または第３の実施の形態に係る符号化装置によって奏される作用効果と同様の作用効果が奏される。
【００７０】
［第４の実施の形態の変形例］
第４の実施の形態に適した符号化装置の改良方法について述べる。第４の実施の形態では３Ｄ形状情報の頂点座標を符号化装置への入力としている。頂点座標は３Ｄ空間内の３つのコンポーネント（Ｘ、Ｙ、Ｚ）の浮動小数から成り、各コンポーネントで浮動小数の密度や出現範囲が異なる。したがって、コンポーネント毎に出現するシンボルの分布が異なる。したがって、本変形例では、ＸＹＺのコンポーネント毎に符号化時のコンテキストを分離する。
【００７１】
また、３Ｄ形状情報の頂点座標に多くみられる性質として、固定小数表現で考えた時にある位以下が浮動小数の表現範囲（仮数部で表現できる範囲）であっても必ず０となる場合がある。図１３は、横軸に固定小数表現の小数位（５ならば小数第５位）、縦軸に１の出現確率（ここでは二進数表現を前提とするため、１でなければ０）をプロットした図である。これはＮＡＳＡが公開しているＮＡＳＡ  ３Ｄ  ＲｅｓｏｕｒｃｅｓのＣａｓｓｉｎｉ（ｈｔｔｐ：／／ｎａｓａ３ｄ．ａｒｃ．ｎａｓａ．ｇｏｖ／ｄｅｔａｉｌ／ｃａｓｓｉｎｉ）から抽出した頂点座標のＸコンポーネントを基に算出した。小数第３１位以下が全て０となっている。その他、スタンフォード大学が公開しているデータセットでも同様の性質が確認された。この要因としては、アスキーとバイナリとのデータ変換による情報欠損、ＣＡＤデータ処理効率化のための近似処理、形状取得センサの精度限界等が考えられる。
【００７２】
したがって、ｃａｓｓｉｎｉのデータに関して言えば、仮数の小数第３１位以下に相当する位は差分を取る必要が無い。本来、仮数の差分を取って符号化を行う場合、差分データにおいても小数第３１位以下は必ず０となるはずである。しかしながら、差分情報の冗長性を無くすためのモジュロ演算により、符号化時に小数第３１位以下に相当する位に１の信号が出現する場合が生じうる。このため差分を取ることで符号化効率が低下しうる。
【００７３】
上記の事情を鑑みて、浮動小数の符号化処理において、所定の位より下の位に関して差分を取らない仕組みを取り入れる。処理としては、図６に示されるＳ５０２、Ｓ５０３を図１４のＳ１１０１〜Ｓ１１０８に置き換える。図１４は、変形例に係る差分情報の生成処理の流れを示すフローチャートである。
【００７４】
差分をとる、とらないの閾となる特定の位を管理するための変数としてＴｍｉｎを定義し、Ｔｍｉｎの初期値を２７７とする。Ｓ１１０１では、本変形例に係る仮数差分生成部は、Ｇ＝Ｔｍｉｎ−ＥＡを求める。ただし、Ｇが０より小さい場合はＧを０とし、Ｇが２３より大きい場合はＧを２３とする。Ｓ１１０２では、仮数差分生成部は、ＭＡの上位（２３−Ｇ）ビットとＭＰの上位（２３−Ｇ）ビットとの差分を算出し、算出結果ををＤＵとする。Ｓ１１０３では、仮数差分生成部は、ＤＵを可逆な非負の（２３−Ｇ）ビットの表現ＤＵｍに変換する。Ｓ１１０４では、仮数差分生成部は、ＤＵｍを符号化バッファの上位（２３−Ｇ）ビットにセットし、ＭＡの下位Ｇビットを符号化バッファの下位Ｇビットにセットする。Ｓ１１０５では、仮数差分生成部は、値が１となるＭＡの位のなかで最下位の位のビットである最下位ビットｂｍｉｎを特定する。Ｓ１１０６では、仮数差分生成部は、ｔｍｉｎ＝ＥＡ＋ｂｍｉｎによりｔｍｉｎを算出する。Ｓ１１０７では、仮数差分生成部はｔｍｉｎとＴｍｉｎとを比較する。ｔｍｉｎ＜Ｔｍｉｎのとき、Ｓ１１０８で仮数差分生成部はＴｍｉｎ＝ｔｍｉｎとしてＴｍｉｎを更新する。Ｓ１１０７でｔｍｉｎ≧ＴｍｉｎのときまたはＳ１１０８における処理の後、処理は終了する。
【００７５】
本変形例の処理によると、固定小数で暫定的に全て０であった位に対しては、差分を取らずに符号化を行うことができ、符号化効率の低下を抑えるまたは防ぐことができる。なお、本変形例では頂点座標の符号化を行う毎に差分を取らない範囲を更新する場合を説明したが、これに限られない。例えば、仮数の下位７ビットは差分を取らず、上位１６ビットは差分を取るようにするなど、固定的に差分を取らない位を決定してもよい。
【００７６】
第４の実施の形態では浮動小数の符号化装置を用いて３Ｄ形状情報を圧縮する方法が実現される。また、３Ｄ形状情報特有の性質に応じた改良も可能である。このような構成により、下位ビットの情報が欠損した浮動小数に対しても、効率を落とすことなく浮動小数の予測符号化を実現することができる。
【００７７】
以上、実施の形態に係る装置の構成と動作について説明した。これらの実施の形態は例示であり、その各構成要素や各処理の組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００７８】
第４の実施の形態では、３Ｄ形状の頂点座標の符号化について説明したが、これに限られず、符号化対象が浮動小数で表現されていて、その予測値を求めることができるアプリケーションに第４の実施の形態に係る技術的思想を適用できる。例えば、３Ｄ形状のテクスチャを表現するテクスチャマップ（ＵＶマップ）や法線ベクトル、浮動小数表現されたＨＤＲ画像、距離画像、更には音声データを扱うシステムにも、第４の実施の形態に係る技術的思想を適用できる。
【００７９】
第４の実施の形態では、３ＤデータのＸＹＺの３つのコンポーネント毎にコンテキストの分離を行ったが、これに限られず、例えばＨＤＲ画像ならＲＧＢやＣＭＹなどの色空間コンポーネント毎にコンテキストの分離を行ってもよい。
【００８０】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００８１】
３０１  符号化装置、  ３０２  対象取得部、  ３０３  予測取得部、  ３０４  符号／指数抽出部、  ３０５  仮数抽出部、  ３０６  符号／指数差分生成部、  ３０７  仮数差分生成部、  ３０８  仮数分割部、  ３０９  符号化部、  ３１０  符号出力部。
【図１】
2018037891.tif 000004
【図２】
2018037891.tif 000005
【図３】
2018037891.tif 000006
【図４】
2018037891.tif 000007
【図５】
2018037891.tif 000008
【図６】
2018037891.tif 000009
【図７】
2018037891.tif 000010
【図８】
2018037891.tif 000011
【図９】
2018037891.tif 000012
【図１０】
2018037891.tif 000013
【図１１】
2018037891.tif 000014
【図１２】
2018037891.tif 000015
【図１３】
2018037891.tif 000016
【図１４】
2018037891.tif 000017