(57)【特許請求の範囲】
【請求項１】
パレットを用いて符号化対象画像を符号化する画像符号化装置であって、
前記符号化対象画像に含まれる第１画素を前記パレットのいずれかのエントリに関連付けるか否かを、画素値とパレット値との差分に対する閾値に基づいて決定する関連付け部と、
前記関連付け部が前記第１画素を前記パレットのいずれのエントリにも関連付けない場合、前記パレットにエントリを追加する追加部と、
前記パレットにエントリを追加すると前記符号化対象画像の符号化結果が目標情報量の条件を満たさなくなる場合、前記パレットの２つのエントリを合成して合成エントリを生成する合成部と、
前記関連付け部が前記第１画素を前記パレットのいずれかのエントリに関連付けた場合、又は前記追加部が前記パレットにエントリを追加した場合、又は前記合成部が前記合成エントリを生成した後に前記追加部が前記パレットにエントリを追加した場合、前記閾値を変更する制御部と、
前記パレットを用いて前記符号化対象画像を符号化するパレット符号化部と、
を備え、
前記関連付け部は、前記符号化対象画像に含まれる第２画素を前記パレットのいずれかのエントリに関連付けるか否かを、変更後の閾値に基づいて決定することを特徴とする画像符号化装置。
【請求項２】
前記合成部は、前記パレットにエントリを追加すると前記符号化結果の情報量が前記目標情報量を超える場合、前記合成エントリを生成し、前記追加部は、前記合成部が前記合成エントリを生成した後に前記パレットにエントリを追加し、前記制御部は、前記閾値をより大きな値に変更し、前記関連付け部は、前記第２画素の画素値と前記パレットの特定エントリのパレット値との差分が前記変更後の閾値よりも小さい場合、前記第２画素を前記特定エントリに関連付けることを特徴とする請求項１記載の画像符号化装置。
【請求項３】
前記制御部は、前記関連付け部が前記第１画素を前記パレットのいずれかのエントリに関連付けた場合、前記閾値をより小さな値に変更し、前記関連付け部は、前記第２画素の画素値と前記パレットの特定エントリのパレット値との差分が前記変更後の閾値よりも小さい場合、前記第２画素を前記特定エントリに関連付け、前記第２画素の画素値と前記特定エントリのパレット値との前記差分が前記変更後の閾値よりも大きい場合、前記第２画素を前記特定エントリに関連付けないことを特徴とする請求項１記載の画像符号化装置。
【請求項４】
前記制御部は、前記パレットの第１エントリのパレット値と第２エントリのパレット値との差分に基づいて前記閾値を変更することを特徴とする請求項１乃至３のいずれか１項に記載の画像符号化装置。
【請求項５】
パレットを用いて符号化対象画像を符号化する画像符号化装置であって、
前記符号化対象画像に含まれる画素を前記パレットのエントリに関連付ける関連付け部と、
前記パレットにエントリを追加しても前記符号化対象画像の符号化結果が目標情報量の条件を満たす場合、前記パレットの各エントリのパレット値と各エントリに関連付けられた画素の画素値との差分に基づいて、前記パレットから分割対象エントリを選択し、前記分割対象エントリに関連付けられた複数の画素を複数の画素グループに分割し、前記複数の画素グループに対応する複数のエントリを生成し、前記複数の画素グループを前記複数のエントリにそれぞれ関連付ける分割部と、
前記パレットを用いて前記符号化対象画像を符号化するパレット符号化部と、
を備えることを特徴とする画像符号化装置。
【請求項６】
前記分割対象エントリのパレット値と前記分割対象エントリに関連付けられた画素の画素値との差分の総和は、前記パレットの他のエントリのパレット値と前記他のエントリに関連付けられた画素の画素値との差分の総和よりも大きいことを特徴とする請求項５記載の画像符号化装置。
【請求項７】
前記分割部は、前記複数のエントリに関連付けられた前記複数の画素グループを初期状態として用いてクラスタリングを行い、前記複数のエントリと前記複数の画素グループとの関連付けを更新することを特徴とする請求項５又は６記載の画像符号化装置。
【請求項８】
前記複数のエントリは２つのエントリであり、前記２つのエントリの２つのパレット値は、画素値空間内で前記分割対象エントリのパレット値を通る直線上において、前記分割対象エントリの前記パレット値の互いに異なる側に位置し、前記２つのパレット値の位置は、前記分割対象エントリの前記パレット値の位置に関して非対称であることを特徴とする請求項５乃至７のいずれか１項に記載の画像符号化装置。
【請求項９】
前記パレットのエントリに関連付けられた画素の画素値を直接符号化しても前記符号化結果が前記目標情報量の条件を満たす場合、前記パレットのエントリに関連付けられた画素の中から直接符号化対象画素を選択し、前記直接符号化対象画素と前記パレットのエントリとの関連付けを解除して、前記直接符号化対象画素の画素値を直接符号化する直接符号化部をさらに備えることを特徴とする請求項５乃至８のいずれか１項に記載の画像符号化装置。
【請求項１０】
前記直接符号化対象画素の画素値と前記パレット内におけるパレット値との差分の最小値は、前記パレットのエントリに関連付けられた他の画素の画素値と前記パレット内におけるパレット値との差分の最小値よりも大きいことを特徴とする請求項９記載の画像符号化装置。
【請求項１１】
前記直接符号化部が前記関連付けを解除した後、前記パレットの各エントリに関連付けられた画素を初期状態として用いてクラスタリングを行い、前記パレットの各エントリと画素との関連付けを更新する調整部をさらに備えることを特徴とする請求項９又は１０記載の画像符号化装置。
【請求項１２】
パレットを用いて符号化対象画像を符号化する画像符号化方法であって、
前記符号化対象画像に含まれる第１画素を前記パレットのいずれかのエントリに関連付けるか否かを、画素値とパレット値との差分に対する閾値に基づいて決定し、
前記第１画素を前記パレットのいずれのエントリにも関連付けない場合、前記パレットにエントリを追加し、
前記パレットにエントリを追加すると前記符号化対象画像の符号化結果が目標情報量の条件を満たさなくなる場合、前記パレットの２つのエントリを合成して合成エントリを生成した後に、前記パレットにエントリを追加し、
前記第１画素を前記パレットのいずれかのエントリに関連付けた場合、又は前記パレットにエントリを追加した場合、又は前記合成エントリを生成した後に前記パレットにエントリを追加した場合、前記閾値を変更し、
前記符号化対象画像に含まれる第２画素を前記パレットのいずれかのエントリに関連付けるか否かを、変更後の閾値に基づいて決定し、
前記パレットを用いて前記符号化対象画像を符号化する、
ことを特徴とする画像符号化方法。
【請求項１３】
パレットを用いて符号化対象画像を符号化する画像符号化方法であって、
前記符号化対象画像に含まれる画素を前記パレットのエントリに関連付け、
前記パレットにエントリを追加しても前記符号化対象画像の符号化結果が目標情報量の条件を満たす場合、前記パレットの各エントリのパレット値と各エントリに関連付けられた画素の画素値との差分に基づいて、前記パレットから分割対象エントリを選択し、
前記分割対象エントリに関連付けられた複数の画素を複数の画素グループに分割し、
前記複数の画素グループに対応する複数のエントリを生成し、
前記複数の画素グループを前記複数のエントリにそれぞれ関連付け、
前記パレットを用いて前記符号化対象画像を符号化する、
ことを特徴とする画像符号化方法。
【請求項１４】
パレットを用いて符号化対象画像を符号化するコンピュータのための画像符号化プログラムであって、
前記符号化対象画像に含まれる第１画素を前記パレットのいずれかのエントリに関連付けるか否かを、画素値とパレット値との差分に対する閾値に基づいて決定し、
前記第１画素を前記パレットのいずれのエントリにも関連付けない場合、前記パレットにエントリを追加し、
前記パレットにエントリを追加すると前記符号化対象画像の符号化結果が目標情報量の条件を満たさなくなる場合、前記パレットの２つのエントリを合成して合成エントリを生成した後に、前記パレットにエントリを追加し、
前記第１画素を前記パレットのいずれかのエントリに関連付けた場合、又は前記パレットにエントリを追加した場合、又は前記合成エントリを生成した後に前記パレットにエントリを追加した場合、前記閾値を変更し、
前記符号化対象画像に含まれる第２画素を前記パレットのいずれかのエントリに関連付けるか否かを、変更後の閾値に基づいて決定し、
前記パレットを用いて前記符号化対象画像を符号化する、
処理を前記コンピュータに実行させる画像符号化プログラム。
【請求項１５】
パレットを用いて符号化対象画像を符号化するコンピュータのための画像符号化プログラムであって、
前記符号化対象画像に含まれる画素を前記パレットのエントリに関連付け、
前記パレットにエントリを追加しても前記符号化対象画像の符号化結果が目標情報量の条件を満たす場合、前記パレットの各エントリのパレット値と各エントリに関連付けられた画素の画素値との差分に基づいて、前記パレットから分割対象エントリを選択し、
前記分割対象エントリに関連付けられた複数の画素を複数の画素グループに分割し、
前記複数の画素グループに対応する複数のエントリを生成し、
前記複数の画素グループを前記複数のエントリにそれぞれ関連付け、
前記パレットを用いて前記符号化対象画像を符号化する、
処理を前記コンピュータに実行させる画像符号化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像符号化装置、画像符号化方法、及び画像符号化プログラムに関する。
【背景技術】
【０００２】
最近の動画像符号化における国際的な標準化活動として、International Organization for Standardization/International Electrotechnical Commission（ＩＳＯ／ＩＥＣ）のMoving Picture Experts Group（ＭＰＥＧ）が知られている。ＭＰＥＧは、ＩＳＯ／ＩＥＣ  ＪＣＴ１／ＳＣ２９／ＷＧ１１に対応し、その標準化活動には、スクリーンコンテンツ映像を符号化する技術も含まれる。スクリーンコンテンツ映像は、コンピュータグラフィックス等によって生成される映像であり、画素値が高い冗長性を有することが多い。
【０００３】
このようなスクリーンコンテンツ映像の符号化を促進する技術として、パレット符号化が知られている。パレット符号化では、１ブロックの画素の画素値に対して数個のインデックスが関連付けられ、画素値の代わりにインデックスを送信することで、画素値が符号化される。インデックスのビット数は画素値のビット数よりも少ないため、画素値の代わりにインデックスを送信することで、映像全体の圧縮効率が向上する。
【０００４】
図１は、パレット符号化の例を示している。画像１０１は６４（８×８）個の画素を含み、画像１０１の各画素値からパレット１０３が生成される。パレット１０３の各エントリは、画像１０１に含まれる色に対応し、インデックス及びパレット値を含む。インデックスは、色を表す符号であり、パレット値は、色を表す画素値である。この例では、画素値として（Ｒ，Ｇ，Ｂ）が用いられている。パレット１０３は、パレットテーブルと呼ばれることもある。
【０００５】
パレット１０３を用いて画像１０１の各画素値をインデックスに置き換えることで、インデックスマップ１０２が生成され、インデックスマップ１０２及びパレット１０３を符号化することで、画像１０１の符号化結果が生成される。
【０００６】
Ｒ、Ｇ、及びＢの各値は８ビットで表されるため、画像１０１の１画素当たりの情報量は、８×３＝２４ビットであり、画像１０１全体の情報量は、２４×６４＝１５３６ビットになる。
【０００７】
一方、各インデックスは３ビットで表されるため、インデックスマップ１０２の情報量は、３×６４＝１９２ビットである。また、パレット値は２４ビットで表されるため、パレット１０３に含まれるパレット値の情報量は、２４×５＝１２０ビットである。したがって、インデックスマップ１０２及びパレット１０３の情報量は、１９２＋１２０＝３１２ビットになり、画像１０１の情報量の約１／５に減少している。
【０００８】
High Efficiency Video Coding（ＨＥＶＣ）のスクリーンコンテンツ符号化は、ロッシー符号化とロスレス符号化の両方をサポートしている。ロスレス符号化は、符号化画像の復号結果が元の符号化対象画像と完全に一致する符号化であり、ロッシー符号化は、復号結果が符号化対象画像と比較して歪んでいることを許容する符号化である。
【０００９】
ロッシー符号化における目標は、歪みとビットレートとの最適比率を実現すること、又はビットレート制約の下で歪みを最小化することである。ロスレス符号化に使用される高ビットレートは、あらゆる状況で常に利用可能とは限らない。
【００１０】
一方、パレット符号化では、以下のいずれかのモードで各画素値を符号化することができる。
（１）エスケープモード
画素値をインデックスマップにマッピングすることなく、画素値が直接符号化されて、エスケープ符号が生成される。ロッシー符号化の場合、ビット数を削減するため、画素値が量子化された後に符号化される。
（２）インデックスモード
符号化時に、画素値がインデックスに置き換えられ、復号時に、パレットからインデックスに対応する画素値が抽出されて、インデックスが抽出された画素値に置き換えられる。ロッシー符号化の場合、インデックスが示す画素値は、符号化前の元の画素値とは異なることがある。
【００１１】
符号化対象ブロック内において、画素値がｎｂ＿ｃｃ個の色成分によって規定され、各色成分がｎｄｅｐｔｈビットで表されると仮定する。パレット符号化後に算術符号化を実施しない場合、１個のエスケープ符号を送信するためのビット数ｎｂ＿ｂｉｔ＿ｅｓｃは、量子化値Ｑを用いて次式により表される。
【００１２】
ｎｂ＿ｂｉｔ＿ｅｓｃ＝ｎｂ＿ｃｃ＊ｌｎ２（２ｎｄｅｐｔｈ／Ｑ）      （１）
【００１３】
この場合、パレットの１個のパレット値を送信するためのビット数ｎｂ＿ｂｉｔ＿ｐａｌは、次式により表される。
【００１４】
ｎｂ＿ｂｉｔ＿ｐａｌ＝ｎｂ＿ｃｃ＊ｎｄｅｐｔｈ      （２）
【００１５】
符号化対象ブロックがｎｂ＿ｉｎｄｅｘ個の異なるインデックスを用いて符号化される場合、１個のインデックスを送信するためのビット数ｎｂ＿ｂｉｔ＿ｉｎｄは、次式により表される。
【００１６】
ｎｂ＿ｂｉｔ＿ｉｎｄ＝ｌｎ２（ｎｂ＿ｉｎｄｅｘ）      （３）
【００１７】
エスケープ符号を使用するよりもパレットにエントリを追加する方が、復号結果の歪みをより効率的に削減できる。しかし、式（１）〜式（３）から分かるように、エスケープ符号を使用するよりもパレットにエントリを追加する方が、より多くのビット数が発生する。
【００１８】
画像を近似する点に着目してパレットを生成する方法では、まず、複数の画素値を同じインデックスによって参照することが適切とみなされるような、画素値の範囲が規定される。この範囲は、符号化対象ブロックに関連付けられた量子化係数ＱＰから導出することができる。次に、符号化対象ブロック内の画素を走査して、複数の画素の画素値が一意のインデックスによって参照される同じ画素値範囲に属する場合、それらの画素がグループ化される。そして、走査された画素の画素値がパレットのいずれのエントリの画素値範囲にも属さない場合にのみ、パレットの新たなエントリが生成される。
【００１９】
図２は、パレット生成方法の例を示している。ヒストグラム２０１は、符号化対象ブロック内における各画素値の出現回数を表す。この例では、簡単のため、１次元の画素値が用いられている。
【００２０】
符号化対象ブロックから画素が１個ずつ選択され、選択された画素の画素値がパレットの既存のエントリの画素値範囲に属する場合、その画素は既存のエントリに関連付けられる。一方、選択された画素の画素値がいずれのエントリの画素値範囲にも属さない場合、選択された画素の画素値をパレット値として、新たなエントリが生成される。すべての画素が選択されると、各エントリに関連付けられた複数の画素の画素値の平均値が計算され、各エントリのパレット値を計算した平均値に置き換えることで、パレットのエントリが１回だけ更新される。
【００２１】
矢印２１１〜矢印２１４は、インデックス“０”〜インデックス“４”のそれぞれのエントリの更新されたパレット値を示している。Ｒａｎｇｅ［０］〜Ｒａｎｇｅ［４］は、インデックス“０”〜インデックス“４”のそれぞれのエントリの更新された画素値範囲を表す。
【００２２】
画像に含まれる同色の画素に同一のインデックスを対応付ける画像圧縮において、距離が遠い画素のインデックスを分離したり、近似色の画素のインデックス同士を統合したりする技術も知られている（例えば、特許文献１を参照）。画像データの色空間上での分布をクラスタに分割し、分割されたクラスタの分割を繰り返し、クラスタ中心を代表色として、クラスタに属する画素データを代表色に置き換える技術も知られている（例えば、特許文献２を参照）。
【先行技術文献】
【特許文献】
【００２３】
【特許文献１】特開２０１０−１５７８９９号公報
【特許文献２】特開平４−６１５５８号公報
【発明の概要】
【発明が解決しようとする課題】
【００２４】
パレット符号化において、与えられたビットレート制約の下で復号結果の歪みを削減する最適なパレットを効率よく生成する技術は知られていない。
【００２５】
なお、かかる問題は、ビットレート制約の下で復号結果の歪みを削減する場合に限らず、パレット符号化において他の目標情報量の条件が与えられた場合においても生ずるものである。
【００２６】
１つの側面において、本発明は、パレット符号化において、目標情報量に応じて効率よくパレットを生成することを目的とする。
【課題を解決するための手段】
【００２７】
１つの案では、画像符号化装置は、関連付け部、追加部、合成部、制御部、及びパレット符号化部を含み、パレットを用いて符号化対象画像を符号化する。
【００２８】
関連付け部は、符号化対象画像に含まれる第１画素をパレットのいずれかのエントリに関連付けるか否かを、画素値とパレット値との差分に対する閾値に基づいて決定する。追加部は、関連付け部が第１画素をパレットのいずれのエントリにも関連付けない場合、パレットにエントリを追加する。合成部は、パレットにエントリを追加すると符号化対象画像の符号化結果が目標情報量の条件を満たさなくなる場合、パレットの２つのエントリを合成して合成エントリを生成する。
【００２９】
制御部は、関連付け部が第１画素をパレットのいずれかのエントリに関連付けた場合、又は追加部がパレットにエントリを追加した場合、又は合成部が合成エントリを生成した後に追加部がパレットにエントリを追加した場合、閾値を変更する。関連付け部は、符号化対象画像に含まれる第２画素をパレットのいずれかのエントリに関連付けるか否かを、変更後の閾値に基づいて決定する。パレット符号化部は、パレットを用いて符号化対象画像を符号化する。
【発明の効果】
【００３０】
実施形態によれば、パレット符号化において、目標情報量に応じて効率よくパレットを生成することができる。
【図面の簡単な説明】
【００３１】
【図１】パレット符号化を示す図である。
【図２】パレット生成方法を示す図である。
【図３】第１の画像符号化装置の構成図である。
【図４】第１の画像符号化処理のフローチャートである。
【図５】第２の画像符号化装置の構成図である。
【図６】第２の画像符号化処理のフローチャートである。
【図７】画像符号化装置の具体例を示す構成図である。
【図８】パレット生成部の構成図である。
【図９】パレット生成処理のフローチャートである。
【図１０】第１指標推定処理のフローチャートである。
【図１１】設定部の構成図である。
【図１２】初期パレット生成処理のフローチャートである。
【図１３】分割処理のフローチャートである。
【図１４】ＲＧＢ色空間におけるパレット値を示す図である。
【図１５】情報処理装置の構成図である。
【発明を実施するための形態】
【００３２】
以下、図面を参照しながら、実施形態を詳細に説明する。
特許文献１の技術を適用すれば、パレットのエントリの個数が所定数を超えた場合、既存の２つのエントリを１つに合成してエントリの個数を削減してから、新たなエントリを追加することが可能になる。しかし、合成後のエントリのパレット値を再計算し、各画素を合成後のエントリに関連付ける処理の負荷が高いため、エントリ合成の回数が多くなると処理時間が増大する。
【００３３】
また、複数の画素を分類して各画素を適切なパレット値によって表すクラスタリングを行うことで、最適なパレットを生成することも可能である。クラスタリング方法としては、Linde-Buzo-Gray（ＬＢＧ）法、Ｋ平均法等を用いることができる。これらのクラスタリング方法は局所最適解に収束する反復法であり、各繰り返しにおいて、入力点が最も近い重心に関連付けられ、重心と関連付けられた複数の入力点との距離の総和を最小化するように、各重心の位置が更新される。
【００３４】
パレットのクラスタリングでは、入力点は符号化対象ブロックの画素値に対応し、重心はパレット値に対応する。Ｋ平均法では、１回の繰り返しにおいて１個の重心のみが更新され、ＬＢＧ法では、１回の繰り返しにおいてすべての重心が更新される。
【００３５】
これらのクラスタリング方法は、いくつかのアプリケーションに対しては有効であると言える。しかし、クラスタリングはグローバルな最適化方法ではなく、クラスタリング結果の初期状態に対する依存性が強く、処理時間が増大する可能性が高いため、既存のクラスタリング方法をパレットのクラスタリングにそのまま実装することは、現実的ではない。
【００３６】
図３は、実施形態の第１の画像符号化装置の構成例を示している。図３の画像符号化装置３０１は、関連付け部３１１、追加部３１２、合成部３１３、制御部３１４、及びパレット符号化部３１５を含み、パレット３２１を用いて符号化対象画像を符号化する。
【００３７】
図４は、図３の画像符号化装置３０１が行う第１の画像符号化処理の例を示すフローチャートである。まず、関連付け部３１１は、符号化対象画像に含まれる第１画素をパレット３２１のいずれかのエントリに関連付けるか否かを、画素値とパレット値との差分に対する閾値に基づいて決定する（ステップ４０１）。画素値が３次元ベクトルで表される場合、画素値とパレット値との差分は、２つの３次元ベクトルの間の距離に基づいて求めることができる。追加部３１２は、関連付け部３１１が第１画素をパレット３２１のいずれのエントリにも関連付けない場合、パレット３２１にエントリを追加する（ステップ４０２）。
【００３８】
次に、合成部３１３は、パレット３２１にエントリを追加すると符号化対象画像の符号化結果が目標情報量の条件を満たさなくなる場合、パレット３２１の２つのエントリを合成して合成エントリを生成する（ステップ４０３）。そして、追加部３１２は、合成部３１３が合成エントリを生成した後に、パレット３２１にエントリを追加する。制御部３１４は、以下のいずれかの場合に閾値を変更する（ステップ４０４）。
【００３９】
（１）関連付け部３１１が第１画素をパレット３２１のいずれかのエントリに関連付けた場合
（２）追加部３１２がパレット３２１にエントリを追加した場合
（３）合成部３１３が合成エントリを生成した後に、追加部３１２がパレット３２１にエントリを追加した場合
【００４０】
次に、関連付け部３１１は、符号化対象画像に含まれる第２画素をパレット３２１のいずれかのエントリに関連付けるか否かを、変更後の閾値に基づいて決定する（ステップ４０５）。そして、パレット符号化部３１５は、パレット３２１を用いて符号化対象画像を符号化する（ステップ４０６）。
【００４１】
このような画像符号化装置３０１によれば、パレット符号化において、目標情報量に応じて効率よくパレットを生成することができる。
【００４２】
図５は、実施形態の第２の画像符号化装置の構成例を示している。図５の画像符号化装置５０１は、関連付け部５１１、分割部５１２、及びパレット符号化部５１３を含み、パレット５２１を用いて符号化対象画像を符号化する。
【００４３】
図６は、図５の画像符号化装置５０１が行う第２の画像符号化処理の例を示すフローチャートである。まず、関連付け部５１１は、符号化対象画像に含まれる画素をパレット５２１のエントリに関連付ける（ステップ６０１）。
【００４４】
分割部５１２は、パレット５２１にエントリを追加しても符号化対象画像の符号化結果が目標情報量の条件を満たす場合、パレット５２１から分割対象エントリを選択する（ステップ６０２）。このとき、分割部５１２は、パレット５２１の各エントリのパレット値と、各エントリに関連付けられた画素の画素値との差分に基づいて、分割対象エントリを選択する。
【００４５】
次に、分割部５１２は、分割対象エントリに関連付けられた複数の画素を複数の画素グループに分割し（ステップ６０３）、複数の画素グループに対応する複数のエントリを生成する（ステップ６０４）。そして、分割部５１２は、複数の画素グループを複数のエントリにそれぞれ関連付ける（ステップ６０５）。パレット符号化部５１３は、パレット５２１を用いて符号化対象画像を符号化する（ステップ６０６）。
【００４６】
このような画像符号化装置５０１によれば、パレット符号化において、目標情報量に応じて効率よくパレットを生成することができる。
【００４７】
図７は、図３の画像符号化装置３０１及び図５の画像符号化装置５０１の具体例を示している。図７の画像符号化装置７０１は、制御部７１１、ブロック分割部７１２、予測符号化部７１３、パレット生成部７１４、パレット符号化部７１５、及びスイッチ７１６を含む。
【００４８】
パレット生成部７１４は、図３の関連付け部３１１、追加部３１２、合成部３１３、及び制御部３１４と、図５の関連付け部５１１及び分割部５１２に対応し、パレット符号化部７１５は、パレット符号化部３１５及びパレット符号化部５１３に対応する。
【００４９】
画像符号化装置７０１は、例えば、ハードウェア回路として実装することができる。この場合、画像符号化装置７０１の各構成要素を個別の回路として実装してもよく、１つの集積回路として実装してもよい。
【００５０】
画像符号化装置７０１は、入力される符号化対象動画像を符号化し、符号化動画像をビットストリームとして出力する。符号化対象動画像は、複数のピクチャを含む。各ピクチャは、カラー画像であってもよく、モノクロ画像であってもよい。ピクチャがカラー画像の場合、画素値はＲＧＢ形式であってもよく、ＹＵＶ形式であってもよい。
【００５１】
ブロック分割部７１２は、符号化対象ピクチャをブロック毎に区分して、予測符号化部７１３、パレット生成部７１４、及びパレット符号化部７１５へ出力する。ブロック分割部７１２から出力される各ブロックは、符号化対象画像に対応する。
【００５２】
制御部７１１は、ブロック毎の符号化モードを示す制御信号を、予測符号化部７１３、パレット生成部７１４、パレット符号化部７１５、及びスイッチ７１６へ出力する。また、制御部７１１は、ブロックの符号化結果に対する目標情報量の条件を、パレット生成部７１４へ出力する。目標情報量の条件としては、例えば、ブロック毎のビットレートの上限値を用いることができる。
【００５３】
制御部７１１から出力される制御信号が予測符号化を示す場合、予測符号化部７１３は、ブロックのイントラ予測符号化又はインター予測符号化を行って、直交変換及び量子化後の係数情報を生成し、その係数情報を符号化結果としてスイッチ７１６へ出力する。この場合、スイッチ７１６は、予測符号化部７１３から出力される符号化結果を選択して出力する。
【００５４】
一方、制御部７１１から出力される制御信号がパレット符号化を示す場合、パレット生成部７１４は、制御部７１１から出力される目標情報量の条件に応じて、ブロックに含まれる各画素の画素値から、そのブロックのパレットを生成する。そして、パレット生成部７１４は、生成したパレットをパレット符号化部７１５へ出力する。
【００５５】
パレット符号化部７１５は、パレット生成部７１４から出力されるパレットを用いて、ブロックの各画素の画素値をインデックスに置き換えることで、インデックスマップを生成する。そして、パレット符号化部７１５は、パレット及びインデックスマップを、符号化結果としてスイッチ７１６へ出力する。この場合、スイッチ７１６は、パレット符号化部７１５から出力される符号化結果を選択して出力する。
【００５６】
画像符号化装置７０１は、複数のピクチャの符号化結果を含む符号化動画像を、不図示の画像復号装置へ送信し、画像復号装置は、符号化動画像を復号して符号化対象動画像を復元する。
【００５７】
画像符号化装置７０１は、様々な用途に利用される。例えば、画像符号化装置７０１を、ビデオカメラ、映像送信装置、映像受信装置、テレビ電話システム、コンピュータ、又は携帯電話機に組み込むことも可能である。
【００５８】
図８は、図７のパレット生成部７１４の構成例を示している。図８のパレット生成部７１４は、推定部８０１、推定部８０２、設定部８０３、分割部８０４、直接符号化部８０５、及び調整部８０６を含む。
【００５９】
推定部８０１は、ブロックの情報と目標情報量の条件とに基づいて第１指標を推定し、設定部８０３及び分割部８０４へ出力する。第１指標は、生成されたパレットを用いてブロックをパレット符号化した場合に、ブロックの符号化結果が目標情報量の条件を満たすか否かを判定するために用いられる。第１指標としては、例えば、以下のような指標を用いることができる。
【００６０】
（ａ１）パレットのエントリの個数の上限値
（ａ２）パレットのエントリの個数の範囲
（ａ３）パレット符号化後に算術符号化を実施しない場合において、パレットを符号化するためのビット数と、インデックスマップを符号化するためのビット数との和
（ａ４）パレット符号化後に算術符号化を実施する場合において、パレットを符号化するためのビット数と、インデックスマップを符号化するためのビット数との和
（ａ５）パレット符号化後に算術符号化を実施する場合において、パレットの各エントリに関連付けられた画素の個数
【００６１】
設定部８０３は、第１指標に基づいてブロックの初期パレットを生成し、ブロックの各画素を初期パレットのエントリに関連付ける。そして、設定部８０３は、初期パレットとともに、ブロックの各画素と初期パレットのエントリとの関連付け結果を分割部８０４へ出力する。
【００６２】
分割部８０４は、第１指標に基づいて、初期パレットから分割対象エントリを選択し、その分割対象エントリに関連付けられた画素グループを複数の画素グループに分割し、それらの画素グループに対応する複数のエントリを生成する。そして、分割部８０４は、分割後の複数の画素グループを、生成した複数のエントリにそれぞれ関連付け、それらのエントリを含むパレットとともに、各画素とパレットのエントリとの関連付け結果を直接符号化部８０５へ出力する。
【００６３】
設定部８０３及び分割部８０４は、推定部８０１から出力される第１指標を用いる代わりに、ブロックの情報と目標情報量の条件とに基づいて、独自に第１指標を計算してもよい。
【００６４】
推定部８０２は、ブロックの情報、目標情報量の条件、及び分割部８０４から出力されるパレットに基づいて第２指標を推定し、直接符号化部８０５へ出力する。第２指標は、ブロックの一部の画素値を、パレットを用いることなく、エスケープ符号を用いて直接符号化した場合に、ブロックの符号化結果が目標情報量の条件を満たすか否かを判定するために用いられる。第２指標としては、例えば、以下のような指標を用いることができる。
【００６５】
（ｂ１）エスケープ符号の個数の上限値
（ｂ２）エスケープ符号の個数の範囲
（ｂ３）パレットの各エントリに関連付けられた画素の中から直接符号化対象画素を選択する際の選択確率を表すエントリ毎の重み
【００６６】
直接符号化部８０５は、第２指標に基づいて直接符号化対象画素の個数を計算し、パレットのエントリに関連付けられた画素の中から、計算した個数の直接符号化対象画素を選択する。例えば、第２指標としてエスケープ符号の個数の上限値を用いた場合、この上限値が直接符号化対象画素の個数として用いられる。
【００６７】
このとき、直接符号化部８０５は、パレットのエントリに関連付けられた画素のうち、画素値とパレット内における各パレット値との差分の最小値が最も大きい画素から順番に、直接符号化対象画素を選択してもよい。これにより、歪みの大きな画素から優先的にエスケープ符号に置き換えることができる。
【００６８】
次に、直接符号化部８０５は、各直接符号化対象画素の符号化方法を、パレット符号化からエスケープ符号を用いた直接符号化に変更する。このとき、直接符号化部８０５は、直接符号化対象画素とエントリとの関連付けを解除して、直接符号化対象画素の画素値を直接符号化し、直接符号化対象画素をエスケープ符号に関連付ける。
【００６９】
そして、直接符号化部８０５は、各直接符号化対象画素の関連付けを解除したパレットとともに、各画素とパレットのエントリ又はエスケープ符号との関連付け結果を調整部８０６へ出力する。目標情報量の条件を満たす範囲内で、できるだけ多くの画素に対してエスケープ符号を割り当てることで、復号結果の歪みを最小化することができる。
【００７０】
調整部８０６は、直接符号化対象画素の符号化方法が変更されたことによって生じたパレットのエントリの歪みを調整するために、パレットのクラスタリングを行う。より具体的には、調整部８０６は、パレットの各エントリのパレット値と、各エントリに関連付けられた画素グループとの間の歪みが最小化されるように、各エントリのパレット値を調整する。
【００７１】
このとき、調整部８０６は、パレットの各エントリに関連付けられた画素グループを初期状態として用いて、所定回数の繰り返し処理を行い、各エントリのパレット値と、各エントリと画素グループとの関連付けを更新する。各エントリに関連付けられた画素グループは、クラスタとして用いられ、各エントリのパレット値は、クラスタの重心として用いられる。所定回数は、クラスタリング結果の品質と処理時間とのトレードオフによって決定することができる。
【００７２】
そして、調整部８０６は、更新後のパレットとともに、各画素とパレットのエントリ又はエスケープ符号との関連付け結果を出力する。なお、直接符号化部８０５がブロックのいずれの画素も直接符号化しない場合、調整部８０６は、そのブロックのパレットを調整する必要はない。
【００７３】
図９は、図７のパレット生成部７１４が行うパレット生成処理の例を示すフローチャートである。まず、設定部８０３は、ブロックの初期パレットを生成する（ステップ９０１）。次に、分割部８０４は、初期パレットの分割対象エントリに関連付けられた画素グループを、複数の画素グループに分割することで、分割対象エントリを分割する（ステップ９０２）。次に、直接符号化部８０５は、直接符号化対象画素の符号化方法をパレット符号化から直接符号化に変更し（ステップ９０３）、調整部８０６は、パレットのエントリのクラスタリングを行う（ステップ９０４）。
【００７４】
図１０は、推定部８０１が行う第１指標推定処理の例を示すフローチャートである。この例では、目標情報量の条件としてビットレートの上限値が用いられ、第１指標としてパレットのエントリの個数の上限値が推定される。
【００７５】
まず、推定部８０１は、エントリの個数を表す制御変数ｋを１に設定し（ステップ１００１）、パレット及びインデックスマップの総情報量Ｓを計算する（ステップ１００２）。総情報量Ｓは、例えば、次式により計算することができる。
【００７６】
Ｓ＝ｋ＊ｎｂ＿ｃｃ＊ｎｄｅｐｔｈ＋ｌｎ２（ｋ）＊ｎｂ＿ｐｉｘｅｌ      （１１）
【００７７】
式（１１）のｎｂ＿ｃｃは、画素値に含まれる色成分の個数を表し、ｎｄｅｐｔｈは、各色成分のビット数を表し、ｌｎ２（ｋ）は、各インデックスのビット数を表し、ｎｂ＿ｐｉｘｅｌは、ブロックに含まれる画素の個数を表す。
【００７８】
次に、推定部８０１は、総情報量Ｓがビットレートの上限値ＢＲよりも小さいか否かをチェックする（ステップ１００３）。総情報量Ｓが上限値ＢＲよりも小さい場合（ステップ１００２，ＹＥＳ）、推定部８０１は、ｋを１だけインクリメントして（ステップ１００６）、ステップ１００２以降の処理を繰り返す。
【００７９】
一方、総情報量Ｓが上限値ＢＲ以上である場合（ステップ１００２，ＮＯ）、推定部８０１は、総情報量Ｓがビットレートの上限値ＢＲよりも大きいか否かをチェックする（ステップ１００４）。総情報量Ｓが上限値ＢＲよりも大きい場合（ステップ１００４，ＹＥＳ）、推定部８０１は、ｋ−１をエントリの個数の上限値に決定する（ステップ１００７）。一方、総情報量Ｓが上限値ＢＲと一致する場合（ステップ１００４，ＮＯ）、推定部８０１は、ｋをエントリの個数の上限値に決定する（ステップ１００５）。
【００８０】
この場合、推定部８０２は、ビットレートの上限値ＢＲに基づいて、エスケープ符号の個数の上限値を第２指標として推定することができる。まず、推定部８０２は、分割部８０４から出力されるパレットのエントリの個数を、式（１１）のｋとして用いることで、パレット及びインデックスマップの総情報量Ｓを計算する。そして、推定部８０２は、ビットレートの上限値ＢＲと総情報量Ｓとの差分を、エスケープ符号１個当たりのビット数で除算することで、エスケープ符号の個数の上限値を計算する。
【００８１】
図１１は、図８の設定部８０３の構成例を示している。図１１の設定部８０３は、制御部１１０１、スイッチ１１０２、合成部１１０３、追加部１１０４、更新部１１０５、関連付け部１１０６、及びスイッチ１１０７を含む。
【００８２】
制御部１１０１は、合成処理、追加処理、更新処理、又は関連付け処理のうちいずれの処理を行うかを示す制御信号を出力する。合成処理は、パレットの２つのエントリを合成して合成エントリを生成する処理であり、追加処理は、パレットにエントリを追加する処理である。更新処理は、パレットのエントリのパレット値を更新する処理であり、関連付け処理は、ブロックの画素をパレットのエントリに関連付ける処理である。
【００８３】
また、制御部１１０１は、推定部８０１から出力される第１指標を受信し、受信した第１指標を出力する。制御部１１０１は、ブロックの情報と目標情報量の条件とに基づいて第１指標を推定し、推定した１指標を出力することもできる。
【００８４】
スイッチ１１０２は、制御部１１０１から出力される制御信号が合成処理を示す場合、ブロックと、スイッチ１１０７から出力されるパレットとを合成部１１０３へ出力し、制御信号が追加処理を示す場合、ブロック及びパレットを追加部１１０４へ出力する。ただし、空のパレットに最初のエントリを追加する場合、スイッチ１１０２は、ブロックのみを追加部１１０４へ出力する。
【００８５】
また、スイッチ１１０２は、制御信号が更新処理を示す場合、ブロック及びパレットを更新部１１０５へ出力し、制御信号が関連付け処理を示す場合、ブロック及びパレットを関連付け部１１０６へ出力する。
【００８６】
合成部１１０３は、制御信号が合成処理を示す場合、パレットの２つのエントリを選択し、選択した２つのエントリそれぞれに関連付けられた２つの画素グループを結合して、１つの画素グループを生成する。次に、合成部１１０３は、パレットの新たなエントリを合成エントリとして生成し、生成した画素グループを合成エントリに関連付け、選択した２つのエントリをパレットから削除する。そして、合成部１１０３は、更新されたパレットとともに、各画素とエントリとの関連付け結果をスイッチ１１０７へ出力する。
【００８７】
追加部１１０４は、ブロックの画素のうち、未だパレットのエントリに関連付けられていない画素の画素値をパレット値とする、新たなエントリを生成し、その画素を生成したエントリに関連付ける。そして、追加部１１０４は、更新されたパレットとともに、各画素とエントリとの関連付け結果をスイッチ１１０７へ出力する。
【００８８】
更新部１１０５は、パレットの各エントリのパレット値と、各エントリに関連付けられた画素グループとの間の歪みが最小化されるように、各エントリのパレット値を更新する。そして、更新部１１０５は、更新されたパレットとともに、各画素とエントリとの関連付け結果をスイッチ１１０７へ出力する。
【００８９】
関連付け部１１０６は、ブロックの画素のうち、未だパレットのエントリに関連付けられていない画素を選択し、選択した画素をパレットのいずれかのエントリに関連付けるか否かを決定する。
【００９０】
このとき、関連付け部１１０６は、選択した画素の画素値とパレットの特定エントリのパレット値との差分を閾値と比較する。関連付け部１１０６は、差分が閾値以下である場合、選択した画素を特定エントリに関連付け、差分が閾値よりも大きい場合、選択した画素を特定エントリに関連付けない。そして、関連付け部１１０６は、パレットとともに、各画素とエントリとの関連付け結果をスイッチ１１０７へ出力する。
【００９１】
スイッチ１１０７は、制御信号が合成処理を示す場合、合成部１１０３から出力されるパレット及び関連付け結果を出力し、制御信号が追加処理を示す場合、追加部１１０４から出力されるパレット及び関連付け結果を出力する。また、スイッチ１１０７は、制御信号が更新処理を示す場合、更新部１１０５から出力されるパレット及び関連付け結果を出力し、制御信号が関連付け処理を示す場合、関連付け部１１０６から出力されるパレット及び関連付け結果を出力する。
【００９２】
設定部８０３は、合成処理、追加処理、更新処理、及び関連付け処理を繰り返すことで、ブロックのすべての画素をパレットのいずれかのエントリに関連付けた後、最終的に更新されたパレットを初期パレットとして出力する。
【００９３】
図１２は、図９のステップ９０１において設定部８０３が行う初期パレット生成処理の例を示すフローチャートである。まず、制御部１１０１は、画素値とパレット値との差分に対する閾値ＴＨの計算に用いる変数ＤＩＶを初期化して、関連付け部１１０６へ出力する（ステップ１２０１）。これにより、ＤＩＶは１に設定される。
【００９４】
次に、制御部１１０１は、パレットの個数の上限値を計算する（ステップ１２０２）。このとき、制御部１１０１は、推定部８０１から第１指標として受信したパレットの個数の上限値をそのまま用いてもよく、推定部８０１と同様にして、ブロックの情報と目標情報量の条件とに基づいて、パレットの個数の上限値を計算してもよい。
【００９５】
次に、関連付け部１１０６は、ブロックの画素のうち、未だパレットのエントリに関連付けられていない画素を選択する（ステップ１２０３）。そして、関連付け部１１０６は、選択した画素の画素値とパレットの各エントリのパレット値との差分を計算し、差分が最も小さいパレット値を有するエントリを選択する（ステップ１２０４）。
【００９６】
次に、関連付け部１１０６は、ＤＩＶを用いてＴＨを計算し、選択した画素の画素値と選択したエントリのパレット値との差分を、ＴＨと比較する（ステップ１２０５）。ＴＨは、例えば、次式により計算することができる。
【００９７】
ＴＨ＝Ｍａｘ（Ｍｉｎ＿ｄｉｓｔ／ＤＩＶ，Ｍｉｎ＿ｓｉｚｅ）      （１２）
【００９８】
式（１２）のＭｉｎ＿ｄｉｓｔは、パレット内のすべてのエントリの組み合わせから計算される、２つのパレット値の差分の最小値を表す。パレットのエントリの個数が１個以下である場合、Ｍｉｎ＿ｄｉｓｔは０に設定される。Ｍｉｎ＿ｓｉｚｅは、画素値が表す色空間である画素値空間において、１つのエントリに関連付けられる画素グループのクラスタの最小サイズを表す定数であり、事前に設定される。Ｍａｘ（）は、最大値を表す。
【００９９】
式（１２）によれば、Ｍｉｎ＿ｄｉｓｔが大きいほどＴＨも大きくなり、Ｍｉｎ＿ｄｉｓｔが小さいほどＴＨも小さくなる。一方、ＤＩＶが大きいほどＴＨは小さくなり、ＤＩＶが小さいほどＴＨは大きくなる。ただし、ＴＨの最小値は、Ｍｉｎ＿ｓｉｚｅである。
【０１００】
差分がＴＨ以下である場合（ステップ１２０５，ＮＯ）、関連付け部１１０６は、選択した画素を選択したエントリに関連付け（ステップ１２１０）、更新部１１０５は、画素が関連付けられたエントリのパレット値を更新する（ステップ１２１１）。更新後のパレット値ＰＶは、例えば、次式により計算することができる。
【０１０１】
ＰＶ＝Σ（ｐ＊ｎ（ｐ））／Σ（ｎ（ｐ））      （１３）
【０１０２】
式（１３）のｎ（ｐ）は、エントリに関連付けられた、画素値ｐを有する画素の個数を表し、Σ（）は、すべての画素値ｐに関する総和を表す。したがって、式（１３）のＰＶは、エントリに関連付けられたすべての画素の画素値の重み付き平均を表している。式（１３）によれば、更新後のパレット値ＰＶと、そのエントリに関連付けられたすべての画素の画素値との差分の総和を、最小化することができる。
【０１０３】
次に、制御部１１０１は、ＤＩＶを１だけインクリメントして、関連付け部１１０６へ出力する（ステップ１２１２）。ただし、ＤＩＶがステップ１２０２で計算した上限値に達している場合、制御部１１０１は、ＤＩＶを変更しない。
【０１０４】
次に、制御部１１０１は、ブロックのすべての画素を選択したか否かをチェックする（ステップ１２０９）。未選択の画素が残っている場合（ステップ１２０９，ＮＯ）、設定部８０３は、ステップ１２０３以降の処理を繰り返す。
【０１０５】
一方、差分がＴＨよりも大きい場合（ステップ１２０５，ＹＥＳ）、制御部１１０１は、パレットの個数の上限値に基づいて、エントリの追加が許容されるか否かをチェックする（ステップ１２０６）。パレットの個数が上限値よりも小さい場合、エントリの追加が許容されると判定され、パレットの個数が上限値に達している場合、エントリの追加が許容されないと判定される。
【０１０６】
エントリの追加が許容される場合（ステップ１２０６，ＹＥＳ）、追加部１１０４は、ステップ１２０３で選択された画素の画素値をパレット値とする新たなエントリを生成し、その画素を生成したエントリに関連付ける（ステップ１２０７）。次に、制御部１１０１は、ＤＩＶを１にリセットして、関連付け部１１０６へ出力する（ステップ１２０８）。そして、設定部８０３は、ステップ１２０３以降の処理を繰り返す。
【０１０７】
一方、エントリの追加が許容されない場合（ステップ１２０６，ＮＯ）、合成部１１０３は、パレットの２つのエントリを選択する（ステップ１２１３）。このとき、合成部１１０３は、例えば、パレットのすべてのエントリのパレット値を参照して、２つのパレット値の差分の最小値を求め、その最小値に対応する２つのエントリを選択する。
【０１０８】
次に、合成部１１０３は、選択した２つのエントリそれぞれに関連付けられた２つの画素グループを結合して、１つの画素グループを生成する（ステップ１２１４）。そして、合成部１１０３は、パレットの新たなエントリを合成エントリとして生成し、生成した画素グループを合成エントリに関連付け、選択した２つのエントリをパレットから削除する。また、更新部１１０５は、画素グループが関連付けられた合成エントリのパレット値を更新する。更新後のパレット値ＰＶは、例えば、式（１３）により計算することができる。
【０１０９】
２つのエントリを１つに合成することで、エントリの個数が１個減少するため、エントリの追加が可能になる。また、パレット値の差分の最小値に対応する２つのエントリを合成することで、合成エントリに関連付けられた画素グループ内において、画素値の分布の歪みを最小化することができる。
【０１１０】
２つのエントリを合成した後、設定部８０３は、ステップ１２０７以降の処理を行う。そして、ブロックのすべての画素を選択した場合（ステップ１２０９，ＹＥＳ）、設定部８０３は、処理を終了し、生成したパレットを初期パレットとして出力する。
【０１１１】
このような初期パレット生成処理によれば、パレットのエントリを追加することなく、画素を既存のエントリに関連付けることができた場合は、ＤＩＶが１だけインクリメントされ、式（１２）のＴＨが減少する。これにより、次に選択される画素を既存のエントリに関連付けるか否かを、より小さな閾値を用いて判定することができ、パレット値により近い画素を関連付けることが可能になる。
【０１１２】
一方、パレットのエントリが追加された場合、ＤＩＶが１にリセットされ、式（１２）のＴＨが増加する。これにより、次に選択される画素を既存のエントリに関連付けるか否かを、より大きな閾値を用いて判定することができ、さらなるエントリの追加が抑制される。したがって、エントリの個数が上限値に達した場合に行われる合成処理の繰り返し回数が削減され、合成エントリのパレット値の再計算及び合成エントリと画素グループとの関連付けの負荷が軽減される。
【０１１３】
また、Ｍｉｎ＿ｄｉｓｔが大きいほどＴＨが大きくなるため、次に選択される画素を既存のエントリに関連付けるか否かを、より大きな閾値を用いて判定することができる。したがって、Ｍｉｎ＿ｄｉｓｔが大きいほど、エントリの追加が抑制され、合成処理の負荷が軽減される。
【０１１４】
ステップ１２０５において、関連付け部１１０６は、式（１２）の代わりに、次式によりＴＨを計算してもよい。
【０１１５】
ＴＨ＝Ｍａｘ（Ａｖｅ＿ｄｉｓｔ／ＤＩＶ，Ｍｉｎ＿ｓｉｚｅ）      （１４）
【０１１６】
式（１４）のＡｖｅ＿ｄｉｓｔは、パレット内のすべてのエントリの組み合わせから計算される、２つのパレット値の差分の平均値を表し、次式により計算することができる。
【０１１７】
【数１】
0006613842.tif 000002
【０１１８】
式（１５）のＭは、パレットのエントリの個数を表し、ｐｉ及びｐｊは、それぞれ、ｉ番目（ｉ＝１〜Ｍ−１）及びｊ番目（ｊ＝ｉ＋１〜Ｍ）のエントリのパレット値を表し、Ｄｉｓｔ（ｐｉ，ｐｊ）は、ｐｉとｐｊとの差分を表す。パレットのエントリの個数が１個以下である場合、Ａｖｅ＿ｄｉｓｔは０に設定される。
【０１１９】
式（１４）によれば、Ａｖｅ＿ｄｉｓｔが大きいほどＴＨも大きくなり、Ａｖｅ＿ｄｉｓｔが小さいほどＴＨも小さくなる。式（１４）のＴＨを用いることで、式（１２）のＴＨを用いた場合よりも高い精度で、画素を既存のエントリに関連付けるか否かを決定することができる。
【０１２０】
図１３は、図９のステップ９０２において分割部８０４が行う分割処理の例を示すフローチャートである。まず、分割部８０４は、推定部８０１から第１指標として受信したパレットの個数の上限値に基づいて、エントリの追加が許容されるか否かをチェックする（ステップ１３０１）。パレットの個数が上限値よりも小さい場合、エントリの追加が許容されると判定され、パレットの個数が上限値に達している場合、エントリの追加が許容されないと判定される。
【０１２１】
エントリの追加が許容されない場合（ステップ１３０１，ＮＯ）、分割部８０４は、処理を終了し、設定部８０３から出力される初期パレットを出力する。
【０１２２】
一方、エントリの追加が許容される場合（ステップ１３０１，ＹＥＳ）、分割部８０４は、初期パレットのエントリのうち、２つ以上の画素が関連付けられたエントリの中から、分割対象エントリを選択する（ステップ１３０２）。
【０１２３】
このとき、分割部８０４は、例えば、初期パレットの各エントリのパレット値と、そのエントリに関連付けられた画素の画素値との差分の総和を計算して、差分の総和の最大値を求め、その最大値に対応するエントリを分割対象エントリとして選択する。これにより、パレット値と画素グループとの間の歪みが最も大きなエントリを、分割対象エントリとして選択することができる。
【０１２４】
次に、分割部８０４は、分割対象エントリに関連付けられた画素グループを、それぞれが１つ以上の画素を含む２つの画素グループに分割する（ステップ１３０３）。
【０１２５】
次に、分割部８０４は、分割後の２つの画素グループに対応する２つのエントリを生成して、初期パレットに追加する（ステップ１３０４）。このとき、分割部８０４は、例えば、画素値空間内において、以下の条件を満たすように、２つのエントリのパレット値ｐ１及びパレット値ｐ２を選択する。
（ｃ１）ｐ１及びｐ２が、分割対象エントリのパレット値ｐ０を通る直線上において、ｐ０の互いに異なる側に位置する。
（ｃ２）ｐ１及びｐ２の位置は、ｐ０の位置に関して非対称である。
【０１２６】
図１４は、画素値空間がＲＧＢ色空間である場合のｐ０、ｐ１、及びｐ２の例を示している。ｐ０、ｐ１、及びｐ２は、ＲＧＢ色空間における３次元座標（Ｒ，Ｇ，Ｂ）を表す。直線１４０１は、ｐ０を通る直線であり、ｐ１及びｐ２は、直線１４０１上においてｐ０の互いに異なる側に位置している。この例では、ｐ１及びｐ２は、次式を満たすように選択される。
【０１２７】
ｐ２＝（３／２）＊ｐ０−（１／２）＊ｐ１      （１６）
【０１２８】
式（１６）では、ｐ０からｐ１までの距離がｐ０からｐ２までの距離の２倍に設定されている。ｐ１としては、例えば、分割対象エントリに関連付けられた画素の画素値のうち、ｐ０から最も離れた画素値を用いることができる。
【０１２９】
次に、分割部８０４は、分割後の２つの画素グループを、生成した２つのエントリにそれぞれ関連付ける（ステップ１３０５）。
【０１３０】
次に、分割部８０４は、分割対象エントリの分割によって生じたパレットのエントリの歪みを調整するために、パレットのクラスタリングを行う（ステップ１３０６）。より具体的には、分割部８０４は、２つのエントリに関連付けられた２つの画素グループを初期状態として用いて、所定回数の繰り返し処理を行い、各エントリのパレット値と、各エントリと画素グループとの関連付けを更新する。所定回数は、クラスタリング結果の品質と処理時間とのトレードオフによって決定することができる。
【０１３１】
次に、分割部８０４は、初期パレットから分割対象エントリを削除し（ステップ１３０７）、更新後のパレットを処理対象として、ステップ１３０１以降の処理を繰り返す。そして、エントリの追加が許容されない場合（ステップ１３０１，ＮＯ）、分割部８０４は、処理を終了し、更新後のパレットを出力する。
【０１３２】
ステップ１３０４において、ｐ０を通る直線上で互いに異なる側に位置するようにｐ１及びｐ２を選択することで、ステップ１３０６におけるクラスタリングの収束を促進させて、短時間で高精度のクラスタリング結果を得ることができる。このとき、ｐ１及びｐ２がｐ０に関して対称ではなく、非対称に配置されるように、ｐ１及びｐ２を選択することで、分割後の各画素グループとパレット値との関連付けがさらに効率化される。
【０１３３】
このような分割処理によれば、エントリの個数が上限値に達するまでエントリの分割が繰り返され、分割後のエントリに関連付けられた画素グループのサイズが小さくなる。したがって、目標情報量の条件を満たす範囲内で、各エントリのパレット値と、各エントリに関連付けられた画素グループとの間の歪みを最小化することができる。
【０１３４】
図３の画像符号化装置３０１、図５の画像符号化装置５０１、及び図７の画像符号化装置７０１の構成は一例に過ぎず、画像符号化装置の用途又は条件に応じて一部の構成要素を省略又は変更してもよい。例えば、図７の画像符号化装置７０１において、ブロックの予測符号化を行わない場合、予測符号化部７１３及びスイッチ７１６を省略することができる。
【０１３５】
図８のパレット生成部７１４の構成は一例に過ぎず、画像符号化装置の用途又は条件に応じて一部の構成要素を省略又は変更してもよい。例えば、第１指標が画像符号化装置の外部から入力される場合、推定部８０１を省略することができ、第２指標が画像符号化装置の外部から入力される場合、推定部８０２を省略することができる。
【０１３６】
パレットのエントリの分割を行わない場合、分割部８０４を省略することができ、画素値の直接符号化によって生じるパレットのエントリの歪みが小さい場合、調整部８０６を省略することができる。画素値の直接符号化を行わない場合、直接符号化部８０５及び調整部８０６を省略することができる。
【０１３７】
図１１の設定部８０３の構成は一例に過ぎず、画像符号化装置の用途又は条件に応じて一部の構成要素を省略又は変更してもよい。例えば、パレットのエントリの合成を行わない場合、合成部１１０３を省略することができる。
【０１３８】
図４、図６、図９、図１０、図１２、及び図１３に示したフローチャートは一例に過ぎず、画像符号化装置の構成又は条件に応じて一部の処理を省略又は変更してもよい。例えば、図９のパレット生成処理において、パレットのエントリの分割を行わない場合、ステップ９０２の処理を省略することができ、画素値の直接符号化によって生じるパレットのエントリの歪みが小さい場合、ステップ９０４の処理を省略することができる。画素値の直接符号化を行わない場合、ステップ９０３及びステップ９０４の処理を省略することができる。
【０１３９】
図１２の初期パレット生成処理のステップ１２０２及びステップ１２０６において、制御部１１０１は、パレットの個数の上限値の代わりに、他の第１指標を用いてもよい。ステップ１２０８及びステップ１２１２において、制御部１１０１は、閾値ＴＨの計算に用いる変数ＤＩＶを変更する代わりに、閾値ＴＨを直接変更してもよい。
【０１４０】
図１３の分割処理において、分割対象エントリの分割によって生じるパレットのエントリの歪みが小さい場合、ステップ１３０６の処理を省略することができる。ステップ１３０１において、分割部８０４は、パレットの個数の上限値の代わりに、他の第１指標を用いてもよい。
【０１４１】
ステップ１３０３において、分割部８０４は、分割対象エントリに関連付けられた画素グループを、それぞれが１つ以上の画素を含む３つ以上の画素グループに分割してもよい。この場合、分割部８０４は、ステップ１３０４において、分割後の画素グループと同じ個数のエントリを生成して、初期パレットに追加する。
【０１４２】
図１の画像１０１、インデックスマップ１０２、及びパレット１０３と図２のヒストグラム２０１は一例に過ぎず、画像符号化装置の構成又は条件に応じて別の画像等を用いてもよい。図１４のパレット値ｐ０、パレット値ｐ１、及びパレット値ｐ２は一例に過ぎず、画像符号化装置の構成又は条件に応じて別のパレット値を用いてもよい。例えば、画素値がＲＧＢ形式以外である場合、ＲＧＢ色空間以外の色空間が画素値空間として用いられる。
【０１４３】
式（１）〜式（１６）は一例に過ぎず、画像符号化装置の構成又は条件に応じて別の計算式を用いてもよい。例えば、式（１６）の代わりに、ｐ０からｐ１までの距離とｐ０からｐ２までの距離とが異なるような、別の計算式を用いることができる。
【０１４４】
パレット符号化が適用される符号化対象画像は、スクリーンコンテンツ画像に限定されるものではなく、画素値のバリエーションが少ない他の画像であってもよい。また、パレット符号化が適用される符号化対象画像は、動画像に限定されるものではなく、静止画像であってもよい。
【０１４５】
図３の画像符号化装置３０１、図５の画像符号化装置５０１、及び図７の画像符号化装置７０１は、ハードウェア回路として実装することもでき、図１５に示すような情報処理装置（コンピュータ）を用いて実装することもできる。
【０１４６】
図１５の情報処理装置は、Central Processing Unit（ＣＰＵ）１５０１、メモリ１５０２、入力装置１５０３、出力装置１５０４、補助記憶装置１５０５、媒体駆動装置１５０６、及びネットワーク接続装置１５０７を備える。これらの構成要素はバス１５０８により互いに接続されている。
【０１４７】
メモリ１５０２は、例えば、Read Only Memory（ＲＯＭ）、Random Access Memory（ＲＡＭ）、フラッシュメモリ等の半導体メモリであり、画像符号化処理に用いられるプログラム及びデータを記憶する。メモリ１５０２が記憶するデータには、符号化対象画像、パレット、各画素とパレットのエントリ又はエスケープ符号との関連付け結果、符号化結果等が含まれる。
【０１４８】
ＣＰＵ１５０１（プロセッサ）は、例えば、メモリ１５０２を利用してプログラムを実行することにより、図３の関連付け部３１１、追加部３１２、合成部３１３、制御部３１４、及びパレット符号化部３１５として動作する。ＣＰＵ１５０１は、図５の関連付け部５１１、分割部５１２、及びパレット符号化部５１３としても動作する。ＣＰＵ１５０１は、図７の制御部７１１、ブロック分割部７１２、予測符号化部７１３、パレット生成部７１４、パレット符号化部７１５、及びスイッチ７１６としても動作する。
【０１４９】
ＣＰＵ１５０１は、図８の推定部８０１、推定部８０２、設定部８０３、分割部８０４、直接符号化部８０５、及び調整部８０６としても動作する。ＣＰＵ１５０１は、図１１の制御部１１０１、スイッチ１１０２、合成部１１０３、追加部１１０４、更新部１１０５、関連付け部１１０６、及びスイッチ１１０７としても動作する。
【０１５０】
入力装置１５０３は、例えば、キーボード、ポインティングデバイス等であり、ユーザ又はオペレータからの指示や情報の入力に用いられる。出力装置１５０４は、例えば、表示装置、プリンタ、スピーカ等であり、ユーザ又はオペレータへの問い合わせや処理結果の出力に用いられる。
【０１５１】
補助記憶装置１５０５は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。補助記憶装置１５０５は、ハードディスクドライブであってもよい。情報処理装置は、補助記憶装置１５０５にプログラム及びデータを格納しておき、それらをメモリ１５０２にロードして使用することができる。
【０１５２】
媒体駆動装置１５０６は、可搬型記録媒体１５０９を駆動し、その記録内容にアクセスする。可搬型記録媒体１５０９は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。可搬型記録媒体１５０９は、Compact Disk Read Only Memory（ＣＤ−ＲＯＭ）、Digital Versatile Disk（ＤＶＤ）、又はUniversal Serial Bus（ＵＳＢ）メモリであってもよい。ユーザ又はオペレータは、この可搬型記録媒体１５０９にプログラム及びデータを格納しておき、それらをメモリ１５０２にロードして使用することができる。
【０１５３】
このように、処理に用いられるプログラム及びデータを格納するコンピュータ読み取り可能な記録媒体には、メモリ１５０２、補助記憶装置１５０５、及び可搬型記録媒体１５０９のような、物理的な（非一時的な）記録媒体が含まれる。
【０１５４】
ネットワーク接続装置１５０７は、Local Area Network（ＬＡＮ）、インターネット等の通信ネットワークに接続され、通信に伴うデータ変換を行う通信インタフェースである。ネットワーク接続装置１５０７は、符号化動画像を画像復号装置へ送信することもできる。情報処理装置は、プログラム及びデータを外部の装置からネットワーク接続装置１５０７を介して受け取り、それらをメモリ１５０２にロードして使用することもできる。
【０１５５】
なお、情報処理装置が図１５のすべての構成要素を含む必要はなく、用途又は条件に応じて一部の構成要素を省略することも可能である。例えば、ユーザ又はオペレータとのインタフェースが不要の場合は、入力装置１５０３及び出力装置１５０４を省略してもよい。また、情報処理装置が可搬型記録媒体１５０９にアクセスしない場合は、媒体駆動装置１５０６を省略してもよい。
【０１５６】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【０１５７】
図３乃至図１５を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
（付記１）
パレットを用いて符号化対象画像を符号化する画像符号化装置であって、
前記符号化対象画像に含まれる第１画素を前記パレットのいずれかのエントリに関連付けるか否かを、画素値とパレット値との差分に対する閾値に基づいて決定する関連付け部と、
前記関連付け部が前記第１画素を前記パレットのいずれのエントリにも関連付けない場合、前記パレットにエントリを追加する追加部と、
前記パレットにエントリを追加すると前記符号化対象画像の符号化結果が目標情報量の条件を満たさなくなる場合、前記パレットの２つのエントリを合成して合成エントリを生成する合成部と、
前記関連付け部が前記第１画素を前記パレットのいずれかのエントリに関連付けた場合、又は前記追加部が前記パレットにエントリを追加した場合、又は前記合成部が前記合成エントリを生成した後に前記追加部が前記パレットにエントリを追加した場合、前記閾値を変更する制御部と、
前記パレットを用いて前記符号化対象画像を符号化するパレット符号化部と、
を備え、
前記関連付け部は、前記符号化対象画像に含まれる第２画素を前記パレットのいずれかのエントリに関連付けるか否かを、変更後の閾値に基づいて決定することを特徴とする画像符号化装置。
（付記２）
前記合成部は、前記パレットにエントリを追加すると前記符号化結果の情報量が前記目標情報量を超える場合、前記合成エントリを生成し、前記追加部は、前記合成部が前記合成エントリを生成した後に前記パレットにエントリを追加し、前記制御部は、前記閾値をより大きな値に変更し、前記関連付け部は、前記第２画素の画素値と前記パレットの特定エントリのパレット値との差分が前記変更後の閾値よりも小さい場合、前記第２画素を前記特定エントリに関連付けることを特徴とする付記１記載の画像符号化装置。
（付記３）
前記制御部は、前記関連付け部が前記第１画素を前記パレットのいずれかのエントリに関連付けた場合、前記閾値をより小さな値に変更し、前記関連付け部は、前記第２画素の画素値と前記パレットの特定エントリのパレット値との差分が前記変更後の閾値よりも小さい場合、前記第２画素を前記特定エントリに関連付け、前記第２画素の画素値と前記特定エントリのパレット値との前記差分が前記変更後の閾値よりも大きい場合、前記第２画素を前記特定エントリに関連付けないことを特徴とする付記１記載の画像符号化装置。
（付記４）
前記制御部は、前記パレットの第１エントリのパレット値と第２エントリのパレット値との差分に基づいて前記閾値を変更することを特徴とする付記１乃至３のいずれか１項に記載の画像符号化装置。
（付記５）
前記目標情報量の条件は、前記符号化結果を伝送する際のビットレートに対する上限値を表すことを特徴とする付記１乃至４のいずれか１項に記載の画像符号化装置。
（付記６）
前記合成部が合成する前記２つのエントリのパレット値の差分は、前記パレット内における２つのパレット値の差分の最小値であることを特徴とする付記１乃至５のいずれか１項に記載の画像符号化装置。
（付記７）
パレットを用いて符号化対象画像を符号化する画像符号化装置であって、
前記符号化対象画像に含まれる画素を前記パレットのエントリに関連付ける関連付け部と、
前記パレットにエントリを追加しても前記符号化対象画像の符号化結果が目標情報量の条件を満たす場合、前記パレットの各エントリのパレット値と各エントリに関連付けられた画素の画素値との差分に基づいて、前記パレットから分割対象エントリを選択し、前記分割対象エントリに関連付けられた複数の画素を複数の画素グループに分割し、前記複数の画素グループに対応する複数のエントリを生成し、前記複数の画素グループを前記複数のエントリにそれぞれ関連付ける分割部と、
前記パレットを用いて前記符号化対象画像を符号化するパレット符号化部と、
を備えることを特徴とする画像符号化装置。
（付記８）
前記分割対象エントリのパレット値と前記分割対象エントリに関連付けられた画素の画素値との差分の総和は、前記パレットの他のエントリのパレット値と前記他のエントリに関連付けられた画素の画素値との差分の総和よりも大きいことを特徴とする付記７記載の画像符号化装置。
（付記９）
前記分割部は、前記複数のエントリに関連付けられた前記複数の画素グループを初期状態として用いてクラスタリングを行い、前記複数のエントリと前記複数の画素グループとの関連付けを更新することを特徴とする付記７又は８記載の画像符号化装置。
（付記１０）
前記複数のエントリは２つのエントリであり、前記２つのエントリの２つのパレット値は、画素値空間内で前記分割対象エントリのパレット値を通る直線上において、前記分割対象エントリの前記パレット値の互いに異なる側に位置し、前記２つのパレット値の位置は、前記分割対象エントリの前記パレット値の位置に関して非対称であることを特徴とする付記７乃至９のいずれか１項に記載の画像符号化装置。
（付記１１）
前記パレットのエントリに関連付けられた画素の画素値を直接符号化しても前記符号化結果が前記目標情報量の条件を満たす場合、前記パレットのエントリに関連付けられた画素の中から直接符号化対象画素を選択し、前記直接符号化対象画素と前記パレットのエントリとの関連付けを解除して、前記直接符号化対象画素の画素値を直接符号化する直接符号化部をさらに備えることを特徴とする付記７乃至１０のいずれか１項に記載の画像符号化装置。
（付記１２）
前記直接符号化対象画素の画素値と前記パレット内におけるパレット値との差分の最小値は、前記パレットのエントリに関連付けられた他の画素の画素値と前記パレット内におけるパレット値との差分の最小値よりも大きいことを特徴とする付記１１記載の画像符号化装置。
（付記１３）
前記直接符号化部が前記関連付けを解除した後、前記パレットの各エントリに関連付けられた画素を初期状態として用いてクラスタリングを行い、前記パレットの各エントリと画素との関連付けを更新する調整部をさらに備えることを特徴とする付記１１又は１２記載の画像符号化装置。
（付記１４）
前記目標情報量の条件は、前記符号化結果を伝送する際のビットレートに対する上限値を表すことを特徴とする付記７乃至１３のいずれか１項に記載の画像符号化装置。
（付記１５）
パレットを用いて符号化対象画像を符号化する画像符号化方法であって、
前記符号化対象画像に含まれる第１画素を前記パレットのいずれかのエントリに関連付けるか否かを、画素値とパレット値との差分に対する閾値に基づいて決定し、
前記第１画素を前記パレットのいずれのエントリにも関連付けない場合、前記パレットにエントリを追加し、
前記パレットにエントリを追加すると前記符号化対象画像の符号化結果が目標情報量の条件を満たさなくなる場合、前記パレットの２つのエントリを合成して合成エントリを生成した後に、前記パレットにエントリを追加し、
前記第１画素を前記パレットのいずれかのエントリに関連付けた場合、又は前記パレットにエントリを追加した場合、又は前記合成エントリを生成した後に前記パレットにエントリを追加した場合、前記閾値を変更し、
前記符号化対象画像に含まれる第２画素を前記パレットのいずれかのエントリに関連付けるか否かを、変更後の閾値に基づいて決定し、
前記パレットを用いて前記符号化対象画像を符号化する、
ことを特徴とする画像符号化方法。
（付記１６）
パレットを用いて符号化対象画像を符号化する画像符号化方法であって、
前記符号化対象画像に含まれる画素を前記パレットのエントリに関連付け、
前記パレットにエントリを追加しても前記符号化対象画像の符号化結果が目標情報量の条件を満たす場合、前記パレットの各エントリのパレット値と各エントリに関連付けられた画素の画素値との差分に基づいて、前記パレットから分割対象エントリを選択し、
前記分割対象エントリに関連付けられた複数の画素を複数の画素グループに分割し、
前記複数の画素グループに対応する複数のエントリを生成し、
前記複数の画素グループを前記複数のエントリにそれぞれ関連付け、
前記パレットを用いて前記符号化対象画像を符号化する、
ことを特徴とする画像符号化方法。
（付記１７）
パレットを用いて符号化対象画像を符号化するコンピュータのための画像符号化プログラムであって、
前記符号化対象画像に含まれる第１画素を前記パレットのいずれかのエントリに関連付けるか否かを、画素値とパレット値との差分に対する閾値に基づいて決定し、
前記第１画素を前記パレットのいずれのエントリにも関連付けない場合、前記パレットにエントリを追加し、
前記パレットにエントリを追加すると前記符号化対象画像の符号化結果が目標情報量の条件を満たさなくなる場合、前記パレットの２つのエントリを合成して合成エントリを生成した後に、前記パレットにエントリを追加し、
前記第１画素を前記パレットのいずれかのエントリに関連付けた場合、又は前記パレットにエントリを追加した場合、又は前記合成エントリを生成した後に前記パレットにエントリを追加した場合、前記閾値を変更し、
前記符号化対象画像に含まれる第２画素を前記パレットのいずれかのエントリに関連付けるか否かを、変更後の閾値に基づいて決定し、
前記パレットを用いて前記符号化対象画像を符号化する、
処理を前記コンピュータに実行させる画像符号化プログラム。
（付記１８）
パレットを用いて符号化対象画像を符号化するコンピュータのための画像符号化プログラムであって、
前記符号化対象画像に含まれる画素を前記パレットのエントリに関連付け、
前記パレットにエントリを追加しても前記符号化対象画像の符号化結果が目標情報量の条件を満たす場合、前記パレットの各エントリのパレット値と各エントリに関連付けられた画素の画素値との差分に基づいて、前記パレットから分割対象エントリを選択し、
前記分割対象エントリに関連付けられた複数の画素を複数の画素グループに分割し、
前記複数の画素グループに対応する複数のエントリを生成し、
前記複数の画素グループを前記複数のエントリにそれぞれ関連付け、
前記パレットを用いて前記符号化対象画像を符号化する、
処理を前記コンピュータに実行させる画像符号化プログラム。
【符号の説明】
【０１５８】
１０１  画像
１０２  インデックスマップ
１０３、３２１、５２１  パレット
２０１  ヒストグラム
２１１〜２１４  矢印
３０１、５０１、７０１  画像符号化装置
３１１、５１１、１１０６  関連付け部
３１２、１１０４  追加部
３１３、１１０３  合成部
３１４、７１１、１１０１  制御部
３１５、５１３、７１４  パレット符号化部
５１２、８０４  分割部
７１２  ブロック分割部
７１３  予測符号化部
７１４  パレット生成部
７１６、１１０２、１１０７  スイッチ
８０１、８０２  推定部
８０３  設定部
８０５  直接符号化部
８０６  調整部
１１０５  更新部
１５０１  ＣＰＵ
１５０２  メモリ
１５０３  入力装置
１５０４  出力装置
１５０５  補助記憶装置
１５０６  媒体駆動装置
１５０７  ネットワーク接続装置
１５０８  バス
１５０９  可搬型記録媒体
【図１】
0006613842.tif 000003
【図２】
0006613842.tif 000004
【図３】
0006613842.tif 000005
【図４】
0006613842.tif 000006
【図５】
0006613842.tif 000007
【図６】
0006613842.tif 000008
【図７】
0006613842.tif 000009
【図８】
0006613842.tif 000010
【図９】
0006613842.tif 000011
【図１０】
0006613842.tif 000012
【図１１】
0006613842.tif 000013
【図１２】
0006613842.tif 000014
【図１３】
0006613842.tif 000015
【図１４】
0006613842.tif 000016
【図１５】
0006613842.tif 000017