(57)【要約】【課題】画質を落とさずに効率よく符号化できる画像処理装置を提供する。【解決手段】液晶表示装置は、ＲＧＢデータ送信回路１と、ＬＣＤ（Liquid Crystal Display）ソースドライバ２と、ＬＣＤパネル３とを備えている。ＬＣＤソースドライバ２は、ＲＧＢデータ受信回路４と、ＡＢＤ−ＢＴＣ符号化回路５と、メモリ６と、ＡＢＤ−ＢＴＣ復号化回路７と、ＬＣＤ駆動回路８とを有する。画素ブロックを２×２画素の小サイズにしているため、画素ブロック内の平均値の計算を簡易な回路で行うことができる。特に、ハードウェア規模が大きくなりやすい除算器を、１／３乗算器だけで構成できる。この１／３乗算器も、近似計算を行うことで、ハードウェア規模を削減できる。【選択図】図１
2009071598.tif 000002
【特許請求の範囲】
【請求項１】
隣接する２×２画素からなる画素ブロックのそれぞれごとに、前記画素ブロック内の画素値の平均値を計算する平均値計算手段と、
前記画素ブロックのそれぞれごとに、前記平均値計算手段で計算された平均値より大きい上代表値と前記平均値より小さい下代表値とを計算する代表値計算手段と、
前記画素ブロックごとに、前記上代表値と前記下代表値との差分が所定の閾値より大きいか否かを判定する画像変化判定手段と、
前記画像変化判定手段により前記閾値より大きいと判定されると、画像がラフであると判断して第１の符号化データを生成し、前記画像変化判定手段により前記閾値以下と判定されると、画像が平坦であると判断して第２の符号化データを生成する符号化処理手段と、
前記第１の符号化データおよび前記第２の符号化データを格納する記憶手段と、を備え、
前記平均値計算手段は、
前記画素ブロック内の２画素ずつの画素値の和を並行して計算する第１および第２の加算器と、
前記第１の加算器の加算結果と前記第２の加算器の加算結果との和を計算する第３の加算器と、
前記第３の加算器の加算結果を表すビット列を２ビットシフトさせて、前記平均値を計算する１／４割算器と、を有し、
前記代表値計算手段は、
前記平均値と前記画素ブロック内の各画素値とを比較して、前記平均値よりも大きい画素値を累積加算した第１の累積加算値と、前記平均値以下の画素値を累積加算した第２の累積加算値とを計算する累積加算器と、
前記第１の累積加算値とその累積加算した回数とに基づいて前記上代表値を計算し、かつ前記第２の累積加算値とその累積した回数とに基づいて前記下代表値を計算する上下代表値計算手段と、を有することを特徴とする画像処理装置。
【請求項２】
前記平均値計算手段は、前記画素ブロック内の４画素分のＲＧＢデータのそれぞれについて平均値を計算し、
前記代表値計算手段は、前記画素ブロック内の４画素分のＲＧＢデータのそれぞれについて前記上代表値および前記下代表値を計算し、
前記画像変化判定手段は、前記画素ブロック内の４画素分のＲＧＢデータのそれぞれについて、前記上代表値と前記下代表値との差分が所定の閾値より大きいか否かを判定し、
前記符号化処理手段は、前記画素ブロック内の４画素分のＲＧＢデータのそれぞれについて前記第１および第２の符号化データを生成することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記第１の符号化データは、前記画像変化判定手段の判定結果を示すビットと、前記画素ブロック内の中心値を示すビット列と、前記中心値からの差分を示すビット列と、前記画素ブロック内のビットマップデータとを含んでおり、
前記第２の符号化データは、前記画像変化判定手段の判定結果を示すビットと、前記上代表値を表すビット列と、前記下代表値を表すビット列と、前記画素ブロック内のビットマップデータとを含むことを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記上下代表値計算手段は、累積加算した回数が２または４の場合には、前記第１の累積加算値または前記第２の累積加算値を表すビット列をシフトさせることにより前記上代表値または前記下代表値を計算し、累積加算した回数が３の場合には、前記第１の累積加算値または前記第２の累積加算値に所定のビット列を乗じることにより近似的に前記上代表値または前記下代表値を計算することを特徴とする請求項１乃至３のいずれかに記載の画像処理装置。
【請求項５】
前記記憶装置に格納された前記第１の符号化データおよび前記第２の符号化データを復号する復号化処理手段を備え、
前記復号化処理手段は、
前記第１の符号化データおよび前記第２の符号化データに含まれる、前記画像変化判定手段の判定結果を示すビットと、前記画素ブロックの代表値に対応するビット列と、前記画素ブロック内のビットマップデータとを抽出する符号化データ抽出部と、
前記符号化データ抽出部にて抽出したデータに基づいて、前記画素ブロックごとに符号化前の画素値を復元する画素復元計算手段と、を有することを特徴とする請求項１乃至４のいずれかに記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＲＧＢデータを符号化または復号化する画像処理装置に関する。
【背景技術】
【０００２】
ブロックトランケーション符号化（ＢＴＣ：Block truncation coding）による画像圧縮技術（以下、ＢＴＣ技術）は広く研究されている。ＢＴＣ技術は、従来からＦＡＸ機やコピー機で使用されているが、近年は表示装置に使用される例も増えてきた。表示装置では、液晶ＴＶのオーバードライブ技術に使用されるフレームメモリをできるだけ削減する必要があり、フレームメモリの削減のためにＢＴＣ技術が用いられる。表示装置でＢＴＣ技術が用いられることになった理由は２つある。一つの理由は、ＴＶ画像は４２０間引きやＭＰＥＧ圧縮などで処理されており、元々動画画像自体の歪も大きく含まれており、画像劣化が大きいので、ＢＴＣ圧縮してもそう大きな劣化とは認識されないためである。他の理由は、オーバードライブで必要なフレームメオリはあくまで処理に必要な参照データであり、実際にはこの他に直接データを利用して、補正量を決めるため、保存画像が劣化しても、直接データを利用することができているため、オーバードライブ補正量としての劣化はそれほど大きくないためである。
【０００３】
一方、携帯電話に搭載する埋め込みＲＡＭも、フレームメモリとして画像データを保存するが、これはそのデータを静止画として直接に利用するために、これ自体の画像劣化があると、直接的にそのエラーを発見することができてしまう。これは、ＢＴＣ利用に大きな問題であり、従来はＢＴＣ利用を想定できないでいた。
【０００４】
これに対して、本発明者は、ＢＴＣを拡張することでブロックエラーを少なくし、携帯ＲＡＭの圧縮技術として、ＢＴＣを利用できることを初めて提案した。本発明者による提案では、４×４画素ブロック処理で、ＶＧＡサイズのメモリを１／４のＱＶＧＡ相当のメモリサイズに削減できる。このときの符号化ハードウェアは、２５ＫＧ程度と比較的大きなサイズであり、メモリが大きく削減されたことで、その符号化器と復号化器のハードウェア増加を吸収できる。
【０００５】
一方、商業的な普及の割合からいえば、携帯電話用の表示装置は、まだＱＶＧＡが主力である。そこで、ＱＶＧＡにＢＴＣ技術を適用することを考えたい。しかし、このとき以下の問題がある。ＱＶＧＡでははじめのメモリサイズが小さいので、メモリサイズの削減よりも逆に符号化器と復号化器のハードウェアサイズ増加のほうが大きくなってしまい、削減効果を得ることができない。
【０００６】
非特許文献１には、適応的にＢＴＣを制御する技術が開示されている。２次元量子化（Two-Dimensional Quantization：またはJoint Coding結合符号化とも呼ばれている）は高変化領域では精度が必要ないが、低変化領域では高精度が必要である事実を利用している。２次元量子化では、平均値Ｘと分散σを結合させて１つの符号とすることにより、圧縮率をさらに高めている。ところが、２次元量子化を行うと、ハードウェアサイズが大きくなるという問題がある。
【０００７】
また、特許文献１には、ＢＴＣ技術を液晶ＴＶのオーバードライブ用メモリの圧縮に利用する技術が開示されている。特許文献２は、ＴＶなどの大型の液晶ＴＶを対象としており、厳しい画像評価基準が要求される。このため、複雑なＢＴＣアルゴリズムが必要となる。携帯電話等の小型の表示装置は、表示サイズと解像度が限られており、特許文献１のような複雑なＢＴＣアルゴリズムは不要である。
【特許文献１】特開２００６−２０８７７０号公報
【非特許文献１】O. R. Mitchell, E. J. Delp, “Multilevel Graphics Representation Using Block Truncation Coding,” Proceedings of the IEEE, VOL. 68, NO.7, JULY 1980, pp.868-873.
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、画質を落とさずに効率よく符号化できる画像処理装置を提供するものである。
【課題を解決するための手段】
【０００９】
本発明の一態様によれば、隣接する２×２画素からなる画素ブロックのそれぞれごとに、前記画素ブロック内の画素値の平均値を計算する平均値計算手段と、
前記画素ブロックのそれぞれごとに、前記平均値計算手段で計算された平均値より大きい上代表値と前記平均値より小さい下代表値とを計算する代表値計算手段と、
前記画素ブロックごとに、前記上代表値と前記下代表値との差分が所定の閾値より大きいか否かを判定する画像変化判定手段と、
前記画像変化判定手段により前記閾値より大きいと判定されると、画像がラフであると判断して第１の符号化データを生成し、前記画像変化判定手段により前記閾値以下と判定されると、画像が平坦であると判断して第２の符号化データを生成する符号化処理手段と、
前記第１の符号化データおよび前記第２の符号化データを格納する記憶手段と、を備え、
前記平均値計算手段は、
前記画素ブロック内の２画素ずつの画素値の和を並行して計算する第１および第２の加算器と、
前記第１の加算器の加算結果と前記第２の加算器の加算結果との和を計算する第３の加算器と、
前記第３の加算器の加算結果を表すビット列を２ビットシフトさせて、前記平均値を計算する１／４割算器と、を有し、
前記代表値計算手段は、
前記平均値と前記画素ブロック内の各画素値とを比較して、前記平均値よりも大きい画素値を累積加算した第１の累積加算値と、前記平均値以下の画素値を累積加算した第２の累積加算値とを計算する累積加算器と、
前記第１の累積加算値とその累積加算した回数とに基づいて前記上代表値を計算し、かつ前記第２の累積加算値とその累積した回数とに基づいて前記下代表値を計算する上下代表値計算手段と、を有することを特徴とする画像処理装置が提供される。
【発明の効果】
【００１０】
本発明によれば、画質を落とさずに効率よく符号化を行うことができる。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照しながら、本発明の一実施形態について説明する。
【００１２】
図１は本発明の一実施形態による画像処理装置を含む液晶表示装置の概略構成を示すブロック図である。図１の液晶表示装置は、ＲＧＢデータ送信回路１と、ＬＣＤ（Liquid Crystal Display）ソースドライバ２と、ＬＣＤパネル３とを備えている。ＬＣＤソースドライバ２は、ＲＧＢデータ受信回路４と、ＡＢＤ−ＢＴＣ符号化回路５と、メモリ６と、ＡＢＤ−ＢＴＣ復号化回路７と、ＬＣＤ駆動回路８とを有する。本発明の一実施形態による画像処理装置は、少なくともＡＢＤ−ＢＴＣ符号化回路５とメモリ６を含んでいる。
【００１３】
ＲＧＢデータ送信回路１は、例えば不図示のホストコンピュータに内蔵されており、ＲＧＢデータを送信する。このＲＧＢデータは、ＲＧＢデータ受信回路４により受信される。ＡＢＤ−ＢＴＣ符号化回路５は、後述するように、２×２画素からなる画素ブロックを単位として、ＲＧＢデータを符号化する。符号化された符号化データは、メモリ６に格納される。ＡＢＤ−ＢＴＣ復号化回路７は、メモリ６に格納された符号化データを元のＲＧＢデータに復号する。ＬＣＤ駆動回路８は、ＡＢＤ−ＢＴＣ復号化回路７で復号されたＲＧＢデータを階調電圧に変換して、ＬＣＤパネル３の各信号線に供給する。
【００１４】
図２はＡＢＤ−ＢＴＣ符号化回路５の処理手順の概略を示すフローチャートである。まず、ＲＧＢデータを入力し（ステップＳ１）、２×２画素の画素ブロックに分割する（ステップＳ２）。次に、各画素ブロックごとにＲＧＢデータを符号化する（ステップＳ３）。次に、符号化して得られた符号化データを画素ブロック単位でメモリ６に格納する（ステップＳ４）。
【００１５】
図３は図２のステップＳ３の詳細処理の一例を示すフローチャートである。まず、画素ブロックの平均値を計算する（ステップＳ１１）。ここでは、画素ブロックごとに、２×２＝４画素のＲＧＢデータの平均値を計算する。ＲＧＢデータの各色ごとに平均値を計算する。
【００１６】
次に、画素ブロックごとに、平均値より大きい上代表値と平均値以下の下代表値とを計算し、画素ブロックを構成する４画素のそれぞれを上代表値または下代表値に置き換えたビットマップデータを生成する（ステップＳ１２）。
【００１７】
次に、画素ブロックの活動量を検出した結果に基づいて、上代表値と下代表値のビット精度を決定する（ステップＳ１３）。
【００１８】
図４は図３のステップＳ１１の詳細処理の一例を示すフローチャートである。まず、画素値の累積値を計算する変数ＳＵＭを０に初期化する（ステップＳ２１）。次に、画素ブロック内の全画素の画素値を各色ごとに累積加算したか否かを判定する（ステップＳ２２）。ステップＳ２２がＮＯの場合は、まだ累積加算していない画素値を変数ＳＵＭの値に累積加算し（ステップＳ２３）、ステップＳ２２に戻る。ステップＳ２２がＹＥＳの場合は、画素ブロック内の全画素値を累積加算したものと判断して、変数ＳＵＭを４で割って平均値を計算する（ステップＳ２４）。図４では、ＲＧＢの各色ごとに、平均値ＳＵＭを計算する。
【００１９】
図５は図３のステップＳ１２の詳細処理の一例を示すフローチャートである。まず、平均値より大きい画素値の累積加算値を計算する変数ＳＵＭＵと、平均値以下の画素値の累積加算値を計算する変数ＳＵＭＬと、平均値より大きい画素値の数を計算する変数ＣＮＴＵと、平均値以下の画素値の数を計算する変数ＣＮＴＬとを、いずれも０に初期化する（ステップＳ３１）。
【００２０】
次に、画素ブロック内の全画素について累積加算値を計算したか否かを判定する（ステップＳ３２）。ステップＳ３２がＮＯの場合は、画素ブロック内のまだ累積加算をしていない画素値（ＲＧＢデータ）を取得し、この画素値が平均値以下か否かを判定する（ステップＳ３３）。ステップＳ３３がＹＥＳの場合は、取得した画素値を変数ＳＵＭＬに累積加算し、変数ＣＮＴＬを１加算する。また、この画素についてはビットマップデータを０とする（ステップＳ３４）。
【００２１】
ステップＳ３３がＮＯの場合は、取得した画素値を変数ＳＵＭＵに累積加算し、変数ＣＮＴＵを１加算する。また、この画素についてはビットマップデータを１とする（ステップＳ３５）。
【００２２】
一方、ステップＳ３２がＹＥＳの場合は、上代表値と下代表値を以下の（１）（２）式で計算する（ステップＳ３６）。
上代表値＝変数ＳＵＭＵ／ＣＮＴＵ    …（１）
下代表値＝変数ＳＵＭＬ／ＣＮＴＬ    …（２）
【００２３】
図５では、ＲＧＢの各色ごとに、上代表値と下代表値を計算し、ビットマップデータを生成する。
【００２４】
図６は図３のステップＳ１３の詳細処理の一例を示すフローチャートである。まず、ＲＧＢの各色について、上代表値と下代表値の差分ＭＡＸＤＩＦを計算する（ステップＳ４１）。次に、差分ＭＡＸＤＩＦが閾値Ｔ以下であるか否かを判定する（ステップＳ４２）。ステップＳ４２がＹＥＳの場合は、画素ブロックは平坦画像であると判断して、上代表値と下代表値の平均値を計算するとともに、上代表値と下代表値の差分を計算する。そして、判定フラグビットを０に設定する（ステップＳ４３）。ステップＳ４２がＮＯの場合は、画素ブロックはラフな画像であると判断して、上代表値と下代表値を丸める処理を行うとともに、判定フラグビットを１に設定する。
【００２５】
このように、図６では、画素ブロック内の画像を２種類に分類している。２種類に制限することにより、ハードウェアサイズを小さくできる。分類数を増やすと、符号化による画質劣化を抑制できるが、意図的に分類数を２種類に制限する。その理由は、本実施形態は、携帯電話等の小型のＬＣＤパネル３の駆動を念頭に置いており、また、画素ブロックのサイズも２×２画素と小さいため、ＢＴＣ符号化による丸め誤差も少ないためである。画素ブロックを２×２画素にすることにより、画素ブロックの平均値、上代表値および下代表値も容易に計算できる。
【００２６】
平均値や代表値を計算する際に、２や４で割る計算は、ビット列を１ビットあるいは２ビットシフトするだけでよく、実際の割算処理を行わなくても計算可能である。また、３で割る処理も、後述するように比較的簡易な計算で得られる。
【００２７】
図７（ａ）は画像の閾値を３通りに変化させて二値化した例を示す図であり、図７（ａ）の左側縦列の画像は二値化後のデータ、図７（ａ）の右側縦列の画像は元画像を示している。人間の視覚は８ビット以上の高階調を識別できるが、画素ごとに８ビット精度で差異を識別できるわけではなく、ある程度の広がりを持った面と面で比較して初めて８ビット精度の識別力が得られる。小さい画素の集まりになるほど、ビット精度は必要なくなる。この視覚の特性を利用したのがＢＴＣである。
【００２８】
このような人間の視覚の特性を考慮すると、青空のように極めて近い値が広い範囲でまとまっている平坦な領域に対してのみ、８ビット精度が必要であり、地面のような変化が激しいラフな領域では、８ビット精度は必要ないことがわかる。
【００２９】
図７（ａ）の左側縦列の画像では、２×２画素単位で閾値との比較を行い、平坦と判定された２×２画素を白、ラフと判定された２×２画素を黒で表している。活動の大きさは、２×２画素中の４画素における最大値と最小値の差分と定義している。この差分は、ＲＧＢの各色ごとに存在する。
【００３０】
ここでは、ＲＧＢの全色において平坦の場合に平坦と定義する。ＲＧＢの一色でも平坦でなければラフと定義する。このような定義は適宜変更してもよい。
【００３１】
図７（ａ）からわかるように、閾値Ｔ＝６でも青空がカバーできることがわかる。したがって、閾値Ｔ＝６で、８ビット精度を確保すべき領域が特定できる。この値を参考にして、図７（ａ）における閾値が経験的に決定される。
【００３２】
正確に言えば、図７（ａ）の閾値は、最大最小の幅ではなく、上代表値と下代表値の差分である。しかしながら、経験的には同様に振る舞うため、計算上は代表値の差分の閾値を閾値Ｔとする。
【００３３】
図７（ｂ）はラフな画像の画素値の一例を示す図、図７（ｃ）は平坦な画像の画素値の一例を示す図である。ラフな画像の場合は、図７（ｂ）のように、差分の大きな２つの画素値で表現できる。また、平坦な画像の場合は、図７（ｃ）のように、２×２画素のそれぞれを差分が小さい４つの画素値で表現できる。
【００３４】
図８はラフな画像の符号化を説明する図である。この場合の符号化データは、ＲＧＢの各色ごとに、上代表値および下代表値と、画素ブロックを表すビットマップとを含む。Ｒ画素を例に取って説明する。下代表値の５ビット０１０１０は、下位３ビットを省略したものであり、実際のデータは０１０１００００（バイナリ）である。数値的には、６４＋１６＝８０を表す。
【００３５】
後述するが、符号化データをデコードする際には、オフセットを加えて、符号化による丸めをさらに調整する。オフセットとしては、例えば４を加えて、画素値が８０なら８４に、画素値が１６８なら１７２に変換する。
【００３６】
図８の例では、ＲＧＢの各色とも、２×２画素の画素ブロックのビットマップが１０１０であり、ビットマップ中の１は画素値１７２に対応し、０は画素値１６８に対応する。
【００３７】
符号化前は、ＲＧＢの各色とも８ビットであるため、２×２画素では、４×８×３＝９６ビット必要であった。これに対して図８のような符号化を行うと、上代表値と下代表値のそれぞれに５ビットで、ビットマップに４ビットが必要なため、ＲＧＢの全色では、（１０＋４）×３＝４２ビットに圧縮できる。結局、ビット数を４２／９６＝約４４％に圧縮できる。
【００３８】
図９は図８で説明した符号化により得られる符号化データのビット列を示す図である。符号化データの先頭ビットには、ラフな画像を意味する判定フラグビット１が追加される。判定フラグビットに続けて、代表値を表す１０×３ビットと、ビットマップを表す４×３ビットが配置される。図９の符号化データは、図１のメモリ６に格納される。
【００３９】
図１０は平坦な画像の符号化を説明する図である。この場合の符号化データは、ＲＧＢの各色ごとに、中央値と、中央値からの差分値とを含む。中央値はビット精度を高めるために８ビットであり、差分値は２ビットである。図１０の例では、中央値が０１０１０１０１（バイナリ）＝８５で、差分値が１０（バイナリ）＝３である。したがって、上代表値＝８５＋３＝８８、下代表値＝８５−３＝８２となる。ビットマップは、図９と同様である。
【００４０】
ＲＧＢの各色ごとに、中央値が８ビット、差分値が２ビット、ビットマップが４ビットであり、合計（８＋２＋４）×３＝４２ビットになる。
【００４１】
図１１は図１０で説明した符号化により得られる符号化データのビット列を示す図である。符号化データの先頭ビットには、平坦な画像を意味する判定フラグビット０が追加される。判定フラグビットに続いて、Ｒ画素の中央値と差分値、Ｇ画素の中央値と差分値、Ｂ画素の中央値と差分値、ビットマップが順に配置される。
【００４２】
図８と図１０からわかるように、ラフな画像でも平坦な画像でも、総ビット数は同じ４２＋１＝４３ビットになる。
【００４３】
図１２は画素値０と２５５で構成されたラフな画像のオフセット調整を説明する図である。ラフな画像は上代表値と下代表値をともに５ビットで表現するため、２×２画素の画素ブロック内の最大値は１１１１１で最小値は０００００になる。実際には下位３ビット０００が付加されるため、最大値は２４８で、最小値は０になる。これら最大値と最小値にともにオフセット４が加算されて、上代表値＝２４８＋４＝２５２になり、下代表値＝０＋４＝４になる。
【００４４】
図１３および図１４は画素値１２７，１２９，１２５，１３１で構成された平坦な画像のオフセット調整を説明する図である。これら４つの画素値の平均値は１２８であり、平均値よりも大きい画素値の平均値は１３０であり、これが上代表値となる。また、平均値以下の画素値の平均値は１２６であり、これが下代表値となる。
【００４５】
このように、上代表値と下代表値はいずれも、全体の平均値から２だけずれている。丸め計算を考えると、上代表値と平均値との差分が、下代表値と平均値との差分に必ず一致するわけではないが、誤差が生じても、たかだか１だけの差分であるため、この誤差を許容する。そこで、実際には、平均値より上または下の画素値を利用して差分を計算する。
【００４６】
図１３の画素ブロックの場合、図１４に示すように、中央値は１０００００００（バイナリ）＝１２８で、差分は１０（バイナリ）＝２となる。ビットマップは０１０１である。上代表値＝１２８＋２＝１３０、下代表値＝１２８−２＝１２６になる。
【００４７】
次に、上記の処理手順で符号化を行ってメモリ６に格納された符号化データを復号する処理手順について説明する。
【００４８】
図１５は図１のＡＢＤ−ＢＴＣ復号化回路７の処理手順の概略を示すフローチャートである。まず、メモリ６から符号化データを読み出す（ステップＳ５１）。次に、画素ブロックごとに、画素ブロック内の符号化データを復号する（ステップＳ５２）。次に、画素ブロックを単位とした画素値から全体画像の画素値に変換する（ステップＳ５３）。次に、変換した画素値を保存する（ステップＳ５４）。
【００４９】
図１６は図１５のステップＳ５２の詳細処理の一例を示すフローチャートである。まず、符号化データの先頭ビットである判定フラグビットを抽出する（ステップＳ６１）。この判定フラグビットの値により、平坦な画像かラフな画像かを判別できる。
【００５０】
次に、判定フラグの後に配置されているビット列（代表値、差分、ビットマップなど）を取得する（ステップＳ６２）。より詳細には、判定フラグビットが１の場合は、上代表値、下代表値およびビットマップを取得する。判定フラグビットが０の場合は、中央値、差分値、ビットマップを取得する。
【００５１】
次に、ステップＳ６２で取得したビット列に基づいて、符号化前の画素値を復元する（ステップＳ６３）。
【００５２】
図１７は図１５のステップＳ５３の詳細処理の一例を示すフローチャートである。まず、判定フラグビットに基づいて、上代表値と下代表値を計算し、ラフな画像の場合には８ビットに拡張する処理を行う（ステップＳ７１）。このとき、オフセット加算処理も行う。
【００５３】
次に、画素ブロック内の全画素についてステップＳ７１の処理を行ったか否かを判定し（ステップＳ７２）、まだ処理を行っていない画素が存在する場合には、ビットマップ中の対応するビットが０か否かを判定する（ステップＳ７３）。判定がＹＥＳの場合は、下代表値を画素値として選択し（ステップＳ７４）、判定がＮＯの場合は、上代表値を画素値として選択する（ステップＳ７５）。
【００５４】
ステップＳ７４またはＳ７５の処理が終了すると、ステップＳ７２に戻り、ステップＳ７２の判定がＹＥＳの場合には処理を終了する。
【００５５】
図１８は圧縮率とＰＳＮＲ（Peak Signal Noise Ratio）の関係を示す図である。ＰＳＮＲは、１００画像の統計的な結果を示す。Ｎｏ．１は従来のＢＴＣを利用した２×２画素の符号化を示し、Ｎｏ．２は本実施形態による２×２画素の符号化を示し、Ｎｏ．３は従来のＢＴＣを利用した４×４画素の符号化を示し、Ｎｏ．４はＭｏＭＡ−ＢＴＣを利用した４×４画素の符号化を示し、Ｎｏ．５はＤＣＭ４（単純間引き）による符号化を示している。
【００５６】
Ｎｏ．１は圧縮率が２を超えておらず、圧縮効率が悪いことから、望ましくない。Ｎｏ．３および４は、ＰＳＮＲ値が低いことから、画質が悪く、望ましくない。
【００５７】
一方、Ｎｏ．２に示す本実施形態は、予め画像をラフか平坦かに分類して、実質的に８ビット精度が得られるようにし、かつＰＳＮＲ値も高く維持し、ハードウェア規模も小さくできるため、望ましい。
【００５８】
本実施形態は、携帯電話等に使用されるＱＶＧＡタイプのＬＣＤパネル３の表示制御を行うことを念頭に置いており、メモリ６の容量をできるだけ削減しつつ、画質の劣化をできるだけ抑制する必要性があることから、上記Ｎｏ．２が最も望ましい。
【００５９】
図１９は液晶表示装置の一変形例を示すブロック図である。図１９では、図１と共通する構成部分には同一符号を付しており、以下では相違点を中心に説明する。図１９の液晶表示装置は、ＬＣＤソースドライバ２ａの他にコントローラ（アプリケーションプロセッサ）１１を備えており、このコントローラ１１は、ＡＢＤ−ＢＴＣ符号化回路５と、圧縮データ送信回路１２とを有する。ＬＣＤソースドライバ２ａは、圧縮データ受信回路１３と、メモリ６と、ＡＢＤ−ＢＴＣ復号化回路７と、ＬＣＤ駆動回路８とを有する。
【００６０】
圧縮データ送信回路１２は、ＡＢＤ−ＢＴＣ符号化回路５で符号化した符号化データをＬＣＤソースドライバ２ａに送信する。圧縮データ受信回路１３は、符号化データを受信して、メモリ６に格納する。
【００６１】
このように、図１９は、ＬＣＤソースドライバ２ａ内にＡＢＤ−ＢＴＣ符号化回路５を持たないため、ＬＣＤソースドライバ２ａの内部構成を簡略化でき、ＬＣＤソースドライバ２ａの小型化と消費電力の削減が図れる。また、コントローラ１１とＬＣＤソースドライバ２ａは、圧縮された符号化データを送受するため、転送データ量を抑制でき、配線本数やＥＭＩノイズが増大するおそれはない。
【００６２】
図２０は図１または図１９のＡＢＤ−ＢＴＣ符号化回路５の内部構成の一例を示すブロック図である。図２０のＡＢＤ−ＢＴＣ符号化回路５は、２Ｈラインメモリ２１と、４画素保存レジスタ２２と、エンコーダ２３と、圧縮データ保存レジスタ２４とを有する。
【００６３】
本実施形態では、２×２画素からなる画素ブロックを単位として符号化処理を行うため、２ライン分の画素データを格納する２Ｈラインメモリ２１が必要となる。４画素保存レジスタ２２は、２Ｈラインメモリ２１に格納された２ライン分の画素データの中から、画素ブロックを構成する２×２画素の画素データを抽出する。
【００６４】
エンコーダ２３は、後述するように、画素ブロックを単位として符号化処理を行って、判定フラグビットと、代表値（上代表値および下代表値、差分値など）と、ビットマップを生成する。圧縮データ保存レジスタ２４は、エンコーダ２３が生成した各データを組合わせて生成される符号化データを一時的に格納する。圧縮データ保存レジスタ２４に格納された符号化データは、メモリ６に格納される。
【００６５】
２Ｈラインメモリ２１を設ける代わりに、１Ｈラインメモリを用いることも可能である。１Ｈラインメモリを設ける場合は、同メモリ６に最初の１Ｈライン分を格納し、次の１Ｈライン分の画素値を取得して格納する際に符号化処理を行う。２クロックで１画素ブロック分の符号化処理を行えばよいため、１Ｈライン＋２画素だけ保存するだけのメモリ容量があればよい。
【００６６】
ただし、１Ｈラインメモリを設ける場合には、同メモリ６内のデータを毎回シフトさせる必要があり、ＥＭＩノイズや消費電力が多少増加してしまう。ＥＭＩや消費電力を削減する必要がある場合には、２Ｈラインメモリ２１を設けるのが望ましい。
【００６７】
図２１は図２０のエンコーダ２３の内部構成の一例を示すブロック図である。図２１のエンコーダ２３は、第１の階層計算器（平均値計算手段）３１と、第２の階層計算器３２とを有する。第１の階層計算器３１は、画素ブロック内の全画素値の平均値を計算する。第２の階層計算器３２は、代表値とビットマップを計算するとともに、画素ブロック内の画像の活動判定を行う。
【００６８】
第１の階層計算器３１は、第１の累積加算部３３と、第２の累積加算部３４と、平均値計算部（１／４割算器）３５とを有する。第１の累積加算部３３と第２の累積加算部３４は、２×２画素の画素値を階層的に累積加算する。より具体的には、第１の累積加算部３３は、２つの加算器（第１および第２の加算器）３６を有し、各加算器３６は、２画素分の画素値を加算する。第２の累積加算部３４は、第１の累積加算部３３内の２つの加算器３６の出力同士を加算する加算器（第３の加算器）３７を有する。
【００６９】
平均値計算部３５は、第２の累積加算部３４の出力ビット列を２ビットシフトすることにより、４画素分の画素値の累積加算値を４で割った値（平均値）を計算する。
【００７０】
第２の階層計算器３２は、第１の比較加算部４１と、第２の比較加算部４２と、代表値計算部４３と、ビット幅設定部４４とを有する。第１の比較加算部４１は、２つの比較加算器４５を有し、各比較加算器４５は、２画素分の画素値を平均値と比較して、平均値より大きい画素値の累積加算値およびその個数と、平均値以下の画素値の累積加算値およびその個数とを計算する。第２の比較加算部４２は一つの比較加算器４６を有し、この比較加算器４６は、第１の比較加算部４１の出力に基づいて、４画素のうち、平均値より大きい画素値の累積加算値およびその個数と、平均値以下の画素値の累積加算値およびその個数とを計算する。
【００７１】
代表値計算部４３は、平均値より大きい画素値の累積加算値およびその個数に基づいて上代表値を計算するとともに、平均値以下の画素値の累積加算値およびその個数に基づいて下代表値を計算する。
【００７２】
第１の比較加算部４１と第２の比較加算部４２が累積加算器に対応し、代表値計算部４３が上下代表値計算手段に対応する。また、第１の比較加算部４１、第２の比較加算部４２および代表値計算部４３が代表値計算手段に対応する。
【００７３】
ビット幅設定部４４は、上代表値と下代表値の差分に基づいて、画素ブロックの活動量を判定し、ラフな画層か平坦な画像かを判別する。その判別結果に基づいて、代表値のビット幅を決定する。
【００７４】
図２２は図２１の第１の累積加算部３３と第２の累積加算部３４の内部構成の一例を示すブロック図である。第１の累積加算部３３と第２の累積加算部３４は、両方とも２入力の演算回路４７を有する。第１の累積加算部３３は、画素ブロック内の２×２画素の画素値を直接入力し、第２の累積加算部３４は、２×２画素のうち２画素分ずつの画素値の加算値を入力して、４画素分の画素値の総和を出力する。
【００７５】
第１の累積加算部３３と第２の累積加算部３４は、図４に示すフローチャートに示す処理動作を行う。
【００７６】
図２１の平均値計算部３５におけるビット幅は、第１の累積加算部３３と第２の累積加算部３４の計算から２ビット増加して１０ビットになる。平均値として８ビットを利用する場合には丸め処理を行う必要がある。もしくは、１０ビット幅や９ビット幅で以下の計算を行うオプションもある。
【００７７】
図２３は図２１の第１の比較加算部４１内の各比較加算器４５の内部構成の一例を示すブロック図である。図２３に示すように、各比較加算器４５は、比較回路４８と演算回路４９を有し、２画素分ずつを処理する。比較回路４８は、対応する２画素のそれぞれについて、画素値Ａと画素ブロックの平均値ＭＩＤとを比較する。演算回路４９は、比較回路４８の比較結果に基づいて、平均値より大きい画素値を持つ画素のグループ（上グループ）における画素値の総和ＳＵ１（またはＳＵ２）およびその画素数ＣＵ１（またはＣＵ２）と、平均値以下の画素値を持つ画素のグループ（下グループ）における画素値の総和ＳＬ１（またはＳＬ２）およびその画素数ＣＬ１（またはＣＬ２）とを計算する。また、演算回路４９は、上グループの画素を１、下グループの画素を０として、画素ブロックのビットマップＢＭを生成する。
【００７８】
図２４は図２３に示す第１の比較加算部４１の動作を表した図である。図２４に示すように、画素値Ａが平均値ＭＩＤ以下の場合は、変数ＳＬ１にその画素値Ａが累積加算されるとともに、変数ＣＬ１が１加算され、ビットマップＢＭ中の対応画素値は０になる。画素値Ａが平均値ＭＩＤより大きい場合は、変数ＳＵ１にその画素値Ａが累積加算されるとともに、変数ＣＵ１が１加算され、ビットマップＢＭ中の対応画素値は１になる。
【００７９】
図２５は図２１の第２の比較加算部４２の内部構成の一例を示すブロック図である。図２５に示すように、第２の比較加算部４２は、第１の比較加算部４１の出力ＳＬ１，ＣＬ１，ＳＬ２，ＣＬ２を入力して下グループの総和ＳＵＭＬおよび画素数ＣＮＴＬを計算する演算回路５０と、第１の比較加算部４１の出力ＳＵ１，ＣＵ１，ＳＵ２，ＣＵ２を入力して上グループの総和ＳＵＭＵおよび画素数ＣＮＴＵを計算する演算回路５１とを有する。
【００８０】
図２６は図２１の代表値計算部４３の内部構成の一例を示すブロック図である。図２６に示すように、代表値計算部４３は、下代表値を計算するためのシフト回路５２および演算回路５３と、上代表値を計算するためのシフト回路５４および演算回路５５とを有する。シフト回路５２，５４は、画素値の総和ＳＵＭＬ（またはＳＵＭＵ）を２ビット拡張して１０ビット幅にする。演算回路５３，５５は、画素数ＣＮＴＬ（またはＣＮＴＵ）の値に応じて、割算処理を行う。
【００８１】
図２７は図２６の演算回路５３，５５の動作を説明する図である。以下では、総和ＳＵＭＬ（またはＳＵＭＵ）を総称してＳＵＭと呼び、画素数ＣＮＴＬ（またはＣＮＴＵ）を総称してＣＮＴと呼ぶ。
【００８２】
画素数ＣＮＴが０または１のときは、ビット拡張された総和ＳＵＭをそのまま出力する。なお、画素数ＣＮＴが０のときに総和ＳＵＭをそのまま出力する理由は、０で割ることはできないが、不定の値とするのはハードウェア構成上望ましくないためである。
【００８３】
画素数ＣＮＴが２の場合は、総和ＳＵＭを１ビットシフトさせることにより、２の割算処理を行う。
【００８４】
画素数ＣＮＴが３の場合は、総和ＳＵＭを３で割ることを示しており、単純なシフト動作では行えない。そこで、後述する手法により３の割算処理を行う。
【００８５】
画素数ＣＮＴが４の場合は、総和ＳＵＭを２ビットシフトさせることにより、４の割算処理を行う。
【００８６】
図２８は図２６に示したシフト回路５２または５４と演算回路５３または５５の具体的構成の一例を示すブロック図である。図示のように、シフト回路５２または５４と演算回路５３または５５は、１ビットシフト回路６１と、１／３乗算回路６２と、２ビットシフト回路６３と、スイッチ回路６４と、スイッチ制御回路６５とを有する。
【００８７】
総和ＳＵＭは、１ビットシフト回路６１と、１／３乗算回路６２と、２ビットシフト回路６３とに入力される。スイッチ回路６４は、スイッチ制御回路６５の制御により、総和ＳＵＭと、１ビットシフト回路６１の出力と、１／３乗算回路６２の出力と、２ビットシフト回路６３の出力とのいずれかを選択する。
【００８８】
図２９は１／３乗算回路６２の内部構成の一例を示すブロック図である。図示のように、１／３乗算回路６２は、６ビットシフト回路７１と、４ビットシフト回路７２と、２ビットシフト回路７３と、０ビットシフト回路７４と、加算器７５〜７７とを有する。
【００８９】
２５６を３で割ると、約８５．３となることから、この除算結果を８５とみなしてバイナリ表現すると、０１０１０１０１となる。そこで、図２９では、総和ＳＵＭに、０１０１０１０１を乗算する処理を行い、結果として約１／３の除算を行う。
【００９０】
０１０１０１０１は、１ビット目、３ビット目、５ビット目、７ビット目がそれぞれ１であり、元の総和ＳＵＭを、０ビットシフトさせた値と、２ビットシフトさせた値と、４ビットシフトさせた値と、６ビットシフトさせた値とを加算すれば、０１０１０１０１と総和ＳＵＭとの乗算結果が得られる。これらのシフト処理と加算処理を図２９で行っている。この結果、図２９の最終段の加算器７７からは、総和ＳＵＭをほぼ３で割った値が得られる。
【００９１】
図２９のブロック構成は簡略化させることが可能である。図３０は図２９を簡略化したブロック図である。図３０の１／３乗算回路６２ａは、２ビットシフト回路７３と、０ビットシフト回路７４と、加算器と、４ビットシフト回路７２と、加算器とを有する。図３０では、図２９と同じ結果が得られる。
【００９２】
１／３の除算結果の精度をより高めるには、２５６を３で割った値を小数点まで考慮してもよい。小数点以下２桁まで考慮すると、２５６／３＝約８５．２５となる。８５．２５をバイナリ表現すると、０１０１０１０１０１となる。この０１０１０１０１０１を総和ＳＵＭに乗じることにより、総和ＳＵＭを３で割った値に近似する値が得られる。
【００９３】
図３１は総和ＳＵＭに８５．２５を乗じる処理を行う１／３乗算回路６２ｂのブロック図である。図３１の１／３乗算回路６２ｂは、８ビットシフト回路７０と、６ビットシフト回路７１と、４ビットシフト回路７２と、２ビットシフト回路７３と、０ビットシフト回路７４と、加算器７５〜７８とを有する。図３２は図３１の回路を最適化したブロック図である。図３２の１／３乗算回路６２ｃは、４ビットシフト回路７２と、２ビットシフト回路７３と、０ビットシフト回路７４と、加算器と、４ビットシフト回路７２と、加算器とを有する。図３２の１／３乗算回路６２は、図３１の８ビットシフト回路７０と６ビットシフト回路７１を省略して、加算器の数も減らしている。
【００９４】
このように、２５６を３で割った値をより精度よく近似させることにより、より正確に１／３の除算を行うことができる。２５６を３で割った値を小数点以下４桁まで考慮すると、小数点以下２桁まで考慮した場合よりも、より精度よく１／３除算を行うことができる。２５６／３＝約８５．３１２５になる。
【００９５】
図３３は２５６を３で割った値を８５．３１２５とした場合の１／３乗算回路６２のブロック図である。図３３の１／３乗算回路６２ｄは、１０ビットシフト回路７４と、８ビットシフト回路７０と、６ビットシフト回路７１と、４ビットシフト回路７２と、２ビットシフト回路７３と、０ビットシフト回路７４と、加算器とを有する。図３４は図３３を最適化した１／３乗算回路６２ｅのブロック図である。図３４の１／３乗算回路６２は、２ビットシフト回路７３と、０ビットシフト回路７４と、加算器７５と、８ビットシフト回路７０と、４ビットシフト回路７２と、加算器７６，７７とを有する。
【００９６】
図３５は図２１のビット幅設定部４４の内部構成の一例を示すブロック図である。図３５のビット幅設定部４４は、上代表値と下代表値の差分が閾値Ｔより大きいか否かを比較する比較回路８１と、この比較回路８１の比較結果に基づいて画素ブロック内の画像がラフか平坦かを決定する演算回路８２とを有する。
【００９７】
図３６は図３５の演算回路４７の動作を示す図である。図３６に示すように、上代表値ＲＥＰＵと下代表値ＲＥＰＬとの差分が閾値Ｔ以下であれば、平坦な画像と判断して、中央値と、中央値からの差分値とをＲＥＰ１，ＲＥＰ２として出力するとともに、判定フラグビットを０にする。上代表値ＲＥＰＵと下代表値ＲＥＰＬとの差分が閾値未満であれば、ラフな画像と判断して、上代表値ＲＥＰＵを丸めた新たな上代表値ＲＥＰ１と、下代表値ＲＥＰＬを丸めた新たな下代表値ＲＥＰ２とを出力するとともに、判定フラグビットを１にする。
【００９８】
図３７は図２１のエンコーダ２３内の各回路のハードウェアサイズを見積もった図である。より具体的には、エンコーダ２３内の各回路に含まれる加算器の数を示している。
【００９９】
第１の階層計算器３１は、第１の累積加算部３３と第２の累積加算部３４を有し、計３個の加算器を有する。第２の階層計算器３２は、第１の比較加算部４１と第２の比較加算部４２を有し、これらで計４個の加算器を有する。また、代表値計算部４３は４〜６個の加算器を有し、ビット幅設定部４４は３個の加算器を有する。結局、エンコーダ２３全体で、１４〜１６個の加算器を有する。
【０１００】
８×８の乗算器は、８個の８ビット列の加算器で構成される。図３７からわかるように、乗算器を単位に見積もると、エンコーダ２３の全体で、ほぼ２個分の乗算器と同様のハードウェアサイズになる。これは十分に小さなハードウェアサイズである。
【０１０１】
図３８は図２１のエンコーダ２３を簡略化した例を示すブロック図である。図３８では、図２１の第１の階層計算器３１と第２の階層計算器３２の構成が似ていることから、ハードウェアの共有化を図っている。すなわち、共通のハードウェアを利用して、時間をずらして計算を行うことで、一つの回路で、第１の階層計算器３１と第２の階層計算器３２と同様の処理を行う。
【０１０２】
図３８のエンコーダ２３ａは、第１の加算部８３と、第２の加算部８４と、代表値計算部４３と、ビット幅設定部４４とを有する。第1の加算部８３は２個の加算器８５を有し、第２の加算部８４は１個の加算器８６を有する。
【０１０３】
第１の加算部８３は、第１の時刻では図２１の第１の累積加算部３３と同様の計算を行い、第２の時刻では図２１の第１の比較加算部４１と同様の計算を行う。第２の加算部８４は、第１の時刻では図２１の第２の累積加算部３４と同様の計算を行い、第２の時刻では図２１の第２の比較加算部４２と同様の計算を行う。
【０１０４】
図３８の代表値計算部４３は、第１の時刻では図２１の平均値計算部３５と同様の計算を行い、第２の時刻では図２１の代表値計算部４３と同様の計算を行う。
【０１０５】
図３８のように、一部の回路を共有化して、時間によって計算内容を切り替えることにより、ハードウェアの規模を縮小できる。より具体的には、加算器の数を削減できる。
【０１０６】
図３８以外の手法により、ハードウェアの最適化を図ってもよい。図２１の平均値計算部３５は、２ビットシフトさせることにより平均値を計算している。これは、シフトによって配線の接続先を変更することを意味しており、シフト処理のためのハードウェアを備えているわけではない。このため、遅延を考慮して全体を２時刻で制御する観点から考えると、平均値計算部３５の処理時間は無視できる。したがって、第１の時刻で、図２１の第１の累積加算部３３から第１の比較加算部４１までの処理を行い、第２の時刻で、図２２の第２の比較加算部４２からビット幅設定部４４までの処理を行うことも考えられる。あるいは、処理時間の均一化を図って、第１の比較加算部４１や第２の比較加算部４２の処理の途中で、処理サイクルを切り替えてもよい。
【０１０７】
このように、処理サイクルの区切りをどこに設定するかは、各回路の処理遅延時間を鑑みて調整するのが望ましい。
【０１０８】
図３９は図１のＡＢＤ−ＢＴＣ復号化回路７の内部構成の一例を示すブロック図である。図３９の復号化回路７は、圧縮データ保存レジスタ９１と、フラグ抽出部９２と、代表値抽出部９３と、ビットマップ抽出部９４と、２×２画素復元計算部９５と、２×２画素保存レジスタ９６と、ラインメモリ９７とを有する。
【０１０９】
圧縮データ保存レジスタ９１は、メモリ６に格納されている符号化データを一時的に保存する。フラグ抽出部９２は、符号化データの先頭ビットである判定フラグビットを抽出する。１であれば、ラフな画像を示し、０であれば、平坦な画像を示している。
【０１１０】
代表値抽出部９３は、判定フラグビットの値に応じて、中央値および差分値を抽出するか、上代表値および下代表値を抽出する。ビットマップ抽出部９４は、判定フラグビットの値に応じて、ビットマップの抽出を行う。
【０１１１】
２×２画素復元計算部９５は、フラグ抽出部９２、代表値抽出部９３およびビットマップ抽出部９４の出力に基づいて、画素値の復元を行う。復元された画素値は２×２画素保存レジスタ９６に一時的に格納された後、ラインメモリ９７に格納される。
【０１１２】
ラインメモリ９７は、２Ｈライン分のメモリ容量を有する。これだけのメモリ容量を必要とする理由は、２×２画素からなる画素ブロックを単位として復号化処理を行うためである。ただし、１Ｈラインメモリ８がすでにあるので、ラインメモリ９７としては２Ｈメモリまで設けなくても、１Ｈメモリがあれば足りるので、この１Ｈメモリ実現がより好ましい。
【０１１３】
フラグ抽出部９２、代表値抽出部９３およびビットマップ抽出部９４は符号化データ抽出部に対応する。
【０１１４】
図３９の復号化回路７は、上述した図１５のフローチャートに沿って処理を行う。図１５のステップＳ５１は圧縮データ保存レジスタ９１の処理、ステップＳ５２はフラグ抽出部９２、代表値抽出部９３、ビットマップ抽出部９４および２×２画素復元計算部９５の処理、ステップＳ５３は２×２画素保存レジスタ９６の処理、ステップＳ５４はラインメモリ９７の処理に対応する。
【０１１５】
図４０は図３９の２×２画素復元計算部９５の処理内容を説明する図である。図４０（ａ）は２×２画素復元計算部９５の内部構成の一例を示すブロック図である。図４０（ａ）に示す２×２画素復元計算部９５は、４つの選択回路９８を有する。４つの選択回路９８には、代表値ＲＥＰ１，ＲＥＰ２と、判定フラグビットＦＬＡＧと、ビットマップを構成する各値ＢＭ１１，ＢＭ１２，ＢＭ２１，ＢＭ２２とが入力される。例えば、ＦＬＡＧ＝０であれば、平坦な画像と判断して、入力されたビットマップの各値を代表値ＲＥＰ１，ＲＥＰ２を用いて変換して、Ｃ１１，Ｃ１２，Ｃ２１，Ｃ２２を出力する。２×２画素復元計算部９５は、図１７のフローチャートに沿って処理を行う。
【０１１６】
画像復元を行う際に、画像の回転や反転を行う機能を設けることも可能である。この場合、画素ブロックを構成する４画素の復元画素値Ｃ１１，Ｃ１２，Ｃ２１，Ｃ２２を入れ替えることも可能だが、各画素値は例えば８ビット幅であるため、入れ替えが大がかりになる。
【０１１７】
そこで、ビットマップを構成する各値ＢＭ１１，ＢＭ１２，ＢＭ２１，ＢＭ２２の位置を交換すればよい。これにより、８ビットの入れ替えではなく、わずか１ビットの入れ替えで済むため、ハードウェア規模を削減できる。この入れ替え処理を行うハードウェア（回転・反転回路９９）は、図４０（ｂ）のようなものになる。
【０１１８】
図４０（ｂ）の入力データＢ１１，Ｂ１２，Ｂ２１，Ｂ２２は回転・反転前のビットマップ、出力データＢＭ１１，ＢＭ１２，ＢＭ２１，ＢＭ２２は回転・反転後のビットマップである。
【０１１９】
復号化の段階で回転・反転を行う代わりに、符号化の段階で回転・反転処理を行ってもよい。この場合、回転・反転を行った後の符号化データがメモリ６に格納される。
【０１２０】
実際の画像処理では、符号化の際に回転・反転処理を行うのが望ましい。その理由は、復号化器のハードウェアをより小型化できるためと、メモリ６の利用効率の観点からは縦横を逆にして保存した方が画像の縦横方向とメモリ６の縦横方向を一致させることができるためである。
【０１２１】
仮に、画像の縦横方向とメモリ６の縦横方向とを一致させないとすると、メモリ６内に有効利用されない空き領域が増える一方、縦または横のいずれか一方のメモリ容量が不足する可能性がある。
【０１２２】
図４１はラフな画像の画像復元を説明する図である。この場合の代表値は、精度が５ビットの上代表値と下代表値である。ビットマップが０の場合は下代表値が選択され、ビットマップが１の場合は上代表値が選択される。画像復元の際には、代表値が５ビットから８ビットに拡張される。そして、ビットマップの各ビットが８ビットからなる代表値（上代表値または下代表値）に置換されて、Ｃ１１，Ｃ１２，Ｃ２１，Ｃ２２が得られる。
【０１２３】
図４２は平坦な画像の画像復元を説明する図である。この場合の代表値は、精度が８ビットの中央値と２ビットの差分値である。下代表値＝中央値−差分値、上代表値＝中央値＋差分値で計算される。ビットマップの各ビットは、上代表値と下代表値に置換されて、Ｃ１１，Ｃ１２，Ｃ２１，Ｃ２２が得られる。
【０１２４】
図４３は図４０（ａ）の選択回路９８の内部構成の一例を示すブロック図である。図４３の選択回路９８は、差分復元回路１０１と、ビット拡張回路１０２と、第１のスイッチ回路１０３と、第２のスイッチ回路１０４とを有する。
【０１２５】
差分復元回路１０１とビット拡張回路１０２には、データ保存レジスタ９１の値が入力される。データ保存レジスタ９１の先頭ビットは判定フラグビットを表しており、１はラフな画像、０は平坦な画像を示す。ラフな画像の場合も平坦な画像の場合も、代表値の抽出には、データ保存レジスタの２ビット目から１１ビット目までの１０ビットが用いられる。
【０１２６】
差分復元回路１０１は、ラフな画像の場合は、上記１０ビットにより、上代表値と下代表値を抽出する。ビット拡張回路１０２は、ラフな画像の場合には、５ビット精度から８ビット精度にビット拡張を行う。また、ビット拡張回路１０２は、丸め調整のためにオフセットを加算する。
【０１２７】
第１のスイッチ回路１０３は、判定フラグビットに基づいて、復元または拡張された２つの代表値を選択する。第２のスイッチ回路１０４は、ビットマップの各ビットにもとづいて、上代表値か下代表値を選択する。
【０１２８】
差分復元回路１０１には、加算・減算によるオーバーフローとアンダーフローの処理回路を追加してもよい。例えば、上述したように、代表値を求める１／３乗算器にて近似誤差が生じる可能性がある。このような誤差の累積により、上述したオーバーフローとアンダーフローの処理回路が必要になる可能性がある。逆に、十分に計算のビット幅を増やして、誤差が出にくくする手法も考えられる。このように、実際に実現する回路と、画質の劣化の程度により、必要に応じて、上記処理回路を追加するのが望ましい。
【０１２９】
差分復元回路１０１とビット拡張回路１０２の内部にはそれぞれ加算器が含まれているが、加算器の数を削減することも考えられる。ビット拡張回路１０２が行う丸め調整は、ＡＢＤ−ＢＴＣ符号化回路５での丸め処理により発生する四捨五入や切り捨て等の数値処理により発生するエラーを最小化する操作である。このようなエラーを最小化する処理は、ＡＢＤ−ＢＴＣ符号化回路５で行うことも可能である。すなわち、符号化回路５による丸め処理で生じるエラーを予め考慮して、オフセット調整をした後で、丸め処理を実行する。
【０１３０】
これにより、ビット拡張回路１０２内の加算器を省略でき、単にＬＳＢを０で埋める機能だけが残る。なお、これは丸めに関係のあるラフな画像の場合の話であり、平坦な画像の場合は、差分復元回路１０１で復元された８ビット精度の代表値を利用する。この８ビット代表値は、丸めに関係なく、ビット拡張回路１０２を通過する。さらに画質が若干落ちても気にならないのであれば、符号化回路５での丸め用オフセット調整を削除する方策もありうる。
【０１３１】
上述した加算器を削減する別案として、差分復元回路１０１内の加算器とビット拡張回路１０２内の加算器を共用することが考えられる。この場合、差分復元回路１０１にて、中央値−差分値の減算処理を行う場合も、補数を用いて加算器で行えるため、二つの代表値それぞれに１個の加算器が必要となり、ビット拡張での２個の加算器とつじつまが合う。
【０１３２】
さらなる別案として、丸め調整のオフセットを特定の値（例えば＋４、＋３、０など）に固定する。これは、バイナリの１０、０１１、０００を、ビット列の下位側に追加するだけでよく、ハードウェア規模を増大させることなく、実現できる。非常にシンプルな構成であるが、微調整は行えない。
【０１３３】
このように、本実施形態では、２×２画素からなる画素ブロックを単位として、ラフな画像か平坦な画像かを判定し、ラフな画像であれば５ビット精度の符号化データを生成し、平坦な画像であれば８ビット精度の符号化データを生成する。ラフな画像の場合も平坦な画像の場合も、同じビット幅からなる符号化データを生成するため、画像の種類により符号化データのビット幅が変動することはない。画像をラフか平坦かの２種類のみに分類するため、画像の場合分けの数を最小限に抑えることができ、ハードウェア規模を削減できる。
【０１３４】
また、本実施形態では、画素ブロックを２×２画素の小サイズにしているため、画素ブロック内の平均値の計算を簡易な回路で行うことができる。すなわち、ハードウェア規模が大きくなりやすい除算器を、１／３乗算器だけで構成できる。この１／３乗算器も、近似計算を行うことで、ハードウェア規模を削減できる。
【０１３５】
さらに、画素ブロックの平均値を計算する際には、階層的な計算を行うことで、ハードウェアの共有化を図ることができる。また、画像の回転や反転処理も、専用のハードウェアを設けずに行うことができる。
【０１３６】
また、符号化の際には、画素ブロックを２つの代表値で表現するため、代表値の数を削減できて、符号化データのビット幅を抑制できる。また、ラフな画像と平坦な画像で符号化データのビット精度を切り替えるため、人間の目には画質の劣化が感じられることはない。
【０１３７】
このように、本実施形態の符号化処理により得られた符号化データはビット幅が小さいため、符号化データを格納するメモリ６のメモリ容量を削減でき、画像処理装置のハードウェア規模の削減とコスト削減が図れる。
【０１３８】
以上より、本実施形態によれば、携帯電話等に利用される小サイズ（例えばＱＶＧＡ）のＬＣＤパネル３の表示制御を行う際に、ＢＴＣアルゴリズムによる圧縮効果を活用できる。すなわち、従来のＶＧＡメモリ６サイズで有効であったＢＴＣアルゴリズムは、その符号化器と復号化器がＱＶＧＡ時のメモリ６削減と比較して相対的に大きいため、ＱＶＧＡサイズの表示制御にはＢＴＣ技術を利用できなかったが、本実施形態ではＱＶＧＡサイズの表示制御にもＢＴＣ技術を適用することができる。
【図面の簡単な説明】
【０１３９】
【図１】本発明の一実施形態による画像処理装置を含む液晶表示装置の概略構成を示すブロック図。
【図２】ＡＢＤ−ＢＴＣ符号化回路５の処理手順の概略を示すフローチャート。
【図３】図２のステップＳ３の詳細処理の一例を示すフローチャート。
【図４】図３のステップＳ１１の詳細処理の一例を示すフローチャート。
【図５】図３のステップＳ１２の詳細処理の一例を示すフローチャート。
【図６】図３のステップＳ１３の詳細処理の一例を示すフローチャート。
【図７】（ａ）は画像の閾値を３通りに変化させて二値化した例を示す図、（ｂ）はラフな画像の画素値の一例を示す図、（ｃ）は平坦な画像の画素値の一例を示す図。
【図８】ラフな画像の符号化を説明する図。
【図９】図８で説明した符号化により得られる符号化データのビット列を示す図。
【図１０】平坦な画像の符号化を説明する図。
【図１１】図１０で説明した符号化により得られる符号化データのビット列を示す図。
【図１２】画素値０と２５５で構成されたラフな画像のオフセット調整を説明する図。
【図１３】平坦な画像のオフセット調整を説明する図。
【図１４】平坦な画像のオフセット調整を説明する図。
【図１５】図１のＡＢＤ−ＢＴＣ復号化回路７の処理手順の概略を示すフローチャート。
【図１６】図１５のステップＳ５２の詳細処理の一例を示すフローチャート。
【図１７】図１５のステップＳ５３の詳細処理の一例を示すフローチャート。
【図１８】圧縮率とＰＳＮＲ（Peak Signal Noise Ratio）の関係を示す図。
【図１９】液晶表示装置の一変形例を示すブロック図。
【図２０】図１または図１９のＡＢＤ−ＢＴＣ符号化回路５の内部構成の一例を示すブロック図。
【図２１】図２０のエンコーダ２３の内部構成の一例を示すブロック図。
【図２２】図２１の第１の累積加算部３３と第２の累積加算部３４の内部構成の一例を示すブロック図。
【図２３】図２１の第１の比較加算部４１内の各比較加算器４５の内部構成の一例を示すブロック図。
【図２４】図２３に示す第１の比較加算部４１の動作を真理値で表した図。
【図２５】図２１の第２の比較加算部４２の内部構成の一例を示すブロック図。
【図２６】図２１の代表値計算部４３の内部構成の一例を示すブロック図。
【図２７】図２６の演算回路５３，５５の動作を説明する図。
【図２８】図２６に示したシフト回路と演算回路の具体的構成の一例を示すブロック図。
【図２９】１／３乗算回路６２の内部構成の一例を示すブロック図。
【図３０】図２９を簡略化したブロック図。
【図３１】総和ＳＵＭに８５．２５を乗じる処理を行う１／３乗算回路６２ｂのブロック図。
【図３２】図３１の回路を最適化したブロック図。
【図３３】２５６を３で割った値を８５．３１２５とした場合の１／３乗算回路６２のブロック図。
【図３４】図３３を最適化した１／３乗算回路６２ｅのブロック図。
【図３５】図２１のビット幅設定部４４の内部構成の一例を示すブロック図。
【図３６】図３５の演算回路４７の動作を示す図。
【図３７】図２１のエンコーダ２３内の各回路のハードウェアサイズを見積もった図。
【図３８】図２１のエンコーダ２３を簡略化した例を示すブロック図。
【図３９】図１のＡＢＤ−ＢＴＣ復号化回路７の内部構成の一例を示すブロック図。
【図４０】図３９の２×２画素復元計算部９５の処理内容を説明する図。
【図４１】ラフな画像の画像復元を説明する図。
【図４２】平坦な画像の画像復元を説明する図。
【図４３】図４０（ａ）の選択回路９８の内部構成の一例を示すブロック図。
【符号の説明】
【０１４０】
１  ＲＧＢデータ送信回路
２  ＬＣＤソースドライバ
３  ＬＣＤパネル
４  ＲＧＢデータ受信回路
５  ＡＢＤ−ＢＴＣ符号化回路
６  メモリ
７  ＡＢＤ−ＢＴＣ復号化回路
８  ＬＣＤ駆動回路
１１  コントローラ
１２  圧縮データ送信回路
１３  圧縮データ受信回路
２１  ２Ｈラインメモリ
２２  ４画素保存レジスタ
２３  エンコーダ
２４  圧縮データ保存レジスタ
３１  第１の階層計算器
３２  第２の階層計算器
３３  第１の累積加算部
３４  第２の累積加算部
３５  平均値計算部
４１  第１の比較加算部
４２  第２の比較加算部
４３  代表値計算部
４４  ビット幅設定部
【図１】
2009071598.tif 000003
【図２】
2009071598.tif 000004
【図３】
2009071598.tif 000005
【図４】
2009071598.tif 000006
【図５】
2009071598.tif 000007
【図６】
2009071598.tif 000008
【図８】
2009071598.tif 000009
【図９】
2009071598.tif 000010
【図１０】
2009071598.tif 000011
【図１１】
2009071598.tif 000012
【図１２】
2009071598.tif 000013
【図１３】
2009071598.tif 000014
【図１４】
2009071598.tif 000015
【図１５】
2009071598.tif 000016
【図１６】
2009071598.tif 000017
【図１７】
2009071598.tif 000018
【図１８】
2009071598.tif 000019
【図１９】
2009071598.tif 000020
【図２０】
2009071598.tif 000021
【図２１】
2009071598.tif 000022
【図２２】
2009071598.tif 000023
【図２３】
2009071598.tif 000024
【図２４】
2009071598.tif 000025
【図２５】
2009071598.tif 000026
【図２６】
2009071598.tif 000027
【図２７】
2009071598.tif 000028
【図２８】
2009071598.tif 000029
【図２９】
2009071598.tif 000030
【図３０】
2009071598.tif 000031
【図３１】
2009071598.tif 000032
【図３２】
2009071598.tif 000033
【図３３】
2009071598.tif 000034
【図３４】
2009071598.tif 000035
【図３５】
2009071598.tif 000036
【図３６】
2009071598.tif 000037
【図３７】
2009071598.tif 000038
【図３８】
2009071598.tif 000039
【図３９】
2009071598.tif 000040
【図４０】
2009071598.tif 000041
【図４１】
2009071598.tif 000042
【図４２】
2009071598.tif 000043
【図４３】
2009071598.tif 000044
【図７】
2009071598.tif 000045