(57)【要約】【課題】画質の劣化を抑制でき、かつビット長の短い符号化データを、小さいハードウェア規模で生成可能な画像処理装置を提供する。【解決手段】ＬＣＤソースドライバ２は、ＲＧＢデータ受信回路１１と、ＲＧＢ／ＹＣＣ変換回路１２と、ＬＣＰ（Local Color Pallet）符号化回路１３と、メモリ１４と、ＬＣＰ復号化回路１５と、ＹＣＣ／ＲＧＢ変換回路１６と、ＬＣＤ駆動回路１７とを有する。画素ブロックごとに、画素値に応じた５個の分割領域を生成し、各分割領域をさらに二分割して計１０個のサブ領域を生成する。その際、輝度および色差の変化が大きい方向に沿って分割領域を二分割してサブ領域を生成するため、輝度および色差の変化に合致したサブ領域を生成できる。１６画素を４つの代表色に置換するため、符号化データのビット長を削減でき、符号化データを格納するメモリ１４の容量も削減でき、コスト削減が図れる。【選択図】図１
2009130690.tif 000002
【特許請求の範囲】
【請求項１】
隣接するｍ×ｎ画素（ｍ、ｎは正の整数）からなる画素ブロックのそれぞれごとに、前記画素ブロック内の前記ｍ×ｎ画素の画素値に応じて、ｐ個（ｐは正の整数）の分割領域を設定する分割領域設定手段と、
前記ｐ個の分割領域の画素値に基づいて、前記ｐ個の分割領域のそれぞれを２つのサブ領域に分割して、２ｐ個のサブ領域を設定するサブ領域設定手段と、
前記２ｐ個のサブ領域のそれぞれについて、代表色候補を設定する代表色候補設定手段と、
前記２ｐ個のサブ領域のそれぞれに対応する前記代表色候補の中から複数の代表色を選択する代表色選択手段と、
前記画素ブロック内の各画素を前記複数の代表色のいずれかに置換する代表色置換手段と、
前記画素ブロックのそれぞれごとに、前記複数の代表色に応じたビット列と、前記代表値置換手段で置換した結果に応じたビットマップデータとを含む符号化データを生成する符号化手段と、を備えることを特徴とする画像処理装置。
【請求項２】
前記画素ブロックのそれぞれごとに、前記ｍ×ｎ画素の輝度値の最大値、最小値および平均値を計算する最大最小平均値計算手段と、
前記最大値より第１の微小値だけ小さい値と前記平均値より第２の微小値だけ大きい値との間に属する画素の輝度値を平均化した第１の中間値と、前記最小値より第３の微小値だけ大きい値と前記平均値より第４の微小値だけ小さい値との間に属する画素の輝度値を平均化した第２の中間値とを計算する中間値計算手段と、を備え、
前記分割領域設定手段は、前記最大値、前記第１の中間値、前記平均値、前記第２の中間値および前記最小値を区切りとして、前記ｐ個の分割領域を設定することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記ｍ×ｎ画素の画素値は、輝度値と、第１の色差値と、第２の色差値とを有し、
前記ｐ個の分割領域のそれぞれごとに、各分割領域内の輝度値の最大値と最小値との差分値を計算する第１の差分値計算手段と、
前記ｐ個の分割領域のそれぞれごとに、各分割領域内の第１の色差値の最大値と最小値との差分値を計算する第２の差分値計算手段と、
前記ｐ個の分割領域のそれぞれごとに、各分割領域内の第２の色差値の最大値と最小値との差分値を計算する第３の差分値計算手段と、
前記第１〜第３の差分値計算手段で計算された差分値の中から最大値を選択する最大値選択手段と、を備え、
前記サブ領域設定手段は、前記ｐ個の分割領域のそれぞれごとに、前記最大値選択手段で選択された最大値に対応する輝度または色差方向に沿って分割領域を２つに分割することを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記代表色選択手段は、前記２ｐ個のサブ領域の中で発生頻度の高い４つのサブ領域を抽出し、抽出された４つのサブ領域の中で最も発生頻度の高いサブ領域に対応する代表色候補を第１の代表色として選択し、かつ残り3個のサブ領域の中で、前記第１の代表色との色合いが最も離れているサブ領域に対応する代表色候補を第２の代表色として選択し、かつ残り２個のサブ領域の中で、前記第２の代表色との色合いが最も離れているサブ領域に対応する代表色候補を第３の代表色として選択し、残り１個のサブ領域に対応する代表者候補を第４の代表色として選択することを特徴とする請求項１乃至３のいずれかに記載の画像処理装置。
【請求項５】
前記符号化手段は、
前記画素ブロックに対応するビットマップデータを、前記画素ブロック内の隣接する複数画素を単位として、遷移最小化符号に変換することを特徴とする請求項１乃至４のいずれかに記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画素ブロックごとに符号化を行う画像処理装置に関する。
【背景技術】
【０００２】
カラーパレットを利用した画像圧縮はソフトウェアによる実現が広く研究されている。この種のカラーパレット技術の中に、ローカルカラーパレットに関する技術がある。ローカルカラーパレットは、コンピュータグラフィックにおけるテクスチャ圧縮技術に主として利用されている。よく知られた技術として、ＤｉｒｅｃｔＸのＤＸＴＣ (Direct X Texture Compression)はＳ３ＴＣを基礎としたものである。またOpen-GL ES 2.0の拡張オプションとして、ＥＴＣ(Ericson Texture Compression)が提案されている。
【０００３】
しかしながら、これらの技術はすべて、ＣＰＵやＧＰＵといったプロセッサによって実行されるソフトウェアにより実現されている。このことは、プロセッサが必要であることを意味する。ＬＣＤ駆動用のソースドライバ回路等の周辺回路にプロセッサを内蔵させることはコスト的に不利であり、携帯機器のＬＣＤ駆動用として上記の技術を適用するのは望ましくない。
【０００４】
ローカルカラーパレットをハードウェアで実現することに関連した技術として、次の技術が知られている。特許文献１はＳ３ＴＣに関する一連の特許提案のうちで最新の提案であり、デコーダのみがハードウェアで実現されており、エンコーダはソフトウェアで実現されている。特許文献２も同様に、デコーダだけがハードウェアで実現されている。Open-GL ES 2.0に関しては、ＥＴＣはiPACKMANNと名称を変え、非特許文献１に解説されている。これは携帯電話を念頭においたテクスチャ圧縮の応用であるが、これでもデコーダのみがハードウェア実現されており、エンコーダはソフトウェアで実現されており、我々の目的とするソースドライバ内蔵でのＲＡＭ圧縮には応用できない。
【０００５】
非特許文献２は、Ｓ３ＴＣエンコーダの実時間処理を目指して処理を行うはじめてのアプローチである。代表色を決定するためのＰＣＡ（Principal Component Analysis）をＧＰＵで行うことで、高速に処理できる点で従来技術を大きく改善しているが、ＧＰＵの利用を前提としており、ハードウェアのコストが高くなる。
【特許文献１】米国登録特許７０５８２１８ (R. A. Drebin et al, Method of and apparatus for compressing and uncompressing image data. Jun. 6, 2006)
【特許文献２】米国登録特許７０４３０８７ (Z. Hong et al. Image Processing System, May 9, 2006)
【非特許文献１】論文 Jacob Stroem, T.Akenine-Moeller, iPACKMAN: High-Quality, Low-complexity Texture Compression for Mobile Phones, Graphics Hardware 2005, pp.63-70, ACM
【非特許文献２】Oskar Alexanderson, Christoffer Gurell, “Compressing Dynamically Generated Textures on the GPU,” thesis for a diploma in computer science, Department of Computer Science, Faculty of Science, Lund University. 2006. (Available from graphics.cs.lth.se/research/papers/gputc2006/thesis.pdf, extended paper for ACM SIGGRAPG 2006 P-80.)
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、画質の劣化を抑制でき、かつビット長の短い符号化データを、小さいハードウェア規模で生成可能な画像処理装置を提供するものである。
【課題を解決するための手段】
【０００７】
本発明の一態様によれば、隣接するｍ×ｎ画素（ｍ、ｎは正の整数）からなる画素ブロックのそれぞれごとに、前記画素ブロック内の前記ｍ×ｎ画素の画素値に応じて、ｐ個（ｐは正の整数）の分割領域を設定する分割領域設定手段と、
前記ｐ個の分割領域の画素値に基づいて、前記ｐ個の分割領域のそれぞれを２つのサブ領域に分割して、２ｐ個のサブ領域を設定するサブ領域設定手段と、
前記２ｐ個のサブ領域のそれぞれについて、代表色候補を設定する代表色候補設定手段と、
前記２ｐ個のサブ領域のそれぞれに対応する前記代表色候補の中から複数の代表色を選択する代表色選択手段と、
前記画素ブロック内の各画素を前記複数の代表色のいずれかに置換する代表色置換手段と、
前記画素ブロックのそれぞれごとに、前記複数の代表色に応じたビット列と、前記代表値置換手段で置換した結果に応じたビットマップデータとを含む符号化データを生成する符号化手段と、を備えることを特徴とする画像処理装置が提供される。
【発明の効果】
【０００８】
本発明によれば、画質の劣化を抑制でき、かつビット長の短い符号化データを小さいハードウェアで生成することができる。
【発明を実施するための最良の形態】
【０００９】
以下、図面を参照しながら、本発明の一実施形態について説明する。
【００１０】
図１は本発明の一実施形態による画像処理装置を含む液晶表示装置の概略構成を示すブロック図である。図１の液晶表示装置は、ＲＧＢデータ送信回路１と、ＬＣＤ（Liquid Crystal Display）ソースドライバ２と、ＬＣＤパネル３とを備えている。ＬＣＤソースドライバ２は、ＲＧＢデータ受信回路１１と、ＲＧＢ／ＹＣＣ変換回路１２と、ＬＣＰ（Local Color Pallet）符号化回路１３と、メモリ１４と、ＬＣＰ復号化回路１５と、ＹＣＣ／ＲＧＢ変換回路１６と、ＬＣＤ駆動回路１７とを有する。
【００１１】
本発明の一実施形態による画像処理装置は、少なくともＬＣＰ符号化回路１３を含んでいる。メモリ１４を含んでいてもよいが、メモリ１４は画像処理装置の外側に設けてもよい。メモリ１４は読み書きが可能なＲＡＭ（Random Access Memory）である。
【００１２】
ＲＧＢデータ送信回路１１は、例えば不図示のホストコンピュータに内蔵されており、ＲＧＢデータを送信する。このＲＧＢデータは、ＲＧＢデータ受信回路１１により受信される。ＲＧＢ／ＹＣＣ変換回路１２は、ＲＧＢデータを輝度データと色差データからなるＹＣＣデータに変換する。ＬＣＰ符号化回路１３は、後述するように、隣接するｍ×ｎ画素（ｍ、ｎは正の整数）からなる画素ブロックを単位として、符号化データを生成する。この符号化データはメモリ１４に格納される。ＬＣＰ復号化回路１５は、メモリ１４に格納された符号化データを読み出して復号化処理を行って、ＹＣＣデータを生成する。ＹＣＣ／ＲＧＢ変換回路１６は、生成されたＹＣＣデータをＲＧＢデータに変換する。ＬＣＤ駆動回路１７は、変換されたＲＧＢデータを階調電圧に変換して、ＬＣＤパネル３の各信号線に供給する。
【００１３】
図２はＬＣＰ符号化回路１３の概略的な処理手順を示すフローチャートである。ＲＧＢ／ＹＣＣ変換回路１２からＹＣＣデータを受け取り（ステップＳ１）、受け取ったＹＣＣデータを画素ブロックごとに分解する（ステップＳ２）。次に、画素ブロックごとに符号化処理を行って、符号化データを生成する（ステップＳ３）。次に、符号化データをメモリ１４に格納する（ステップＳ４）。
【００１４】
画素ブロックを構成する画素数に特に制限はないが、以下では画素ブロックが縦横４画素で構成される場合について説明する。
【００１５】
図３は図２のステップＳ３の詳細な処理手順を示すフローチャートである。図３の処理は、画素ブロックごとに行われる。まず、複数の代表色候補（color representative candidates）を設定する（ステップＳ１１）。次に、設定した複数の代表色候補の中から複数の代表色を選択する（ステップＳ１２）。次に、画素ブロック内の各画素の色を複数の代表色のいずれかに置換して、符号化データを生成する（ステップＳ１３）。
【００１６】
図４は図３のステップＳ１１の詳細な処理手順を示すフローチャートである。まず、画素ブロック内の各画素の輝度値の中から最大輝度値ＭＡＸと最小輝度値ＭＩＮを求め、また各画素の輝度値を平均化した平均輝度値ＭＩＤを計算する（ステップＳ２１）。
【００１７】
次に、最大輝度値ＭＡＸ、最小輝度値ＭＩＮおよび平均輝度値ＭＩＤを用いて、色量子化（color quantization）のための６種類の閾値を求める（ステップＳ２２）。このステップＳ２２の詳細については後述する。
【００１８】
次に、６種類の閾値により分割される５つの分割領域のそれぞれを２つずつに分割して、計１０個のサブ領域を設定する（ステップＳ２３）。次に、１０個のサブ領域のそれぞれごとに代表色候補を設定する（ステップＳ２４）。
【００１９】
図５は図３のステップＳ１２の詳細な処理手順を示すフローチャートである。まず、１０個のサブ領域のそれぞれごとに設定された１０個の代表色候補を発生頻度順に並び換える（ステップＳ３１）。
【００２０】
次に、最も発生頻度の高い代表色候補を第１の代表色として選択する（ステップＳ３２）。次に、第１の代表色に基づいて、残りの代表色候補の中から第２〜第４の代表色を選択する（ステップＳ３３）。
【００２１】
図６は図４のステップＳ２２の詳細な処理手順を示すフローチャートであり、図７は図４のステップＳ２２の処理を説明する図である。まず微小値ＤＥＬＴＡ１、ＤＥＬＴＡ２、ＤＥＬＴＡ３、ＤＥＬＴＡ４を用意する。これら微小値は、最大値ＭＡＸ、最小値ＭＩＮおよび平均値ＭＩＤよりもはるかに小さい値を想定している。そして、（ＭＩＮ＋ＤＥＬＴＡ１）と（ＭＩＤ−ＤＥＬＴＡ２）の中間輝度値をＭＩＤＬとする。同様に、（ＭＩＮ＋ＤＥＬＴＡ３）と（ＭＡＸ−ＤＥＬＴＡ４）の中間輝度値をＭＩＤＵとする（ステップＳ４１）。
【００２２】
このように、中間輝度値ＭＩＤＵ、ＭＩＤＬを計算する際に、ＭＩＮとＭＡＸの値をそのまま用いない理由は、ＭＩＮやＭＡＸを取る画素の数が多い場合に、中間輝度値がその影響を受けることを避けるためである。この種の問題は、特にＭＩＮが数多く発生するＰＣ画面のような人工的な画像で生じうる。また、ＭＩＮとＭＡＸの平均値ＭＩＤを計算する際にも生じうる。
【００２３】
図６のように、微小値ＤＥＬＴＡ１〜５を加味して中間輝度値ＭＩＤＵ、ＭＩＤＬを検出することにより、ＭＩＮとＭＡＸに影響されずに中間輝度値ＭＩＤＵ、ＭＩＤＬを算出できる。
【００２４】
一般に、４×４画素からなる画素ブロック内では、画素同士の相関が高く、同じ色を取る確率が高い。すなわち、画素ブロック内の各画素の色が異なることは少なく、色数は１色になる確率が高い。もちろん、これは統計的な性質であり、個別の画像に関して常に成立するわけではない。
【００２５】
このような統計的性質を考慮した場合に、色数が多少少なくても、例えば４色で画素ブロックを近似しても、画質はそれほど劣化しないことが経験的に知られている。画素ブロックから４色を得るには、画素ブロック内の各画素の色を最低４色に分類する必要がある。
【００２６】
そこで、本実施形態では、画素ブロック内の色を４色に分類するために、画素ブロック内の各画素を輝度値に応じて５つの領域に分割することとし、そのために図６の手法で中間輝度値ＭＩＤＬ、ＭＩＤＵを設定した。
【００２７】
ところで、本実施形態において、色差値ではなく、輝度値に応じて５つの領域に分割した理由は、色情報の空間的変化は輝度情報の空間的変化より小さいという事実が一般に知られているためである。本実施形態は、後述するように、まず輝度値に応じて５つの領域に分割した後、輝度値または色差値に応じて、各分割領域を２つのサブ領域に分割する。
【００２８】
図６のステップＳ４１にて中間輝度値ＭＩＤＵ、ＭＩＤＬが算出されると、次に５つの分割領域を生成するための６つの閾値ｔｈＹ０〜ｔｈＹ５を、以下の（１）〜（６）式により計算する（ステップＳ４２）。
ｔｈＹ０＝ＭＩＮＹ    …（１）
ｔｈＹ１＝（ＭＩＮＹ＋ＭＩＤＹＬ）／２    …（２）
ｔｈＹ２＝ＭＩＤＹ−（ＭＩＤＹ−ＭＩＤＹＵ）／２    …（３）
ｔｈＹ３＝ＭＩＤＹ＋（ＭＩＤＹＵ−ＭＩＤＹ）／２    …（４）
ｔｈＹ４＝ＭＩＤＹ−（ＭＡＸＹ−ＭＩＤＹＵ）／２    …（５）
ｔｈＹ５＝ＭＡＸＹ    …（６）
【００２９】
次に、各分割領域１〜５ごとに、輝度値の平均値と、色差値Ｃｂ，Ｃｒの平均値とを計算する（ステップＳ４３）。これら平均値を計算する理由は、平均値の最も大きな方向（輝度方向または色差方向）に各分割領域を二分割するためである。
【００３０】
図８は分割領域１〜５を模式的に示す図である。Ｙ（輝度）軸方向に６つの閾値ｔｈＹ０〜ｔｈＹ５が設けられ、各閾値を境界として分割領域１〜５が設定される。
【００３１】
図９〜図１２は５つの分割領域をさらに１０個のサブ領域に分ける処理（図４のステップＳ２３）を模式的に示す図である。図９は分割領域５についてＣｒ方向とＣｂ方向にそれぞれ二分割した例を示しているが、実際には、二方向に同時に分割されることはなく、一方向のみに分割される。より具体的には、分割領域内のＹ方向、Ｃｒ方向またはＣｂ方向に二分割される。
【００３２】
図１０では、Ｃｂ方向に分割した例と、Ｃｒ方向に分割した例を模式的に図示している。なお、Ｙ方向に分割した例は省略しているが、Ｙ方向に分割することもありうる。
【００３３】
図１１は分割領域１〜５のそれぞれを２分割した例を示しており、分割領域１、５はＣｂ方向に二分割し、分割領域２〜４はＣｒ方向に二分割している。
【００３４】
図１２は、図１１の例で、１０個のサブ領域の画素値の平均値を星印で図示している。これら１０個のサブ領域の画素値の平均値が代表色候補となる。
【００３５】
図１３および図１４は図６のステップＳ４１の詳細な処理手順を示すフローチャートであり、中間輝度値ＭＩＤＵ、ＭＩＤＬを計算する処理を示している。画素ブロック内の各画素の輝度値を３つの領域に分類する。下領域（lower region）は、ＭＩＮ〜（ＭＩＮ＋ＤＥＬＴＡＬ）の範囲である。中領域（middle region）は、（ＭＩＮ＋ＤＥＬＴＡＬ＋１）〜（ＭＡＸ−ＤＥＬＴＡＵ−１）の範囲である。上領域（upper region）は、（ＭＡＸ−ＲＥＬＴＡＵ）〜ＭＡＸの範囲である。
【００３６】
まず、下領域、中領域および上領域内の画素数を計測するための変数ＣＮＴ＿ＹＬ、ＣＮＴ＿Ｙ、ＣＮＴ＿ＹＵとをいずれもゼロに設定する。また、下領域、中領域および上領域内の輝度値の総和を計算するための変数ＳＵＭ＿ＹＬ、ＳＵＭ＿Ｙ、ＳＵＭ＿ＹＵをいずれもゼロに設定する。また、下領域、中領域および上領域に画素が存在することを示すフラグＦＬＡＧＹＬ、ＦＬＡＧＹ、ＦＬＡＧＹＵをいずれもゼロに設定する。また、微小値ＤＥＬＴＡＬ、ＤＥＬＴＡＵを設定する（ステップＳ５１）。
【００３７】
次に、画素ブロック内の全画素についての処理が終了したか否かを判定し（ステップＳ５２）、まだ処理が終了していない画素があれば、その画素が下領域、中領域および上領域のいずれに属するかを判定する（ステップＳ５３）。
【００３８】
画素が下領域に属する場合には、変数ＣＮＴ＿ＹＬを１だけカウントアップし、変数ＳＵＭ＿ＹＬにその画素値（輝度値）を加算し、フラグＦＬＡＧ＿ＹＬを真（ｔｒｕｅ）に設定する（ステップＳ５４）。
【００３９】
画素が中領域に属する場合には、変数ＣＮＴ＿Ｙを１だけカウントアップし、変数ＳＵＭ＿Ｙにその画素値（輝度値）を加算し、フラグＦＬＡＧ＿Ｙを真（ｔｒｕｅ）に設定する（ステップＳ５５）。
【００４０】
画素が中領域に属する場合には、変数ＣＮＴ＿ＹＵを１だけカウントアップし、変数ＳＵＭ＿ＹＵにその画素値（輝度値）を加算し、フラグＦＬＡＧ＿ＹＵを真（ｔｒｕｅ）に設定する（ステップＳ５６）。
【００４１】
次に、フラグＦＬＡＧ＿Ｙが真か否かを判定し（ステップＳ５７）、真であれば中間輝度値ＭＩＤＹ＝ＲＯＵＮＤ（ＳＵＭ＿Ｙ／ＣＮＴ＿Ｙ）を計算する（ステップＳ５８）。ここで、関数ＲＯＵＮＤは丸め処理（例えば四捨五入）を行う関数である。偽（ｆａｌｓｅ）であれば、中間輝度値ＭＩＤＹを画素ブロック全体の平均値ＡＶＥＹとする（ステップＳ５９）。
【００４２】
次に、フラグＦＬＡＧ＿ＹＬが真か否かを判定し（ステップＳ６０）、真であれば中間輝度値ＭＩＤ＿ＹＬ＝ＲＯＵＮＤ（ＳＵＭ＿ＹＬ／ＣＮＴ＿ＹＬ）を計算する（ステップＳ６１）。偽であれば、ＭＩＤ＿ＹＬ＝ＲＯＵＮＤ（（ＭＩＮ＿Ｙ＋ＭＡＸ＿Ｙ）／２）を計算する（ステップＳ６２）。
【００４３】
次に、フラグＦＬＡＧ＿ＹＵが真か否かを判定し（ステップＳ６３）、真であれば中間輝度値ＭＩＤ＿ＹＵ＝ＲＯＵＮＤ（ＳＵＭ＿ＹＵ／ＣＮＴ＿ＹＵ）を計算する（ステップＳ６４）。偽であれば、ＭＩＤ＿ＹＵ＝ＲＯＵＮＤ（（ＭＩＮ＿Ｙ＋ＭＡＸ＿Ｙ）／２）を計算する（ステップＳ６５）。
【００４４】
図１４のフローチャートには割算の処理が含まれている。ただし、割算の分母は、変数ＣＮＴ＿Ｙ、ＣＮＴ＿ＹＬ、ＣＮＴ＿ＹＵであり、最大値ＭＡＸは４×４＝１６である。これは、８×８の乗算器（除算器）を設ける必要はなく、８×５の乗算器があれば済むことを意味している。より正確には、１６で割る場合はシフトするだけで済むため、１５までの除算を行えばよく、８×４の乗算器があればよい。この乗算器による演算は、最後に１回だけ行えばよい。
【００４５】
従来のＣＰＵやＧＰＵを利用したプログラムでは、行列固有値を計算する場合に乗算を多用しており、８×８の精度を必要としている。これと比較した場合、分割法による色量子化であり、本質的には１パスで計算を終了できる。
【００４６】
一方、従来のＰＣＡやＳＶＤを利用するアルゴリズムでは、乗算が数値計算で多用され、ハードウェアでの実現を考えた場合、致命的に大きな回路サイズが必要となる。本実施形態は、このような問題を解決したアルゴリズムになっている。
【００４７】
図１５および図１６は図６のステップＳ４３の詳細な処理手順を示すフローチャートであり、各分割領域１〜５ごとに平均輝度値および平均色差値を計算する処理を行う。まず、各分割領域内の画素数を計測するための変数ＣＮＴ＿Ｙ１〜ＣＮＴ＿Ｙ５をゼロに設定する。また、各分割領域内の輝度値の総和ＳＵＭ＿Ｙ１〜ＳＵＭ＿Ｙ５と、色差値の総和ＳＵＭ＿Ｃｂ１〜ＳＵＭ＿Ｃｂ５、ＳＵＭ＿Ｃｒ１〜ＳＵＭ＿Ｃｒ５とをゼロに設定する。また、各分割領域内に画素が存在するか否かを示すフラグＦＬＡＧ＿Ｙ１〜ＦＬＡＧ＿Ｙ５を偽（ｆａｌｓｅ）に設定する。各分割領域内の最大輝度値ＭＡＸ＿Ｙ１〜ＭＡＸ＿Ｙ５と、最大色差値ＭＡＸ＿Ｃｂ１〜ＭＡＸ＿Ｃｂ５、ＭＡＸ＿Ｃｒ１〜ＭＡＸ＿Ｃｒ５とをゼロに設定する。また、各分割領域内の最小輝度値ＭＩＮ＿Ｙ１〜ＭＩＮ＿Ｙ５と、最小色差値ＭＩＮ＿Ｃｂ１〜ＭＩＮ＿Ｃｂ５、ＭＩＮ＿Ｃｒ１〜ＭＩＮ＿Ｃｒ５とをゼロに設定する（ステップＳ７１）。
【００４８】
次に、画素ブロック内の全画素についての処理が終了したか否かを判定し（ステップＳ７２）、処理が終了していない画素があれば、対象画素の輝度値が分割領域１に属するか否かを判定する（ステップＳ７３）。ステップＳ７３の判定がＹＥＳの場合には、変数ＣＮＴ＿Ｙを１だけカウントアップし、変数ＳＵＭ＿Ｙ１、ＳＵＭ＿Ｃｂ１、ＳＵＭ＿Ｃｒ１に、対象画素の画素値Ｙ、Ｃｂ、Ｃｒをそれぞれ加算する。また、対象画素の画素値Ｙ、Ｃｂ、Ｃｒを変数ＭＡＸ＿Ｙ１、ＭＡＸ＿Ｃｂ１、ＭＡＸ＿Ｃｒ１とそれぞれ比較して、大きい方の値を変数ＭＡＸ＿Ｙ１、ＭＡＸ＿Ｃｂ１、ＭＡＸ＿Ｃｒ１に設定する。また、対象画素の画素値Ｙ、Ｃｂ、Ｃｒを変数ＭＩＮ＿Ｙ１、ＭＩＮ＿Ｃｂ１、ＭＩＮ＿Ｃｒ１とそれぞれ比較して、小さい方の値を変数ＭＩＮ＿Ｙ１、ＭＩＮ＿Ｃｂ１、ＭＩＮ＿Ｃｒ１に設定する。また、ＦＬＡＧ＿Ｙ１を真に設定する（ステップＳ７４）。
【００４９】
ステップＳ７３、Ｓ７４と同様の処理を、各分割領域内の画素について行う。これにより、ＳＵＭ＿Ｙ１〜ＳＵＭ＿Ｙ５、ＳＵＭ＿Ｃｂ１〜ＳＵＭ＿Ｃｂ５、ＳＵＭ＿Ｃｒ１〜ＳＵＭ＿Ｃｒ５、ＭＡＸ＿Ｙ１〜ＭＡＸ＿Ｙ５、ＭＡＸ＿Ｃｂ１〜ＭＡＸ＿Ｃｂ５、ＭＡＸ＿Ｃｒ１〜ＭＡＸ＿Ｃｒ５、ＭＩＮ＿Ｙ１〜ＭＩＮ＿Ｙ５、ＭＩＮ＿Ｃｂ１〜ＭＩＮ＿Ｃｂ５、ＭＩＮ＿Ｃｒ１〜ＭＩＮ＿Ｃｒ５が計算される。
【００５０】
次に、フラグＦＬＡＧ＿Ｙ１が真か否かを判定する（ステップＳ７５）。真の場合には、分割領域１の平均輝度値ＡＶＥ＿Ｙ１＝ＲＯＵＮＤ２（ＳＵＭ＿Ｙ１／ＣＮＴ＿Ｙ１）、平均色差値ＡＶＥ＿Ｃｂ１＝ＲＯＵＮＤ２（ＳＵＭ＿Ｃｂ１／ＣＮＴ＿Ｙ１）、ＡＶＥ＿Ｃｒ１＝ＲＯＵＮＤ２（ＳＵＭ＿Ｃｒ１／ＣＮＴ＿Ｙ１）を計算する（ステップＳ７６）。偽の場合には、平均輝度値ＡＶＥ＿Ｙ１と平均色差値ＡＶＥ＿Ｃｂ１、ＡＶＥ＿Ｃｒ１をいずれもゼロに設定する（ステップＳ７７）。
【００５１】
フラグＦＬＡＧ＿Ｙ２〜ＦＬＡＧ＿Ｙ４についても同様の処理を行う。その後、フラグＦＬＡＧ＿Ｙ５についても同様の処理を行う（ステップＳ７８〜Ｓ８０）。
【００５２】
図１７および図１８は図４のステップＳ２３の詳細な処理手順を示すフローチャートであり、１０個のサブ領域を設定する処理を行う。まず、各分割領域を輝度Ｙ方向、色差Ｃｂ方向、色差Ｃｒ方向のどちらに二分割するかを示すフラグｄＦｌａｇ１〜５をゼロに初期設定する（ステップＳ８１）。
【００５３】
次に、５つの分割領域すべてについての処理が終了したか否かを判定し（ステップＳ８２）、まだ終了していない分割領域ｉが存在する場合には、その分割領域ｉの最大輝度値ＭＡＸ＿Ｙｉと最小輝度値ＭＩＮ＿Ｙｉの差分ＲＡＮＧＥ＿Ｙｉと、最大色差値ＭＡＸ＿Ｃｂｉと最小色差値ＭＩＮ＿Ｃｂｉとの差分ＲＡＮＧＥ＿Ｃｂｉと、最大色差値ＭＡＸ＿Ｃｒｉと最小色差値ＭＩＮ＿Ｃｒｉとの差分ＲＡＮＧＥ＿Ｃｒｉとを計算する（ステップＳ８３）。
【００５４】
次に、差分ＲＡＮＧＥ＿Ｙｉ、ＲＡＮＧＥ＿Ｃｂｉ、ＲＡＮＧＥ＿Ｃｒｉの中から最大値ＭＡＸを選択する（ステップＳ８４）。ＲＡＮＧＥ＿Ｙｉが最大値ＭＡＸの場合には、ｄＦｌａｇｉを１に設定し、輝度Ｙ方向の閾値ｔｈＹｉｆｉｎｅを分割領域ｉの平均輝度値ＡＶＥ＿Ｙｉとする（ステップＳ８５）。ＲＡＮＧＥ＿Ｃｂｉが最大値ＭＡＸの場合には、ｄＦｌａｇｉを２に設定し、色差Ｃｂ方向の閾値ｔｈＣｂｉｆｉｎｅを分割領域ｉの平均色差値ＡＶＥ＿Ｃｂｉとする（ステップＳ８６）。ＲＡＮＧＥ＿Ｃｒｉが最大値ＭＡＸの場合には、ｄＦｌａｇｉを３に設定し、色差Ｃｒ方向の閾値ｔｈＣｒｉｆｉｎｅを分割領域ｉの平均色差値ＡＶＥ＿Ｃｒｉとする（ステップＳ８７）。
【００５５】
以上の処理により、各分割領域１〜５ごとに、輝度値の差分値および色差値の差分値のうち最大のものが選択される。
【００５６】
その後、必要に応じて、１０個のサブ領域の数を削減する処理を行う。まず、各分割領域１〜５ごとに、差分ＲＡＮＧＥ＿Ｙｉ、ＲＡＮＧＥ＿Ｃｂｉ、ＲＡＮＧＥ＿Ｃｒｉの中から最大値ＭＡＸを選択する（ステップＳ８８）。
【００５７】
次に、５つの分割領域のうち、任意の２つの分割領域間で、ステップＳ８８で選択した最大値ＭＡＸ同士を比較する（ステップＳ８９）。なお、述語isLEXY(XとYは領域を示す番号)は、領域Ｘと領域Ｙに関する範囲の最大ＭＡＸ値の大小を比較した結果を示す。isLEは”is least than or equal to”の略であり、値としては真偽を取る。〜は否定演算であり、ＸとＹが逆順になった述語は、元の述語の真偽値が否定された値に等しいので、ＸとＹの組合せは片一方で計算してその否定を取ればよい。そして、最大値ＭＡＸの小さい分割領域に対応するフラグｄＦｌａｇをゼロに設定する（ステップＳ９０）。
【００５８】
これらステップＳ８８〜Ｓ９０の処理を行うことにより、分割領域の数を削減でき、ひいてはサブ領域の数も削減でき、処理の簡略化を図ることができる。
【００５９】
図１９は図４のステップＳ２４の詳細な処理手順を示すフローチャートであり、１０個のサブ領域のそれぞれごとに代表色候補を設定する処理を行う。
【００６０】
まず、１０個のサブ領域のそれぞれに属する画素数を計測するための変数ＣＮＴ＿Ｙ１〜ＣＮＴ＿Ｙ５、ＣＮＴ＿１Ｃ〜ＣＮＴ＿５Ｃをゼロに設定する。また、１０個のサブ領域のそれぞれに属する画素の輝度値の総和ＳＵＭ＿Ｙ１〜ＳＵＭ＿Ｙ５、ＳＵＭ＿Ｙ１Ｃ〜ＳＵＭ＿Ｙ５Ｃをゼロに設定する。また、１０個のサブ領域のそれぞれに属する画素の色差値Ｃｂの総和ＳＵＭ＿Ｃｂ１〜ＳＵＭ＿Ｃｂ５、ＳＵＭ＿Ｃｂ１Ｃ〜ＳＵＭ＿Ｃｂ５Ｃをゼロに設定する。また、１０個のサブ領域のそれぞれに属する画素の色差値Ｃｒの総和ＳＵＭ＿Ｃｒ１〜ＳＵＭ＿Ｃｒ５、ＳＵＭ＿Ｃｒ１Ｃ〜ＳＵＭ＿Ｃｒ５Ｃをゼロに設定する。また、１０個のサブ領域に画素が存在するか否かを示すフラグＦＬＡＧ＿Ｙ１〜ＦＬＡＧ＿Ｙ５、ＦＬＡＧ＿Ｙ１Ｃ〜ＦＬＡＧ＿Ｙ５Ｃを偽に設定する（ステップＳ１０１）。
【００６１】
次に、画素ブロック内の全画素について処理が終了したか否かを判定する（ステップＳ１０２）。処理が終了していない画素が存在していれば、対象画素が１０個のサブ領域のうちどの領域に属するかを判定する（ステップＳ１０３）。
【００６２】
サブ領域１と判定された場合は、変数ＣＮＴ＿Ｙ１を１だけカウントアップし、変数ＳＵＭ＿Ｙ１に対象画素の輝度Ｙ値を累積加算し、変数ＳＵＭ＿Ｃｂ１に対象画素の色差Ｃｂ値を累積加算し、変数ＳＵＭ＿Ｃｒ１に対象画素の色差Ｃｒ値を累積加算する。また、フラグＦＬＡＧ＿Ｙ１を真に設定し、ビットマップを生成するための変数ＢＩＴＭＡＰ、ＢＩＴＭＡＰＤにサブ領域１に対応する値を設定する。ここで、変数ＢＩＴＭＡＰＤは、二分割することで追加された５領域分の情報を格納するためのものである。
【００６３】
サブ領域２〜１０についても、上述したステップＳ１０３〜Ｓ１０４と同様の処理を行う。
【００６４】
次に、サブ領域１に対応するフラグＦＬＡＧ＿１が真か否かを判定する。真であれば、サブ領域１内の代表色候補を、以下の（７）〜（９）式により計算する（ステップＳ１０６）。
ＲＥＰ＿Ｙ１＝ＲＯＵＮＤ２（ＳＵＭ＿Ｙ１／ＣＮＴ＿Ｙ１）    …（７）
ＲＥＰ＿Ｃｂ１＝ＲＯＵＮＤ２（ＳＵＭ＿Ｃｂ１／ＣＮＴ＿Ｃｂ１）    …（８）
ＲＥＰ＿Ｃｒ１＝ＲＯＵＮＤ２（ＳＵＭ＿Ｃｒ１／ＣＮＴ＿Ｃｒ１）    …（９）
【００６５】
ここで、関数ＲＯＵＮＤ２は、必要に応じて丸め処理を行うことを示している。より具体的には、ラフな画像の場合には、例えば輝度Ｙに関しては６ビットに丸め、色差Ｃｂ，Ｃｒに関しては５ビットに丸める。平坦な画像の場合には、８ビット精度を維持するために丸め処理を行わない。
【００６６】
偽であれば、サブ領域１内の代表色候補ＲＥＰ＿Ｙ１、ＲＥＰ＿Ｃｂ１、ＲＥＰ＿Ｃｒ１をいずれもゼロに設定する（ステップＳ１０７）。
【００６７】
サブ領域１〜５、１Ｃ〜４Ｃについても上記ステップＳ１０５〜Ｓ１０７と同様の処理を行う。その後、サブ領域５Ｃについて上記ステップＳ１０５〜Ｓ１０７と同様の処理を行う（ステップＳ１０８〜Ｓ１１０）。
【００６８】
図２１は図５のステップＳ３３の詳細な処理手順を示すフローチャートであり、代表色候補の中から例えば４種類の代表色を選択する処理を行う。
【００６９】
まず、１０個のサブ領域ごとに計算された１０個の代表色候補の中から、最も発生頻度の高い代表色候補を抽出して第１の代表色とする（ステップＳ１１１）。抽出した第１の代表色は代表色リストに入れられる。
【００７０】
次に、第１の代表色を代表色候補から除外する（ステップＳ１１２）。次に、予め定めた数の代表色が得られたか否かを判定する（ステップＳ１１３）。まだ、得られていなければ、次の代表色を計算し、計算された代表色を代表色リストに入れる（ステップＳ１１４）。
【００７１】
ステップＳ１１４の処理の詳細は後述するが、例えば遠距離法を用いて代表色を選択する。遠距離法は、カラーパレットの処理で用いた公知例はあるが、ローカルカラーパレットで用いた例はない。
【００７２】
上記ステップＳ１１４では、代表色候補のそれぞれについて、第１の代表色との差分を検出し、差分が最大のものを第２の代表色として選択し、次に差分が大きいものを第３の代表色として選択し、次に差分が大きいものを第４の代表色として選択する。
【００７３】
図２２は図２１のステップＳ１１４の詳細な処理手順を示すフローチャートであり、第２〜第４の代表色を選択する処理を行う。まず、画素ブロック内の全画素について処理を行ったか否かを判定し（ステップＳ１２１）、まだ処理を行っていない画素が存在する場合には、対象画素の色と代表色との差分（エラー）を計算する（ステップＳ１２２）。次に、対象画素に最も近い代表色を選択する（ステップＳ１２３）。選択した代表色に対応するビットマップデータを対象画素に割り振る（ステップＳ１２４）。
【００７４】
図２２の処理を行うことで、画素ブロック内の各画素の色を代表色に置き換えたビットマップを生成できる。
【００７５】
図２３および図２４は図２２の処理の詳細手順を示すフローチャートである。まず、以下の（１０）〜（１３）式に基づいて、対象画素の画素値（輝度値と色差値）と第１〜第４の代表色の画素値（輝度値と色差値）との差分（絶対値）を計算する（ステップＳ１３１）。
Dif1＝ABS（Ｙ−1stColorＹ）＋ABS（CB−1stColorCB）＋ABS（CR−1stColorCR）
…（１０）
Dif2＝ABS（Ｙ−2ndColorＹ）＋ABS（CB−2ndColorCB）＋ABS（CR−2ndColorCR）
…（１１）
Dif3＝ABS（Ｙ−3rdColorＹ）＋ABS（CB−3rd ColorCB）＋ABS（CR−3rd ColorCR）
…（１２）
Dif4＝ABS（Ｙ−4thColorＹ）＋ABS（CB−4th ColorCB）＋ABS（CR−4th ColorCR）
…（１３）
【００７６】
次に、差分Dif1よりDif2の方が大きいか否かを判定し（ステップＳ１３２）、ＹＥＳの場合は変数Dif12に差分Dif1を設定し、かつ差分Dif1に対応する第１の代表色のＩＤ＝１を変数minId12に設定する（ステップＳ１３３）。ＮＯの場合は変数Dif12に差分Dif2を設定し、かつ差分Dif2に対応する第２の代表色のＩＤ＝２を変数minId12に設定する（ステップＳ１３４）。
【００７７】
同様にして、差分Dif3とDif4を比較して、変数Dif34とminId34を設定する（ステップＳ１３５〜Ｓ１３７）。
【００７８】
次に、変数Dif12がDif34より小さいか否かを判定し（ステップＳ１３８）、ＹＥＳの場合は、変数minIdに変数minId12の値を設定する（ステップＳ１３９）。ＮＯの場合は、変数minIdに変数minId34の値を設定する（ステップＳ１４０）。
【００７９】
以上のステップＳ１３１〜Ｓ１４０の処理により、差分が最小な代表色のＩＤが変数minIdに設定される。
【００８０】
次に、変数minId＝１の場合には、第１の代表色を選択して、変数ＢＩＴＭＡＰに第１の代表色に対応するビット列００を設定する（ステップＳ１４２）。同様に、変数minId＝２〜４の場合も、それぞれ第２〜第４の代表色を選択して、変数ＢＩＴＭＡＰに第２〜第４の代表色に対応するビット列０１、１０、１１を設定する（ステップＳ１４３〜Ｓ１４５）。
【００８１】
図２５は図１のＬＣＰ復号化回路１５の処理手順を示すフローチャートである。まず、メモリ１４に格納された符号化データを取得する（ステップＳ１５１）。次に、取得した符号化データを画素ブロックごとに分類する（ステップＳ１５２）。次に、画素ブロックごとに、符号化データを復号する（ステップＳ１５３）。次に、復号化して得られたＹＣＣデータを一時的に格納する（ステップＳ１５４）。
【００８２】
図２６は図２５のステップＳ１５３の詳細な処理手順を示すフローチャートであり、復号処理を行う。まず、符号化データの中に含まれる代表色の情報を抽出する（ステップＳ１６１）。次に、符号化データの中に含まれるビットマップの情報を抽出する（ステップＳ１６２）。次に、抽出した代表色の情報とビットマップの情報から、符号化前の画素ブロックデータを復元する（ステップＳ１６３）。
【００８３】
以下、上述したＬＣＰ符号化回路１３による符号化処理の具体例について説明する。図２７は４×４画素からなる画素ブロックの輝度値Ｙおよび色差値Ｃｂ，Ｃｒの具体例を示す図である。図２７の画素ブロックは、４つの異なる輝度値Ｙと、４つの異なる色差値Ｃｂと、４つの異なる色差値Ｃｒとを有する。より具体的には、図２７の画素ブロックは赤青白灰の４色からなる。これら4色は、そのうちのどの２色をベースにしても、他の２色を導出できない。このように、本実施形態では、互いに関連のない４色を代表色として選定することを前提としている。
【００８４】
図２８は図２７の画素ブロックの輝度値Ｙと色差値Ｃｂ，Ｃｒをまとめた図である。図示のように、輝度値Ｙの最大値ＭＡＸは２５５、最小値ＭＩＮは２９、平均値ＡＶＥは１２０である。色差値Ｃｂの最大値ＭＡＸは２２６、最小値ＭＩＮは−７６、平均値ＡＶＥは−８である。色差値Ｃｒの最大値ＭＡＸは１７９、最小値ＭＩＮは０、平均値ＡＶＥは８９である。
【００８５】
図２９は図２７の輝度値を解析した結果を示す図である。輝度値の総計値は１９２４で、平均値は１２０になる。最小値ＭＩＮと平均値の間の輝度値ＹＬの総計値は６０８で、その平均値は７６になる。最大値ＭＡＸと平均値の間の輝度値ＹＵの総計値は４９３で、その平均値は１６４になる。
【００８６】
図３０は図２７の輝度値から算出される６つの閾値ｔｈＹ０〜ｔｈＹ５を示す図である。閾値ｔｈＹ０〜ｔｈＹ５の計算は、図７に示した手順で行う。これら６つの閾値ｔｈＹ０〜ｔｈＹ５により、画素ブロックは５つの分割領域に分割される。
【００８７】
図３１は図２７の画素ブロック内の輝度値Ｙおよび色差値Ｃｂ，Ｃｒを５つの分割領域に割り当てた例を示す図である。図２７の画素ブロックは４種類の輝度値および色差値しか持たないため、５つの分割領域のうち１つには仮の輝度値および色差値が割り当てられる。図３１の例では、分割領域Ｙ３に仮の輝度値および色差値を割り当てている。仮の値には＊印を付与している。
【００８８】
図３１では、分割領域（Ｙ１、Ｃｂ１、Ｃｒ１）には（２９、２２６、−２９）、分割領域（Ｙ２、Ｃｂ２、Ｃｒ２）には（７６、−７６、１７９）、分割領域（Ｙ３、Ｃｂ３、Ｃｒ３）には（２５６、２５６、２５６）、分割領域（Ｙ４、Ｃｂ４、Ｃｒ４）には（１６４、８、１５）、分割領域（Ｙ５、Ｃｂ５、Ｃｒ５）には（２５５、０、０）を割り当てている。
【００８９】
図３１において、ＲＮＧは最大値ＭＡＸと最小値ＭＩＮとの差分値、ＤＦＬＡＧとはサブ領域を生成する方向を示すフラグである。
【００９０】
図３２はサブ領域を生成する場合の閾値ｔｈ＿ｆｉｎｅ１〜５を示す図である。分割領域１、２および５では輝度方向にサブ領域が生成され、分割領域４では色差Ｃｂ方向にサブ領域が生成される例を示している。分割領域３は仮の領域であるため、サブ領域は生成されない。閾値ｔｈ＿ｆｉｎｅ１〜５は、各分割領域の平均輝度値または平均色差値である。
【００９１】
図３３は分割領域１〜５における輝度値または色差値の最大値ＭＡＸと最小値ＭＩＮとの差分値ＲａｎｇｅＹ、ＲａｎｇｅＣｂ、ＲａｎｇｅＣｒと、これら３つの差分値の最大値ＭＡＸとを示す図である。領域１、２、５では差分値がいずれもゼロであるため、例えば輝度方向にサブ領域が生成される。また、領域４では色差Ｃｂ方向の差分値が最大であるため、色差Ｃｂ方向にサブ領域が生成される。
【００９２】
図３４は図２７の画素ブロックのビットマップデータを生成する手法を説明する図である。図３４のビットマップ１は、１６画素のそれぞれが分割領域１〜５のどれに属するかを示している。ビットマップ２は、１６画素のそれぞれに対応する分割領域がどの方向にサブ領域を生成するかを示している。ビットマップ３は、ビットマップ１，２の情報を合成したものであり、ビットマップ１で「５」の値が「１０」の値に変更されて、１０領域の情報として表現している。
【００９３】
これにより、画素ブロック内の各画素を１０個のサブ領域に割り振ることができる。
【００９４】
図３５は図２７の画素ブロックに対応する色空間のデータ分布を示す図である。図３５（ａ）は画素ブロック内の４色を（ハッチを変えて）示した図、図３５（ｂ）は輝度Ｙ、色差Ｃｂ、色差Ｃｒの３軸からなる色空間内に４色をプロットで示した図である。
【００９５】
図３６は図２７の画素ブロックを１０個のサブ領域に分割した図である。図３６では、５つの分割領域１〜５のそれぞれを２分割して１０個のサブ領域１〜５と１Ｃ〜５Ｃを生成している。分割領域の境界線は実線で、サブ領域の境界線は破線で示している。図３６の星印は、画素ブロック内の４色の値を示している。
【００９６】
図３７は図２７の画素ブロックに対応する１０個のサブ領域１〜５、１Ｃ〜５Ｃの代表値候補を示す図である。図３７では、輝度値Ｙの代表値候補ＲＥＰＹと、色差値Ｃｂの代表値候補ＲＥＰＣｂと、色差値Ｃｒの代表値候補ＲＥＰＣｒとを示している。図３７では、各サブ領域１〜５、１Ｃ〜５Ｃの中に含まれる画素の数をＣＮＴで表している。
【００９７】
図３８は図３７のＣＮＴの順に並び換えた図である。図３８では、出現頻度の高いサブ領域を下側に配置している。図３８からわかるように、画素が存在するサブ領域は４つだけであり、領域ＩＤ＝２のサブ領域２内の画素数が最も多い。したがって、このサブ領域２に属する８画素の平均色を第１の代表色として選択する。
【００９８】
図３９は遠距離法を利用して代表色候補の中から第２〜第４の代表色を選択する手法を説明する図である。遠距離法では、第１の代表色との色の違いが最も大きいサブ領域を検出し、検出されたサブ領域の平均色を第２の代表色とする。次に、残りのサブ領域の中から、第２の代表色との色の違いが最も大きいサブ領域を検出し、検出されたサブ領域の平均色を第３の代表色とし、残りのサブ領域を第４の代表色とする。
【００９９】
なお、ここでの「距離」とは、色と色の間の距離である。ＹＣｂＣｒそれぞれの差を加算して距離としている「マンハッタン距離」をここでは採用しているが、一般的にはこのマンハッタン距離に限定する必然はない。他の距離を利用することも可能である。遠い距離の色から先に採用することで、画質劣化を少なくしている。例えば、距離の近い緑色の画素で、すこしだけ色の異なったものが多数存在しており、その中にたったひとつではあるが、赤色の画素がある場合を想定する。このような場合、赤色の画素は発生頻度が小さくても、そのデータを失うことは、画像としては劣化が大きい。この意味において、遠い距離にある色から先に採用していく。この考えが遠距離法である。
【０１００】
図３９では、領域ＩＤ＝１０、４、１の３つのサブ領域５Ｃ、４、１のそれぞれについて、第１の代表色の輝度値Ｙとの差分と、第１の代表色の色差値Ｃｂ、Ｃｒとの差分とを算出して、それらを足し合わせる。この結果、図３９に示すように、サブ領域１の差分５６０が最も大きいことがわかる。そこで、サブ領域１（ＩＤ＝１）の平均色を第２の代表色として選択する。距離計算に関し補足する：例えば、ソート番号９（領域ＩＤ＝１０）での距離は、Ｙの差１８０、Ｃｂの差８０、Ｃｒの差１７６を加算して、１８０＋８０＋１７６＝４３６となり、第一色ＹＣＣ＝（７６、−８０、１７６）と領域ＩＤ＝１０の色ＹＣＣ＝（２５６、０、０）との距離が４３６となっている。
【０１０１】
次に、残りのサブ領域５Ｃ、４のそれぞれについて、第２の代表色の輝度値Ｙとの差分と、第２の代表色の色差値Ｃｂ、Ｃｒとの差分とを算出して、それらを足し合わせる。この結果、図３９に示すように、サブ領域５Ｃとの差分が最も大きいことがわかる。そこで、サブ領域５Ｃ（ＩＤ＝１０）の平均色を第３の代表色として選択し、最後に残ったサブ領域４（ＩＤ＝４）の平均色を第４の代表色として選択する。
【０１０２】
図４０は第１〜第４の代表色とビットマップデータとを用いて符号化データを生成する手法を説明する図である。図示のように、第１〜第４の代表色は、ＹＣＣデータを合わせて１６ビットで表され、ビットマップデータは各画素情報が２ビットで表されるため、２×１６＝３２ビットを要する。その結果、符号化データのビット数は１６×４＋２×１６＝９６ビットとなる。なお、もともとは８ｘ３ｘ１６＝３８４ビットであったが、これが、９６ビットに削減できたということである。
【０１０３】
図４１は図２７の画素ブロックに対応する符号化データを示す図である。ビットマップを構成する１６画素のそれぞれには、第１〜第４の代表色のいずれかが割り当てられる。例えば、ビットマップの「００」は赤色に対応し、「０１」は青色に対応し、「１０」は白色に対応し、「１１」は灰色に対応する。
【０１０４】
画素ブロック内の画像の変化が大きい場合、すなわちラフな画像の場合は、図４０および図４１で示したように、第１〜第４の代表色をいずれも１６ビットで表現する必要があるが、画素ブロック内の画像の変化が少ない場合、すなわち平坦な画像の場合は、１６ビットの精度は必要とされない。この場合は、第１の代表色のみ２４ビットで表現し、第２〜第４の代表色は第１の代表色との差分値で表現して、符号化データのビット数の削減を図るのが望ましい。
【０１０５】
図４２は平坦な画像の符号化データのビット構成を示す図である。図４２（ａ）に示すように、第１の代表色は、ＹＣＣデータのそれぞれが８ビットで表現され、計２４ビットを要する。一方、第２〜第４の代表色は、第１の代表色との差分値で表現される。この差分値のビット数は、図４２（ｂ）に示すように、差分値の大きさに応じて、総ビット数が変化する。差分値が７以下であれば、総ビット数が９６以下になるため、図４０よりもビット数を削減できる。
【０１０６】
図４３は図４２の変形例を示す図である。図４２は第１の代表色を中央値としたが、図４３は第１の代表色を最小値ＭＩＮとしている。図４２の場合、第１の代表色を中央とする両側に第２〜第４の代表色が来る可能性があるが、図４３の場合、第１の代表色のマイナス側に第２〜第４の代表色が来ることはない。このため、図４３（ｂ）に示すように、図４３の方がビット数を削減できる。
【０１０７】
このように、本実施形態では、画素ブロック内の画像が平坦かラフかによって、符号化データの生成方法を変えている。画素ブロック内の画像が平坦かラフかは、画素ブロック内の活動量によって判断する。
【０１０８】
図４４は画素ブロック内の活動量を判定する手法を説明する図である。図４４の各升目（画素）内の数字は画素値（輝度値および色差値）を示している。ＬＣＰ符号化回路１３は、水平方向の画素値の変化量と垂直方向の画素値の変化量をそれぞれ検出して、両方の変化量を足し合わせた値を活動量として扱う。
【０１０９】
図４４の例では、水平方向の画素値の変化量は０であり、垂直方向の画素値の変化量は、１〜２行目が４×（１２０−１１５）で、２〜３行目が４×（１４０−１２０）で、３〜４行目が４×（１４５−１４０）であり、総計では１２０となる。したがって、活動量は、０＋１２０＝１２０である。
【０１１０】
ＬＣＰ符号化回路１３は、活動量が所定の閾値を超えた場合にはラフな画像と判定し、閾値以下の場合には平坦な画像と判定する。
【０１１１】
より詳細には、輝度値Ｙと色差値Ｃｂ，Ｃｒのそれぞれ（ＹＣＣ）について活動量を計算し、すべての活動量が個々の閾値以下の場合に平坦な画像と判定し、ＹＣＣのうち少なくとも一つの活動量が閾値を超えていれば、ラフな画像と判定する。このように判定する理由は、平坦な画像の場合は、図４２のように代表値の差分値を検出するが、差分値のビット数が所定の制限値内に収まることを保証するためである。
【０１１２】
図４２と図４３では省略しているが、符号化データの例えば先頭部分には、画像が平坦かラフかを示すフラグ情報が付加される。後述するＬＣＰ復号化回路１５は、まずこのフラグ情報を検出して、復号のやり方を変える。
【０１１３】
図４５は活動量の閾値を変化させた場合に画像が変化する例を説明する図であり、左側は活動量の閾値を境にした判定結果をもとに二値化した画像、右側はその二値化画像（判定結果）に基づいて生成される圧縮画像である。図４５（ａ）〜図４５（ｄ）は閾値がそれぞれ異なっており、上の画像ほど閾値を大きく設定している。
【０１１４】
図４５（ａ）〜図４５（ｄ）では、画像の平坦な４×４画素ブロックを白で表示し、ラフな画素ブロックを黒で表示している。白の領域は８ビット精度が保証される。例えば、青空は８ビット精度が保証される。一方、地面は６ビット精度が保証される。
【０１１５】
図４６（ａ）は本実施形態のアルゴリズムにより圧縮された圧縮画像の一例を示す図である。図４６（ｂ）は画像中の一部を拡大した元図、図４６（ｃ）は圧縮画像の一部を拡大した図である。図４６（ｂ）と図４６（ｃ）の右側には、色の分布図が示されている。
【０１１６】
図４６（ｃ）に示すように、圧縮画像では、１６色を４色に置き換えている。しかしながら、図４６（ｂ）〜図４６（ｃ）を見ればわかるように、圧縮画像は元の画像と全体的に近似しており、画質の劣化はそれほど大きくないことがわかる。
【０１１７】
なお、４色の代表色を選択する際、色の選択が悪いと、ブロックアーティファクトが発生し、エラーが視認されやすくなる。特に、２つの代表色を補間して２色を導出する場合、最適な色を導出できないおそれもある。これに対して、本実施形態の場合、独立に４つの代表色を選択するため、ブロックアーティファクトの発生を抑制できる。
【０１１８】
図４７は従来の圧縮画像と本実施形態による圧縮画像とを比較した特性を示す図であり、画像１枚でのＰＳＮＲ（Peak Signal to Noise Ratio）の比較結果を示している。図４７（ａ）は従来の圧縮画像の特性図、図４７（ｂ）は本実施形態による圧縮画像の特性図であり、いずれも横軸はＰＳＮＲ［ｄＢ］、縦軸は発生頻度である。
【０１１９】
これらの図の例によると、ＰＳＮＲが６．７ｄＢから８．５ｄＢに改善して、ノイズ（画像劣化量）が少なくなったことがわかる。
【０１２０】
図４８はＰＳＮＲの累積ヒストグラムを示す図であり、図４８（ａ）は従来のＭｏＭＡ−ＢＴＣの累積ヒストグラム、図４８（ｂ）は本実施形態による累積ヒストグラムである。
【０１２１】
図４８に示すように、本実施形態によると、累積ヒストグラムのピークが従来よりも急峻であり、耐ノイズ性能が優れていることがわかる。すなわち、ＰＳＮＲ値が低い（劣化した）画素の数が減少し、ＰＳＮＲ値の高い（劣化していない）画素の数が増加している。図４８では、３３ｄＢ以下の分布は減少しており、同時に４１ｄＢ付近の分布が急激に増加している。
【０１２２】
図４９は９種類の画像について本実施形態と従来のテクスチャ圧縮技術とでＰＳＮＲを比較した図である。図４９に示した３種類の従来のテクスチャ圧縮技術はいずれも、プロセッサまたは画像処理プロセッサを用いてソフトウェアで圧縮処理を行うものであり、処理に時間がかかり、また高性能プロセッサを用いることから、コストも高くなる。本実施形態は、簡易なハードウェアにより画像圧縮を行えるにもかかわらず、従来のテクスチャ圧縮技術と同様の性能が得られる。
【０１２３】
上記の説明では、符号化データを構成するビット列の遷移については特に考慮しなかった。ところが、ビットの遷移回数が増えると、消費電力が増大することが知られている。このため、発生頻度の高い符号ほどビットの遷移回数を少なくする遷移最小化符号を生成することも考えられる。
【０１２４】
図５０は上述したアルゴリズムに遷移最小化符号を適用した例を説明する図である。ビットマップは、各画素が４つの代表色のいずれであるかを示す情報を格納する。画像の統計的性質から、隣り合う画素は同じ色を取る確率が高い。したがって、ビットマップの隣接値は同じ値を取る可能性が高い。
【０１２５】
このような統計的性質を利用して、ビットマップ中の近接する複数の領域を一つの単位として、遷移最小符号化を行ってもよい。このとき、統計的な偏りを利用して、符号化データ中の０の発生確率を高くする。
【０１２６】
符号化データはメモリ１４に格納されるが、メモリ１４に連続してデータを格納する際には、データのビットが同じ方が違う場合よりも消費電流が少ない。ビットが異なる場合には、メモリセル内に蓄積電荷を与えるために電流を流してメモリセルの状態を反転させなければならず、電流が必要となる。同じ値であれば、このような電荷の変化を必要とせず、電流を流す必要がなくなる。
【０１２７】
なお、本実施形態によれば、圧縮によりメモリセル数自体を１／４に削減でき、さらに消費電流を削減できる。
【０１２８】
図５０は、隣接する２×２画素に対応するビットマップデータを単位として、遷移最小符号化を行う例を示している。図５０の「００」「０１」「１０」「１１」なる値はビットマップ値であり、４つの代表色を選択するためのデータである。
【０１２９】
図５１は遷移最小符号化の一例を示す図である。図５１の「組み合わせ」の欄に記載された４つの数字のそれぞれは、図５０の２×２画素に対応するビットマップデータを指している。より具体的には、「００」を０、「０１」を１、「１０」を２、「１１」を３と表記する。したがって、例えば図５０の左上の２ｘ２画素に関しては、図５１では（左上から右下へスキャンして）「００」、「０１」、「００」、「０１」なるビットマップデータを０１０１と表す。
【０１３０】
先頭行の「００００」は、ビットマップ値がすべて０であるので、０で指定される代表色だけが選択されることを示している。次の行の「１１１１」は、ビットマップ値がすべて１であるので、１で指定される代表色だけが選択されることを示している。
【０１３１】
図５１では、発生頻度の高い組み合わせほど、上に配置している。そして、発生頻度の高い組み合わせには、ビットの遷移数が少ない符号（すなはち、０の個数がビット列中に多い符号）を割り当てている。例えば、組合せ００００は遷移最小化符号００００００００へと対応づけている。組合せ１１１１は遷移最小化符号０００００００１へと対応づけている。このようにすることで、メモリ１４に保存するデータビット値０の発生する確率を高めており、結果的に０から１および１から０へとデータが遷移する確率を減らしている。
【０１３２】
なお、ここでの「遷移」とは、メモリ１４中での同じアドレス中にあった以前の値から、現在書き込もうとしている値への遷移を意味する。従来の遷移最小化符号は、画像データの差分値を遷移最小化符号の対象としていたが、本実施形態ではビットマップデータを遷移最小化符号の対象としており、このような例は従来存在しない。
【０１３３】
図５０および図５１では、隣接する２×２画素を単位として遷移最小符号化を行ったが、隣接する２画素を単位としてもよい。図５２は画素ブロック内の水平方向に隣接する２画素を単位とする例を示す図、図５３は図５２に対応する遷移最小化符号の一例を示す図である。
【０１３４】
上記では、ビットマップデータの遷移最小符号化について説明したが、図４３で説明した代表色の差分値を求める際にも遷移最小符号化を適用してもよい。図５４は代表色の差分値の遷移最小化符号の一例を示す図である。差分値が小さいほど、発生頻度が高いことから、差分値はゼロを中心として分布する。このため、図５４では、差分値がゼロに近いほど遷移数の少ない符号を割り当てている。これは図４２の第一の代表色が中央の場合に対応している。
【０１３５】
なお、ここでの「差分値」とは、代表色と代表色の間での差分であり、ローカルカラーパレットの技術に関する値である。隣接する画素値の差分値のような従来の技術ではないことに注意して欲しい。
【０１３６】
図５４では、差分値としてマイナスの値も考慮する場合の遷移最小符号化の例を示したが、差分値がプラスの値しか取らない場合は、図５５のような遷移最小符号化が行われる。これは図４３の第一の代表色が最小値の場合に対応している。
【０１３７】
図１では、ＬＣＤソースドライバ２の内部にＬＣＰ符号化回路１３を設ける例を説明したが、コントローラまたはアプリケーションプロセッサ（以下、総称してコントローラと呼ぶ）の内部にＬＣＰ符号化回路１３を設けてもよい。
【０１３８】
図５６は図１の変形例であり、コントローラ２０の内部にＬＣＰ符号化回路１３を設けた例を示すブロック図である。図５６のコントローラ２０は、ＲＧＢ／ＹＣＣ変換回路１２と、ＬＣＰ符号化回路１３と、圧縮データ送信回路２１とを有する。ＬＣＤソースドライバ２は、圧縮データ受信回路２２と、メモリ１４と、ＬＣＰ復号化回路１５と、ＹＣＣ／ＲＧＢ変換回路１６と、ＬＣＤ駆動回路１７とを有する。
【０１３９】
図５７は上述したＬＣＰ符号化回路１３の内部構成の一例を示すブロック図である。図５７のＬＣＰ符号化回路１３は、４Ｈラインメモリ２３と、１６画素保存レジスタ２４と、変化量計算部２５と、階層計算器２６と、圧縮データ保存レジスタ２７とを有する。
【０１４０】
図５８はＬＣＰ符号化回路１３の変形例を示すブロック図であり、遷移最小符号化を行う例を示している。図５８のＬＣＰ符号化回路１３は、図５７の構成に加えて、遷移最小符号化Ａ回路２８と、遷移最小符号化Ｂ回路２９とを有する。
【０１４１】
図５９は図５７および図５８の階層計算器２６の内部構成の一例を示すブロック図である。図５９の階層計算器２６は、前計算部３１と、第１層計算部３２と、第２層計算部３３と、第３層計算部３４と、第４層計算部３５と、第５層計算部３６と、後計算部３７とを有する。第１層計算部３２は１６個の演算部を有し、第２層計算部３３は８個の演算部３８を有し、第３層計算部３４は４個の演算部３８を有し、第４層計算部３５は２個の演算部３８を有し、第５層計算部３６は１個の演算部３８を有する。
【０１４２】
第１〜第５層計算部３６のそれぞれに含まれる演算部３８は、単独のハードウェアユニットで構成してもよいし、一つのハードウェアユニットを複数の計算部で共用してもよい。
【０１４３】
階層計算器２６を構成する第１〜第５層計算部３２〜３６は、上述した各種のフローチャートに沿った処理を行う。例えば、最大値ＭＡＸおよび最小値ＭＩＮを求める処理を行う演算部３８は、図６０のような内部構成を有する。
【０１４４】
図６０の演算部３８は、入力信号Ａ，Ｂを比較する比較回路４１と、比較回路４１の比較結果によって、入出力間の経路を切り替えるスイッチ回路（ＳＷ回路）４２とを有する。
【０１４５】
図６１は図６０のスイッチ回路４２の動作を説明する図である。例えば、Ａ＜Ｂの場合には、最大値ＭＡＸを出力する出力信号ＤとしてＢを選択し、最小値ＭＩＮを出力する出力信号ＥとしてＡを選択する。一方、Ａ＞Ｂの場合には、出力信号ＤとしてＡを選択し、出力信号ＥとしてＢを選択する。
【０１４６】
図６２〜図６４は階層的に総計値ＳＵＭと計数値ＣＮＴを計算する演算部３８の一例を示す図である。図６２は１段目の演算部３８の内部構成の一例を示すブロック図である。図６２の演算部３８は、比較回路４３と、演算回路４４とを有する。演算部３８は、入力信号Ａ，Ｂが最大値ＭＡＸと最小値ＭＩＮのいずれでもない場合に、ＳＵＭにその値を加え、かつＣＮＴのカウントアップを行う。
【０１４７】
図６３は図６２の演算部３８の動作を説明する図である。入力信号Ａ，Ｂがともに、最大値ＭＡＸまたは最小値ＭＩＮと同じ値であれば、ＳＵＭ＝０、ＣＮＴ＝０とする。入力信号Ａのみが最大値ＭＡＸまたは最小値ＭＩＮと同じ値であれば、ＳＵＭ＝Ｂとし、ＣＮＴ＝１とする。入力信号Ｂのみが最大値ＭＡＸまたは最小値ＭＩＮと同じ値であれば、ＳＵＭ＝Ａとし、ＣＮＴ＝１とする。入力信号Ａ，Ｂのどちらも最大値ＭＡＸでも最小値ＭＩＮでもない場合は、ＳＵＭ＝Ａ＋Ｂとし、ＣＮＴ＝２とする。
【０１４８】
図６４（ａ）は２段目以降の演算部３８の内部構成の一例を示すブロック図、図６４（ｂ）は図６４（ａ）の演算部３８の動作を説明する図である。図６４（ａ）の演算部３８は、２つの入力信号（前の層のＳＵＭ）同士を足し合わせるとともに、前の段のＣＮＴ同士を足し合わせる演算を行う。図６４（ａ）の演算回路４５は、演算回路４５と、結果計算器４６とを有する。この演算回路４５は、２つのＳＵＭに対応する信号Ｓ１，Ｓ２同士を足し合わせた結果をＳＵＭに入れて出力し、２つのＣＮＴに対応する信号Ｃ１，Ｃ２同士を足し合わせた結果をＣＮＴに入れて出力する。最終的に計算されたＳＵＭとＣＮＴは、結果計算器４６に入力されてＳＵＭ／ＣＮＴが計算される。
【０１４９】
以上に説明した図６０〜図６４の回路により、最大値ＭＡＸと最小値ＭＩＮを除いた画素値の平均値を求めることができる。これらの回路は、図５の平均値ＭＩＤなどを求める際に利用できる。
【０１５０】
図６５〜図６８は図１３〜図１４の処理に用いられる演算部３８の一例を示す図である。図６５は１段目の演算部３８の内部構成の一例を示すブロック図、図６６は図６５の演算部３８の動作を説明する図である。
【０１５１】
図６５の演算部３８は、比較回路４７と、演算回路４８とを有する。比較回路４７は、入力信号Ａが最小値ＭＩＮ＋微小値ＤＥＬＴＡ１より小さいか否かと、中間値ＭＩＤより小さいか否かと、中間値ＭＩＤより大きいか否かと、最大値ＭＡＸ−微小値ＤＥＬＴＡ２より大きいか否かとを、検出する。
【０１５２】
入力信号Ａが最小値ＭＩＮ＋微小値ＤＥＬＴＡ１より小さい場合には、すべての出力信号がゼロになる。入力信号Ａが中間値ＭＩＤより小さい場合には、ＳＵＭＬ＝Ａ、ＣＮＴＬ＝１で、他はゼロになる。入力信号Ａが中間値ＭＩＤより大きい場合には、ＳＵＭＵ＝Ａ、ＣＮＴＵ＝１で、他はゼロになる。入力信号Ａが最大値ＭＡＸ−微小値ＤＥＬＴＡ２より大きい場合には、すべての出力信号がゼロになる。
【０１５３】
図６７は２段目以降の演算部３８の内部構成の一例を示すブロック図、図６８は図６７の演算部３８の動作を説明する図である。図６７の演算部３８は、２つの演算回路４９，５０と、結果計算器５１とを有する。演算回路４９は、ＳＵＭＬ＝ＳＬ１＋ＳＬ２と、ＣＮＴＬ＝ＣＬ１＋ＣＬ２の計算を行う。演算回路５０は、ＳＵＭＵ＝ＳＵ１＋ＳＵ２、ＣＮＴＵ＝ＣＵ１＋ＣＵ２の計算を行う。
【０１５４】
演算部３８は階層的にＳＵＭＬ、ＳＵＭＵ、ＣＮＴＬ、ＣＮＴＵを計算し、最終的に得られた値は結果計算器５１に入力されて、ＭＩＤＬ＝ＳＵＭＬ／ＣＮＴＬと、ＭＩＤＵ＝ＣＵＭＵ／ＣＮＴＵの計算が行われる。
【０１５５】
図６９〜図７２は図１５および図１６の処理に用いられる演算部３８の一例を示す図である。図６９は１段目の演算部３８の内部構成の一例を示すブロック図、図７０は図６９の演算部３８の動作を説明する図である。
【０１５６】
図６９の演算部３８は、比較回路６０と、演算回路６１とを有する。図６９の演算部３８は、入力信号Ａを閾値ｔｈＹ０〜ｔｈＹ５と比較する処理を行う。図７０に示すように、入力信号Ａが閾値ｔｈＹ０〜ｔｈＹ１の間であれば、分割領域１に属すると判断して、ＳＵＭ［１］にＡを入れて、ＣＮＴ［１］をカウントアップする。入力信号Ａが閾値ｔｈＹ１〜ｔｈＹ２の間であれば、分割領域２に属すると判断して、ＳＵＭ［２］にＡを入れて、ＣＮＴ［２］をカウントアップする。入力信号Ａが閾値ｔｈＹ２〜ｔｈＹ３の間であれば、分割領域３に属すると判断して、ＳＵＭ［３］にＡを入れて、ＣＮＴ［３］をカウントアップする。入力信号Ａが閾値ｔｈＹ３〜ｔｈＹ４の間であれば、分割領域４に属すると判断して、ＳＵＭ［４］にＡを入れて、ＣＮＴ［４］をカウントアップする。入力信号Ａが閾値ｔｈＹ４〜ｔｈＹ５の間であれば、分割領域５に属すると判断して、ＳＵＭ［５］にＡを入れて、ＣＮＴ［５］をカウントアップする。
【０１５７】
図７１は図６９の演算部３８の演算結果を足し合わせる処理を行う２段目以降の演算部３８の内部構成の一例を示すブロック図、図７２は図７１の演算部３８の動作を説明する図である。図７１の演算部３８は、演算回路６２と結果計算器６３とを有する。この演算回路６２は、ＳＵＭ＝Ｓ１＋Ｓ２と、ＣＮＴ＝Ｃ１＋Ｃ２の演算を行う。
【０１５８】
階層的にＳＵＭとＣＮＴを計算していき、最終的なＳＵＭとＣＮＴが計算されると、結果計算器６３により、ＭＩＤ＝ＳＵＭ／ＣＮＴを計算する。
【０１５９】
図７３〜図７５は図１９および図２０の処理に用いられる演算部３８の一例を示す図である。図７３は１段目の演算部３８の内部構成の一例を示すブロック図、図７４は図７３の演算部３８の動作を説明する図である。
【０１６０】
図７３の演算部３８は、比較回路６４と、演算回路６５とを有する。図７３の演算部３８は、入力信号Ａが１０個の領域のうちのどこに属するかを検出し、その領域のＳＵＭ［ｉ］に入力信号Ａを入れるとともに、ＣＮＴ［ｉ］をカウントアップする。
【０１６１】
図７５は２段目以降の演算部３８の内部構成の一例を示すブロック図、図７６は図７５の演算部３８の動作を説明する図である。図７５の演算部３８は演算回路６６と、結果計算器６７とを有する。この演算回路６６は、ＳＵＭ＝Ｓ１＋Ｓ２と、ＣＮＴ＝Ｃ１＋Ｃ２の演算を行う。
【０１６２】
複数の演算部３８が２つずつの加算処理を階層的に行い、最終的に、１０個のサブ領域ごとに、すべての加算結果がＳＵＭに、すべての総数がＣＮＴに入る。結果計算器６７は、１０個のサブ領域ごとに、ＭＩＤ＝ＳＵＭ／ＣＮＴを計算する。これにより、各サブ領域内の平均画素値と画素数を求めることができる。
【０１６３】
図７７〜図７９は図２１のステップＳ１１１の処理に用いられる演算部３８の一例を示す図であり、この処理を行うことで、第１の代表色を求めることができる。
【０１６４】
図７７は１０個のサブ領域のそれぞれを発生頻度順に並び換える処理を行う演算部３８の内部構成の一例を示すブロック図である。図７７の演算部３８は、９段階の階層構造になっており、各段階は複数の交換回路７１を有する。各交換回路７１には、２つのサブ領域のＩＤと、これらサブ領域内の画素数（頻度を表す変数freqで示す）とが入力される。そして、各交換回路７１は、２つのサブ領域のうち発生頻度の高いサブ領域とその画素数を右側から出力する。画素数の発生頻度順で並べても、それがどの代表色（領域ＩＤで指定される）であるかが分からなければ意味がない。この意味で、領域ＩＤも発生頻度順に並べる必要がある。
【０１６５】
以上の処理動作を各交換回路７１が階層的に行うことにより、最終段の複数の交換回路７１の出力は、発生頻度順に並ぶことになる。
【０１６６】
図７８は第１の代表色を選択する処理を行う交換回路７１の内部構成の一例を示すブロック図、図７９は図７８の交換回路７１の動作を説明する図である。図７８の交換回路７１は、比較回路７１ａとスイッチ回路７１ｂを有し、最終的に選択された２つのサブ領域のＩＤと画素数とを比較して、どちらか大きいを最終的に選択する。
【０１６７】
ＩＡ，ＩＢは各サブ領域のＩＤを示し、ＦＡ，ＦＢは各サブ領域の画素数を示す。ＦＡ＜ＦＢであれば、ＬＩにはＩＡが、ＬＦにはＦＡが、ＵＩにはＩＢが、ＵＦにはＦＢがそれぞれ入れられる。ＦＡ＞ＦＢであれば、ＬＩにはＩＢが、ＬＦにはＦＢが、ＵＩにはＩＡが、ＵＦにはＦＡがそれぞれ入れられる。
【０１６８】
図８０は遠距離法により第２〜第４の代表色を用いる処理を行う演算部３８の内部構成の一例を示すブロック図であり、図３９の処理を行うものである。図８０の演算部３８は、９段階の階層構造になっており、各段階は複数の交換回路７２を有する。各交換回路７２には、２つのサブ領域のＩＤと、各サブ領域の距離情報とが入力される。ここで、距離情報とは、第１の代表色と比較する場合には、第１の代表色との距離である。各交換回路７２は、距離が大きいサブ領域のＩＤと距離を右側に出力する。
【０１６９】
以上の処理動作を各交換回路７２が階層的に行うことにより、最終段の複数の交換回路７２の出力は、距離順に並ぶことになる。
【０１７０】
図８１〜図８４はビットマップデータを生成する処理に用いられる演算部３８の一例を示す図である。図８１は対象画素の色を第１〜第４の代表色に変換する処理を行う演算部３８の内部構成の一例を示すブロック図である。
【０１７１】
図８１の演算部３８は、４つの差分回路７３と、３つのマップ選択回路７４とを有する。差分回路７３のそれぞれは、第１〜第４の代表色のいずれかと対象画素の画素値ＶＡＬとの差分を検出する。なお、ここでの差分とは色と色との間の距離のことであり、一般に選択肢があるが、例えば、マンハッタン距離としても問題ない。マップ選択回路７４は、２つの差分のうち小さい方を選択する。マップ選択回路７４は、階層的に接続されており、最終的に最も小さい差分の代表色に関するマップ値が選択される。
【０１７２】
図８２はマップ選択回路７４の内部構成の一例を示すブロック図、図８３は図８２のマップ選択回路７４の動作を説明する図である。図８２のマップ選択回路７４は、比較回路７５と、２つのスイッチ回路７６，７７とを有する。比較回路７５は、入力信号Ｄ１，Ｄ２を比較する。Ｄは差分を意味する変数で、Ｄ１とＤ２は代表色１と代表色２に関する差分値である。比較回路により、Ｄ１＜Ｄ２と判定されると、スイッチ回路７６の出力ＢＭにはＢＭ１が、スイッチ回路７７の出力ＤにはＤ１が出力され、Ｄ１＞Ｄ２と判定されると、ＢＭにはＢＭ２が、ＤにはＤ２が出力される。ＢＭは代表色を示すビットマップのための変数である。
【０１７３】
図８４は第１〜第４の代表色とビットマップデータとの関係を示す図である。第１の代表色が選択された場合は００に、第２の代表色が選択された場合は０１に、第３の代表色が選択された場合は１０に、第４の代表色が選択された場合は１１になる。
【０１７４】
上述した図６０〜図８４に説明した処理は、図５８の階層計算器２６により実行される。このように、階層計算器２６は、時間によって異なる処理を行う。このため、階層計算器２６の処理動作を予めスケジューリングしておく必要がある。
【０１７５】
図８５は階層計算器２６の処理動作のスケジュールの一例を示す図である。図８５では、階層計算器２６の処理動作を１０個のサイクルに分けている。サイクル１で最大値ＭＡＸと最小値ＭＩＮを検出する。サイクル２〜３で画素ブロック内のＳＵＭとＣＮＴを計算する。サイクル４で分割領域１〜５のそれぞれにおけるＳＵＭとＣＮＴを計算する。サイクル５でサブ領域１〜５、１Ｃ〜５ＣのそれぞれにおけるＳＵＭとＣＮＴを計算する。サイクル６〜９でそれぞれ第１〜第４の代表色を順に計算し、サイクル１０でビットマップデータを決定する。
【０１７６】
図８６は階層計算器２６の処理動作のスケジュールの他の一例を示す図であり、図８５よりもより詳しくスケジューリングしたものである。分割領域１〜５の処理とサブ領域１〜５、１Ｃ〜５Ｃの処理を詳しく規定している。
【０１７７】
階層計算器２６の内部に複数の繰り返し計算器を設けて、各演算部３８が並列して処理を行うようにしてもよい。図８７は階層計算器２６の内部に４つの繰り返し計算器９１を設けた例を示すブロック図である。図８８は図８７の繰り返し計算器９１を用いて処理を行う場合の階層計算器２６のスケジュールの一例を示す図である。
【０１７８】
図８８の処理Ａは繰り返し計算器９１が行い、処理Ｂは繰り返し計算器９１が行い、処理Ｃは繰り返し計算器９１が行い、処理Ｄは繰り返し計算器９１が行う。処理Ａ〜Ｄはいずれも並列処理が可能なものである。
【０１７９】
このように、４つの繰り返し計算器９１が並行して処理を行うことで、高速処理が可能となる。
【０１８０】
図８９は図１のＬＣＰ復号化回路１５の内部構成の一例を示すブロック図である。図８９のＬＣＰ復号化回路１５は、圧縮データ保存レジスタ１０１と、フラグ抽出部１０２と、代表色抽出部１０３と、ビットマップ抽出部１０４と、１６画素復元計算部１０５と、１６画素保存レジスタ１０６と、４Ｈラインレジスタ１０７とを有する。
【０１８１】
フラグ抽出部１０２は、符号化データの先頭部分に付加されたフラグを抽出して、画像がラフか平坦かを把握する。その結果に応じて、代表色抽出部１０３は、第１〜第４の代表色の符号化データを抽出する。ビットマップ抽出部１０４は、第１〜第４の代表色の符号化データの後に配置されたビットマップデータを抽出する。
【０１８２】
１６画素復元計算部１０５は、第１〜第４の代表色のいずれかが割り当てられた１６画素の各色を復元する。１６画素保存レジスタ１０６は、１６画素の各色のデータを一時的に１６画素保存レジスタ１０６に格納する。このデータは４Ｈラインメモリ２３に格納される。
【０１８３】
図９０は図８９の変形例を示すブロック図である。図８９では、ＹＣＣ／ＲＧＢ変換回路１６がＬＣＰ復号化回路１５の外側に設けられていたが、図９０では、ＬＣＰ復号化回路１５の内部にＹＣＣ／ＲＧＢ変換回路１６を設ける代わりに、４Ｈラインメモリ２３をＬＣＰ復号化回路１５の外側に設けている。これにより、ＬＣＰ復号化回路１５の回路規模を縮小できる。
【０１８４】
図９１は符号化データが遷移最小符号化を行っている場合に対応するＬＣＰ復号化回路１５の内部構成の一例を示すブロック図である。図９１のＬＣＰ復号化回路１５は、図９０の構成に加えて、遷移最小復号Ａ回路１０９と、遷移最小復号Ｂ回路１１０とを有する。遷移最小復号Ａ回路１０９は、遷移最小符号化により符号化された第１〜第４の代表色の符号化データを復号する。遷移最小復号Ｂ回路１１０は、遷移最小符号化により符号化されたビットマップデータを復号する。
【０１８５】
図９２はＬＣＰ復号化回路１５を実現するためのハードウェア構成の一例を示すブロック図である。図示のように、ＬＣＰ復号化回路１５は、各画素に対応した１６個の選択回路１１１を有する。各選択回路１１１は、ビットマップ値に対応する代表色を選択する。これにより、画素ブロック内の１６画素が第１〜第４の代表色にて表される。
【０１８６】
図９３は画像が平坦な場合の代表色の復元処理を説明する図である。画像が平坦な場合は、第２〜第４の代表色については差分データで表されている。このため、復元処理では、差分データを利用して、２４ビットからなる第１〜第４の代表色を復元する。
【０１８７】
図９４は画像がラフな場合の代表色の復元処理を説明する図である。画像がラフな場合は、第１〜第４の代表色がいずれも１６ビットで表されている。このため、復元処理では、これら１６ビットデータを利用して、２４ビットからなる第１〜第４の代表色を復元する。
【０１８８】
図９５は図９２の選択回路１１１の内部構成の一例を示すブロック図である。図９５の選択回路１１１は、差分復元回路１１２と、ビット補充回路１１３と、スイッチ回路１１４とを有する。差分復元回路１１２は、画像が平坦かラフかを示すモード信号ＭＯＤＥに応じて、第１〜第４の代表色を復元する。なお、画像がラフな場合は、差分ではなく、元の代表色データであるため、差分復元回路１１２では何も処理は行わない。
【０１８９】
ビット補充回路１１３は、１６ビットを２４ビット拡張する処理を行う。スイッチ回路１１４は、ビットマップ値ＢＭに応じて、対応する代表色データを出力する。
【０１９０】
図９６はビットマップ値ＢＭと代表色との対応関係の一例を示す図である。ビットマップ値ＢＭが００、０１、１０、１１のときは、それぞれ第１〜第４の代表色を選択する。
【０１９１】
本実施形態の処理動作をまとめると、以下のようになる。画素ブロックごとに、画素値に応じた５個の分割領域を生成し、各分割領域をさらに二分割して計１０個のサブ領域を生成する。そして、１６画素のそれぞれを１０個のサブ領域に割り振って、サブ領域ごとに画素値の総和と画素数を計算して、各サブ領域の平均画素値を計算する。そして、各サブ領域の平均画素値の中から４つの代表色を選択し、１６画素のそれぞれの色を４つの代表色のいずれかに置換したビットマップデータを生成する。そして、４つの代表色を表す符号化データとビットマップデータとを組み合わせた符号化データを生成する。
【０１９２】
本実施形態では、１６画素を４つの代表色に置換するため、符号化データのビット長を削減でき、符号化データを格納するメモリ１４の容量も削減でき、コスト削減が図れる。また、色数を４つの代表色に限定しても、画質の劣化がほとんど起きない。したがって、本実施形態は、携帯電話等のハードウェアの性能や規模が限られている場合に最適である。
【０１９３】
また、本実施形態では、１０個のサブ領域を生成する際に、輝度および色差の変化が大きい方向に沿って分割領域を二分割してサブ領域を生成するため、輝度および色差の変化に合致したサブ領域を生成できる。
【０１９４】
また、本実施形態では、５個の分割領域を生成するために閾値ｔｈＹ０〜ｔｈＹ５を計算する際、最大値ＭＡＸと最小値ＭＩＮを除外して計算するため、最大値ＭＡＸと最小値ＭＩＮの影響を受けずに閾値を計算でき、実際の画像の特性に合致した閾値を計算できる。
【０１９５】
また、画素ブロック内の画像が平坦かラフかを検出して、平坦な場合には差分データを用いて符号化データを生成するため、符号化データのビット長をより削減できる。また、画像が平坦な場合でも、８ビット精度で符号化が行えるため、画質の劣化は起きない。
【０１９６】
また、本実施形態の処理は、ハードウェアで容易に実現できるため、処理速度の向上が図れる。なお、本実施形態の少なくとも一部の処理をソフトウェアで実施してもよい。
【０１９７】
上述した実施形態では、４×４画素の画素ブロックを例に取って説明したが、画素ブロックを構成する縦横画素数には特に制限はない。また、分割領域の数も５個に限らない。同様に、サブ領域の数も１０個に限らない。
【図面の簡単な説明】
【０１９８】
【図１】本発明の一実施形態による画像処理装置を含む液晶表示装置の概略構成を示すブロック図。
【図２】ＬＣＰ符号化回路１３の概略的な処理手順を示すフローチャート。
【図３】図２のステップＳ３の詳細な処理手順を示すフローチャート。
【図４】図３のステップＳ１１の詳細な処理手順を示すフローチャート。
【図５】図３のステップＳ１２の詳細な処理手順を示すフローチャート。
【図６】図４のステップＳ２２の詳細な処理手順を示すフローチャート。
【図７】図４のステップＳ２２の処理を説明する図。
【図８】分割領域１〜５を模式的に示す図。
【図９】分割領域５についてＣｒ方向とＣｂ方向にそれぞれ二分割した例を示す図。
【図１０】分割領域をＣｂ方向に分割した例と、Ｃｒ方向に分割した例を模式的に示す図。
【図１１】分割領域１〜５のそれぞれを２分割した例を示す図。
【図１２】１０個のサブ領域の画素値の平均値を星印で示す図。
【図１３】図６のステップＳ４１の詳細な処理手順を示すフローチャート。
【図１４】図１３に続くフローチャート。
【図１５】図６のステップＳ４３の詳細な処理手順を示すフローチャート。
【図１６】図１５に続くフローチャート。
【図１７】図４のステップＳ２３の詳細な処理手順を示すフローチャート。
【図１８】図１７に続くフローチャート。
【図１９】図４のステップＳ２４の詳細な処理手順を示すフローチャート。
【図２０】図１９に続くフローチャート。
【図２１】図５のステップＳ３３の詳細な処理手順を示すフローチャート。
【図２２】図２１のステップＳ１１４の詳細な処理手順を示すフローチャート。
【図２３】図２２の処理の詳細手順を示すフローチャート。
【図２４】図２３に続くフローチャート。
【図２５】図１のＬＣＰ復号化回路１５の処理手順を示すフローチャート。
【図２６】図２５のステップＳ１５３の詳細な処理手順を示すフローチャート。
【図２７】４×４画素からなる画素ブロックの輝度値Ｙおよび色差値Ｃｂ，Ｃｒの具体例を示す図。
【図２８】図２７の画素ブロックの輝度値Ｙと色差値Ｃｂ，Ｃｒをまとめた図。
【図２９】図２７の輝度値を解析した結果を示す図。
【図３０】図２７の輝度値から算出される６つの閾値ｔｈＹ０〜ｔｈＹ５を示す図。
【図３１】図２７の画素ブロック内の輝度値Ｙおよび色差値Ｃｂ，Ｃｒを５つの分割領域に割り当てた例を示す図。
【図３２】サブ領域を生成する場合の閾値ｔｈ＿ｆｉｎｅ１〜５を示す図。
【図３３】分割領域１〜５における輝度値または色差値の最大値ＭＡＸと最小値ＭＩＮとの差分値ＲａｎｇｅＹ、ＲａｎｇｅＣｂ、ＲａｎｇｅＣｒと、これら３つの差分値の最大値ＭＡＸとを示す図。
【図３４】図２７の画素ブロックのビットマップデータを生成する手法を説明する図。
【図３５】図２７の画素ブロックに対応する色空間のデータ分布を示す図。
【図３６】図２７の画素ブロックを１０個のサブ領域に分割した図。
【図３７】図２７の画素ブロックに対応する１０個のサブ領域１〜５、１Ｃ〜５Ｃの代表値候補を示す図。
【図３８】図３７のＣＮＴの順に並び換えた図。
【図３９】遠距離法を利用して代表色候補の中から第２〜第４の代表色を選択する手法を説明する図。
【図４０】第１〜第４の代表色とビットマップデータとを用いて符号化データを生成する手法を説明する図。
【図４１】図２７の画素ブロックに対応する符号化データを示す図。
【図４２】平坦な画像の符号化データのビット構成を示す図。
【図４３】図４２の変形例を示す図。
【図４４】画素ブロック内の活動量を判定する手法を説明する図。
【図４５】活動量の閾値を変化させた場合に画像が変化する例を説明する図。
【図４６】（ａ）は本実施形態のアルゴリズムにより圧縮された圧縮画像の一例を示す図、（ｂ）は画像中の一部を拡大した元図、（ｃ）は圧縮画像の一部を拡大した図。
【図４７】（ａ）は従来の圧縮画像の特性図、（ｂ）は本実施形態による圧縮画像の特性図。
【図４８】（ａ）は従来のＭｏＭＡ−ＢＴＣの累積ヒストグラム、（ｂ）は本実施形態による累積ヒストグラム。
【図４９】９種類の画像について本実施形態と従来のテクスチャ圧縮技術とでＰＳＮＲを比較した図。
【図５０】遷移最小化符号を適用した例を説明する図。
【図５１】遷移最小符号化の一例を示す図。
【図５２】画素ブロック内の水平方向に隣接する２画素を単位とする例を示す図。
【図５３】図５２に対応する遷移最小化符号の一例を示す図。
【図５４】代表色の差分値の遷移最小化符号の一例を示す図。
【図５５】差分値がプラスの値しか取らない場合の遷移最小符号化の一例を示す図。
【図５６】図１の変形例であり、コントローラ２０の内部にＬＣＰ符号化回路１３を設けた例を示すブロック図。
【図５７】ＬＣＰ符号化回路１３の内部構成の一例を示すブロック図。
【図５８】ＬＣＰ符号化回路１３の変形例を示すブロック図。
【図５９】図５７および図５８の階層計算器２６の内部構成の一例を示すブロック図。
【図６０】最大値ＭＡＸおよび最小値ＭＩＮを求める処理を行う演算部３８の内部構成を示すブロック図。
【図６１】図６０のスイッチ回路４２の動作を説明する図。
【図６２】１段目の演算部３８の内部構成の一例を示すブロック図。
【図６３】図６２の演算部３８の動作を説明する図。
【図６４】（ａ）は２段目以降の演算部３８の内部構成の一例を示すブロック図、（ｂ）は（ａ）の演算部３８の動作を説明する図。
【図６５】１段目の演算部３８の内部構成の一例を示すブロック図。
【図６６】図６５の演算部３８の動作を説明する図。
【図６７】２段目以降の演算部３８の内部構成の一例を示すブロック図。
【図６８】図６７の演算部３８の動作を説明する図。
【図６９】１段目の演算部３８の内部構成の一例を示すブロック図。
【図７０】図６９の演算部３８の動作を説明する図。
【図７１】図６９の演算部３８の演算結果を足し合わせる処理を行う２段目以降の演算部３８の内部構成の一例を示すブロック図。
【図７２】図７１の演算部３８の動作を説明する図。
【図７３】１段目の演算部３８の内部構成の一例を示すブロック図。
【図７４】図７３の演算部３８の動作を説明する図。
【図７５】２段目以降の演算部３８の内部構成の一例を示すブロック図。
【図７６】図７５の演算部３８の動作を説明する図。
【図７７】１０個のサブ領域のそれぞれを発生頻度順に並び換える処理を行う演算部３８の内部構成の一例を示すブロック図。
【図７８】第１の代表色を選択する処理を行う交換回路７１の内部構成の一例を示すブロック図。
【図７９】図７８の交換回路７１の動作を説明する図。
【図８０】遠距離法により第２〜第４の代表色を用いる処理を行う演算部３８の内部構成の一例を示すブロック図。
【図８１】対象画素の色を第１〜第４の代表色に変換する処理を行う演算部３８の内部構成の一例を示すブロック図。
【図８２】マップ選択回路７４の内部構成の一例を示すブロック図。
【図８３】図８２のマップ選択回路７４の動作を説明する図。
【図８４】第１〜第４の代表色とビットマップデータとの関係を示す図。
【図８５】階層計算器２６の処理動作のスケジュールの一例を示す図。
【図８６】階層計算器２６の処理動作のスケジュールの他の一例を示す図。
【図８７】階層計算器２６の内部に４つの繰り返し計算器９１を設けた例を示すブロック図。
【図８８】図８７の繰り返し計算器９１を用いて処理を行う場合の階層計算器２６のスケジュールの一例を示す図。
【図８９】図１のＬＣＰ復号化回路１５の内部構成の一例を示すブロック図。
【図９０】図８９の変形例を示すブロック図。
【図９１】符号化データが遷移最小符号化を行っている場合に対応するＬＣＰ復号化回路１５の内部構成の一例を示すブロック図。
【図９２】ＬＣＰ復号化回路１５を実現するためのハードウェア構成の一例を示すブロック図。
【図９３】画像が平坦な場合の代表色の復元処理を説明する図。
【図９４】画像がラフな場合の代表色の復元処理を説明する図。
【図９５】図９２の選択回路１１１の内部構成の一例を示すブロック図。
【図９６】ビットマップ値ＢＭと代表色との対応関係の一例を示す図。
【符号の説明】
【０１９９】
１  ＲＧＢデータ送信回路
２  ＬＣＤソースドライバ
３  ＬＣＤパネル
１１  ＲＧＢデータ受信回路
１２  ＲＧＢ／ＹＣＣ変換回路
１３  ＬＣＰ符号化回路
１４  メモリ
１５  ＬＣＰ復号化回路
１６  ＹＣＣ／ＲＧＢ変換回路
１７  ＬＣＤ駆動回路
２１  圧縮データ送信回路
２２  圧縮データ受信回路
２３  ４Ｈラインメモリ
２４  １６画素保存レジスタ
２５  変化量計算部
２６  階層計算器
２７  圧縮データ保存レジスタ
【図１】
2009130690.tif 000003
【図２】
2009130690.tif 000004
【図３】
2009130690.tif 000005
【図４】
2009130690.tif 000006
【図５】
2009130690.tif 000007
【図６】
2009130690.tif 000008
【図７】
2009130690.tif 000009
【図８】
2009130690.tif 000010
【図９】
2009130690.tif 000011
【図１０】
2009130690.tif 000012
【図１１】
2009130690.tif 000013
【図１２】
2009130690.tif 000014
【図１３】
2009130690.tif 000015
【図１４】
2009130690.tif 000016
【図１５】
2009130690.tif 000017
【図１６】
2009130690.tif 000018
【図１７】
2009130690.tif 000019
【図１８】
2009130690.tif 000020
【図１９】
2009130690.tif 000021
【図２０】
2009130690.tif 000022
【図２１】
2009130690.tif 000023
【図２２】
2009130690.tif 000024
【図２３】
2009130690.tif 000025
【図２４】
2009130690.tif 000026
【図２５】
2009130690.tif 000027
【図２６】
2009130690.tif 000028
【図２８】
2009130690.tif 000029
【図２９】
2009130690.tif 000030
【図３０】
2009130690.tif 000031
【図３２】
2009130690.tif 000032
【図３３】
2009130690.tif 000033
【図３７】
2009130690.tif 000034
【図３８】
2009130690.tif 000035
【図３９】
2009130690.tif 000036
【図４０】
2009130690.tif 000037
【図４２】
2009130690.tif 000038
【図４３】
2009130690.tif 000039
【図４４】
2009130690.tif 000040
【図４７】
2009130690.tif 000041
【図４８】
2009130690.tif 000042
【図４９】
2009130690.tif 000043
【図５０】
2009130690.tif 000044
【図５１】
2009130690.tif 000045
【図５２】
2009130690.tif 000046
【図５３】
2009130690.tif 000047
【図５４】
2009130690.tif 000048
【図５５】
2009130690.tif 000049
【図５６】
2009130690.tif 000050
【図５７】
2009130690.tif 000051
【図５８】
2009130690.tif 000052
【図５９】
2009130690.tif 000053
【図６０】
2009130690.tif 000054
【図６１】
2009130690.tif 000055
【図６２】
2009130690.tif 000056
【図６３】
2009130690.tif 000057
【図６４】
2009130690.tif 000058
【図６５】
2009130690.tif 000059
【図６６】
2009130690.tif 000060
【図６７】
2009130690.tif 000061
【図６８】
2009130690.tif 000062
【図６９】
2009130690.tif 000063
【図７０】
2009130690.tif 000064
【図７１】
2009130690.tif 000065
【図７２】
2009130690.tif 000066
【図７３】
2009130690.tif 000067
【図７４】
2009130690.tif 000068
【図７５】
2009130690.tif 000069
【図７６】
2009130690.tif 000070
【図７７】
2009130690.tif 000071
【図７８】
2009130690.tif 000072
【図７９】
2009130690.tif 000073
【図８０】
2009130690.tif 000074
【図８１】
2009130690.tif 000075
【図８２】
2009130690.tif 000076
【図８３】
2009130690.tif 000077
【図８４】
2009130690.tif 000078
【図８５】
2009130690.tif 000079
【図８６】
2009130690.tif 000080
【図８７】
2009130690.tif 000081
【図８８】
2009130690.tif 000082
【図８９】
2009130690.tif 000083
【図９０】
2009130690.tif 000084
【図９１】
2009130690.tif 000085
【図９２】
2009130690.tif 000086
【図９３】
2009130690.tif 000087
【図９４】
2009130690.tif 000088
【図９５】
2009130690.tif 000089
【図９６】
2009130690.tif 000090
【図２７】
2009130690.tif 000091
【図３１】
2009130690.tif 000092
【図３４】
2009130690.tif 000093
【図３５】
2009130690.tif 000094
【図３６】
2009130690.tif 000095
【図４１】
2009130690.tif 000096
【図４５】
2009130690.tif 000097
【図４６】
2009130690.tif 000098