JP2007312126A - 画像処理回路 - Google Patents
画像処理回路 Download PDFInfo
- Publication number
- JP2007312126A JP2007312126A JP2006139309A JP2006139309A JP2007312126A JP 2007312126 A JP2007312126 A JP 2007312126A JP 2006139309 A JP2006139309 A JP 2006139309A JP 2006139309 A JP2006139309 A JP 2006139309A JP 2007312126 A JP2007312126 A JP 2007312126A
- Authority
- JP
- Japan
- Prior art keywords
- data
- value
- circuit
- btc
- pixel
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G3/00—Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes
- G09G3/20—Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters
- G09G3/34—Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters by control of light from an independent source
- G09G3/36—Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters by control of light from an independent source using liquid crystals
- G09G3/3611—Control of matrices with row and column drivers
- G09G3/3685—Details of drivers for data electrodes
- G09G3/3688—Details of drivers for data electrodes suitable for active matrices only
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G3/00—Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes
- G09G3/20—Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters
- G09G3/34—Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters by control of light from an independent source
- G09G3/36—Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters by control of light from an independent source using liquid crystals
- G09G3/3611—Control of matrices with row and column drivers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/136—Incoming video signal characteristics or properties
- H04N19/14—Coding unit complexity, e.g. amount of activity or edge presence estimation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/186—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/189—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
- H04N19/196—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/423—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/423—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
- H04N19/426—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements using memory downsizing methods
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/423—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
- H04N19/426—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements using memory downsizing methods
- H04N19/428—Recompression, e.g. by spatial or temporal decimation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2330/00—Aspects of power supply; Aspects of display protection and defect management
- G09G2330/06—Handling electromagnetic interferences [EMI], covering emitted as well as received electromagnetic radiation
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2340/00—Aspects of display data processing
- G09G2340/02—Handling of images in compressed format, e.g. JPEG, MPEG
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2340/00—Aspects of display data processing
- G09G2340/06—Colour space transformation
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2350/00—Solving problems of bandwidth in display systems
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/16—Calculation or use of calculated indices related to luminance levels in display data
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/18—Use of a frame buffer in a display terminal, inclusive of the display panel
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/124—Quantisation
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Crystallography & Structural Chemistry (AREA)
- General Physics & Mathematics (AREA)
- Chemical & Material Sciences (AREA)
- Computing Systems (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Control Of Indicators Other Than Cathode Ray Tubes (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
【課題】画質を劣化させることなく、効率的に画像データを圧縮する。
【解決手段】画像処理装置は、タイミングコントローラ2とソースドライバ3とを備え、ソースドライバ3は、RGBデータ受信回路5と、YCC変換回路6と、BTC符号化回路7と、フレームメモリ8と、BTC復号化回路9と、RGB変換回路10と、LCD駆動回路11とを有する。画素ブロック内の活動量に応じて、2レベルBTCアルゴリズムと3レベルアルゴリズムのいずれかを選択して画像データの符号化を行うため、画質を劣化させることなく、効率的に画像データを圧縮できる。特に、元画像がPCで生成されたPC画像の場合でも、画質の劣化が起きない符号化データを生成できる。
【選択図】図1
【解決手段】画像処理装置は、タイミングコントローラ2とソースドライバ3とを備え、ソースドライバ3は、RGBデータ受信回路5と、YCC変換回路6と、BTC符号化回路7と、フレームメモリ8と、BTC復号化回路9と、RGB変換回路10と、LCD駆動回路11とを有する。画素ブロック内の活動量に応じて、2レベルBTCアルゴリズムと3レベルアルゴリズムのいずれかを選択して画像データの符号化を行うため、画質を劣化させることなく、効率的に画像データを圧縮できる。特に、元画像がPCで生成されたPC画像の場合でも、画質の劣化が起きない符号化データを生成できる。
【選択図】図1
Description
本発明は、画像データを符号化する画像処理回路に関する。
画像を圧縮するBTC技術が提案されている。複数画素からなる画素ブロック内の画素データを3レベルに圧縮する3レベルBTCが提案されている(非特許文献1参照)。この非特許文献1では、画素値の分布に依存せずに、最大値MAXと最小値MINから決まる範囲R=MAX−MINをもとに、閾値th,tlを、th=MAX−R/3、tl=MIN+R/3と固定的に決め、これら閾値th,tlで分類される代表値a,bを、a=(th+MAX)/2、b=(tl+MIN)/2と固定的に定めている。この非特許文献1の手法でPC画像を圧縮すると、視認可能なアーティファクトが生じるおそれがある。
非特許文献1以外の3レベルBTCが提案されている(非特許文献2参照)。この非特許文献2では、いったん2レベルBTCで求めた代表値a2,b2を利用して3レベルBTCの閾値を求める。より具体的には、まず2つの閾値t1,t2を、t1=(3×b2+a2)/4、t2=(3×a2+b2)/4を計算し、これら2つの閾値t1,t2により画素データを3つのグループに分類し、各グループの平均値を代表値とする。これら代表値を初期値として、繰り返し計算を行って最適な閾値と代表値を求める。
この非特許文献2の場合も、閾値や代表値が固定的に決められるため、特にPC画像では視認可能なアーティファクトが生じうる。
非特許文献1,2以外の3レベルBTCが提案されている(非特許文献3参照)。この非特許文献3では、画素データの中央値を中心として等間隔に3レベルを生成する。この場合の閾値t1,t2は、t1=c−s/2、t2=c+s/2で表される。画素値分布のヒストグラムによるMSEエラーを目的関数として最適化して繰り返し計算を行い、最終的な閾値を決定する。
非特許文献3の手法は、最終的な閾値を決定するまでに繰り返し計算を行わなければならないため、計算が煩雑になるという問題がある。。
上述したいずれの技術も、PC画像を処理すると、画質の劣化が視認されるという問題がある。特に、ウインドウの枠や、バナー部分、エラー表示パネルや文字入力プロンプト部分など、白黒のコントラストが大きく、背景や文字を含めて3値以上の画素データが近接配置されている場合に、比較的大きな領域で偽色が生じてしまう。また3レベルBTCは代表値が2個から3個へ増加するので、圧縮率が2レベルBTCよりも低下するという問題もある。
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.
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.
本発明は、画質を劣化させることなく、効率的に画像データを圧縮可能な画像処理回路を提供するものである。
本発明の一態様によれば、複数の色情報からなる画像データを輝度データと色差データとに変換する色情報変換手段と、隣接する複数画素からなる画素ブロックのそれぞれごとに、前記画素ブロック内の複数画素の輝度データの差分と色差データの差分とのそれぞれが所定の閾値を超えたか否かを判定する活動量検出手段と、前記活動量検出手段により前記所定の閾値を超えたと判定された前記画素ブロック内の複数画素の輝度データまたは色差データに対応するm個(mは3以上の整数)の代表値を生成して第1の符号化処理を行い、前記活動量検出手段により前記所定の閾値を超えなかったと判定された前記画素ブロック内の複数画素の輝度データまたは色差データに対応するn個(mは2以上の整数で、n<m)の代表値を生成して第2の符号化処理を行う符号化手段と、を備えることを特徴とする画像処理回路が提供される。
本発明によれば、画質を劣化させることなく、効率的に画像データを圧縮できる。
以下、図面を参照しながら、本発明の一実施形態について説明する。
図1は本発明の一実施形態による画像処理装置の概略構成を示すブロック図である。図1の画像処理装置は、液晶パネル(LCD)1に画素データを供給することを目的としており、タイミングコントローラ2とソースドライバ3とを備えている。タイミングコントローラ2とソースドライバ3はそれぞれ別個のICで構成されることが多いが、両者を一つのICで構成したり、あるいは、タイミングコントローラ2を複数のICで構成したり、ソースドライバ3を複数のICで構成してもよい。
タイミングコントローラ2は、RGBデータ送信回路4を有する。RGBデータ送信回路4は、ソースドライバ3に対してRGBの画素データを供給する。なお、RGBの画素データの代わりに、補色(YMC)の画素データを供給してもよい。以下では、一例として、RGBの画素データを供給する例を説明する。
ソースドライバ3は、RGBデータ受信回路5と、YCC変換回路6と、BTC符号化回路7と、フレームメモリ8と、BTC復号化回路9と、RGB変換回路10と、LCD駆動回路11とを有する。
RGBデータ受信回路5は、タイミングコントローラ2内のRGBデータ送信回路4が送信した画素データを受信する。YCC変換回路6は、RGBの画素データを輝度データと色差データとに変換する。BTC符号化回路7は、YCC変換回路6にて変換された輝度データと色差データに基づいて画素ブロックごとに画像圧縮を行い、符号化データを生成する。生成された符号化データはフレームメモリ8に記憶される。画像圧縮を行う際には、複数画素からなる画素ブロック内の各画素の輝度データと色差データを代表的な値に集約させるBTCアルゴリズムを採用する。
BTC復号化回路9は、フレームメモリ8に記憶された符号化データに対して復号化処理を行って、輝度データと色差データに変換する。RGB変換回路10は、BTC復号化回路9にて生成された輝度データと色差データをRGBの画素データに変換する。LCD駆動回路11は、BTC復号化回路9にて生成されたRGBの画素データを液晶パネル1内の各信号線に供給する制御を行う。
本実施形態の特徴的な構成は、ソースドライバ3内のBTC符号化回路7、フレームメモリ8およびBTC復号化回路9である。以下、これらの回路の構成および動作を詳述する前に、本実施形態の動作原理を説明する。
図2はソースドライバ3内のYCC変換回路6とBTC符号化回路7の処理動作を示すフローチャートである。まず、RGBデータを輝度データおよび色差データYCC(Yは輝度データ、Cr、Cbは色差データであるが、略してYCCと表記する)に変換する(ステップS1)。YCCに変換する理由は、視覚特性に合ったデータに変換することで、画質の向上を図るためである。このような変換は一般的であり、その詳細な変換式は省略する。
色差データは0を中心にプラス方向とマイナス方向に分布するので、プラス側への適切な変換を行って、画素値が0〜255の範囲に入るように調整する。若しくは、マイナスデータを処理可能なハードウェアを採用してもよい。この場合、色差データをプラス側に変換する処理は不要となる。このような手法は一般的であり、詳細な説明は省略する。以降に説明するステップS2〜S5は、輝度データと色差データのそれぞれについて行われる。
次に、複数画素からなる画素ブロックごとに、画素ブロック内の活動量を計算する(ステップS2)。この処理は、後述する2つのBTCアルゴリズムのいずれかを選択するために、処理対象の画素ブロックの性質を調べるために行われる。
処理対象の画素ブロック内での画像値の変化が激しいと、画像値そのものの精度を必要としなくなる。例えば「0」の画素の隣に「255」の画素があった場合、この「255」の値が圧縮により「245」になったとしても、0→255と0→245の画素値の変化量の違い(10)を視覚的に大きく認識することはできない。
一方、「0」と「1」のわずかな違いであっても、単一画素ではなく、いくつかの集団としての領域(平坦な領域)で、例えば画素値「0」をもつ領域が100画素で、画素値「1」を持つ領域が100画素の場合には、その差「1」を認識できる。
このように、人間の視覚は、画像の変化により認識の度合が変わってしまう。そこで、このような画像の変化量をここでは「活動量」と呼んで、BTCアルゴリズムの選択判断の基準とする。活動量の詳しい説明は後述する。
次に、画素ブロック内の活動量が予め定めた閾値より小さいか否かを判定する(ステップS3)。小さい場合には、処理対象の画素ブロックは平坦な領域と考えられるため、微妙な違いを認識可能な2レベルBTCアルゴリズムを選択する。2レベルBTCアルゴリズムは、4×4画素ブロック内の16個の画素データを、値の大きい8ビットからなる上代表値a2と、値の小さい8ビットからなる下代表値b2とに置き換えて、画素ブロックを16ビットで表現する。
一方、画素ブロック内の活動量が閾値以上であれば、各画素値の精度があまり要求されないと考えられるため、高圧縮率を実現可能で画素値の急激な変化にも対処可能な3レベルBTCアルゴリズムを選択する。3レベルBTCアルゴリズムは、4×4画素ブロック内の16個の画素データを、値の大きい5ビットからなる上代表値a3と、中間の値の5ビットからなる中間代表値b3と、値の小さい5ビットからなる下代表値c3とに置き換えて、画素ブロックを16ビットで表現する。
なお、画像圧縮のアルゴリズムは、上述した2レベルBTCと3レベルBTCに限定されるものではなく、圧縮率と画質を考慮に入れて圧縮アルゴリズムを用意すればよい。また、画素ブロックも4×4画素に限定されるものではなく、各画素のビット数も8ビット等に限定されない。
また、図2では2種類のBTCに分類しているが、3種類以上のBTCに分類してもよい。分類するBTCの数が増えるほど画質向上が図れる。というのは、より多くの代表値を利用することで、より忠実に画像データを復元できるからである。その一方、保存すべきデータ量は増加し、圧縮率が低下してしまうので、多ければよいというものでもない。
上述した2レベルBTCを採用する利点は、平坦な画像の場合に、自然に8ビット精度を確保できることがある。代表値を8ビットとしてもビットマップ情報量を比較的少なくすることができ、圧縮率を1/4程度に確保しつつ、8ビットという高精度をも達成できる。
図3はステップS2で計算される活動量を説明する図である。図3では、4×4画素からなる画素ブロック内の各画素の画素値を数値で表し、画素値の差分を計算する画素同士を矢印で示している。例えば、右下の隣り合う2つの画素の画素値は「2」と「255」である。これら2画素の画素値の差分は255−2=253である。
画像の変化は、水平方向と垂直方向で起こりうるため、図示のように2方向の矢印が存在し、一つの画素ブロック内には、水平方向と垂直方向のそれぞれに12個の矢印が存在する。これら矢印の位置での画素値の差分をそれぞれ計算して、そのうちの最大値を活動量として定義する。
活動量を決定する手法としては、最大値を取る手法の他に、差分の平均を取ったり、各種の高次統計的モーメントを計算したり、最頻値やメディアンなどを用いたり、種々考えられる。以下では、一例として最大値を活動量として選択して、その値をモードフラグとして保持しておく。
図4は2レベルBTCアルゴリズムを説明する図であり、4×4画素からなる画素ブロック内の各画素の画素値を数値で表している。この例では、各画素が8ビットの画素値(0〜2555)を有する。図4の画素ブロック内の画素値の平均は、(146+149+152+156+97+122+144+147+89+90+135+145+85+92+99+120)/16=1968/16=123である。
この平均値123を閾値として、123よりも値の大きい画素値をもつ画素(146、149、…など8個を上グループと呼ぶ)と、123よりも値の小さい画素値をもつ画素(97、122、…など8個を下グループと呼ぶ)との2つのグループに画素を分類する。
下グループの画素は、そのグループに属する画素値の平均99ですべての画素値を代表させる。上グループの画素はそのグループに属する画素の平均147ですべての画素値を代表させる。
このように、画素ブロック内の16個の画素値を2つの画素値に集約することで、データの圧縮を行う方法がBTCである。ここでは2つのレベル(下グループの平均99と上グループの平均147)を利用するので、2レベルBTCと呼んでいる。
図5は図4の2レベルBTCアルゴリズムにより得られる符号化データを示す図である。図示のように、上グループの画素は「1」、下グループの画素は「0」に置き換えられ、下グループの画素値を表す8ビットデータa2「01100011」と、上グループの画素値を表す8ビットデータb2「10010011」と、画素ブロック内の画素値を左から右に、上から下に順に並べたビットマップm2「1111001100110000」とを含む32ビットの符号化データが得られる。
画像圧縮を行わない場合、各画素が8ビットであるため、16×8=128ビットが必要であるが、これが32/128=1/4のデータ量に削減できる。このデータ量の削減は、輝度データと色差データのそれぞれで同程度に行えるため、輝度データと色差データの全体では、96/384ビット=1/4のデータ量に削減できる。
上述した処理手順で符号化された符号化データは、図1のフレームメモリ8に格納された後、BTC復号化回路9により復号されて、輝度データと色差データが生成される。図6は図5の符号化データの復号結果を示す図である。BTC復号化回路9は、図5の符号化データに含まれるビットマップm2「1111001100110000」の「1」を「147」に、「0」を「99」にそれぞれ変換する。
次に、3レベルBTCアルゴリズムについて説明する。圧縮率の向上のために、空間的なデータを間引く技術が広く知られている。ここでは420と呼ばれる間引き処理を説明するが、これに限定されるわけではなく、422などその他の間引き処理も選択可能である。
一般に輝度データYは、データ変化が激しく、画素ブロック内の各画素の画素値をそのまま保持するのが望ましい。すなわち、輝度データYについては間引き処理を行わない。
図7は画素ブロック内の輝度データYの一例を示している。3レベルBTCアルゴリズムでは、各画素の輝度値が3つの代表的な輝度値「0」、「128」、「255」に集約される。
一方、色差データ(CrとCb)は、輝度データと比較して空間的に鈍感であり、例えば図8のように4個の隣り合う画素を1つの値で代表しても、それほど目立たない。画素ブロック内の2×2画素の画素値が図7の左上のように、(128,255,0,128)であったとすると、これら4画素の平均は、(128+255+0+128)/4=128となる。したがって、この場合、図8の左上のように、4画素とも128として扱う。したがって、画素ブロック全体では、図9に示すように、見かけ上2×2画素として扱うことができる。
3レベルBTCアルゴリズムでは、2種類の閾値(小さい閾値を表す下閾値と、大きい閾値を表す上閾値)を用意する。ここでは、一例として、下閾値=85、上閾値=170とし、小さい代表値を表す下代表値(データa3)=0、中間の代表値を表す中間代表値(データb3)=128、大きい代表値を表す上代表値(データc3)=255とする。
図10は3レベルBTCアルゴリズムで生成される符号化データの一例を示す図であり、図7の輝度データYに対応する符号化データを示している。「0」を取る下代表値は「0」、「128」を取る中間代表値は「1」、「255」を取る上代表値は「2」に変換される。
符号化データは、下代表値を表すデータa3と、中間代表値を表すデータb3と、上代表値を表すデータc3と、画素ブロック内の各画素の輝度値を表す16個のビットマップデータm3とで構成される。
上述した2レベルBTCアルゴリズムでは、データa2,b2を8ビットで表現したが、3レベルBTCアルゴリズムでは圧縮率の向上のため、データa3,b3,c3を6ビットで表現する。例えば、下代表値を表すデータa3は「000000」とし、下位2ビットを省略する。同様に、中間代表値を表すデータb3は「010000」とし、上代表値を表すデータc3は「111111」とし、いずれも下位2ビットを省略する。
下位2ビットを省略して符号化データを生成しても、BTC復号化回路9で復号化処理を行う際には、下位2ビット「00」を付け加えて輝度データと色差データを生成する。
図10の符号化データ内のビットマップデータm3は、「1222012200120001」となり、3値を取る。したがって、実際にはこれら3値を2ビットで表現し、「0」は「00」に、「1」は「01」に、「2」は「10」に符号化する。このため、ビットマップデータb3は、2×16=32ビットを必要とする。
結局、符号化データの全体では、6+6+6+32=50ビットを必要とする。なお、ビットマップデータb3を32ビットよりも少なくする工夫をすることで、ビット数を50ビットよりも削減できる。
図11は3レベルBTCアルゴリズムで生成される色差データの符号化データの一例を示す図である。図11の符号化データは図8および図9の色差データに対応している。図11では、色差データの下代表値(データa3)、中間代表値(データb3)および上代表値(データc3)のそれぞれを5ビットで表現している。このように、データa3,b3,c3のビット数を削減することで、色差データの精度が悪くなるが、圧縮率の向上が図れる。
図8および図9で説明したように、画素ブロック内の2×2画素の色差データを等しくする間引き処理を行うため、画素ブロック内の各画素の色差データを並べたビットマップデータm3は、わずか4値「1201」になり、各値は2ビットで表現される。したがって、符号化データの全体のビット数は、5+5+5+2×4=23ビットになる。
図12は図7に示す輝度データと図8に示す色差データにより得られる符号化データのすべてを示す図である。図示のように、BTC符号化回路7により、1種類の輝度データと2種類の色差データが得られる。これらのデータの総ビット数は、50+23×2=96ビットである。
符号化する前は、画素ブロック内の16画素のそれぞれが輝度データと2種類の色差データを持ち、これらデータがいずれも8ビットで構成されるため、16×3×8=384ビットであるため、圧縮率は96/384=1/4になる。
3レベルあるのに圧縮率が下がらないのは、ビット数を減らすことと、間引き処理を行うことによる。図2で説明したように、画素ブロック内の活動量が大きく、粗い精度でも実用上問題ない場合に、3レベルBTCアルゴリズムで画像圧縮を行うため、ビット数の削減や間引き処理を行っても画質の劣化は視認されない。このように効率的に画像データを圧縮する。
図13はBTC符号化回路7で生成された符号化データのデータ形式とフレームメモリ8の構造を説明する図である。図示のように、符号化データは、2レベルBTCアルゴリズムと3レベルBTCアルゴリズムのどちらで符号化したかを示すモードフラグを先頭ビットに設け、その後に輝度データYに対応する符号化データと、2種類の色差データCr,Cbに対応する符号化データとを順に配置している。例えば、モードフラグが「0」の場合は2レベルBTCアルゴリズムで符号化された符号化データを示し、「1」の場合は3レベルBTCアルゴリズムで符号化された符号化データを示す。前者の場合、例えば自然画像であり、後者の場合、例えばPC画像である。
フレームメモリ8には、4×4画素からなる画素ブロックを単位として符号化データが記憶されるため、画素ブロック単位でのランダムアクセスを容易に行うことができる。
図13では、同じ画素ブロック内の輝度データと色差データに対して共通のモードフラグを設ける例を説明したが、輝度データと色差データに別個のモードフラグを設けて、それぞれ別個の値を設定できるようにしてもよい。また、3種類以上のBTCアルゴリズムを設ける場合には、2ビット以上のモードフラグを設ければよい。
図14はBTC符号化回路7による符号化処理により約1/4のデータ量に圧縮されることを模式的に示す図である。画像圧縮前の画像データは、画素ブロックを単位として、16×3×8=384ビットあるが、これが画像圧縮後は、96ビットに圧縮され、それに1ビットのモードフラグを加えて、計97ビットになる。97/384=約1/4に圧縮されることになる。
図15は図1のBTC復号化回路9の処理手順の一例を示すフローチャートである。まず、符号化データの先頭ビットであるモードフラグ(図13参照)の値を読み出す(ステップS11)。そして、モードフラグが「0」、すなわち2レベルBTCアルゴリズムで符号化されているか否かを判定する(ステップS12)。モードフラグが「0」の場合には、2レベルBTCアルゴリズムによる復号化処理を行い(ステップS13)、モードフラグが「1」の場合には、3レベルBTCアルゴリズムによる復号化処理を行う(ステップS14)。
ステップS13またはS14の処理が終了すると、輝度および色差データYCCをRGBの画素データに変換する(ステップS15)。
図16は2レベルBTCアルゴリズムで符号化された符号化データを復号化する処理を説明する図である。符号化データは、1ビットのモードフラグと、下代表値を示す8ビットのデータa2と、上代表値を示す8ビットのデータb2と、画素ブロック内の各画素の輝度データを示すビットマップデータm2とを含んでいる。ビットマップデータm2の後に、色差データを示すビットマップデータが続くが、図16では省略している。
図16の符号化データは、モードフラグが「0」であり、2レベルBTCアルゴリズムで符号化されていることがわかる。このため、代表値は2つだけである。データa2,b2の値により、下代表値が「99」、上代表値が「147」であることがわかる。
BTC復号化回路9は、ビットマップデータm2の「0」を「99」に、「1」を「147」に置き換える。この結果、図16の下側に示すように、画素ブロック内の輝度データが生成される。
画素ブロック内の輝度データと色差データのBTCアルゴリズムが同じである場合には、画素ブロックについて1個のモードフラグだけを設ければよいが、輝度データと色差データが個別にBTCアルゴリズムを選択する場合には、各データごとに別個のモードフラグを設ける必要がある。例えば、画素ブロック内で輝度の変化は激しいが、色はそれほど変化しない場合などである。この場合、色差データに関しては2レベルBTCアルゴリズムを用いて、画質の向上を図ることができる)。
図17および図18は3レベルBTCアルゴリズムで符号化された符号化データを復号化する処理を説明する図である。図17は輝度データの復号化処理、図18は色差データの復号化処理を示している。
図17に示すように、輝度データの符号化データは、1ビットのモードフラグと、下代表値を示す6ビットのデータa3と、中間代表値を示す6ビットのデータb3と、上代表値を示す6ビットのデータc3と、画素ブロック内の各画素の輝度データを示すビットマップデータm3とを含んでいる。
ビットマップデータm3の後で、図18に示す色差データCr,Cbの符号化データが続く。色差データの符号化データは、Crの下代表値を示す5ビットのデータa4と、Crの中間代表値を示す5ビットのデータb4と、Crの上代表値を示す5ビットのデータc4と、画素ブロック内の各画素のCrについてのビットマップデータm4と、Cbの下代表値を示す5ビットのデータa5と、Cbの中間代表値を示す5ビットのデータb5と、Cbの上代表値を示す5ビットのデータc5とを有する。
なお、図18では、Cbの符号化データを省略しているが、データ構造はCrと同じである。
図17および図18の符号化データは、モードフラグが「1」であり、3レベルBTCアルゴリズムで符号化されていることがわかる。モードフラグは、輝度データYと色差データCr,Cbで共用されるが、輝度データYと色差データCr,Cbが互いに異なるBTCアルゴリズムを採用する場合には、個別にモードフラグを設ければよい。
輝度データYを復号化する場合、図17に示すように、ビットマップデータ中の「0」を下代表値a3=0に変換し、「1」を中間代表値b3=128に変換し、「2」を上代表値c3=252にそれぞれ変換する。
色差データCrを復号化する場合、図18に示すように、ビットマップデータ中の「0」を下代表値a4=0に変換し、「1」を中間代表値b4=128に変換し、「2」を上代表値c4=248にそれぞれ変換する。色差データCbについても、色差データCrと同様の手順で復号化される。
上述した3レベルBTCアルゴリズムでは、中間代表値を適切に選択しないと画質が劣化するおそれがある。図19は中間代表値の値により画質が変化する例を説明する図である。図19(a)は、「グラフ エリア」という文字列の背景が灰色に色づけされ、文字列自体は黒の例を示している。
この場合、2レベルだけで十分に符号化できるようにも思えるが、実際には4×4画素からなる画素ブロックは画像の境界線に沿って配置されないため、画素ブロック内の一部に背景部分を含む場合がありえる。このような場合、灰色を含めて3レベルが必要となる。単純に白の画素値と黒の画素値を三等分した閾値を灰色用の中間代表値として定めると、実際の灰色とは異なった色レベルになり、図19(b)に示すようにアーチファクトとして視認されてしまう。
自然画像では、このような誤差は局所的であり、それほど目立たない。ところが、PC画面等の人工的に生成された画像の場合、比較的大きな範囲でアーチファクトが視認され、画質の劣化が目立ってしまう。
図20は本実施形態で新たに提案する中間代表値の設定手法を説明する図である。本実施形態は、3レベルBTCアルゴリズムで用いられる中間代表値を、画像内の灰色のレベルに適切に合わせることを目的とする。中間代表値を設定する際、実際の画像内の画素値の分布を考慮に入れず、最大画素値と最小画素値の範囲から機械的に中間代表値を設定すると、どうしても、中間代表値が実際の画像と食い違ってしまう。そこで、本実施形態では、実際の画像の画素値の分布を考慮に入れて中間代表値を設定するために、白と黒に相当する最大画素値と最小画素値の画素データを除いて、平均値を取る(図20のAVE)。この除去作業により、最大画素値と最小画素値の画素の数に影響されることなく、灰色レベルをより正確に計算することができる。
このようにして、最大画素値と最小画素値を除いて計算した平均値AVEと、最大画素値および最小画素値との中間の画素値を閾値Th_high,Th_lowとする。また、閾値により区分けされるそれぞれの範囲で平均値を計算し、代表値Val_plus, Val_mid, Val_minusを選定する。
3レベルしか存在しない場合には、代表値は元のデータの値そのままになる。したがって、精度が向上することがわかる。
上述した図20の手法で中間代表値を設定して符号化を行った符号化データを復号すると、図21(b)に示すように、文字列の周囲に灰色のアーチファクトが視認されなくなり、図19に比べて明らかに画質が向上する。
なお、補足すれば、画像として写真のような自然画像を符号化する場合、最小画素値や最大画素値も含めて平均値を計算した方が統計的に優れた画質が得られる。このため、自然画像の場合は最小画素値、最大画素値を除くという行為は逆に望ましいものとは思えない。本実施形態は、自然画像ではなく、PC画像という人工的な画像を符号化する場合に適した手法である。
本発明者は、自然画像を符号化する場合は、主に2レベルBTCで処理するのが望ましいと考えている。自然画像では、本明細書で定義した「活動量」は統計的に小さくなる場合が大部分であり、ごくまれに3レベルBTCで処理されてしまうかもしれない。しかし、これは極めて例外的なケースである。また、自然画像では変化が埋もれて認識しにくい。したがって、完全ではないが、統計的には十分に人間の視覚を騙しているといえよう。またPC画像は実際には6ビット精度である場合が多く、Y信号を6ビット、色差信号を5ビットとして圧縮率を高めても画像劣化が少ない。この意味で3レベルBTCの代表値のビット長を削減できることも理解できる。
次に、図20の手法で生成した2種類の閾値Th_high,Th_lowと、3種類の代表値Val_plus, Val_mid, Val_minusを選択する処理手順について説明する。図22は3レベルBTCアルゴリズムで用いる閾値と代表値を選択する処理手順を説明するフローチャートである。
まず、画素ブロック内の画素の最大画素値MAXと最小画素値MINを計算する(ステップS21)。次に、図20で説明したように、最大画素値MAXと最小画素値MINを除いて、2種類の閾値Th_high,Th_lowを計算する(ステップS22)。ここでは、Th_low<Th_highとする。
次に、閾値Th_highとTh_lowを用いて、最終的に3つの代表値V_plus、V_mid、V_minusを定める(ステップS23)。この詳細は図23で説明する。
ここで、画素ブロック中の各画素の画素値をxとする。ステップS24では、画素値xと2種類の閾値Th_high,Th_lowを比較して、場合分けする。値xがTh_highより大きい場合には、代表値としてV_plusを選択する(ステップS25)。値xがTh_lowとTh_highの間にある場合には、代表値としてV_midを選択する(ステップS26)。最後に値xがTh_lowよりも小さい場合には、代表値としてV_minusを選択する(ステップS27)。このようにして、代表値が決定される。
図23は図22のステップS22の閾値を計算する処理手順を示すフローチャートである。まず、変数SUM,CNTを「0」に初期化する(ステップS31)。次に、処理対象の画素の画素値が最大画素値MAXか最小画素値MINかを判定する(ステップS32)。判定がNOであれば、変数SUMに画素値を足し合わせ、変数CNTを「1」だけカウントアップする(ステップS33)。
次に、画素ブロック内の全画素の処理を行ったか否かを判定し(ステップS34)、まだ処理を行っていない画素が存在すればステップS32に戻り、全画素の処理が終わった場合には、画素値の平均AVE=SUM/CNTを計算する(ステップS35)。
次に、平均値AVEと最小画素値MINとの差分Δ1と、平均値AVEと最大画素値MAXとの差分Δ2を計算する(ステップS36)。差分Δ1,Δ2は以下の(1)式で計算される。
Δ1=AVE−MIN、Δ2=MAX−AVE …(1)
Δ1=AVE−MIN、Δ2=MAX−AVE …(1)
次に、以下の(2)式により、閾値Th_highを計算する(ステップS37)。
Th_high=MAX−Δ2/2 …(2)
Th_high=MAX−Δ2/2 …(2)
次に、以下の(3)式により、閾値Th_lowを計算する(ステップS38)。
Th_low=MIN+Δ2/2 …(3)
Th_low=MIN+Δ2/2 …(3)
以上により、2種類の閾値Th_high,Th_lowが計算される。
なお、最大画素値MAXと最小画素値MINを除いて平均値を計算することに関連して、最大画素値MAXと最小画素値MINを一定のマージンΔ3、Δ4(>0)だけ変更した値MAX−Δ3、MIN+Δ4を、上述した各式のMAXやMINの代わりに使用してもよい。この場合はEQ(等号)ではなくGE(grater than or equal to:以上)またはLE(less than or equal to:以下)を利用して実現すればよい(後の図38を参照)。
図24は代表値を決定する処理手順を示すフローチャートである。画素値を3つの範囲に区分けして、それぞれの範囲に属する画素値の総和を計算するための変数Sum_high、Sum_mid、Sum_lowと、これら3つの範囲内の画素の個数をカウントするための変数Cnt_high、Cnt_mid、Cnt_lowとを設け、これら変数を「0」に初期設定する(ステップS41)。
次に、画素ブロック内の全画素について以下のステップS42〜S46の処理を行う。ステップS42では、画素値Xが閾値Th_high以上か否かを判定し、判定がYESであれば、変数Sum_highにその画素値Xを足し合わせるとともに、変数Cnt_highを「1」カウントアップする(ステップS43)。
ステップS42の判定がNOであればステップS44に進み、画素値Xが閾値Th_low以上か否かを判定し、判定がYESであれば、変数Sum_midにその画素値Xを足し合わせるとともに、変数Cnt_midを「1」カウントアップする(ステップS45)。
ステップS44の判定がNOであればステップS46に進み、変数Sum_lowにその画素値Xを足し合わせるとともに、変数Cnt_lowを「1」カウントアップする(ステップS46)。
画素ブロック内の全画素についてステップS42〜S46の処理を行った場合には、変数Sum_high、Sum_mid、Sum_lowと変数Cnt_high、Cnt_mid、Cnt_lowに基づいて、代表値V_plus、V_mid、V_minusを計算する(ステップS47)。
図25は図24のステップS47の処理に用いる変数Cnt_high、Cnt_mid、Cnt_lowと代表値V_plus、V_mid、V_minusとの対応関係を示す図である。図25において、変数Cnt_high、Cnt_mid、Cnt_lowの値は、「0」のときを「0」と表示し、「0」以外のときを「1」と表示してある。
例えば、最初の行では、変数Cnt_high、Cnt_mid、Cnt_lowがすべてが「0」であり、図24の処理を行っていないことを示している。このような論理的な不定値の場合であっても、実際にはなんらかの都合のよい(矛盾を起こさない)値を割当てることで、ハードウェアの出力が不用意に不定値にならないようにすべきである。
図25からわかるように、必ずしも3レベルの代表値が得られるわけではない。変数Cnt_high、Cnt_mid、Cnt_lowのいずれかが「0」の場合には、レベル数を減らすのが自然である。また、変数Cnt_high、Cnt_mid、Cnt_lowのすべてが「0」の場合には代表値が割り当てられないため、画素値がどのような値であっても特に問題ない。
本実施形態では、2レベルBTCアルゴリズムと3レベルBTCアルゴリズムの選択について説明しているが、本実施形態はNレベル(例えば4レベル)BTCアルゴリズムに拡張することも可能である。このとき、最終データ量がほぼ一定になるようにすることが望ましい。
例えば4レベルBTCアルゴリズムを考えるとすると、次のような構成が考えられる。輝度Yに関しては、代表値を4ビットにし、4ビット×4個の代表値=16ビット、ビットマップデータは2ビット×16画素=32ビット、2種類の色差データ(Cr、Cb)に関しては、代表値が4ビットで、4ビット×4個の代表値×2=32ビット、ビットマップデータは2ビット×4画素×2=16ビットとなる。
結局、4レベルBTCアルゴリズムの場合、合計16+32+32+16=96ビットになる。これにモデルフラグビットの2ビットを加算すると、総計98ビットとなる。この場合でも、圧縮率はほぼ1/4を確保できている。これも一例であり、図20で説明した原理で処理動作を行う限り、レベル数には特に制限はない。
図26はフレームメモリ8の圧縮能力を示す図である。QVGAサイズの画像からVGAサイズの画像に拡大する場合を想定して圧縮能力を見積もる。図26の第一列COL1はメモリ圧縮能力を示している。より詳しくは8ビット画像での圧縮能力を示しており、6ビット画像の場合は6/8倍に換算する必要がある。なお、圧縮能力とは(入力画像のサイズ)/(圧縮された出力画像のサイズ)であり、この逆数の(出力画像のサイズ)/(入力画像のサイズ)を圧縮率という。
第二列COL2は、6ビットQVGA画像を扱い、QVGA−RAMを含むドライバ1の圧縮率を示している。第三列COL3は、6ビットVGA画像をスルー画像として扱い、QVGAサイズのRAMを含むドライバ2の圧縮率を示している。第四列COL4は、8ビットQVGA画像を扱い、QVGA−RAMを持つドライバ3の圧縮率を示している。
図26は、ドライバ1〜3において、QVGAからVGAへ画像サイズが拡大した場合の圧縮能力の変化を示している。以下では、ドライバ1の場合を例に取って説明するが、ドライバ2とドライバ3の場合も同様の手順で圧縮能力が計算される。
まず、第二行から第五行までは、それぞれの圧縮能力を想定した場合のICチップ面積を計算している。第一行目は、計算の基礎となるデータを示している。現在のチップ面積を1.0として、相対比を計算する。このIC中のフレームメモリ8の相対比は0.32である。したがって、QVGAからVGAに画面サイズを拡大すると4倍になり、0.32×4=1.28のメモリサイズとなる。このため、フレームメモリ8以外の部分0.68は不変として、0.68+1.28=1.96と予想される。これが何も圧縮を行わない場合であり、ほぼ2倍へ面積が増加してしまい、コスト的に厳しい状況となる。
次に圧縮した場合を説明する。メモリ圧縮能力が4の場合を説明する。図26では、8ビット画像の場合のメモリ圧縮能力を示している。1.28に増加したフレームメモリ8が、1.28/4/0.75となり、結果的に1.11倍となる。
以上の計算では、圧縮のために追加する回路を計算に入れていない。これは、フレームメモリ8が非常に大きく、相対的に圧縮符号化と復号化に伴う回路は無視できるとして計算したからである。実際には少しではあるが増加はするが、問題ない。このような計算を順次行っていくと、図26の表が得られる。ドライバ3の場合は、8ビットであるので、そのままメモリ圧縮能力で割ればよい。
一方、図27はQVGAサイズの画像をそのまま圧縮した場合の圧縮能力を示す図である。この場合は、2割から3.6割程度の削減が可能である。(メモリ圧縮能力が4の行。)
図26と図27を比較すればわかるように、VGAサイズの画像の方がより圧縮能力が高いが、QVGAサイズの画像の場合でも2〜3割の十分に高い圧縮能力が得られる。例えば、6ビット→4ビットへ変換するFRCの技術では、圧縮能力2の場合に相等するので、1割〜2.5割である。
図26と図27より、本実施形態によれば、従来よりも十分に高い圧縮能力が得られることがわかる。
上記では、主に圧縮率1/4(圧縮能力4)の場合について説明したが、図26と図27には他の圧縮率(圧縮能力)についても記載されている。このように、本実施形態は、圧縮率が1/4に限定的に考えるのはなく、他の圧縮率を与える他のBTCの組み合わせも選択可能である。
図1では、ソースドライバ3の内部にBTC符号化回路7を設ける例を示したが、BTC符号化回路7をタイミングコントローラ2の内部に設けてもよい。図28は図1の変形例を示す画像処理回路の概略構成を示すブロック図である。図28の画像処理回路は、タイミングコントローラ2とソースドライバ3の内部構成が図1とは異なっている。
図28のタイミングコントローラ2は、YCC変換回路6、BTC符号化回路7およびBTCデータ送信回路を有する。また、図28のソースドライバ3は、BTCデータ受信回路と、フレームメモリ8と、BTC復号化回路9と、RGB変換回路10と、LCD駆動回路11とを有する。
図1と図28では、タイミングコントローラ2とソースドライバ3で送受されるデータの種類が異なる。図28の場合、タイミングコントローラ2で符号化された符号化データがソースドライバ3に送信される。符号化データは、元の画像データを圧縮したデータであり、タイミングコントローラ2とソースドライバ3との間で送受されるデータ量を図1よりも削減できる。したがって、EMI対策を図ることができる。また、伝送周波数も低減でき、タイミングコントローラ2とソースドライバ3の送受信系の回路を高速動作させなくて済み、回路規模を縮小できる。
ソースドライバ3の内部では、符号化処理を行う必要がなく、復号化処理だけを行えばよいため、ソースドライバ3の構成を図1よりも大幅に簡略化できる。このソースドライバ3の構成は、従来のソースドライバ3の構成とは互換性はないが、タイミングコントローラ2とソースドライバ3間の送受信系の回路を最適化できるという大きな特徴があり、次世代のソースドライバ3等に採用される可能性が高い。
タイミングコントローラ2とソースドライバ3との間で画像データまたは符号化データを伝送する際、図29に示すように、タイミングコントローラ2側に4Hメモリ21を設け、ソースドライバ3側に16組のレジスタを設けてデータの受け渡しを行ってもよい。
携帯電話等に用いられる小型の液晶パネル1は一つのソースドライバ3で液晶パネル1を駆動しているが、PCやTV等の大型の液晶パネル1の場合、複数のソースドライバ3で液晶パネル1を駆動することもありうる。このような場合、図29の構成では、ソースドライバ3側に4Hメモリを設けなくて済むため、画像処理装置全体として必要な4Hメモリの数を削減できる。
図29は一例であり、タイミングコントローラ2とソースドライバ3のそれぞれにどのような回路を割り振るかは必要に応じて任意に変更すればよい。
図30は図1のBTC符号化回路7の内部構成を示すブロック図である。図30を用いてホスト側から送られてきた画像データをフレームメモリ8に記憶する処理動作を説明する。
BTC符号化回路7は、4Hメモリ21と、アドレス生成回路22と、BTC処理入力部23と、BTC符号処理部24と、BTC処理出力部25と、FMローアドレス生成器26と、FMカラムアドレス生成器27とを有する。
4Hメモリ21は、YCC変換回路6で生成された4行分の輝度データと色差データを一時的に記憶する。アドレス生成回路22は、スタートページ情報を生成するSP生成器31と、エンドページ情報を生成するEP生成器32と、スタートカラム情報を生成するSC生成器33と、エンドカラム情報を生成するEC生成器34とを有する。
SP生成器31は、先頭のローアドレスを生成し、EP生成器32は先頭のローアドレスと対角上の最後のローアドレスを生成する。SC生成器33は画素ブロックの先頭のカラムアドレスを生成し、EC生成器34は先頭のカラムアドレスと対角上の最後のカラムアドレスを生成する。
以下では、説明の簡略化のために、SC、EC、SP、EPは4×4ブロックに適合するように仮定して説明する。すなわち、SC=4×(整数1)、EC=4×(整数2)+3、SP=4×(整数3)、EP=4×(整数4)+3と表されるものとする。
フレームメモリ8は、4×4画素ブロックの並びを相対的に保持したままで、符号化データを記憶する。BTC圧縮により、4×4画素ブロックのデータが所定の固定サイズSIZE(たとえば、上の例では、97ビット)になるとする。これをBTCセルサイズと呼ぶこととする。
フレームメモリ8のカラムアドレスCAとローアドレスRAを与える画像の範囲を、MSC、MEC、MSP、MEPで指定する。ここで、MSCはフレームメモリ8のスタートカラム、MECはフレームメモリ8のエンドカラム、MSPはフレームメモリ8のスタートページ、MEPはフレームメモリ8のエンドページである。
さて、フレームメモリ8に記憶される符号化データを構成するビット列が1つのローに配置されていると仮定する。符号化データを複数のローに分散して配置することも可能であるが、一般性を失わないので、まずは簡略化のために1つのローに配置すると仮定して説明する。
このとき、MSC=SIZE×(整数1)、MEC=SIZE×(整数2)、MSP=(整数3)、MEP=(整数4)となる。したがって、FMカラムアドレス生成器27は、フレームメモリ8でのカラムアドレスとして、SIZEの大きさの符号化データ(圧縮データ)を書き込むために、MSC、MSC+1、…、2×MSC、2×MSC+1、…、(整数2−整数1)×MSC、(整数2−整数1)×MSC、…、(整数2)×MSC−1のアドレスを順番に生成する必要がある。
ここでは、4×4単位で書き込みを行うようにしても一般性を失わないので、4×4単位で書き込むを行うと仮定する。このとき、SIZE単位でアドレスを生成していくことになる。すなわち、MSC、MSC+1、…、MSC+SIZE−1を最初の単位として生成する。次には、2×MSC、2×MSC+1、…、2×MSC+SIZE−1が生成される。以下同様である。FMローアドレス生成器26も同様に考えると、最初に(整数3)、次に(整数3)+1、…、(整数4)と順番に生成される。
FMカラムアドレス生成器27は、符号化データのSIZE分だけいつも選択するため、カラムセレクト信号のすべてをアドレスデコードする必要はない。最初のN×MSCの部分だけデコードし、他の対応するカラムセレクト信号はこれをそのまま利用すればよい。
FMローアドレスは、4×4画素で常に同じであるため、ローセレクト信号が1つで十分であることは明らかであるが、フレームメモリ8の構成を変更したより一般的な場合には同様な議論ができることも補足しておく。
書き込み・読み出しされるデータ量は、符号化による圧縮により、ほぼ1/4になっている。このことは、仮に元のデータのままでフレームメモリ8への書き込みと読み出しを行う場合、4倍の速度で読み書きを行うか、または4倍のデータI/O幅で読み書きを行う必要があることを意味している。
したがって、データ圧縮により、フレームメモリ8に対するアクセス速度を遅くでき、またはI/O幅を削減できる。
例えば、フレームメモリ8に対するアクセス速度を遅くすることを選択したとする。この場合、VGAメモリにアクセスする時間が従来のQVGAメモリにアクセスする時間と同じ程度で済むことを意味しており、フレームメモリ8の制御を現状と同様の速度で行うことができる。したがって、データ圧縮効果は、メモリシステム自体の性能改善効果もある。
図30のBTC処理入力部23は、4Hメモリ21に記憶されたデータを1画素ブロック分を単位として読み出して、1画素分ずつBTC符号処理部24に供給する。
BTC符号処理部24は、図2のステップS2〜S5の処理を行う部分であり、活動量検出器41と、2レベルBTC処理部(BTC-val2)42と、3レベルBTC処理部(BTC-val3)43と、2レベルBTC処理部42で生成された符号化データと3レベルBTC処理部43で生成された符号化データのいずれかを選択するセレクタ44とを有する。
活動量検出器41は、処理対象の画素ブロック内の活動量を検出し、検出した活動量と所定の閾値とを比較した結果を示す信号を出力する。
2レベルBTC処理部42は、2レベルBTCアルゴリズムに従って画素ブロックごとに符号化データを生成する。3レベルBTC処理部43は、3レベルBTCアルゴリズムに従って画素ブロックごとに符号化データを生成する。セレクタ44は、活動量検出器41で検出された活動量が閾値を超えるか否かにより、2レベルBTC処理部42と3レベルBTC処理部43のいずれかで生成された符号化データを選択する。
BTC処理出力部25は、BTC符号処理部24内のセレクタ44で選択された符号化データを一時的に記憶する。記憶された符号化データは、フレームメモリ8に記憶される。フレームメモリ8内の記憶場所は、FMローアドレス生成器26で生成されたローアドレスとFMカラムアドレス生成回路22で生成されたカラムアドレスにより指定される。
次に、元画像を90度回転させて表示させる場合の処理について説明する。TV画面は横長であるのに対して、携帯電話の画面は縦長である。したがって、携帯電話の画面にTV画面などの横長の画像を表示したい場合は、携帯電話側で画像を90度回転して、縦横を変化させる必要がある。
画像圧縮を行わない場合には、発生されるカラムアドレスとローアドレスを例えば、左下から右上へ順番にアクセスして画像データをフレームメモリ8中に記憶すればよい。
ところが、本実施形態の場合、画素ブロックを単位として画像データを圧縮するため、圧縮された符号化データをそのまま利用して回転させようとしても、回転情報がデータ位置に反映されておらず、問題となる。
そこで、本実施形態では、圧縮データについても、画像回転情報を利用して、元の画像との整合性を保つ必要がある。
図31は画像を回転させる場合の処理手順を説明する図である。図31の元画像は例えばTV画面の画像である。この画像は、図示のように、左から右に、上から下に順にスキャンされて、この順にデータ(輝度および色差データ)がBTC符号化回路7に送られてくる。このデータは、BTC処理を行うために4Hメモリ21に記憶される。
BTC処理入力部23は、4×4画素ブロックを単位として4Hメモリ21からデータを読み出す。読み出されたデータは図1の処理手順で符号化データに変換される。この符号化データの中には、画素ブロック内の各画素の情報を示すビットマップデータが含まれている。
このビットマップデータの並び順は、元の画像のままである。例えば、図31の例では、画素ブロックの左から右に、上から下に向かって、「0000111111122222」というビットマップデータがある。
画像を90度回転させるには、図31の画素ブロックB1内のデータの並びを画素ブロックB2のような並びに変更する必要がある。
画像を90度回転する場合、符号化データ中の代表値は変化せず、ビットマップデータの並びだけが変化する。また、90度回転させたデータに対してBTC符号化処理を行っても、BTC符号化処理を行った後に90度回転させても、得られる結果は同じである。
そこで、本実施形態では、BTC符号化処理を行った後に、ビットマップデータの並び替えを行うことで、画像の回転処理を行う。
なお、画像の回転処理は、BTC復号化処理を行う際に行ってもよい。しかし、一般に、フレームメモリ8のサイズは限られており、回転処理を行った状態でフレームメモリ8に記憶する方が望ましい。メモリの縦横比に適合した回転方向を選択して回転済みデータを保存することで、メモリ領域を余分に用意する無駄をなくすことができる。
あるいは、BTC符号化回路7にデータを入力する際に回転処理を行うことも考えられる。この場合、画素データでの回転であるから、8ビットのデータをまとめて回転操作を行うことになる。したがって、位置情報1ビットで回転操作を行うビットマップでの回転の方が、よりハードウェアの削減を期待できる。
図32はBTC符号化回路7で行う90度回転処理を説明する図である。以下では、フレームメモリ8に符号化データを記憶する際に指定するアドレスをFMアドレスと呼ぶ。図32を用いてFMアドレスがどのように指定されるかを説明する。
元々の画素ブロックB1のアドレスを、x=カラムアドレス1とy=ローアドレス1とする。この画素ブロックB1を回転すると、画素ブロックB2が得られる。この画素ブロックB2のアドレスは、x=カラムアドレス2=ローアドレス1、y=ローアドレス2=−カラムアドレス1となる。ここで、マイナスy方向で順番に画素をアクセスする。
元々の画像のアドレスでスタートページ情報SP、エンドページ情報EP,スタートカラム情報SC、エンドカラム情報ECを指定する場合(オリジナル座標モード)と、90度回転後のアドレスでスタートページ情報SP、エンドページ情報EP、スタートカラム情報SC、エンドカラム情報ECを指定する場合(表示座標モード)が考えられる。
オリジナル座標モードでは一度、90回転した後の座標値で解釈しなおす必要がある。表示座標モードでは、90度回転後の座標値をタイミングコントローラ2側で計算してから送ってくるが、オリジナル座標モードでは、まだこれが行われず、元のアドレスがあるだけである。オリジナル座標モードでのスタートローアドレスを4×N1、エンドローアドレスを4×N2−3、スタートカラムアドレスを4×N3、エンドカラムアドレスを4×N4−3とする。すなわち、ローアドレスは4×N1→4×N2−3、カラムアドレスは4×N3→4×N4−3と変化する。90度回転すると、ローアドレスは4×N3→4×N4−3、カラムアドレスは4×NN−4×N1→4×NN−(4N2−3)と変化する。
ここで、4×NNは元画像のX方向サイズである。したがって、FMx座標初期値はN3、最終FMx座標はN2となる。同様に、FMy座標初期値はNN−N1、最終FMy座標値はNN−N2となる。このようなフレームメモリ8のアドレスは、図32のFMローアドレス生成器26とFMカラムアドレス生成回路22で生成される。
図33はフレームメモリ8のアドレス生成の処理手順を示すフローチャートである。このフローチャートでは、フレームメモリ8のx座標をfx、y座標をfyとする。
まず、fxをN3、fyをNN−N1に初期設定する(ステップS51)。次に、BTC符号化を行うが(ステップS52)、画素ブロックは4×4画素のサイズであるため、フレームメモリ8のアドレスはもとのアドレスの1/4単位で処理されている。
次に、x座標fxが最終x座標fxに一致したか否かを判定する(ステップS53)。最終x座標fxの値はN3に設定されている。ステップS53の判定がNOであれば、x座標fxを「1」プラスしてステップS52のBTC符号化処理を行う。
ステップS53の判定がYESであれば、y座標fyが最終y座標fyに一致したか否かを判定する(ステップS55)。最終y座標fyはNN−N2に設定されている。ステップS55の判定がNOであれば、y座標fyを「1」プラスしてステップS52のBTC符号化処理を行う。
図33の処理をハードウェアで実現する場合、BTC符号化処理を行う機能ブロックを一つ用意する場合や、x座標fxとy座標fyの値に応じて別個の機能ブロックでBTC符号化処理を行う場合など、複数の構成が考えられるが、いずれを採用してもよい。
90度の回転処理を行う場合、ステップS54,S56の処理内容が変更になり、回転操作と対称操作に応じてxy座標fx,fyが変更される。また、初期FMアドレスと最終FMアドレスも同様に回転操作と対称操作に応じて変わる。それぞれの場合(8種類)で、場合分けして対処すればよく、それに応じて図33を修正すればよい。
一方、活動量検出器41の動作は回転前後で変わらない。その理由は、画素の隣り合う位置関係は回転により損なわれないためである。回転によってx方向とy方向の関係は変わるかもしれないが、回転前後で検出される活動量は変化しない。
次に、フレームメモリ8への符号化データの書き込みについて説明する。フレームメモリ8に記憶される符号化データの元となる画像データは、ホスト側からインタフェースを経由して送られてくる。このとき、一般には、画像の水平ラインの順番にシーケンシャルに送られてくる。したがって、4x4画素ブロックの処理を行うには4Hメモリ21が必要となる。当然、ホスト側でデータ順序を入れ替えて送ることも可能であるが、ここでは入れ替えをしない場合を説明する。
まず、最初の3行分のデータを4Hメモリ21に保存する。4行目に4x4ブロックのデータが揃ったときに、BTC圧縮処理が可能になる。したがって、BTC符号化回路7は、4クロック毎に処理を行う。
4x4画素ブロックのデータはBTC処理のために、図30に示すBTC処理入力部23に入力される。このBTC処理入力部23は16入力のレジスタであり、1画素ブロック内の16画素のデータ(輝度および色差データ)が記憶される。
BTC符号処理部24で符号化された符号化データは、BTC処理出力部25に一時的に記憶される。このBTC処理出力部25も16入力のレジスタで構成される。これらレジスタは、フレームメモリ8に記憶する順番に並んでおり、FMカラムアドレス生成回路22とFMローアドレス生成器26により生成された、カラムセレクト信号とローセレクト信号にしたがって、データラインよりFMに書き込まれる。
図34はフレームメモリ8に符号化データを記憶する際の処理動作を概念的に示す図である。図34では、メモリセルの隣接関係を強調するために、カラムセレクト信号をメモリアレイの位置に隣接して配置しているが、実際には後述するようにデータセレクタにセレクタカラムが入力される。
カラムセレクト信号は、1画素ブロックの符号化データすべてについて共通である。すなわち、1画素ブロックの符号化データを記憶するすべてのメモリセルに対して、共通のカラムセレクト信号が供給される。同様に、1画素ブロックの符号化データを記憶するすべてのメモリセルに対して、共通のローセレクト信号が供給される。これにより、フレームメモリ8は符号化データを記憶するのに適した構成になる。
次に、フレームメモリ8およびその周辺回路の内部構成をより詳細に説明する。図35はフレームメモリ8およびその周辺回路の内部構成を示すブロック図である。図35のフレームメモリ8は、カラムアドレスラッチ51と、データセレクタ52と、センスアンプ53と、メモリセルアレイ54と、ローアドレスラッチ55と、ローデコーダ56と、ローバッファ57とを有する。
カラムアドレスラッチ51は、図30に示すFMカラムアドレス生成回路22で生成されたカラムアドレスをラッチする。ローアドレスラッチ55は、図30に示すFMローアドレス生成器26で生成されたローアドレスをラッチする。
メモリセルアレイ54はフレームメモリ8の本体である。メモリセルアレイ54に記憶される符号化データは、データセレクタ52に入力される。図36はデータセレクタ52の内部構成を示すブロック図である。図36に示すように、データセレクタ52は、カラムデコーダ61と、複数のパストランジスタ群62とを有する。FMカラムアドレス生成回路22により生成されたカラムアドレスはカラムアドレスラッチ51でラッチされ、カラムデコーダ61に入力される。
カラムデコーダ61は、複数のパストランジスタ群62のうち一つをオンする。これにより、データセレクタ52に入力された符号化データは、オン状態のパストランジスタ群62を通過して、メモリセルアレイ54内の一部のビット線63に供給される。
データセレクタ52は、符号化データ分のビット数のパストランジスタ群62を同タイミングでオンして、一つの符号化データ64をまとめて複数のメモリセルに書き込む点に特徴がある。図35には、2組のパストランジスタ群62が図示されており、それぞれのパストランジスタ群62は隣り合う2つの画素ブロックの符号化データ64をそれぞれ対応するビット線63に供給する。
ローアドレスについては、FMローアドレス生成器26で生成されたローアドレスがローアドレスラッチ55でラッチされた後、ローデコーダ56でデコードされて、ローアドレス信号が生成される。
図37は図36とは異なる構成のデータセレクタ52の内部構成を示すブロック図である。図37のデータセレクタ52は、符号化データ64を入力する箇所の結線が図36と異なっている。図37の場合、各パストランジスタ群62に対応して別個の符号化データ64が入力される。
図37の構成を実現するには、BTC符号化回路7を複数設けて、これらBTC符号化回路7をデータセレクタ52に並列接続する必要がある。
図37の構成による利点は、BTC符号化回路7の出力配線を画素ブロック単位で集約させる必要がなく、BTC符号化回路7とフレームメモリ8との間の配線長を短縮できる。配線を集約させると、各配線の配線長にばらつきが生じ、配線長が余計に長くなってしまう。したがって、図37のような構成も可能性として考えられる。
なお、図36の構成と図37の構成を組み合わせたような構成も考えられる。例えば、輝度データおよび色差データを単位として配線をまとめたり、複数の画素ブロックを単位として配線をまとめてもよい。このような場合、ハードウェア面積と処理スピードを考慮して、具体的な構成を検討するのが望ましい。
図38は図36と図37とは異なる構成のデータセレクタ52の内部構成を示すブロック図である。図38の場合、個々のパストランジスタが個別にオンオフ制御されるため、符号化データが1ビット単位でフレームメモリ8に記憶される。なお、図38の変形例として、図39と図40に示すように符号化データの複数ビットを単位としてフレームメモリ8に記憶することも考えられる。
次に、フレームメモリ8に記憶された符号化データを復号する処理動作について説明する。フレームメモリ8に記憶された符号化データの読み出しは、書き込みとは逆の処理を行うことにより実現される。
図41は符号化データの復号化処理を説明する図である。書き込みと同様に、スタートカラム情報を生成するSC生成器33と、エンドカラム情報を生成するEC生成器34と、FMカラムアドレス生成回路22とを用いて、フレームメモリ8のカラムセレクト信号を生成する。
また、スタートページ情報を生成するSP生成器31と、エンドページ情報を生成するEP生成器32と、FMローアドレス生成器26とを用いて、フレームメモリ8のローセレクト信号を生成する。
これらセレクト信号から、フレームメモリ8により圧縮された画像データを読み出す。これは4×4画素ブロックの画像データであり、先に説明した復元方法により復元される。これは4×4画素ブロック単位であるので、ライン単位に直すために、4Hメモリ21を用いて順序を入れ替える。
4Hメモリ21には、3H分まで記憶動作を行い、4H目で1画素ブロック分のデータが揃うと、そのデータをホスト側に転送することが可能となる。
フレームメモリ8から読み出された符号化データは、一時的にFM出力部71に記憶される。BTC復号化回路9は、モード検出部72と、2レベルBTC処理部(DBTC-val2)73と、3レベルBTC処理部(DBTC-val3)74と、セレクタ75とを有する。モード検出部72は、符号化データの先頭ビットにより、2レベルBTCアルゴリズムと3レベルBTCアルゴリズムのどちらで符号化されたかを判別する。
セレクタ75は、モード検出部72の検出結果に基づいて、2レベルBTC処理部73で復号化された復号化データと、3レベルBTC処理部74で復号化された復号化データとのいずれかを選択する。セレクタ75で選択された復号化データは、復号化出力部76を経て4Hメモリ21に記憶される。
なお、ここでは一例として、画素ブロック分の符号化データを同時に読み出したが、多くの電流が同時に流れることは望ましくないとの観点から、一度に読み出さずに、順々にビット毎に読み出してもよい。このときは、読み出しを行うたびにアドレスを生成する必要がある。
次に、画像を回転する場合の復号化処理の動作を説明する。図42は画像を回転する場合の復号化処理を説明する図である。図42の右側には、フレームメモリ8から読み出された符号化データに含まれるビットマップデータB3の一例を図示している。BTC復号化回路9は、このビットマップデータを順序を変えずに出力する。順序を変えない理由は、すでにBTC符号化回路7にて回転処理を行った上で符号化データを生成しているためである。これにより、復号化出力部76に復号化データ76が記憶される。この復号化データは、データの並び順を変えることなく4Hメモリ21に記憶される。以上により、表示させたい90度回転した画面が表示できる。ここで、フレームメモリ8に記憶されている符号化データ中のビットマップデータはすでに回転されているため、復号化処理の中で回転処理を行う必要はない。
図43は90度回転処理を行う場合のフレームメモリ8のアドレス生成を説明する図である。上述したように、符号化データ中のビットマップデータはすでに回転された後のデータである。したがって、回転情報と走査情報を独立に扱える。
画像の回転にかかわらず、LCD駆動するラインへ出力する順番は走査情報として決めてよい。上→下または下→上の2通りが可能である。フレームメモリ8へ書き込みの場合、fyがNN−N1→NN−N2とマイナス方向(下→上)に順にアクセスしていったが、ここではfyとしてNN−N2→NN−N1という選択も走査情報により強制的に設定することも可能である。同じくfxに関しても右→左、左→右のアクセス順序を決められる。
図44はスタートカラム情報SCとエンドカラム情報ECが整数の4倍でない場合の処理動作を説明する図である。ここでは、スタートページ情報SP=エンドページ情報EP=4×(整数)と簡単化して説明する。
また、SCとECが異なる場合には、必要な回数だけ繰り返せばよいので、強い条件であるが、SC=EC=4×(整数)+(余り)と仮定する。(余り)は、4を法としたときの余りであり、(余り)=1、2、3である。ここでは、例えば(余り)=1とする。
図44では、(余り)に対応して4Hメモリ21中から、1Hライン分のメモリが選択される。選択されたデータは、例えば従来のLCDドライバのシフトレジスタ77に保存され、液晶パネル1を実際に駆動するために駆動出力される。もちろん、走査設定情報により順序を変える。
図45はBTC復号化回路9の詳細な内部構成を示すブロック図である。以下では輝度データの復号化を行う例を説明するが、色差データCr,Cbについても同様の手順で復号化を行うことができる。
例えば、輝度データYとして、モードフラグビット(以下モード信号と略する)=0の場合をまず説明する。下代表値a2=「01100011」(値99)、上代表値b2=「10010011」(値147)とし、ビットマップm2=「1111001100110000」とする。(図5を参照。)
BTC復号化回路9は、モード検出回路81と、データ切り分け回路82と、第1保持回路83と、第2保持回路84と、第3保持回路85と、第4保持回路86と、ビット長調整回路87と、データ参照回路88と、セレクタ89とを有する。
データ切り分け回路82は、輝度データの符号化データを、下代表値a2を表すビット列と、上代表値b2を表すビット列と、ビットマップデータm2を表すビット列とに切り分ける。切り分けた各ビット列は第1保持回路83、第2保持回路84および第4保持回路86にそれぞれ保持される。なお、モードフラグが「0」の場合には第3保持回路85は使用されない。
セレクタ89は、ビットマップデータm2の各ビットが「0」か「1」かによって、下代表値a2と上代表値b2のいずれかを選択する。セレクタ89は、ビットマップデータの各ビットに対応して設けられている。
ビット長調整回路87は、モードに応じてビット長を設定する。データ参照回路88は、モードによりビットマップデータのデータ長が異なることから、適切な位置からデータを参照するために設けられる。
セレクタ89は、ビット長調整回路87の出力と、データ参照回路88の出力と、モード検出回路81の出力とに基づいて、下代表値a2と上代表値b2のいずれかを選択する。
図46はモードフラグが「1」の場合の輝度データの復号化処理を説明する図である。データ切り分け回路82は、下代表値a3、中間代表値b3、上代表値c3を切り出して、それぞれ第1〜第4保持回路86に保持する。
例えば図17のように、a3=「000000」(値0)、b3=「010000」(値128)、c3=「111111」(値252)、m3=「1222012200120001」とする。ビット長調整回路87は、例えば、a3のデータは6ビットであるので、LSBの2ビットを0として補って、「00000000」=値0を再構成する。同様に、b3も「010000000」=値128、c3も「11111100」=値252を再構成する。
なお、ここではLSBとして00を与えたが、これに限定する必要はなく、適切に四捨五入できるように工夫できる。ビットマップは122…のように1つの値が3進で表現されているので、2ビット単位で0=00、1=01、2=10をもとに切り出す必要がある。そこで、ビット長調整回路87により適切なビットマップ情報を取り出す。
例えば、先頭の「1」については、先頭2ビット「01」を第4保持回路86から取り出す。次の「2」に関しては、先頭から3ビット〜4ビット目「10」を第4保持回路86から取り出す。ビット長調整回路87は、このようなビットマップのデコードを行う。
セレクタ89には、例えば、a3=「00000000」、b3=「01000000」、c3=「11111100」が選択するべきデータとして入力される。セレクタ89の選択信号が「01」(中間を選択)であるとすると、「01000000」が選択出力される。モード信号1は3つの中から選択するという動作を規定している。このように、二つのBTC復号器を統合した一つのBTC復号器を、「マージした復号器」と呼ぶ。図47はマージした復号器80を有するBTC復号化回路9の内部構成を示す図である。図47は、図41と異なり、一つの復号器のみを有する。
図48は図45のビット長調整回路87の内部構成を示すブロック図である。図示のように、ビット長調整回路87は、モード検出回路81の出力データに基づいて「0」を選択するか否かを切り替える2つのスイッチ91を有する。ビット長調整回路87の出力は常に8ビットであり、そのうちの2ビット(LSB側から7ビット目と8ビット目)を強制的に「0」にするか否かをモード検出回路81の出力データに基づいて切り替える。
図49は図45のデータ参照回路88の入力部分の接続関係を示す図である。32本のデータ線はビットマップデータの出力端子にそれぞれ接続されている。データ参照回路88の入力Aには、モード0の場合のビットマップデータ1ビットが入力される。データ参照回路88の入力BとCには、モード1の場合のビットマップデータ2ビットが入力される。
図50はデータ参照回路88の内部構成を示すブロック図である。図示のように、データ参照回路88は、3入力A,B,Cから2出力SEL1,SEL2を選択するスイッチ92と、このスイッチを制御するスイッチ制御回路93とを有する。
図51はスイッチ制御回路93の切替動作を示す図である。図示のように、スイッチ制御回路93は、モードフラグが「0」のときにSEL1に入力Aが伝達され、モードフラグが「1」のときにSEL1,2にそれぞれ入力B,Cが伝達されるようにスイッチ92を切り替える。
図49に示す複数のデータ参照回路88の各入力Aには、ビットマップデータの0ビット目、1ビット目、…が順に入力される。これは、モードフラグが「0」の場合には、16ビットのビットマップデータが先頭から順番に32ビットのラッチに格納されることに合わせている。ただし、これは一例であり、第4保持回路86へのビットマップデータの格納方法は種々考えられる。例えば、一つおきに格納してもよい。(先頭から0ビット目、2ビット目、4ビット目のように偶数番目にデータを入れ、奇数番目にはデータを入れず、固定値としておく。このように32ビットを用いて16ビットを格納するする方法は種々ある。)
一方、モードフラグが「1」の場合には、32ビットのビットマップデータを順に第4保持回路86に格納する。これに合わせて、図49では、2ビットを単位としてBとCに入力線がつながっている。バリエーションとして例を追加すると、仮にモ−ドフラグ「0」において一つおきに格納した場合、AとCを事実上一つの信号として取り扱うことができ、図50と図51の構成を変更する必要がある。
図52は図45のセレクタ89の内部構成を示すブロック図である。下代表値、中間代表値および上代表値のそれぞれを選択する3つのトランジスタからなるスイッチS1〜S3と、これらスイッチS1〜S3のオン・オフを制御する切替制御回路94とを有する。
図53は切替制御回路の切替動作を説明する図である。図示のように、モードフラグM=0の場合で、SEL2=0、SEL1=0の場合には、スイッチS1だけをONする。図53では、ONのスイッチを「1」で表し、OFFのスイッチを「0」で表している。他のスイッチS2、S3はOFFのままである。これは、2レベルBTCにおいて、下代表値を選択することに対応している。
第二行では、M=0、SEL2=不定、SEL1=1の場合であり、スイッチS2のみがONする。これは、2レベルBTCにおいて、上代表値を選択することに対応している。
第三行では、M=1、SEL2=0、SEL1=0の場合であり、スイッチS1のみがONする。これは3レベルBTCにおいて、下代表値を選択することに対応している。
同様に第四行は、3ベレルBTCにおいて、中間代表値を選択することに対応している。第五行は、3レベルBTCにおいて、上代表値を選択することに対応している。最後の第六行は、3レベルBTCの選択において対応するものがない状態であり、エラーである。
AとCが同じ場合には、データ参照回路88は図54のような回路構成になり、データ参照回路88内の切替は図55のようになる。この場合、CはいつもAと同じなので、Mによる変化はない。Bもモードが0の場合にはドントケアであるから、これをSEL2として扱うことで、SEL1と同様になる。したがってこの場合、スイッチ制御回路93は不要となる。
以上の回路により、図45と図46の場合に応じて、データを取り扱うことができる。以上では、輝度データYについてのみ説明したが、色差データCrやCbについても同様の処理を行うことができる。
次に、ハードウェアのサイズに関して検討する。輝度データYに関しては、2レベルBTCで、a2、b2は8ビット、ビットマップデータm2は16ビットである。3レベルBTCでは、a3、b3、c3は6ビット、ビットマップデータm3は32ビットである。したがって、第1保持回路83と第2保持回路84は8ビット、第3保持回路85は6ビット、第4保持回路86は32ビット用意する必要がある。
次に、上述した図1のBTC符号化回路7を具体化したハードウェアの構成について説明する。2レベルBTCアルゴリズムと3レベルBTCアルゴリズムで使用する閾値を計算するためには、画素ブロック内の最大値と最小値を計算しなければならない。
図22のステップS22では、画素ブロック内の最大値と最小値を検出しているが、この処理はハードウェアで行うことができる。図56は画素ブロック内の最大値を検出する最大値検出回路101の概略構成を示すブロック図、図57は画素ブロック内の最小値を検出する最小値検出回路102の概略構成を示すブロック図である。図56と図57は同様の処理動作にて最大値または最小値を検出するため、以下では代表して図56の構成および処理動作を説明する。
図56の最大値検出回路101は、4×4画素の画素ブロック内の16個のデータ(輝度データまたは色差データCrまたは色差データCb)を2つずつ比較して、どちらか大きい方を選択する8個の第1最大値検出回路103と、これら8個の第1最大値検出回路103の出力を2つずつ比較して、どちらか大きい方を選択する4個の第2最大値検出回路104と、これら4個の第2最大値検出回路104の出力を2つずつ比較して、どちらか大きい方を選択する2個の第3最大値検出回路105と、これら2個の第3最大値検出回路105の出力のうち大きい方を選択する第4最大値検出回路106とを有する。
図58は図56と図57で検出した最大値MAXと最小値MINに基づいて二つの閾値Th_highとTh_lowを計算する手法を説明する図である。図示のように、図56と図57で検出した最大値MAXと最小値MINは、大きい閾値Th_highを計算するTh_high計算部107と、小さい閾値Th_lowを計算するTh_low計算部108とに入力されて、Th_highとTh_lowが計算される。
図59は画素ブロック内の画素値の最大値MAXと最小値MINを除いて画素の平均値を検出する図22のステップS23の処理を行う平均値検出回路110の概略構成を示すブロック図である。図示のように、平均値検出回路110は、4×4画素ブロックのデータを入力する画素ブロックデータ入力部111と、各画素のデータが最大値MAXまたは最小値MINに一致するか否かを検出する比較回路112と、平均値計算回路113とを有する。
平均値計算回路113は、最大値MAXと最小値MINを除きつつ、平均値を計算するために、除いた画素数および除いた累積数を階層的に計算することで、16個すべてについての値を求める。この平均値計算回路113は、4階層あり、各階層を単位として計算する。その詳細については後述する。
図60は図59の比較回路112に設けられる複数の比較部114の内部構成を示すブロック図である。図60の比較部114は、第1比較部115と、第2比較部116と、出力回路117とを有する。第1比較部115は、画素ブロック内の画素データDinを最小値MINと比較して、比較結果を示す信号を出力する。第2比較部116は、画素ブロック内いの画素データDinを最大値MAXと比較して、一致する場合には「1」を出力し、不一致の場合には「0」を出力する。
出力回路117は、画素データDinが最小値MINと一致する場合には、C_MIN=1、C_MAX=0、C_MID=0とする。また、画素データDinが最大値MAXと一致する場合には、C_MIN=0、C_MAX=1、C_MID=0とする。また、画素データDinが最小値MINと最大値MAXのどちらにも等しくない場合には、C_MIN=0、C_MAX=0、C_MID=1とする。この他、出力回路117は、画素データDinをそのままDoutとして出力する。
C_MAX、C_MID、C_MINは、最大値MAX、最大値MAXと最小値MINの中間値、最小値MINの場合のカウント数を計算するために、またDoutは最大値MAXと最小値MINを除く累積値を計算するために、それぞれ図59の平均値計算回路113に入力される。
上述したように、最大値MAXと最小値MINに余裕をもたせ、MAX−Δ3、MIN+Δ4のように、Δ3、Δ4だけ範囲を少し拡大してもよい。この場合、第1比較部115と第2比較部116で比較処理を行う際に、GE(greater than or equal to:以上)やLE(less than or equal to: 以下)の条件を付加すればよい。
図61は図60の出力回路117の内部構成を示すブロック図である。図61の出力回路117は、C_MAXのカウント値を計算する加算器121と、C_MIDのカウント値を計算する加算器122と、C_MINのカウント値を計算する加算器123と、最大値MAXと最小値MIN以外の画素データDoutの累積値を計算する加算器124とを有する。
C_MAX1、C_MID1、C_MIN1およびS1は図60の第1比較部115から出力され、出力回路117に入力される。C_MAX2、C_MID2、C_MIN2およびS1は第2比較部116から出力され、出力回路117に入力される。
比較回路112の出力は平均値計算回路113に入力されて、画素ブロック内の画素データが順次累積加算され、1画素ブロック分のC_MAX、C_MID、C_MINと累積値Sが計算される。
図62は図22のステップS23における閾値Th_high、Th_lowを検出する閾値検出回路130の概略構成を示すブロック図である。図62の閾値検出回路130には、図59の平均値検出回路110から出力されたC_MIDとSがそれぞれCount_MIDとSumとして入力される。図62の閾値検出回路130は、平均値計算回路131と、Th_low計算回路132と、Th_high計算回路133とを有する。平均値計算回路131は、Count_MIDとSumから、平均値AVE=Sum/Count_MIDを計算する。
図62の処理は、画素ブロック内の16個の画素データを対象としているため、Count_MIDは最大でも15であり、4ビットで表現できるので、この除算は4ビットの除算である。したがって、ハードウェア的には、一般に想定する除算器と比較して小さくて済む。
Th_low計算回路132は、図20で示したΔ1=AVE−MINを計算した後、Th_low = MIN+Δ1/2を計算する。また、Th_high計算回路133は、図20で示したΔ2=MAX−AVEを計算した後、Th_high=MAX−Δ2/2を計算する。
図63は、画素ブロック内の各画素値を閾値Th_low、Th_highにより3つのグループに分類し、各グループごとにカウント値と累積値を求める図23のステップS33の処理を行う回路の概略構成を示すブロック図である。図63の回路は、画素ブロック内の各画素値を入力する入力回路141と、画素ブロック内の各画素値を閾値Th_high,Th_lowと比較する比較回路142と、各グループに属する画素のカウント値と画素値の累積値を計算する累積値計算回路143とを有する。
図64は比較回路142内の複数の比較部144の内部構成を示すブロック図である。図64の比較部144は、第1比較部145と、第2比較部146と、出力回路147とを有する。第1比較部145は、画素ブロック内の画素データDinが閾値Th_lowより小さいか否かをチェックし、もし小さい場合には「1」を出力し、小さくない場合には「0」を出力する。
第2比較部146は、画素ブロック内の画素データDinが閾値Th_highより大きいか否かをチェックし、もし大きい場合には「1」を出力し、大きくない場合には「0」を出力する。
出力回路147は、第1比較部145と第2比較部146の比較結果に基づいて、カウント値C_HI、C_MID、C_LOWを初期化するとともに、データ累積値S_HI、S_MID、S_LOWも初期化する。データDINがTh_lowより低い場合、C_HIとC_MIDは0、C_LOWは1、S_HIとS_MIDは0、S_LOWはDINの値に設定する。データDINがTh_highより高い場合、C_MIDとC_LOWは0、C_HIは1、S_MID、S_LOWは0、S_HIはDINを値に設定する。DINがTh_lowとTh_highの間にある場合、C_HI、C_LOWは0、C_MIDは1、S_HI、S_LOWは0、S_MIDはDINを値に設定する。このように、カウント値を初期化し、図63の累積値計算回路143にて順次累積加算していく。
図65は図64の出力回路147の内部構成を示すブロック図である。図65の出力回路147は、C_HI、C_MID、C_LOW、S_HI、S_MID、S_LOWのそれぞれ計算する複数の加算器148を有する。出力回路147の出力は累積値計算回路143に入力されて、C_HI、C_MID、C_LOW、S_HI、S_MID、S_LOWのそれぞれが累積加算される。
図66は図22のステップS23における代表値V_high、V_mid、V_lowを計算する代表値計算回路150の概略構成を示すブロック図である。図66の代表値計算回路150は、図25の対応関係に従って、C_HI、C_MID、C_LOWの値に応じて代表値V_high、V_mid、V_lowを計算する。
図67は画素ブロックのビットマップデータを生成するビットマップデータ生成器151の内部構成を示すブロック図である。このビットマップデータ生成器151は、BTC符号化回路7内に設けられる。
図67のビットマップデータ生成器151は、画素ブロック内の各画素データを入力する入力回路152と、各画素データが閾値Th_highとTh_lowに一致するか否かを検出する比較回路153と、比較回路153の比較結果に基づいてビットマップデータを生成するビットマップ生成器154と、ビットマップ出力部155とを有する。
ビットマップ生成器154は、画素データがTh_lowより小さい場合にはビットマップデータ「00」を生成し、画素データがTh_highより大きい場合にはビットマップデータ「10」を生成し、画素データがTh_lowとTh_highの間の場合にはビットマップデータ「01」を生成する。
上述した図56と図57の最大値MAXと最小値MINを検出する処理と、図59の最大値MAXと最小値MINを除いた平均値AVEを検出する処理と、図63の代表値を検出する処理は、階層的に計算を行っており、画素ブロック内の画素データを入力として各処理を行っている。
このため、これらの処理は、それぞれ別個のハードウェアで実現してもよいが、一つのハードウェアで実現することも可能である。そこで、以下では、ハードウェアの最適化を図って、4種類の処理を一つのハードウェアで実現する構成を検討する。これにより、重複する機能を削減することができ、ハードウェア量を削減できる。
ここで、どの処理を行っているかを特定するためにPhase信号を導入する。なお、4×4ブロックのデータを処理することを考えると、最低でも4CLKで処理できることが望まれる。ここでは、4ステップの処理を考えており、1ステップを1CLKとすれば、4CLK内に収まる。
そこで、Phase信号もこのCLKで数えることにする。すなわち、Phaseの値として0、1、2、3を繰り返すこととする。例えば、Phase=0の場合、活動量の計算、Phase=1の場合、MAX、MIN計算、Phase=2の場合、AVE(閾値)計算、Phase=3の場合、代表値(ビットマップ)計算を行うものとする。
以下、輝度データYの処理を仮定して説明するが、色差データについても同様の処理手順で処理を行うことができる。
なお、一般に、このような繰り返し計算でなく、シリアルに実現ハードウェアを接続するのであれば、4CLK内に計算を終了せずとも、パイプライミングされるので、問題はない。ここでは同じハードウェア資源を繰り返し計算で実行するために4CLK内でという制限が発生している。
図68は共用回路160の概略構成を示すブロック図である。図68の共用回路160は、画素ブロック内の各画素データを入力する入力回路161と、入力回路161内の各画素データが比較対象データと一致するか否かをチェックする比較回路162と、比較回路162の比較結果に応じてカウント数とデータの累積値を計算する累積値計算回路163と、処理内容を特定するPhase信号を入力するPhase入力回路164とを有する。
図69は比較回路162内の複数の比較部165の内部構成を示すブロック図である。図69の比較回路162は、画素データをDIN2と比較する第1比較部166と、画素データをDIN3と比較する第2比較部167と、第1および第2比較部166,167の比較結果を示すC_1、C_2、C_3とデータS_1、S_2、S_3を出力する出力回路168とを有する。
まずPhase=1の場合を考える。この場合、初期化は必要ないため、画素ブロック内の各画素データは比較回路162を通過する。Phase=2の場合、図60に示すように、比較回路162は画素ブロック内の各画素データを最小値MINおよび最大値MAXと比較する。
この場合、図60のDIN1はDIN、DIN2はMIN、DIN3はMAXに対応する。第1比較部166はDIN1とDIN2との大小を比較し、第2比較部167はDIN1とDIN3との大小を比較する。これら第1比較部166と第2比較部167は、図60の第1比較部166と第2比較部167に対応する。
出力回路168は、第1比較部166と第2比較部167の比較結果に基づいて、最大、中間(最大、最小以外)、最小にわけて、カウント数Cと累積値Sを計算する。これは図60の出力回路168に対応する。
出力回路168から出力されるDoutは、最大値MAXと最小値MINを除いた累積値であるため、中間のS_2に対応させるのが自然である。C_1、C_2、C_3はC_MAX、C_MID、C_MINに対応する。
一方、Phase=3の場合は、比較回路162を用いて図64と同様の処理が行われる。この場合、DIN1はDIN、DIN2はTh_low、DIN3はTh_highに対応する。図69の第1比較部166はDIN1とDIN2との比較を行い、第2比較部167はDIN1とDIN3との比較を行う。出力回路168は、第1の比較部と第2の比較部の比較結果を受けて、最大、中間(最大、最小以外)、最小にわけてカウントCと累積値Sを計算する。この出力回路168は図64の出力回路168に対応する。図64の出力回路168の出力S_HI、S_MID、S_LOWはそれぞれ図69のS_1、S_2、S_3に対応する。図69のC_1、C_2、C_3は図64のC_MAX、C_MID、C_MINに対応する。以上のPhaseごとの動作をまとめると図70のようになる。
図71は図69の出力回路168の内部構成を示すブロック図である。図示のように、出力回路168は複数の加算器169〜174を有する。図72は各Phaseにおける出力回路168の入力データを示す図である。図示のように、Phase=1の場合、図56と図57の処理動作を行うため、C_1、S_1を利用して最大値MAXを計算し,C_3、S_3を利用して最小値MINを計算する。最大値MAXの場合はカウントC_1を+1、最小値MINの場合はカウントC_3を+1する。それら以外はカウントアップしない。
Phase=2の場合、図61の処理動作を行う。C_1、C_2、C_3はそれぞれC_MAX、C_MID、C_MINに対応し、それそれの入力を加算する。これを+で示してある。また図61のSをS_2に対応させる。したがってS_2の欄にのみ加算を示す+がある。
Phase=3の場合、図65の動作が期待される。C_1、C_2、C_3はC_MAX、C_MID、C_MINに対応する。これで加算を表す+が表中にある。出力S_HI、S_MID、S_LOWはそれぞれS_1、S_2、S_3に対応する。これも加算であり+で表中に示す。
図72の処理動作を実現するのは図71の加算器169である。なお、図72の表中で、「*」はドントケアを表すが、実際には動作を停止して消費電力を増やさないのが望ましい。図72ではそのような回路の停止機能(ディセーブル機能)については明示しないで、Phase信号に対応する処理動作のみを示している。
図73は図71の加算器170の内部構成を示すブロック図、図74は図71の加算器173の内部構成を示すブロック図、図75は図71の加算器174の内部構成を示すブロック図、図76は図71の加算器169,171の内部構成を示すブロック図、図77は図71の加算器172の内部構成を示すブロック図である。
図73の加算器170は、セレクタ181と、加算器182と、最大値検出回路183とを有する。図74の加算器173は、セレクタ184と、加算器185と、最小値検出回路186とを有する。図75の加算器174は、加算器187のみを有する。図76の加算器169,171は、加算器187と、スイッチ188と、スイッチ188のオンオフを制御する制御回路189とを有する。図77の加算器172は、加算器190のみを有する。
図73と図75において、加算器182と最大値検出回路183を、加算器185および最小値検出回路186とハードウェアの共有化を図ってもよい。最大値検出回路183は最大値を検出するために比較処理を行う。最小値検出回路186は最小値を検出するために比較処理を行う。これらの比較処理を行うために減算器が必要となるが、加算器の一方の入力を補数にすれば、減算器は加算器で代用できる。したがって、加算器と減算器を共用することができる。なお、一方の入力の補数をとる回路、またMAX/MINの値を判定し取り出す回路は、制御信号Phaseにより制御する。
上記の説明では、主に輝度データYの符号化および復号化について説明したが、色差データCr,Cbについても同様の符号化および復号化が行われる。輝度データYと色差データCr,Cbでは、一般にビット数が異なり、色差データCr,Cbでは階層の大きさが小さい。
本実施形態では、3レベルBTC符号化でのハードウェアの最適化を行ったが、復号化と同様に2レベルBTCと3レベルBTCの間での最適化も実行できる。
図78は2レベルBTCと3レベルBTCの間で最適化を行う場合の条件を示す図である。モードフラグをM列に、PhaseをP列に示す。2レベルBTC時がモードフラグ0、3レベルBTC時がモードフラグ1である。モードフラグが0の場合、MAX、MINを求めて平均値を計算する必要がないので、Phase=1は休止のままでよい。Phase=2になって、平均値を求める。このためにS_2を利用する。個数は16個であり、カウントする必要はないためC_2は使用しなくてもよい。
Phase=3で平均値を閾値として利用して、下と上のグループに分け、各グループでの平均値を計算する。このため、C_1とC_3にカウントを、S_1とS_3に累積値を計算していく。
以上を制御するために、図73〜図77までの回路にPhase制御信号の他に、Mode制御信号を追加することで、図78の動作を実現する。
図79は以上に説明した処理動作を行うBTC符号化回路7の内部構成を示すブロック図である。図79のBTC符号処理部24は、活動量検出器191と、モード検出器192と、フェイズ検出器193と、初期化部194と、階層計算部195と、後計算部196とを有する。
なお、上述した実施形態では、2レベルBTCの詳細は示していないが、一般に知られているため、説明を省略した。
以上に説明したように、本実施形態によれば、画素ブロック内の活動量に応じて、2レベルBTCアルゴリズムと3レベルアルゴリズムのいずれかを選択して画像データの符号化を行うため、画質を劣化させることなく、効率的に画像データを圧縮できる。特に、元画像がPCで生成されたPC画像の場合でも、画質の劣化が起きない符号化データを生成できる。
また、2レベルBTCアルゴリズムと3レベルBTCアルゴリズムで用いる代表値を決定する際、画素ブロック内の画素値の最大値と最小値を除いた残りの画素に基づいて代表値を決定するため、元画像にうまく適合する代表値を選定でき、画質の劣化を防止できる。
また、2レベルBTCアルゴリズムで符号化する回路と3レベルBTCアルゴリズムで符号化する回路を統合できるため、ハードウェア規模を縮小できる。
また、元画像を回転させた画像を生成する際、符号化する際に回転処理を行うため、符号化データを復号する際には回転処理が不要となり、復号化処理を簡略化できる。メモリの縦横比に適合した回転方向を選択して回転済みデータを保存することで、メモリ領域を余分に用意する無駄をなくすことができる。
また、本実施形態では、元画像の任意の領域だけを選択して符号化できるため、静止画像の任意の領域だけを表示させることができ、無駄なデータ転送が不要となり、消費電力の削減が図れる。また、圧縮効率にも優れるため、高速で画像を伝送する必要がなくなり、この点でも消費電力の削減が図れる。
1 液晶パネル(LCD)
2 タイミングコントローラ
3 ソースドライバ
4 RGBデータ送信回路
5 RGBデータ受信回路
6 YCC変換回路
7 BTC符号化回路
8 フレームメモリ
9 BTC復号化回路
10 RGB変換回路
11 LCD駆動回路
21 4Hメモリ
22 アドレス生成回路
23 BTC処理入力部
24 BTC符号処理部
25 BTC処理出力部
26 FMローアドレス生成器
27 FMカラムアドレス生成器
41 活動量検出器
42 2レベルBTC処理部
43 3レベルBTC処理部
44 セレクタ
2 タイミングコントローラ
3 ソースドライバ
4 RGBデータ送信回路
5 RGBデータ受信回路
6 YCC変換回路
7 BTC符号化回路
8 フレームメモリ
9 BTC復号化回路
10 RGB変換回路
11 LCD駆動回路
21 4Hメモリ
22 アドレス生成回路
23 BTC処理入力部
24 BTC符号処理部
25 BTC処理出力部
26 FMローアドレス生成器
27 FMカラムアドレス生成器
41 活動量検出器
42 2レベルBTC処理部
43 3レベルBTC処理部
44 セレクタ
Claims (5)
- 複数の色情報からなる画像データを輝度データと色差データとに変換する色情報変換手段と、
隣接する複数画素からなる画素ブロックのそれぞれごとに、前記画素ブロック内の複数画素の輝度データの差分と色差データの差分とのそれぞれが所定の閾値を超えたか否かを判定する活動量検出手段と、
前記活動量検出手段により前記所定の閾値を超えたと判定された前記画素ブロック内の複数画素の輝度データまたは色差データに対応するm個(mは3以上の整数)の代表値を生成して第1の符号化処理を行い、前記活動量検出手段により前記所定の閾値を超えなかったと判定された前記画素ブロック内の複数画素の輝度データまたは色差データに対応するn個(mは2以上の整数で、n<m)の代表値を生成して第2の符号化処理を行う符号化手段と、を備えることを特徴とする画像処理回路。 - 前記符号化手段は、前記第1の符号化処理を行う際、前記画素ブロック内の複数画素の輝度データの最大値および最小値、または色差データの最大値および最小値を除いた残りの画素を対象として前記m個の代表値を生成することを特徴とする請求項1に記載の画像処理回路。
- 前記符号化手段は、前記第2の符号化処理を行う際、前記画素ブロックを複数の副画素ブロックに分割し、各副画素ブロックごとに色差データの平均値を計算して、計算された平均値を対応する副画素ブロックの共通の色差データとして扱うことを特徴とする請求項1または2に記載の画像処理回路。
- 前記符号化手段で符号化された符号化データを記憶する記憶手段と、
前記画素ブロック内の複数画素の符号化データを単位として前記記憶手段へのデータ書き込みを制御する記憶制御手段と、
前記記憶手段に記憶された符号化データを復号化して輝度データと色差データとを生成する復号化手段と、
前記復号化手段にて生成された輝度データと色差データとに基づいて、複数の色情報からなる画像データを生成する色情報復元手段と、を備えることを特徴とする画像処理回路。 - 前記記憶制御手段は、前記色情報変換手段にて変換処理を行う前の原画像の向きと、前記色情報復元手段で生成された画像データに基づいて生成される表示画像の向きとが異なる場合には、表示画像の向きに合わせて前記記憶手段における符号化データの記憶場所を制御することを特徴とする請求項3に記載の画像処理回路。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006139309A JP2007312126A (ja) | 2006-05-18 | 2006-05-18 | 画像処理回路 |
US11/749,827 US7903887B2 (en) | 2006-05-18 | 2007-05-17 | Image processing circuit and liquid crystal display apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006139309A JP2007312126A (ja) | 2006-05-18 | 2006-05-18 | 画像処理回路 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007312126A true JP2007312126A (ja) | 2007-11-29 |
Family
ID=38712035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006139309A Pending JP2007312126A (ja) | 2006-05-18 | 2006-05-18 | 画像処理回路 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7903887B2 (ja) |
JP (1) | JP2007312126A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009153138A (ja) * | 2007-12-19 | 2009-07-09 | Sony Corp | 視覚的に無損失のビデオデータ圧縮 |
US7912304B2 (en) | 2008-06-30 | 2011-03-22 | Renesas Electronics Corporation | Image processing circuit, and display panel driver and display device mounting the circuit |
JP2011124866A (ja) * | 2009-12-11 | 2011-06-23 | Toshiba Corp | 符号化装置および表示制御装置 |
JP2011171818A (ja) * | 2010-02-16 | 2011-09-01 | Konica Minolta Business Technologies Inc | 画像処理回路及び画像形成装置 |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5159226B2 (ja) * | 2007-09-25 | 2013-03-06 | 株式会社東芝 | 画像データ処理システム |
JP2011060270A (ja) * | 2009-08-10 | 2011-03-24 | Canon Inc | 印刷システムおよび方法 |
JP5501041B2 (ja) * | 2010-03-15 | 2014-05-21 | キヤノン株式会社 | 画像処理装置、画像処理方法、及びプログラム |
GB2487717B (en) * | 2011-01-25 | 2017-06-21 | Advanced Risc Mach Ltd | Image encoding method |
JP5255089B2 (ja) * | 2011-04-14 | 2013-08-07 | 川崎マイクロエレクトロニクス株式会社 | 画像処理装置 |
JP2013098735A (ja) * | 2011-10-31 | 2013-05-20 | Canon Inc | 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム |
JP5815390B2 (ja) | 2011-12-08 | 2015-11-17 | ルネサスエレクトロニクス株式会社 | 半導体装置及び画像処理方法 |
JP2013183240A (ja) * | 2012-02-29 | 2013-09-12 | Brother Ind Ltd | 画像処理装置および画像処理プログラム |
GB2507127B (en) * | 2012-10-22 | 2014-10-08 | Gurulogic Microsystems Oy | Encoder, decoder and method |
US9245353B2 (en) * | 2012-10-22 | 2016-01-26 | Gurulogic Microsystems Oy | Encoder, decoder and method |
GB2509056B (en) * | 2012-12-12 | 2019-06-19 | Snell Advanced Media Ltd | Method and apparatus for modifying a video stream |
US8989486B2 (en) * | 2013-03-04 | 2015-03-24 | Zynga Inc. | Generation of intermediate images for texture compression |
CN103218981B (zh) * | 2013-04-01 | 2015-09-02 | 京东方科技集团股份有限公司 | 数据传输方法、装置、控制器、驱动装置及显示装置 |
US10097733B2 (en) * | 2013-10-29 | 2018-10-09 | Kyocera Corporation | Image correction parameter output apparatus, camera system and correction parameter output method |
JP6285711B2 (ja) * | 2013-12-26 | 2018-02-28 | 株式会社メガチップス | 画像処理装置 |
KR101427552B1 (ko) * | 2014-03-31 | 2014-08-07 | (주) 넥스트칩 | 영상 신호 전송 방법 및 장치 |
US9515679B1 (en) * | 2015-05-14 | 2016-12-06 | International Business Machines Corporation | Adaptive data compression |
US10013944B2 (en) * | 2015-11-27 | 2018-07-03 | Panasonic Liquid Crystal Display Co., Ltd. | Display device and source driver for bit conversion of image data |
WO2018235372A1 (ja) * | 2017-06-21 | 2018-12-27 | シャープ株式会社 | 画像表示装置 |
KR102415312B1 (ko) * | 2017-10-30 | 2022-07-01 | 삼성디스플레이 주식회사 | 색 변환 장치, 이를 포함하는 표시 장치, 및 색 변환 방법 |
EP3957070A1 (en) * | 2020-06-16 | 2022-02-23 | Google LLC | Dynamic method for symbol encoding |
CN114363621A (zh) * | 2022-01-13 | 2022-04-15 | 深圳市爱协生科技有限公司 | 图像压缩方法、装置、计算机设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05110869A (ja) * | 1991-10-11 | 1993-04-30 | Fuji Xerox Co Ltd | 画像蓄積方法及びその装置 |
JPH0998294A (ja) * | 1995-09-29 | 1997-04-08 | Fuji Xerox Co Ltd | 画像情報符号化装置および復号化装置 |
JP2006094225A (ja) * | 2004-09-24 | 2006-04-06 | Fujitsu Ltd | 画像処理装置、画像処理方法、およびそのプログラム |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2621747B2 (ja) | 1992-10-06 | 1997-06-18 | 富士ゼロックス株式会社 | 画像処理装置 |
DE69428979T2 (de) * | 1993-08-30 | 2002-08-08 | Sony Corp., Tokio/Tokyo | Einrichtung und verfahren zur kodierung von bilddaten |
US5585944A (en) * | 1994-05-10 | 1996-12-17 | Kaleida Labs, Inc. | Method for compressing and decompressing images by subdividing pixel color distributions |
JPH08116447A (ja) | 1994-10-18 | 1996-05-07 | Fuji Xerox Co Ltd | 画像信号の符号化装置 |
JP3748088B2 (ja) * | 1996-07-17 | 2006-02-22 | ソニー株式会社 | 画像処理装置および方法、並びに学習装置および方法 |
JP3843581B2 (ja) | 1998-03-05 | 2006-11-08 | 富士ゼロックス株式会社 | 画像符号化装置、画像復号化装置および画像処理装置、並びに画像符号化方法、画像復号化方法および画像処理方法 |
WO2004075556A1 (ja) * | 2003-02-19 | 2004-09-02 | Ishikawajima-Harima Heavy Industries Co., Ltd. | 画像圧縮装置、画像圧縮方法、画像圧縮プログラム、及び圧縮符号化方法、圧縮符号化装置、圧縮符号化プログラム、並びに復合化方法、復合化装置、復合化プログラム |
US7751633B1 (en) * | 2006-08-31 | 2010-07-06 | Hewlett-Packard Development Company, L.P. | Method for compressing an image |
-
2006
- 2006-05-18 JP JP2006139309A patent/JP2007312126A/ja active Pending
-
2007
- 2007-05-17 US US11/749,827 patent/US7903887B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05110869A (ja) * | 1991-10-11 | 1993-04-30 | Fuji Xerox Co Ltd | 画像蓄積方法及びその装置 |
JPH0998294A (ja) * | 1995-09-29 | 1997-04-08 | Fuji Xerox Co Ltd | 画像情報符号化装置および復号化装置 |
JP2006094225A (ja) * | 2004-09-24 | 2006-04-06 | Fujitsu Ltd | 画像処理装置、画像処理方法、およびそのプログラム |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009153138A (ja) * | 2007-12-19 | 2009-07-09 | Sony Corp | 視覚的に無損失のビデオデータ圧縮 |
US8401071B2 (en) | 2007-12-19 | 2013-03-19 | Sony Corporation | Virtually lossless video data compression |
US7912304B2 (en) | 2008-06-30 | 2011-03-22 | Renesas Electronics Corporation | Image processing circuit, and display panel driver and display device mounting the circuit |
US8111933B2 (en) | 2008-06-30 | 2012-02-07 | Renesas Electronics Corporation | Image processing circuit, and display panel driver and display device mounting the circuit |
US8385668B2 (en) | 2008-06-30 | 2013-02-26 | Renesas Electronics Corporation | Image processing circuit, and display panel driver and display device mounting the circuit |
US8923636B2 (en) | 2008-06-30 | 2014-12-30 | Renesas Sp Drivers Inc. | Image processing circuit, and display panel driver and display device mounting the circuit |
JP2011124866A (ja) * | 2009-12-11 | 2011-06-23 | Toshiba Corp | 符号化装置および表示制御装置 |
JP2011171818A (ja) * | 2010-02-16 | 2011-09-01 | Konica Minolta Business Technologies Inc | 画像処理回路及び画像形成装置 |
Also Published As
Publication number | Publication date |
---|---|
US20070269118A1 (en) | 2007-11-22 |
US7903887B2 (en) | 2011-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2007312126A (ja) | 画像処理回路 | |
JP4507265B2 (ja) | 画像処理回路、及びそれを搭載する表示パネルドライバ並びに表示装置 | |
JP4367308B2 (ja) | 表示ドライバ、電気光学装置、電子機器及びガンマ補正方法 | |
JP4100782B2 (ja) | 誤差拡散値の処理方法 | |
JP5173342B2 (ja) | 表示装置 | |
US10089953B2 (en) | Image processing circuit for image compression and decompression and display panel driver incorporating the same | |
JP2003162272A5 (ja) | ||
US20060232451A1 (en) | Image signal processing apparatus, camera system and image signal processing method | |
US20080001975A1 (en) | Image processing apparatus and image processing method | |
JPH0969951A (ja) | 符号化方法及び復号化方法 | |
CN107564461B (zh) | 扫描卡、led显示屏控制系统及图像数据处理方法 | |
CN100485719C (zh) | 图像处理设备和图像处理方法 | |
JPH0535863A (ja) | 画像データ処理装置 | |
CN117095628B (zh) | 一种基于数字脉宽调制显示的逐行逐位扫描方法及系统 | |
JP2000155561A (ja) | 階調変換回路および画像表示装置 | |
US7006695B2 (en) | Image compression/decompression system employing pixel thinning-out and interpolation scheme | |
US7209144B2 (en) | Image-display apparatus, image-display method, and image-display program | |
JP2005055825A (ja) | 画像表示装置、画像表示方法及び画像表示プログラム | |
KR20100087845A (ko) | 데이터 압축과 복원 방법 및 장치와 이를 이용한 액정표시장치 | |
CN112614457B (zh) | 显示控制方法、装置和系统 | |
JP2011124866A (ja) | 符号化装置および表示制御装置 | |
JPH11119740A (ja) | 単純マトリクス型液晶表示装置 | |
US8818118B2 (en) | Image encoding device and image processing device including the same | |
KR100962506B1 (ko) | 데이터 압축과 복원 방법 및 장치와 이를 이용한액정표시장치와 그 구동방법 | |
JP2009027556A (ja) | 画像処理回路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090212 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20101217 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110408 |