(57)【特許請求の範囲】
【請求項１】
複数の異なる条件で取得あるいは作成したテクスチャ群のデータを取得するテクスチャデータ取得手段と、
前記テクスチャ群のうち、前記条件に対応する値がある第１範囲内にあり、かつ、ピクセル位置がある第２範囲内にある複数のピクセルデータを１つの集まりとしてブロック化して、前記テクスチャ群のデータを複数のブロックデータに分割するブロック分割手段と、
前記分割されたブロックデータのそれぞれに対して、符号化を行なうブロックデータ符号化手段と、
前記符号化されたブロックデータを連結し、テクスチャ群の符号化データを生成するブロックデータ連結手段と、
前記生成されたテクスチャ群の符号化データを出力する出力手段と、を具備し、
前記ブロック分割手段は、前記取得したテクスチャ群のデータに含まれる複数のピクセルデータの分散値を算出する算出手段と、
各分散値がある値よりも小さいか否かを比較する比較手段と、
前記ある値以上の分散値を有するピクセルデータがある場合には、前記複数の条件のうちの１つに対応する、ピクセルデータの次元で、かつ、分散値の最も大きい次元を検出する検出手段と、
前記検出された次元で前記テクスチャ群のデータを２分割する分割手段と、を含み、
前記算出手段は、さらに、前記２分割されたデータごとに分散値を算出することを特徴とするテクスチャ符号化装置。
【請求項２】
前記ブロック分割手段は、複数の前記条件および前記ピクセル位置がある値を有するピクセルデータを基にして、該ピクセルデータと、該ピクセル位置が同一で各前記条件をある範囲内で変更した一定数のピクセルデータと、を１つの集まりとしてブロック化することを特徴とする請求項１に記載のテクスチャ符号化装置。
【請求項３】
複数の異なる条件で取得あるいは作成したテクスチャ群のデータを取得するテクスチャ取得手段と、
前記テクスチャ群のうち、前記条件に対応する値がある第１範囲内にあり、かつ、ピクセル位置がある第２範囲内にある複数のピクセルデータを１つの集まりとしてブロック化して、前記テクスチャ群のデータを複数のブロックデータに分割するブロック分割手段と、
前記分割されたブロックデータのそれぞれに対して、符号化を行なうブロックデータ符号化手段と、
前記符号化されたブロックデータのそれぞれの符号化誤差を算出する誤差算出手段と、
ブロックデータごとに、前記算出された符号化誤差と、符号化誤差がある範囲内である許容条件とを比較する比較手段と、
前記算出された符号化誤差が前記許容条件を満たすブロックデータについては、前記符号化されたブロックデータのそれぞれを連結するブロックデータ連結手段と、
前記連結されたブロックデータをテクスチャ群の符号化データとして出力する出力手段と、を具備し、
前記算出された符号化誤差が前記許容条件を満たさないブロックデータについては、前記ブロック分割手段が、該ブロックデータを前記分割されたブロックデータよりも小さいデータ量を有するブロックデータに分割することを特徴とするテクスチャ符号化装置。
【請求項４】
前記ブロックデータ符号化手段は、ベクトル量子化によって前記分割されたブロックデータごとに符号化を行なうことを特徴とする請求項１から請求項３のいずれか１項に記載のテクスチャ符号化装置。
【請求項５】
前記ブロックデータ符号化手段は、
各前記分割されたブロックデータからベクトル量子化により複数の代表ベクトルを算出するベクトル算出手段と、
各ブロックデータに対応する複数の代表ベクトルを含むコードブックデータと、各前記ブロックデータ内の各ピクセルデータがどの代表ベクトルに対応するかの情報であるインデックスデータとを作成する作成手段と、を含むことを特徴とする請求項１から請求項３のいずれか１項に記載のテクスチャ符号化装置。
【請求項６】
前記ブロックデータ符号化手段は、復号の元データとして利用されるコードブックデータ、および、各ピクセルの復号方法を識別するためのインデックスデータを作成する作成手段を含み、
前記符号化されたブロックデータは、前記コードブックデータおよび前記インデックスデータを含むことを特徴とする請求項１から請求項３のいずれか１項に記載のテクスチャ符号化装置。
【請求項７】
複数の異なる条件で取得あるいは作成したテクスチャ群のデータを取得するテクスチャデータ取得手段と、
前記テクスチャ群のうち、前記条件に対応する値がある第１範囲内にあり、かつ、ピクセル位置がある第２範囲内にある複数のピクセルデータを１つの集まりとしてブロック化して、前記テクスチャ群のデータを複数のブロックデータに分割するブロック分割手段と、
前記分割されたブロックデータのそれぞれに対して、符号化を行なうブロックデータ符号化手段と、
前記符号化されたブロックデータを連結し、テクスチャ群の符号化データを生成するブロックデータ連結手段と、
前記生成されたテクスチャ群の符号化データを出力する出力手段と、を具備し、
前記ブロックデータ符号化手段は、
各前記分割されたブロックデータからベクトル量子化により複数の代表ベクトルを算出するベクトル算出手段と、
各ブロックデータに対応する複数の代表ベクトルを含むコードブックデータと、各前記ブロックデータ内の各ピクセルデータがどの代表ベクトルに対応するかの情報であるインデックスデータとを作成する作成手段と、を含み、
前記ブロックデータ符号化手段は、
複数のブロックを１つの集まりとしたマクロブロック単位、または、テクスチャ群全体に、前記コードブックデータを付与する付与手段と、
各ピクセルのインデックスデータにおいて、ブロック内のコードブックデータに加えて、マクロブロック単位のコードブックデータ、または、テクスチャ群全体のコードブックデータを用いて復号する方法を示す、各ピクセルのインデックスデータを作成する作成手段と、を含むことを特徴とするテクスチャ符号化装置。
【請求項８】
複数の異なる条件で取得あるいは作成したテクスチャ群のデータを取得するテクスチャデータ取得手段と、
前記テクスチャ群のうち、前記条件に対応する値がある第１範囲内にあり、かつ、ピクセル位置がある第２範囲内にある複数のピクセルデータを１つの集まりとしてブロック化して、前記テクスチャ群のデータを複数のブロックデータに分割するブロック分割手段と、
前記分割されたブロックデータのそれぞれに対して、符号化を行なうブロックデータ符号化手段と、
前記符号化されたブロックデータを連結し、テクスチャ群の符号化データを生成するブロックデータ連結手段と、
前記生成されたテクスチャ群の符号化データを出力する出力手段と、を具備し、
前記ブロックデータ符号化手段は、復号の元データとして利用されるコードブックデータ、および、各ピクセルの復号方法を識別するためのインデックスデータを作成する作成手段を含み、
前記符号化されたブロックデータは、前記コードブックデータおよび前記インデックスデータを含み、
前記ブロックデータ符号化手段は、
複数のブロックを１つの集まりとしたマクロブロック単位、または、テクスチャ群全体に、前記コードブックデータを付与する付与手段と、
各ピクセルのインデックスデータにおいて、ブロック内のコードブックデータに加えて、マクロブロック単位のコードブックデータ、または、テクスチャ群全体のコードブックデータを用いて復号する方法を示す、各ピクセルのインデックスデータを作成する作成手段と、を含むことを特徴とするテクスチャ符号化装置。
【請求項９】
前記作成手段は、前記コードブックデータに、ブロックデータ内の代表的なピクセルデータを示す代表ベクトル、または、ある代表ベクトルからの変化量を保持するベクトル変化量、または、複数の代表ベクトルを補間するための補間率を含めることを特徴とする請求項６または請求項８に記載のテクスチャ符号化装置。
【請求項１０】
複数の異なる条件で取得あるいは作成したテクスチャ群のデータを取得するテクスチャデータ取得手段と、
前記テクスチャ群のうち、前記条件に対応する値がある第１範囲内にあり、かつ、ピクセル位置がある第２範囲内にある複数のピクセルデータを１つの集まりとしてブロック化して、前記テクスチャ群のデータを複数のブロックデータに分割するブロック分割手段と、
前記分割されたブロックデータのそれぞれに対して、符号化を行なうブロックデータ符号化手段と、
前記符号化されたブロックデータを連結し、テクスチャ群の符号化データを生成するブロックデータ連結手段と、
前記生成されたテクスチャ群の符号化データを出力する出力手段と、を具備し、
前記ブロックデータ符号化手段は、
各前記分割されたブロックデータからベクトル量子化により複数の代表ベクトルを算出するベクトル算出手段と、
各ブロックデータに対応する複数の代表ベクトルを含むコードブックデータと、各前記ブロックデータ内の各ピクセルデータがどの代表ベクトルに対応するかの情報であるインデックスデータとを作成する作成手段と、を含み、
前記ブロックデータ符号化手段は、各ピクセルデータのベクトルの成分が、色情報、透過度情報、法線ベクトル情報、深度情報、照明効果情報、グラフィックスデータの作成において必要となるベクトル情報からなるブロックデータを符号化することを特徴とするテクスチャ符号化装置。
【請求項１１】
複数の異なる条件で取得あるいは作成したテクスチャ群のデータを取得するテクスチャデータ取得手段と、
前記テクスチャ群のうち、前記条件に対応する値がある第１範囲内にあり、かつ、ピクセル位置がある第２範囲内にある複数のピクセルデータを１つの集まりとしてブロック化して、前記テクスチャ群のデータを複数のブロックデータに分割するブロック分割手段と、
前記分割されたブロックデータのそれぞれに対して、符号化を行なうブロックデータ符号化手段と、
前記符号化されたブロックデータを連結し、テクスチャ群の符号化データを生成するブロックデータ連結手段と、
前記生成されたテクスチャ群の符号化データを出力する出力手段と、を具備し、
前記ブロックデータ符号化手段は、復号の元データとして利用されるコードブックデータ、および、各ピクセルの復号方法を識別するためのインデックスデータを作成する作成手段を含み、
前記符号化されたブロックデータは、前記コードブックデータおよび前記インデックスデータを含み、
前記ブロックデータ符号化手段は、各ピクセルデータのベクトルの成分が、色情報、透過度情報、法線ベクトル情報、深度情報、照明効果情報、グラフィックスデータの作成において必要となるベクトル情報からなるブロックデータを符号化することを特徴とするテクスチャ符号化装置。
【請求項１２】
前記ブロックデータ符号化手段は、前記成分のうちの１つ以上の異なる成分を組み合わせてベクトル化し、ベクトル量子化の際に、各前記成分の変化の特性に応じて、前記インデックスデータを成分ごとに割り当てたり、前記コードブックデータを成分ごとに割り当てたりすることを特徴とする請求項１０または請求項１１に記載のテクスチャ符号化装置。
【請求項１３】
前記ブロックデータ符号化手段は、前記成分のうち、ある変化量よりも変化の少ない成分に対して割り当てる符号量よりも、ある変化量以上に変化の多い成分に対して多くの符号量を割り当てることを特徴とする請求項１０から請求項１２のいずれか１項に記載のテクスチャ符号化装置。
【請求項１４】
複数の異なる条件で取得あるいは作成したテクスチャ群の符号化データを取得する符号化データ取得手段と、
前記符号化データに含まれるブロックのサイズを固定ブロックサイズに変換する符号化データ変換手段と、
ピクセル位置を指定するテクスチャ座標および前記条件を指定する条件パラメータを取得する指定データ取得手段と、
前記変換された符号化データの中から、前記テクスチャ座標および前記条件パラメータに対応するブロックデータを抽出するブロックデータ抽出手段と、
前記抽出されたブロックデータを復号するブロックデータ復号化手段と、
前記復号されたデータをもとにピクセルデータを算出するピクセルデータ算出手段と、
前記算出されたピクセルデータを出力するピクセルデータ出力手段と、を具備することを特徴とするテクスチャ復号化装置。
【請求項１５】
複数の異なる条件で取得あるいは作成したテクスチャ群の符号化データを取得する符号化データ取得手段と、
ピクセル位置を指定するテクスチャ座標および前記条件を指定する条件パラメータを取得する指定データ取得手段と、
前記符号化データの中から、前記テクスチャ座標および前記条件パラメータに対応するブロックデータを抽出するブロックデータ抽出手段と、
前記抽出されたブロックデータを復号するブロックデータ復号化手段と、
前記復号されたデータをもとにピクセルデータを算出するピクセルデータ算出手段と、
前記算出されたピクセルデータを出力するピクセルデータ出力手段と、を具備し、
前記符号化データ変換手段は、請求項１に記載の分割が行なわれた符号化データを、請求項２に記載のブロック化が行なわれた符号化データに変換することを特徴とするテクスチャ復号化装置。
【請求項１６】
テクスチャマッピングの対象となるグラフィックスデータ、および、テクスチャマッピングの手法を指定するマッピングパラメータを取得する取得手段と、
前記マッピングパラメータを参照して、前記ピクセルデータを、前記グラフィックスデータにマッピングするマッピング手段と、
前記マッピングされたグラフィックスデータを出力するグラフィックスデータ出力手段と、をさらに具備することを特徴とする請求項１４または請求項１５に記載のテクスチャ復号化装置。
【請求項１７】
前記符号化データ取得手段は、請求項２記載のブロック分割手段を用いたテクスチャ符号化装置によって符号化されたデータを取得し、
前記ブロックデータ抽出手段は、請求項２記載のブロック化にしたがって、ブロックデータにアクセスすることを特徴とする請求項１４から請求項１６のいずれか１項に記載のテクスチャ復号化装置。
【請求項１８】
前記符号化データ取得手段は、請求項１記載のブロック分割手段を用いたテクスチャ符号化装置によって符号化されたデータを取得し、
前記ブロックデータ抽出手段は、ピクセル位置を指定するテクスチャ座標および前記条件を指定する条件パラメータに加えて、前記テクスチャ座標や前記条件パラメータをもとにアクセスするべきブロックデータを決定するためのテーブルデータであるブロック指定データも入力し、
前記テクスチャ座標、前記条件パラメータ、前記ブロック指定データに基づいて、アクセスするべきブロックデータを決定して、ブロックデータを抽出することを特徴とする請求項１４から請求項１６のいずれか１項に記載のテクスチャ復号化装置。
【請求項１９】
複数の異なる条件で取得あるいは作成したテクスチャ群の符号化データを取得する符号化データ取得手段と、
ピクセル位置を指定するテクスチャ座標および前記条件を指定する条件パラメータを取得する指定データ取得手段と、
前記符号化データの中から、前記テクスチャ座標および前記条件パラメータに対応するブロックデータを抽出するブロックデータ抽出手段と、
前記抽出されたブロックデータを復号するブロックデータ復号化手段と、
前記復号されたデータをもとにピクセルデータを算出するピクセルデータ算出手段と、
前記算出されたピクセルデータを出力するピクセルデータ出力手段と、を具備し、
前記符号化データ取得手段は、請求項１記載のブロック分割手段を用いたテクスチャ符号化装置によって符号化されたデータを取得し、
前記ブロックデータ抽出手段は、ピクセル位置を指定するテクスチャ座標および前記条件を指定する条件パラメータに加えて、前記テクスチャ座標や前記条件パラメータをもとにアクセスするべきブロックデータを決定するためのテーブルデータであるブロック指定データも入力し、
前記テクスチャ座標、前記条件パラメータ、前記ブロック指定データに基づいて、アクセスするべきブロックデータを決定して、ブロックデータを抽出することを特徴とするテクスチャ復号化装置。
【請求項２０】
テクスチャマッピングの対象となるグラフィックスデータ、および、テクスチャマッピングの手法を指定するマッピングパラメータを取得する取得手段と、
前記マッピングパラメータを参照して、前記ピクセルデータを、前記グラフィックスデータにマッピングするマッピング手段と、
前記マッピングされたグラフィックスデータを出力するグラフィックスデータ出力手段と、をさらに具備することを特徴とする請求項１９に記載のテクスチャ復号化装置。
【請求項２１】
前記ブロックデータ抽出手段は、前記条件を指定する条件パラメータが符号化されたテクスチャ群の中の取得条件または作成条件とちょうど適合するものが存在しない場合には、アクセスするべきブロックデータが２以上になり、
ピクセル位置を指定するテクスチャ座標、前記条件パラメータ、前記テクスチャ座標や前記条件パラメータをもとにアクセスするべきブロックデータを決定するためのテーブルデータであるブロック指定データによって、いくつのブロックデータにアクセスするべきかを決定して、必要となる全てのブロックデータを抽出し、
前記符号化データが、ブロック化されている場合には、一度に複数の条件のピクセルデータを抽出することを特徴とする請求項１４から請求項１６のいずれか１項に記載のテクスチャ復号化装置。
【請求項２２】
複数の異なる条件で取得あるいは作成したテクスチャ群の符号化データを取得する符号化データ取得手段と、
ピクセル位置を指定するテクスチャ座標および前記条件を指定する条件パラメータを取得する指定データ取得手段と、
前記符号化データの中から、前記テクスチャ座標および前記条件パラメータに対応するブロックデータを抽出するブロックデータ抽出手段と、
前記抽出されたブロックデータを復号するブロックデータ復号化手段と、
前記復号されたデータをもとにピクセルデータを算出するピクセルデータ算出手段と、
前記算出されたピクセルデータを出力するピクセルデータ出力手段と、を具備し、
前記ブロックデータ抽出手段は、前記条件を指定する条件パラメータが符号化されたテクスチャ群の中の取得条件または作成条件とちょうど適合するものが存在しない場合には、アクセスするべきブロックデータが２以上になり、
ピクセル位置を指定するテクスチャ座標、前記条件パラメータ、前記テクスチャ座標や前記条件パラメータをもとにアクセスするべきブロックデータを決定するためのテーブルデータであるブロック指定データによって、いくつのブロックデータにアクセスするべきかを決定して、必要となる全てのブロックデータを抽出し、
前記符号化データが、ブロック化されている場合には、一度に複数の条件のピクセルデータを抽出することを特徴とするテクスチャ復号化装置。
【請求項２３】
テクスチャマッピングの対象となるグラフィックスデータ、および、テクスチャマッピングの手法を指定するマッピングパラメータを取得する取得手段と、
前記マッピングパラメータを参照して、前記ピクセルデータを、前記グラフィックスデータにマッピングするマッピング手段と、
前記マッピングされたグラフィックスデータを出力するグラフィックスデータ出力手段と、をさらに具備することを特徴とする請求項２２に記載のテクスチャ復号化装置。
【請求項２４】
複数の異なる条件で取得あるいは作成したテクスチャ群のデータを取得し、
前記テクスチャ群のうち、前記条件に対応する値がある第１範囲内にあり、かつ、ピクセル位置がある第２範囲内にある複数のピクセルデータを１つの集まりとしてブロック化して、前記テクスチャ群のデータを複数のブロックデータに分割し、
前記分割されたブロックデータのそれぞれに対して、符号化を行い、
前記符号化されたブロックデータのそれぞれの符号化誤差を算出し、
ブロックデータごとに、前記算出された符号化誤差と、符号化誤差がある範囲内である許容条件とを比較し、
前記算出された符号化誤差が前記許容条件を満たすブロックデータについては、前記符号化されたブロックデータのそれぞれを連結し、
前記連結されたブロックデータをテクスチャ群の符号化データとして出力し、
前記算出された符号化誤差が前記許容条件を満たさないブロックデータについては、該ブロックデータを前記分割されたブロックデータよりも小さいデータ量を有するブロックデータに分割することを特徴とするテクスチャ符号化方法。
【請求項２５】
複数の異なる条件で取得あるいは作成したテクスチャ群の符号化データを取得し、
前記符号化データに含まれるブロックのサイズを固定ブロックサイズに変換し、
ピクセル位置を指定するテクスチャ座標および前記条件を指定する条件パラメータを取得し、
前記変換された符号化データの中から、前記テクスチャ座標および前記条件パラメータに対応するブロックデータを抽出し、
前記抽出されたブロックデータを復号し、
前記復号されたデータをもとにピクセルデータを算出し、
前記算出されたピクセルデータを出力することを特徴とするテクスチャ復号化方法。
【請求項２６】
コンピュータを、
複数の異なる条件で取得あるいは作成したテクスチャ群のデータを取得するテクスチャ取得手段と、
前記テクスチャ群のうち、前記条件に対応する値がある第１範囲内にあり、かつ、ピクセル位置がある第２範囲内にある複数のピクセルデータを１つの集まりとしてブロック化して、前記テクスチャ群のデータを複数のブロックデータに分割するブロック分割手段と、
前記分割されたブロックデータのそれぞれに対して、符号化を行なうブロックデータ符号化手段と、
前記符号化されたブロックデータのそれぞれの符号化誤差を算出する誤差算出手段と、
ブロックデータごとに、前記算出された符号化誤差と、符号化誤差がある範囲内である許容条件とを比較する比較手段と、
前記算出された符号化誤差が前記許容条件を満たすブロックデータについては、前記符号化されたブロックデータのそれぞれを連結するブロックデータ連結手段と、
前記連結されたブロックデータをテクスチャ群の符号化データとして出力する出力手段として機能させ、
前記算出された符号化誤差が前記許容条件を満たさないブロックデータについては、前記ブロック分割手段が、該ブロックデータを前記分割されたブロックデータよりも小さいデータ量を有するブロックデータに分割することを特徴とするテクスチャ符号化プログラム。
【請求項２７】
コンピュータを、
複数の異なる条件で取得あるいは作成したテクスチャ群の符号化データを取得する符号化データ取得手段と、
前記符号化データに含まれるブロックのサイズを固定ブロックサイズに変換する符号化データ変換手段と、
ピクセル位置を指定するテクスチャ座標および前記条件を指定する条件パラメータを取得する指定データ取得手段と、
前記変換された符号化データの中から、前記テクスチャ座標および前記条件パラメータに対応するブロックデータを抽出するブロックデータ抽出手段と、
前記抽出されたブロックデータを復号するブロックデータ復号化手段と、
前記復号されたデータをもとにピクセルデータを算出するピクセルデータ算出手段と、
前記算出されたピクセルデータを出力するピクセルデータ出力手段として機能させるためのテクスチャ復号化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、３次元コンピュータグラフィックス分野における高品位なテクスチャマッピング技術を備えるテクスチャ符号化装置、テクスチャ復号化装置、方法、およびプログラムに関し、特に、複数の条件で取得あるいは作成したテクスチャデータを符号化することによるデータ量の圧縮、グラフィックスＬＳＩ上でテクスチャマッピングをする際のテクスチャデータの効率的な復号化およびマッピングを行う、テクスチャ符号化装置、テクスチャ復号化装置、方法、およびプログラムに関する。
【背景技術】
【０００２】
近年、３次元コンピュータグラフィックス（ＣＧ）技術が急速に発展しており、実写の映像と見間違える程のリアルなグラフィックス表現が可能となってきている。しかしながら、映画やテレビなどで制作される高品位なＣＧは、クリエイタの長時間にわたる地道な手作業によって生み出されるものが多く、膨大なコストを要してしまう。今後、さらに多様なＣＧ表現が求められると考えられ、いかにコストをかけず簡単に高品位なＣＧを作り出せるかが課題となってくる。
【０００３】
ＣＧ表現の中で特に難しいとされるのが、布地や皮膚、毛などの表現である。これらの柔らかい質感を持つ素材に対しては、その物体を眺める方向（視点方向）および光を照射する方向（光源方向）によって変化する物体表面の色変化や物体自身が作り出す影（self shadow）の表現が大変重要となる。そこで近年、実在する素材を撮影し、その素材の特性を再現することによってリアルなＣＧを作り出す手法が盛んに利用されるようになってきている。視点方向および光源方向に応じた表面質感の表現に関しては、ＢＲＤＦ（Bi-directional Reference Distribution Function）やＢＴＦ（Bi-directional Texture Function）、ＰＴＭ（Polynomial Texture Maps）と呼ばれるモデル化手法の研究が進められている（例えば、特許文献１参照）。
【特許文献１】米国特許第６，２９７，８３４号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００４】
視点方向および光源方向に応じて変化する物体表面の光学的特性を、テクスチャデータを用いて表現しようとした場合、視点方向や光源方向の条件が異なる大量のテクスチャ画像を必要とするため、実用的なシステムとして利用できていないのが現状である。
【０００５】
これらの手法は、取得データを解析することによって関数モデルを導出するというアプローチを採っている。しかしながら、実在する素材の不規則な陰影変化や輝度変化を関数モデル化するのには限界があり、多くの課題が残されている。データ量が膨大であるということはその中でも大きな問題である。
【０００６】
この発明は、上述した事情を考慮してなされたものであり、データ量を圧縮することができるテクスチャ符号化装置、方法、およびプログラムを提案すること、また、符号化されたテクスチャ群を用いてテクスチャマッピングを行なう際に、その復号化やマッピングを高速に実現できるテクスチャ復号化装置、方法、およびプログラムを提案することを目的としている。
【課題を解決するための手段】
【０００７】
上述の課題を解決するため、本発明のテクスチャ符号化装置は、複数の異なる条件で取得あるいは作成したテクスチャ群のデータを取得するテクスチャデータ取得手段と、前記テクスチャ群のうち、前記条件に対応する値がある第１範囲内にあり、かつ、ピクセル位置がある第２範囲内にある複数のピクセルデータを１つの集まりとしてブロック化して、前記テクスチャ群のデータを複数のブロックデータに分割するブロック分割手段と、前記分割されたブロックデータのそれぞれに対して、符号化を行なうブロックデータ符号化手段と、前記符号化されたブロックデータを連結し、テクスチャ群の符号化データを生成するブロックデータ連結手段と、前記生成されたテクスチャ群の符号化データを出力する出力手段と、を具備し、前記ブロック分割手段は、前記取得したテクスチャ群のデータに含まれる複数のピクセルデータの分散値を算出する算出手段と、各分散値がある値よりも小さいか否かを比較する比較手段と、前記ある値以上の分散値を有するピクセルデータがある場合には、前記複数の条件のうちの１つに対応する、ピクセルデータの次元で、かつ、分散値の最も大きい次元を検出する検出手段と、前記検出された次元で前記テクスチャ群のデータを２分割する分割手段と、を含み、前記算出手段は、さらに、前記２分割されたデータごとに分散値を算出することを特徴とする。
【０００８】
また、本発明のテクスチャ符号化装置は、複数の異なる条件で取得あるいは作成したテクスチャ群のデータを取得するテクスチャ取得手段と、前記テクスチャ群のうち、前記条件に対応する値がある第１範囲内にあり、かつ、ピクセル位置がある第２範囲内にある複数のピクセルデータを１つの集まりとしてブロック化して、前記テクスチャ群のデータを複数のブロックデータに分割するブロック分割手段と、前記分割されたブロックデータのそれぞれに対して、符号化を行なうブロックデータ符号化手段と、前記符号化されたブロックデータのそれぞれの符号化誤差を算出する誤差算出手段と、ブロックデータごとに、前記算出された符号化誤差と、符号化誤差がある範囲内である許容条件とを比較する比較手段と、前記算出された符号化誤差が前記許容条件を満たすブロックデータについては、前記符号化されたブロックデータのそれぞれを連結するブロックデータ連結手段と、前記連結されたブロックデータをテクスチャ群の符号化データとして出力する出力手段と、を具備し、前記算出された符号化誤差が前記許容条件を満たさないブロックデータについては、前記ブロック分割手段が、該ブロックデータを前記分割されたブロックデータよりも小さいデータ量を有するブロックデータに分割することを特徴とする。
【０００９】
本発明のテクスチャ復号化装置は、複数の異なる条件で取得あるいは作成したテクスチャ群の符号化データを取得する符号化データ取得手段と、ピクセル位置を指定するテクスチャ座標および前記条件を指定する条件パラメータを取得する指定データ取得手段と、前記符号化データの中から、前記テクスチャ座標および前記条件パラメータに対応するブロックデータを抽出するブロックデータ抽出手段と、前記抽出されたブロックデータを復号するブロックデータ復号化手段と、前記復号されたデータをもとにピクセルデータを算出するピクセルデータ算出手段と、前記算出されたピクセルデータを出力するピクセルデータ出力手段と、を具備し、前記符号化データ変換手段は、請求項１に記載の分割が行なわれた符号化データを、請求項２に記載のブロック化が行なわれた符号化データに変換することを特徴とする。
【００１０】
また、本発明のテクスチャ復号化装置は、複数の異なる条件で取得あるいは作成したテクスチャ群の符号化データを取得する符号化データ取得手段と、前記符号化データに含まれるブロックのサイズを固定ブロックサイズに変換する符号化データ変換手段と、ピクセル位置を指定するテクスチャ座標および前記条件を指定する条件パラメータを取得する指定データ取得手段と、前記変換された符号化データの中から、前記テクスチャ座標および前記条件パラメータに対応するブロックデータを抽出するブロックデータ抽出手段と、前記抽出されたブロックデータを復号するブロックデータ復号化手段と、前記復号されたデータをもとにピクセルデータを算出するピクセルデータ算出手段と、前記算出されたピクセルデータを出力するピクセルデータ出力手段と、を具備することを特徴とする。
【発明の効果】
【００１９】
本発明のテクスチャ符号化装置、方法、およびプログラムによれば、データ量を圧縮することができ、また、テクスチャ復号化装置、方法、およびプログラムによれば、要求するピクセルデータを抽出する処理速度も向上させることができる。
【発明を実施するための最良の形態】
【００２０】
以下、図面を参照しながら本発明の実施形態に係るテクスチャ符号化装置、テクスチャ復号化装置、方法、およびプログラムについて詳細に説明する。  
本発明の実施形態に係るテクスチャ符号化装置、テクスチャ復号化装置、方法、およびプログラムは、複数の異なる視点／光源などの条件で取得あるいは作成されたテクスチャ群を符号化・復号化し、さらに、グラフィックスデータに対してテクスチャマッピング処理を行なうための装置である。
【００２１】
また、本発明の実施形態に係るテクスチャ符号化装置、テクスチャ復号化装置、方法、およびプログラムは、視点方向や光源方向に応じて変化する素材表面の質感表現を効率的に実現するだけではなく、様々な条件あるいは様々な成分に適用することができる。  
様々な条件への適用とは、視点条件や光源条件だけではなく、時間・速度・加速度・圧力・温度・湿度など自然界での様々な条件に応じて変化する信号に対しても適用できるということである。  
また、様々な成分への適用とは、ピクセルデータとして色成分を扱うのではなく、法線ベクトル成分や深度成分、透明度成分、照明効果成分などの成分に対しても適用できるということである。
【００２２】
（第１の実施形態）  
第１の実施形態では、テクスチャ符号化装置の一連の処理例を示す。本実施形態におけるブロック分割部は、固定ブロックサイズでの分割とする。固定サイズで分割されたブロックデータに対して、様々なブロックデータ符号化手段で符号化される処理を具体的に示す。
【００２３】
本実施形態のテクスチャ符号化装置の構成について図１を参照して説明する。  
図１に示すテクスチャ符号化装置は、複数の異なる条件で取得あるいは作成したテクスチャ群を入力し、ピクセル位置の方向ならびに条件変化の方向（例えば、光源方向、視点方向）にブロック分割し、ブロック単位に符号化を行なうものである。
【００２４】
本実施形態のテクスチャ符号化装置は、入力部１０１、ブロック分割部１０２、ブロックデータ符号化部１０３、ブロックデータ連結部１０４、出力部１０５を備えている。  
入力部１０１は、複数の異なる条件で取得あるいは作成したテクスチャ群のデータを入力する。  
ブロック分割部１０２は、入力部１０１で入力されたテクスチャ群のうち、取得した条件が近く、かつ、ピクセル位置が近い複数のピクセルデータを１つの集まりとしてブロック化することによって、テクスチャ群のデータを複数のブロックデータに分割する。  
ブロックデータ符号化部１０３は、ブロック分割部１０２によって分割されたそれぞれのブロックデータに対して、符号化を行なう。  
ブロックデータ連結部１０４は、ブロックデータ符号化部１０３によって符号化されたブロックデータを連結し、テクスチャ群の符号化データを生成する。  
出力部１０５は、ブロックデータ連結部１０４によって生成されたテクスチャ群の符号化データを出力する。
【００２５】
本実施形態のテクスチャ符号化装置の動作について図２を参照して説明する。  
＜ステップＳ２０１＞  
入力部１０１がテクスチャ群のデータを入力する。図３に示すような空間の中で、視点および光源の位置を（すなわち、図３に示すθｃ，φｃ，θｌ，φｌ）をそれぞれ一定間隔ずつ変化させながらテクスチャを取得する。  
入力部１０１は、例えば、下記の表１に示したようにそれぞれの角度を変化させてテクスチャを取得する。ただし、単位はdegree（度）とする。この場合、視点／光源ともにθ方向には２０度間隔で変化させて１８サンプル、φ方向には７０度まで１０度間隔で変化させて８サンプルの条件で、テクスチャを取得している。したがって、合計２０，７３６（１８×８×１８×８）枚ものテクスチャを取得することになり、仮に、テクスチャサイズが２５６×２５６ピクセル（２４ビットカラー）であったとすると、そのデータ量は約３．８ＧＢとなってしまい、テクスチャマッピングに利用するテクスチャ素材として現実的に扱えるデータ量ではなくなってしまう。
【表１】
0004444180.tif 000002
【００２６】
そこで、高次元テクスチャ生成技術などを用いることによって、小さなテクスチャデータで任意サイズのテクスチャを表現するといった手法を用いることができる。この高次元テクスチャ生成技術は、複数の異なる条件で取得あるいは作成したテクスチャ群を用いて、それぞれの条件に対応する任意サイズのテクスチャ群を生成し、小さなテクスチャ群のデータを保持するだけで、任意サイズのテクスチャを再現する。そこで仮に、３２×３２ピクセルのテクスチャサイズで済むようになったとすると、そのデータ量は約６０ＭＢとなる。しかしながら、これでもテクスチャデータを十分に圧縮できたとは言えず、さらなる圧縮が必要である。
【００２７】
＜ステップＳ２０２＞  
次に、ブロック分割部１０２が取得されたテクスチャ群をブロック分割する。このブロック分割処理では、各パラメータの数値が近いピクセルデータ同士を１つの集まりとして考えブロック化を行なう。ここでいうパラメータとは、テクスチャ座標の横方向を示すｕや縦方向を示すｖ、視点方向の条件を示すθｃやφｃ、光源方向の条件を示すθｌやφｌなどのようなピクセルデータを抽出するための位置や条件を示す変数のことであり、本実施形態の場合、６次元のパラメータによってピクセルデータを抽出できることが分かる。すなわち、
（ｕ，ｖ，θｃ，φｃ，θｌ，φｌ）
である。
【００２８】
いくつのピクセルデータを１つのブロックとするかは、自由に決定することができるが、本実施形態では、ある固定サイズのブロック分割手法で分割する。例えば、同じピクセル位置で、かつ、θｃ，φｃ，θｌ，φｌの４次元においてそれぞれ２通りずつサンプリングしたピクセルデータを１つのブロックにしたとすると、１つのブロックデータは下記の表２のようになる。
【表２】
0004444180.tif 000003
【００２９】
表２は、（ｕ，ｖ，θｃ，φｃ，θｌ，φｌ）＝（０，０，０，０，０，０）の条件で抽出されるピクセルデータと、以下、各列の組み合わせを満たすピクセルデータとを合わせて１６個のピクセルデータが１つのブロックとなっていることを示している。ブロック分割部１０２がこのようなブロック化を行なうことによって、例えば、２０，７３６枚の３２×３２ピクセルサイズのテクスチャ群、すなわち、２１，２３３，６６４（２０，７３６×３２×３２）個のピクセルデータが、１，３２７，１０４（２１，２３３，６６４÷１６）個のブロックデータに分割されることになる。
【００３０】
また、ブロック分割部１０２が行うブロック分割の手法は、ｕ，ｖの次元、つまりテクスチャ空間の方向にもブロック化することも可能であるが、ここでは、同じピクセル位置のピクセルデータのみをブロック化している。なぜなら、同じピクセル位置だけで符号化した方が、前述した高次元テクスチャ生成技術との相性が良いからである。このような分割手法であれば符号化データのままピクセルの特徴を近似的に調べることができ、ピクセル間の類似性を容易に調べることができる。したがって、テクスチャ群を符号化した後、任意サイズのテクスチャを生成してからグラフィックスデータにマッピングすることも可能となる。
【００３１】
＜ステップＳ２０３、Ｓ２０４＞  
次に、ブロックデータ符号化部１０３が各ブロックデータの符号化を行なう。全てのブロックデータが符号化されるまでステップＳ２０３を行う（ステップＳ２０４）。ブロックデータの符号化処理では、ベクトル量子化を用いて、例えば１６個のピクセルデータ（カラーベクトルデータ）から４個の代表ベクトルを算出する。代表ベクトルの算出方法については、後に図１７を参照して説明する。この算出方法は、一般によく知られているＫ−ｍｅａｎｓ法やＬＢＧ法などと呼ばれるベクトル量子化の手法を用いている。  
１６個のピクセルデータ（斜線の丸印）が図４に示すような分布をしていた場合、ベクトル量子化によって黒色の丸印で示したような代表ベクトルを求めることができる。このようにして求められた代表ベクトル＜Ｃ０＞，＜Ｃ１＞，＜Ｃ２＞，＜Ｃ３＞をブロック内のコードブックデータとする（ここで、＜Ａ＞は「ベクトルＡ」を表すとする。以下、この記法にしたがいベクトルを表記する）。そして、１６個のピクセルデータがそれぞれどの代表ベクトルを選択するかどうかを示すインデックスデータを２ビットで表現する。
【００３２】
こうして符号化されたブロックデータのフォーマットを図５に示す。インデックスデータが“００”であれば＜Ｃ０＞が選ばれ、“０１”であれば＜Ｃ１＞が選ばれ、“１０”であれば＜Ｃ２＞が選ばれ、“１１”であれば＜Ｃ３＞が選ばれるという規則になっている。このように、インデックスデータの値に応じて、復号化の際の代表ベクトルが選択される。このような手法が最も基本的な符号化であるが、この他にも以下に示すような符号化を行なうことができる。ここでは、５つの例を示す。
【００３３】
１．《ベクトル変化量を用いた符号化》  
４個の代表ベクトルを求めるところまでは、上で説明した手法と同様に処理するが、その後、ある代表ベクトルを基準ベクトルとして、他の代表ベクトルをその基準ベクトルからの変化量を表わすベクトルに変換する。その様子を表わしたのが、図６である。代表ベクトル＜Ｃ０＞，＜Ｃ１＞，＜Ｃ２＞，＜Ｃ３＞を求めた後に、  
＜Ｓ１＞＝＜Ｃ１＞−＜Ｃ０＞  
＜Ｓ２＞＝＜Ｃ２＞−＜Ｃ０＞  
＜Ｓ３＞＝＜Ｃ３＞−＜Ｃ０＞  
によって定まる３個のベクトル変化量＜Ｓ１＞，＜Ｓ２＞，＜Ｓ３＞を求める。こうして計算された代表ベクトルとベクトル変化量をコードブックに含めて符号化したものを図７に示す。このようにして、ベクトル変化量を用いて符号化する手法は、視点方向や光源方向の変化によってそれほど色の変化が起こらないような素材に大変有効である。なぜなら、ベクトル変化量では変化量だけを表現できればよいため、少ないビット数を割り当てるだけでよいからである。カラーベクトルの分布によっては、代表ベクトルの数とベクトル変化量の数のバランスを変えることもできる。また、代表ベクトル＜Ｃ０＞，＜Ｃ１＞，＜Ｃ２＞，＜Ｃ３＞の中から基準ベクトルを選び出す際、ベクトル変化量を最も小さくできるものを選択することによって、ベクトル変化量に割り当てるビット数をさらに小さくすることができる。
【００３４】
２．《補間率を用いた符号化》  
４個の代表ベクトルを求めるところまでは、上で説明した手法と同様に処理するが、その後、ある代表ベクトルを、他の２つの代表ベクトルを補間することによって近似的に表現するための計算を行なう。具体的な例を図８に示す。この場合、＜Ｃ０＞，＜Ｃ１＞を用いて、＜Ｃ３＞の近似的表現を行なうための補間率の計算を行なう。点＜Ｃ３＞から線分＜Ｃ０＞＜Ｃ１＞に対して垂線を下ろし、その足を点＜Ｃ３＞’とする。そして、以下のような計算を行ない、補間率ｒ３を導出する。  
ｒ３＝｜＜Ｃ０＞＜Ｃ３＞’｜／｜＜Ｃ０＞＜Ｃ１＞｜  
こうして計算された代表ベクトルと補間率をコードブックに含めて符号化したものを図９に示す。このようにして、補間率を用いて符号化する手法は、視点方向や光源方向の変化に応じて線形的に色の変化が起こるような素材に大変有効である。なぜなら、補間率による代表ベクトルの近似を行なっても、誤差が少なくなるからである。また、補間によって近似する代表ベクトルを選び出す際、近似を行なっても誤差が最も小さく押えられるものを選択する。
【００３５】
３．《補間を指示するだけのインデックスを用いた符号化》  
１６個のピクセルデータ（斜線の丸印）が図１０に示すような分布をしていたとする。ここで、各ベクトル＜Ｐ０＞，＜Ｐ１＞，＜Ｐ２＞は以下のような条件（ｕ，ｖ，θｃ，φｃ，θｌ，φｌ）で抽出できるピクセルデータであるとする。  
＜Ｐ０＞：（０，０，０，０，０，０）  
＜Ｐ１＞：（０，０，０，１０，０，０）  
＜Ｐ２＞：（０，０，０，２０，０，０）  
つまり、ベクトル＜Ｐ０＞，＜Ｐ１＞，＜Ｐ２＞は、視点方向の条件であるφｃを０度、１０度、２０度と変化させた３つのピクセルデータである。代表ベクトルを求める前にこのような分布に着目すると、＜Ｐ１＞のカラーベクトルはそもそも必要ではなく、＜Ｐ０＞と＜Ｐ２＞を用いて、これらの条件パラメータを基に補間によって求められてしまうものであることが分かる。したがって、＜Ｐ１＞は、インデックスデータで、条件パラメータをもとに補間するよう指示されるだけで、カラーベクトルを再現できてしまうことになる。すなわち、
＜Ｐ１＞＝０．５×＜Ｐ０＞＋０．５×＜Ｐ２＞  
ただし、実際は、＜Ｐ０＞，＜Ｐ２＞はそれぞれ、代表ベクトルを＜Ｃ０＞，＜Ｃ２＞を用いて再現される。
【００３６】
こうして符号化されたブロックデータのフォーマットを図１１に示す。インデックスデータが“００”であればＣ０が選ばれ、“０１”であればＣ１が選ばれ、“１０”であればＣ２が選ばれ、“１１”であれば条件パラメータをもとに他のピクセルデータから補間によって求めるといった具合に、インデックスデータを割り振ることができる。このような手法は、視点方向／光源方向などの条件の次元でブロックした場合の極めて特徴的な符号化であると言える。
【００３７】
４．《マクロブロックやテクスチャ全体のコードブックを用いた符号化》  
ここまでいくつかの符号化方法を説明してきたが、ブロックデータ内で算出したコードブックデータの一部が、周辺のブロックデータの一部と共通であったりする場合がある。そのような場合は、複数のブロックデータ共通のコードブックデータを設定することができる。周囲のいくつかのブロックの集まりをマクロブロックと呼ぶことにすると、そのマクロブロックに、共通のコードブックデータを持たせたり、テクスチャ全体のコードブックデータを持たせたりすることができる。例えば、あるブロックで代表ベクトルＣ０，Ｃ１，Ｃ２，Ｃ３を求めたが、Ｃ３に関しては、周囲の４つのブロックが同じように代表ベクトルとして用いていたとする。この時、図１２で示すようなフォーマットで符号化し、Ｃ３に関しては、ブロックデータとしてではなく、マクロブロックのコードブックデータとして格納する。このような符号化方法は、データ量の圧縮効率が向上する半面、復号化の速度が低下してしまうため注意が必要である。
【００３８】
５．《ベクトル成分ごとに分割した符号化》  
ベクトル成分ごとに分割した符号化について図１３を参照して説明する。各ピクセルのカラーベクトルは、ＲＧＢ表色系に限らず、様々な表色系によってベクトルを表現できる。ここでは、輝度成分と色差成分とに分けることができるＹＵＶ表色系を例に挙げて説明する。視点方向や視点方向に応じて変化する各ピクセルの色変化は、素材によって様々であるが、輝度成分の変化が激しく、色差成分の変化が緩やかであるような場合がある。そのような場合には、図１３に示すような符号化を行なうことができる。輝度成分はＹ０、Ｙ１、Ｙ２、Ｙ３を使用し、色差成分はＵＶ０を使用する。色差成分に関しては、ブロック内でほとんど変化しないために、インデックスデータの値に依らず、必ずＵＶ０が使われる。輝度成分に関しては、ブロック内での変化が大きいために、通常の手法で４つの代表ベクトル（この場合は、スカラー値）を格納しておき、インデックスデータによって選択される。
【００３９】
上記の例で示したように、変化の著しい成分に対して多くの符号量を割り当て、変化の少ない成分に対してはあまり符号量を割り当てないようにすることによって効率的な符号化を行うことができる。
【００４０】
以上のようにして、いくつかの符号化フォーマットを設定することができるが、これらの符号化方法を適宜組み合わせることによって、さらに様々な符号化フォーマットを設定することもできる。  
符号化フォーマットは、テクスチャデータ内で固定のフォーマットにすることもでき、テクスチャデータ内で可変のフォーマットにすることもできる。しかしながら、可変のフォーマットにした場合には、各ブロックデータでどのようなフォーマットを用いたかという識別子がヘッダ情報として必要となる。
【００４１】
＜ステップＳ２０５、Ｓ２０６＞  
次に、ブロックデータ連結部１０４が符号化されたブロックデータの連結を行なう。様々な方法で符号化されたブロックデータを連結すると図１４に示すようなデータ構造となる。符号化されたテクスチャデータには、まず、ヘッダ情報が格納されている。このヘッダ情報には、テクスチャサイズ、テクスチャ群を取得した条件、符号化フォーマットなどが含まれている。その次に、マクロブロックデータが連結されて格納されている。ただし、マクロブロックごとに符号化フォーマットを変更したり、マクロブロックを代表するコードブックを持たせたりしていない場合には、マクロブロックではなく、直にブロックデータを連結してしまってよい。マクロブロックごとに符号化フォーマットの指定がある場合には、マクロブロックの最初にヘッダ情報を格納し、マクロブロックを代表するコードブックを持たせる場合には、ヘッダ情報の次にコードブックデータを格納する。そして、マクロブロック内に存在するブロックデータを連結する。ブロックごとにフォーマットが異なる場合には、最初にヘッダ情報に格納し、次にコードブックデータとインデックスデータを格納する。  
最後に、このようにして連結されたテクスチャデータを出力する（ステップＳ２０６）。
【００４２】
次に、図２を参照して説明したテクスチャ符号化装置の処理の概要を図１５に示す。このテクスチャ符号化装置の処理と対比させるために、従来のテクスチャ符号化装置の処理の概要を図１６に示す。こられの図を比較すればわかるように、本発明の実施形態のテクスチャ符号化装置は、テクスチャ空間のブロック化だけではなく、取得条件の次元も考慮してブロック化する点が特徴である。この結果、本実施形態のテクスチャ符号化装置によれば、負荷が大きいテクスチャをロードする回数を通常減らすことができる。
【００４３】
次に、ステップＳ２０３で算出する代表ベクトルの算出方法について図１７を参照して説明する。なお、詳細は、例えば、特開２００４−１０４６２１公報を参照。  
初期設定（ｍ＝４，ｎ＝１，δ）（ステップＳ１７０１）以降の処理では、４つの代表ベクトルを算出するために、クラスタリング処理を実行する。クラスタを順次２分割していく際には、各クラスタの分散を算出し、分散の大きいクラスタを優先的に２分割する（ステップＳ１７０２）。あるクラスタを２分割するために、２つの初期セントロイド（クラスタの中心）を決定する（ステップＳ１７０３）。セントロイドの決定は以下の手順で行なう。  
１．クラスタの重心ｇを求める。  
２．ｇから最も遠い要素をｄ０とする。  
３．ｄ０から最も遠い要素をｄ１とする。  
４．ｇとｄ０及びｇとｄ１のそれぞれの１：２の内分点をＣ０，Ｃ１とする。  
ただし、２要素間の距離には、ＲＧＢの３次元空間でユークリッド距離を用いる。ステップＳ１７０４からステップＳ１７０６のループ処理は、一般によく知られたクラスタリングアルゴリズムであるＫ−Ｍｅａｎｓ法と同様の処理を行なっている。  
以上の手順により、４つの代表ベクトル＜Ｃ０＞，＜Ｃ１＞，＜Ｃ２＞，＜Ｃ３＞を求めることができる（ステップＳ１７１０）。
【００４４】
以上の第１の実施形態によれば、テクスチャデータ内で固定ブロックサイズの分割を行う場合に、視点方向や光源方向などの条件によって変化するテクスチャ群を符号化することによって、データ量を圧縮できる。また、素材の特徴に応じてブロック分割の手法を変化させることによって、圧縮効果を向上することができる。
【００４５】
（第２の実施形態）  
第２の実施形態では、可変ブロックサイズで分割されるテクスチャ符号化装置を示す。特に、ブロック分割部１０２において、どのような手法で適応的にブロック分割されるかについて説明する。
【００４６】
本実施形態は、図１に示すテクスチャ符号化装置のブロック分割部１０２におけるブロック分割（ステップＳ２０２）の処理例を示す。第１の実施形態では、テクスチャデータ内で固定ブロックサイズの分割を行なったが、本実施形態では、適応的にブロックサイズを変化させる。可変ブロック分割の手法としては、例えば、以下に示すような２つ手法がある。
【００４７】
１．《分散値による可変ブロック分割手法》  
まずは、図１に示した装置の構成のままで実現する手法である。ブロック分割部１０２は、まず、どのようなブロック分割をするべきかを調べるための処理を行なう。処理手順の例を図１８に示す。
【００４８】
まず、テクスチャ群のデータ全てを１つの大きなブロックデータとする（ステップＳ１８０１）。次に、ブロックデータ内に存在する全てのピクセルデータの分散値を計算する（ステップＳ１８０２）。そして、その分散値が、予め設定された閾値未満であるかどうかを判定する（ステップＳ１８０３）。分散値が閾値未満であれば現在のブロック分割状態のままブロック分割処理は終了し、分散値が閾値以上であれば、そのブロックの分散を大きくさせている次元を検出する（ステップＳ１８０４）。具体的には、各次元の変化に依存するベクトルの変化量が最も大きい次元を選び出す。そして、その次元においてブロックを２分割する（ステップＳ１８０５）。その後、再びステップＳ１８０２の処理に戻る。分割された全てのブロックがある閾値未満の分散値になった時点で処理は終了する。
【００４９】
これが最も基本的な処理方法であるが、初期状態を、ある程度決まった大きさの固定ブロックにしてもよい。また、終了条件は、分散値の上限だけではなく、最小単位のブロックサイズを指定してもよい。
【００５０】
２．《符号化誤差による可変ブロック分割手法》    
もうひとつの手法は、ブロック分割部１０２とブロックデータ符号化部１０３を用いて分割の仕方を決定させる手法であり、この場合、図１の装置の構成を若干変更する必要がある。変更後の装置の構成を図１９に示す。図１の装置と異なるのは、ブロックデータ符号化部の後段に、符号化誤差算出部１９０１と、符号化誤差比較部１９０２が加わったことである。以下、既に説明した装置部分と同様なものは同一の番号を付してその説明を省略する。  
符号化誤差算出部１９０１は、ブロックデータ符号化部１０３と同等の処理を行ない、元データと復号化データとの比較によって符号化誤差の算出を行なう。  
符号化誤差比較部１９０２は、符号化誤差算出部１９０１が算出した符号化誤差と、符号化誤差がある範囲内である許容条件とを比較する。許容条件は例えば、符号化誤差がある閾値未満であることである。この場合、符号化誤差算出部１９０１が算出した符号化誤差が閾値未満のブロックに関しては、次のブロックデータ連結部１０４に出力し、閾値以上のブロックに関しては、ブロック分割部１０２に処理を戻す。すなわち、ブロック分割部１０２により、さらに細かいブロックに分割されて再度符号化が行なわれるという流れとなる。換言すれば、各ブロックデータは前回よりもより小さいデータ量になるように分割されて再度符号化が行われる。
【００５１】
以上、２つの可変ブロック分割手法を説明したが、このような手法によってブロック分割を行なった場合、規則的な分割手法ではないために、どのピクセルデータがどのブロックに属しているかを示す“ブロック指定データ”というものが必要となる。ブロック指定データを含めた符号化データ構造は図２０のようになる。ただし、ここでは、簡単のためにマクロブロックの概念やブロックデータ外のコードブックデータを排除して考えている。ヘッダ情報とブロックデータとの間に、ブロック指定データが格納されており、そのブロック指定データには、ピクセルデータを抽出するためのパラメータと、ブロックデータに付けられたＩＤ番号（ブロック番号）との対応付けを示したテーブルデータが格納されている。このブロック指定データは、後述する第４の実施形態で説明する可変ブロックサイズで符号化されたデータを復号化する処理において、ブロックデータにアクセスするための大切な役割を担うことになる。
【００５２】
以上の第２の実施形態によれば、テクスチャデータ内で可変ブロックサイズの分割を行う場合に、視点方向や光源方向などの条件によって変化するテクスチャ群を符号化することによって、データ量を圧縮できる。
【００５３】
また、本発明の第１および第２の実施形態に係るテクスチャ符号化装置によって符号化されたテクスチャ群のデータは、データベースなどに蓄積することも可能であり、ネットワーク上で公開することもできる。
【００５４】
（第３実施形態）  
第３の実施形態では、固定ブロックサイズで符号化されたテクスチャ群のデータを入力するものとし、入力された符号化データをどのように復号化し、グラフィックスデータに、どのようにマッピングするかを示す。本実施形態では、テクスチャ復号化装置（マッピング部を含む）の一連の処理例を示す。
【００５５】
本実施形態のテクスチャ復号化装置について図２１を参照して説明する。  
まず、概略を説明する。図２１のテクスチャ復号化装置は、第１、第２の実施形態で説明したテクスチャ符号化装置によって符号化されたテクスチャデータを入力し、指定されたテクスチャ座標や条件パラメータをもとに、特定のピクセルデータを復号化し、グラフィックスデータにマッピングするものである。
【００５６】
テクスチャ復号化装置は、入力部２１０１、ブロックデータ抽出部２１０２、ブロックデータ復号化部２１０３、ピクセルデータ算出部２１０４、マッピング部２１０５、出力部２１０６を備えている。  
入力部２１０１は、複数の異なる条件で取得あるいは作成したテクスチャ群の符号化データを入力する。  
ブロックデータ抽出部２１０２は、ピクセル位置を指定するテクスチャ座標および条件を指定する条件パラメータを入力し、入力部２１０１で入力された符号化データの中から、指定されたデータが含まれるブロックデータを抽出する。  
ブロックデータ復号化部２１０３は、ブロックデータ抽出部２１０２で抽出されたブロックデータを、第１および第２の実施形態で説明したテクスチャ符号化装置におけるブロックデータ符号化部１０３で符号化される元のデータとして復号する。  
ピクセルデータ算出部２１０４は、ブロックデータ復号化部２１０３で復号されたデータをもとにピクセルデータを算出する。  
マッピング部２１０５は、テクスチャマッピングの対象となるグラフィックスデータ、および、テクスチャマッピングの手法を指定するマッピングパラメータを入力し、ピクセルデータ算出部２１０４において算出されたピクセルデータを、入力されたマッピングパラメータをもとに、入力されたグラフィックスデータにマッピングする。  
出力部２１０６は、マッピング手段によってマッピングされたグラフィックスデータを出力する。
【００５７】
次に、図２１のテクスチャ復号化装置の動作について図２２を参照して説明する。  
＜ステップＳ２２０１＞  
本実施形態のテクスチャ復号化装置においては、まず、入力部２１０１が符号化されたテクスチャ群のデータを入力する。入力した時点で、入力部２１０１は、符号化データのヘッダ情報を読み取り、テクスチャサイズ、テクスチャ群を取得した条件、符号化フォーマットなどを調べる。
【００５８】
＜ステップＳ２２０２＞  
次に、ブロックデータ抽出部２１０２がテクスチャ座標および条件パラメータの入力を行なう。これらのパラメータは、グラフィックスデータの各頂点に設定されたテクスチャ座標やカメラ位置、光源位置などのシーン情報から得られるものである。
【００５９】
＜ステップＳ２２０３＞  
次に、ブロックデータ抽出部２１０２がブロックデータの抽出を行なう。本実施形態では、ブロック分割は、固定ブロックサイズで行なわれているものとしている。したがって、ブロックデータ抽出部２１０２は、入力したテクスチャ座標ｕ，ｖおよび条件パラメータθｃ，φｃ，θｌ，φｌをもとにして、そのピクセルデータが存在するブロックデータにアクセスすることができる。  
ただし、ここで気をつけなければならないのは、求められている条件パラメータが、元々テクスチャを取得した条件とぴったり適合するものではない場合があるということである。そのような場合には、存在する近傍の条件のピクセルデータを全て抽出し、補間する必要がある。例えば、θｃ未満の最も近いテクスチャサンプルの条件をθｃ０、θｃ以上の最も近いテクスチャサンプルの条件をθｃ１とし、同様に、φｃ０，φｃ１，θｌ０，θｌ１，φｌ０，φｌ１を決定すると、これらの条件を満たす全てのピクセルデータを抽出することになる。抽出すべきピクセルデータは、以下のｃ０からｃ１５の１６個である。
【００６０】
ｃ０＝getPixel（θｃ０，φｃ０，θｌ０，φｌ０，ｕｓ，ｖｓ）  
ｃ１＝getPixel（θｃ０，φｃ０，θｌ０，φｌ１，ｕｓ，ｖｓ）  
ｃ２＝getPixel（θｃ０，φｃ０，θｌ１，φｌ０，ｕｓ，ｖｓ）  
ｃ３＝getPixel（θｃ０，φｃ０，θｌ１，φｌ１，ｕｓ，ｖｓ）  
ｃ４＝getPixel（θｃ０，φｃ１，θｌ０，φｌ０，ｕｓ，ｖｓ）  
ｃ５＝getPixel（θｃ０，φｃ１，θｌ０，φｌ１，ｕｓ，ｖｓ）  
ｃ６＝getPixel（θｃ０，φｃ１，θｌ１，φｌ０，ｕｓ，ｖｓ）  
ｃ７＝getPixel（θｃ０，φｃ１，θｌ１，φｌ１，ｕｓ，ｖｓ）  
ｃ８＝getPixel（θｃ１，φｃ０，θｌ０，φｌ０，ｕｓ，ｖｓ）  
ｃ９＝getPixel（θｃ１，φｃ０，θｌ０，φｌ１，ｕｓ，ｖｓ）  
ｃ１０＝getPixel（θｃ１，φｃ０，θｌ１，φｌ０，ｕｓ，ｖｓ）  
ｃ１１＝getPixel（θｃ１，φｃ０，θｌ１，φｌ１，ｕｓ，ｖｓ）  
ｃ１２＝getPixel（θｃ１，φｃ１，θｌ０，φｌ０，ｕｓ，ｖｓ）  
ｃ１３＝getPixel（θｃ１，φｃ１，θｌ０，φｌ１，ｕｓ，ｖｓ）  
ｃ１４＝getPixel（θｃ１，φｃ１，θｌ１，φｌ０，ｕｓ，ｖｓ）  
ｃ１５＝getPixel（θｃ１，φｃ１，θｌ１，φｌ１，ｕｓ，ｖｓ）
ただし、ｕｓ，ｖｓはこの例において入力されたテクスチャ座標であるものとし、getPixelは条件パラメータとテクスチャ座標の６次元のパラメータをもとに、ピクセルデータを抽出する関数であるものとする。そして、この１６個のピクセルデータを以下のように補間することによって最終的なピクセルデータｃを抽出することができる。
【００６１】
ｃ＝（１−ε０）×（１−ε１）×（１−ε２）×（１−ε３）×ｃ０  
＋（１−ε０）×（１−ε１）×（１−ε２）×    ε３    ×ｃ１  
＋（１−ε０）×（１−ε１）×    ε２    ×（１−ε３）×ｃ２  
＋（１−ε０）×（１−ε１）×    ε２    ×    ε３    ×ｃ３  
＋（１−ε０）×    ε１    ×（１−ε２）×（１−ε３）×ｃ４  
＋（１−ε０）×    ε１    ×（１−ε２）×    ε３    ×ｃ５  
＋（１−ε０）×    ε１    ×    ε２    ×（１−ε３）×ｃ６  
＋（１−ε０）×    ε１    ×    ε２    ×    ε３    ×ｃ７  
＋    ε０    ×（１−ε１）×（１−ε２）×（１−ε３）×ｃ８  
＋    ε０    ×（１−ε１）×（１−ε２）×    ε３    ×ｃ９  
＋    ε０    ×（１−ε１）×    ε２    ×（１−ε３）×ｃ１０  
＋    ε０    ×（１−ε１）×    ε２    ×    ε３    ×ｃ１１  
＋    ε０    ×    ε１    ×（１−ε２）×（１−ε３）×ｃ１２  
＋    ε０    ×    ε１    ×（１−ε２）×    ε３    ×ｃ１３  
＋    ε０    ×    ε１    ×    ε２    ×（１−ε３）×ｃ１４  
＋    ε０    ×    ε１    ×    ε２    ×    ε３    ×ｃ１５
ただし、補間率ε０，ε１，ε２，ε３は以下のように算出する。  
ε０＝（θｃ−θｃ０）／（θｃ１−θｃ０）  
ε１＝（φｃ−φｃ０）／（φｃ１−φｃ０）  
ε２＝（θｌ−θｌ０）／（θｌ１−θｌ０）  
ε３＝（φｌ−φｌ０）／（φｌ１−φｌ０）  
以上のように、１つのピクセルデータを算出するのに、１６個のピクセルデータを抽出して補間する必要があるが、ここで注目すべきポイントは、本発明の実施形態で提案している符号化データは、同じブロックデータ内に隣り合った条件のピクセルデータが存在しているということである。したがって、上記のような１６個のピクセルデータが、全て同一のブロックデータに含まれている場合もあり、その場合には、１個のブロックデータを抽出するだけで、補間済みのピクセルデータを算出することができる。しかしながら、場合によっては、２個〜１６個のブロックデータを抽出しなければならない場合もあるので、条件パラメータに応じて抽出回数を変化させる必要がある。
【００６２】
一般に、テクスチャロード命令（ピクセルデータまたはブロックデータを抽出する処理）の回数は、グラフィックスＬＳＩにおける実行速度に影響することが知られており、できるだけテクスチャロード命令を減らすことによって、レンダリング速度を速めることができる。したがって、本発明の実施形態で提案している符号化データは、より高速なテクスチャマッピングを実現させるための符号化方法であると言える。
【００６３】
＜ステップＳ２２０４＞  
次に、ブロックデータ復号化部２１０３がブロックデータの復号化を行なう。ブロックデータを復号化し特定のピクセルデータを抽出する手法は、符号化フォーマットによって若干異なる。しかしながら、基本的には、抽出したいピクセルのインデックスデータを参照し、それによって復号化方法を判定する。インデックスデータによって指し示された代表ベクトルをそのまま抽出する場合もあれば、基準ベクトルからベクトル変化量の分だけ変化させたベクトルを抽出する場合もある。また、２つのベクトルを補間したベクトルを抽出する場合もある。これらは、それぞれ符号化の際に決められたルールに基づいて復号化される。
【００６４】
＜ステップＳ２２０５＞  
次に、ピクセルデータ算出部２１０４がピクセルデータの算出を行なう。ここでは、前述したとおり、１６個のピクセルデータを上記の計算式を用いて補間する処理を行なう。
【００６５】
＜ステップＳ２２０６、Ｓ２２０７、Ｓ２２０８＞  
次に、マッピング部２１０５がグラフィックスデータおよびマッピングパラメータを入力（ステップＳ２２０６）し、マッピングパラメータに合わせて、ピクセルデータをマッピングする（ステップＳ２２０７）。そして最後に、出力部２１０６がテクスチャマッピング済みのグラフィックスデータを出力する（ステップＳ２２０８）。
【００６６】
次に、テクスチャの配置手法によってテクスチャマッピングの処理速度（レンダリング性能）が変化する様子について図２３、図２４、図２５、図２６を参照して説明する。  
グラフィックスＬＳＩ上でのレンダリング性能は、テクスチャの配置方法に大きく左右される。本実施形態では、高次元テクスチャの一例として、（ｕ，ｖ，θｃ，φｃ，θｌ，φｌ）の６次元パラメータで表現されるテクスチャを挙げているが、このようなテクスチャデータをグラフィックスＬＳＩのメモリにどのような配列で格納するかによって、ピクセルデータをロードする回数やハードウェア上に存在するテクスチャキャッシュにヒットする割合が変化し、それによってレンダリング性能にも変化が見られる。これは、無圧縮の高次元テクスチャに関しても言えることであるが、高次元テクスチャを符号化する際にも、この点に留意してブロック化し、ブロックデータを連結する必要がある。
【００６７】
以下、テクスチャの配置方法によって、どんな違いが見られるのかを示す。図２３（ａ）は、ｕｖ方向の変化を一括りにしたテクスチャ（いわゆる通常のテクスチャ）をθ方向の変化に応じてタイル状に並べ、さらにそれをφ方向の変化に応じてタイル状に並べた２次元テクスチャである。この配置方法の場合、ｕｖ方向の変化に応じたピクセルデータは、隣り合ったピクセル位置に格納されているので、グラフィックスＬＳＩのｂｉ−ｌｉｎｅａｒ機能を利用することによって高速に補間されたピクセルデータを抽出することができる。しかしながら、高次元テクスチャの生成処理が行なわれ、小さなテクスチャサンプルから任意サイズの高次元テクスチャを表現しているような場合には、インデックスによって、ｕｖの位置が決められ、必ずしも連続的なｕやｖの値が指定されるとは限らないので、グラフィックスＬＳＩのｂｉ−ｌｉｎｅａｒ機能を利用することはできない。
【００６８】
一方、θ方向やφ方向の変化に応じたピクセルデータは、離れたピクセル位置に格納されているため、テクスチャ座標の計算を行なって複数回ピクセルデータを抽出し、ソフトウェア上で補間計算を行なう必要がある。さらに、テクスチャキャッシュのヒット率について考えると、描画するフレームの隣り合ったピクセル値を求める際にどれだけ近くのテクスチャ座標が参照されるかによってヒット率が決まるため、図２３（ａ）のような配置方法の場合は、ヒットしやすい。なぜなら、ｕｖの隣り合ったピクセルは、大抵の場合、θやφの条件が似通っているからである。
【００６９】
図２３（ｂ）は、ｕｖ方向の変化を一括りにしたテクスチャをφ方向の変化に応じてタイル状に並べ、さらにそれをθ方向の変化に応じて、レイヤー方向（高さ方向）に重ねた３次元テクスチャである。この配置の場合、ｕｖ方向のｂｉ−ｌｉｎｅａｒに加えて、θｌ方向の補間もハードウェアの機能で行なえる。つまり３次元テクスチャのｔｒｉ−ｌｉｎｅａｒ機能を使った補間計算を行なうことができる。その分、図２３（ａ）に比べてテクスチャのロード回数を減らすことができる。テクスチャキャッシュのヒット率に関しては、図２３（ａ）とそれほど変わりはないので、テクスチャのロード回数が減る分、高速にレンダリングすることができる。
【００７０】
図２４（ａ）および図２５（ａ）は、それぞれθ方向、φ方向の変化を一括りにしたテクスチャを、それぞれφ方向、θ方向の変化に応じてタイル状に並べ、さらにそれをｕｖ方向の変化に応じてタイル状に並べた２次元テクスチャである。これらの配置方法の場合、それぞれθ方向、φ方向の変化に応じたピクセルデータは、隣り合ったピクセル位置に格納されているので、グラフィックスＬＳＩのｂｉ−ｌｉｎｅａｒ機能を利用することによって、高速に補間されたピクセルデータを抽出することができる。一方、それぞれφ方向、θ方向やｕｖ方向の変化に応じたピクセルデータは、離れたピクセル位置に格納されているため、テクスチャ座標の計算を行なって複数回ピクセルデータを抽出し、ソフトウェア上で補間計算を行なう必要がある。
【００７１】
テクスチャキャッシュのヒット率についは、ｕｖ方向の変化に応じたピクセルデータが離れたピクセル位置に格納されているため、図２３の配置方法に比べて良くない。そこで、その改善策として、図２６（ａ），（ｂ）のような配置方法に変更すると、テクスチャキャッシュのヒット率が向上し、レンダリング性能を上げることができる。これらは、ｕｖ方向の変化に応じたタイルをより近い位置に並べているため、描画するフレームの隣り合ったピクセル値を求める際に、より近いテクスチャ座標が参照される。
【００７２】
図２４（ｂ）および図２５（ｂ）は、それぞれθ方向、φ方向の変化を一括りにしたテクスチャを、ｕｖ方向の変化に応じてタイル状に並べ、さらにそれを、それぞれφ方向、θ方向の変化に応じて、レイヤー方向（高さ方向）に重ねた３次元テクスチャである。これらの配置の場合、それぞれθ方向、φ方向のｂｉ−ｌｉｎｅａｒに加えて、それぞれφｌ方向、θｌ方向の補間もハードウェアの機能で行なえる。つまり、３次元テクスチャのｔｒｉ−ｌｉｎｅａｒ機能を使った補間計算を行なうことができる。その分、図２４（ｂ）および図２５（ｂ）は、図２５（ａ）および図２６（ａ）に比べてテクスチャのロード回数を減らすことができる。テクスチャキャッシュのヒット率に関しては、図２５（ａ）および図２６（ａ）に比べてヒット率を向上させることができる。なぜなら、２次元テクスチャの場合は、ｕｖ方向の変化に応じたタイルが離れた位置にある一方で、３次元テクスチャの場合は、レイヤー方向（高さ方向）にｕｖが近く、かつ、θｌもしくはφｌの近いピクセルデータが存在するからである。
【００７３】
このように、テクスチャの配置方法によってテクスチャのロード回数やテクスチャキャッシュのヒット率が変化し、レンダリング性能が大きく変化する。こういった性質を踏まえた上で、テクスチャの配置方法を決定し、ブロック化方法の決定、符号化、ブロックデータの連結を行なうことによって、より効率的な高次元テクスチャマッピングを実現することができる。
【００７４】
例えば、図２４（ａ）であれば、θｃ方向およびθｌ方向の２次元でブロック化し、それを符号化することにより、図２４（ａ）のような配置方法でグラフィックスＬＳＩのメモリ上に符号化データを格納することができ、マッピング時にはハードウェアのｂｉ−ｌｉｎｅａｒ機能を利用することができる。
【００７５】
以上の第３の実施形態によれば、固定ブロックサイズで符号化されたテクスチャ群のデータを入力する場合に、視点方向や光源方向などの条件によって変化するテクスチャ群を符号化することによって、グラフィックスＬＳＩ上でのテクスチャマッピングの処理速度を向上させることができる。
【００７６】
（第４の実施形態）  
第４の実施形態では、可変ブロックサイズで符号化されたテクスチャ群のデータを入力した場合の、テクスチャ復号化装置（マッピング部を含む）の処理について説明する。特に、ブロックデータ抽出部において、どのようにしてブロックデータにアクセスするかについて説明する。
【００７７】
本実施形態でのテクスチャ復号化装置の動作について説明する。ここでは、テクスチャ復号化装置に含まれるブロックは、図２１と同様である。したがって、ブロックデータ抽出部２１０２におけるブロックデータ抽出部２１０２が行うブロックデータ抽出（ステップＳ２２０３）の処理例を示す。  
第３の実施形態では、固定ブロックサイズで符号化されたテクスチャデータを対象としていたが、本実施形態では、可変ブロックサイズで符号化されたテクスチャデータを対象とする。可変ブロックサイズで符号化されたテクスチャデータにおいて、ブロックデータに適切にアクセスし抽出する手法としては、例えば、以下のような２つの手法がある。
【００７８】
１．《ブロック指定データを用いたブロックデータ抽出》  
第２の実施形態で説明したように、可変ブロックサイズで符号化した場合には、ブロック指定データが符号化データ内に含まれる。したがって、ブロックデータ抽出部２１０２が、テクスチャ座標および条件パラメータを入力した後に、その入力した６次元のパラメータと、ブロック指定データとを照らし合わせることによって、どこのブロックデータにアクセスすればよいかを調べることができる。指定のブロックデータにアクセスすることができれば、それ以降の処理は、第３の実施形態で説明した処理と同様である。
【００７９】
２．《符号化データ変換を用いたブロックデータ抽出》  
もう１つの手法は、符号化データ変換処理を行なってからブロックデータ抽出を行なうというものである。この場合、図２２の装置の構成を若干変更する必要がある。変更後の装置の構成を図２７に示す。図２７で図２１と異なる装置部分は、符号化データ変換部２７０１だけである。符号化データ変換部２７０１は、ブロックデータ抽出部２１０２の前段、かつ、入力部２１０１の後段に設定される。  
符号化データ変換部２７０１では、可変ブロックサイズで符号化されていたテクスチャデータを、固定ブロックサイズでの符号化データに変換するという処理を行なう。符号化データ変換部２７０１において可変サイズのブロックデータにアクセスする際には、ブロック指定データを利用する。そして、固定サイズに変換した後は、ブロック指定データは不要になるため削除される。
【００８０】
図２８は、可変ブロックサイズから固定ブロックサイズへ変換する様子を簡単に図示している。可変サイズで分割されているブロックよりも大きなサイズに変換しようとすると、再度符号化処理を行なうのと同等な計算量が必要になってしまう。一方、可変サイズで分割されているブロック以下のサイズに変換するのは、復号化処理程度の簡単な計算で、実現することができる。したがって、後者のような変換を行なう。固定サイズの符号化データに変換することができれば、それ以降の処理は、第３の実施形態で説明した処理と同様である。
【００８１】
可変ブロックサイズの符号化データにおけるブロックデータ抽出の手法を２つ説明したが、ブロック指定データを用いた手法では、少ないデータ量のままでマッピングできるというメリットがある反面、ピクセル処理をする度にブロック指定データを参照しなければならないというデメリットがある。これは、グラフィックスＬＳＩにおいて、余計なテクスチャロード命令が一回増えてしまうことに相当し、レンダリング速度に影響を与えてしまう。  
また、符号化データ変換を用いた手法では、グラフィックスＬＳＩ内部のビデオメモリに格納する直前に固定ブロックサイズのデータに変換することによって、比較的高速なレンダリングを行なうことができる。しかしその一方で、固定ブロックサイズにすることによって、データ量が比較的増えてしまうという問題もある。どちらの手法においてもメリット・デメリットがあるため、テクスチャ素材の複雑度やグラフィックスＬＳＩの仕様に応じて、うまく使い分ける必要がある。
【００８２】
以上の第４の実施形態によれば、可変ブロックサイズで符号化されたテクスチャ群のデータを入力する場合に、視点方向や光源方向などの条件によって変化するテクスチャ群を符号化することによって、グラフィックスＬＳＩ上でのテクスチャマッピングの処理速度を向上させることができる。
【００８３】
また、上述の実施形態の中で示した処理手順に示された指示は、ソフトウェアであるプログラムに基づいて実行されることが可能である。汎用の計算機システムが、このプログラムを予め記憶しておき、このプログラムを読み込むことにより、上述した実施形態のコンピュータグラフィックスデータ符号化装置および復号化装置による効果と同様な効果を得ることも可能である。上述の実施形態で記述された指示は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フレキシブルディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ±Ｒ、ＤＶＤ±ＲＷなど）、半導体メモリ、又はこれに類する記録媒体に記録される。コンピュータまたは組み込みシステムが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であってもよい。コンピュータは、この記録媒体からプログラムを読み込み、このプログラムに基づいてプログラムに記述されている指示をＣＰＵで実行させれば、上述した実施形態のテクスチャ符号化装置およびテクスチャ復号化装置と同様な動作を実現することができる。もちろん、コンピュータがプログラムを取得する場合又は読み込む場合はネットワークを通じて取得又は読み込んでもよい。  
また、記憶媒体からコンピュータや組み込みシステムにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーションシステム）や、データベース管理ソフト、ネットワーク等のＭＷ（ミドルウェア）等が本実施形態を実現するための各処理の一部を実行してもよい。  
さらに、本願発明における記憶媒体は、コンピュータあるいは組み込みシステムと独立した媒体に限らず、ＬＡＮやインターネット等により伝達されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。  
また、記憶媒体は１つに限られず、複数の媒体から本実施形態における処理が実行される場合も、本発明における記憶媒体に含まれ、媒体の構成は何れの構成であってもよい。
【００８４】
なお、本願発明におけるコンピュータまたは組み込みシステムは、記憶媒体に記憶されたプログラムに基づき、本実施形態における各処理を実行するためのものであって、パソコン、マイコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であってもよい。  
また、本願発明の実施形態におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の実施形態における機能を実現することが可能な機器、装置を総称している。
【００８５】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【産業上の利用可能性】
【００８６】
次世代グラフィックス処理エンジンへの搭載や、アパレル業界向けの衣服シミュレーション、建築物や車の外装／内装シミュレーションなどへの応用が期待できる。
【図面の簡単な説明】
【００８７】
【図１】本発明の第１の実施形態に係るテクスチャ符号化装置のブロック図。
【図２】本発明の第１の実施形態に係るテクスチャ符号化装置の動作を示すフローチャート。
【図３】図１の入力部がテクスチャを取得する場合の視点および光源の位置を示す角度パラメータを示す図。
【図４】ピクセルデータおよび代表ベクトルの分布を示す図。
【図５】図４に対応する符号化方法で符号化されたブロックデータの符号化フォーマットを示す図。
【図６】ベクトル変化量を用いたブロックデータの符号化を示す図。
【図７】図６に対応する符号化方法で符号化されたブロックデータの符号化フォーマットを示す図。
【図８】補間率を用いたブロックデータの符号化を示す図。
【図９】図８に対応する符号化方法で符号化されたブロックデータの符号化フォーマットを示す図。
【図１０】補間を指示するだけのインデックスを用いたブロックデータの符号化を示す図。
【図１１】図１０に対応する符号化方法で符号化されたブロックデータの符号化フォーマットを示す図。
【図１２】マクロブロックやテクスチャ全体のコードブックを用いたブロックデータの符号化フォーマットを示す図。
【図１３】ベクトル成分ごとに分割したブロックデータの符号化フォーマットを示す図。
【図１４】テクスチャ群の符号化データ構造を示す図。
【図１５】図１のテクスチャ符号化装置の処理の概要を示す図。
【図１６】図１５に対応する従来の処理の概要を示す図。
【図１７】図２のステップＳ２０３で算出される代表ベクトルの算出方法を示すフローチャート。
【図１８】本発明の第２の実施形態に係るテクスチャ符号化装置でのブロック分割方法を示すフローチャート。
【図１９】本発明の第２の実施形態での符号化誤差によってブロック分割するテクスチャ符号化装置のブロック図。
【図２０】図１９のテクスチャ符号化装置で使用されるブロック指定データを含んだ符号化データ構造を示す図。
【図２１】本発明の第３の実施形態に係るテクスチャ復号化装置のブロック図。
【図２２】図２１のテクスチャ復号化装置の動作を示すフローチャート。
【図２３】ｕｖ方向を基準としたテクスチャデータの配置方法を示す図。
【図２４】θ方向を基準としたテクスチャデータの配置方法を示す図。
【図２５】φ方向を基準としたテクスチャデータの配置方法を示す図。
【図２６】図２４（ａ）と図２５（ａ）のテクスチャデータの配置を若干変更させた方法を示す図。
【図２７】本発明の第４の実施形態に係るテクスチャ復号化装置のブロック図。
【図２８】可変ブロックサイズから固定ブロックサイズへ変換する様子を示す図。
【符号の説明】
【００８８】
１０１、２１０１…入力部、１０２…ブロック分割部、１０３…ブロックデータ符号化部、１０４…ブロックデータ連結部、１０５、２１０６…出力部、１９０１…符号化誤差算出部、１９０２…符号化誤差比較部、２１０２…ブロックデータ抽出部、２１０３…ブロックデータ復号化部、２１０４…ピクセルデータ算出部、２１０５…マッピング部、２７０１…符号化データ変換部。
【図１】
0004444180.tif 000004
【図２】
0004444180.tif 000005
【図３】
0004444180.tif 000006
【図４】
0004444180.tif 000007
【図５】
0004444180.tif 000008
【図６】
0004444180.tif 000009
【図７】
0004444180.tif 000010
【図８】
0004444180.tif 000011
【図９】
0004444180.tif 000012
【図１０】
0004444180.tif 000013
【図１１】
0004444180.tif 000014
【図１２】
0004444180.tif 000015
【図１３】
0004444180.tif 000016
【図１４】
0004444180.tif 000017
【図１５】
0004444180.tif 000018
【図１６】
0004444180.tif 000019
【図１７】
0004444180.tif 000020
【図１８】
0004444180.tif 000021
【図１９】
0004444180.tif 000022
【図２０】
0004444180.tif 000023
【図２１】
0004444180.tif 000024
【図２２】
0004444180.tif 000025
【図２３】
0004444180.tif 000026
【図２４】
0004444180.tif 000027
【図２５】
0004444180.tif 000028
【図２６】
0004444180.tif 000029
【図２７】
0004444180.tif 000030
【図２８】
0004444180.tif 000031