説明

符号化装置および表示制御装置

【課題】画質の劣化をできるだけ抑えつつ、高効率に圧縮可能な符号化データを生成する。
【解決手段】64画素からなる1ブロックを第1の色軸方向に4つの領域に分割して、各画素を4つの領域に分類し、各領域を第2の色軸方向に分割して、1ブロックを8領域に分割し、64画素を8つの領域に分類して、各領域ごとに代表色を設定し、各領域ごとの代表色の代表値の差分を計算して、量子化モードを決定する。量子化モードと代表値に基づいて符号化データを生成する。これにより、元の画像の画質をそれほど劣化させることなく、高圧縮で符号化処理を行える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画素データを圧縮した符号化データを生成する符号化装置および表示制御装置に関する。
【背景技術】
【0002】
薄型表示パネルの価格が低下したこともあり、大量の画像データを画質を劣化させることなく効率よく圧縮する技術が種々提案されている。
【0003】
画像圧縮の一手法として、DCT(Discrete Cosine Transform:離散コサイン変換)やウェーブレット変換が知られている。これらの変換は、圧縮率は非常に高いものの、ハードウェア規模が大きくなるという問題がある。ハードウェア規模を縮小するために、処理ブロックを小さくして圧縮率も下げることが考えられるが、予測符号器の量子化ステップ調整が画面の左右で均等にならず、画面の左側でエッジのエラーが目立つという問題もある。
【0004】
また、別の手法として、DPCM(Differential Pulse Code Modulation)を利用した技術も知られている(特許文献1、2参照)。この技術も、高画質が得られるが、圧縮率が高くないという問題がある。
【0005】
上記の二つの手法以外に、比較的圧縮率の高い手法も知られている。以下、代表的な3つの手法について、簡単に説明する。
【0006】
一つ目は、ローカル色量子化である(G. Qiu, “Coding Colour Quantized Images by Local Colour Quantization,” The Sixth Color Imaging Conference: Color Science, Systems, and Applications, 1998, IS&T pp. 206-207 (section 3: Local Color Quantization and of Color Quantized Images)参照)。この文献では、K-means法を利用して代表色を計算する。より具体的には、代表色の最適値を求めるために、計算を繰り返す。このため、計算を高速化すると言っても、繰り返しの演算処理を行う以上、実時間処理には向かない。また、PCにて人工的に生成される画像(例えば、アイコン画像)は、小さな画素ブロック単位であっても3色以上を用いている場合が多く、代表色を2色としてしまうと、画質劣化が目立ってしまう。
【0007】
二つ目は、テクスチャ圧縮である(特許文献3参照)。一般に、テクスチャ圧縮は、画像処理に先立って圧縮を行い、デコードだけが実時間処理で行われることを想定している。したがって、エンコーダは一般にソフトウェアで実現されており、実時間処理は念頭に置いていない。一方、文献(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. page 4-17 (section 3.2 algorithm in detail))は、エンコーダの実時間処理を実現する技術を提案しているが、代表色を決定するための処理をGPUで行っており、GPUを持たない簡易なハードウェアでの実現は不可能である。またテクスチャ圧縮は、代表色の直線近似により導出代表色を生成することで圧縮率を向上させるが、このためにチラツキを生じやすく、画像が劣化するという問題がある。
【0008】
三つ目は、BTC(Block Truncation Code)である(Jun Someya, et al. “Development of Single Chip Overdrive LSI with Embedded Frame Memory,” SID 2008, 33.2 page 464-465 (section 2: hcFFD using SRAM-based frame memory参照)。ところが、従来のBTCは、原理的にチラツキが生じやすく、画質の劣化が大きいという問題がある。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】米国出願公開公報US2008/0131087A1
【特許文献2】欧州出願公開公報EP1978746A2
【特許文献3】米国特許第7043087号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
本発明は、画質の劣化をできるだけ抑えつつ、高効率に圧縮可能な符号化データを生成する符号化装置および表示制御装置を提供するものである。
【課題を解決するための手段】
【0011】
上記の課題を解決するために、本発明は、入力された複数画素からなる画素ブロックのそれぞれを、第1の色軸に沿ってm個(mは2以上の整数)の領域に分割して、該画素ブロック内の前記複数画素を前記m個の領域に分類し、前記m個の領域のそれぞれについて、各領域に属する画素の画素値の最小値、最大値および平均値を計算する第1の色分類手段と、
前記m個の領域のそれぞれごとに、前記第1の色分類手段の計算結果に基づいて選択された第2の色軸に沿ってn個(nは2以上の整数)の領域に分割して、該画素ブロック内の前記複数画素をm×n個の領域に分類し、前記m×n個の領域のそれぞれについて、代表色に対応する符号化情報と、元の前記画素ブロック内の画素位置に割り当てられた代表色についてのビットマップ情報と、を計算する第2の色分類手段と、
前記m×n個の領域のそれぞれの代表色を表す代表値同士の差分により、前記m×n個の領域に対応する前記画素ブロック内の複数画素の画素値を符号化した符号化データを生成する符号化手段と、を備えることを特徴とする符号化装置を提供する。
【発明の効果】
【0012】
本発明によれば、画質の劣化をできるだけ抑えつつ、高効率に圧縮可能な符号化データを生成することができる。
【図面の簡単な説明】
【0013】
【図1】本発明の第1の実施形態に係る符号化装置を備えた液晶表示装置の概略構成を示すブロック図。
【図2】TCON2の内部の詳細構成を示すブロック図。
【図3】図1のENC4が行う符号化処理の一例を示すフローチャート。
【図4】図3のステップS3の詳細な処理手順の一例を示すフローチャート。
【図5】図4のステップS11の詳細な処理手順の一例を示すフローチャート。
【図6】第1の色軸上に設定される閾値1〜3を説明する図。
【図7】第1の色軸としてY軸に沿ってブロックを4つに分割した例を示す図。
【図8】第2の分割の一例を示す図。
【図9A】領域1と2の分割候補をすべて挙げた図。
【図9B】領域3と4の分割候補をすべて挙げた図。
【図10】ビットマップ情報の一例を示す図。
【図11】図4のステップS12の詳細な処理手順の一例を示すフローチャート。
【図12】Y成分の差分モードを説明する図。
【図13】CbとCrの差分モードを説明する図。
【図14】ENC4が生成する符号化データに含まれる個々のデータを説明する図。
【図15】符号化データのデータフォーマットの一例を示す図。
【図16】図1のDEC6が行う復号処理の一例を示すフローチャート。
【図17】図16のステップS43の詳細な処理手順の一例を示すフローチャート。
【図18】画像データを復元する様子を模式的に示した図。
【図19】(a)は符号化前の元のアイコン画像、(b)は第1の実施形態の符号化処理および復号化処理を行った後のアイコン画像を示す図。
【図20】図19の破線で示す領域10の1ブロックをY方向に4つの領域に分割した例を示す図。
【図21】図20の不具合を解消する方策を説明した図。
【図22】本実施形態による第1の色軸方向の分割例を示す図。
【図23】本実施形態による第2の色軸方向の分割例を示す図。
【図24A】第2の実施形態による符号化処理の一例を示すフローチャート。
【図24B】図24Aに続くフローチャート。
【図25】図24のステップS62の処理を模式的に示した図。
【図26】図24のステップS65の処理を模式的に示した図。
【図27】第3の実施形態に係る符号化処理の処理手順の一例を示すフローチャート。
【図28】図27のステップS71の詳細な処理手順の一例を示すフローチャート。
【図29】図28のステップS82の処理内容を説明する図。
【図30】Y成分方向に沿って領域1と2に分割する例を示す図。
【図31】第2の色軸による第2の分割を行った例を示す図。
【図32】領域1A,1B,2A,2Bに16画素を分類した例を示す図。
【図33】領域1の分割方向のバリエーションと領域2の分割方向のバリエーションを示す図。
【図34】図27のステップS76の詳細な処理手順の一例を示すフローチャート。
【図35】値モードにおける代表色の総数とビット精度との対応関係を示す図。
【図36】4つの領域1A,1B,2A,2Bに4つの代表色が存在する場合の処理内容を説明する図。
【図37】第3の実施形態における符号化データのデータフォーマットの一例を示す図。
【図38】第3の実施形態の復号化処理の処理手順の一例を示すフローチャート。
【図39】図38のステップS103の詳細な処理手順の一例を示すフローチャート。
【図40】第3の実施形態によるENC4の内部構成の一例を示すブロック図。
【図41】第4の実施形態による符号化処理の処理手順を示すフローチャート。
【図42】代表色の総数が3色の場合の上記ステップS126の処理内容を説明する図。
【図43】第4の実施形態による符号化データのデータフォーマットを示す図。
【図44】1ブロックを3画素ずつのグループに分割した例を示す図。
【図45】代表色の総数が3色の場合のビットマップ情報のビット値変更の一例を示す図。
【図46】代表色の総数が2色の場合のビットマップ情報のビットマップ情報のビット値変更の一例を示す図。
【図47】図44〜図46の手順でビットマップ情報を圧縮した場合の符号化データのデータフォーマットを示す図。
【発明を実施するための形態】
【0014】
以下、図面を参照しながら、本発明の実施形態について詳細に説明する。
【0015】
(第1の実施形態)
図1は本発明の第1の実施形態に係る符号化装置を備えた液晶表示装置の概略構成を示すブロック図である。図1の液晶表示装置は、アプリケーションプロセッサ(APP)1と、タイミングコントローラ(TCON)2と、液晶パネル3とを備えている。TCON2は、本実施形態に係る符号化装置(ENC)4と、フレームメモリ(FM)5と、復号化装置(DEC)6と、オーバードライブ装置(OD)7とを有する。
【0016】
APP1は、液晶パネルに表示すべき画像データをTCON2に供給する。TCON2は、APP1から供給された1フレーム分の画像データをOD7に供給すると共に、この画像データをENC4で圧縮して符号化データを生成する。この符号化データはFM5に格納される。FM5は、1フレーム分の符号化データを格納するメモリ容量を最低限備えている。この符号化データは、DEC6で画像データに復号される。
【0017】
OD7は、APP1から供給された1フレーム分の画像データを、FM5に格納された後にDEC6で復号された1フレーム前の画像データと画素ごとに比較し、前後のフレームで画素値が変化した場合には階調電圧を高くする制御を行う。これにより、画像データが変化しても残像が軽減される。
【0018】
このように、本実施形態に係るENC4で生成された符号化データは、液晶パネル3に表示される画像データを生成するために直接使われるのではなく、オーバードライブ用の1フレーム前の画像データをFM5に格納するために用いられる。したがって、本実施形態では、画質の劣化を極力抑えるという目的よりも、オーバードライブ機能の妨げにならない程度の画質を維持しつつ、FM5に格納されるデータ量を極力抑えることを主眼としている。
【0019】
図2はTCON2の内部の詳細構成を示すブロック図である。ENC4は、ラインメモリ11と、色量子化計算部12と、圧縮データ生成部13とを有する。
【0020】
ラインメモリ11は、画像データをブロック単位で処理するために用いられる。以下に説明する第1の実施形態では、1つのブロックが8画素×8画素で構成される例を説明する。この場合、ラインメモリ11は8水平ライン分の画像データを格納するメモリ容量が必要となる。
【0021】
色量子化計算部12は、後述するように、1つのブロックを8つの領域に分割して、これら8つの領域にブロック内の64画素を分類して、各領域の代表色を計算する処理を行う。
【0022】
圧縮データ生成部13は、後述するように、色量子化計算部12の計算結果に基づいてブロック内の64画素の画像データを圧縮した符号化データを生成する。生成された符号化データはFM5に格納される。
【0023】
DEC6は、データ抽出部14と、画像復元部15と、ラインメモリ16とを有する。データ抽出部14は、FM5から読み出した符号化データの区切りを検出する。画像復元部15は、各画素の代表色データを不可逆に復元し、その後に色量子化計算部12で量子化処理を行う前の画像データを生成する。画像復元部15で復元された画像データはラインメモリ16に格納される。
【0024】
OD7は、DEC6内のラインメモリ16に格納された画像データを、APP1から供給された画像データと比較して、フレーム前後で画像が変化したか否かを画素ごとに検出して、階調電圧の制御を行う。
【0025】
図3は図1のENC4が行う符号化処理の一例を示すフローチャートである。ENC4は、例えば8画素×8画素からなるブロック単位で画像データの色量子化を行う。
【0026】
まず、APP1から供給された画像データを取り込む(ステップS1)。APP1から供給される画像データは、RGBの3色データでもよいし、その補色データでもよいし、あるいは輝度および色差データY,Cb,Crでもよい。
【0027】
次に、取り込んだ画像データを8画素×8画素からなるブロックに分割する(ステップS2)。次に、ブロックごとに画像データを圧縮して符号化データを生成する(ステップS3)。次に、生成した符号化データをFM5に格納する(ステップS4)。
【0028】
図4は図3のステップS3の詳細な処理手順の一例を示すフローチャートである。まず、ブロックを8領域に分割して、これら8領域の各領域ごとに代表色を計算する(ステップS11)。この処理は、色量子化処理とも呼ばれる。本実施形態では、代表色の総数が計8色の例を説明するが、代表色の総数には特に制限はない。また、ブロックのサイズは、必ずしも8×8画素でなくてもよく、任意のサイズが選択可能である。
【0029】
次に、8領域のそれぞれの代表色同士を比較して、代表色を表す代表値同士の差分の大きさにより、代表値のビット数を設定し、符号化データを生成する(ステップS12)。この処理は、ビット深度の制御とも呼ばれる。ステップS12は符号化手段に対応する。
【0030】
なお、以下では、符号化前の画像データがY,Cb,Crの色差データで、各データが10ビット精度で表される例を説明する。
【0031】
図5は図4のステップS11の詳細な処理手順の一例を示すフローチャートである。まず、各色成分について、ブロック内の各画素の平均値、最大値および最小値を検出する(ステップS21)。各色成分とは、RGB成分でもよいし、その補色成分でもよいし、輝度および色差成分Y,Cb,Crでもよい。以下では、符号化前の画像データがY,Cb,Crの色差データで、各データが10ビット精度で表される例を説明する。この場合、ステップS21では、各画素のY,Cb,Cr成分の平均値、最大値および最小値を検出する。
【0032】
次に、ステップS21の検出結果に基づいて、ブロックを4つの領域に分割するための第1の色軸を決定する。具体的には、下記の(1)〜(3)式を計算して、Y成分の広がり、Cb成分の広がり、およびCr成分の広がりを検出する。
Y成分の広がり=Y最大値−Y最小値 …(1)
Cb成分の広がり=Cb最大値−Cb最小値 …(2)
Cr成分の広がり=Cr最大値−Cr最小値 …(3)
【0033】
そして、各色成分の広がりの中で、最大の広がりをもつ色軸を第1の色軸として選択する。次に、選択した第1の色軸上に3つの閾値を設定して、ブロック内の8×8=64画素のそれぞれを4つの領域のいずれかに分類する(ステップS22)。
【0034】
図5のステップS21〜S23は第1の色分類手段に対応し、ステップS24〜S25は第2の色分類手段に対応する。
【0035】
図6は第1の色軸上に設定される閾値1〜3を説明する図である。閾値1〜3はそれぞれ以下の(1)〜(3)式で計算される。
閾値1=(最小値+平均値)/2 …(4)
閾値2=平均値 …(5)
閾値3=(平均値+最大値)/2 …(6)
ここで、閾値1〜3は、ビット精度に応じて四捨五入する等して丸められる。例えば、中央溝型(mid-tread type)の丸め(truncation)が行われる。これら閾値1〜3を用いると、以下の4つの領域1〜4が得られる。
最小値≦領域1<閾値1 …(7)
閾値1≦領域2<閾値2 …(8)
閾値2≦領域3<閾値3 …(9)
閾値3≦領域4≦最大値 …(10)
【0036】
なお、領域1〜4と閾値1〜3との境界値は必ずしも(7)〜(10)の関係を満たしている必要はなく、例えば以下の(11)〜(14)の関係を満たしていてもよい。
最小値≦領域1≦閾値1 …(11)
閾値1<領域2≦閾値2 …(12)
閾値2<領域3≦閾値3 …(13)
閾値3<領域4≦最大値 …(14)
【0037】
図7は第1の色軸としてY軸に沿ってブロックを4つに分割した例を示している。この場合、Y軸に沿って閾値1平面、閾値2平面および閾値3平面が設けられ、これら3平面を境界としてY軸方向に領域1〜4が形成される。
【0038】
次に、第1の色軸に沿って4つに分割した領域1〜4のそれぞれについて、各領域に属する画素の平均値、最大値および最小値を検出する(ステップS23)。この検出処理は、Y,Cb,Crのそれぞれの色成分について行われる。例えば、図7の領域1については、以下の手順で平均値、最大値および最小値が検出される。
領域1のY最小値=領域1に属する画素データ中のY成分の最小値
領域1のY平均値=領域1に属する画素データ中のY成分の平均値
領域1のY最大値=領域1に属する画素データ中のY成分の最大値
領域1のCb最小値=領域1に属する画素データ中のCb成分の最小値
領域1のCb平均値=領域1に属する画素データ中のCb成分の平均値
領域1のCb最大値=領域1に属する画素データ中のCb成分の最大値
領域1のCr最小値=領域1に属する画素データ中のCr成分の最小値
領域1のCr平均値=領域1に属する画素データ中のCr成分の平均値
領域1のCr最大値=領域1に属する画素データ中のCr成分の最大値
領域2〜4についても、領域1と同様の手順で検出される。
【0039】
次に、領域1〜4のそれぞれごとに、各色成分の最大値と最小値の差分を計算し、差分が最も大きい色成分を第2の分割のための第2の色軸方向として設定する(ステップS24)。このステップS24では、各領域ごとに、以下の(15)〜(17)式を計算して、Y成分の広がり、Cb成分の広がり、およびCr成分の広がりを検出する。
Y成分の広がり=Y最大値−Y最小値 …(15)
Cb成分の広がり=Cb最大値−Cb最小値 …(16)
Cr成分の広がり=Cr最大値−Cr最小値 …(17)
【0040】
そして、(15)〜(17)式のうち、最も広がりが大きい色成分を第2の分割のための第2の色軸方向として決定する。この処理を、領域1〜4のそれぞれについて行う。
【0041】
なお、最大値と最小値の差分を計算する代わりに、平均値と2次のモーメントを利用して広がりを検出してもよい。
【0042】
図8は第2の分割の一例を示す図である。図8では、領域1〜4のそれぞれを2分割して得られる領域をA,Bで区別している。図8では、領域1についてはY軸方向に2分割して1A,1Bを生成し、領域2についてはCr方向に2分割して2A,2Bを生成し、領域3についてはCb方向に2分割して3A,3Bを生成し、領域4についてはCr方向に2分割して4A,4Bを生成している。このように、第2の分割を行うことで、1ブロックが4×2=計8領域に分割される。
【0043】
第2の分割の際には、領域1〜4のそれぞれごとに、分割される方向がY,Cb,Crの3通りずつある。図9Aは領域1と2の分割候補をすべて挙げた図であり、図9Bは領域3と4の分割候補をすべて挙げた図である。図9Aに示すように領域1と2の間では3×3=9通りの組合せがあり、図9Bに示すように領域3と4の間でも3×3=9通りの組合せがある。したがって、領域1〜4の全体では、9×9=81通りの組合せがある。上述した図8は、81通りのうちの1つである。
【0044】
図5のステップS24で第2の分割のための第2の色軸方向が設定されると、次に、第2の分割により得られた8領域のそれぞれについて、代表色とビットマップ情報を計算する(ステップS25)。このステップS25では、まず、8領域のそれぞれについて、各領域に属する各色成分の画素値の平均値を計算する。この平均値は、Y,Cb,Crの各色差成分ごとに計算されるため、3つの平均値からなる色ベクトルとして表すことができ、これを代表色の代表値とする。これにより、8領域のそれぞれごとに代表色が設定される。
【0045】
上述したステップS25では、1ブロック内の8×8=64画素のそれぞれが8領域のどれに属するかを示すビットマップ情報も生成する。すなわち、ビットマップ情報は、64画素のそれぞれを、8領域のいずれかの代表色で表したものである。領域は8つしかないため、各領域の代表色を特定する情報は3ビットで表現できる。例えば、ある画素が図8の領域1Aに属する場合には0H(000)とする。
【0046】
図10はビットマップ情報の一例を示す図である。図10では、領域1A〜4Bまでの8つの領域のそれぞれに対して、0〜7までの3ビットのビットマップ値を割り当てている。領域1A〜4Bに対応する代表色1A〜4Bは、各領域に属する画素の各色成分の平均値からなる色ベクトルである。すなわち、代表色1A〜4Bのそれぞれは、Y成分、Cb成分およびCr成分の3色成分からなる代表色の色ベクトルである。
【0047】
図10を用いることにより、1ブロック内の8×8=64画素のそれぞれは、8つの領域のいずれかの代表色に置換されることになり、これにより、色量子化が行われる。
【0048】
なお、図10に示した8領域のうち、画素データが存在しない領域については、平均値を計算する必要はないため、デフォルト値を与えておくのが望ましい。本実施形態による符号化処理をハードウェアで実現する場合を考えると、何かしら値を確定しておく方が望ましいためである。ただし、画素データが存在しない領域については、対応するビットマップ値は利用されることはなく、代表色を参照するという計算自体も不要となる。
【0049】
次に、図4のステップS12で説明したビット深度の制御について、より詳細に説明する。図11は図4のステップS12の詳細な処理手順の一例を示すフローチャートである。まず、各色成分ごとに、1ブロック内の8領域それぞれの代表値同士の差分を計算する(ステップS31)。次に、各色成分ごとに、ステップS31で計算された差分の最大値により差分モードを決定し、保存すべき差分データのビット構成を決定する(ステップS32)。
【0050】
図12はY成分の差分モードを説明する図である。図12は、1ブロック内の8領域のY成分の代表値を最小値から最大値まで順に並べた図である。図12(a)は最大値と最小値の差分が63以下の例、図12(b)は差分が64以上127以下の例、図12(c)は差分が128以上の例を示している。
【0051】
ここで、仮に領域2AのY成分の代表値が最小値だったとする。この場合、各領域内のY成分の代表値との差分はそれぞれ以下の(18)〜(25)式で表される。
領域1AのY差分=領域1AのY代表値−領域2AのY代表値 …(18)
領域1BのY差分=領域1BのY代表値−領域2AのY代表値 …(19)
領域2AのY差分=領域2AのY代表値−領域2AのY代表値 …(20)
領域2BのY差分=領域2BのY代表値−領域2AのY代表値 …(21)
領域3AのY差分=領域3AのY代表値−領域2AのY代表値 …(22)
領域3BのY差分=領域3BのY代表値−領域2AのY代表値 …(23)
領域4AのY差分=領域4AのY代表値−領域2AのY代表値 …(24)
領域4BのY差分=領域4BのY代表値−領域2AのY代表値 …(25)
領域2Aに関する(20)式のY差分はゼロである。他の領域のY差分は、ゼロから正の値になる。
【0052】
なお、ここでの差分は領域代表値同士の差分であることに注意すべきである。平均値との差分を取ることは一般的に行われることも多いが、平均値が領域の代表値と一致することは期待できない。すなわち、平均値との差分の場合、平均値を余分に保存する必要が生じる。本実施形態では、このようなデータ量の増加をできるだけ抑えるという観点で、よりデータ量の少ない処理(以下に説明する「最小値補填ビット」や「最小指示ビット」)を採用する。
【0053】
図11のステップS31では、各色成分ごとに、8領域間での最大値と最小値の差分の大きさにより、量子化モードの選択を行う。より具体的には、画素変化が少ない平坦な画像の場合は、精度を向上させて画質を向上させる。また、画素変化が激しい画像の場合は、微小な画素変化を人間が視覚的に認識できないため、精度を粗くしても問題ない。そこで、差分の大きさにより、適応的な量子化を採用する。
【0054】
最大値と最小値の差分が63以下の場合は、すべての差分値を6ビットで表現することができる。本実施形態では、説明を簡略化するために、代表色の代表値を8ビット精度で表すものとする。8ビット精度を確保するためには、最小値のデータも8ビットにする必要がある。最小値を取る領域(上述した説明の場合は領域2A)については、差分が必ずゼロになるため、わざわざ差分値の情報を保存する必要はない。その代わりに最小値そのものを保存する必要がある。そこで、領域2Aの差分値を保存するために確保した6ビットに、余計に2ビットを追加して、最小値そのものを保存するための8ビット領域を確保する。ここで追加される2ビットを、本明細書では、「最小値補填ビット」と呼ぶ。
【0055】
ここでは、領域2Aで最小値を取る例を説明したが、他の7つの領域のいずれかで最小値を取る可能性もある。このため、どの領域で最小値を取るかを示すために3ビットが必要であり、これを「最小指示ビット」と呼ぶ。図12中の「*」は、差分の6ビットに最小値を足し合わせることで8ビットが得られることを示している。また、図12中の「+」は、最小値の6ビットに追加される最小値補填ビットを示している。
【0056】
一方、最大値と最小値の差分が64以上で127以下の場合は、精度を7ビット深度までとする。差分値は6ビットであり、LSBに対応するビットは持たない。
【0057】
また、最大値と最小値の差分が128以上の場合は、精度を6ビット深度までとする。差分値は6ビットであり、LSB側2ビットに対応するビットは持たない。
【0058】
本実施形態では、このような場合分けを量子化モードと呼び、その値を量子化モードフラグとして保存する。
【0059】
図12ではY成分の差分モードを説明したが、CbとCrについても同様の処理が行われる。図13はCbとCrの差分モードを説明する図である。CbとCrについては差分値を5ビットとしたために、量子化モードが4つ(図13(a)〜図13(d))ある。最小値はやはり8ビットで表されるため、最小値補填ビットは3ビットになる。最小値指示ビットは代表色数が8色のため、Yと同様に3ビットである。
【0060】
図14はENC4が生成する符号化データに含まれる個々のデータを説明する図である。図14は、1ブロックの画像データを符号化するのに必要なデータを示している。
【0061】
1ブロックは8領域に分割されて、各領域ごとに、Y成分代表色の代表値6ビットと、Cb成分代表色の代表値5ビットと、Cr成分代表色の代表値5ビットとが設けられる。このため、1ブロック全体では、8つの代表色が存在するため、図14(a)に示すように、(6+5+5)×8=128ビットが必要となる。
【0062】
符号化データには、Y,Cb,Cr成分のそれぞれごとに、各2ビットの量子化モードフラグが設けられる。量子化モードフラグは、1ブロックごとに設けられるため、図14(b)に示すように、(2+2+2)=6ビットが必要となる。
【0063】
符号化データには、Y,Cb,Cr成分のそれぞれごとに、最小値補填ビットが設けられる。最小値補填ビットは、Y成分については2ビット、Cb成分とCr成分については3ビットが必要となる。このため、図14(c)に示すように、1ブロックでは、(2+3+3)=8ビットが必要となる。
【0064】
符号化データには、Y,Cb,Cr成分のそれぞれごとに、最小指示ビットが設けられる。最小指示ビットは、図14(d)に示すように、各成分ごとに3ビットである。このため、1ブロックでは、(3+3+3)=9ビットが必要となる。
【0065】
符号化データには、1ブロック内の8×8=64画素それぞれが8領域のどれに属するかを示すビットマップ情報が設けられる。図14(e)に示すように、8領域のいずれかを特定するのに3ビットが必要であるため、1ブロックでは、3×64=192ビットが必要となる。
【0066】
以上より、符号化データの全体では、128+6+8+9+192=343ビットが必要となる。圧縮前は、各色成分が10ビットであったため、(10+10+10)×8×8=1920ビットである。したがって、圧縮率は、1920/343=5.6倍となる。
【0067】
図15は符号化データのデータフォーマットの一例を示す図である。図示のように、符号化データは、制御フラグと、代表値データと、ビットマップ情報とで構成される。制御フラグには、図14で説明した量子化モードフラグ、最小指示ビットおよび最小値補填ビットが含まれ、計6+9+8=23ビットである。代表値データは、図14で説明した8領域の各色成分の代表値データであり、計(6+5+5)×8=128ビットである。ビットマップ情報は、図14で説明したビットマップ情報であり、計3×64=192ビットである。
【0068】
なお、符号化データのデータフォーマットは、必ずしも図15に示したものでなくてもよく、FM5の構成に合わせて種々の変更が可能である。
【0069】
次に、図15のデータフォーマットを持つ符号化データを復号する手法について説明する。図16は図1のDEC6が行う復号処理の一例を示すフローチャートである。まず、DEC6は、FM5に保存された符号化データを読み出す(ステップS41)。次に、符号化データをブロック単位に分解する(ステップS42)。次に、ブロック単位に分解した符号化データを復号して各画素の代表色データを復元する(ステップS43)。次に、復元したデータをブロック単位で不図示のメモリに保存する(ステップS44)。
【0070】
図17は図16のステップS43の詳細な処理手順の一例を示すフローチャートである。まず、ブロック単位に分解した符号化データから、制御フラグ、代表値データおよびビットマップ情報を抽出する(ステップS51)。
【0071】
次に、制御フラグと代表値データを用いて、代表色を再構成する。ここでは、図12〜図14で説明した圧縮手順を逆の順序で行う。より具体的には、まずは、最小指示ビットにより、どの代表色が最小値であるかを検出する。最小指示ビットは、各色成分ごとに設けられているため、各色成分ごとに最小値を取る代表色を検出する。
【0072】
以下では、説明の簡略化のために、Y成分について説明する。Y成分の最小値を取る代表色が2Aであったとする。この場合、代表色2Aに対応する領域2Aの代表値データ6ビットの下位ビット側に最小補填ビット2ビットを加えて、8ビット精度で最小値を再構成する。
【0073】
次に、それぞれの差分の精度を決めるために、Y成分の量子化フラグを検出する。量子化フラグが00であれば図12(a)の量子化モードが、01であれば図12(b)の量子化モードが、10であれば図12(c)の量子化モードがそれぞれ選択される。
【0074】
仮に、図12(a)の量子化モードが選択されたとする。この場合、最小値を取る領域2A以外の7領域の代表値は以下の式に従って再構成される。
領域1Aの代表値=Y差分データ1A+再構成された最小値8ビットYデータ
領域1Bの代表値=Y差分データ1B+再構成された最小値8ビットYデータ
領域2Bの代表値=Y差分データ2B+再構成された最小値8ビットYデータ
領域3Aの代表値=Y差分データ3A+再構成された最小値8ビットYデータ
領域3Bの代表値=Y差分データ3B+再構成された最小値8ビットYデータ
領域4Aの代表値=Y差分データ4A+再構成された最小値8ビットYデータ
領域4Bの代表値=Y差分データ4B+再構成された最小値8ビットYデータ
【0075】
Cb,Crデータについても、同様の手順で行われる。
【0076】
次に、再構成された代表値とビットマップ情報を用いて、画像データを復元する(ステップS53)。この処理は、図5のステップS25の逆変換処理である。符号化の際に、1ブロック内の各画素の色を代表色に置換したため、ステップS53で復元される各画素の色は代表色となる。
【0077】
図18は画像データを復元する様子を模式的に示した図である。図示のように、1ブロック内の64画素のビットマップ情報は、8個の代表色を表す3ビットデータで構成されているため、復元後は、各画素が8個の代表色のいずれかに置換される。
【0078】
このように、第1の実施形態では、64画素からなる1ブロックを第1の色軸方向に4つの領域に分割して、各画素をこれら4つの領域に分類し、さらに、各領域を第2の色軸方向に分割して、1ブロックを8領域に分割する。そして、64画素を8つの領域に分類して、各領域ごとに代表色を設定し、各領域ごとの代表色の代表値の差分を計算して、量子化モードを決定する。そして、量子化モードと代表値に基づいて、図14に示すデータフォーマットの符号化データを生成する。このため、本実施形態によれば、元の画像の画質をそれほど劣化させることなく、高圧縮で符号化処理を行うことができる。
【0079】
本実施形態の符号化処理は、オーバードライブ用に1フレーム前の画像データをFM5に格納するためにも利用でき、FM5のメモリ容量を削減できることから、表示制御装置のハードウェア規模を縮小できる。
【0080】
上述した第1の実施形態では、1ブロックを8×8画素として、第1の分割で第1の色軸方向に4分割し、これら各領域を第2の分割では第2の色軸方向に2分割する例を説明したが、ブロックを構成する画素数や、第1および第2の分割での分割数は任意に調整可能である。一般化すると、以下のようになる。
【0081】
入力された複数画素からなる画素ブロックのそれぞれを、第1の色軸に沿ってm個(mは2以上の整数)の領域に分割して、該画素ブロック内の複数画素をm個の領域に分類し、m個の領域のそれぞれについて、各領域に属する画素の画素値の最小値、最大値および平均値を計算する(第1の色分類手段)。
【0082】
次に、m個の領域のそれぞれごとに、第1の色分類手段の計算結果に基づいて選択された第2の色軸に沿ってn個(nは2以上の整数)の領域に分割して、該画素ブロック内の複数画素をm×n個の領域に分類し、m×n個の領域のそれぞれについて、代表色に対応する符号化情報と、元の画素ブロック内の画素位置に割り当てられた代表色についてのビットマップ情報と、を計算する(第2の色分類手段)。
【0083】
次に、m×n個の領域のそれぞれの代表色を表す代表値同士の差分により、m×n個の領域に対応する画素ブロック内の複数画素の画素値を符号化した符号化データを生成する(符号化手段)。
【0084】
(第2の実施形態)
第1の実施形態では、オーバードライブ用の1フレーム前の符号化データを生成する目的で符号化処理を行う例を説明したが、第1の実施形態で生成した符号化データは、表示目的で用いることも可能である。ただし、第1の実施形態では、各色成分ごとに、1ブロック内の8領域の色を計8色のいずれかから選択された代表色に置換してしまうため、画素の色を正確に再現できないという問題がある。また、本発明者が第1の実施形態の符号化データを表示目的用に用いたところ、以下に説明する表示上の不具合が生じる場合があることがわかった。
【0085】
図19はプリンタのアイコン画像を拡大した図であり、図19(a)は符号化前の元のアイコン画像、図19(b)は第1の実施形態の符号化処理および復号化処理を行った後のアイコン画像である。
【0086】
図19からわかるように、プリンタのアイコン画像の中で、紙を表す本来は白色の部分が灰色になっている。これは、紙の白色と、背景およびプリンタ本体の灰色とがブロック内の同一領域に割り当てられて処理した結果、色が混ざり合って、代表色がより薄い灰色になったためである。以下に説明する第2の実施形態では、このような不具合を解消することを目的とする。
【0087】
図19において、破線で囲まれた領域10は1ブロック(=64画素)の範囲を示している。図20は、図19の破線で示す領域10の1ブロックをY方向に4つの領域に分割した例を示す図である。この1ブロック内には、白色、黄色、薄灰色、濃灰色および黒色の5つの色が含まれており、図20では、各色を矩形で図示している。これら5つの色のうち、白色、黄色および薄灰色は領域4に分類される。黄色も薄灰色も、Y成分が白色に近いためである。
【0088】
第1の実施形態では、第1の色軸(例えばY軸)方向に4つの領域に分割した後に、さらに各領域を2つの領域に分割する。このため、領域4の3色は2つの領域4A,4Bに分けられ、例えば領域4Aには黄色が、領域4Bには白色と薄灰色が分類される。その結果、領域4Bでは、白色と薄灰色が平均化されて代表色が計算され、本来は白色であっても、薄灰色の影響で色が混ざってしまい、その色が視認されてしまう。
【0089】
図21は図20の不具合を解消する方策を説明した図である。図21に示すように、1ブロックをY成分方向に4つの領域に分割すると、Y成分方向の最大値と閾値3の間の領域4に白色、薄灰色、黄色が分類される。そこで、領域4を2つに分割して、Y成分が最大である白色が属する領域(以下、拡張領域4’C)と、白色以外の薄灰色と黄色が属する領域(以下、領域4’)とを新たに新設する。これにより、Y成分方向の最大である白色が他の色と混じり合う不具合を確実に防止できる。
【0090】
図22は本実施形態による第1の色軸方向の分割例を示す図である。図22では、Y成分方向に分割する例を示している。第1の実施形態では、第1の色軸方向に4つの領域に分割したが、本実施形態では、4つの領域に分割した後、そのうちの領域4について、さらに拡張領域4’Cと領域4’に2分割する。これにより、見かけ上、第1の色軸方向に4+1=5つの領域が生成されることになる。
【0091】
図23は本実施形態による第2の色軸方向の分割例を示す図である。第1の色軸方向の分割で得られた拡張領域4’Cについては2分割することはせず、それ以外の領域1〜3,4’についてはそれぞれ2分割される。これにより、図21の例では、領域4’に属した黄色と薄灰色は別個の領域4’Aと4’Bに分けられ、例えば領域4’Aには黄色が、領域4’Bには薄灰色が分類される。これにより、混色による実際の色との相違が起きなくなる。
【0092】
図24Aおよび図24Bは第2の実施形態による符号化処理の一例を示すフローチャートである。まず、1ブロック全体について、各色成分ごとに、平均値、最大値および最小値を計算する(ステップS61)。次に、第1の色軸に沿って、第1の実施形態と同様に4分割して領域1〜4を生成すると共に、領域4を拡張領域4’Cと領域4’に分割する処理を行う(ステップS62)。このステップS62により、計6つの領域が生成される。これらステップS61とS62は通常分割と拡張分割の共通の計算処理である。
【0093】
本実施形態では、第1の実施形態と同様の処理手順で領域4を生成する通常分割処理を行う(ステップS63〜S65)とともに、この領域4を拡張領域4’Cと領域4’に分割する拡張分割処理が行われる(ステップS66〜S69)。図25は通常分割処理と拡張分割処理の概略を模式的に示した図である。
【0094】
拡張分割処理では、1ブロック内の64画素を、ステップS63で生成された5つの領域を分類して、各領域について色成分ごとに、平均値、最大値および最小値を計算する(ステップS66)。
【0095】
次に、拡張領域4’Cを除く4つの領域のそれぞれごとに、最大値と最小値の差分を計算し、色成分ごとに、色成分の広がりを検出し、色成分の広がりが最も大きい色成分を第2の分割のための第2の色軸方向として決定する(ステップS67)。
【0096】
次に、拡張領域4’Cを除く4つの領域のそれぞれごとに、第2の色軸に沿って2分割して計9個の領域を生成し、1ブロック内の64画素をこれら9個の領域に分類する。そして、各領域ごとに、代表色とビットマップ情報を計算する(ステップS68)。
【0097】
なお、実際には画素データが存在しないで、計算の実行ができない場合もある。このような領域を「空き領域」とよぶ。このときには、代表色の成分として例えば「0」といった値を仮に割り当てる。またデータが非存在であることを示すため存在フラグ情報を「空き」を示す「0」にする。(存在している場合には「1」とする。)このフラグ情報は空き領域の検出に使用する。
【0098】
図26はステップS68の処理を模式的に示した図である。拡張領域4’Cについては2分割されないが、それ以外の領域1〜4と領域4’については、それぞれ2分割される。
【0099】
次に、9個の領域の中に、空き領域があるか否かを検出する(ステップS69、S70)。各領域の存在フラグ情報を調べ、一つでも「空き」があれば、空き領域を検出したことになる。もし、空き領域がある場合には、上述した拡張領域4’Cと領域4’を利用した拡張分割による符号化処理を行う(ステップS71)。
【0100】
拡張分割による符号化処理では、第1の実施形態よりも領域の数が増えるため、代表色の数も増えてしまうが、実際には画素が一つも存在しない領域に本来割り当てられていた代表色を新たな領域の代表色として利用することで、ビットマップ情報のビット数を増やさずに対応できる。
【0101】
一方、すべての領域に画素が存在する場合には、拡張領域4’Cを利用せずに、第1の実施形態(通常分割)と同様の手順で、8つの領域を用いた符号化処理を行う(ステップS72)。
【0102】
このように、第2の実施形態では、類似の色が混ざり合って代表色が生成される不具合を防止するために、複数の色が分類された特定の領域をさらに2つの領域に分割する拡張分割を行って、これら複数の色を別個の領域に分類するようにし、最終的に生成された複数の領域の中に、画素が存在しない空き領域がある場合には、この空き領域に、上述した拡張分割で得られた領域の代表色を割り振るようにしたため、代表色の色が実際の色とは異なる不具合を軽減できる。
【0103】
なお、上述した例では、Y成分の領域4を拡張領域4’Cと領域4’に拡張分割する例を説明したが、拡張分割の対象となる領域の種類は必ずしもY成分の領域4には限定されない。実際には、ブロック内に含まれる画素の色に応じて最適な領域を拡張分割するのが望ましい。
【0104】
さらに、上述した例では、m×n個の領域に1領域を追加して拡張分割する技術を述べたが、例えば、Y成分の最小値による領域をさらに追加し、(m×n+2)個の拡張領域を考えることも可能である。この場合は、少なくとも2個の空き領域があることが確認されたときに、この(m×n+2)個の拡張領域による代表色を採用できる。追加する領域としては、さらにY成分での他の領域の境界値(閾値)を利用することも可能である。このように考えれば、p個(pは正の整数)の領域を追加をした(m×n+p)個の拡張領域も考えることができる。この場合には、p個の空き領域があることが確認されたときに、(m×n+p)個の拡張領域による代表色を採用できる。
【0105】
上述した第2の実施形態を一般化すると、以下のようになる。
【0106】
m個の領域の中で第1の色軸上の値が最大の領域をさらに分けた計(m+p)個の領域のそれぞれについて、各領域に属する画素の画素値の最小値、最大値および平均値を計算する(第1の色分類手段)。
【0107】
(m×n+p)個の領域(pは1以上の整数)のそれぞれについて、代表色とビットマップ情報とを計算する(第2の色分類手段)。
【0108】
(m×n+p)個の領域の中に画素が存在しない少なくともp個の空き領域がある場合には該領域を利用して(m×n+p)個の領域に属する画素を再分類して符号化データを生成し、(m×n+p)個の領域の中に画素が存在しない(p−1)個より少ない空き領域がある場合にはm×n個の領域分割を用いて符号化データを生成する(符号化手段)。
【0109】
(第3の実施形態)
第1および第2の実施形態では、8×8画素からなるブロックを単位として符号化処理を行う例を説明したが、ブロックの単位は8×8画素に制限されない。以下に説明する第3の実施形態では、4×4画素からなるブロックを単位として符号化処理を行う例を説明する。ブロックの単位を小さくすることで、ラインメモリ11のメモリ容量が半減し、ハードウェア規模を縮小でき、かつ画質の向上も図れる。第3の実施形態は、1ブロックを複数の領域に分割したときに、各領域の代表色のビット精度を制御することにより、画質の改善を図ることを特徴とする。
【0110】
第3の実施形態では、第1および第2の実施形態と同程度の圧縮率を確保するために、1ブロックを最終的に4つの領域に分割して、最大4色の代表色の割り当てを考える。
【0111】
図27は第3の実施形態に係る符号化処理の処理手順の一例を示すフローチャートである。まず、1ブロックを第1の色軸方向に2分割して領域1,2を生成した後、領域1,2のそれぞれを第2の色軸方向に分割して領域1〜4を生成する。そして、1ブロック内の4×4=16画素を領域1〜4のそれぞれに分類して、各領域ごとに代表色を計算する(ステップS75)。
【0112】
次に、領域1〜4の異なる代表色の総数により、後述するように、差分モードか値モードかを設定して、符号化処理を行う(ステップS76)。このステップS76では、領域1〜4の中で、画素が分類されていない空き領域を削除する処理を行って、圧縮効率を高める。
【0113】
図28は図27のステップS75の詳細な処理手順の一例を示すフローチャートである。まず、ブロック内の4×4=16画素について、色成分ごとに、平均値、最大値および最小値を計算する(ステップS81)。次に、色成分ごとに、最大値と最小値の差分を計算して色成分の広がりを検出し、広がりが最も大きい色成分を第1の色軸として選択する。そして、第1の色軸に沿って、ブロックを2分割して領域1〜2を生成する(ステップS82)。
【0114】
次に、1ブロック内の16画素を、ステップS82で生成された領域1〜2に分類し、各領域ごとに、各色成分の平均値、最大値および最小値を計算する(ステップS83)。図29はステップS82の処理内容を説明する図である。例えば平均値を閾値として、16画素を領域1と2に分類する。
【0115】
第1の色軸がY成分方向の場合は、図30に示すように、Y成分方向に沿って、領域1と2が生成される。
【0116】
次に、色成分ごとに、ステップS83で計算した最大値と最小値の差分を計算して色成分の広がりを検出し、広がりが最も大きい色成分を第2の色軸として選択する(ステップS84)。第2の色軸は、領域1〜2のそれぞれごとに選択される。
【0117】
図31は第2の色軸による第2の分割を行った例を示す図である。図31では、領域1についてはCb成分方向に2分割して領域1Aと1Bを生成し、領域2についてはCr成分方向に2分割して領域2Aと2Bを生成している。
【0118】
次に、領域1〜2のそれぞれを第2の色軸に沿って2分割して、領域1A,1B,2A,2Bを生成する。そして、1ブロック内の16画素を各領域に分類して、各領域ごとに、各色成分の代表色を計算し、かつ1ブロック内の16画素と代表色との対応関係を示すビットマップ情報を生成する(ステップS85)。
【0119】
図32は領域1A,1B,2A,2Bに16画素を分類した例を示す図であり、各画素を黒丸、黒四角、黒三角、黒菱形で表している。
【0120】
図33は領域1の分割方向のバリエーションと領域2の分割方向のバリエーションを示す図である。図示のように、第2の分割の仕方は全部で、3×3=9通りの組合せがある。
【0121】
図34は図27のステップS76の詳細な処理手順の一例を示すフローチャートである。まず、4つの領域1A,1B,2A,2Bのそれぞれに割り当てられた代表色の総数が4か否かを判定する(ステップS91)。代表色の総数が3個以下であれば、値モードを選択する。値モードでは、まず、代表色の総数により定まるビット精度(深度)を選択する(ステップS92)。ステップS91は代表色数判定手段に対応する。
【0122】
なお、「代表色の総数」とは、計算された領域分割に関して実際に画素データが存在しているか、存在していないかを確認した結果、実際に存在する「代表色の数」である。すなわち、「代表色の総数」は、ブロック処理ごとに変化する実際に有効な代表色の数を意味し、この総数の色数まで割り当てを想定するという意味での最初に定める「最大の色数」ではない。
【0123】
図35は値モードにおける代表色の総数とビット精度との対応関係を示す図である。代表色の総数が1色だけの場合は各色成分を10ビットとする。代表色の総数が2色の場合は各色成分を8ビットとする。代表色の総数が3色の場合は、Y成分を6ビット、Cb成分とCr成分を5ビットとする。
【0124】
ステップS92の処理が終わると、次に、選択されたビット精度に従って、代表色のデータを生成する(ステップS93)。
【0125】
一方、ステップS91で代表色の総数が4色と判定された場合には、各代表色に対応する領域について、色ごとに最大値と最小値の差分を計算する(ステップS94)。次に、差分が所定の閾値以上か否かを判定する(ステップS95)。差分が所定の閾値以上であれば、やはり値モードを選択し、上述したステップS92とS93の処理を行う。ステップS95は差分値判定手段に対応する。
【0126】
差分が所定の閾値未満であれば、差分に応じた差分モードを選択して、符号化データを生成する(ステップS96)。このように、代表色の総数が4色の場合は、差分が閾値以上であれば値モードを選択し、閾値未満であれば差分モードを選択する。
【0127】
図36は4つの領域1A,1B,2A,2Bに4つの代表色が存在する場合の処理内容を説明する図である。この場合、代表色同士の差分の大きさにより、差分モードが選択される場合と値モードが選択される場合がある。どちらが選択されたかを識別するために、1ビットのモード識別情報が設けられている。モード識別情報が0の場合は例えば差分モードを選択したことを示し、1の場合は例えば値モードを選択したことを示す。値モードが選択されるのは、差分が32以上の場合であり、差分が31以下の場合は差分モードが選択される。
【0128】
差分モードが選択される場合は、差分の大きさにより、図36に示す二通りのいずれかの符号化処理が行われる。このため、どちらの処理を行うかを識別する1ビットの差分識別情報が設けられている。差分識別情報が0の場合は例えば差分が0〜15であり、1の場合は例えば差分が16〜31であることを示す。
【0129】
差分が16〜31の場合は、4つの領域の代表色の最小値を5ビット精度で表現し、各領域の代表色を、最小値からの差分情報として2ビットで表現する。この場合、5+2×4=13ビットが必要となる。
【0130】
差分が0〜15の場合は、4つの領域の代表色の最小値を6ビット精度で表現し、各領域の代表色を、最小値からの差分情報として2ビットで表現する。この場合、6+2×4=14ビットが必要となる。
【0131】
このように、差分が0〜15の場合は、差分が16〜31の場合よりも、1ビット余計に必要となる。実際には、1ビットのモード識別情報と1ビットの差分識別情報が必要であるため、全体では、2+14=15ビットのビット数になる。
【0132】
図37は第3の実施形態における符号化データのデータフォーマットの一例を示す図である。図37の符号化データは、4つの領域1A,1B,2A,2Bの中に画素が存在するか否かを示す4ビットからなる色構成情報と、49ビットの代表色情報と、32ビットのビットマップ情報とで構成されている。したがって、符号化データは、計4+49+32=85ビットで表される。
【0133】
色構成情報は、符号化データを復号する際に用いられる。各領域に画素が存在する場合には、その領域の色構成情報は1となり、画素が存在しない場合は0となる。
【0134】
ビットマップ情報は、4×4=16画素分の画素情報を含んでおり、各画素の代表色が2ビットで表現される。4つの領域のうち、画素が存在しない領域がある場合には、代表色の総数も3色以下となり、使用されない代表色の情報はビットマップ情報には出現しないようにする。
【0135】
代表色情報は、図34の処理により差分モードと値モードのいずれを選択するかにより、ビット数が異なる。値モードを選択した場合は、代表色の総数が1色の場合は10+10+10=30ビット、代表色の総数が2色の場合は(8+8+8)×2=48ビット、代表色の総数が3色の場合は、(6+5+5)×3=48ビットである。
【0136】
代表色の総数が4色の場合は、(4+4+4)×4=48ビットに加えて、モード識別情報の1ビットが必要となり、計49ビットとなる。
【0137】
また、差分モードが選択された場合は、差分の大きさが0〜15の場合は1+13×3=40ビット、差分の大きさが16〜31の場合は1+14×3=43ビットである。
【0138】
これにより、符号化データは、一番ビット数が多い場合で、色構成情報が4ビット、代表色情報が49ビット、ビットマップ情報が32ビットで、計4+49+32=85ビットとなる。
【0139】
これに対して、圧縮前の画像データは、各色成分が10ビットであるため、1ブロック分で、(10+10+10)×4×4=480ビットとなり、圧縮率は、480/85=5.6となり、第1の実施形態と同程度の圧縮率が得られる。
【0140】
次に、第3の実施形態の復号化処理について説明する。図38は第3の実施形態の復号化処理の処理手順の一例を示すフローチャートである。FM5から符号化データを読み出して(ステップS101)、符号化データをブロック単位に分解する(ステップS102)。次に、ブロック単位に分解した符号化データを復号化し(ステップS103)、復号化した符号化データをブロック単位で不図示のメモリに保存する(ステップS104)。
【0141】
図39は図38のステップS103の詳細な処理手順の一例を示すフローチャートである。まず、符号化データに含まれる色構成情報、代表色情報およびビットマップ情報を抽出する(ステップS111)。符号化データのビット長を固定長としておけば、これらの情報を簡易に抽出できるため、都合がよい。代表色情報は、図37に示すように、必ずしもビット長が同じでないが、代表色情報として予め49ビット長分を確保しておき、使われないビットは特定のビット値(例えば0)にしておけばよい。
【0142】
次に、色構成情報の4ビットの値を検出することで、代表色の総数が4色か、それとも1〜3色かを判定する(ステップS112)。
【0143】
なお、具体的には、色構成情報の0(非存在)や1(存在)の存在フラグ情報を数値として加算することで、代表色の総数を計算できる。例えば、1(存在する)+1(存在する)+0(存在しない)+1(存在する)=3で代表色の総数が3色であることがわかる。4色の場合には、代表色情報に含まれるモード識別情報のビット値により、差分モードか値モードかを判別し、差分モードの場合には、代表色情報に含まれる差分識別情報のビット値により、差分が0〜15か16〜31かを判別し、最小値のビット数を検出する。そして、最小値に各領域の差分値を足し合わせて、各領域の代表色を復元する。また、値モードの場合は、図36に示すように各領域の各色成分が4ビットで表されており、容易に各領域の代表色を復元できる(ステップS113)。
【0144】
ステップS112で代表色の総数が1〜3色と判定されると、図37に示すように、色数に応じて各領域の代表色を復元する(ステップS114)。
【0145】
ステップS113またはS114の処理が終了すると、各領域の代表色とビットマップ情報に基づいて、画像データを復元する(ステップS115)。
【0146】
図40は第3の実施形態によるENC4の内部構成の一例を示すブロック図である。図40のENC4は、図19の色量子化計算部12の代わりに代表色計算部17が設けられている。この他の構成は同様である。図19の色量子化計算部12は、量子化モード情報、最小指示ビット情報および最小値補填ビット情報を生成して出力したが、代表色計算部17は、色構成情報、モード識別情報および差分識別情報を生成して出力する。
【0147】
このように、第3の実施形態では、第1および第2の実施形態よりもブロックサイズを小さくし、かつブロックを分割して得られた複数の領域内に画素が存在するか否かを検出して、できるだけ空き領域が生じないように圧縮処理を行うため、圧縮率の向上と画質の向上の双方が可能となる。
【0148】
(第4の実施形態)
第4の実施形態は、第3の実施形態の変形例であるが、第3の実施形態よりもさらに画質の向上を図るものである。第3の実施形態では、代表色の総数が4色の場合のみ、差分モードを採用しており、代表色の総数が3色の場合は、値モードを採用して、Y成分6ビット、CbとCr成分が5ビットの精度しか持っていなかった。以下に説明する第4の実施形態では、代表色の総数が3色の場合でも差分モードを採用し、画質のさらなる向上を図る。
【0149】
図41は第4の実施形態による符号化処理の処理手順を示すフローチャートである。まず、代表色の総数が3色または4色であるか否かを判定する(ステップS121)。なお、「代表色の総数」とは、計算された領域分割に関して実際に画素データが存在しているか、存在していないかを確認した結果、実際に存在する「代表色の数」である。代表色の総数が1色か2色であれば、図34のステップS92とS93と同様の処理を行って、代表色の総数に応じて予め定められるビット精度で、各領域の代表色を符号化する(ステップS122,S123)。
【0150】
ステップS121で、3色か4色と判定された場合は、各領域ごとに、代表色を構成する各色成分について、最大値と最小値の差分を計算する(ステップS124)。次に、差分が所定の閾値(例えば8)以上か否かを判定し(ステップS125)、8以上であれば、値モードを採用すべく、ステップS122の処理を行う。
【0151】
差分が8未満であれば、差分の大きさにより、最小値のビット精度を変更する(ステップS126)。
【0152】
図42は代表色の総数が3色の場合の上記ステップS126の処理内容を説明する図である。差分が7以下の場合はモード識別情報が0に設定され、差分モードが選択される。差分が0〜3の場合は、差分識別情報が0に設定され、最小値は8ビット精度となり、各領域の最小値との差分は2ビットで表される。差分が4〜7の場合は、差分識別情報は1に設定され、最小値は7ビット精度となり、各領域の最小値との差分は2ビットで表される。
【0153】
差分が8以上の場合は、モード識別情報は1に設定され、値モードが選択される。この場合、3つの代表色のそれぞれは、Y成分が6ビット、CbとCr成分は5ビットで表される。
【0154】
図43は第4の実施形態による符号化データのデータフォーマットを示す図である。図37と比較して、代表色の総数が3色の場合の代表色情報が異なっており、それ以外は同じである。
【0155】
第3および第4の実施形態では、4色を表現可能なビットマップ情報を前提として、ビットマップ情報として各画素に2ビットを割り当てていた。ところが、代表色の総数が3色以下の場合は、各画素に2ビットを割り当てると、すべてのビットが有効に使われずに無駄が生じる。そこで、ビットマップ情報のビット数を代表色の総数により可変とすることも可能である。
【0156】
例えば、代表色の総数が3色とする。この場合、隣接する3画素を考えると、各画素が3色のいずれかを取り得るため、すべての色の組合せは、3×3×3=27通りである。ビットマップ情報が各画素を2ビットで表しているとすると、3画素では6ビットとなり、32通りの組合せを表現できることになり、32−27=5ビットは無駄である。
【0157】
そこで、3画素分の6ビットを5ビットに圧縮することにする。1ブロックには、4×4=16画素が含まれるため、これらを3画素ずつにグループ化すると、図44(a)のように、5つのグループができて、残り1画素分が余る。これら5つのグループについては、それぞれ5ビットで表すことにし、残り1画素分は2ビットで表すことにする。
【0158】
これにより、図44(b)のように、5つのグループのビット総数は5×5=25ビットとなり、これに残り1画素分の2ビットが加わって、計27ビットでビットマップ情報を表現できることになり、32−27=5ビットを削減できる。
【0159】
また、上記のように、ビットマップ情報を圧縮する際には、画素が存在しない領域の代表色にビット値を割り当てることを省略して、代表色を表すビット値を変更するのが望ましい。例えば、図45は代表色の総数が3色の場合のビットマップ情報のビット値変更の一例を示す図である。画素が存在しない代表色のビット値を省略して、他の代表色を予め定めた3種類のビット値00,01,10で表現することにすれば、効率よくビットマップ情報を圧縮できる。
【0160】
同様に、図46は代表色の総数が2色の場合のビットマップ情報のビットマップ情報のビット値変更の一例を示す図である。図46の場合は、代表色が2種類だけであり、1ビットで表現できるため、代表色を表すビット値を1ビットに変更する。
【0161】
図47は図44〜図46の手順でビットマップ情報を圧縮した場合の符号化データのデータフォーマットを示す図である。図43との違いは、ビットマップ情報の総ビット数が代表色の総数により変化することである。
【0162】
図47の符号化データを復号化処理する場合は、以下の手順で行う。符号化データの総ビット数は、ビットマップ情報の総ビット数によって異なる。したがって、まずは、色構成情報より、代表色の総数を検出する。具体的には、色構成情報の0や1の存在フラグ情報を数値として加算する。代表色の総数によってビットマップ情報の圧縮の仕方が異なるため、代表色の総数が判れば、ビットマップ情報を復号して、各画素の代表色を特定することが可能となる。
【0163】
このように、第4の実施形態では、代表色の総数と、代表色同士の最大値と最小値の差分とにより、代表色情報のビット構成を決めるため、画質の向上を図りつつ、効率よく圧縮できる。また、ブロックを複数の領域に分割する際に、画素が存在しない領域についてはビットマップ情報を割り振らないようにすることで、ビットマップ情報を効率よく圧縮できる。
【0164】
上述した第3および第4の実施形態では、代表色の数を最大4色としたが、代表色の数には特に制限はない。第3および第4の実施形態を一般化すると、以下のようになる。
【0165】
m×n個の領域のそれぞれに割り振られる代表色の総数がk個(kはm×n以下の正の整数)以上か否かを判定する(代表色数判定手段)。
【0166】
代表色の総数がk個以上の場合に、各色または色差成分ごとに、m個の領域それぞれの代表色の差分が所定の閾値以上か否かを判定する(差分値判定手段)。
【0167】
閾値未満と判定された場合には、m×n個の領域のそれぞれの代表色同士の差分により、m×n個の領域に対応する画素ブロック内の複数画素の画素値を符号化した符号化データを生成し、閾値以上と判定されるか、または代表色数判定手段によりk個未満と判定された場合には、m×n個の領域のそれぞれの代表色の総数により定められるビット精度にて、m×n個の領域に対応する画素ブロック内の複数画素の画素値を符号化した符号化データを生成する(符号化手段)。
【符号の説明】
【0168】
1 アプリケーションプロセッサ(APP)
2 タイミングコントローラ(TCON)
3 液晶パネル
4 符号化装置(ENC)
5 フレームメモリ(FM)
6 復号化装置(DEC)
7 オーバードライブ装置(OD)
11 ラインメモリ
12 色量子化計算部
13 圧縮データ生成部
14 データ抽出部
15 画像復元部
16 ラインメモリ

【特許請求の範囲】
【請求項1】
入力された複数画素からなる画素ブロックのそれぞれを、第1の色軸に沿ってm個(mは2以上の整数)の領域に分割して、該画素ブロック内の前記複数画素を前記m個の領域に分類し、前記m個の領域のそれぞれについて、各領域に属する画素の画素値の最小値、最大値および平均値を計算する第1の色分類手段と、
前記m個の領域のそれぞれごとに、前記第1の色分類手段の計算結果に基づいて選択された第2の色軸に沿ってn個(nは2以上の整数)の領域に分割して、該画素ブロック内の前記複数画素をm×n個の領域に分類し、前記m×n個の領域のそれぞれについて、代表色に対応する符号化情報と、元の前記画素ブロック内の画素位置に割り当てられた代表色についてのビットマップ情報と、を計算する第2の色分類手段と、
前記m×n個の領域のそれぞれの代表色を表す代表値同士の差分により、前記m×n個の領域に対応する前記画素ブロック内の複数画素の画素値を符号化した符号化データを生成する符号化手段と、を備えることを特徴とする符号化装置。
【請求項2】
前記第1の分類手段は、前記画素ブロック内で各色または色差成分ごとに色成分の広がりを検出して、広がりが最も大きい色または色差成分方向を前記第1の色軸とし、
前記第2の分類手段は、前記m個の領域のそれぞれについて、各色または色差成分ごとに色成分の広がりを検出して、広がりが最も大きい色または色差成分方向を前記第2の色軸とすることを特徴とする請求項1に記載の符号化装置。
【請求項3】
前記符号化手段は、前記m×n個の領域のそれぞれの代表色を表す代表値同士の差分により定まる量子化モード情報と、前記m×n個の領域の中で代表値の最小値を表す情報と、前記最小値を予め定めたビット精度にするための最小値補填ビット情報とを含む前記符号化データを生成することを特徴とする請求項1または2に記載の符号化装置。
【請求項4】
前記第1の色分類手段は、前記m個の領域の中で前記第1の色軸上の値が最大の領域をさらに分けた計(m+p)個(pは1以上の整数)の領域のそれぞれについて、各領域に属する画素の画素値の最小値、最大値および平均値を計算し、
前記第2の色分類手段は、前記(m×n+p)個の領域のそれぞれについて、代表色とビットマップ情報とを計算し、
前記符号化手段は、前記(m×n+p)個の領域の中に画素が存在しない少なくともp個の空き領域がある場合には該領域を利用して前記(m×n+p)個の領域に属する画素を再分類して前記符号化データを生成し、前記(m×n+p)個の領域の中に画素が存在しない(p−1)個より少ない空き領域がある場合には前記m×n個の領域分割を用いて前記符号化データを生成することを特徴とする請求項1に記載の符号化装置。
【請求項5】
前記m×n個の領域のそれぞれに割り振られる代表色の総数がk個(kはm×n以下の正の整数)以上か否かを判定する代表色数判定手段と、
代表色の総数が前記k個以上の場合に、各色または色差成分ごとに、前記m×n個の領域それぞれの代表色の差分が所定の閾値以上か否かを判定する差分値判定手段と、を備え、
前記符号化手段は、前記閾値未満と判定された場合には、前記m×n個の領域のそれぞれの代表色同士の差分により、前記m×n個の領域に対応する前記画素ブロック内の複数画素の画素値を符号化した符号化データを生成し、前記閾値以上と判定されるか、または前記代表色数判定手段により前記k個未満と判定された場合には、前記m×n個の領域のそれぞれの代表色の総数により定められるビット精度にて、前記m×n個の領域に対応する前記画素ブロック内の複数画素の画素値を符号化した符号化データを生成することを特徴とする請求項1または2に記載の符号化装置。
【請求項6】
色または色差情報を含む画像データに基づいて符号化データを生成する符号化部と、
前記符号化データを保存する記憶部と、
前記記憶部から読み出した前記符号化データを復号して新たな画像データを生成する復号化部と、
入力された画像データを1フレーム前の画像データと画素単位で比較して、その比較結果に応じて表示パネルに供給される階調電圧を制御するオーバードライブ部と、を備えた表示制御装置であって、
前記符号化部は、
入力された複数画素からなる画素ブロックのそれぞれを、m個(mは2以上の整数)の領域に分割して、該画素ブロック内の前記複数画素を前記m個の領域に分類し、前記m個の領域のそれぞれについて、
代表色に対応する符号化情報と、元の前記画素ブロック内の画素位置に割り当てられた代表色についてのビットマップ情報と、を計算する色分類手段と、
を有し、
前記復号化部は、
前記記憶部から読み出した前記符号化データをブロック単位に分解する分解手段と、
ブロック単位に分解された前記符号化データに含まれる、前記m個の領域のそれぞれについての前記代表色に対応する符号化情報と前記ビットマップ情報とに基づいて、ブロックを構成する各画素の色を代表色に置換して画像データを復元し、復元した画像データを1フレーム前の画像データとして前記オーバードライブ部に供給する復元手段と、を備えることを特徴とする表示制御装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9A】
image rotate

【図9B】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24A】
image rotate

【図24B】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate

【図34】
image rotate

【図35】
image rotate

【図36】
image rotate

【図37】
image rotate

【図38】
image rotate

【図39】
image rotate

【図40】
image rotate

【図41】
image rotate

【図42】
image rotate

【図43】
image rotate

【図44】
image rotate

【図45】
image rotate

【図46】
image rotate

【図47】
image rotate


【公開番号】特開2011−124866(P2011−124866A)
【公開日】平成23年6月23日(2011.6.23)
【国際特許分類】
【出願番号】特願2009−281822(P2009−281822)
【出願日】平成21年12月11日(2009.12.11)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】