(57)【特許請求の範囲】
【請求項１】
ＲＧＢそれぞれのサブピクセルからなるピクセルを縦横に連続して配置した表示画面に、サブピクセル単位の解像度をもつ画像データをそのサブピクセルを用いて描画するようにした画像処理方法において、
上記画像データを輝度と色差に変換し、そのピクセル単位の輝度と色差に対してＲＧＢのサブピクセル単位でそれぞれ誤差拡散処理を行い、得られた輝度と色差をＲＧＢに変換してサブピクセル値を求めて表示すべき各サブピクセル値を決定し、その決定したサブピクセル値によりピクセル表示を行うようにしたことを特徴とする画像処理方法。
【請求項２】
ＲＧＢそれぞれのサブピクセルからなるピクセルを縦横に連続して配置した表示画面に、サブピクセル単位の解像度をもつ画像データをそのサブピクセルを用いて描画するようにした画像処理装置であって、
上記画像データを輝度と色差に変換する手段と、そのピクセル単位の輝度と色差に対してＲＧＢのサブピクセル単位でそれぞれ誤差拡散処理を行う手段と、得られた輝度と色差をＲＧＢに変換してサブピクセル値を求めて表示すべき各サブピクセル値を決定する手段と、その決定したサブピクセル値によりピクセル表示を行う手段とを備えたことを特徴とする画像処理装置。
【請求項３】
請求項２に記載の画像処理装置を備えたことを特徴とする表示デバイス。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＲＧＢサブピクセルを用いてカラー表示を行う表示デバイスに適用される画像処理装置、画像処理プログラム、画像処理方法、並びにこれらを採用した表示デバイスに関するものである。
【０００２】
【従来の技術】
カラー液晶ディスプレイ（ＬＣＤ）やカラー有機ＥＬディスプレイ（ＯＬＥＤ）は、携帯電話やノートパソコンをはじめ、薄型テレビやカーナビゲーションシステム、携帯用ゲーム機、ＰＤＡ、携帯用ＤＶＤプレーヤ等といった各種画像情報機器を提供する上で欠くことができない表示デバイスとなってきている。
【０００３】
このような表示デバイスは、例えば図４に示すように、３つのＲＧＢ発光素子（以下ＲＧＢサブピクセル：Sub pixelという。）からなる表示画素（以下、ピクセル：pixelという。）を所定の順序で一方向、図の例では水平方向（ｘ方向）に並べて１ラインを構成し、このラインをさらにこれと直交する方向、つまり垂直方向（ｙ方向）に複数配設することで二次元方向に広がる表示画面を構成し、この３つのＲＧＢサブピクセルを１つのピクセルとして用いることで様々なカラー表示を可能としている。
【０００４】
ところで、最近では、このような表示デバイスを用いて高精細な文字描画を可能とする、サブピクセルフォントレンダリング（Sub  Pixel  Font  Rendering  Technology）という新しい描画技術が注目されている。
この技術は、例えば、以下の非特許文献１や特許文献１等に示すように、ＲＧＢ各サブピクセルをそれぞれ個別のモノクロ画素として扱うことで擬似的に解像度の向上を図るようにしたものであり、ＲＧＢサブピクセルを１つのピクセルとしてまとめて取り合う従来の描画に対してサブピクセルの並び方向に３倍の高精細描画を可能としたものである（図４の例では水平方向に３倍の高精細描画が可能）。
【０００５】
尚、文字表示に関しては、既にMicrosoftのClearType等でこのような、いわゆるサブピクセル描画が行われている。
【０００６】
【非特許文献１】
ＵＲＬ  ｈｔｔｐ：／／ｇｒｃ．ｃｏｍ
【特許文献１】
特開２００２−３１８５６１号公報
【０００７】
【発明が解決しようとする課題】
ところで、このようなサブピクセル描画で利用されるＲＧＢ各サブピクセルは、それぞれ異なる色で発光するため３つのサブピクセルを個別に取り扱うだけでは、意図しない色にじみが発生してしまう。
そのため、従来ではこれを抑えるためにサブピクセル方向へ数サブピクセルの範囲でローパスフィルタ処理を施すようにしており、これによって色にじみを人間の知覚し難い範囲に抑制することが可能となる。
【０００８】
しかしながら、このようなローパスフィルタ処理を施すような従来方法によれば、意図しない色にじみを抑制することは可能となるが、表示がぼやける方向に働いてしまい、解像度が低下するといった問題があった。
そこで、本発明はこのような課題を有効に解決するために案出されたものであり、その目的は、色にじみを防ぎながら表示のぼやけをなくして、サブピクセル値をできるだけ維持した高解像度表示を実現することができる新規な画像処理装置及び画像処理プログラム並びに画像処理方法、表示デバイスを提供するものである。
【０００９】
【課題を解決するための手段】
〔発明１〕
上記課題を解決するために発明１の画像処理装置は、
ＲＧＢそれぞれのサブピクセルを用いてカラー表示するソース画像の１ライン毎の画像データを取得し、その画像データの画像値と注目画素に対応する誤差値を元にＲＧＢそれぞれのサブピクセル値を計算するサブピクセル値計算部と、このサブピクセル値計算部で得られたサブピクセル値と実際に表示するピクセル値との関係により誤差値を計算する誤差計算部と、この誤差計算部で得られた誤差値を拡散して誤差バッファ中に蓄積された誤差値を更新する誤差拡散部と、上記サブピクセル値計算部で計算されたサブピクセルのＲＧＢ値を一つのＲＧＢピクセル値として計算する表示ピクセル値計算部と、この表示ピクセル値計算部で得られた一つのＲＧＢピクセル値を表示画面に表示する表示部と、を備えたことを特徴とするものである。
【００１０】
これによって、ＲＧＢ各サブピクセル単位で誤差拡散処理を実施することができるため、いわゆるサブピクセル描画を行った際の見かけ上の解像度を高めることができる。
すなわち、本発明は、サブピクセル描画を行った際に発生する色にじみを防ぐために従来から行われていたローパスフィルタ処理に代えて、あるいはローパスフィルタ処理と共に、誤差拡散処理を採用したものである。
【００１１】
この誤差拡散処理とは、プリンタ等で利用されている中間調画像を美しく表示するための疑似中間調処理として代表的なものであり、後述する実施の形態で詳述するように対象画素の誤差をその周囲の画素に拡散（分配）して低周波数成分の見かけ上の階調を向上させて解像度を高める処理である。
この結果、色にじみを防ぐことができることは勿論、従来行われていたローパスフィルタ処理のような、表示がぼやけるといった不都合を招くことがなくなり、サブピクセル値をできるだけ維持した高解像度表示を確実に実現することができる。
【００１２】
〔発明２〕
発明２の表示デバイスは、このような構成をした発明１に記載の画像処理装置を備えたことを特徴とするものである。
これによって、ＬＣＤ等からなる表示画面にカラー画像を表示するに際して色にじみや表示のぼやけがない、サブピクセルを効果的に利用した高解像度な表示を行うことが可能となる。
【００１３】
〔発明３〕
発明３の画像処理プログラムは、
コンピュータを、
ＲＧＢそれぞれのサブピクセルを用いてカラー表示するソース画像の１ライン毎の画像データを取得し、その画像データの画像値と注目画素に対応する誤差値を元にＲＧＢそれぞれのサブピクセル値を計算するサブピクセル値計算手段と、このサブピクセル値計算手段で得られたサブピクセル値と実際に表示するピクセル値との関係により誤差値を計算する誤差計算手段と、この誤差計算部で得られた誤差値を拡散して誤差バッファ中に蓄積された誤差値を更新する誤差拡散手段と、上記サブピクセル値計算手段で計算されたサブピクセルのＲＧＢ値を一つのＲＧＢピクセル値として計算する表示ピクセル値計算手段と、この表示ピクセル値計算手段で得られた一つのＲＧＢピクセル値を表示画面に表示する表示手段と、して機能させることを特徴とするものである。
【００１４】
これによって、発明１と同様な効果を得ることができると共に、これら各手段をソフトウェア上で実現することができるため、専用のハードウェアを製作して各機能を実現する場合に比べて、経済的かつ容易に実現することが可能となる。
〔発明４〕
発明４の画像処理プログラムは、
発明３に記載の画像処理プログラムにおいて、
上記コンピュータは、表示デバイスのコンピュータであることを特徴とするものである。
【００１５】
すなわち、多くの表示デバイスにその本来の機能を発揮するために元々備わっているコンピュータシステムをそのまま利用すれば、別個、新たにコンピュータシステムを用意して実現する場合に比べて、さらに経済的かつ容易に実現することができる。
〔発明５〕
発明５の表示デバイスは、
発明３に記載の画像処理プログラムによって動作するコンピュータを備えたことを特徴とするものである。
【００１６】
これによって、発明１に示すような効果をソフトウェア上で実現することができるため、専用のハードウェアを組み込んで実現する場合に比べてデバイスがコンパクトになると共に、安価に製造・提供することが可能となる。
〔発明６〕
発明６の画像処理方法は、
ＲＧＢそれぞれのサブピクセルからなるピクセルを縦横に連続して配置した表示画面に、サブピクセル単位の解像度をもつ画像データをそのサブピクセルを用いて描画するようにした画像処理方法において、
上記画像データに対して誤差拡散処理を行って表示すべき各サブピクセル値を決定し、その決定したサブピクセル値によりピクセル表示を行うようにしたことを特徴とするものである。
【００１７】
これによって、発明１と同様に、ＲＧＢ各サブピクセル単位で誤差拡散処理を実施することができるため、色にじみを防ぐことができることは勿論、従来行われていたローパスフィルタ処理のような、表示がぼやけるといった不都合を招くことがなくなり、サブピクセル値をできるだけ維持した高解像度表示を確実に実現することができる。
【００１８】
〔発明７〕
発明７の画像処理方法は、
発明６に記載の画像表示方法において、
上記誤差拡散処理は、上記画像データの各サブピクセル単位に行うようにしたことを特徴とするものである。
【００１９】
これによって、ピクセル単位で誤差拡散処理を行うよりも、さらに高い解像度を維持することができるため、より高画質化を達成することができる。
〔発明８〕
発明８の画像処理方法は、
ＲＧＢそれぞれのサブピクセルからなるピクセルを縦横に連続して配置した表示画面に、サブピクセル単位の解像度をもつ画像データをそのサブピクセルを用いて描画するようにした画像処理方法において、
上記画像データを輝度と色差に変換し、そのサブピクセル単位の輝度と色差に対してそれぞれ誤差拡散処理を行い、得られた輝度と色差をＲＧＢに変換してサブピクセル値を求め、その輝度と色差それぞれに対して誤差拡散処理を行って表示すべき各サブピクセル値を決定し、その決定したサブピクセル値によりピクセル表示を行うようにしたことを特徴とするものである。
【００２０】
すなわち、人間の目は色差に対する感度よりも輝度に対する感度が高いため、画像の種類によっては別々に処理した方が良い場合がある。
従って、本発明のように輝度と色差それぞれに対して誤差拡散処理を行うようにすれば、人間の視覚特性にあった輝度、色差という空間データを用いて処理することができるため、さらなる高画質化及び処理速度の向上等が期待できる。
【００２１】
〔発明９〕
発明９の画像処理方法は、
発明８に記載の画像処理方法において、
上記誤差拡散処理をそのサブピクセル単位の輝度のみ、あるいは色差のみに対して行うようにしたことを特徴とするものである。
【００２２】
これによって、輝度と色差との両方に対して誤差拡散処理する場合に比べて処理量が大幅に減少するため、処理時間の短縮を図ることができる。特に、この誤差拡散処理は大量の情報を短時間で処理する必要があるため、本発明のように輝度あるいは色差のいずれか一方にのみ処理を施すようにすれば、高速なプロセッサを備えていない表示デバイスや動画等を表示する際には有効である。
【００２３】
〔発明１０〕
発明１０の画像処理方法は、
発明９に記載の画像処理方法において、
上記誤差拡散処理をその輝度あるいは色差のいずれか一方にのみ行った際に、上記誤差拡散処理を施さない他方に対してローパスフィルタ処理を行うようにしたことを特徴とするものである。
【００２４】
これによって、発明９のように処理時間の短縮を図りながら、より高画質化を達成することができる。
〔発明１１〕
発明１１の画像処理方法は、
発明６〜９のいずれかに記載の画像処理方法において、
上記誤差拡散処理は、上記画像データを元のビット数よりも大きいビット数のデータに拡張して計算するようにしたことを特徴とするものである。
【００２５】
これによって、誤差拡散の計算時に発生する丸め誤差を減らすことができるため、処理時間を短縮することができると共に、メモリやプロセッサパワー等の必要リソースの低減を図ることができる。
【００２６】
【発明の実施の形態】
以下、本発明の実施の形態を添付図面を参照しながら詳述する。
図１は、本発明に係る画像処理装置１０の実施の一形態を示したものである。
図示するように、この画像処理装置１０は、画像ラインバッファ１２と、サブピクセル値計算部１４と、誤差計算部１６と、誤差拡散部１８と、誤差バッファ２０と、表示ピクセル値計算部２２と、表示部２４とから主に構成されており、液晶ディスプレイ等のカラー表示デバイスに組み込まれて用いられるようになっている。
【００２７】
ここで、画像ラインバッファ１２は、ＲＧＢそれぞれのサブピクセルを用いてカラー表示するソース画像Ｓの１ライン毎の画像データを取得して蓄積する機能を提供するようになっており、サブピクセル値計算部１４は、この画像ラインバッファ１２に蓄積された画像値と注目画素に対応する誤差値を元にＲＧＢそれぞれのサブピクセル値を計算する機能を提供するようになっている。
【００２８】
また、誤差計算部１６は、このサブピクセル値計算部１４で得られたサブピクセル値と実際に表示するピクセル値との関係により誤差値を計算する機能を提供するようになっており、誤差拡散部１８は、この誤差計算部１６で得られた誤差値を拡散して誤差バッファ２０中に蓄積された誤差値を更新する機能を提供するようになっている。
【００２９】
さらに、誤差バッファ２０は、このように分散された誤差値を一時的に蓄積する機能を提供するものであり、また、表示ピクセル値計算部２２は、サブピクセル値計算部で計算されたサブピクセルのＲＧＢ値を一つのＲＧＢピクセル値として計算する機能を提供するようになっており、さらに表示部２４は、この表示ピクセル値計算部２２で得られた一つのＲＧＢピクセル値をＬＣＤ等の表示デバイスの表示画面に表示する機能をそれぞれ提供するようになっている。
【００３０】
尚、これら各部１２，１４，１６，１８，２０，２２，２４は、液晶ディスプレイ等のカラー表示デバイスに、その本来の機能等を発揮するために元々から備えられたコンピュータシステム（ＣＰＵやメインメモリ、バス、入出力インタフェース、ストレージ等）及びこの動作の係わる各種制御プログラムによってソフトウェア上で実現可能となっている。
【００３１】
次に、以上のような構成をした画像処理装置１０を用いた本発明の画像処理の流れを図２及び図３のフロー、並びに図４に示す概念図等の各図を参照しながら説明する。
対象となるソース画像Ｓに対して本発明の処理を行うためには、図２のフローに示すように、先ず最初のステップＳ１００において、誤差バッファ２０内に蓄積された誤差値の全クリアを行う。
【００３２】
ここで、この誤差バッファ２０に蓄積される誤差値は、採用する誤差拡散の誤差拡散マトリクス（係数マトリクス）によって異なってくるが、本実施の形態では、一般的に多用されているJavis-Judice-Ninke型を用いた。
このJavis-Judice-Ninke型の誤差拡散マトリクスは、以下の表１に示すように、Ｘを注目画素とすると注目画素Ｘにおける誤差値を４８等分し、その一つ右隣にそのうちの７を、二つ右隣に５を、次の行の二つ左隣に３を、その行の一つ左隣に５を、その行の同じ位置（列）に７を、その行の一つ右隣に５を、その行の二つ右隣３を、さらにその次の行（２行先）の二つ左隣に１を、その行の一つ左隣に３を、その行の同じ位置（列）に５を、その行の一つ右隣に３を、その行の二つ右隣に１をそれぞれ分配するようにしたものである。
【００３３】
つまり、このJavis-Judice-Ninke型は、分散範囲が注目画素Ｘのラインを含めて３ライン（３行）に亘り、かつ、その分配量が注目画素Ｘの下流側近傍には多く分配され、Ｘより離れるに従ってその分配量が減るようになった誤差拡散マトリクスである。
【００３４】
【表１】
0004506092.tif 000002
【００３５】
従って、この表１からも分かるように、Javis-Judice-Ninke型の誤差拡散マトリクスによる誤差としては注目画素Ｘのラインを含めて３ライン分保持する必要があるため、Ｒ、Ｇ、Ｂそれぞれサブピクセル解像度に相当する３ライン分の誤差バッファを確保し、最初のステップＳ１００において、そのバッファ全てに０を代入することにより全クリアを行うことになる。
【００３６】
尚、本実施の形態では、誤差拡散マトリクスとしてJavis-Judice-Ninke型を採用したが、発明で利用できる誤差拡散マトリクスは、このJavis-Judice-Ninke型の他に、Floyd-Steinberg型、Shiau-Fan型等の他、どのような誤差拡散マトリクスでも適用可能である。
次に、このようにして誤差バッファ２０の全クリアを行ったならば、本発明では図４に示すようにソース画像の左上を始点として通常のラスタスキャンにより画像の処理を行っていくため、ライン（行）のカウンタであるｙに０を代入して初期化を行う（ステップＳ１０２）。
【００３７】
次に、ステップＳ１０４に移行して、ｙ行目の１ライン分のサブピクセル解像度をもつＲＧＢデータを取得し、それぞれＲ(x)、Ｇ(x)、Ｂ(x)という形でアクセスできるようにする。ここで、ｘは０からwidth−１までの値をとる変数である。尚、このwidthとは１ラインのピクセル解像度でのピクセル数をいう。
次に、ステップＳ１０６に移行して横方向のカウンタであるｘに０を代入して初期化すると共に、後の計算で用いる一つ手前（一つ左）のＧ、Ｂの値であるprevＧ、p r evＢを仮にＧ(0)、Ｂ(0)で初期化する。
【００３８】
次に、ステップＳ１０８に移行してサブピクセル値の計算に用いるＲ、Ｇ、Ｂの平均値aveＲ、aveＧ、aveＢを以下の式により求める。
aveＲ＝（Ｒ(x)＋Ｒ(x+1)＋Ｒ(x+2)）／３
aveＧ＝（Ｇ(x)＋Ｇ(x+1)＋Ｇ(x+2)）／３
aveＢ＝（Ｂ(x)＋Ｂ(x+1)＋Ｂ(x+2)）／３
次に、ステップＳ１１０に移行して、先ずＲサブピクセルの値（SubＲ(x)）を以下の式を用いて計算する。
SubＲ(x)＝aveＲ＋（Ｒ(x)−aveＲ）／ｎ（ｎ≧１）＋errorＲ(x)
PixelＲ＝INT（SubＲ(x)）
ここで、errorＲ(x)はＲ分の誤差バッファにおけるｘの位置での誤差値である。
【００３９】
また、（Ｒ(x)−aveＲ）をｎで割っているが、ｎが１の場合にはSubＲ(x)＝Ｒ(x)＋errorＲ(x)となり、サブピクセルデータのＲ(x)をそのまま使用することになる。
ただし、その場合には輝度の変化が激しいため、画像データによっては誤差拡散を用いても色にじみが見える場合も出てくる可能性がある。また、誤差マトリクスの種類によっても誤差が収束しない等の場合が出てくる可能性がある。
【００４０】
そのため、ｎの値を誤差マトリクスに応じて適切に設定することによりこれらの問題を解決することができる。
本実施の形態においては上記のようにJavis-Judice-Ninke型を用いているため、ｎ＝３に設定することとする。
また、SubＲ(x)は、これ以外の計算式によっても求めることができることは勿論である。
【００４１】
また、PixelＲは、表示データのＲ分を示し、INT()は四捨五入による整数化を示す（ＲＧＢ２４ビットの表示デバイスならばＲ分は８ビット、つまり０〜２５５の整数値にする必要があるため）
次に、このようにしてＲサブピクセル値SubＲ(x)、PixelＲが計算されたならば、
ステップＳ１１２に移行して、今度は仮のSubＧ′(x)とSubＢ′(x)を以下の式によって求める。この二つの値は誤差の計算を行うために求めるサブピクセル単位の仮のＧとＢである。
SubＧ′(x)＝aveＧ＋（Ｇ(x)−aveＧ）／ｎ（ｎ≧１）＋errorＧ(x)
SubＢ′(x)＝aveＢ＋（Ｂ(x)−aveＢ）／ｎ（ｎ≧１）＋errorＢ(x)
次に、このようにして仮のSubＧ′(x)とSubＢ′(x)が計算されたならば、さらにステップ１１４に移行して各ＲＧＢの誤差を計算する。
【００４２】
ここで誤差をどのようにするかはいろいろ考えられるが、本実施の形態では以下の式でサブピクセルＲに対する誤差を計算した。
errorＲ＝SubＲ(x)−PixelＲ
errorＧ＝SubＧ′(x)−prevＧ
errorＢ＝SubＢ′(x)−prevＢ
ここで、Ｒ分の誤差値errorＲは良いとして、errorＧ及びerrorＢの考え方であるが、現在注目しているピクセルはＲピクセルであり、Ｒのみが点灯するピクセルと考えることができる。
【００４３】
そのため、Ｇ及びＢに関しては、簡易的にその注目ピクセルの一つ手前（一つ左）のＧ及びＢのピクセル値をその注目ピクセルのＧ値及びＢ値と考えることとしたのが上記の式である。
従って、その一つ手前のＧ、Ｂの値であるprevＧ、prevＢを仮のサブピクセル値SubＧ′(x)及びSubＢ′(x)から引いたものをそれぞれＧ分の誤差値errorＧ、Ｂ分の誤差値errorＢとする。
【００４４】
次に、このようにして誤差が計算されたならステップＳ１１６に移行して、計算した誤差を上記のような誤差拡散マトリクスに基づき分配（拡散）する。
すなわち、Ｒ分の誤差バッファに関しては、前述のように対象ラインのＲ分の誤差バッファをerrorＲ(x)、次のラインのＲ分の誤差バッファをerrorＲ′(x)、さらにその次のラインのＲ分の誤差バッファをerrorＲ′′(x)とすると、以下のような１２種類の計算を行い、誤差を拡散することができる。
１．errorＲ(x+1)  ＝errorＲ(x+1)  ＋（７×errorＲ）／４８
２．errorＲ(x+2)  ＝errorＲ(x+2)  ＋（５×errorＲ）／４８
３．errorＲ′(x-2) ＝errorＲ′(x-2) ＋（３×errorＲ）／４８
４．errorＲ′(x-1) ＝errorＲ′(x-1) ＋（５×errorＲ）／４８
５．errorＲ′(x)   ＝errorＲ′(x)   ＋（７×errorＲ）／４８
６．errorＲ′(x+1) ＝errorＲ′(x+1) ＋（５×errorＲ）／４８
７．errorＲ′(x+2) ＝errorＲ′(x+2) ＋（３×errorＲ）／４８
８．errorＲ′′(x-2)＝errorＲ′′(x-2)＋（１×errorＲ）／４８
９．errorＲ′′(x-1)＝errorＲ′′(x-1)＋（３×errorＲ）／４８
10．errorＲ′′(x)  ＝errorＲ′′(x)  ＋（５×errorＲ）／４８
11．errorＲ′′(x+1)＝errorＲ′′(x+1)＋（３×errorＲ）／４８
12．errorＲ′′(x+2)＝errorＲ′′(x+2)＋（１×errorＲ）／４８
次に、ステップＳ１１８〜Ｓ１２２及び図３に示すようにステップＳ１２４〜Ｓ１２８を経て、Ｒと同様にＧのサブピクセル値とＢのサブピクセル値をそれぞれ計算し、結果として求められたPixelＲ、PixelＧ、PixelＢを表示デバイスに表示する２４ビットの表示ピクセル値として決定する（ステップＳ１３０）。
【００４５】
次に、ステップＳ１３２に移行してprevＧ＝PixelＧ、prevＢ＝PixelＢに設定すると共に次のステップＳ１３４でｘに１を足して次のサブピクセルＲＧＢ単位の処理を行う。
ただし、１を足した結果、次の判断ステップＳ１３６において、ｘがwidth以上になると判断したとき（ＮＯ）は、そのラインのピクセルは全て終了したことになるため、誤差バッファのローテーションを行う（ステップＳ１３８）。
【００４６】
すなわち、次のライン分の誤差バッファが注目行の誤差バッファとなるようにし、２行先の誤差バッファだったバッファを次の行の誤差バッファにし、２行先分の誤差バッファをクリアすることになる（ステップＳ１４０）。
一方、この判断ステップＳ１３６において、ｘがwidthより小さいと判断されれば（ＹＥＳ）、ステップＳ１０８まで戻ってｘがwidth以上になるまで同様な処理が繰り返されることになる。
【００４７】
そして、次の判断ステップＳ１４２において、この処理行が最終行か否かが判断され、最終行であると判断された場合（ＹＥＳ）には、そのまま処理を終了するが、最終行でないと判断された場合（ＮＯ）には、ｙを１インクリメントしてから（ステップＳ１４４）、ステップＳ１０４まで戻って同様に次の行から１行分の処理を再開することになる。
【００４８】
尚、上記実施の形態は注目ピクセルが中間のピクセルでのケースを示したものであってピクセルの左端と右端ではそれぞれ境界における例外処理が必要であるが、ここでは説明を割愛する。
また、本実施の形態では、計算は実数で行ったが、整数であっても勿論、構わない。また、その場合には、例えば、８ビットの画像データ（ＲＧＢでは２４ビット）を１６ビット（ＲＧＢでは４８ビット）に拡張（正規化）し、１６ビットで計算した後、８ビットに戻すことにより計算による丸め誤差を減らすことが可能である。
【００４９】
次に、このような処理の流れを具体的な数値を用いて説明する。
例えば、ソース画像の１０行目の左端のピクセルから処理を考える。
このとき、誤差バッファ２０には既に１０行目と１１行目分の誤差が蓄積されており、１２行目分はクリアされた段階である。
この条件で、例えば、Ｒ分の誤差バッファには左端から以下の表２に示すような値が入っているとする。
【００５０】
尚、ここでは、列が４列で終わっているが、実際にはwidth列まで当然にデータが存在する。また、Ｇ、Ｂ分の誤差バッファに関しても便宜上Ｒと同じ値が入っているものとする。
【００５１】
【表２】
0004506092.tif 000003
【００５２】
次に、サブピクセル解像度の画像データ（表示の横３倍の解像度）は以下の表３に示すように、左からＲＧＢＲＧＢＲＧＢ…というデータになっている。
ここでは列が９列で終わっているが、当然に実際にはwidth列×３までデータが存在する。
【００５３】
【表３】
0004506092.tif 000004
【００５４】
そして、これら具体的な数値を元に実際に上記フローに沿って計算していくと、
ｙ＝１０，ｘ＝０、prevＧ＝１２８、prevＢ＝１２８
aveＲ＝（Ｒ(x)＋Ｒ(x+1)＋Ｒ(x+2)）／３
＝（１２８＋１２８＋２００）／３＝１５２
aveＧ＝（Ｇ(x)＋Ｇ(x+1)＋Ｇ(x+2)）／３
＝（１２８＋２００＋２００）／３＝１７６
aveＢ＝（Ｂ(x)＋Ｂ(x+1)＋Ｂ(x+2)）／３
＝（１２８＋２００＋２００）／３＝１７６
SubＲ(0)＝aveＲ＋（Ｒ(x)−aveＲ）／ｎ（ｎ≧１）＋errorＲ(x)
＝１５２＋（１２８−１５２）／３＋１０＝１５４
PixelＲ＝INT（SubＲ(x)）＝１５４
SubＧ′(0)＝aveＧ＋（Ｇ(x)−aveＧ）／ｎ（ｎ≧１）＋errorＧ(x )
＝１７６＋（１２８−１７３）／３＋１０＝１７０
SubＢ′(0)＝aveＢ＋（Ｂ(x)−aveＢ）／ｎ（ｎ≧１）＋errorＢ(x)
＝１７６＋（１２８−１７３）／３＋１０＝１７０
errorＲ＝SubＲ(x)−PixelＲ＝１５４−１５４＝０；
errorＧ＝SubＧ′(x)−prevＧ＝１７０−１２８＝４２
errorＢ＝SubＢ′(x)−prevＢ＝１７０−１２８＝４２
という誤差が求まる。
【００５５】
ここで、errorＲの誤差は０のため、拡散しても誤差バッファの値は変わらないが、errorＧの誤差を拡散すると誤差バッファは以下の表４に示すように変更される。
【００５６】
【表４】
0004506092.tif 000005
【００５７】
尚、今回の計算は、注目画素が左端の画素のため、その注目画素の左側には誤差は分配されない（できない）。また、errorＢに関しても同様に誤差バッファが変更されることになる。
これによって、色にじみを防ぐことができることは勿論、従来行われていたローパスフィルタ処理のような、表示がぼやけるといった不都合を招くことがなくなり、サブピクセル値をできるだけ維持した高解像度表示を確実に実現することができる。
【００５８】
次に、本発明の第二の実施の形態を図５及び図６のフローチャート図を参照しながら説明する。
すなわち、本実施の形態はＲＧＢ値を輝度（Ｙ）、色差（Ｃｒ、Ｃｂ）値に変換し、そのＹ、Ｃｒ、Ｃｂに対して誤差拡散処理を施すようにしたものである。
本実施の形態では、図５に示すように最初のステップＳ２００において、上記実施の形態で説明したＲＧＢ値の場合と同様に、先ず誤差バッファ２０を全クリアする。ここで、誤差バッファはＹ、Ｃｒ、Ｃｂに関する３ライン分のバッファとなる。
【００５９】
次に、ラインカウンタｙに０を代入して初期化（ステップＳ２０２）してから、ｙ行目１ライン分のサブピクセル解像度をもつＹＣＣデータを取得する（ステップＳ２０４）。
ここで、ＲＧＢとＹＣＣとの相互変換はいろいろな式が考えられるが、本実施の形態では以下のＣＣＩＲ６０１という国際規格に基づく変換式を用いてＲＧＢとＹＣＣ間の相互変換をすることとした。
【００６０】
そのため、ここでは以下の式のＲ、Ｇ、Ｂにサブピクセル解像度のＲ(x)、Ｇ(x)、Ｂ(x)を代入することによってサブピクセル解像度Ｙ(x)、Ｃｒ(x)、Ｃｂ(x)を１ライン分求める。
Ｙ  ＝0.299×Ｒ＋0.587×Ｇ＋0.114×Ｂ
Ｃｒ＝0.511×Ｒ−0.428×Ｇ−0.083×Ｂ
Ｃｂ＝−0.172×Ｒ−0.339×Ｇ−0.511×Ｂ
Ｒ＝Ｙ             ＋1.371×Ｃｒ
Ｇ＝Ｙ−0.336×Ｃｂ−0.698×Ｃｒ
Ｂ＝Ｙ＋1.723×Ｃｂ
次に、ステップＳ２０６に移行して横方向のカウンタであるｘに０を代入して初期化すると共に、後の計算で用いる一つ手前のＧ、Ｂの値であるprevＧ、prevＢを仮にＧ(0)、Ｂ(0)で初期化する。
【００６１】
次に、ステップＳ２０８に移行してサブピクセル値の計算に用いるＹ、Ｃｒ、Ｃｂの平均値aveＹ、aveＣｒ、aveＣｂを次式により求める。
aveＹ  ＝（Ｙ(x)＋Ｙ(x+1)＋Ｙ(x+2)）／３
aveＣｒ＝（Ｃｒ(x)＋Ｃｒ(x+1)＋Ｃｒ(x+2)）／３
aveＣｂ＝（Ｃｂ(x)＋Ｃｂ(x+1)＋Ｃｂ(x+2)）／３
次に、ステップＳ２１０に移行してＲサブピクセル分のSubＹ(x)、SubＣｒ(x)、SubＣｂ(x)を計算する。
【００６２】
計算はそれぞれ誤差を足すということで以下の式により行う。また、ｎの考え方は上記第一の実施の形態と同様である。
SubＹ(x)  ＝aveＹ＋（Ｙ(x)−aveＹ）／ｎ＋errorＹ(x)
SubＣｒ(x)＝aveＣｒ＋（Ｃｒ(x)−aveＣｒ）／ｎ＋errorＣｒ(x)
SubＣｂ(x)＝aveＣｂ＋（Ｃｂ(x)−aveＣｂ）／ｎ＋errorＣｂ(x)
次に、ステップ２１２に移行してＲサブピクセルの表示値PixelＲを計算する。計算は上記ＹＣＣ→ＲＧＢ変換式に基づき、以下の式を用いて決定する。
PixelＲ＝INT（SubＹ(x)＋1.371SubＣｒ(x)）
次に、ステップ２１４に移行して誤差拡散を行うための前準備としてしきい値（仮の真値、表示する値）に相当するSubＹ′(x)、SubＣｒ′(x)、SubＣｂ′(x)を簡易的に次式により求める。
SubＹ′(x)＝0.299PixelＲ＋0.587prevＧ＋0.114prevＢ
SubＣｒ′(x)＝0.511PixelＲ−0.428prevＧ−0.083prevＢ
SubＣｂ′(x)＝−0.172PixelＲ−0.339prevＧ＋0.511prevＢ
次に、ステップ２１６に移行して以下の式により各ＹＣＣの誤差を計算してから、ステップ２１８６に移行して計算した各誤差をJavis-Judice-Ninke型の誤差拡散マトリクスに基づき分配（拡散）する。
errorＹ＝SubＹ(x)−SubＹ′(x)
errorＣｒ＝SubＣｒ(x)−SubＣｒ′(x)
errorＣｂ＝SubＣｂ(x)−SubＣｂ′(x)
そして、以下のステップＳ２２０〜Ｓ２２８及び図６に示すステップＳ２３０〜Ｓ２３８に示すように、Ｒと同様に、Ｇのサブピクセル値、Ｂのサブピクセル値をそれぞれ計算し、結果として求められたPixelＲ、PixelＧ、PixelＢが表示デバイスに表示する２４ビットＲＧＢ値ということになる（ステップＳ２４０）。
【００６３】
次に、ステップＳ２４２に移行してprevＧ＝PixelＧ、prevＢ＝PixelＢに設定してから、ステップＳ２４４に移行してｘに１を足して次のサブピクセル単位の処理を行う。
ただし、次の判断ステップＳ２４６において、この１を足した結果、ｘがwidth以上（ＮＯ）になれば、そのラインのピクセルは全て処理したことになるため、次のステップＳ２４８に移行して誤差ローテンションを行う。
【００６４】
すなわち、次のライン分の誤差バッファが注目行の誤差バッファとなるようにし、２行先の誤差バッファだったバッファを次の行の誤差バッファにし、２行先分の誤差バッファをクリアする（ステップＳ２５０）。
一方、上記判断ステップＳ２４６において、ｘがwidthよりも小さいとき（ＹＥＳ）は、ステップＳ２０８まで戻ってｘがwidthに達するまで同様な処理を繰り返すことになる。
【００６５】
そして、次の判断ステップＳ２５２において、この処理行が最終行に達したか否かを判断し、最終行に達したと判断した（ＹＥＳ）ときはそのまま処理を終了するが、最終行に達していないとき（ＮＯ）は、ステップＳ２５４に移行してｙを１インクリメントしてからステップＳ２０４まで戻り、同様な処理を最終行に達するまで繰り返すことになる。
【００６６】
このように、輝度と色差それぞれに対して誤差拡散処理を行うようにすれば、人間の視覚特性にあった輝度、色差という空間データを用いて処理することができるため、さらなる高画質化及び処理速度の向上等が期待できる。
尚、本実施の形態でも上記実施の形態と同様に、ピクセルの左端と右端ではそれぞれ境界における例外処理が必要であり、その説明は割愛する。
【００６７】
また、本実施の形態ではＹＣＣ全てに対して誤差拡散処理を行ったが、人間の目には輝度Ｙに関する感度が高く色差（Ｃｒ、Ｃｂ）に関する感度は低いため、誤差拡散処理をＹに対してのみ行うだけであっても良い。
これにより、処理量が激減して処理速度が速くなるといった効果が得られる。
また、その場合に色差に関しては従来例にあるような周辺画素値を用いたローパスフィルタ処理を行うことにより、色差のずれを抑えることも可能である。
【００６８】
また、これとは反対に、色差（Ｃｒ、Ｃｂ）のみに誤差拡散処理を施すことも可能である。
その場合に輝度Ｙに関してはローパスフィルタをかけることも可能であり、これによって、処理時間を減らしながら色にじみを抑えることが可能となる。
さらに、本実施の形態では、画像ラインバッファ１２によってソース画像Ｓの１ライン毎の画像データを取得して蓄積するようにしたが、この画像ラインバッファ１２は必ずしも必要となるものでなく、画像データを蓄積せずに取得と同時にそのサブピクセル値を計算するようなケースでは、省略することも可能である。
【図面の簡単な説明】
【図１】画像処理装置の実施の一形態を示すブロック図である。
【図２】ある画像処理方法の前半の流れを示すフローチャート図である。
【図３】ある画像処理方法の後半の流れを示すフローチャート図である。
【図４】サブピクセル及びピクセルの配置の一例を部分拡大概念図である。
【図５】他の画像処理方法の前半の流れを示すフローチャート図である。
【図６】他の画像処理方法の後半の流れを示すフローチャート図である。
【符号の説明】
１０…画像処理装置、１２…画像ラインバッファ、１４…サブピクセル値計算部、１６…誤差拡散部、１８…誤差拡散部、２０…誤差バッファ、２２…表示ピクセル値計算部、２４…表示部、Ｓ…ソース画像。
【図１】
0004506092.tif 000006
【図２】
0004506092.tif 000007
【図３】
0004506092.tif 000008
【図４】
0004506092.tif 000009
【図５】
0004506092.tif 000010
【図６】
0004506092.tif 000011