(57)【要約】【課題】画質を劣化させることなく、効率的に画像データを圧縮する。【解決手段】画像処理装置は、タイミングコントローラ２とソースドライバ３とを備え、ソースドライバ３は、ＲＧＢデータ受信回路５と、ＹＣＣ変換回路６と、ＢＴＣ符号化回路７と、フレームメモリ８と、ＢＴＣ復号化回路９と、ＲＧＢ変換回路１０と、ＬＣＤ駆動回路１１とを有する。画素ブロック内の活動量に応じて、２レベルＢＴＣアルゴリズムと３レベルアルゴリズムのいずれかを選択して画像データの符号化を行うため、画質を劣化させることなく、効率的に画像データを圧縮できる。特に、元画像がＰＣで生成されたＰＣ画像の場合でも、画質の劣化が起きない符号化データを生成できる。【選択図】図１
2007312126.tif 000002
【特許請求の範囲】
【請求項１】
複数の色情報からなる画像データを輝度データと色差データとに変換する色情報変換手段と、
隣接する複数画素からなる画素ブロックのそれぞれごとに、前記画素ブロック内の複数画素の輝度データの差分と色差データの差分とのそれぞれが所定の閾値を超えたか否かを判定する活動量検出手段と、
前記活動量検出手段により前記所定の閾値を超えたと判定された前記画素ブロック内の複数画素の輝度データまたは色差データに対応するｍ個（ｍは３以上の整数）の代表値を生成して第１の符号化処理を行い、前記活動量検出手段により前記所定の閾値を超えなかったと判定された前記画素ブロック内の複数画素の輝度データまたは色差データに対応するｎ個（ｍは２以上の整数で、ｎ＜ｍ）の代表値を生成して第２の符号化処理を行う符号化手段と、を備えることを特徴とする画像処理回路。
【請求項２】
前記符号化手段は、前記第１の符号化処理を行う際、前記画素ブロック内の複数画素の輝度データの最大値および最小値、または色差データの最大値および最小値を除いた残りの画素を対象として前記ｍ個の代表値を生成することを特徴とする請求項１に記載の画像処理回路。
【請求項３】
前記符号化手段は、前記第２の符号化処理を行う際、前記画素ブロックを複数の副画素ブロックに分割し、各副画素ブロックごとに色差データの平均値を計算して、計算された平均値を対応する副画素ブロックの共通の色差データとして扱うことを特徴とする請求項１または２に記載の画像処理回路。
【請求項４】
前記符号化手段で符号化された符号化データを記憶する記憶手段と、
前記画素ブロック内の複数画素の符号化データを単位として前記記憶手段へのデータ書き込みを制御する記憶制御手段と、
前記記憶手段に記憶された符号化データを復号化して輝度データと色差データとを生成する復号化手段と、
前記復号化手段にて生成された輝度データと色差データとに基づいて、複数の色情報からなる画像データを生成する色情報復元手段と、を備えることを特徴とする画像処理回路。
【請求項５】
前記記憶制御手段は、前記色情報変換手段にて変換処理を行う前の原画像の向きと、前記色情報復元手段で生成された画像データに基づいて生成される表示画像の向きとが異なる場合には、表示画像の向きに合わせて前記記憶手段における符号化データの記憶場所を制御することを特徴とする請求項３に記載の画像処理回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データを符号化する画像処理回路に関する。
【背景技術】
【０００２】
画像を圧縮するＢＴＣ技術が提案されている。複数画素からなる画素ブロック内の画素データを３レベルに圧縮する３レベルＢＴＣが提案されている（非特許文献１参照）。この非特許文献１では、画素値の分布に依存せずに、最大値ＭＡＸと最小値ＭＩＮから決まる範囲Ｒ＝ＭＡＸ−ＭＩＮをもとに、閾値ｔｈ，ｔｌを、ｔｈ＝ＭＡＸ−Ｒ／３、ｔｌ＝ＭＩＮ＋Ｒ／３と固定的に決め、これら閾値ｔｈ，ｔｌで分類される代表値ａ，ｂを、a＝（ｔｈ＋MAX）／２、ｂ＝（ｔｌ＋MIN）／２と固定的に定めている。この非特許文献１の手法でＰＣ画像を圧縮すると、視認可能なアーティファクトが生じるおそれがある。
【０００３】
非特許文献１以外の３レベルＢＴＣが提案されている（非特許文献２参照）。この非特許文献２では、いったん２レベルＢＴＣで求めた代表値ａ２，ｂ２を利用して３レベルＢＴＣの閾値を求める。より具体的には、まず２つの閾値ｔ１，ｔ２を、ｔ１＝(３×ｂ２＋ａ２)／４、ｔ２＝(３×ａ２＋ｂ２)／４を計算し、これら２つの閾値ｔ１，ｔ２により画素データを３つのグループに分類し、各グループの平均値を代表値とする。これら代表値を初期値として、繰り返し計算を行って最適な閾値と代表値を求める。
【０００４】
この非特許文献２の場合も、閾値や代表値が固定的に決められるため、特にＰＣ画像では視認可能なアーティファクトが生じうる。
【０００５】
非特許文献１，２以外の３レベルＢＴＣが提案されている（非特許文献３参照）。この非特許文献３では、画素データの中央値を中心として等間隔に３レベルを生成する。この場合の閾値ｔ１，ｔ２は、ｔ１＝ｃ−ｓ／２、ｔ２＝ｃ＋ｓ／２で表される。画素値分布のヒストグラムによるＭＳＥエラーを目的関数として最適化して繰り返し計算を行い、最終的な閾値を決定する。
【０００６】
非特許文献３の手法は、最終的な閾値を決定するまでに繰り返し計算を行わなければならないため、計算が煩雑になるという問題がある。。
【０００７】
上述したいずれの技術も、ＰＣ画像を処理すると、画質の劣化が視認されるという問題がある。特に、ウインドウの枠や、バナー部分、エラー表示パネルや文字入力プロンプト部分など、白黒のコントラストが大きく、背景や文字を含めて３値以上の画素データが近接配置されている場合に、比較的大きな領域で偽色が生じてしまう。また３レベルＢＴＣは代表値が２個から３個へ増加するので、圧縮率が２レベルＢＴＣよりも低下するという問題もある。
【非特許文献１】Alsaka & Lee 1990] Y. A. Alsaka, D. A. Lee. “Three Level Block Truncation Coding,” IEEE, Proceedings 1990 Southastcon, p.421.
【非特許文献２】Efrati 1991] N. Efrati, H. Liciztin. “Classified block truncation coding-vector quantization: An edge sensitive image compression algorithm,” Signal Processing: Image Communication 3 (1991) 275-283, Elsevier Science Publisher.
【非特許文献３】Mor 1992] I. Mor, Y. Swissa, H. B. Mitchell. “A fast nearly optimum equi-spaced 3-level block truncation coding algorithm,” Signal Processing: Image Communication 6 (1994) 397-404, Elsevier Science Publishers.
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、画質を劣化させることなく、効率的に画像データを圧縮可能な画像処理回路を提供するものである。
【課題を解決するための手段】
【０００９】
本発明の一態様によれば、複数の色情報からなる画像データを輝度データと色差データとに変換する色情報変換手段と、隣接する複数画素からなる画素ブロックのそれぞれごとに、前記画素ブロック内の複数画素の輝度データの差分と色差データの差分とのそれぞれが所定の閾値を超えたか否かを判定する活動量検出手段と、前記活動量検出手段により前記所定の閾値を超えたと判定された前記画素ブロック内の複数画素の輝度データまたは色差データに対応するｍ個（ｍは３以上の整数）の代表値を生成して第１の符号化処理を行い、前記活動量検出手段により前記所定の閾値を超えなかったと判定された前記画素ブロック内の複数画素の輝度データまたは色差データに対応するｎ個（ｍは２以上の整数で、ｎ＜ｍ）の代表値を生成して第２の符号化処理を行う符号化手段と、を備えることを特徴とする画像処理回路が提供される。
【発明の効果】
【００１０】
本発明によれば、画質を劣化させることなく、効率的に画像データを圧縮できる。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照しながら、本発明の一実施形態について説明する。
【００１２】
図１は本発明の一実施形態による画像処理装置の概略構成を示すブロック図である。図１の画像処理装置は、液晶パネル（ＬＣＤ）１に画素データを供給することを目的としており、タイミングコントローラ２とソースドライバ３とを備えている。タイミングコントローラ２とソースドライバ３はそれぞれ別個のＩＣで構成されることが多いが、両者を一つのＩＣで構成したり、あるいは、タイミングコントローラ２を複数のＩＣで構成したり、ソースドライバ３を複数のＩＣで構成してもよい。
【００１３】
タイミングコントローラ２は、ＲＧＢデータ送信回路４を有する。ＲＧＢデータ送信回路４は、ソースドライバ３に対してＲＧＢの画素データを供給する。なお、ＲＧＢの画素データの代わりに、補色（ＹＭＣ）の画素データを供給してもよい。以下では、一例として、ＲＧＢの画素データを供給する例を説明する。
【００１４】
ソースドライバ３は、ＲＧＢデータ受信回路５と、ＹＣＣ変換回路６と、ＢＴＣ符号化回路７と、フレームメモリ８と、ＢＴＣ復号化回路９と、ＲＧＢ変換回路１０と、ＬＣＤ駆動回路１１とを有する。
【００１５】
ＲＧＢデータ受信回路５は、タイミングコントローラ２内のＲＧＢデータ送信回路４が送信した画素データを受信する。ＹＣＣ変換回路６は、ＲＧＢの画素データを輝度データと色差データとに変換する。ＢＴＣ符号化回路７は、ＹＣＣ変換回路６にて変換された輝度データと色差データに基づいて画素ブロックごとに画像圧縮を行い、符号化データを生成する。生成された符号化データはフレームメモリ８に記憶される。画像圧縮を行う際には、複数画素からなる画素ブロック内の各画素の輝度データと色差データを代表的な値に集約させるＢＴＣアルゴリズムを採用する。
【００１６】
ＢＴＣ復号化回路９は、フレームメモリ８に記憶された符号化データに対して復号化処理を行って、輝度データと色差データに変換する。ＲＧＢ変換回路１０は、ＢＴＣ復号化回路９にて生成された輝度データと色差データをＲＧＢの画素データに変換する。ＬＣＤ駆動回路１１は、ＢＴＣ復号化回路９にて生成されたＲＧＢの画素データを液晶パネル１内の各信号線に供給する制御を行う。
【００１７】
本実施形態の特徴的な構成は、ソースドライバ３内のＢＴＣ符号化回路７、フレームメモリ８およびＢＴＣ復号化回路９である。以下、これらの回路の構成および動作を詳述する前に、本実施形態の動作原理を説明する。
【００１８】
図２はソースドライバ３内のＹＣＣ変換回路６とＢＴＣ符号化回路７の処理動作を示すフローチャートである。まず、ＲＧＢデータを輝度データおよび色差データＹＣＣ（Ｙは輝度データ、Ｃｒ、Ｃｂは色差データであるが、略してＹＣＣと表記する）に変換する（ステップＳ１）。ＹＣＣに変換する理由は、視覚特性に合ったデータに変換することで、画質の向上を図るためである。このような変換は一般的であり、その詳細な変換式は省略する。
【００１９】
色差データは０を中心にプラス方向とマイナス方向に分布するので、プラス側への適切な変換を行って、画素値が０〜２５５の範囲に入るように調整する。若しくは、マイナスデータを処理可能なハードウェアを採用してもよい。この場合、色差データをプラス側に変換する処理は不要となる。このような手法は一般的であり、詳細な説明は省略する。以降に説明するステップＳ２〜Ｓ５は、輝度データと色差データのそれぞれについて行われる。
【００２０】
次に、複数画素からなる画素ブロックごとに、画素ブロック内の活動量を計算する（ステップＳ２）。この処理は、後述する２つのＢＴＣアルゴリズムのいずれかを選択するために、処理対象の画素ブロックの性質を調べるために行われる。
【００２１】
処理対象の画素ブロック内での画像値の変化が激しいと、画像値そのものの精度を必要としなくなる。例えば「０」の画素の隣に「２５５」の画素があった場合、この「２５５」の値が圧縮により「２４５」になったとしても、０→２５５と０→２４５の画素値の変化量の違い（１０）を視覚的に大きく認識することはできない。
【００２２】
一方、「０」と「１」のわずかな違いであっても、単一画素ではなく、いくつかの集団としての領域（平坦な領域）で、例えば画素値「０」をもつ領域が１００画素で、画素値「１」を持つ領域が１００画素の場合には、その差「１」を認識できる。
【００２３】
このように、人間の視覚は、画像の変化により認識の度合が変わってしまう。そこで、このような画像の変化量をここでは「活動量」と呼んで、ＢＴＣアルゴリズムの選択判断の基準とする。活動量の詳しい説明は後述する。
【００２４】
次に、画素ブロック内の活動量が予め定めた閾値より小さいか否かを判定する（ステップＳ３）。小さい場合には、処理対象の画素ブロックは平坦な領域と考えられるため、微妙な違いを認識可能な２レベルＢＴＣアルゴリズムを選択する。２レベルＢＴＣアルゴリズムは、４×４画素ブロック内の１６個の画素データを、値の大きい８ビットからなる上代表値ａ２と、値の小さい８ビットからなる下代表値ｂ２とに置き換えて、画素ブロックを１６ビットで表現する。
【００２５】
一方、画素ブロック内の活動量が閾値以上であれば、各画素値の精度があまり要求されないと考えられるため、高圧縮率を実現可能で画素値の急激な変化にも対処可能な３レベルＢＴＣアルゴリズムを選択する。３レベルＢＴＣアルゴリズムは、４×４画素ブロック内の１６個の画素データを、値の大きい５ビットからなる上代表値ａ３と、中間の値の５ビットからなる中間代表値ｂ３と、値の小さい５ビットからなる下代表値ｃ３とに置き換えて、画素ブロックを１６ビットで表現する。
【００２６】
なお、画像圧縮のアルゴリズムは、上述した２レベルＢＴＣと３レベルＢＴＣに限定されるものではなく、圧縮率と画質を考慮に入れて圧縮アルゴリズムを用意すればよい。また、画素ブロックも４×４画素に限定されるものではなく、各画素のビット数も８ビット等に限定されない。
【００２７】
また、図２では２種類のＢＴＣに分類しているが、３種類以上のＢＴＣに分類してもよい。分類するＢＴＣの数が増えるほど画質向上が図れる。というのは、より多くの代表値を利用することで、より忠実に画像データを復元できるからである。その一方、保存すべきデータ量は増加し、圧縮率が低下してしまうので、多ければよいというものでもない。
【００２８】
上述した２レベルＢＴＣを採用する利点は、平坦な画像の場合に、自然に８ビット精度を確保できることがある。代表値を８ビットとしてもビットマップ情報量を比較的少なくすることができ、圧縮率を１／４程度に確保しつつ、８ビットという高精度をも達成できる。
【００２９】
図３はステップＳ２で計算される活動量を説明する図である。図３では、４×４画素からなる画素ブロック内の各画素の画素値を数値で表し、画素値の差分を計算する画素同士を矢印で示している。例えば、右下の隣り合う２つの画素の画素値は「２」と「２５５」である。これら２画素の画素値の差分は２５５−２＝２５３である。
【００３０】
画像の変化は、水平方向と垂直方向で起こりうるため、図示のように２方向の矢印が存在し、一つの画素ブロック内には、水平方向と垂直方向のそれぞれに１２個の矢印が存在する。これら矢印の位置での画素値の差分をそれぞれ計算して、そのうちの最大値を活動量として定義する。
【００３１】
活動量を決定する手法としては、最大値を取る手法の他に、差分の平均を取ったり、各種の高次統計的モーメントを計算したり、最頻値やメディアンなどを用いたり、種々考えられる。以下では、一例として最大値を活動量として選択して、その値をモードフラグとして保持しておく。
【００３２】
図４は２レベルＢＴＣアルゴリズムを説明する図であり、４×４画素からなる画素ブロック内の各画素の画素値を数値で表している。この例では、各画素が８ビットの画素値（０〜２５５５）を有する。図４の画素ブロック内の画素値の平均は、(146+149+152+156+97+122+144+147+89+90+135+145+85+92+99+120)/16=1968/16=123である。
【００３３】
この平均値１２３を閾値として、１２３よりも値の大きい画素値をもつ画素（１４６、１４９、…など８個を上グループと呼ぶ）と、１２３よりも値の小さい画素値をもつ画素（９７、１２２、…など８個を下グループと呼ぶ）との２つのグループに画素を分類する。
【００３４】
下グループの画素は、そのグループに属する画素値の平均９９ですべての画素値を代表させる。上グループの画素はそのグループに属する画素の平均１４７ですべての画素値を代表させる。
【００３５】
このように、画素ブロック内の１６個の画素値を２つの画素値に集約することで、データの圧縮を行う方法がＢＴＣである。ここでは２つのレベル（下グループの平均９９と上グループの平均１４７）を利用するので、２レベルＢＴＣと呼んでいる。
【００３６】
図５は図４の２レベルＢＴＣアルゴリズムにより得られる符号化データを示す図である。図示のように、上グループの画素は「１」、下グループの画素は「０」に置き換えられ、下グループの画素値を表す８ビットデータａ２「01100011」と、上グループの画素値を表す８ビットデータｂ２「10010011」と、画素ブロック内の画素値を左から右に、上から下に順に並べたビットマップｍ２「1111001100110000」とを含む３２ビットの符号化データが得られる。
【００３７】
画像圧縮を行わない場合、各画素が８ビットであるため、１６×８＝１２８ビットが必要であるが、これが３２／１２８＝１／４のデータ量に削減できる。このデータ量の削減は、輝度データと色差データのそれぞれで同程度に行えるため、輝度データと色差データの全体では、９６／３８４ビット＝１／４のデータ量に削減できる。
【００３８】
上述した処理手順で符号化された符号化データは、図１のフレームメモリ８に格納された後、ＢＴＣ復号化回路９により復号されて、輝度データと色差データが生成される。図６は図５の符号化データの復号結果を示す図である。ＢＴＣ復号化回路９は、図５の符号化データに含まれるビットマップｍ２「1111001100110000」の「１」を「１４７」に、「０」を「９９」にそれぞれ変換する。
【００３９】
次に、３レベルＢＴＣアルゴリズムについて説明する。圧縮率の向上のために、空間的なデータを間引く技術が広く知られている。ここでは４２０と呼ばれる間引き処理を説明するが、これに限定されるわけではなく、４２２などその他の間引き処理も選択可能である。
【００４０】
一般に輝度データＹは、データ変化が激しく、画素ブロック内の各画素の画素値をそのまま保持するのが望ましい。すなわち、輝度データＹについては間引き処理を行わない。
【００４１】
図７は画素ブロック内の輝度データＹの一例を示している。３レベルＢＴＣアルゴリズムでは、各画素の輝度値が３つの代表的な輝度値「０」、「１２８」、「２５５」に集約される。
【００４２】
一方、色差データ（ＣｒとＣｂ）は、輝度データと比較して空間的に鈍感であり、例えば図８のように４個の隣り合う画素を１つの値で代表しても、それほど目立たない。画素ブロック内の２×２画素の画素値が図７の左上のように、（１２８，２５５，０，１２８）であったとすると、これら４画素の平均は、（１２８＋２５５＋０＋１２８）／４＝１２８となる。したがって、この場合、図８の左上のように、４画素とも１２８として扱う。したがって、画素ブロック全体では、図９に示すように、見かけ上２×２画素として扱うことができる。
【００４３】
３レベルＢＴＣアルゴリズムでは、２種類の閾値（小さい閾値を表す下閾値と、大きい閾値を表す上閾値）を用意する。ここでは、一例として、下閾値＝８５、上閾値＝１７０とし、小さい代表値を表す下代表値（データａ３）＝０、中間の代表値を表す中間代表値（データｂ３）＝１２８、大きい代表値を表す上代表値（データｃ３）＝２５５とする。
【００４４】
図１０は３レベルＢＴＣアルゴリズムで生成される符号化データの一例を示す図であり、図７の輝度データＹに対応する符号化データを示している。「０」を取る下代表値は「０」、「１２８」を取る中間代表値は「１」、「２５５」を取る上代表値は「２」に変換される。
【００４５】
符号化データは、下代表値を表すデータａ３と、中間代表値を表すデータｂ３と、上代表値を表すデータｃ３と、画素ブロック内の各画素の輝度値を表す１６個のビットマップデータｍ３とで構成される。
【００４６】
上述した２レベルＢＴＣアルゴリズムでは、データａ２，ｂ２を８ビットで表現したが、３レベルＢＴＣアルゴリズムでは圧縮率の向上のため、データａ３，ｂ３，ｃ３を６ビットで表現する。例えば、下代表値を表すデータａ３は「000000」とし、下位２ビットを省略する。同様に、中間代表値を表すデータｂ３は「010000」とし、上代表値を表すデータｃ３は「111111」とし、いずれも下位２ビットを省略する。
【００４７】
下位２ビットを省略して符号化データを生成しても、ＢＴＣ復号化回路９で復号化処理を行う際には、下位２ビット「００」を付け加えて輝度データと色差データを生成する。
【００４８】
図１０の符号化データ内のビットマップデータｍ３は、「1222012200120001」となり、３値を取る。したがって、実際にはこれら３値を２ビットで表現し、「０」は「００」に、「１」は「０１」に、「２」は「１０」に符号化する。このため、ビットマップデータｂ３は、２×１６＝３２ビットを必要とする。
【００４９】
結局、符号化データの全体では、６＋６＋６＋３２＝５０ビットを必要とする。なお、ビットマップデータｂ３を３２ビットよりも少なくする工夫をすることで、ビット数を５０ビットよりも削減できる。
【００５０】
図１１は３レベルＢＴＣアルゴリズムで生成される色差データの符号化データの一例を示す図である。図１１の符号化データは図８および図９の色差データに対応している。図１１では、色差データの下代表値（データａ３）、中間代表値（データｂ３）および上代表値（データｃ３）のそれぞれを５ビットで表現している。このように、データａ３，ｂ３，ｃ３のビット数を削減することで、色差データの精度が悪くなるが、圧縮率の向上が図れる。
【００５１】
図８および図９で説明したように、画素ブロック内の２×２画素の色差データを等しくする間引き処理を行うため、画素ブロック内の各画素の色差データを並べたビットマップデータｍ３は、わずか４値「１２０１」になり、各値は２ビットで表現される。したがって、符号化データの全体のビット数は、５＋５＋５＋２×４＝２３ビットになる。
【００５２】
図１２は図７に示す輝度データと図８に示す色差データにより得られる符号化データのすべてを示す図である。図示のように、ＢＴＣ符号化回路７により、１種類の輝度データと２種類の色差データが得られる。これらのデータの総ビット数は、５０＋２３×２＝９６ビットである。
【００５３】
符号化する前は、画素ブロック内の１６画素のそれぞれが輝度データと２種類の色差データを持ち、これらデータがいずれも８ビットで構成されるため、１６×３×８＝３８４ビットであるため、圧縮率は９６／３８４＝１／４になる。
【００５４】
３レベルあるのに圧縮率が下がらないのは、ビット数を減らすことと、間引き処理を行うことによる。図２で説明したように、画素ブロック内の活動量が大きく、粗い精度でも実用上問題ない場合に、３レベルＢＴＣアルゴリズムで画像圧縮を行うため、ビット数の削減や間引き処理を行っても画質の劣化は視認されない。このように効率的に画像データを圧縮する。
【００５５】
図１３はＢＴＣ符号化回路７で生成された符号化データのデータ形式とフレームメモリ８の構造を説明する図である。図示のように、符号化データは、２レベルＢＴＣアルゴリズムと３レベルＢＴＣアルゴリズムのどちらで符号化したかを示すモードフラグを先頭ビットに設け、その後に輝度データＹに対応する符号化データと、２種類の色差データＣｒ，Ｃｂに対応する符号化データとを順に配置している。例えば、モードフラグが「０」の場合は２レベルＢＴＣアルゴリズムで符号化された符号化データを示し、「１」の場合は３レベルＢＴＣアルゴリズムで符号化された符号化データを示す。前者の場合、例えば自然画像であり、後者の場合、例えばＰＣ画像である。
【００５６】
フレームメモリ８には、４×４画素からなる画素ブロックを単位として符号化データが記憶されるため、画素ブロック単位でのランダムアクセスを容易に行うことができる。
【００５７】
図１３では、同じ画素ブロック内の輝度データと色差データに対して共通のモードフラグを設ける例を説明したが、輝度データと色差データに別個のモードフラグを設けて、それぞれ別個の値を設定できるようにしてもよい。また、３種類以上のＢＴＣアルゴリズムを設ける場合には、２ビット以上のモードフラグを設ければよい。
【００５８】
図１４はＢＴＣ符号化回路７による符号化処理により約１／４のデータ量に圧縮されることを模式的に示す図である。画像圧縮前の画像データは、画素ブロックを単位として、１６×３×８＝３８４ビットあるが、これが画像圧縮後は、９６ビットに圧縮され、それに１ビットのモードフラグを加えて、計９７ビットになる。９７／３８４＝約１／４に圧縮されることになる。
【００５９】
図１５は図１のＢＴＣ復号化回路９の処理手順の一例を示すフローチャートである。まず、符号化データの先頭ビットであるモードフラグ（図１３参照）の値を読み出す（ステップＳ１１）。そして、モードフラグが「０」、すなわち２レベルＢＴＣアルゴリズムで符号化されているか否かを判定する（ステップＳ１２）。モードフラグが「０」の場合には、２レベルＢＴＣアルゴリズムによる復号化処理を行い（ステップＳ１３）、モードフラグが「１」の場合には、３レベルＢＴＣアルゴリズムによる復号化処理を行う（ステップＳ１４）。
【００６０】
ステップＳ１３またはＳ１４の処理が終了すると、輝度および色差データＹＣＣをＲＧＢの画素データに変換する（ステップＳ１５）。
【００６１】
図１６は２レベルＢＴＣアルゴリズムで符号化された符号化データを復号化する処理を説明する図である。符号化データは、１ビットのモードフラグと、下代表値を示す８ビットのデータａ２と、上代表値を示す８ビットのデータｂ２と、画素ブロック内の各画素の輝度データを示すビットマップデータｍ２とを含んでいる。ビットマップデータｍ２の後に、色差データを示すビットマップデータが続くが、図１６では省略している。
【００６２】
図１６の符号化データは、モードフラグが「０」であり、２レベルＢＴＣアルゴリズムで符号化されていることがわかる。このため、代表値は２つだけである。データａ２，ｂ２の値により、下代表値が「９９」、上代表値が「１４７」であることがわかる。
【００６３】
ＢＴＣ復号化回路９は、ビットマップデータｍ２の「０」を「９９」に、「１」を「１４７」に置き換える。この結果、図１６の下側に示すように、画素ブロック内の輝度データが生成される。
【００６４】
画素ブロック内の輝度データと色差データのＢＴＣアルゴリズムが同じである場合には、画素ブロックについて１個のモードフラグだけを設ければよいが、輝度データと色差データが個別にＢＴＣアルゴリズムを選択する場合には、各データごとに別個のモードフラグを設ける必要がある。例えば、画素ブロック内で輝度の変化は激しいが、色はそれほど変化しない場合などである。この場合、色差データに関しては２レベルＢＴＣアルゴリズムを用いて、画質の向上を図ることができる）。
【００６５】
図１７および図１８は３レベルＢＴＣアルゴリズムで符号化された符号化データを復号化する処理を説明する図である。図１７は輝度データの復号化処理、図１８は色差データの復号化処理を示している。
【００６６】
図１７に示すように、輝度データの符号化データは、１ビットのモードフラグと、下代表値を示す６ビットのデータａ３と、中間代表値を示す６ビットのデータｂ３と、上代表値を示す６ビットのデータｃ３と、画素ブロック内の各画素の輝度データを示すビットマップデータｍ３とを含んでいる。
【００６７】
ビットマップデータｍ３の後で、図１８に示す色差データＣｒ，Ｃｂの符号化データが続く。色差データの符号化データは、Ｃｒの下代表値を示す５ビットのデータａ４と、Ｃｒの中間代表値を示す５ビットのデータｂ４と、Ｃｒの上代表値を示す５ビットのデータｃ４と、画素ブロック内の各画素のＣｒについてのビットマップデータｍ４と、Ｃｂの下代表値を示す５ビットのデータａ５と、Ｃｂの中間代表値を示す５ビットのデータｂ５と、Ｃｂの上代表値を示す５ビットのデータｃ５とを有する。
【００６８】
なお、図１８では、Ｃｂの符号化データを省略しているが、データ構造はＣｒと同じである。
【００６９】
図１７および図１８の符号化データは、モードフラグが「１」であり、３レベルＢＴＣアルゴリズムで符号化されていることがわかる。モードフラグは、輝度データＹと色差データＣｒ，Ｃｂで共用されるが、輝度データＹと色差データＣｒ，Ｃｂが互いに異なるＢＴＣアルゴリズムを採用する場合には、個別にモードフラグを設ければよい。
【００７０】
輝度データＹを復号化する場合、図１７に示すように、ビットマップデータ中の「０」を下代表値ａ３＝０に変換し、「１」を中間代表値ｂ３＝１２８に変換し、「２」を上代表値ｃ３＝２５２にそれぞれ変換する。
【００７１】
色差データＣｒを復号化する場合、図１８に示すように、ビットマップデータ中の「０」を下代表値ａ４＝０に変換し、「１」を中間代表値ｂ４＝１２８に変換し、「２」を上代表値ｃ４＝２４８にそれぞれ変換する。色差データＣｂについても、色差データＣｒと同様の手順で復号化される。
【００７２】
上述した３レベルＢＴＣアルゴリズムでは、中間代表値を適切に選択しないと画質が劣化するおそれがある。図１９は中間代表値の値により画質が変化する例を説明する図である。図１９（ａ）は、「グラフ  エリア」という文字列の背景が灰色に色づけされ、文字列自体は黒の例を示している。
【００７３】
この場合、２レベルだけで十分に符号化できるようにも思えるが、実際には４×４画素からなる画素ブロックは画像の境界線に沿って配置されないため、画素ブロック内の一部に背景部分を含む場合がありえる。このような場合、灰色を含めて３レベルが必要となる。単純に白の画素値と黒の画素値を三等分した閾値を灰色用の中間代表値として定めると、実際の灰色とは異なった色レベルになり、図１９（ｂ）に示すようにアーチファクトとして視認されてしまう。
【００７４】
自然画像では、このような誤差は局所的であり、それほど目立たない。ところが、ＰＣ画面等の人工的に生成された画像の場合、比較的大きな範囲でアーチファクトが視認され、画質の劣化が目立ってしまう。
【００７５】
図２０は本実施形態で新たに提案する中間代表値の設定手法を説明する図である。本実施形態は、３レベルＢＴＣアルゴリズムで用いられる中間代表値を、画像内の灰色のレベルに適切に合わせることを目的とする。中間代表値を設定する際、実際の画像内の画素値の分布を考慮に入れず、最大画素値と最小画素値の範囲から機械的に中間代表値を設定すると、どうしても、中間代表値が実際の画像と食い違ってしまう。そこで、本実施形態では、実際の画像の画素値の分布を考慮に入れて中間代表値を設定するために、白と黒に相当する最大画素値と最小画素値の画素データを除いて、平均値を取る（図２０のＡＶＥ）。この除去作業により、最大画素値と最小画素値の画素の数に影響されることなく、灰色レベルをより正確に計算することができる。
【００７６】
このようにして、最大画素値と最小画素値を除いて計算した平均値ＡＶＥと、最大画素値および最小画素値との中間の画素値を閾値Th_high，Th_lowとする。また、閾値により区分けされるそれぞれの範囲で平均値を計算し、代表値Val_plus, Val_mid, Val_minusを選定する。
【００７７】
３レベルしか存在しない場合には、代表値は元のデータの値そのままになる。したがって、精度が向上することがわかる。
【００７８】
上述した図２０の手法で中間代表値を設定して符号化を行った符号化データを復号すると、図２１（ｂ）に示すように、文字列の周囲に灰色のアーチファクトが視認されなくなり、図１９に比べて明らかに画質が向上する。
【００７９】
なお、補足すれば、画像として写真のような自然画像を符号化する場合、最小画素値や最大画素値も含めて平均値を計算した方が統計的に優れた画質が得られる。このため、自然画像の場合は最小画素値、最大画素値を除くという行為は逆に望ましいものとは思えない。本実施形態は、自然画像ではなく、ＰＣ画像という人工的な画像を符号化する場合に適した手法である。
【００８０】
本発明者は、自然画像を符号化する場合は、主に２レベルＢＴＣで処理するのが望ましいと考えている。自然画像では、本明細書で定義した「活動量」は統計的に小さくなる場合が大部分であり、ごくまれに３レベルＢＴＣで処理されてしまうかもしれない。しかし、これは極めて例外的なケースである。また、自然画像では変化が埋もれて認識しにくい。したがって、完全ではないが、統計的には十分に人間の視覚を騙しているといえよう。またＰＣ画像は実際には６ビット精度である場合が多く、Ｙ信号を６ビット、色差信号を５ビットとして圧縮率を高めても画像劣化が少ない。この意味で３レベルＢＴＣの代表値のビット長を削減できることも理解できる。
【００８１】
次に、図２０の手法で生成した２種類の閾値Th_high，Th_lowと、３種類の代表値Val_plus, Val_mid, Val_minusを選択する処理手順について説明する。図２２は３レベルＢＴＣアルゴリズムで用いる閾値と代表値を選択する処理手順を説明するフローチャートである。
【００８２】
まず、画素ブロック内の画素の最大画素値ＭＡＸと最小画素値ＭＩＮを計算する（ステップＳ２１）。次に、図２０で説明したように、最大画素値ＭＡＸと最小画素値ＭＩＮを除いて、２種類の閾値Th_high，Th_lowを計算する（ステップＳ２２）。ここでは、Th_low＜Th_highとする。
【００８３】
次に、閾値Th_highとTh_lowを用いて、最終的に３つの代表値V_plus、V_mid、V_minusを定める（ステップＳ２３）。この詳細は図２３で説明する。
【００８４】
ここで、画素ブロック中の各画素の画素値をｘとする。ステップＳ２４では、画素値ｘと２種類の閾値Th_high，Th_lowを比較して、場合分けする。値ｘがTh_highより大きい場合には、代表値としてV_plusを選択する（ステップＳ２５）。値ｘがTh_lowとTh_highの間にある場合には、代表値としてV_midを選択する（ステップＳ２６）。最後に値ｘがTh_lowよりも小さい場合には、代表値としてV_minusを選択する（ステップＳ２７）。このようにして、代表値が決定される。
【００８５】
図２３は図２２のステップＳ２２の閾値を計算する処理手順を示すフローチャートである。まず、変数ＳＵＭ，ＣＮＴを「０」に初期化する（ステップＳ３１）。次に、処理対象の画素の画素値が最大画素値ＭＡＸか最小画素値ＭＩＮかを判定する（ステップＳ３２）。判定がＮＯであれば、変数ＳＵＭに画素値を足し合わせ、変数ＣＮＴを「１」だけカウントアップする（ステップＳ３３）。
【００８６】
次に、画素ブロック内の全画素の処理を行ったか否かを判定し（ステップＳ３４）、まだ処理を行っていない画素が存在すればステップＳ３２に戻り、全画素の処理が終わった場合には、画素値の平均ＡＶＥ＝ＳＵＭ／ＣＮＴを計算する（ステップＳ３５）。
【００８７】
次に、平均値ＡＶＥと最小画素値ＭＩＮとの差分Δ１と、平均値ＡＶＥと最大画素値ＭＡＸとの差分Δ２を計算する（ステップＳ３６）。差分Δ１，Δ２は以下の（１）式で計算される。
Δ１＝ＡＶＥ−ＭＩＮ、Δ２＝ＭＡＸ−ＡＶＥ    …（１）
【００８８】
次に、以下の（２）式により、閾値Th_highを計算する（ステップＳ３７）。
Th_high＝ＭＡＸ−Δ２／２    …（２）
【００８９】
次に、以下の（３）式により、閾値Th_lowを計算する（ステップＳ３８）。
Th_low＝ＭＩＮ＋Δ２／２    …（３）
【００９０】
以上により、２種類の閾値Th_high，Th_lowが計算される。
【００９１】
なお、最大画素値ＭＡＸと最小画素値ＭＩＮを除いて平均値を計算することに関連して、最大画素値ＭＡＸと最小画素値ＭＩＮを一定のマージンΔ３、Δ４（＞０）だけ変更した値MAX−Δ３、ＭＩＮ＋Δ４を、上述した各式のＭＡＸやＭＩＮの代わりに使用してもよい。この場合はＥＱ（等号）ではなくＧＥ（grater than or equal to:以上）またはＬＥ（less than or equal to:以下）を利用して実現すればよい（後の図３８を参照）。
【００９２】
図２４は代表値を決定する処理手順を示すフローチャートである。画素値を３つの範囲に区分けして、それぞれの範囲に属する画素値の総和を計算するための変数Sum_high、Sum_mid、Sum_lowと、これら３つの範囲内の画素の個数をカウントするための変数Cnt_high、Cnt_mid、Cnt_lowとを設け、これら変数を「０」に初期設定する（ステップＳ４１）。
【００９３】
次に、画素ブロック内の全画素について以下のステップＳ４２〜Ｓ４６の処理を行う。ステップＳ４２では、画素値Ｘが閾値Th_high以上か否かを判定し、判定がＹＥＳであれば、変数Sum_highにその画素値Ｘを足し合わせるとともに、変数Cnt_highを「１」カウントアップする（ステップＳ４３）。
【００９４】
ステップＳ４２の判定がＮＯであればステップＳ４４に進み、画素値Ｘが閾値Th_low以上か否かを判定し、判定がＹＥＳであれば、変数Sum_midにその画素値Ｘを足し合わせるとともに、変数Cnt_midを「１」カウントアップする（ステップＳ４５）。
【００９５】
ステップＳ４４の判定がＮＯであればステップＳ４６に進み、変数Sum_lowにその画素値Ｘを足し合わせるとともに、変数Cnt_lowを「１」カウントアップする（ステップＳ４６）。
【００９６】
画素ブロック内の全画素についてステップＳ４２〜Ｓ４６の処理を行った場合には、変数Sum_high、Sum_mid、Sum_lowと変数Cnt_high、Cnt_mid、Cnt_lowに基づいて、代表値V_plus、V_mid、V_minusを計算する（ステップＳ４７）。
【００９７】
図２５は図２４のステップＳ４７の処理に用いる変数Cnt_high、Cnt_mid、Cnt_lowと代表値V_plus、V_mid、V_minusとの対応関係を示す図である。図２５において、変数Cnt_high、Cnt_mid、Cnt_lowの値は、「０」のときを「０」と表示し、「０」以外のときを「１」と表示してある。
【００９８】
例えば、最初の行では、変数Cnt_high、Cnt_mid、Cnt_lowがすべてが「０」であり、図２４の処理を行っていないことを示している。このような論理的な不定値の場合であっても、実際にはなんらかの都合のよい（矛盾を起こさない）値を割当てることで、ハードウェアの出力が不用意に不定値にならないようにすべきである。
【００９９】
図２５からわかるように、必ずしも３レベルの代表値が得られるわけではない。変数Cnt_high、Cnt_mid、Cnt_lowのいずれかが「０」の場合には、レベル数を減らすのが自然である。また、変数Cnt_high、Cnt_mid、Cnt_lowのすべてが「０」の場合には代表値が割り当てられないため、画素値がどのような値であっても特に問題ない。
【０１００】
本実施形態では、２レベルＢＴＣアルゴリズムと３レベルＢＴＣアルゴリズムの選択について説明しているが、本実施形態はＮレベル（例えば４レベル）ＢＴＣアルゴリズムに拡張することも可能である。このとき、最終データ量がほぼ一定になるようにすることが望ましい。
【０１０１】
例えば４レベルＢＴＣアルゴリズムを考えるとすると、次のような構成が考えられる。輝度Ｙに関しては、代表値を４ビットにし、４ビット×４個の代表値＝１６ビット、ビットマップデータは２ビット×１６画素＝３２ビット、２種類の色差データ（Ｃｒ、Ｃｂ）に関しては、代表値が４ビットで、４ビット×４個の代表値×２＝３２ビット、ビットマップデータは２ビット×４画素×２＝１６ビットとなる。
【０１０２】
結局、４レベルＢＴＣアルゴリズムの場合、合計１６＋３２＋３２＋１６＝９６ビットになる。これにモデルフラグビットの２ビットを加算すると、総計９８ビットとなる。この場合でも、圧縮率はほぼ１／４を確保できている。これも一例であり、図２０で説明した原理で処理動作を行う限り、レベル数には特に制限はない。
【０１０３】
図２６はフレームメモリ８の圧縮能力を示す図である。ＱＶＧＡサイズの画像からＶＧＡサイズの画像に拡大する場合を想定して圧縮能力を見積もる。図２６の第一列ＣＯＬ１はメモリ圧縮能力を示している。より詳しくは８ビット画像での圧縮能力を示しており、６ビット画像の場合は６／８倍に換算する必要がある。なお、圧縮能力とは（入力画像のサイズ）／（圧縮された出力画像のサイズ）であり、この逆数の（出力画像のサイズ）／（入力画像のサイズ）を圧縮率という。
【０１０４】
第二列ＣＯＬ２は、６ビットＱＶＧＡ画像を扱い、ＱＶＧＡ−ＲＡＭを含むドライバ１の圧縮率を示している。第三列ＣＯＬ３は、６ビットＶＧＡ画像をスルー画像として扱い、ＱＶＧＡサイズのＲＡＭを含むドライバ２の圧縮率を示している。第四列ＣＯＬ４は、８ビットＱＶＧＡ画像を扱い、ＱＶＧＡ−ＲＡＭを持つドライバ３の圧縮率を示している。
【０１０５】
図２６は、ドライバ１〜３において、ＱＶＧＡからＶＧＡへ画像サイズが拡大した場合の圧縮能力の変化を示している。以下では、ドライバ１の場合を例に取って説明するが、ドライバ２とドライバ３の場合も同様の手順で圧縮能力が計算される。
【０１０６】
まず、第二行から第五行までは、それぞれの圧縮能力を想定した場合のＩＣチップ面積を計算している。第一行目は、計算の基礎となるデータを示している。現在のチップ面積を１．０として、相対比を計算する。このＩＣ中のフレームメモリ８の相対比は０．３２である。したがって、ＱＶＧＡからＶＧＡに画面サイズを拡大すると４倍になり、０．３２×４＝１．２８のメモリサイズとなる。このため、フレームメモリ８以外の部分０．６８は不変として、０．６８＋１．２８＝１．９６と予想される。これが何も圧縮を行わない場合であり、ほぼ２倍へ面積が増加してしまい、コスト的に厳しい状況となる。
【０１０７】
次に圧縮した場合を説明する。メモリ圧縮能力が４の場合を説明する。図２６では、８ビット画像の場合のメモリ圧縮能力を示している。１．２８に増加したフレームメモリ８が、１．２８／４／０．７５となり、結果的に１．１１倍となる。
【０１０８】
以上の計算では、圧縮のために追加する回路を計算に入れていない。これは、フレームメモリ８が非常に大きく、相対的に圧縮符号化と復号化に伴う回路は無視できるとして計算したからである。実際には少しではあるが増加はするが、問題ない。このような計算を順次行っていくと、図２６の表が得られる。ドライバ３の場合は、８ビットであるので、そのままメモリ圧縮能力で割ればよい。
【０１０９】
一方、図２７はＱＶＧＡサイズの画像をそのまま圧縮した場合の圧縮能力を示す図である。この場合は、２割から３．６割程度の削減が可能である。（メモリ圧縮能力が４の行。）
【０１１０】
図２６と図２７を比較すればわかるように、ＶＧＡサイズの画像の方がより圧縮能力が高いが、ＱＶＧＡサイズの画像の場合でも２〜３割の十分に高い圧縮能力が得られる。例えば、６ビット→４ビットへ変換するＦＲＣの技術では、圧縮能力２の場合に相等するので、１割〜２．５割である。
【０１１１】
図２６と図２７より、本実施形態によれば、従来よりも十分に高い圧縮能力が得られることがわかる。
【０１１２】
上記では、主に圧縮率１／４（圧縮能力４）の場合について説明したが、図２６と図２７には他の圧縮率（圧縮能力）についても記載されている。このように、本実施形態は、圧縮率が１／４に限定的に考えるのはなく、他の圧縮率を与える他のＢＴＣの組み合わせも選択可能である。
【０１１３】
図１では、ソースドライバ３の内部にＢＴＣ符号化回路７を設ける例を示したが、ＢＴＣ符号化回路７をタイミングコントローラ２の内部に設けてもよい。図２８は図１の変形例を示す画像処理回路の概略構成を示すブロック図である。図２８の画像処理回路は、タイミングコントローラ２とソースドライバ３の内部構成が図１とは異なっている。
【０１１４】
図２８のタイミングコントローラ２は、ＹＣＣ変換回路６、ＢＴＣ符号化回路７およびＢＴＣデータ送信回路を有する。また、図２８のソースドライバ３は、ＢＴＣデータ受信回路と、フレームメモリ８と、ＢＴＣ復号化回路９と、ＲＧＢ変換回路１０と、ＬＣＤ駆動回路１１とを有する。
【０１１５】
図１と図２８では、タイミングコントローラ２とソースドライバ３で送受されるデータの種類が異なる。図２８の場合、タイミングコントローラ２で符号化された符号化データがソースドライバ３に送信される。符号化データは、元の画像データを圧縮したデータであり、タイミングコントローラ２とソースドライバ３との間で送受されるデータ量を図１よりも削減できる。したがって、ＥＭＩ対策を図ることができる。また、伝送周波数も低減でき、タイミングコントローラ２とソースドライバ３の送受信系の回路を高速動作させなくて済み、回路規模を縮小できる。
【０１１６】
ソースドライバ３の内部では、符号化処理を行う必要がなく、復号化処理だけを行えばよいため、ソースドライバ３の構成を図１よりも大幅に簡略化できる。このソースドライバ３の構成は、従来のソースドライバ３の構成とは互換性はないが、タイミングコントローラ２とソースドライバ３間の送受信系の回路を最適化できるという大きな特徴があり、次世代のソースドライバ３等に採用される可能性が高い。
【０１１７】
タイミングコントローラ２とソースドライバ３との間で画像データまたは符号化データを伝送する際、図２９に示すように、タイミングコントローラ２側に４Ｈメモリ２１を設け、ソースドライバ３側に１６組のレジスタを設けてデータの受け渡しを行ってもよい。
【０１１８】
携帯電話等に用いられる小型の液晶パネル１は一つのソースドライバ３で液晶パネル１を駆動しているが、ＰＣやＴＶ等の大型の液晶パネル１の場合、複数のソースドライバ３で液晶パネル１を駆動することもありうる。このような場合、図２９の構成では、ソースドライバ３側に４Ｈメモリを設けなくて済むため、画像処理装置全体として必要な４Ｈメモリの数を削減できる。
【０１１９】
図２９は一例であり、タイミングコントローラ２とソースドライバ３のそれぞれにどのような回路を割り振るかは必要に応じて任意に変更すればよい。
【０１２０】
図３０は図１のＢＴＣ符号化回路７の内部構成を示すブロック図である。図３０を用いてホスト側から送られてきた画像データをフレームメモリ８に記憶する処理動作を説明する。
【０１２１】
ＢＴＣ符号化回路７は、４Ｈメモリ２１と、アドレス生成回路２２と、ＢＴＣ処理入力部２３と、ＢＴＣ符号処理部２４と、ＢＴＣ処理出力部２５と、ＦＭローアドレス生成器２６と、ＦＭカラムアドレス生成器２７とを有する。
【０１２２】
４Ｈメモリ２１は、ＹＣＣ変換回路６で生成された４行分の輝度データと色差データを一時的に記憶する。アドレス生成回路２２は、スタートページ情報を生成するＳＰ生成器３１と、エンドページ情報を生成するＥＰ生成器３２と、スタートカラム情報を生成するＳＣ生成器３３と、エンドカラム情報を生成するＥＣ生成器３４とを有する。
【０１２３】
ＳＰ生成器３１は、先頭のローアドレスを生成し、ＥＰ生成器３２は先頭のローアドレスと対角上の最後のローアドレスを生成する。ＳＣ生成器３３は画素ブロックの先頭のカラムアドレスを生成し、ＥＣ生成器３４は先頭のカラムアドレスと対角上の最後のカラムアドレスを生成する。
【０１２４】
以下では、説明の簡略化のために、ＳＣ、ＥＣ、ＳＰ、ＥＰは４×４ブロックに適合するように仮定して説明する。すなわち、ＳＣ＝４×（整数１）、ＥＣ＝４×（整数２）＋３、ＳＰ＝４×（整数３）、ＥＰ＝４×（整数４）＋３と表されるものとする。
【０１２５】
フレームメモリ８は、４×４画素ブロックの並びを相対的に保持したままで、符号化データを記憶する。ＢＴＣ圧縮により、４×４画素ブロックのデータが所定の固定サイズＳＩＺＥ（たとえば、上の例では、９７ビット）になるとする。これをＢＴＣセルサイズと呼ぶこととする。
【０１２６】
フレームメモリ８のカラムアドレスＣＡとローアドレスＲＡを与える画像の範囲を、ＭＳＣ、ＭＥＣ、ＭＳＰ、ＭＥＰで指定する。ここで、ＭＳＣはフレームメモリ８のスタートカラム、ＭＥＣはフレームメモリ８のエンドカラム、ＭＳＰはフレームメモリ８のスタートページ、ＭＥＰはフレームメモリ８のエンドページである。
【０１２７】
さて、フレームメモリ８に記憶される符号化データを構成するビット列が１つのローに配置されていると仮定する。符号化データを複数のローに分散して配置することも可能であるが、一般性を失わないので、まずは簡略化のために１つのローに配置すると仮定して説明する。
【０１２８】
このとき、ＭＳＣ＝ＳＩＺＥ×（整数１）、ＭＥＣ＝ＳＩＺＥ×（整数２）、ＭＳＰ＝（整数３）、ＭＥＰ＝（整数４）となる。したがって、ＦＭカラムアドレス生成器２７は、フレームメモリ８でのカラムアドレスとして、ＳＩＺＥの大きさの符号化データ（圧縮データ）を書き込むために、ＭＳＣ、ＭＳＣ＋１、…、２×ＭＳＣ、２×ＭＳＣ＋１、…、（整数２−整数１）×ＭＳＣ、（整数２−整数１）×ＭＳＣ、…、（整数２）×ＭＳＣ−１のアドレスを順番に生成する必要がある。
【０１２９】
ここでは、４×４単位で書き込みを行うようにしても一般性を失わないので、４×４単位で書き込むを行うと仮定する。このとき、ＳＩＺＥ単位でアドレスを生成していくことになる。すなわち、ＭＳＣ、ＭＳＣ＋１、…、ＭＳＣ＋ＳＩＺＥ−１を最初の単位として生成する。次には、２×ＭＳＣ、２×ＭＳＣ＋１、…、２×ＭＳＣ＋ＳＩＺＥ−１が生成される。以下同様である。ＦＭローアドレス生成器２６も同様に考えると、最初に（整数３）、次に（整数３）＋１、…、（整数４）と順番に生成される。
【０１３０】
ＦＭカラムアドレス生成器２７は、符号化データのＳＩＺＥ分だけいつも選択するため、カラムセレクト信号のすべてをアドレスデコードする必要はない。最初のＮ×ＭＳＣの部分だけデコードし、他の対応するカラムセレクト信号はこれをそのまま利用すればよい。
【０１３１】
ＦＭローアドレスは、４×４画素で常に同じであるため、ローセレクト信号が１つで十分であることは明らかであるが、フレームメモリ８の構成を変更したより一般的な場合には同様な議論ができることも補足しておく。
【０１３２】
書き込み・読み出しされるデータ量は、符号化による圧縮により、ほぼ１／４になっている。このことは、仮に元のデータのままでフレームメモリ８への書き込みと読み出しを行う場合、４倍の速度で読み書きを行うか、または４倍のデータＩ／Ｏ幅で読み書きを行う必要があることを意味している。
【０１３３】
したがって、データ圧縮により、フレームメモリ８に対するアクセス速度を遅くでき、またはＩ／Ｏ幅を削減できる。
【０１３４】
例えば、フレームメモリ８に対するアクセス速度を遅くすることを選択したとする。この場合、ＶＧＡメモリにアクセスする時間が従来のＱＶＧＡメモリにアクセスする時間と同じ程度で済むことを意味しており、フレームメモリ８の制御を現状と同様の速度で行うことができる。したがって、データ圧縮効果は、メモリシステム自体の性能改善効果もある。
【０１３５】
図３０のＢＴＣ処理入力部２３は、４Ｈメモリ２１に記憶されたデータを１画素ブロック分を単位として読み出して、１画素分ずつＢＴＣ符号処理部２４に供給する。
【０１３６】
ＢＴＣ符号処理部２４は、図２のステップＳ２〜Ｓ５の処理を行う部分であり、活動量検出器４１と、２レベルＢＴＣ処理部（BTC-val2）４２と、３レベルＢＴＣ処理部（BTC-val3）４３と、２レベルＢＴＣ処理部４２で生成された符号化データと３レベルＢＴＣ処理部４３で生成された符号化データのいずれかを選択するセレクタ４４とを有する。
【０１３７】
活動量検出器４１は、処理対象の画素ブロック内の活動量を検出し、検出した活動量と所定の閾値とを比較した結果を示す信号を出力する。
【０１３８】
２レベルＢＴＣ処理部４２は、２レベルＢＴＣアルゴリズムに従って画素ブロックごとに符号化データを生成する。３レベルＢＴＣ処理部４３は、３レベルＢＴＣアルゴリズムに従って画素ブロックごとに符号化データを生成する。セレクタ４４は、活動量検出器４１で検出された活動量が閾値を超えるか否かにより、２レベルＢＴＣ処理部４２と３レベルＢＴＣ処理部４３のいずれかで生成された符号化データを選択する。
【０１３９】
ＢＴＣ処理出力部２５は、ＢＴＣ符号処理部２４内のセレクタ４４で選択された符号化データを一時的に記憶する。記憶された符号化データは、フレームメモリ８に記憶される。フレームメモリ８内の記憶場所は、ＦＭローアドレス生成器２６で生成されたローアドレスとＦＭカラムアドレス生成回路２２で生成されたカラムアドレスにより指定される。
【０１４０】
次に、元画像を９０度回転させて表示させる場合の処理について説明する。ＴＶ画面は横長であるのに対して、携帯電話の画面は縦長である。したがって、携帯電話の画面にＴＶ画面などの横長の画像を表示したい場合は、携帯電話側で画像を９０度回転して、縦横を変化させる必要がある。
【０１４１】
画像圧縮を行わない場合には、発生されるカラムアドレスとローアドレスを例えば、左下から右上へ順番にアクセスして画像データをフレームメモリ８中に記憶すればよい。
【０１４２】
ところが、本実施形態の場合、画素ブロックを単位として画像データを圧縮するため、圧縮された符号化データをそのまま利用して回転させようとしても、回転情報がデータ位置に反映されておらず、問題となる。
【０１４３】
そこで、本実施形態では、圧縮データについても、画像回転情報を利用して、元の画像との整合性を保つ必要がある。
【０１４４】
図３１は画像を回転させる場合の処理手順を説明する図である。図３１の元画像は例えばＴＶ画面の画像である。この画像は、図示のように、左から右に、上から下に順にスキャンされて、この順にデータ（輝度および色差データ）がＢＴＣ符号化回路７に送られてくる。このデータは、ＢＴＣ処理を行うために４Ｈメモリ２１に記憶される。
【０１４５】
ＢＴＣ処理入力部２３は、４×４画素ブロックを単位として４Ｈメモリ２１からデータを読み出す。読み出されたデータは図１の処理手順で符号化データに変換される。この符号化データの中には、画素ブロック内の各画素の情報を示すビットマップデータが含まれている。
【０１４６】
このビットマップデータの並び順は、元の画像のままである。例えば、図３１の例では、画素ブロックの左から右に、上から下に向かって、「0000111111122222」というビットマップデータがある。
【０１４７】
画像を９０度回転させるには、図３１の画素ブロックＢ１内のデータの並びを画素ブロックＢ２のような並びに変更する必要がある。
【０１４８】
画像を９０度回転する場合、符号化データ中の代表値は変化せず、ビットマップデータの並びだけが変化する。また、９０度回転させたデータに対してＢＴＣ符号化処理を行っても、ＢＴＣ符号化処理を行った後に９０度回転させても、得られる結果は同じである。
【０１４９】
そこで、本実施形態では、ＢＴＣ符号化処理を行った後に、ビットマップデータの並び替えを行うことで、画像の回転処理を行う。
【０１５０】
なお、画像の回転処理は、ＢＴＣ復号化処理を行う際に行ってもよい。しかし、一般に、フレームメモリ８のサイズは限られており、回転処理を行った状態でフレームメモリ８に記憶する方が望ましい。メモリの縦横比に適合した回転方向を選択して回転済みデータを保存することで、メモリ領域を余分に用意する無駄をなくすことができる。
【０１５１】
あるいは、ＢＴＣ符号化回路７にデータを入力する際に回転処理を行うことも考えられる。この場合、画素データでの回転であるから、８ビットのデータをまとめて回転操作を行うことになる。したがって、位置情報１ビットで回転操作を行うビットマップでの回転の方が、よりハードウェアの削減を期待できる。
【０１５２】
図３２はＢＴＣ符号化回路７で行う９０度回転処理を説明する図である。以下では、フレームメモリ８に符号化データを記憶する際に指定するアドレスをＦＭアドレスと呼ぶ。図３２を用いてＦＭアドレスがどのように指定されるかを説明する。
【０１５３】
元々の画素ブロックＢ１のアドレスを、ｘ＝カラムアドレス１とｙ＝ローアドレス１とする。この画素ブロックＢ１を回転すると、画素ブロックＢ２が得られる。この画素ブロックＢ２のアドレスは、ｘ＝カラムアドレス２＝ローアドレス１、ｙ＝ローアドレス２＝−カラムアドレス１となる。ここで、マイナスｙ方向で順番に画素をアクセスする。
【０１５４】
元々の画像のアドレスでスタートページ情報ＳＰ、エンドページ情報ＥＰ，スタートカラム情報ＳＣ、エンドカラム情報ＥＣを指定する場合（オリジナル座標モード）と、９０度回転後のアドレスでスタートページ情報ＳＰ、エンドページ情報ＥＰ、スタートカラム情報ＳＣ、エンドカラム情報ＥＣを指定する場合（表示座標モード）が考えられる。
【０１５５】
オリジナル座標モードでは一度、９０回転した後の座標値で解釈しなおす必要がある。表示座標モードでは、９０度回転後の座標値をタイミングコントローラ２側で計算してから送ってくるが、オリジナル座標モードでは、まだこれが行われず、元のアドレスがあるだけである。オリジナル座標モードでのスタートローアドレスを４×Ｎ１、エンドローアドレスを４×Ｎ２−３、スタートカラムアドレスを４×Ｎ３、エンドカラムアドレスを４×Ｎ４−３とする。すなわち、ローアドレスは４×Ｎ１→４×Ｎ２−３、カラムアドレスは４×Ｎ３→４×Ｎ４−３と変化する。９０度回転すると、ローアドレスは４×Ｎ３→４×Ｎ４−３、カラムアドレスは４×ＮＮ−４×Ｎ１→４×ＮＮ−（４Ｎ２−３）と変化する。
【０１５６】
ここで、４×ＮＮは元画像のＸ方向サイズである。したがって、ＦＭｘ座標初期値はＮ３、最終ＦＭｘ座標はＮ２となる。同様に、ＦＭｙ座標初期値はＮＮ−Ｎ１、最終ＦＭｙ座標値はＮＮ−Ｎ２となる。このようなフレームメモリ８のアドレスは、図３２のＦＭローアドレス生成器２６とＦＭカラムアドレス生成回路２２で生成される。
【０１５７】
図３３はフレームメモリ８のアドレス生成の処理手順を示すフローチャートである。このフローチャートでは、フレームメモリ８のｘ座標をｆｘ、ｙ座標をｆｙとする。
【０１５８】
まず、ｆｘをＮ３、ｆｙをＮＮ−Ｎ１に初期設定する（ステップＳ５１）。次に、ＢＴＣ符号化を行うが（ステップＳ５２）、画素ブロックは４×４画素のサイズであるため、フレームメモリ８のアドレスはもとのアドレスの１／４単位で処理されている。
【０１５９】
次に、ｘ座標ｆｘが最終ｘ座標ｆｘに一致したか否かを判定する（ステップＳ５３）。最終ｘ座標ｆｘの値はＮ３に設定されている。ステップＳ５３の判定がＮＯであれば、ｘ座標ｆｘを「１」プラスしてステップＳ５２のＢＴＣ符号化処理を行う。
【０１６０】
ステップＳ５３の判定がＹＥＳであれば、ｙ座標ｆｙが最終ｙ座標ｆｙに一致したか否かを判定する（ステップＳ５５）。最終ｙ座標ｆｙはＮＮ−Ｎ２に設定されている。ステップＳ５５の判定がＮＯであれば、ｙ座標ｆｙを「１」プラスしてステップＳ５２のＢＴＣ符号化処理を行う。
【０１６１】
図３３の処理をハードウェアで実現する場合、ＢＴＣ符号化処理を行う機能ブロックを一つ用意する場合や、ｘ座標ｆｘとｙ座標ｆｙの値に応じて別個の機能ブロックでＢＴＣ符号化処理を行う場合など、複数の構成が考えられるが、いずれを採用してもよい。
【０１６２】
９０度の回転処理を行う場合、ステップＳ５４，Ｓ５６の処理内容が変更になり、回転操作と対称操作に応じてｘｙ座標ｆｘ，ｆｙが変更される。また、初期ＦＭアドレスと最終ＦＭアドレスも同様に回転操作と対称操作に応じて変わる。それぞれの場合（８種類）で、場合分けして対処すればよく、それに応じて図３３を修正すればよい。
【０１６３】
一方、活動量検出器４１の動作は回転前後で変わらない。その理由は、画素の隣り合う位置関係は回転により損なわれないためである。回転によってｘ方向とｙ方向の関係は変わるかもしれないが、回転前後で検出される活動量は変化しない。
【０１６４】
次に、フレームメモリ８への符号化データの書き込みについて説明する。フレームメモリ８に記憶される符号化データの元となる画像データは、ホスト側からインタフェースを経由して送られてくる。このとき、一般には、画像の水平ラインの順番にシーケンシャルに送られてくる。したがって、４ｘ４画素ブロックの処理を行うには４Ｈメモリ２１が必要となる。当然、ホスト側でデータ順序を入れ替えて送ることも可能であるが、ここでは入れ替えをしない場合を説明する。
【０１６５】
まず、最初の３行分のデータを４Ｈメモリ２１に保存する。４行目に４ｘ４ブロックのデータが揃ったときに、ＢＴＣ圧縮処理が可能になる。したがって、ＢＴＣ符号化回路７は、４クロック毎に処理を行う。
【０１６６】
４ｘ４画素ブロックのデータはＢＴＣ処理のために、図３０に示すＢＴＣ処理入力部２３に入力される。このＢＴＣ処理入力部２３は１６入力のレジスタであり、１画素ブロック内の１６画素のデータ（輝度および色差データ）が記憶される。
【０１６７】
ＢＴＣ符号処理部２４で符号化された符号化データは、ＢＴＣ処理出力部２５に一時的に記憶される。このＢＴＣ処理出力部２５も１６入力のレジスタで構成される。これらレジスタは、フレームメモリ８に記憶する順番に並んでおり、ＦＭカラムアドレス生成回路２２とＦＭローアドレス生成器２６により生成された、カラムセレクト信号とローセレクト信号にしたがって、データラインよりＦＭに書き込まれる。
【０１６８】
図３４はフレームメモリ８に符号化データを記憶する際の処理動作を概念的に示す図である。図３４では、メモリセルの隣接関係を強調するために、カラムセレクト信号をメモリアレイの位置に隣接して配置しているが、実際には後述するようにデータセレクタにセレクタカラムが入力される。
【０１６９】
カラムセレクト信号は、１画素ブロックの符号化データすべてについて共通である。すなわち、１画素ブロックの符号化データを記憶するすべてのメモリセルに対して、共通のカラムセレクト信号が供給される。同様に、１画素ブロックの符号化データを記憶するすべてのメモリセルに対して、共通のローセレクト信号が供給される。これにより、フレームメモリ８は符号化データを記憶するのに適した構成になる。
【０１７０】
次に、フレームメモリ８およびその周辺回路の内部構成をより詳細に説明する。図３５はフレームメモリ８およびその周辺回路の内部構成を示すブロック図である。図３５のフレームメモリ８は、カラムアドレスラッチ５１と、データセレクタ５２と、センスアンプ５３と、メモリセルアレイ５４と、ローアドレスラッチ５５と、ローデコーダ５６と、ローバッファ５７とを有する。
【０１７１】
カラムアドレスラッチ５１は、図３０に示すＦＭカラムアドレス生成回路２２で生成されたカラムアドレスをラッチする。ローアドレスラッチ５５は、図３０に示すＦＭローアドレス生成器２６で生成されたローアドレスをラッチする。
【０１７２】
メモリセルアレイ５４はフレームメモリ８の本体である。メモリセルアレイ５４に記憶される符号化データは、データセレクタ５２に入力される。図３６はデータセレクタ５２の内部構成を示すブロック図である。図３６に示すように、データセレクタ５２は、カラムデコーダ６１と、複数のパストランジスタ群６２とを有する。ＦＭカラムアドレス生成回路２２により生成されたカラムアドレスはカラムアドレスラッチ５１でラッチされ、カラムデコーダ６１に入力される。
【０１７３】
カラムデコーダ６１は、複数のパストランジスタ群６２のうち一つをオンする。これにより、データセレクタ５２に入力された符号化データは、オン状態のパストランジスタ群６２を通過して、メモリセルアレイ５４内の一部のビット線６３に供給される。
【０１７４】
データセレクタ５２は、符号化データ分のビット数のパストランジスタ群６２を同タイミングでオンして、一つの符号化データ６４をまとめて複数のメモリセルに書き込む点に特徴がある。図３５には、２組のパストランジスタ群６２が図示されており、それぞれのパストランジスタ群６２は隣り合う２つの画素ブロックの符号化データ６４をそれぞれ対応するビット線６３に供給する。
【０１７５】
ローアドレスについては、ＦＭローアドレス生成器２６で生成されたローアドレスがローアドレスラッチ５５でラッチされた後、ローデコーダ５６でデコードされて、ローアドレス信号が生成される。
【０１７６】
図３７は図３６とは異なる構成のデータセレクタ５２の内部構成を示すブロック図である。図３７のデータセレクタ５２は、符号化データ６４を入力する箇所の結線が図３６と異なっている。図３７の場合、各パストランジスタ群６２に対応して別個の符号化データ６４が入力される。
【０１７７】
図３７の構成を実現するには、ＢＴＣ符号化回路７を複数設けて、これらＢＴＣ符号化回路７をデータセレクタ５２に並列接続する必要がある。
【０１７８】
図３７の構成による利点は、ＢＴＣ符号化回路７の出力配線を画素ブロック単位で集約させる必要がなく、ＢＴＣ符号化回路７とフレームメモリ８との間の配線長を短縮できる。配線を集約させると、各配線の配線長にばらつきが生じ、配線長が余計に長くなってしまう。したがって、図３７のような構成も可能性として考えられる。
【０１７９】
なお、図３６の構成と図３７の構成を組み合わせたような構成も考えられる。例えば、輝度データおよび色差データを単位として配線をまとめたり、複数の画素ブロックを単位として配線をまとめてもよい。このような場合、ハードウェア面積と処理スピードを考慮して、具体的な構成を検討するのが望ましい。
【０１８０】
図３８は図３６と図３７とは異なる構成のデータセレクタ５２の内部構成を示すブロック図である。図３８の場合、個々のパストランジスタが個別にオンオフ制御されるため、符号化データが１ビット単位でフレームメモリ８に記憶される。なお、図３８の変形例として、図３９と図４０に示すように符号化データの複数ビットを単位としてフレームメモリ８に記憶することも考えられる。
【０１８１】
次に、フレームメモリ８に記憶された符号化データを復号する処理動作について説明する。フレームメモリ８に記憶された符号化データの読み出しは、書き込みとは逆の処理を行うことにより実現される。
【０１８２】
図４１は符号化データの復号化処理を説明する図である。書き込みと同様に、スタートカラム情報を生成するＳＣ生成器３３と、エンドカラム情報を生成するＥＣ生成器３４と、ＦＭカラムアドレス生成回路２２とを用いて、フレームメモリ８のカラムセレクト信号を生成する。
【０１８３】
また、スタートページ情報を生成するＳＰ生成器３１と、エンドページ情報を生成するＥＰ生成器３２と、ＦＭローアドレス生成器２６とを用いて、フレームメモリ８のローセレクト信号を生成する。
【０１８４】
これらセレクト信号から、フレームメモリ８により圧縮された画像データを読み出す。これは４×４画素ブロックの画像データであり、先に説明した復元方法により復元される。これは４×４画素ブロック単位であるので、ライン単位に直すために、４Ｈメモリ２１を用いて順序を入れ替える。
【０１８５】
４Ｈメモリ２１には、３Ｈ分まで記憶動作を行い、４Ｈ目で１画素ブロック分のデータが揃うと、そのデータをホスト側に転送することが可能となる。
【０１８６】
フレームメモリ８から読み出された符号化データは、一時的にＦＭ出力部７１に記憶される。ＢＴＣ復号化回路９は、モード検出部７２と、２レベルＢＴＣ処理部（DBTC-val2）７３と、３レベルＢＴＣ処理部（DBTC-val3）７４と、セレクタ７５とを有する。モード検出部７２は、符号化データの先頭ビットにより、２レベルＢＴＣアルゴリズムと３レベルＢＴＣアルゴリズムのどちらで符号化されたかを判別する。
【０１８７】
セレクタ７５は、モード検出部７２の検出結果に基づいて、２レベルＢＴＣ処理部７３で復号化された復号化データと、３レベルＢＴＣ処理部７４で復号化された復号化データとのいずれかを選択する。セレクタ７５で選択された復号化データは、復号化出力部７６を経て４Ｈメモリ２１に記憶される。
【０１８８】
なお、ここでは一例として、画素ブロック分の符号化データを同時に読み出したが、多くの電流が同時に流れることは望ましくないとの観点から、一度に読み出さずに、順々にビット毎に読み出してもよい。このときは、読み出しを行うたびにアドレスを生成する必要がある。
【０１８９】
次に、画像を回転する場合の復号化処理の動作を説明する。図４２は画像を回転する場合の復号化処理を説明する図である。図４２の右側には、フレームメモリ８から読み出された符号化データに含まれるビットマップデータＢ３の一例を図示している。ＢＴＣ復号化回路９は、このビットマップデータを順序を変えずに出力する。順序を変えない理由は、すでにＢＴＣ符号化回路７にて回転処理を行った上で符号化データを生成しているためである。これにより、復号化出力部７６に復号化データ７６が記憶される。この復号化データは、データの並び順を変えることなく４Ｈメモリ２１に記憶される。以上により、表示させたい９０度回転した画面が表示できる。ここで、フレームメモリ８に記憶されている符号化データ中のビットマップデータはすでに回転されているため、復号化処理の中で回転処理を行う必要はない。
【０１９０】
図４３は９０度回転処理を行う場合のフレームメモリ８のアドレス生成を説明する図である。上述したように、符号化データ中のビットマップデータはすでに回転された後のデータである。したがって、回転情報と走査情報を独立に扱える。
【０１９１】
画像の回転にかかわらず、ＬＣＤ駆動するラインへ出力する順番は走査情報として決めてよい。上→下または下→上の２通りが可能である。フレームメモリ８へ書き込みの場合、ｆｙがＮＮ−Ｎ１→ＮＮ−Ｎ２とマイナス方向（下→上）に順にアクセスしていったが、ここではｆｙとしてＮＮ−Ｎ２→ＮＮ−Ｎ１という選択も走査情報により強制的に設定することも可能である。同じくｆｘに関しても右→左、左→右のアクセス順序を決められる。
【０１９２】
図４４はスタートカラム情報ＳＣとエンドカラム情報ＥＣが整数の４倍でない場合の処理動作を説明する図である。ここでは、スタートページ情報ＳＰ＝エンドページ情報ＥＰ＝４×（整数）と簡単化して説明する。
【０１９３】
また、ＳＣとＥＣが異なる場合には、必要な回数だけ繰り返せばよいので、強い条件であるが、ＳＣ＝ＥＣ＝４×（整数）＋（余り）と仮定する。（余り）は、４を法としたときの余りであり、（余り）＝１、２、３である。ここでは、例えば（余り）＝１とする。
【０１９４】
図４４では、（余り）に対応して４Ｈメモリ２１中から、１Ｈライン分のメモリが選択される。選択されたデータは、例えば従来のＬＣＤドライバのシフトレジスタ７７に保存され、液晶パネル１を実際に駆動するために駆動出力される。もちろん、走査設定情報により順序を変える。
【０１９５】
図４５はＢＴＣ復号化回路９の詳細な内部構成を示すブロック図である。以下では輝度データの復号化を行う例を説明するが、色差データＣｒ，Ｃｂについても同様の手順で復号化を行うことができる。
【０１９６】
例えば、輝度データＹとして、モードフラグビット（以下モード信号と略する）＝０の場合をまず説明する。下代表値ａ２＝「01100011」（値９９）、上代表値ｂ２＝「10010011」（値１４７）とし、ビットマップｍ２＝「1111001100110000」とする。（図５を参照。）
【０１９７】
ＢＴＣ復号化回路９は、モード検出回路８１と、データ切り分け回路８２と、第１保持回路８３と、第２保持回路８４と、第３保持回路８５と、第４保持回路８６と、ビット長調整回路８７と、データ参照回路８８と、セレクタ８９とを有する。
【０１９８】
データ切り分け回路８２は、輝度データの符号化データを、下代表値ａ２を表すビット列と、上代表値ｂ２を表すビット列と、ビットマップデータｍ２を表すビット列とに切り分ける。切り分けた各ビット列は第１保持回路８３、第２保持回路８４および第４保持回路８６にそれぞれ保持される。なお、モードフラグが「０」の場合には第３保持回路８５は使用されない。
【０１９９】
セレクタ８９は、ビットマップデータｍ２の各ビットが「０」か「１」かによって、下代表値ａ２と上代表値ｂ２のいずれかを選択する。セレクタ８９は、ビットマップデータの各ビットに対応して設けられている。
【０２００】
ビット長調整回路８７は、モードに応じてビット長を設定する。データ参照回路８８は、モードによりビットマップデータのデータ長が異なることから、適切な位置からデータを参照するために設けられる。
【０２０１】
セレクタ８９は、ビット長調整回路８７の出力と、データ参照回路８８の出力と、モード検出回路８１の出力とに基づいて、下代表値ａ２と上代表値ｂ２のいずれかを選択する。
【０２０２】
図４６はモードフラグが「１」の場合の輝度データの復号化処理を説明する図である。データ切り分け回路８２は、下代表値ａ３、中間代表値ｂ３、上代表値ｃ３を切り出して、それぞれ第１〜第４保持回路８６に保持する。
【０２０３】
例えば図１７のように、ａ３＝「000000」（値０）、ｂ３＝「010000」（値１２８）、ｃ３＝「111111」（値２５２）、ｍ３＝「1222012200120001」とする。ビット長調整回路８７は、例えば、ａ３のデータは６ビットであるので、ＬＳＢの２ビットを０として補って、「00000000」＝値０を再構成する。同様に、ｂ３も「010000000」＝値１２８、ｃ３も「11111100」＝値２５２を再構成する。
【０２０４】
なお、ここではＬＳＢとして００を与えたが、これに限定する必要はなく、適切に四捨五入できるように工夫できる。ビットマップは１２２…のように１つの値が３進で表現されているので、２ビット単位で０＝００、１＝０１、２＝１０をもとに切り出す必要がある。そこで、ビット長調整回路８７により適切なビットマップ情報を取り出す。
【０２０５】
例えば、先頭の「１」については、先頭２ビット「０１」を第４保持回路８６から取り出す。次の「２」に関しては、先頭から３ビット〜４ビット目「１０」を第４保持回路８６から取り出す。ビット長調整回路８７は、このようなビットマップのデコードを行う。
【０２０６】
セレクタ８９には、例えば、ａ３＝「00000000」、ｂ３＝「01000000」、ｃ３＝「11111100」が選択するべきデータとして入力される。セレクタ８９の選択信号が「０１」（中間を選択）であるとすると、「01000000」が選択出力される。モード信号１は３つの中から選択するという動作を規定している。このように、二つのＢＴＣ復号器を統合した一つのＢＴＣ復号器を、「マージした復号器」と呼ぶ。図４７はマージした復号器８０を有するＢＴＣ復号化回路９の内部構成を示す図である。図４７は、図４１と異なり、一つの復号器のみを有する。
【０２０７】
図４８は図４５のビット長調整回路８７の内部構成を示すブロック図である。図示のように、ビット長調整回路８７は、モード検出回路８１の出力データに基づいて「０」を選択するか否かを切り替える２つのスイッチ９１を有する。ビット長調整回路８７の出力は常に８ビットであり、そのうちの２ビット（ＬＳＢ側から７ビット目と８ビット目）を強制的に「０」にするか否かをモード検出回路８１の出力データに基づいて切り替える。
【０２０８】
図４９は図４５のデータ参照回路８８の入力部分の接続関係を示す図である。３２本のデータ線はビットマップデータの出力端子にそれぞれ接続されている。データ参照回路８８の入力Ａには、モード０の場合のビットマップデータ１ビットが入力される。データ参照回路８８の入力ＢとＣには、モード１の場合のビットマップデータ２ビットが入力される。
【０２０９】
図５０はデータ参照回路８８の内部構成を示すブロック図である。図示のように、データ参照回路８８は、３入力Ａ，Ｂ，Ｃから２出力ＳＥＬ１，ＳＥＬ２を選択するスイッチ９２と、このスイッチを制御するスイッチ制御回路９３とを有する。
【０２１０】
図５１はスイッチ制御回路９３の切替動作を示す図である。図示のように、スイッチ制御回路９３は、モードフラグが「０」のときにＳＥＬ１に入力Ａが伝達され、モードフラグが「１」のときにＳＥＬ１，２にそれぞれ入力Ｂ，Ｃが伝達されるようにスイッチ９２を切り替える。
【０２１１】
図４９に示す複数のデータ参照回路８８の各入力Ａには、ビットマップデータの０ビット目、１ビット目、…が順に入力される。これは、モードフラグが「０」の場合には、１６ビットのビットマップデータが先頭から順番に３２ビットのラッチに格納されることに合わせている。ただし、これは一例であり、第４保持回路８６へのビットマップデータの格納方法は種々考えられる。例えば、一つおきに格納してもよい。（先頭から０ビット目、２ビット目、４ビット目のように偶数番目にデータを入れ、奇数番目にはデータを入れず、固定値としておく。このように３２ビットを用いて１６ビットを格納するする方法は種々ある。）
【０２１２】
一方、モードフラグが「１」の場合には、３２ビットのビットマップデータを順に第４保持回路８６に格納する。これに合わせて、図４９では、２ビットを単位としてＢとＣに入力線がつながっている。バリエーションとして例を追加すると、仮にモ−ドフラグ「０」において一つおきに格納した場合、ＡとＣを事実上一つの信号として取り扱うことができ、図５０と図５１の構成を変更する必要がある。
【０２１３】
図５２は図４５のセレクタ８９の内部構成を示すブロック図である。下代表値、中間代表値および上代表値のそれぞれを選択する３つのトランジスタからなるスイッチＳ１〜Ｓ３と、これらスイッチＳ１〜Ｓ３のオン・オフを制御する切替制御回路９４とを有する。
【０２１４】
図５３は切替制御回路の切替動作を説明する図である。図示のように、モードフラグＭ＝０の場合で、SEL2＝０、SEL1＝０の場合には、スイッチＳ１だけをＯＮする。図５３では、ＯＮのスイッチを「１」で表し、ＯＦＦのスイッチを「０」で表している。他のスイッチＳ２、Ｓ３はＯＦＦのままである。これは、２レベルＢＴＣにおいて、下代表値を選択することに対応している。
【０２１５】
第二行では、Ｍ＝０、SEL2＝不定、SEL1＝１の場合であり、スイッチＳ２のみがＯＮする。これは、２レベルＢＴＣにおいて、上代表値を選択することに対応している。
【０２１６】
第三行では、Ｍ＝１、SEL2＝０、SEL1＝０の場合であり、スイッチＳ１のみがＯＮする。これは３レベルＢＴＣにおいて、下代表値を選択することに対応している。
【０２１７】
同様に第四行は、３ベレルＢＴＣにおいて、中間代表値を選択することに対応している。第五行は、３レベルＢＴＣにおいて、上代表値を選択することに対応している。最後の第六行は、３レベルＢＴＣの選択において対応するものがない状態であり、エラーである。
【０２１８】
ＡとＣが同じ場合には、データ参照回路８８は図５４のような回路構成になり、データ参照回路８８内の切替は図５５のようになる。この場合、ＣはいつもＡと同じなので、Ｍによる変化はない。Ｂもモードが０の場合にはドントケアであるから、これをSEL2として扱うことで、SEL1と同様になる。したがってこの場合、スイッチ制御回路９３は不要となる。
【０２１９】
以上の回路により、図４５と図４６の場合に応じて、データを取り扱うことができる。以上では、輝度データＹについてのみ説明したが、色差データＣｒやＣｂについても同様の処理を行うことができる。
【０２２０】
次に、ハードウェアのサイズに関して検討する。輝度データＹに関しては、２レベルＢＴＣで、ａ２、ｂ２は８ビット、ビットマップデータｍ２は１６ビットである。３レベルＢＴＣでは、ａ３、ｂ３、ｃ３は６ビット、ビットマップデータｍ３は３２ビットである。したがって、第１保持回路８３と第２保持回路８４は８ビット、第３保持回路８５は６ビット、第４保持回路８６は３２ビット用意する必要がある。
【０２２１】
次に、上述した図１のＢＴＣ符号化回路７を具体化したハードウェアの構成について説明する。２レベルＢＴＣアルゴリズムと３レベルＢＴＣアルゴリズムで使用する閾値を計算するためには、画素ブロック内の最大値と最小値を計算しなければならない。
【０２２２】
図２２のステップＳ２２では、画素ブロック内の最大値と最小値を検出しているが、この処理はハードウェアで行うことができる。図５６は画素ブロック内の最大値を検出する最大値検出回路１０１の概略構成を示すブロック図、図５７は画素ブロック内の最小値を検出する最小値検出回路１０２の概略構成を示すブロック図である。図５６と図５７は同様の処理動作にて最大値または最小値を検出するため、以下では代表して図５６の構成および処理動作を説明する。
【０２２３】
図５６の最大値検出回路１０１は、４×４画素の画素ブロック内の１６個のデータ（輝度データまたは色差データＣｒまたは色差データＣｂ）を２つずつ比較して、どちらか大きい方を選択する８個の第１最大値検出回路１０３と、これら８個の第１最大値検出回路１０３の出力を２つずつ比較して、どちらか大きい方を選択する４個の第２最大値検出回路１０４と、これら４個の第２最大値検出回路１０４の出力を２つずつ比較して、どちらか大きい方を選択する２個の第３最大値検出回路１０５と、これら２個の第３最大値検出回路１０５の出力のうち大きい方を選択する第４最大値検出回路１０６とを有する。
【０２２４】
図５８は図５６と図５７で検出した最大値ＭＡＸと最小値ＭＩＮに基づいて二つの閾値Th_highとTh_lowを計算する手法を説明する図である。図示のように、図５６と図５７で検出した最大値ＭＡＸと最小値ＭＩＮは、大きい閾値Th_highを計算するTh_high計算部１０７と、小さい閾値Th_lowを計算するTh_low計算部１０８とに入力されて、Th_highとTh_lowが計算される。
【０２２５】
図５９は画素ブロック内の画素値の最大値ＭＡＸと最小値ＭＩＮを除いて画素の平均値を検出する図２２のステップＳ２３の処理を行う平均値検出回路１１０の概略構成を示すブロック図である。図示のように、平均値検出回路１１０は、４×４画素ブロックのデータを入力する画素ブロックデータ入力部１１１と、各画素のデータが最大値ＭＡＸまたは最小値ＭＩＮに一致するか否かを検出する比較回路１１２と、平均値計算回路１１３とを有する。
【０２２６】
平均値計算回路１１３は、最大値MAXと最小値MINを除きつつ、平均値を計算するために、除いた画素数および除いた累積数を階層的に計算することで、１６個すべてについての値を求める。この平均値計算回路１１３は、４階層あり、各階層を単位として計算する。その詳細については後述する。
【０２２７】
図６０は図５９の比較回路１１２に設けられる複数の比較部１１４の内部構成を示すブロック図である。図６０の比較部１１４は、第１比較部１１５と、第２比較部１１６と、出力回路１１７とを有する。第１比較部１１５は、画素ブロック内の画素データＤinを最小値ＭＩＮと比較して、比較結果を示す信号を出力する。第２比較部１１６は、画素ブロック内いの画素データＤinを最大値ＭＡＸと比較して、一致する場合には「１」を出力し、不一致の場合には「０」を出力する。
【０２２８】
出力回路１１７は、画素データＤinが最小値ＭＩＮと一致する場合には、C_MIN＝１、C_MAX＝０、C_MID＝０とする。また、画素データＤinが最大値ＭＡＸと一致する場合には、C_MIN＝０、C_MAX＝１、C_MID＝０とする。また、画素データＤinが最小値ＭＩＮと最大値ＭＡＸのどちらにも等しくない場合には、C_MIN＝０、C_MAX＝０、C_MID＝１とする。この他、出力回路１１７は、画素データＤinをそのままＤoutとして出力する。
【０２２９】
C_MAX、C_MID、C_MINは、最大値MAX、最大値MAXと最小値MINの中間値、最小値MINの場合のカウント数を計算するために、またＤoutは最大値ＭＡＸと最小値ＭＩＮを除く累積値を計算するために、それぞれ図５９の平均値計算回路１１３に入力される。
【０２３０】
上述したように、最大値ＭＡＸと最小値ＭＩＮに余裕をもたせ、ＭＡＸ−Δ３、ＭＩＮ＋Δ４のように、Δ３、Δ４だけ範囲を少し拡大してもよい。この場合、第１比較部１１５と第２比較部１１６で比較処理を行う際に、ＧＥ(greater than or equal to:以上)やＬＥ(less than or equal to: 以下)の条件を付加すればよい。
【０２３１】
図６１は図６０の出力回路１１７の内部構成を示すブロック図である。図６１の出力回路１１７は、C_MAXのカウント値を計算する加算器１２１と、C_MIDのカウント値を計算する加算器１２２と、C_MINのカウント値を計算する加算器１２３と、最大値ＭＡＸと最小値ＭＩＮ以外の画素データＤoutの累積値を計算する加算器１２４とを有する。
【０２３２】
C_MAX1、C_MID1、C_MIN1およびＳ１は図６０の第１比較部１１５から出力され、出力回路１１７に入力される。C_MAX2、C_MID2、C_MIN2およびＳ１は第２比較部１１６から出力され、出力回路１１７に入力される。
【０２３３】
比較回路１１２の出力は平均値計算回路１１３に入力されて、画素ブロック内の画素データが順次累積加算され、１画素ブロック分のC_MAX、C_MID、C_MINと累積値Ｓが計算される。
【０２３４】
図６２は図２２のステップＳ２３における閾値Th_high、Th_lowを検出する閾値検出回路１３０の概略構成を示すブロック図である。図６２の閾値検出回路１３０には、図５９の平均値検出回路１１０から出力されたC_MIDとＳがそれぞれCount_MIDとSumとして入力される。図６２の閾値検出回路１３０は、平均値計算回路１３１と、Th_low計算回路１３２と、Th_high計算回路１３３とを有する。平均値計算回路１３１は、Count_MIDとSumから、平均値ＡＶＥ＝Sum／Count_MIDを計算する。
【０２３５】
図６２の処理は、画素ブロック内の１６個の画素データを対象としているため、Count_MIDは最大でも１５であり、４ビットで表現できるので、この除算は４ビットの除算である。したがって、ハードウェア的には、一般に想定する除算器と比較して小さくて済む。
【０２３６】
Th_low計算回路１３２は、図２０で示したΔ１＝ＡＶＥ−ＭＩＮを計算した後、Th_low ＝ MIN＋Δ１／２を計算する。また、Th_high計算回路１３３は、図２０で示したΔ２＝ＭＡＸ−ＡＶＥを計算した後、Th_high＝MAX−Δ２／２を計算する。
【０２３７】
図６３は、画素ブロック内の各画素値を閾値Th_low、Th_highにより３つのグループに分類し、各グループごとにカウント値と累積値を求める図２３のステップＳ３３の処理を行う回路の概略構成を示すブロック図である。図６３の回路は、画素ブロック内の各画素値を入力する入力回路１４１と、画素ブロック内の各画素値を閾値Th_high，Th_lowと比較する比較回路１４２と、各グループに属する画素のカウント値と画素値の累積値を計算する累積値計算回路１４３とを有する。
【０２３８】
図６４は比較回路１４２内の複数の比較部１４４の内部構成を示すブロック図である。図６４の比較部１４４は、第１比較部１４５と、第２比較部１４６と、出力回路１４７とを有する。第１比較部１４５は、画素ブロック内の画素データＤinが閾値Th_lowより小さいか否かをチェックし、もし小さい場合には「１」を出力し、小さくない場合には「０」を出力する。
【０２３９】
第２比較部１４６は、画素ブロック内の画素データＤinが閾値Th_highより大きいか否かをチェックし、もし大きい場合には「１」を出力し、大きくない場合には「０」を出力する。
【０２４０】
出力回路１４７は、第１比較部１４５と第２比較部１４６の比較結果に基づいて、カウント値C_HI、C_MID、C_LOWを初期化するとともに、データ累積値S_HI、S_MID、S_LOWも初期化する。データDINがTh_lowより低い場合、C_HIとC_MIDは０、C_LOWは１、S_HIとS_MIDは０、S_LOWはDINの値に設定する。データＤＩＮがTh_highより高い場合、C_MIDとC_LOWは０、C_HIは１、S_MID、S_LOWは０、S_HIはＤＩＮを値に設定する。ＤＩＮがTh_lowとTh_highの間にある場合、C_HI、C_LOWは０、C_MIDは１、S_HI、S_LOWは０、S_MIDはDINを値に設定する。このように、カウント値を初期化し、図６３の累積値計算回路１４３にて順次累積加算していく。
【０２４１】
図６５は図６４の出力回路１４７の内部構成を示すブロック図である。図６５の出力回路１４７は、C_HI、C_MID、C_LOW、S_HI、S_MID、S_LOWのそれぞれ計算する複数の加算器１４８を有する。出力回路１４７の出力は累積値計算回路１４３に入力されて、C_HI、C_MID、C_LOW、S_HI、S_MID、S_LOWのそれぞれが累積加算される。
【０２４２】
図６６は図２２のステップＳ２３における代表値V_high、V_mid、V_lowを計算する代表値計算回路１５０の概略構成を示すブロック図である。図６６の代表値計算回路１５０は、図２５の対応関係に従って、C_HI、C_MID、C_LOWの値に応じて代表値V_high、V_mid、V_lowを計算する。
【０２４３】
図６７は画素ブロックのビットマップデータを生成するビットマップデータ生成器１５１の内部構成を示すブロック図である。このビットマップデータ生成器１５１は、ＢＴＣ符号化回路７内に設けられる。
【０２４４】
図６７のビットマップデータ生成器１５１は、画素ブロック内の各画素データを入力する入力回路１５２と、各画素データが閾値Th_highとTh_lowに一致するか否かを検出する比較回路１５３と、比較回路１５３の比較結果に基づいてビットマップデータを生成するビットマップ生成器１５４と、ビットマップ出力部１５５とを有する。
【０２４５】
ビットマップ生成器１５４は、画素データがTh_lowより小さい場合にはビットマップデータ「００」を生成し、画素データがTh_highより大きい場合にはビットマップデータ「１０」を生成し、画素データがTh_lowとTh_highの間の場合にはビットマップデータ「０１」を生成する。
【０２４６】
上述した図５６と図５７の最大値ＭＡＸと最小値ＭＩＮを検出する処理と、図５９の最大値ＭＡＸと最小値ＭＩＮを除いた平均値ＡＶＥを検出する処理と、図６３の代表値を検出する処理は、階層的に計算を行っており、画素ブロック内の画素データを入力として各処理を行っている。
【０２４７】
このため、これらの処理は、それぞれ別個のハードウェアで実現してもよいが、一つのハードウェアで実現することも可能である。そこで、以下では、ハードウェアの最適化を図って、４種類の処理を一つのハードウェアで実現する構成を検討する。これにより、重複する機能を削減することができ、ハードウェア量を削減できる。
【０２４８】
ここで、どの処理を行っているかを特定するためにPhase信号を導入する。なお、４×４ブロックのデータを処理することを考えると、最低でも４ＣＬＫで処理できることが望まれる。ここでは、４ステップの処理を考えており、１ステップを１ＣＬＫとすれば、４ＣＬＫ内に収まる。
【０２４９】
そこで、Phase信号もこのＣＬＫで数えることにする。すなわち、Phaseの値として０、１、２、３を繰り返すこととする。例えば、Phase＝０の場合、活動量の計算、Phase＝１の場合、MAX、MIN計算、Phase＝２の場合、ＡＶＥ（閾値）計算、Phase＝３の場合、代表値（ビットマップ）計算を行うものとする。
【０２５０】
以下、輝度データＹの処理を仮定して説明するが、色差データについても同様の処理手順で処理を行うことができる。
【０２５１】
なお、一般に、このような繰り返し計算でなく、シリアルに実現ハードウェアを接続するのであれば、４ＣＬＫ内に計算を終了せずとも、パイプライミングされるので、問題はない。ここでは同じハードウェア資源を繰り返し計算で実行するために４ＣＬＫ内でという制限が発生している。
【０２５２】
図６８は共用回路１６０の概略構成を示すブロック図である。図６８の共用回路１６０は、画素ブロック内の各画素データを入力する入力回路１６１と、入力回路１６１内の各画素データが比較対象データと一致するか否かをチェックする比較回路１６２と、比較回路１６２の比較結果に応じてカウント数とデータの累積値を計算する累積値計算回路１６３と、処理内容を特定するPhase信号を入力するPhase入力回路１６４とを有する。
【０２５３】
図６９は比較回路１６２内の複数の比較部１６５の内部構成を示すブロック図である。図６９の比較回路１６２は、画素データをＤＩＮ２と比較する第１比較部１６６と、画素データをＤＩＮ３と比較する第２比較部１６７と、第１および第２比較部１６６，１６７の比較結果を示すC_1、C_2、C_3とデータS_1、S_2、S_3を出力する出力回路１６８とを有する。
【０２５４】
まずPhase＝１の場合を考える。この場合、初期化は必要ないため、画素ブロック内の各画素データは比較回路１６２を通過する。Phase＝２の場合、図６０に示すように、比較回路１６２は画素ブロック内の各画素データを最小値ＭＩＮおよび最大値ＭＡＸと比較する。
【０２５５】
この場合、図６０のＤＩＮ１はＤＩＮ、ＤＩＮ２はＭＩＮ、ＤＩＮ３はＭＡＸに対応する。第１比較部１６６はＤＩＮ１とＤＩＮ２との大小を比較し、第２比較部１６７はＤＩＮ１とＤＩＮ３との大小を比較する。これら第１比較部１６６と第２比較部１６７は、図６０の第１比較部１６６と第２比較部１６７に対応する。
【０２５６】
出力回路１６８は、第１比較部１６６と第２比較部１６７の比較結果に基づいて、最大、中間（最大、最小以外）、最小にわけて、カウント数Ｃと累積値Ｓを計算する。これは図６０の出力回路１６８に対応する。
【０２５７】
出力回路１６８から出力されるＤoutは、最大値ＭＡＸと最小値ＭＩＮを除いた累積値であるため、中間のS_2に対応させるのが自然である。C_1、C_2、C_3はC_MAX、C_MID、C_MINに対応する。
【０２５８】
一方、Phase＝３の場合は、比較回路１６２を用いて図６４と同様の処理が行われる。この場合、ＤＩＮ１はＤＩＮ、ＤＩＮ２はTh_low、ＤＩＮ３はTh_highに対応する。図６９の第１比較部１６６はＤＩＮ１とＤＩＮ２との比較を行い、第２比較部１６７はＤＩＮ１とＤＩＮ３との比較を行う。出力回路１６８は、第１の比較部と第２の比較部の比較結果を受けて、最大、中間（最大、最小以外）、最小にわけてカウントＣと累積値Ｓを計算する。この出力回路１６８は図６４の出力回路１６８に対応する。図６４の出力回路１６８の出力S_HI、S_MID、S_LOWはそれぞれ図６９のS_1、S_2、S_3に対応する。図６９のC_1、C_2、C_3は図６４のC_MAX、C_MID、C_MINに対応する。以上のPhaseごとの動作をまとめると図７０のようになる。
【０２５９】
図７１は図６９の出力回路１６８の内部構成を示すブロック図である。図示のように、出力回路１６８は複数の加算器１６９〜１７４を有する。図７２は各Phaseにおける出力回路１６８の入力データを示す図である。図示のように、Phase＝１の場合、図５６と図５７の処理動作を行うため、C_1、S_1を利用して最大値ＭＡＸを計算し，C_3、S_3を利用して最小値ＭＩＮを計算する。最大値ＭＡＸの場合はカウントC_1を＋１、最小値ＭＩＮの場合はカウントC_3を＋１する。それら以外はカウントアップしない。
【０２６０】
Phase＝２の場合、図６１の処理動作を行う。C_1、C_2、C_3はそれぞれC_MAX、C_MID、C_MINに対応し、それそれの入力を加算する。これを＋で示してある。また図６１のＳをS_2に対応させる。したがってS_2の欄にのみ加算を示す＋がある。
【０２６１】
Phase＝３の場合、図６５の動作が期待される。C_1、C_2、C_3はC_MAX、C_MID、C_MINに対応する。これで加算を表す＋が表中にある。出力S_HI、S_MID、S_LOWはそれぞれS_1、S_2、S_3に対応する。これも加算であり＋で表中に示す。
【０２６２】
図７２の処理動作を実現するのは図７１の加算器１６９である。なお、図７２の表中で、「＊」はドントケアを表すが、実際には動作を停止して消費電力を増やさないのが望ましい。図７２ではそのような回路の停止機能（ディセーブル機能）については明示しないで、Phase信号に対応する処理動作のみを示している。
【０２６３】
図７３は図７１の加算器１７０の内部構成を示すブロック図、図７４は図７１の加算器１７３の内部構成を示すブロック図、図７５は図７１の加算器１７４の内部構成を示すブロック図、図７６は図７１の加算器１６９，１７１の内部構成を示すブロック図、図７７は図７１の加算器１７２の内部構成を示すブロック図である。
【０２６４】
図７３の加算器１７０は、セレクタ１８１と、加算器１８２と、最大値検出回路１８３とを有する。図７４の加算器１７３は、セレクタ１８４と、加算器１８５と、最小値検出回路１８６とを有する。図７５の加算器１７４は、加算器１８７のみを有する。図７６の加算器１６９，１７１は、加算器１８７と、スイッチ１８８と、スイッチ１８８のオンオフを制御する制御回路１８９とを有する。図７７の加算器１７２は、加算器１９０のみを有する。
【０２６５】
図７３と図７５において、加算器１８２と最大値検出回路１８３を、加算器１８５および最小値検出回路１８６とハードウェアの共有化を図ってもよい。最大値検出回路１８３は最大値を検出するために比較処理を行う。最小値検出回路１８６は最小値を検出するために比較処理を行う。これらの比較処理を行うために減算器が必要となるが、加算器の一方の入力を補数にすれば、減算器は加算器で代用できる。したがって、加算器と減算器を共用することができる。なお、一方の入力の補数をとる回路、またＭＡＸ／ＭＩＮの値を判定し取り出す回路は、制御信号Phaseにより制御する。
【０２６６】
上記の説明では、主に輝度データＹの符号化および復号化について説明したが、色差データＣｒ，Ｃｂについても同様の符号化および復号化が行われる。輝度データＹと色差データＣｒ，Ｃｂでは、一般にビット数が異なり、色差データＣｒ，Ｃｂでは階層の大きさが小さい。
【０２６７】
本実施形態では、３レベルＢＴＣ符号化でのハードウェアの最適化を行ったが、復号化と同様に２レベルＢＴＣと３レベルＢＴＣの間での最適化も実行できる。
【０２６８】
図７８は２レベルＢＴＣと３レベルＢＴＣの間で最適化を行う場合の条件を示す図である。モードフラグをＭ列に、PhaseをＰ列に示す。２レベルＢＴＣ時がモードフラグ０、３レベルＢＴＣ時がモードフラグ１である。モードフラグが０の場合、MAX、MINを求めて平均値を計算する必要がないので、Phase＝１は休止のままでよい。Phase＝２になって、平均値を求める。このためにS_2を利用する。個数は１６個であり、カウントする必要はないためC_2は使用しなくてもよい。
【０２６９】
Phase＝３で平均値を閾値として利用して、下と上のグループに分け、各グループでの平均値を計算する。このため、C_1とC_3にカウントを、S_1とS_3に累積値を計算していく。
【０２７０】
以上を制御するために、図７３〜図７７までの回路にPhase制御信号の他に、Mode制御信号を追加することで、図７８の動作を実現する。
【０２７１】
図７９は以上に説明した処理動作を行うＢＴＣ符号化回路７の内部構成を示すブロック図である。図７９のＢＴＣ符号処理部２４は、活動量検出器１９１と、モード検出器１９２と、フェイズ検出器１９３と、初期化部１９４と、階層計算部１９５と、後計算部１９６とを有する。
【０２７２】
なお、上述した実施形態では、２レベルＢＴＣの詳細は示していないが、一般に知られているため、説明を省略した。
【０２７３】
以上に説明したように、本実施形態によれば、画素ブロック内の活動量に応じて、２レベルＢＴＣアルゴリズムと３レベルアルゴリズムのいずれかを選択して画像データの符号化を行うため、画質を劣化させることなく、効率的に画像データを圧縮できる。特に、元画像がＰＣで生成されたＰＣ画像の場合でも、画質の劣化が起きない符号化データを生成できる。
【０２７４】
また、２レベルＢＴＣアルゴリズムと３レベルＢＴＣアルゴリズムで用いる代表値を決定する際、画素ブロック内の画素値の最大値と最小値を除いた残りの画素に基づいて代表値を決定するため、元画像にうまく適合する代表値を選定でき、画質の劣化を防止できる。
【０２７５】
また、２レベルＢＴＣアルゴリズムで符号化する回路と３レベルＢＴＣアルゴリズムで符号化する回路を統合できるため、ハードウェア規模を縮小できる。
【０２７６】
また、元画像を回転させた画像を生成する際、符号化する際に回転処理を行うため、符号化データを復号する際には回転処理が不要となり、復号化処理を簡略化できる。メモリの縦横比に適合した回転方向を選択して回転済みデータを保存することで、メモリ領域を余分に用意する無駄をなくすことができる。
【０２７７】
また、本実施形態では、元画像の任意の領域だけを選択して符号化できるため、静止画像の任意の領域だけを表示させることができ、無駄なデータ転送が不要となり、消費電力の削減が図れる。また、圧縮効率にも優れるため、高速で画像を伝送する必要がなくなり、この点でも消費電力の削減が図れる。
【図面の簡単な説明】
【０２７８】
【図１】本発明の一実施形態による画像処理装置の概略構成を示すブロック図。
【図２】ソースドライバ３内のＹＣＣ変換回路６とＢＴＣ符号化回路７の処理動作を示すフローチャート。
【図３】ステップＳ２で計算される活動量を説明する図。
【図４】２レベルＢＴＣアルゴリズムを説明する図。
【図５】図４の２レベルＢＴＣアルゴリズムにより得られる符号化データを示す図。
【図６】図５の符号化データの復号結果を示す図。
【図７】画素ブロック内の輝度データＹの一例を示す図。
【図８】画素ブロック内の色差データの一例を示す図。
【図９】図８を見かけ上２×２画素とみなす例を示す図。
【図１０】３レベルＢＴＣアルゴリズムで生成される符号化データの一例を示す図。
【図１１】３レベルＢＴＣアルゴリズムで生成される色差データの符号化データの一例を示す図。
【図１２】図７に示す輝度データと図８に示す色差データにより得られる符号化データのすべてを示す図。
【図１３】ＢＴＣ符号化回路７で生成された符号化データのデータ形式とフレームメモリ８の構造を説明する図。
【図１４】ＢＴＣ符号化回路７による符号化処理により約１／４のデータ量に圧縮されることを模式的に示す図。
【図１５】図１のＢＴＣ復号化回路９の処理手順の一例を示すフローチャート。
【図１６】２レベルＢＴＣアルゴリズムで符号化された符号化データを復号化する処理を説明する図。
【図１７】輝度データの復号化処理を説明する図。
【図１８】色差データの復号化処理を説明する図。
【図１９】（ａ）および（ｂ）は中間代表値の値により画質が変化する例を説明する図。
【図２０】本実施形態で新たに提案する中間代表値の設定手法を説明する図。
【図２１】（ａ）および（ｂ）は図１９よりも画質が改善した例を説明する図。
【図２２】３レベルＢＴＣアルゴリズムで用いる閾値と代表値を選択する処理手順を説明するフローチャート。
【図２３】ステップＳ２３の処理の詳細を説明する図。
【図２４】代表値を決定する処理手順を示すフローチャート。
【図２５】図２４のステップＳ４７の処理に用いる変数Cnt_high、Cnt_mid、Cnt_lowと代表値V_plus、V_mid、V_minusとの対応関係を示す図。
【図２６】フレームメモリ８の圧縮能力を示す図。
【図２７】ＱＶＧＡサイズの画像をそのまま圧縮した場合の圧縮能力を示す図。
【図２８】図１の変形例を示す画像処理回路の概略構成を示すブロック図。
【図２９】タイミングコントローラとソースドライバ間のデータの受け渡しを説明する図。
【図３０】図１のＢＴＣ符号化回路７の内部構成を示すブロック図。
【図３１】画像を回転させる場合の処理手順を説明する図。
【図３２】ＢＴＣ符号化回路７で行う９０度回転処理を説明する図。
【図３３】フレームメモリ８のアドレス生成の処理手順を示すフローチャート。
【図３４】フレームメモリ８に符号化データを記憶する際の処理動作を概念的に示す図。
【図３５】フレームメモリ８およびその周辺回路の内部構成を示すブロック図。
【図３６】データセレクタ５２の内部構成を示すブロック図。
【図３７】図３６とは異なる構成のデータセレクタ５２の内部構成を示すブロック図。
【図３８】図３６と図３７とは異なる構成のデータセレクタ５２の内部構成を示すブロック図。
【図３９】符号化データの複数ビットを単位としてフレームメモリ８に記憶する例を説明する図。
【図４０】符号化データの複数ビットを単位としてフレームメモリ８に記憶する例を説明する図。
【図４１】符号化データの復号化処理を説明する図。
【図４２】画像を回転する場合の復号化処理を説明する図。
【図４３】９０度回転処理を行う場合のフレームメモリ８のアドレス生成を説明する図。
【図４４】スタートカラム情報ＳＣとエンドカラム情報ＥＣが整数の４倍でない場合の処理動作を説明する図。
【図４５】ＢＴＣ復号化回路９の詳細な内部構成を示すブロック図。
【図４６】モードフラグが「１」の場合の輝度データの復号化処理を説明する図。
【図４７】マージした復号器８０を有するＢＴＣ復号化回路９の内部構成を示す図。
【図４８】図４５のビット長調整回路８７の内部構成を示すブロック図。
【図４９】図４５のデータ参照回路８８の入力部分の接続関係を示す図。
【図５０】データ参照回路８８の内部構成を示すブロック図。
【図５１】スイッチ制御回路９３の切替動作を示す図。
【図５２】図４５のセレクタ８９の内部構成を示すブロック図。
【図５３】切替制御回路の切替動作を説明する図。
【図５４】データ参照回路の一例を示す図。
【図５５】データ参照回路の切替動作の一例を示す図。
【図５６】画素ブロック内の最大値を検出する最大値検出回路１０１の概略構成を示すブロック図。
【図５７】画素ブロック内の最小値を検出する最小値検出回路１０２の概略構成を示すブロック図。
【図５８】図５６と図５７で検出した最大値ＭＡＸと最小値ＭＩＮに基づいて二つの閾値Th_highとTh_lowを計算する手法を説明する図。
【図５９】画素ブロック内の画素値の最大値ＭＡＸと最小値ＭＩＮを除いて画素の平均値を検出する図２２のステップＳ２３の処理を行う平均値検出回路１１０の概略構成を示すブロック図。
【図６０】図５９の比較回路１１２に設けられる複数の比較部１１４の内部構成を示すブロック図。
【図６１】図６０の出力回路１１７の内部構成を示すブロック図。
【図６２】図２２のステップＳ２３における閾値Th_high、Th_lowを検出する閾値検出回路１３０の概略構成を示すブロック図。
【図６３】画素ブロック内の各画素値を閾値Th_low、Th_highにより３つのグループに分類し、各グループごとにカウント値と累積値を求める図２３のステップＳ３３の処理を行う回路の概略構成を示すブロック図。
【図６４】比較回路１４２内の複数の比較部１４４の内部構成を示すブロック図。
【図６５】図６４の出力回路１４７の内部構成を示すブロック図。
【図６６】図２２のステップＳ２３における代表値V_high、V_mid、V_lowを計算する代表値計算回路１５０の概略構成を示すブロック図。
【図６７】画素ブロックのビットマップデータを生成するビットマップデータ生成器１５１の内部構成を示すブロック図。
【図６８】共用回路１６０の概略構成を示すブロック図。
【図６９】比較回路１６２内の複数の比較部１６５の内部構成を示すブロック図。
【図７０】Phaseごとの動作をまとめた図。
【図７１】図６９の出力回路１６８の内部構成を示すブロック図。
【図７２】各Phaseにおける出力回路１６８の入力データを示す図。
【図７３】図７１の加算器１７０の内部構成を示すブロック図。
【図７４】図７１の加算器１７３の内部構成を示すブロック図。
【図７５】図７１の加算器１７４の内部構成を示すブロック図。
【図７６】図７１の加算器１６９，１７１の内部構成を示すブロック図。
【図７７】図７１の加算器１７２の内部構成を示すブロック図。
【図７８】２レベルＢＴＣと３レベルＢＴＣの間で最適化を行う場合の条件を示す図。
【図７９】ＢＴＣ符号化回路７の内部構成を示すブロック図。
【符号の説明】
【０２７９】
１  液晶パネル（ＬＣＤ）
２  タイミングコントローラ
３  ソースドライバ
４  ＲＧＢデータ送信回路
５  ＲＧＢデータ受信回路
６  ＹＣＣ変換回路
７  ＢＴＣ符号化回路
８  フレームメモリ
９  ＢＴＣ復号化回路
１０  ＲＧＢ変換回路
１１  ＬＣＤ駆動回路
２１  ４Ｈメモリ
２２  アドレス生成回路
２３  ＢＴＣ処理入力部
２４  ＢＴＣ符号処理部
２５  ＢＴＣ処理出力部
２６  ＦＭローアドレス生成器
２７  ＦＭカラムアドレス生成器
４１  活動量検出器
４２  ２レベルＢＴＣ処理部
４３  ３レベルＢＴＣ処理部
４４  セレクタ
【図１】
2007312126.tif 000003
【図２】
2007312126.tif 000004
【図３】
2007312126.tif 000005
【図４】
2007312126.tif 000006
【図５】
2007312126.tif 000007
【図６】
2007312126.tif 000008
【図７】
2007312126.tif 000009
【図８】
2007312126.tif 000010
【図９】
2007312126.tif 000011
【図１０】
2007312126.tif 000012
【図１１】
2007312126.tif 000013
【図１２】
2007312126.tif 000014
【図１３】
2007312126.tif 000015
【図１４】
2007312126.tif 000016
【図１５】
2007312126.tif 000017
【図１６】
2007312126.tif 000018
【図１７】
2007312126.tif 000019
【図１８】
2007312126.tif 000020
【図１９】
2007312126.tif 000021
【図２０】
2007312126.tif 000022
【図２１】
2007312126.tif 000023
【図２２】
2007312126.tif 000024
【図２３】
2007312126.tif 000025
【図２４】
2007312126.tif 000026
【図２５】
2007312126.tif 000027
【図２６】
2007312126.tif 000028
【図２７】
2007312126.tif 000029
【図２８】
2007312126.tif 000030
【図２９】
2007312126.tif 000031
【図３０】
2007312126.tif 000032
【図３１】
2007312126.tif 000033
【図３２】
2007312126.tif 000034
【図３３】
2007312126.tif 000035
【図３４】
2007312126.tif 000036
【図３５】
2007312126.tif 000037
【図３６】
2007312126.tif 000038
【図３７】
2007312126.tif 000039
【図３８】
2007312126.tif 000040
【図３９】
2007312126.tif 000041
【図４０】
2007312126.tif 000042
【図４１】
2007312126.tif 000043
【図４２】
2007312126.tif 000044
【図４３】
2007312126.tif 000045
【図４４】
2007312126.tif 000046
【図４５】
2007312126.tif 000047
【図４６】
2007312126.tif 000048
【図４７】
2007312126.tif 000049
【図４８】
2007312126.tif 000050
【図４９】
2007312126.tif 000051
【図５０】
2007312126.tif 000052
【図５１】
2007312126.tif 000053
【図５２】
2007312126.tif 000054
【図５３】
2007312126.tif 000055
【図５４】
2007312126.tif 000056
【図５５】
2007312126.tif 000057
【図５６】
2007312126.tif 000058
【図５７】
2007312126.tif 000059
【図５８】
2007312126.tif 000060
【図５９】
2007312126.tif 000061
【図６０】
2007312126.tif 000062
【図６１】
2007312126.tif 000063
【図６２】
2007312126.tif 000064
【図６３】
2007312126.tif 000065
【図６４】
2007312126.tif 000066
【図６５】
2007312126.tif 000067
【図６６】
2007312126.tif 000068
【図６７】
2007312126.tif 000069
【図６８】
2007312126.tif 000070
【図６９】
2007312126.tif 000071
【図７０】
2007312126.tif 000072
【図７１】
2007312126.tif 000073
【図７２】
2007312126.tif 000074
【図７３】
2007312126.tif 000075
【図７４】
2007312126.tif 000076
【図７５】
2007312126.tif 000077
【図７６】
2007312126.tif 000078
【図７７】
2007312126.tif 000079
【図７８】
2007312126.tif 000080
【図７９】
2007312126.tif 000081