JP2009130690A - 画像処理装置 - Google Patents

画像処理装置 Download PDF

Info

Publication number
JP2009130690A
JP2009130690A JP2007304432A JP2007304432A JP2009130690A JP 2009130690 A JP2009130690 A JP 2009130690A JP 2007304432 A JP2007304432 A JP 2007304432A JP 2007304432 A JP2007304432 A JP 2007304432A JP 2009130690 A JP2009130690 A JP 2009130690A
Authority
JP
Japan
Prior art keywords
value
sub
color
regions
representative
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2007304432A
Other languages
English (en)
Inventor
Takashi Sasaki
尚 佐々木
Hironori Nanzaki
崎 浩 徳 南
Haruhiko Okumura
村 治 彦 奥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2007304432A priority Critical patent/JP2009130690A/ja
Publication of JP2009130690A publication Critical patent/JP2009130690A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Liquid Crystal Display Device Control (AREA)
  • Facsimile Image Signal Circuits (AREA)
  • Color Image Communication Systems (AREA)
  • Control Of Indicators Other Than Cathode Ray Tubes (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

【課題】画質の劣化を抑制でき、かつビット長の短い符号化データを、小さいハードウェア規模で生成可能な画像処理装置を提供する。
【解決手段】LCDソースドライバ2は、RGBデータ受信回路11と、RGB/YCC変換回路12と、LCP(Local Color Pallet)符号化回路13と、メモリ14と、LCP復号化回路15と、YCC/RGB変換回路16と、LCD駆動回路17とを有する。画素ブロックごとに、画素値に応じた5個の分割領域を生成し、各分割領域をさらに二分割して計10個のサブ領域を生成する。その際、輝度および色差の変化が大きい方向に沿って分割領域を二分割してサブ領域を生成するため、輝度および色差の変化に合致したサブ領域を生成できる。16画素を4つの代表色に置換するため、符号化データのビット長を削減でき、符号化データを格納するメモリ14の容量も削減でき、コスト削減が図れる。
【選択図】図1

Description

本発明は、画素ブロックごとに符号化を行う画像処理装置に関する。
カラーパレットを利用した画像圧縮はソフトウェアによる実現が広く研究されている。この種のカラーパレット技術の中に、ローカルカラーパレットに関する技術がある。ローカルカラーパレットは、コンピュータグラフィックにおけるテクスチャ圧縮技術に主として利用されている。よく知られた技術として、DirectXのDXTC (Direct X Texture Compression)はS3TCを基礎としたものである。またOpen-GL ES 2.0の拡張オプションとして、ETC(Ericson Texture Compression)が提案されている。
しかしながら、これらの技術はすべて、CPUやGPUといったプロセッサによって実行されるソフトウェアにより実現されている。このことは、プロセッサが必要であることを意味する。LCD駆動用のソースドライバ回路等の周辺回路にプロセッサを内蔵させることはコスト的に不利であり、携帯機器のLCD駆動用として上記の技術を適用するのは望ましくない。
ローカルカラーパレットをハードウェアで実現することに関連した技術として、次の技術が知られている。特許文献1はS3TCに関する一連の特許提案のうちで最新の提案であり、デコーダのみがハードウェアで実現されており、エンコーダはソフトウェアで実現されている。特許文献2も同様に、デコーダだけがハードウェアで実現されている。Open-GL ES 2.0に関しては、ETCはiPACKMANNと名称を変え、非特許文献1に解説されている。これは携帯電話を念頭においたテクスチャ圧縮の応用であるが、これでもデコーダのみがハードウェア実現されており、エンコーダはソフトウェアで実現されており、我々の目的とするソースドライバ内蔵でのRAM圧縮には応用できない。
非特許文献2は、S3TCエンコーダの実時間処理を目指して処理を行うはじめてのアプローチである。代表色を決定するためのPCA(Principal Component Analysis)をGPUで行うことで、高速に処理できる点で従来技術を大きく改善しているが、GPUの利用を前提としており、ハードウェアのコストが高くなる。
米国登録特許7058218 (R. A. Drebin et al, Method of and apparatus for compressing and uncompressing image data. Jun. 6, 2006) 米国登録特許7043087 (Z. Hong et al. Image Processing System, May 9, 2006) 論文 Jacob Stroem, T.Akenine-Moeller, iPACKMAN: High-Quality, Low-complexity Texture Compression for Mobile Phones, Graphics Hardware 2005, pp.63-70, ACM Oskar Alexanderson, Christoffer Gurell, "Compressing Dynamically Generated Textures on the GPU," thesis for a diploma in computer science, Department of Computer Science, Faculty of Science, Lund University. 2006. (Available from graphics.cs.lth.se/research/papers/gputc2006/thesis.pdf, extended paper for ACM SIGGRAPG 2006 P-80.)
本発明は、画質の劣化を抑制でき、かつビット長の短い符号化データを、小さいハードウェア規模で生成可能な画像処理装置を提供するものである。
本発明の一態様によれば、隣接するm×n画素(m、nは正の整数)からなる画素ブロックのそれぞれごとに、前記画素ブロック内の前記m×n画素の画素値に応じて、p個(pは正の整数)の分割領域を設定する分割領域設定手段と、
前記p個の分割領域の画素値に基づいて、前記p個の分割領域のそれぞれを2つのサブ領域に分割して、2p個のサブ領域を設定するサブ領域設定手段と、
前記2p個のサブ領域のそれぞれについて、代表色候補を設定する代表色候補設定手段と、
前記2p個のサブ領域のそれぞれに対応する前記代表色候補の中から複数の代表色を選択する代表色選択手段と、
前記画素ブロック内の各画素を前記複数の代表色のいずれかに置換する代表色置換手段と、
前記画素ブロックのそれぞれごとに、前記複数の代表色に応じたビット列と、前記代表値置換手段で置換した結果に応じたビットマップデータとを含む符号化データを生成する符号化手段と、を備えることを特徴とする画像処理装置が提供される。
本発明によれば、画質の劣化を抑制でき、かつビット長の短い符号化データを小さいハードウェアで生成することができる。
以下、図面を参照しながら、本発明の一実施形態について説明する。
図1は本発明の一実施形態による画像処理装置を含む液晶表示装置の概略構成を示すブロック図である。図1の液晶表示装置は、RGBデータ送信回路1と、LCD(Liquid Crystal Display)ソースドライバ2と、LCDパネル3とを備えている。LCDソースドライバ2は、RGBデータ受信回路11と、RGB/YCC変換回路12と、LCP(Local Color Pallet)符号化回路13と、メモリ14と、LCP復号化回路15と、YCC/RGB変換回路16と、LCD駆動回路17とを有する。
本発明の一実施形態による画像処理装置は、少なくともLCP符号化回路13を含んでいる。メモリ14を含んでいてもよいが、メモリ14は画像処理装置の外側に設けてもよい。メモリ14は読み書きが可能なRAM(Random Access Memory)である。
RGBデータ送信回路11は、例えば不図示のホストコンピュータに内蔵されており、RGBデータを送信する。このRGBデータは、RGBデータ受信回路11により受信される。RGB/YCC変換回路12は、RGBデータを輝度データと色差データからなるYCCデータに変換する。LCP符号化回路13は、後述するように、隣接するm×n画素(m、nは正の整数)からなる画素ブロックを単位として、符号化データを生成する。この符号化データはメモリ14に格納される。LCP復号化回路15は、メモリ14に格納された符号化データを読み出して復号化処理を行って、YCCデータを生成する。YCC/RGB変換回路16は、生成されたYCCデータをRGBデータに変換する。LCD駆動回路17は、変換されたRGBデータを階調電圧に変換して、LCDパネル3の各信号線に供給する。
図2はLCP符号化回路13の概略的な処理手順を示すフローチャートである。RGB/YCC変換回路12からYCCデータを受け取り(ステップS1)、受け取ったYCCデータを画素ブロックごとに分解する(ステップS2)。次に、画素ブロックごとに符号化処理を行って、符号化データを生成する(ステップS3)。次に、符号化データをメモリ14に格納する(ステップS4)。
画素ブロックを構成する画素数に特に制限はないが、以下では画素ブロックが縦横4画素で構成される場合について説明する。
図3は図2のステップS3の詳細な処理手順を示すフローチャートである。図3の処理は、画素ブロックごとに行われる。まず、複数の代表色候補(color representative candidates)を設定する(ステップS11)。次に、設定した複数の代表色候補の中から複数の代表色を選択する(ステップS12)。次に、画素ブロック内の各画素の色を複数の代表色のいずれかに置換して、符号化データを生成する(ステップS13)。
図4は図3のステップS11の詳細な処理手順を示すフローチャートである。まず、画素ブロック内の各画素の輝度値の中から最大輝度値MAXと最小輝度値MINを求め、また各画素の輝度値を平均化した平均輝度値MIDを計算する(ステップS21)。
次に、最大輝度値MAX、最小輝度値MINおよび平均輝度値MIDを用いて、色量子化(color quantization)のための6種類の閾値を求める(ステップS22)。このステップS22の詳細については後述する。
次に、6種類の閾値により分割される5つの分割領域のそれぞれを2つずつに分割して、計10個のサブ領域を設定する(ステップS23)。次に、10個のサブ領域のそれぞれごとに代表色候補を設定する(ステップS24)。
図5は図3のステップS12の詳細な処理手順を示すフローチャートである。まず、10個のサブ領域のそれぞれごとに設定された10個の代表色候補を発生頻度順に並び換える(ステップS31)。
次に、最も発生頻度の高い代表色候補を第1の代表色として選択する(ステップS32)。次に、第1の代表色に基づいて、残りの代表色候補の中から第2〜第4の代表色を選択する(ステップS33)。
図6は図4のステップS22の詳細な処理手順を示すフローチャートであり、図7は図4のステップS22の処理を説明する図である。まず微小値DELTA1、DELTA2、DELTA3、DELTA4を用意する。これら微小値は、最大値MAX、最小値MINおよび平均値MIDよりもはるかに小さい値を想定している。そして、(MIN+DELTA1)と(MID−DELTA2)の中間輝度値をMIDLとする。同様に、(MIN+DELTA3)と(MAX−DELTA4)の中間輝度値をMIDUとする(ステップS41)。
このように、中間輝度値MIDU、MIDLを計算する際に、MINとMAXの値をそのまま用いない理由は、MINやMAXを取る画素の数が多い場合に、中間輝度値がその影響を受けることを避けるためである。この種の問題は、特にMINが数多く発生するPC画面のような人工的な画像で生じうる。また、MINとMAXの平均値MIDを計算する際にも生じうる。
図6のように、微小値DELTA1〜5を加味して中間輝度値MIDU、MIDLを検出することにより、MINとMAXに影響されずに中間輝度値MIDU、MIDLを算出できる。
一般に、4×4画素からなる画素ブロック内では、画素同士の相関が高く、同じ色を取る確率が高い。すなわち、画素ブロック内の各画素の色が異なることは少なく、色数は1色になる確率が高い。もちろん、これは統計的な性質であり、個別の画像に関して常に成立するわけではない。
このような統計的性質を考慮した場合に、色数が多少少なくても、例えば4色で画素ブロックを近似しても、画質はそれほど劣化しないことが経験的に知られている。画素ブロックから4色を得るには、画素ブロック内の各画素の色を最低4色に分類する必要がある。
そこで、本実施形態では、画素ブロック内の色を4色に分類するために、画素ブロック内の各画素を輝度値に応じて5つの領域に分割することとし、そのために図6の手法で中間輝度値MIDL、MIDUを設定した。
ところで、本実施形態において、色差値ではなく、輝度値に応じて5つの領域に分割した理由は、色情報の空間的変化は輝度情報の空間的変化より小さいという事実が一般に知られているためである。本実施形態は、後述するように、まず輝度値に応じて5つの領域に分割した後、輝度値または色差値に応じて、各分割領域を2つのサブ領域に分割する。
図6のステップS41にて中間輝度値MIDU、MIDLが算出されると、次に5つの分割領域を生成するための6つの閾値thY0〜thY5を、以下の(1)〜(6)式により計算する(ステップS42)。
thY0=MINY …(1)
thY1=(MINY+MIDYL)/2 …(2)
thY2=MIDY−(MIDY−MIDYU)/2 …(3)
thY3=MIDY+(MIDYU−MIDY)/2 …(4)
thY4=MIDY−(MAXY−MIDYU)/2 …(5)
thY5=MAXY …(6)
次に、各分割領域1〜5ごとに、輝度値の平均値と、色差値Cb,Crの平均値とを計算する(ステップS43)。これら平均値を計算する理由は、平均値の最も大きな方向(輝度方向または色差方向)に各分割領域を二分割するためである。
図8は分割領域1〜5を模式的に示す図である。Y(輝度)軸方向に6つの閾値thY0〜thY5が設けられ、各閾値を境界として分割領域1〜5が設定される。
図9〜図12は5つの分割領域をさらに10個のサブ領域に分ける処理(図4のステップS23)を模式的に示す図である。図9は分割領域5についてCr方向とCb方向にそれぞれ二分割した例を示しているが、実際には、二方向に同時に分割されることはなく、一方向のみに分割される。より具体的には、分割領域内のY方向、Cr方向またはCb方向に二分割される。
図10では、Cb方向に分割した例と、Cr方向に分割した例を模式的に図示している。なお、Y方向に分割した例は省略しているが、Y方向に分割することもありうる。
図11は分割領域1〜5のそれぞれを2分割した例を示しており、分割領域1、5はCb方向に二分割し、分割領域2〜4はCr方向に二分割している。
図12は、図11の例で、10個のサブ領域の画素値の平均値を星印で図示している。これら10個のサブ領域の画素値の平均値が代表色候補となる。
図13および図14は図6のステップS41の詳細な処理手順を示すフローチャートであり、中間輝度値MIDU、MIDLを計算する処理を示している。画素ブロック内の各画素の輝度値を3つの領域に分類する。下領域(lower region)は、MIN〜(MIN+DELTAL)の範囲である。中領域(middle region)は、(MIN+DELTAL+1)〜(MAX−DELTAU−1)の範囲である。上領域(upper region)は、(MAX−RELTAU)〜MAXの範囲である。
まず、下領域、中領域および上領域内の画素数を計測するための変数CNT_YL、CNT_Y、CNT_YUとをいずれもゼロに設定する。また、下領域、中領域および上領域内の輝度値の総和を計算するための変数SUM_YL、SUM_Y、SUM_YUをいずれもゼロに設定する。また、下領域、中領域および上領域に画素が存在することを示すフラグFLAGYL、FLAGY、FLAGYUをいずれもゼロに設定する。また、微小値DELTAL、DELTAUを設定する(ステップS51)。
次に、画素ブロック内の全画素についての処理が終了したか否かを判定し(ステップS52)、まだ処理が終了していない画素があれば、その画素が下領域、中領域および上領域のいずれに属するかを判定する(ステップS53)。
画素が下領域に属する場合には、変数CNT_YLを1だけカウントアップし、変数SUM_YLにその画素値(輝度値)を加算し、フラグFLAG_YLを真(true)に設定する(ステップS54)。
画素が中領域に属する場合には、変数CNT_Yを1だけカウントアップし、変数SUM_Yにその画素値(輝度値)を加算し、フラグFLAG_Yを真(true)に設定する(ステップS55)。
画素が中領域に属する場合には、変数CNT_YUを1だけカウントアップし、変数SUM_YUにその画素値(輝度値)を加算し、フラグFLAG_YUを真(true)に設定する(ステップS56)。
次に、フラグFLAG_Yが真か否かを判定し(ステップS57)、真であれば中間輝度値MIDY=ROUND(SUM_Y/CNT_Y)を計算する(ステップS58)。ここで、関数ROUNDは丸め処理(例えば四捨五入)を行う関数である。偽(false)であれば、中間輝度値MIDYを画素ブロック全体の平均値AVEYとする(ステップS59)。
次に、フラグFLAG_YLが真か否かを判定し(ステップS60)、真であれば中間輝度値MID_YL=ROUND(SUM_YL/CNT_YL)を計算する(ステップS61)。偽であれば、MID_YL=ROUND((MIN_Y+MAX_Y)/2)を計算する(ステップS62)。
次に、フラグFLAG_YUが真か否かを判定し(ステップS63)、真であれば中間輝度値MID_YU=ROUND(SUM_YU/CNT_YU)を計算する(ステップS64)。偽であれば、MID_YU=ROUND((MIN_Y+MAX_Y)/2)を計算する(ステップS65)。
図14のフローチャートには割算の処理が含まれている。ただし、割算の分母は、変数CNT_Y、CNT_YL、CNT_YUであり、最大値MAXは4×4=16である。これは、8×8の乗算器(除算器)を設ける必要はなく、8×5の乗算器があれば済むことを意味している。より正確には、16で割る場合はシフトするだけで済むため、15までの除算を行えばよく、8×4の乗算器があればよい。この乗算器による演算は、最後に1回だけ行えばよい。
従来のCPUやGPUを利用したプログラムでは、行列固有値を計算する場合に乗算を多用しており、8×8の精度を必要としている。これと比較した場合、分割法による色量子化であり、本質的には1パスで計算を終了できる。
一方、従来のPCAやSVDを利用するアルゴリズムでは、乗算が数値計算で多用され、ハードウェアでの実現を考えた場合、致命的に大きな回路サイズが必要となる。本実施形態は、このような問題を解決したアルゴリズムになっている。
図15および図16は図6のステップS43の詳細な処理手順を示すフローチャートであり、各分割領域1〜5ごとに平均輝度値および平均色差値を計算する処理を行う。まず、各分割領域内の画素数を計測するための変数CNT_Y1〜CNT_Y5をゼロに設定する。また、各分割領域内の輝度値の総和SUM_Y1〜SUM_Y5と、色差値の総和SUM_Cb1〜SUM_Cb5、SUM_Cr1〜SUM_Cr5とをゼロに設定する。また、各分割領域内に画素が存在するか否かを示すフラグFLAG_Y1〜FLAG_Y5を偽(false)に設定する。各分割領域内の最大輝度値MAX_Y1〜MAX_Y5と、最大色差値MAX_Cb1〜MAX_Cb5、MAX_Cr1〜MAX_Cr5とをゼロに設定する。また、各分割領域内の最小輝度値MIN_Y1〜MIN_Y5と、最小色差値MIN_Cb1〜MIN_Cb5、MIN_Cr1〜MIN_Cr5とをゼロに設定する(ステップS71)。
次に、画素ブロック内の全画素についての処理が終了したか否かを判定し(ステップS72)、処理が終了していない画素があれば、対象画素の輝度値が分割領域1に属するか否かを判定する(ステップS73)。ステップS73の判定がYESの場合には、変数CNT_Yを1だけカウントアップし、変数SUM_Y1、SUM_Cb1、SUM_Cr1に、対象画素の画素値Y、Cb、Crをそれぞれ加算する。また、対象画素の画素値Y、Cb、Crを変数MAX_Y1、MAX_Cb1、MAX_Cr1とそれぞれ比較して、大きい方の値を変数MAX_Y1、MAX_Cb1、MAX_Cr1に設定する。また、対象画素の画素値Y、Cb、Crを変数MIN_Y1、MIN_Cb1、MIN_Cr1とそれぞれ比較して、小さい方の値を変数MIN_Y1、MIN_Cb1、MIN_Cr1に設定する。また、FLAG_Y1を真に設定する(ステップS74)。
ステップS73、S74と同様の処理を、各分割領域内の画素について行う。これにより、SUM_Y1〜SUM_Y5、SUM_Cb1〜SUM_Cb5、SUM_Cr1〜SUM_Cr5、MAX_Y1〜MAX_Y5、MAX_Cb1〜MAX_Cb5、MAX_Cr1〜MAX_Cr5、MIN_Y1〜MIN_Y5、MIN_Cb1〜MIN_Cb5、MIN_Cr1〜MIN_Cr5が計算される。
次に、フラグFLAG_Y1が真か否かを判定する(ステップS75)。真の場合には、分割領域1の平均輝度値AVE_Y1=ROUND2(SUM_Y1/CNT_Y1)、平均色差値AVE_Cb1=ROUND2(SUM_Cb1/CNT_Y1)、AVE_Cr1=ROUND2(SUM_Cr1/CNT_Y1)を計算する(ステップS76)。偽の場合には、平均輝度値AVE_Y1と平均色差値AVE_Cb1、AVE_Cr1をいずれもゼロに設定する(ステップS77)。
フラグFLAG_Y2〜FLAG_Y4についても同様の処理を行う。その後、フラグFLAG_Y5についても同様の処理を行う(ステップS78〜S80)。
図17および図18は図4のステップS23の詳細な処理手順を示すフローチャートであり、10個のサブ領域を設定する処理を行う。まず、各分割領域を輝度Y方向、色差Cb方向、色差Cr方向のどちらに二分割するかを示すフラグdFlag1〜5をゼロに初期設定する(ステップS81)。
次に、5つの分割領域すべてについての処理が終了したか否かを判定し(ステップS82)、まだ終了していない分割領域iが存在する場合には、その分割領域iの最大輝度値MAX_Yiと最小輝度値MIN_Yiの差分RANGE_Yiと、最大色差値MAX_Cbiと最小色差値MIN_Cbiとの差分RANGE_Cbiと、最大色差値MAX_Criと最小色差値MIN_Criとの差分RANGE_Criとを計算する(ステップS83)。
次に、差分RANGE_Yi、RANGE_Cbi、RANGE_Criの中から最大値MAXを選択する(ステップS84)。RANGE_Yiが最大値MAXの場合には、dFlagiを1に設定し、輝度Y方向の閾値thYifineを分割領域iの平均輝度値AVE_Yiとする(ステップS85)。RANGE_Cbiが最大値MAXの場合には、dFlagiを2に設定し、色差Cb方向の閾値thCbifineを分割領域iの平均色差値AVE_Cbiとする(ステップS86)。RANGE_Criが最大値MAXの場合には、dFlagiを3に設定し、色差Cr方向の閾値thCrifineを分割領域iの平均色差値AVE_Criとする(ステップS87)。
以上の処理により、各分割領域1〜5ごとに、輝度値の差分値および色差値の差分値のうち最大のものが選択される。
その後、必要に応じて、10個のサブ領域の数を削減する処理を行う。まず、各分割領域1〜5ごとに、差分RANGE_Yi、RANGE_Cbi、RANGE_Criの中から最大値MAXを選択する(ステップS88)。
次に、5つの分割領域のうち、任意の2つの分割領域間で、ステップS88で選択した最大値MAX同士を比較する(ステップS89)。なお、述語isLEXY(XとYは領域を示す番号)は、領域Xと領域Yに関する範囲の最大MAX値の大小を比較した結果を示す。isLEは”is least than or equal to”の略であり、値としては真偽を取る。〜は否定演算であり、XとYが逆順になった述語は、元の述語の真偽値が否定された値に等しいので、XとYの組合せは片一方で計算してその否定を取ればよい。そして、最大値MAXの小さい分割領域に対応するフラグdFlagをゼロに設定する(ステップS90)。
これらステップS88〜S90の処理を行うことにより、分割領域の数を削減でき、ひいてはサブ領域の数も削減でき、処理の簡略化を図ることができる。
図19は図4のステップS24の詳細な処理手順を示すフローチャートであり、10個のサブ領域のそれぞれごとに代表色候補を設定する処理を行う。
まず、10個のサブ領域のそれぞれに属する画素数を計測するための変数CNT_Y1〜CNT_Y5、CNT_1C〜CNT_5Cをゼロに設定する。また、10個のサブ領域のそれぞれに属する画素の輝度値の総和SUM_Y1〜SUM_Y5、SUM_Y1C〜SUM_Y5Cをゼロに設定する。また、10個のサブ領域のそれぞれに属する画素の色差値Cbの総和SUM_Cb1〜SUM_Cb5、SUM_Cb1C〜SUM_Cb5Cをゼロに設定する。また、10個のサブ領域のそれぞれに属する画素の色差値Crの総和SUM_Cr1〜SUM_Cr5、SUM_Cr1C〜SUM_Cr5Cをゼロに設定する。また、10個のサブ領域に画素が存在するか否かを示すフラグFLAG_Y1〜FLAG_Y5、FLAG_Y1C〜FLAG_Y5Cを偽に設定する(ステップS101)。
次に、画素ブロック内の全画素について処理が終了したか否かを判定する(ステップS102)。処理が終了していない画素が存在していれば、対象画素が10個のサブ領域のうちどの領域に属するかを判定する(ステップS103)。
サブ領域1と判定された場合は、変数CNT_Y1を1だけカウントアップし、変数SUM_Y1に対象画素の輝度Y値を累積加算し、変数SUM_Cb1に対象画素の色差Cb値を累積加算し、変数SUM_Cr1に対象画素の色差Cr値を累積加算する。また、フラグFLAG_Y1を真に設定し、ビットマップを生成するための変数BITMAP、BITMAPDにサブ領域1に対応する値を設定する。ここで、変数BITMAPDは、二分割することで追加された5領域分の情報を格納するためのものである。
サブ領域2〜10についても、上述したステップS103〜S104と同様の処理を行う。
次に、サブ領域1に対応するフラグFLAG_1が真か否かを判定する。真であれば、サブ領域1内の代表色候補を、以下の(7)〜(9)式により計算する(ステップS106)。
REP_Y1=ROUND2(SUM_Y1/CNT_Y1) …(7)
REP_Cb1=ROUND2(SUM_Cb1/CNT_Cb1) …(8)
REP_Cr1=ROUND2(SUM_Cr1/CNT_Cr1) …(9)
ここで、関数ROUND2は、必要に応じて丸め処理を行うことを示している。より具体的には、ラフな画像の場合には、例えば輝度Yに関しては6ビットに丸め、色差Cb,Crに関しては5ビットに丸める。平坦な画像の場合には、8ビット精度を維持するために丸め処理を行わない。
偽であれば、サブ領域1内の代表色候補REP_Y1、REP_Cb1、REP_Cr1をいずれもゼロに設定する(ステップS107)。
サブ領域1〜5、1C〜4Cについても上記ステップS105〜S107と同様の処理を行う。その後、サブ領域5Cについて上記ステップS105〜S107と同様の処理を行う(ステップS108〜S110)。
図21は図5のステップS33の詳細な処理手順を示すフローチャートであり、代表色候補の中から例えば4種類の代表色を選択する処理を行う。
まず、10個のサブ領域ごとに計算された10個の代表色候補の中から、最も発生頻度の高い代表色候補を抽出して第1の代表色とする(ステップS111)。抽出した第1の代表色は代表色リストに入れられる。
次に、第1の代表色を代表色候補から除外する(ステップS112)。次に、予め定めた数の代表色が得られたか否かを判定する(ステップS113)。まだ、得られていなければ、次の代表色を計算し、計算された代表色を代表色リストに入れる(ステップS114)。
ステップS114の処理の詳細は後述するが、例えば遠距離法を用いて代表色を選択する。遠距離法は、カラーパレットの処理で用いた公知例はあるが、ローカルカラーパレットで用いた例はない。
上記ステップS114では、代表色候補のそれぞれについて、第1の代表色との差分を検出し、差分が最大のものを第2の代表色として選択し、次に差分が大きいものを第3の代表色として選択し、次に差分が大きいものを第4の代表色として選択する。
図22は図21のステップS114の詳細な処理手順を示すフローチャートであり、第2〜第4の代表色を選択する処理を行う。まず、画素ブロック内の全画素について処理を行ったか否かを判定し(ステップS121)、まだ処理を行っていない画素が存在する場合には、対象画素の色と代表色との差分(エラー)を計算する(ステップS122)。次に、対象画素に最も近い代表色を選択する(ステップS123)。選択した代表色に対応するビットマップデータを対象画素に割り振る(ステップS124)。
図22の処理を行うことで、画素ブロック内の各画素の色を代表色に置き換えたビットマップを生成できる。
図23および図24は図22の処理の詳細手順を示すフローチャートである。まず、以下の(10)〜(13)式に基づいて、対象画素の画素値(輝度値と色差値)と第1〜第4の代表色の画素値(輝度値と色差値)との差分(絶対値)を計算する(ステップS131)。
Dif1=ABS(Y−1stColorY)+ABS(CB−1stColorCB)+ABS(CR−1stColorCR)
…(10)
Dif2=ABS(Y−2ndColorY)+ABS(CB−2ndColorCB)+ABS(CR−2ndColorCR)
…(11)
Dif3=ABS(Y−3rdColorY)+ABS(CB−3rd ColorCB)+ABS(CR−3rd ColorCR)
…(12)
Dif4=ABS(Y−4thColorY)+ABS(CB−4th ColorCB)+ABS(CR−4th ColorCR)
…(13)
次に、差分Dif1よりDif2の方が大きいか否かを判定し(ステップS132)、YESの場合は変数Dif12に差分Dif1を設定し、かつ差分Dif1に対応する第1の代表色のID=1を変数minId12に設定する(ステップS133)。NOの場合は変数Dif12に差分Dif2を設定し、かつ差分Dif2に対応する第2の代表色のID=2を変数minId12に設定する(ステップS134)。
同様にして、差分Dif3とDif4を比較して、変数Dif34とminId34を設定する(ステップS135〜S137)。
次に、変数Dif12がDif34より小さいか否かを判定し(ステップS138)、YESの場合は、変数minIdに変数minId12の値を設定する(ステップS139)。NOの場合は、変数minIdに変数minId34の値を設定する(ステップS140)。
以上のステップS131〜S140の処理により、差分が最小な代表色のIDが変数minIdに設定される。
次に、変数minId=1の場合には、第1の代表色を選択して、変数BITMAPに第1の代表色に対応するビット列00を設定する(ステップS142)。同様に、変数minId=2〜4の場合も、それぞれ第2〜第4の代表色を選択して、変数BITMAPに第2〜第4の代表色に対応するビット列01、10、11を設定する(ステップS143〜S145)。
図25は図1のLCP復号化回路15の処理手順を示すフローチャートである。まず、メモリ14に格納された符号化データを取得する(ステップS151)。次に、取得した符号化データを画素ブロックごとに分類する(ステップS152)。次に、画素ブロックごとに、符号化データを復号する(ステップS153)。次に、復号化して得られたYCCデータを一時的に格納する(ステップS154)。
図26は図25のステップS153の詳細な処理手順を示すフローチャートであり、復号処理を行う。まず、符号化データの中に含まれる代表色の情報を抽出する(ステップS161)。次に、符号化データの中に含まれるビットマップの情報を抽出する(ステップS162)。次に、抽出した代表色の情報とビットマップの情報から、符号化前の画素ブロックデータを復元する(ステップS163)。
以下、上述したLCP符号化回路13による符号化処理の具体例について説明する。図27は4×4画素からなる画素ブロックの輝度値Yおよび色差値Cb,Crの具体例を示す図である。図27の画素ブロックは、4つの異なる輝度値Yと、4つの異なる色差値Cbと、4つの異なる色差値Crとを有する。より具体的には、図27の画素ブロックは赤青白灰の4色からなる。これら4色は、そのうちのどの2色をベースにしても、他の2色を導出できない。このように、本実施形態では、互いに関連のない4色を代表色として選定することを前提としている。
図28は図27の画素ブロックの輝度値Yと色差値Cb,Crをまとめた図である。図示のように、輝度値Yの最大値MAXは255、最小値MINは29、平均値AVEは120である。色差値Cbの最大値MAXは226、最小値MINは−76、平均値AVEは−8である。色差値Crの最大値MAXは179、最小値MINは0、平均値AVEは89である。
図29は図27の輝度値を解析した結果を示す図である。輝度値の総計値は1924で、平均値は120になる。最小値MINと平均値の間の輝度値YLの総計値は608で、その平均値は76になる。最大値MAXと平均値の間の輝度値YUの総計値は493で、その平均値は164になる。
図30は図27の輝度値から算出される6つの閾値thY0〜thY5を示す図である。閾値thY0〜thY5の計算は、図7に示した手順で行う。これら6つの閾値thY0〜thY5により、画素ブロックは5つの分割領域に分割される。
図31は図27の画素ブロック内の輝度値Yおよび色差値Cb,Crを5つの分割領域に割り当てた例を示す図である。図27の画素ブロックは4種類の輝度値および色差値しか持たないため、5つの分割領域のうち1つには仮の輝度値および色差値が割り当てられる。図31の例では、分割領域Y3に仮の輝度値および色差値を割り当てている。仮の値には*印を付与している。
図31では、分割領域(Y1、Cb1、Cr1)には(29、226、−29)、分割領域(Y2、Cb2、Cr2)には(76、−76、179)、分割領域(Y3、Cb3、Cr3)には(256、256、256)、分割領域(Y4、Cb4、Cr4)には(164、8、15)、分割領域(Y5、Cb5、Cr5)には(255、0、0)を割り当てている。
図31において、RNGは最大値MAXと最小値MINとの差分値、DFLAGとはサブ領域を生成する方向を示すフラグである。
図32はサブ領域を生成する場合の閾値th_fine1〜5を示す図である。分割領域1、2および5では輝度方向にサブ領域が生成され、分割領域4では色差Cb方向にサブ領域が生成される例を示している。分割領域3は仮の領域であるため、サブ領域は生成されない。閾値th_fine1〜5は、各分割領域の平均輝度値または平均色差値である。
図33は分割領域1〜5における輝度値または色差値の最大値MAXと最小値MINとの差分値RangeY、RangeCb、RangeCrと、これら3つの差分値の最大値MAXとを示す図である。領域1、2、5では差分値がいずれもゼロであるため、例えば輝度方向にサブ領域が生成される。また、領域4では色差Cb方向の差分値が最大であるため、色差Cb方向にサブ領域が生成される。
図34は図27の画素ブロックのビットマップデータを生成する手法を説明する図である。図34のビットマップ1は、16画素のそれぞれが分割領域1〜5のどれに属するかを示している。ビットマップ2は、16画素のそれぞれに対応する分割領域がどの方向にサブ領域を生成するかを示している。ビットマップ3は、ビットマップ1,2の情報を合成したものであり、ビットマップ1で「5」の値が「10」の値に変更されて、10領域の情報として表現している。
これにより、画素ブロック内の各画素を10個のサブ領域に割り振ることができる。
図35は図27の画素ブロックに対応する色空間のデータ分布を示す図である。図35(a)は画素ブロック内の4色を(ハッチを変えて)示した図、図35(b)は輝度Y、色差Cb、色差Crの3軸からなる色空間内に4色をプロットで示した図である。
図36は図27の画素ブロックを10個のサブ領域に分割した図である。図36では、5つの分割領域1〜5のそれぞれを2分割して10個のサブ領域1〜5と1C〜5Cを生成している。分割領域の境界線は実線で、サブ領域の境界線は破線で示している。図36の星印は、画素ブロック内の4色の値を示している。
図37は図27の画素ブロックに対応する10個のサブ領域1〜5、1C〜5Cの代表値候補を示す図である。図37では、輝度値Yの代表値候補REPYと、色差値Cbの代表値候補REPCbと、色差値Crの代表値候補REPCrとを示している。図37では、各サブ領域1〜5、1C〜5Cの中に含まれる画素の数をCNTで表している。
図38は図37のCNTの順に並び換えた図である。図38では、出現頻度の高いサブ領域を下側に配置している。図38からわかるように、画素が存在するサブ領域は4つだけであり、領域ID=2のサブ領域2内の画素数が最も多い。したがって、このサブ領域2に属する8画素の平均色を第1の代表色として選択する。
図39は遠距離法を利用して代表色候補の中から第2〜第4の代表色を選択する手法を説明する図である。遠距離法では、第1の代表色との色の違いが最も大きいサブ領域を検出し、検出されたサブ領域の平均色を第2の代表色とする。次に、残りのサブ領域の中から、第2の代表色との色の違いが最も大きいサブ領域を検出し、検出されたサブ領域の平均色を第3の代表色とし、残りのサブ領域を第4の代表色とする。
なお、ここでの「距離」とは、色と色の間の距離である。YCbCrそれぞれの差を加算して距離としている「マンハッタン距離」をここでは採用しているが、一般的にはこのマンハッタン距離に限定する必然はない。他の距離を利用することも可能である。遠い距離の色から先に採用することで、画質劣化を少なくしている。例えば、距離の近い緑色の画素で、すこしだけ色の異なったものが多数存在しており、その中にたったひとつではあるが、赤色の画素がある場合を想定する。このような場合、赤色の画素は発生頻度が小さくても、そのデータを失うことは、画像としては劣化が大きい。この意味において、遠い距離にある色から先に採用していく。この考えが遠距離法である。
図39では、領域ID=10、4、1の3つのサブ領域5C、4、1のそれぞれについて、第1の代表色の輝度値Yとの差分と、第1の代表色の色差値Cb、Crとの差分とを算出して、それらを足し合わせる。この結果、図39に示すように、サブ領域1の差分560が最も大きいことがわかる。そこで、サブ領域1(ID=1)の平均色を第2の代表色として選択する。距離計算に関し補足する:例えば、ソート番号9(領域ID=10)での距離は、Yの差180、Cbの差80、Crの差176を加算して、180+80+176=436となり、第一色YCC=(76、−80、176)と領域ID=10の色YCC=(256、0、0)との距離が436となっている。
次に、残りのサブ領域5C、4のそれぞれについて、第2の代表色の輝度値Yとの差分と、第2の代表色の色差値Cb、Crとの差分とを算出して、それらを足し合わせる。この結果、図39に示すように、サブ領域5Cとの差分が最も大きいことがわかる。そこで、サブ領域5C(ID=10)の平均色を第3の代表色として選択し、最後に残ったサブ領域4(ID=4)の平均色を第4の代表色として選択する。
図40は第1〜第4の代表色とビットマップデータとを用いて符号化データを生成する手法を説明する図である。図示のように、第1〜第4の代表色は、YCCデータを合わせて16ビットで表され、ビットマップデータは各画素情報が2ビットで表されるため、2×16=32ビットを要する。その結果、符号化データのビット数は16×4+2×16=96ビットとなる。なお、もともとは8x3x16=384ビットであったが、これが、96ビットに削減できたということである。
図41は図27の画素ブロックに対応する符号化データを示す図である。ビットマップを構成する16画素のそれぞれには、第1〜第4の代表色のいずれかが割り当てられる。例えば、ビットマップの「00」は赤色に対応し、「01」は青色に対応し、「10」は白色に対応し、「11」は灰色に対応する。
画素ブロック内の画像の変化が大きい場合、すなわちラフな画像の場合は、図40および図41で示したように、第1〜第4の代表色をいずれも16ビットで表現する必要があるが、画素ブロック内の画像の変化が少ない場合、すなわち平坦な画像の場合は、16ビットの精度は必要とされない。この場合は、第1の代表色のみ24ビットで表現し、第2〜第4の代表色は第1の代表色との差分値で表現して、符号化データのビット数の削減を図るのが望ましい。
図42は平坦な画像の符号化データのビット構成を示す図である。図42(a)に示すように、第1の代表色は、YCCデータのそれぞれが8ビットで表現され、計24ビットを要する。一方、第2〜第4の代表色は、第1の代表色との差分値で表現される。この差分値のビット数は、図42(b)に示すように、差分値の大きさに応じて、総ビット数が変化する。差分値が7以下であれば、総ビット数が96以下になるため、図40よりもビット数を削減できる。
図43は図42の変形例を示す図である。図42は第1の代表色を中央値としたが、図43は第1の代表色を最小値MINとしている。図42の場合、第1の代表色を中央とする両側に第2〜第4の代表色が来る可能性があるが、図43の場合、第1の代表色のマイナス側に第2〜第4の代表色が来ることはない。このため、図43(b)に示すように、図43の方がビット数を削減できる。
このように、本実施形態では、画素ブロック内の画像が平坦かラフかによって、符号化データの生成方法を変えている。画素ブロック内の画像が平坦かラフかは、画素ブロック内の活動量によって判断する。
図44は画素ブロック内の活動量を判定する手法を説明する図である。図44の各升目(画素)内の数字は画素値(輝度値および色差値)を示している。LCP符号化回路13は、水平方向の画素値の変化量と垂直方向の画素値の変化量をそれぞれ検出して、両方の変化量を足し合わせた値を活動量として扱う。
図44の例では、水平方向の画素値の変化量は0であり、垂直方向の画素値の変化量は、1〜2行目が4×(120−115)で、2〜3行目が4×(140−120)で、3〜4行目が4×(145−140)であり、総計では120となる。したがって、活動量は、0+120=120である。
LCP符号化回路13は、活動量が所定の閾値を超えた場合にはラフな画像と判定し、閾値以下の場合には平坦な画像と判定する。
より詳細には、輝度値Yと色差値Cb,Crのそれぞれ(YCC)について活動量を計算し、すべての活動量が個々の閾値以下の場合に平坦な画像と判定し、YCCのうち少なくとも一つの活動量が閾値を超えていれば、ラフな画像と判定する。このように判定する理由は、平坦な画像の場合は、図42のように代表値の差分値を検出するが、差分値のビット数が所定の制限値内に収まることを保証するためである。
図42と図43では省略しているが、符号化データの例えば先頭部分には、画像が平坦かラフかを示すフラグ情報が付加される。後述するLCP復号化回路15は、まずこのフラグ情報を検出して、復号のやり方を変える。
図45は活動量の閾値を変化させた場合に画像が変化する例を説明する図であり、左側は活動量の閾値を境にした判定結果をもとに二値化した画像、右側はその二値化画像(判定結果)に基づいて生成される圧縮画像である。図45(a)〜図45(d)は閾値がそれぞれ異なっており、上の画像ほど閾値を大きく設定している。
図45(a)〜図45(d)では、画像の平坦な4×4画素ブロックを白で表示し、ラフな画素ブロックを黒で表示している。白の領域は8ビット精度が保証される。例えば、青空は8ビット精度が保証される。一方、地面は6ビット精度が保証される。
図46(a)は本実施形態のアルゴリズムにより圧縮された圧縮画像の一例を示す図である。図46(b)は画像中の一部を拡大した元図、図46(c)は圧縮画像の一部を拡大した図である。図46(b)と図46(c)の右側には、色の分布図が示されている。
図46(c)に示すように、圧縮画像では、16色を4色に置き換えている。しかしながら、図46(b)〜図46(c)を見ればわかるように、圧縮画像は元の画像と全体的に近似しており、画質の劣化はそれほど大きくないことがわかる。
なお、4色の代表色を選択する際、色の選択が悪いと、ブロックアーティファクトが発生し、エラーが視認されやすくなる。特に、2つの代表色を補間して2色を導出する場合、最適な色を導出できないおそれもある。これに対して、本実施形態の場合、独立に4つの代表色を選択するため、ブロックアーティファクトの発生を抑制できる。
図47は従来の圧縮画像と本実施形態による圧縮画像とを比較した特性を示す図であり、画像1枚でのPSNR(Peak Signal to Noise Ratio)の比較結果を示している。図47(a)は従来の圧縮画像の特性図、図47(b)は本実施形態による圧縮画像の特性図であり、いずれも横軸はPSNR[dB]、縦軸は発生頻度である。
これらの図の例によると、PSNRが6.7dBから8.5dBに改善して、ノイズ(画像劣化量)が少なくなったことがわかる。
図48はPSNRの累積ヒストグラムを示す図であり、図48(a)は従来のMoMA−BTCの累積ヒストグラム、図48(b)は本実施形態による累積ヒストグラムである。
図48に示すように、本実施形態によると、累積ヒストグラムのピークが従来よりも急峻であり、耐ノイズ性能が優れていることがわかる。すなわち、PSNR値が低い(劣化した)画素の数が減少し、PSNR値の高い(劣化していない)画素の数が増加している。図48では、33dB以下の分布は減少しており、同時に41dB付近の分布が急激に増加している。
図49は9種類の画像について本実施形態と従来のテクスチャ圧縮技術とでPSNRを比較した図である。図49に示した3種類の従来のテクスチャ圧縮技術はいずれも、プロセッサまたは画像処理プロセッサを用いてソフトウェアで圧縮処理を行うものであり、処理に時間がかかり、また高性能プロセッサを用いることから、コストも高くなる。本実施形態は、簡易なハードウェアにより画像圧縮を行えるにもかかわらず、従来のテクスチャ圧縮技術と同様の性能が得られる。
上記の説明では、符号化データを構成するビット列の遷移については特に考慮しなかった。ところが、ビットの遷移回数が増えると、消費電力が増大することが知られている。このため、発生頻度の高い符号ほどビットの遷移回数を少なくする遷移最小化符号を生成することも考えられる。
図50は上述したアルゴリズムに遷移最小化符号を適用した例を説明する図である。ビットマップは、各画素が4つの代表色のいずれであるかを示す情報を格納する。画像の統計的性質から、隣り合う画素は同じ色を取る確率が高い。したがって、ビットマップの隣接値は同じ値を取る可能性が高い。
このような統計的性質を利用して、ビットマップ中の近接する複数の領域を一つの単位として、遷移最小符号化を行ってもよい。このとき、統計的な偏りを利用して、符号化データ中の0の発生確率を高くする。
符号化データはメモリ14に格納されるが、メモリ14に連続してデータを格納する際には、データのビットが同じ方が違う場合よりも消費電流が少ない。ビットが異なる場合には、メモリセル内に蓄積電荷を与えるために電流を流してメモリセルの状態を反転させなければならず、電流が必要となる。同じ値であれば、このような電荷の変化を必要とせず、電流を流す必要がなくなる。
なお、本実施形態によれば、圧縮によりメモリセル数自体を1/4に削減でき、さらに消費電流を削減できる。
図50は、隣接する2×2画素に対応するビットマップデータを単位として、遷移最小符号化を行う例を示している。図50の「00」「01」「10」「11」なる値はビットマップ値であり、4つの代表色を選択するためのデータである。
図51は遷移最小符号化の一例を示す図である。図51の「組み合わせ」の欄に記載された4つの数字のそれぞれは、図50の2×2画素に対応するビットマップデータを指している。より具体的には、「00」を0、「01」を1、「10」を2、「11」を3と表記する。したがって、例えば図50の左上の2x2画素に関しては、図51では(左上から右下へスキャンして)「00」、「01」、「00」、「01」なるビットマップデータを0101と表す。
先頭行の「0000」は、ビットマップ値がすべて0であるので、0で指定される代表色だけが選択されることを示している。次の行の「1111」は、ビットマップ値がすべて1であるので、1で指定される代表色だけが選択されることを示している。
図51では、発生頻度の高い組み合わせほど、上に配置している。そして、発生頻度の高い組み合わせには、ビットの遷移数が少ない符号(すなはち、0の個数がビット列中に多い符号)を割り当てている。例えば、組合せ0000は遷移最小化符号00000000へと対応づけている。組合せ1111は遷移最小化符号00000001へと対応づけている。このようにすることで、メモリ14に保存するデータビット値0の発生する確率を高めており、結果的に0から1および1から0へとデータが遷移する確率を減らしている。
なお、ここでの「遷移」とは、メモリ14中での同じアドレス中にあった以前の値から、現在書き込もうとしている値への遷移を意味する。従来の遷移最小化符号は、画像データの差分値を遷移最小化符号の対象としていたが、本実施形態ではビットマップデータを遷移最小化符号の対象としており、このような例は従来存在しない。
図50および図51では、隣接する2×2画素を単位として遷移最小符号化を行ったが、隣接する2画素を単位としてもよい。図52は画素ブロック内の水平方向に隣接する2画素を単位とする例を示す図、図53は図52に対応する遷移最小化符号の一例を示す図である。
上記では、ビットマップデータの遷移最小符号化について説明したが、図43で説明した代表色の差分値を求める際にも遷移最小符号化を適用してもよい。図54は代表色の差分値の遷移最小化符号の一例を示す図である。差分値が小さいほど、発生頻度が高いことから、差分値はゼロを中心として分布する。このため、図54では、差分値がゼロに近いほど遷移数の少ない符号を割り当てている。これは図42の第一の代表色が中央の場合に対応している。
なお、ここでの「差分値」とは、代表色と代表色の間での差分であり、ローカルカラーパレットの技術に関する値である。隣接する画素値の差分値のような従来の技術ではないことに注意して欲しい。
図54では、差分値としてマイナスの値も考慮する場合の遷移最小符号化の例を示したが、差分値がプラスの値しか取らない場合は、図55のような遷移最小符号化が行われる。これは図43の第一の代表色が最小値の場合に対応している。
図1では、LCDソースドライバ2の内部にLCP符号化回路13を設ける例を説明したが、コントローラまたはアプリケーションプロセッサ(以下、総称してコントローラと呼ぶ)の内部にLCP符号化回路13を設けてもよい。
図56は図1の変形例であり、コントローラ20の内部にLCP符号化回路13を設けた例を示すブロック図である。図56のコントローラ20は、RGB/YCC変換回路12と、LCP符号化回路13と、圧縮データ送信回路21とを有する。LCDソースドライバ2は、圧縮データ受信回路22と、メモリ14と、LCP復号化回路15と、YCC/RGB変換回路16と、LCD駆動回路17とを有する。
図57は上述したLCP符号化回路13の内部構成の一例を示すブロック図である。図57のLCP符号化回路13は、4Hラインメモリ23と、16画素保存レジスタ24と、変化量計算部25と、階層計算器26と、圧縮データ保存レジスタ27とを有する。
図58はLCP符号化回路13の変形例を示すブロック図であり、遷移最小符号化を行う例を示している。図58のLCP符号化回路13は、図57の構成に加えて、遷移最小符号化A回路28と、遷移最小符号化B回路29とを有する。
図59は図57および図58の階層計算器26の内部構成の一例を示すブロック図である。図59の階層計算器26は、前計算部31と、第1層計算部32と、第2層計算部33と、第3層計算部34と、第4層計算部35と、第5層計算部36と、後計算部37とを有する。第1層計算部32は16個の演算部を有し、第2層計算部33は8個の演算部38を有し、第3層計算部34は4個の演算部38を有し、第4層計算部35は2個の演算部38を有し、第5層計算部36は1個の演算部38を有する。
第1〜第5層計算部36のそれぞれに含まれる演算部38は、単独のハードウェアユニットで構成してもよいし、一つのハードウェアユニットを複数の計算部で共用してもよい。
階層計算器26を構成する第1〜第5層計算部32〜36は、上述した各種のフローチャートに沿った処理を行う。例えば、最大値MAXおよび最小値MINを求める処理を行う演算部38は、図60のような内部構成を有する。
図60の演算部38は、入力信号A,Bを比較する比較回路41と、比較回路41の比較結果によって、入出力間の経路を切り替えるスイッチ回路(SW回路)42とを有する。
図61は図60のスイッチ回路42の動作を説明する図である。例えば、A<Bの場合には、最大値MAXを出力する出力信号DとしてBを選択し、最小値MINを出力する出力信号EとしてAを選択する。一方、A>Bの場合には、出力信号DとしてAを選択し、出力信号EとしてBを選択する。
図62〜図64は階層的に総計値SUMと計数値CNTを計算する演算部38の一例を示す図である。図62は1段目の演算部38の内部構成の一例を示すブロック図である。図62の演算部38は、比較回路43と、演算回路44とを有する。演算部38は、入力信号A,Bが最大値MAXと最小値MINのいずれでもない場合に、SUMにその値を加え、かつCNTのカウントアップを行う。
図63は図62の演算部38の動作を説明する図である。入力信号A,Bがともに、最大値MAXまたは最小値MINと同じ値であれば、SUM=0、CNT=0とする。入力信号Aのみが最大値MAXまたは最小値MINと同じ値であれば、SUM=Bとし、CNT=1とする。入力信号Bのみが最大値MAXまたは最小値MINと同じ値であれば、SUM=Aとし、CNT=1とする。入力信号A,Bのどちらも最大値MAXでも最小値MINでもない場合は、SUM=A+Bとし、CNT=2とする。
図64(a)は2段目以降の演算部38の内部構成の一例を示すブロック図、図64(b)は図64(a)の演算部38の動作を説明する図である。図64(a)の演算部38は、2つの入力信号(前の層のSUM)同士を足し合わせるとともに、前の段のCNT同士を足し合わせる演算を行う。図64(a)の演算回路45は、演算回路45と、結果計算器46とを有する。この演算回路45は、2つのSUMに対応する信号S1,S2同士を足し合わせた結果をSUMに入れて出力し、2つのCNTに対応する信号C1,C2同士を足し合わせた結果をCNTに入れて出力する。最終的に計算されたSUMとCNTは、結果計算器46に入力されてSUM/CNTが計算される。
以上に説明した図60〜図64の回路により、最大値MAXと最小値MINを除いた画素値の平均値を求めることができる。これらの回路は、図5の平均値MIDなどを求める際に利用できる。
図65〜図68は図13〜図14の処理に用いられる演算部38の一例を示す図である。図65は1段目の演算部38の内部構成の一例を示すブロック図、図66は図65の演算部38の動作を説明する図である。
図65の演算部38は、比較回路47と、演算回路48とを有する。比較回路47は、入力信号Aが最小値MIN+微小値DELTA1より小さいか否かと、中間値MIDより小さいか否かと、中間値MIDより大きいか否かと、最大値MAX−微小値DELTA2より大きいか否かとを、検出する。
入力信号Aが最小値MIN+微小値DELTA1より小さい場合には、すべての出力信号がゼロになる。入力信号Aが中間値MIDより小さい場合には、SUML=A、CNTL=1で、他はゼロになる。入力信号Aが中間値MIDより大きい場合には、SUMU=A、CNTU=1で、他はゼロになる。入力信号Aが最大値MAX−微小値DELTA2より大きい場合には、すべての出力信号がゼロになる。
図67は2段目以降の演算部38の内部構成の一例を示すブロック図、図68は図67の演算部38の動作を説明する図である。図67の演算部38は、2つの演算回路49,50と、結果計算器51とを有する。演算回路49は、SUML=SL1+SL2と、CNTL=CL1+CL2の計算を行う。演算回路50は、SUMU=SU1+SU2、CNTU=CU1+CU2の計算を行う。
演算部38は階層的にSUML、SUMU、CNTL、CNTUを計算し、最終的に得られた値は結果計算器51に入力されて、MIDL=SUML/CNTLと、MIDU=CUMU/CNTUの計算が行われる。
図69〜図72は図15および図16の処理に用いられる演算部38の一例を示す図である。図69は1段目の演算部38の内部構成の一例を示すブロック図、図70は図69の演算部38の動作を説明する図である。
図69の演算部38は、比較回路60と、演算回路61とを有する。図69の演算部38は、入力信号Aを閾値thY0〜thY5と比較する処理を行う。図70に示すように、入力信号Aが閾値thY0〜thY1の間であれば、分割領域1に属すると判断して、SUM[1]にAを入れて、CNT[1]をカウントアップする。入力信号Aが閾値thY1〜thY2の間であれば、分割領域2に属すると判断して、SUM[2]にAを入れて、CNT[2]をカウントアップする。入力信号Aが閾値thY2〜thY3の間であれば、分割領域3に属すると判断して、SUM[3]にAを入れて、CNT[3]をカウントアップする。入力信号Aが閾値thY3〜thY4の間であれば、分割領域4に属すると判断して、SUM[4]にAを入れて、CNT[4]をカウントアップする。入力信号Aが閾値thY4〜thY5の間であれば、分割領域5に属すると判断して、SUM[5]にAを入れて、CNT[5]をカウントアップする。
図71は図69の演算部38の演算結果を足し合わせる処理を行う2段目以降の演算部38の内部構成の一例を示すブロック図、図72は図71の演算部38の動作を説明する図である。図71の演算部38は、演算回路62と結果計算器63とを有する。この演算回路62は、SUM=S1+S2と、CNT=C1+C2の演算を行う。
階層的にSUMとCNTを計算していき、最終的なSUMとCNTが計算されると、結果計算器63により、MID=SUM/CNTを計算する。
図73〜図75は図19および図20の処理に用いられる演算部38の一例を示す図である。図73は1段目の演算部38の内部構成の一例を示すブロック図、図74は図73の演算部38の動作を説明する図である。
図73の演算部38は、比較回路64と、演算回路65とを有する。図73の演算部38は、入力信号Aが10個の領域のうちのどこに属するかを検出し、その領域のSUM[i]に入力信号Aを入れるとともに、CNT[i]をカウントアップする。
図75は2段目以降の演算部38の内部構成の一例を示すブロック図、図76は図75の演算部38の動作を説明する図である。図75の演算部38は演算回路66と、結果計算器67とを有する。この演算回路66は、SUM=S1+S2と、CNT=C1+C2の演算を行う。
複数の演算部38が2つずつの加算処理を階層的に行い、最終的に、10個のサブ領域ごとに、すべての加算結果がSUMに、すべての総数がCNTに入る。結果計算器67は、10個のサブ領域ごとに、MID=SUM/CNTを計算する。これにより、各サブ領域内の平均画素値と画素数を求めることができる。
図77〜図79は図21のステップS111の処理に用いられる演算部38の一例を示す図であり、この処理を行うことで、第1の代表色を求めることができる。
図77は10個のサブ領域のそれぞれを発生頻度順に並び換える処理を行う演算部38の内部構成の一例を示すブロック図である。図77の演算部38は、9段階の階層構造になっており、各段階は複数の交換回路71を有する。各交換回路71には、2つのサブ領域のIDと、これらサブ領域内の画素数(頻度を表す変数freqで示す)とが入力される。そして、各交換回路71は、2つのサブ領域のうち発生頻度の高いサブ領域とその画素数を右側から出力する。画素数の発生頻度順で並べても、それがどの代表色(領域IDで指定される)であるかが分からなければ意味がない。この意味で、領域IDも発生頻度順に並べる必要がある。
以上の処理動作を各交換回路71が階層的に行うことにより、最終段の複数の交換回路71の出力は、発生頻度順に並ぶことになる。
図78は第1の代表色を選択する処理を行う交換回路71の内部構成の一例を示すブロック図、図79は図78の交換回路71の動作を説明する図である。図78の交換回路71は、比較回路71aとスイッチ回路71bを有し、最終的に選択された2つのサブ領域のIDと画素数とを比較して、どちらか大きいを最終的に選択する。
IA,IBは各サブ領域のIDを示し、FA,FBは各サブ領域の画素数を示す。FA<FBであれば、LIにはIAが、LFにはFAが、UIにはIBが、UFにはFBがそれぞれ入れられる。FA>FBであれば、LIにはIBが、LFにはFBが、UIにはIAが、UFにはFAがそれぞれ入れられる。
図80は遠距離法により第2〜第4の代表色を用いる処理を行う演算部38の内部構成の一例を示すブロック図であり、図39の処理を行うものである。図80の演算部38は、9段階の階層構造になっており、各段階は複数の交換回路72を有する。各交換回路72には、2つのサブ領域のIDと、各サブ領域の距離情報とが入力される。ここで、距離情報とは、第1の代表色と比較する場合には、第1の代表色との距離である。各交換回路72は、距離が大きいサブ領域のIDと距離を右側に出力する。
以上の処理動作を各交換回路72が階層的に行うことにより、最終段の複数の交換回路72の出力は、距離順に並ぶことになる。
図81〜図84はビットマップデータを生成する処理に用いられる演算部38の一例を示す図である。図81は対象画素の色を第1〜第4の代表色に変換する処理を行う演算部38の内部構成の一例を示すブロック図である。
図81の演算部38は、4つの差分回路73と、3つのマップ選択回路74とを有する。差分回路73のそれぞれは、第1〜第4の代表色のいずれかと対象画素の画素値VALとの差分を検出する。なお、ここでの差分とは色と色との間の距離のことであり、一般に選択肢があるが、例えば、マンハッタン距離としても問題ない。マップ選択回路74は、2つの差分のうち小さい方を選択する。マップ選択回路74は、階層的に接続されており、最終的に最も小さい差分の代表色に関するマップ値が選択される。
図82はマップ選択回路74の内部構成の一例を示すブロック図、図83は図82のマップ選択回路74の動作を説明する図である。図82のマップ選択回路74は、比較回路75と、2つのスイッチ回路76,77とを有する。比較回路75は、入力信号D1,D2を比較する。Dは差分を意味する変数で、D1とD2は代表色1と代表色2に関する差分値である。比較回路により、D1<D2と判定されると、スイッチ回路76の出力BMにはBM1が、スイッチ回路77の出力DにはD1が出力され、D1>D2と判定されると、BMにはBM2が、DにはD2が出力される。BMは代表色を示すビットマップのための変数である。
図84は第1〜第4の代表色とビットマップデータとの関係を示す図である。第1の代表色が選択された場合は00に、第2の代表色が選択された場合は01に、第3の代表色が選択された場合は10に、第4の代表色が選択された場合は11になる。
上述した図60〜図84に説明した処理は、図58の階層計算器26により実行される。このように、階層計算器26は、時間によって異なる処理を行う。このため、階層計算器26の処理動作を予めスケジューリングしておく必要がある。
図85は階層計算器26の処理動作のスケジュールの一例を示す図である。図85では、階層計算器26の処理動作を10個のサイクルに分けている。サイクル1で最大値MAXと最小値MINを検出する。サイクル2〜3で画素ブロック内のSUMとCNTを計算する。サイクル4で分割領域1〜5のそれぞれにおけるSUMとCNTを計算する。サイクル5でサブ領域1〜5、1C〜5CのそれぞれにおけるSUMとCNTを計算する。サイクル6〜9でそれぞれ第1〜第4の代表色を順に計算し、サイクル10でビットマップデータを決定する。
図86は階層計算器26の処理動作のスケジュールの他の一例を示す図であり、図85よりもより詳しくスケジューリングしたものである。分割領域1〜5の処理とサブ領域1〜5、1C〜5Cの処理を詳しく規定している。
階層計算器26の内部に複数の繰り返し計算器を設けて、各演算部38が並列して処理を行うようにしてもよい。図87は階層計算器26の内部に4つの繰り返し計算器91を設けた例を示すブロック図である。図88は図87の繰り返し計算器91を用いて処理を行う場合の階層計算器26のスケジュールの一例を示す図である。
図88の処理Aは繰り返し計算器91が行い、処理Bは繰り返し計算器91が行い、処理Cは繰り返し計算器91が行い、処理Dは繰り返し計算器91が行う。処理A〜Dはいずれも並列処理が可能なものである。
このように、4つの繰り返し計算器91が並行して処理を行うことで、高速処理が可能となる。
図89は図1のLCP復号化回路15の内部構成の一例を示すブロック図である。図89のLCP復号化回路15は、圧縮データ保存レジスタ101と、フラグ抽出部102と、代表色抽出部103と、ビットマップ抽出部104と、16画素復元計算部105と、16画素保存レジスタ106と、4Hラインレジスタ107とを有する。
フラグ抽出部102は、符号化データの先頭部分に付加されたフラグを抽出して、画像がラフか平坦かを把握する。その結果に応じて、代表色抽出部103は、第1〜第4の代表色の符号化データを抽出する。ビットマップ抽出部104は、第1〜第4の代表色の符号化データの後に配置されたビットマップデータを抽出する。
16画素復元計算部105は、第1〜第4の代表色のいずれかが割り当てられた16画素の各色を復元する。16画素保存レジスタ106は、16画素の各色のデータを一時的に16画素保存レジスタ106に格納する。このデータは4Hラインメモリ23に格納される。
図90は図89の変形例を示すブロック図である。図89では、YCC/RGB変換回路16がLCP復号化回路15の外側に設けられていたが、図90では、LCP復号化回路15の内部にYCC/RGB変換回路16を設ける代わりに、4Hラインメモリ23をLCP復号化回路15の外側に設けている。これにより、LCP復号化回路15の回路規模を縮小できる。
図91は符号化データが遷移最小符号化を行っている場合に対応するLCP復号化回路15の内部構成の一例を示すブロック図である。図91のLCP復号化回路15は、図90の構成に加えて、遷移最小復号A回路109と、遷移最小復号B回路110とを有する。遷移最小復号A回路109は、遷移最小符号化により符号化された第1〜第4の代表色の符号化データを復号する。遷移最小復号B回路110は、遷移最小符号化により符号化されたビットマップデータを復号する。
図92はLCP復号化回路15を実現するためのハードウェア構成の一例を示すブロック図である。図示のように、LCP復号化回路15は、各画素に対応した16個の選択回路111を有する。各選択回路111は、ビットマップ値に対応する代表色を選択する。これにより、画素ブロック内の16画素が第1〜第4の代表色にて表される。
図93は画像が平坦な場合の代表色の復元処理を説明する図である。画像が平坦な場合は、第2〜第4の代表色については差分データで表されている。このため、復元処理では、差分データを利用して、24ビットからなる第1〜第4の代表色を復元する。
図94は画像がラフな場合の代表色の復元処理を説明する図である。画像がラフな場合は、第1〜第4の代表色がいずれも16ビットで表されている。このため、復元処理では、これら16ビットデータを利用して、24ビットからなる第1〜第4の代表色を復元する。
図95は図92の選択回路111の内部構成の一例を示すブロック図である。図95の選択回路111は、差分復元回路112と、ビット補充回路113と、スイッチ回路114とを有する。差分復元回路112は、画像が平坦かラフかを示すモード信号MODEに応じて、第1〜第4の代表色を復元する。なお、画像がラフな場合は、差分ではなく、元の代表色データであるため、差分復元回路112では何も処理は行わない。
ビット補充回路113は、16ビットを24ビット拡張する処理を行う。スイッチ回路114は、ビットマップ値BMに応じて、対応する代表色データを出力する。
図96はビットマップ値BMと代表色との対応関係の一例を示す図である。ビットマップ値BMが00、01、10、11のときは、それぞれ第1〜第4の代表色を選択する。
本実施形態の処理動作をまとめると、以下のようになる。画素ブロックごとに、画素値に応じた5個の分割領域を生成し、各分割領域をさらに二分割して計10個のサブ領域を生成する。そして、16画素のそれぞれを10個のサブ領域に割り振って、サブ領域ごとに画素値の総和と画素数を計算して、各サブ領域の平均画素値を計算する。そして、各サブ領域の平均画素値の中から4つの代表色を選択し、16画素のそれぞれの色を4つの代表色のいずれかに置換したビットマップデータを生成する。そして、4つの代表色を表す符号化データとビットマップデータとを組み合わせた符号化データを生成する。
本実施形態では、16画素を4つの代表色に置換するため、符号化データのビット長を削減でき、符号化データを格納するメモリ14の容量も削減でき、コスト削減が図れる。また、色数を4つの代表色に限定しても、画質の劣化がほとんど起きない。したがって、本実施形態は、携帯電話等のハードウェアの性能や規模が限られている場合に最適である。
また、本実施形態では、10個のサブ領域を生成する際に、輝度および色差の変化が大きい方向に沿って分割領域を二分割してサブ領域を生成するため、輝度および色差の変化に合致したサブ領域を生成できる。
また、本実施形態では、5個の分割領域を生成するために閾値thY0〜thY5を計算する際、最大値MAXと最小値MINを除外して計算するため、最大値MAXと最小値MINの影響を受けずに閾値を計算でき、実際の画像の特性に合致した閾値を計算できる。
また、画素ブロック内の画像が平坦かラフかを検出して、平坦な場合には差分データを用いて符号化データを生成するため、符号化データのビット長をより削減できる。また、画像が平坦な場合でも、8ビット精度で符号化が行えるため、画質の劣化は起きない。
また、本実施形態の処理は、ハードウェアで容易に実現できるため、処理速度の向上が図れる。なお、本実施形態の少なくとも一部の処理をソフトウェアで実施してもよい。
上述した実施形態では、4×4画素の画素ブロックを例に取って説明したが、画素ブロックを構成する縦横画素数には特に制限はない。また、分割領域の数も5個に限らない。同様に、サブ領域の数も10個に限らない。
本発明の一実施形態による画像処理装置を含む液晶表示装置の概略構成を示すブロック図。 LCP符号化回路13の概略的な処理手順を示すフローチャート。 図2のステップS3の詳細な処理手順を示すフローチャート。 図3のステップS11の詳細な処理手順を示すフローチャート。 図3のステップS12の詳細な処理手順を示すフローチャート。 図4のステップS22の詳細な処理手順を示すフローチャート。 図4のステップS22の処理を説明する図。 分割領域1〜5を模式的に示す図。 分割領域5についてCr方向とCb方向にそれぞれ二分割した例を示す図。 分割領域をCb方向に分割した例と、Cr方向に分割した例を模式的に示す図。 分割領域1〜5のそれぞれを2分割した例を示す図。 10個のサブ領域の画素値の平均値を星印で示す図。 図6のステップS41の詳細な処理手順を示すフローチャート。 図13に続くフローチャート。 図6のステップS43の詳細な処理手順を示すフローチャート。 図15に続くフローチャート。 図4のステップS23の詳細な処理手順を示すフローチャート。 図17に続くフローチャート。 図4のステップS24の詳細な処理手順を示すフローチャート。 図19に続くフローチャート。 図5のステップS33の詳細な処理手順を示すフローチャート。 図21のステップS114の詳細な処理手順を示すフローチャート。 図22の処理の詳細手順を示すフローチャート。 図23に続くフローチャート。 図1のLCP復号化回路15の処理手順を示すフローチャート。 図25のステップS153の詳細な処理手順を示すフローチャート。 4×4画素からなる画素ブロックの輝度値Yおよび色差値Cb,Crの具体例を示す図。 図27の画素ブロックの輝度値Yと色差値Cb,Crをまとめた図。 図27の輝度値を解析した結果を示す図。 図27の輝度値から算出される6つの閾値thY0〜thY5を示す図。 図27の画素ブロック内の輝度値Yおよび色差値Cb,Crを5つの分割領域に割り当てた例を示す図。 サブ領域を生成する場合の閾値th_fine1〜5を示す図。 分割領域1〜5における輝度値または色差値の最大値MAXと最小値MINとの差分値RangeY、RangeCb、RangeCrと、これら3つの差分値の最大値MAXとを示す図。 図27の画素ブロックのビットマップデータを生成する手法を説明する図。 図27の画素ブロックに対応する色空間のデータ分布を示す図。 図27の画素ブロックを10個のサブ領域に分割した図。 図27の画素ブロックに対応する10個のサブ領域1〜5、1C〜5Cの代表値候補を示す図。 図37のCNTの順に並び換えた図。 遠距離法を利用して代表色候補の中から第2〜第4の代表色を選択する手法を説明する図。 第1〜第4の代表色とビットマップデータとを用いて符号化データを生成する手法を説明する図。 図27の画素ブロックに対応する符号化データを示す図。 平坦な画像の符号化データのビット構成を示す図。 図42の変形例を示す図。 画素ブロック内の活動量を判定する手法を説明する図。 活動量の閾値を変化させた場合に画像が変化する例を説明する図。 (a)は本実施形態のアルゴリズムにより圧縮された圧縮画像の一例を示す図、(b)は画像中の一部を拡大した元図、(c)は圧縮画像の一部を拡大した図。 (a)は従来の圧縮画像の特性図、(b)は本実施形態による圧縮画像の特性図。 (a)は従来のMoMA−BTCの累積ヒストグラム、(b)は本実施形態による累積ヒストグラム。 9種類の画像について本実施形態と従来のテクスチャ圧縮技術とでPSNRを比較した図。 遷移最小化符号を適用した例を説明する図。 遷移最小符号化の一例を示す図。 画素ブロック内の水平方向に隣接する2画素を単位とする例を示す図。 図52に対応する遷移最小化符号の一例を示す図。 代表色の差分値の遷移最小化符号の一例を示す図。 差分値がプラスの値しか取らない場合の遷移最小符号化の一例を示す図。 図1の変形例であり、コントローラ20の内部にLCP符号化回路13を設けた例を示すブロック図。 LCP符号化回路13の内部構成の一例を示すブロック図。 LCP符号化回路13の変形例を示すブロック図。 図57および図58の階層計算器26の内部構成の一例を示すブロック図。 最大値MAXおよび最小値MINを求める処理を行う演算部38の内部構成を示すブロック図。 図60のスイッチ回路42の動作を説明する図。 1段目の演算部38の内部構成の一例を示すブロック図。 図62の演算部38の動作を説明する図。 (a)は2段目以降の演算部38の内部構成の一例を示すブロック図、(b)は(a)の演算部38の動作を説明する図。 1段目の演算部38の内部構成の一例を示すブロック図。 図65の演算部38の動作を説明する図。 2段目以降の演算部38の内部構成の一例を示すブロック図。 図67の演算部38の動作を説明する図。 1段目の演算部38の内部構成の一例を示すブロック図。 図69の演算部38の動作を説明する図。 図69の演算部38の演算結果を足し合わせる処理を行う2段目以降の演算部38の内部構成の一例を示すブロック図。 図71の演算部38の動作を説明する図。 1段目の演算部38の内部構成の一例を示すブロック図。 図73の演算部38の動作を説明する図。 2段目以降の演算部38の内部構成の一例を示すブロック図。 図75の演算部38の動作を説明する図。 10個のサブ領域のそれぞれを発生頻度順に並び換える処理を行う演算部38の内部構成の一例を示すブロック図。 第1の代表色を選択する処理を行う交換回路71の内部構成の一例を示すブロック図。 図78の交換回路71の動作を説明する図。 遠距離法により第2〜第4の代表色を用いる処理を行う演算部38の内部構成の一例を示すブロック図。 対象画素の色を第1〜第4の代表色に変換する処理を行う演算部38の内部構成の一例を示すブロック図。 マップ選択回路74の内部構成の一例を示すブロック図。 図82のマップ選択回路74の動作を説明する図。 第1〜第4の代表色とビットマップデータとの関係を示す図。 階層計算器26の処理動作のスケジュールの一例を示す図。 階層計算器26の処理動作のスケジュールの他の一例を示す図。 階層計算器26の内部に4つの繰り返し計算器91を設けた例を示すブロック図。 図87の繰り返し計算器91を用いて処理を行う場合の階層計算器26のスケジュールの一例を示す図。 図1のLCP復号化回路15の内部構成の一例を示すブロック図。 図89の変形例を示すブロック図。 符号化データが遷移最小符号化を行っている場合に対応するLCP復号化回路15の内部構成の一例を示すブロック図。 LCP復号化回路15を実現するためのハードウェア構成の一例を示すブロック図。 画像が平坦な場合の代表色の復元処理を説明する図。 画像がラフな場合の代表色の復元処理を説明する図。 図92の選択回路111の内部構成の一例を示すブロック図。 ビットマップ値BMと代表色との対応関係の一例を示す図。
符号の説明
1 RGBデータ送信回路
2 LCDソースドライバ
3 LCDパネル
11 RGBデータ受信回路
12 RGB/YCC変換回路
13 LCP符号化回路
14 メモリ
15 LCP復号化回路
16 YCC/RGB変換回路
17 LCD駆動回路
21 圧縮データ送信回路
22 圧縮データ受信回路
23 4Hラインメモリ
24 16画素保存レジスタ
25 変化量計算部
26 階層計算器
27 圧縮データ保存レジスタ

Claims (5)

  1. 隣接するm×n画素(m、nは正の整数)からなる画素ブロックのそれぞれごとに、前記画素ブロック内の前記m×n画素の画素値に応じて、p個(pは正の整数)の分割領域を設定する分割領域設定手段と、
    前記p個の分割領域の画素値に基づいて、前記p個の分割領域のそれぞれを2つのサブ領域に分割して、2p個のサブ領域を設定するサブ領域設定手段と、
    前記2p個のサブ領域のそれぞれについて、代表色候補を設定する代表色候補設定手段と、
    前記2p個のサブ領域のそれぞれに対応する前記代表色候補の中から複数の代表色を選択する代表色選択手段と、
    前記画素ブロック内の各画素を前記複数の代表色のいずれかに置換する代表色置換手段と、
    前記画素ブロックのそれぞれごとに、前記複数の代表色に応じたビット列と、前記代表値置換手段で置換した結果に応じたビットマップデータとを含む符号化データを生成する符号化手段と、を備えることを特徴とする画像処理装置。
  2. 前記画素ブロックのそれぞれごとに、前記m×n画素の輝度値の最大値、最小値および平均値を計算する最大最小平均値計算手段と、
    前記最大値より第1の微小値だけ小さい値と前記平均値より第2の微小値だけ大きい値との間に属する画素の輝度値を平均化した第1の中間値と、前記最小値より第3の微小値だけ大きい値と前記平均値より第4の微小値だけ小さい値との間に属する画素の輝度値を平均化した第2の中間値とを計算する中間値計算手段と、を備え、
    前記分割領域設定手段は、前記最大値、前記第1の中間値、前記平均値、前記第2の中間値および前記最小値を区切りとして、前記p個の分割領域を設定することを特徴とする請求項1に記載の画像処理装置。
  3. 前記m×n画素の画素値は、輝度値と、第1の色差値と、第2の色差値とを有し、
    前記p個の分割領域のそれぞれごとに、各分割領域内の輝度値の最大値と最小値との差分値を計算する第1の差分値計算手段と、
    前記p個の分割領域のそれぞれごとに、各分割領域内の第1の色差値の最大値と最小値との差分値を計算する第2の差分値計算手段と、
    前記p個の分割領域のそれぞれごとに、各分割領域内の第2の色差値の最大値と最小値との差分値を計算する第3の差分値計算手段と、
    前記第1〜第3の差分値計算手段で計算された差分値の中から最大値を選択する最大値選択手段と、を備え、
    前記サブ領域設定手段は、前記p個の分割領域のそれぞれごとに、前記最大値選択手段で選択された最大値に対応する輝度または色差方向に沿って分割領域を2つに分割することを特徴とする請求項1または2に記載の画像処理装置。
  4. 前記代表色選択手段は、前記2p個のサブ領域の中で発生頻度の高い4つのサブ領域を抽出し、抽出された4つのサブ領域の中で最も発生頻度の高いサブ領域に対応する代表色候補を第1の代表色として選択し、かつ残り3個のサブ領域の中で、前記第1の代表色との色合いが最も離れているサブ領域に対応する代表色候補を第2の代表色として選択し、かつ残り2個のサブ領域の中で、前記第2の代表色との色合いが最も離れているサブ領域に対応する代表色候補を第3の代表色として選択し、残り1個のサブ領域に対応する代表者候補を第4の代表色として選択することを特徴とする請求項1乃至3のいずれかに記載の画像処理装置。
  5. 前記符号化手段は、
    前記画素ブロックに対応するビットマップデータを、前記画素ブロック内の隣接する複数画素を単位として、遷移最小化符号に変換することを特徴とする請求項1乃至4のいずれかに記載の画像処理装置。
JP2007304432A 2007-11-26 2007-11-26 画像処理装置 Pending JP2009130690A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007304432A JP2009130690A (ja) 2007-11-26 2007-11-26 画像処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007304432A JP2009130690A (ja) 2007-11-26 2007-11-26 画像処理装置

Publications (1)

Publication Number Publication Date
JP2009130690A true JP2009130690A (ja) 2009-06-11

Family

ID=40821163

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007304432A Pending JP2009130690A (ja) 2007-11-26 2007-11-26 画像処理装置

Country Status (1)

Country Link
JP (1) JP2009130690A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011124866A (ja) * 2009-12-11 2011-06-23 Toshiba Corp 符号化装置および表示制御装置
JP2012015970A (ja) * 2010-07-05 2012-01-19 Konica Minolta Business Technologies Inc 画像処理装置および画像処理方法
JP2015061214A (ja) * 2013-09-19 2015-03-30 株式会社メガチップス 画像圧縮装置、画像圧縮方法、プログラムおよび記録媒体

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011124866A (ja) * 2009-12-11 2011-06-23 Toshiba Corp 符号化装置および表示制御装置
JP2012015970A (ja) * 2010-07-05 2012-01-19 Konica Minolta Business Technologies Inc 画像処理装置および画像処理方法
JP2015061214A (ja) * 2013-09-19 2015-03-30 株式会社メガチップス 画像圧縮装置、画像圧縮方法、プログラムおよび記録媒体

Similar Documents

Publication Publication Date Title
EP1697899B1 (en) Multi-mode alpha imag eprocessing
CN100498838C (zh) 多模α图像处理方法及系统
US7751630B2 (en) Multi-mode image processing
CN102918562B (zh) 用于生成增强图像的方法和系统
EP1697900B1 (en) Multi-mode image processing
JP6035026B2 (ja) 画像符号化方法
Kumar et al. A reversible high capacity data hiding scheme using pixel value adjusting feature
CN106375762A (zh) 参考帧数据压缩方法及其装置
JP2009027663A (ja) 画像処理装置及びプログラム
JP2009130690A (ja) 画像処理装置
JP2014099851A (ja) イメージ分割システム及びその方法
JP2014099852A (ja) イメージ分割システム及びその方法
US11657541B2 (en) Parent-child cluster compression
KR101028161B1 (ko) 평판 표시 장치 메모리를 위한 데이터 압축-복원 방법과 이를 이용한 히스토그램 데이터 처리, lut 데이터 압축 및 프레임 레이트 향상 방법
CN110035288A (zh) 对视频序列进行编码的方法、编码装置和存储介质
Monteiro et al. Design of energy-efficient gaussian filters by combining refactoring and approximate adders
US8031955B2 (en) Image processing apparatus, image processing method, medium storing program, and computer data signal
US20130243090A1 (en) Block-matching Motion Estimation Method and Apparatus
JP2011124866A (ja) 符号化装置および表示制御装置
JP2011024002A (ja) 予測処理システム
JP2009071598A (ja) 画像処理装置
US9615111B2 (en) Complexity-adaptive compression of color images using binary arithmetic coding
JP2009027556A (ja) 画像処理回路
Hernández-Cabronero et al. Compression of DNA microarray images
JP4584805B2 (ja) 画像処理装置、画像処理方法および画像処理プログラム