[go: up one dir, main page]

JP2010117741A - 画像処理装置、画像処理方法、及び、プログラム - Google Patents

画像処理装置、画像処理方法、及び、プログラム Download PDF

Info

Publication number
JP2010117741A
JP2010117741A JP2008288306A JP2008288306A JP2010117741A JP 2010117741 A JP2010117741 A JP 2010117741A JP 2008288306 A JP2008288306 A JP 2008288306A JP 2008288306 A JP2008288306 A JP 2008288306A JP 2010117741 A JP2010117741 A JP 2010117741A
Authority
JP
Japan
Prior art keywords
value
component
decimal
bit
integer
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.)
Withdrawn
Application number
JP2008288306A
Other languages
English (en)
Inventor
Makoto Tsukamoto
信 塚本
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.)
Sony Corp
Original Assignee
Sony 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 Sony Corp filed Critical Sony Corp
Priority to JP2008288306A priority Critical patent/JP2010117741A/ja
Publication of JP2010117741A publication Critical patent/JP2010117741A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Image Processing (AREA)
  • Facsimile Image Signal Circuits (AREA)

Abstract

【課題】画素値が複数の成分を有する画素の画像の階調変換を、高速に行う。
【解決手段】誤差拡散部51では、画像の画素値INと、量子化誤差Qのフィルタリングの結果であるフィルタ出力Uとを加算した加算値の量子化値OUTが、量子化値OUTの小数点を基準として、画素値INの整数部Iと、フィルタ出力Uと画素値INの小数部Pとの和である小数加算値Xの整数部Jとの和として求められること、及び、量子化値OUTの量子化誤差Qが、量子化値OUTの小数点を基準として、フィルタ出力Uと、画素値INの小数部Pとの和である小数加算値Xの小数部として求められることに基づき、画素値IN、及び、小数加算値Xのそれぞれを、整数部と小数部とに分けて、量子化値OUT、及び、量子化誤差Qを求めることにより、誤差拡散法による階調変換を行う。本発明は、階調変換を行う装置に適用することができる。
【選択図】図10

Description

本発明は、画像処理装置、画像処理方法、及び、プログラムに関し、特に、階調変換を、高速に行うことができるようにする画像処理装置、画像処理方法、及び、プログラムに関する。
例えば、RGB(Red,Green,Blue)が6ビットのLCD(Liquid Crystal Display)(RGBの各値が6ビットの画像を表示することができるLCD)等の、少ないビット数のディスプレイに、RGBが8ビットの画像(RGBの各値が8ビットの画像)等の、多ビットの画像を表示する場合には、画像の階調を変換する階調変換を行う必要がある。
階調変換を行う方法としては、例えば、誤差拡散法がある(例えば、非特許文献1を参照)。
誤差拡散法による階調変換では、階調変換を行う対象の画素である注目画素に空間的に近い画素の画素値の(階調変換後の画素値としての量子化値の)量子化誤差であるノイズが、空間周波数の高域にノイズシェーピングされる。さらに、ノイズシェーピング後のノイズを、注目画素の画素値に加算する誤差拡散(注目画素の画素値の(量子化値の)量子化誤差を、注目画素に空間的に近い画素の画素値に加算する誤差拡散)が行われる。そして、ノイズの加算後の画素値が、所望のビット数に量子化され、その量子化により得られる量子化値が、注目画素の階調変換後の画素値として出力される。
誤差拡散法による階調変換は、空間方向の2次元のΔΣ変調(2次元ΔΣ変調)であり、上述のように、ノイズ(ノイズシェーピング後の量子化誤差)が加算された後の画素値が量子化される。そのため、その量子化後(階調変換後)の画像では、画素値の下位ビットを切り捨てる量子化だけでは一定値となる部分の画素値が、PWM(Pulse Width Modulation)がされたようになる。その結果、階調変換後の画像の階調は、人の視覚で空間方向の積分が行われるという空間積分効果によって、滑らかに変化しているように見える。すなわち、階調変換前の画像と同等の階調を、擬似的に表現することができる。
また、誤差拡散法では、空間周波数の高域において、人の視覚の感度が低いことを考慮して、画素値に、ノイズシェーピング後のノイズ(量子化誤差)が加算される。これにより、階調変換後の画像にノイズが目立つ程度を低減することができる。
貴家仁志著,「よくわかるディジタル画像処理」,第6版,CQ出版株式会社,2000年1月,p.196-213
階調変換の対象の画像の画素の画素値が、例えば、RGB(Red,Green,Blue)成分等の複数の成分を有する場合、階調変換は、成分ごとに行われる。すなわち、階調変換は、R成分、G成分、及び、B成分のそれぞれについて行われる。
したがって、1つの成分の階調変換を行う専用のハードウェアや、並列処理用でないCPU(Central Processing Unit)等のプロセッサを有するコンピュータにプログラムを実行させることによって、階調変換を行う場合、階調変換に時間を要することになる。
すなわち、この場合、例えば、R成分の階調変換を行い、その終了後に、G成分の階調変換を行い、さらに、その終了後に、B成分の階調変換を行わなければならないため、階調変換に時間を要する。
本発明は、このような状況に鑑みてなされたものであり、例えば、画素値がRGB成分等の複数の成分を有する画素の画像の階調変換を、高速に行うことができるようにするものである。
本発明の一側面の画像処理装置、又は、プログラムは、画像の画素値と、量子化誤差のフィルタリングの結果であるフィルタ出力とを加算した加算値の量子化値が、前記量子化値の小数点を基準として、前記画素値の整数部と、前記フィルタ出力と前記画素値の小数部との和である小数加算値の整数部との和として求められること、及び、前記量子化値の前記量子化誤差が、前記量子化値の小数点を基準として、前記フィルタ出力と、前記画素値の小数部との和である前記小数加算値の小数部として求められることに基づき、前記画素値、及び、前記小数加算値のそれぞれを、整数部と小数部とに分けて、前記量子化値、及び、前記量子化誤差を求めることにより、画素値が複数の成分の前記画像の誤差拡散法による階調変換を行う誤差拡散手段を備える画像処理装置、又は、画像処理装置として、コンピュータを機能させるためのプログラムである。
本発明の一側面の画像処理方法は、画像処理装置が、画像の画素値と、量子化誤差のフィルタリングの結果であるフィルタ出力とを加算した加算値の量子化値が、前記量子化値の小数点を基準として、前記画素値の整数部と、前記フィルタ出力と前記画素値の小数部との和である小数加算値の整数部との和として求められること、及び、前記量子化値の前記量子化誤差が、前記量子化値の小数点を基準として、前記フィルタ出力と、前記画素値の小数部との和である前記小数加算値の小数部として求められることに基づき、前記画素値、及び、前記小数加算値のそれぞれを、整数部と小数部とに分けて、前記量子化値、及び、前記量子化誤差を求めることにより、画素値が複数の成分の前記画像の誤差拡散法による階調変換を行うステップを含む画像処理方法である。
以上のような一側面においては、画像の画素値と、量子化誤差のフィルタリングの結果であるフィルタ出力とを加算した加算値の量子化値が、前記量子化値の小数点を基準として、前記画素値の整数部と、前記フィルタ出力と前記画素値の小数部との和である小数加算値の整数部との和として求められること、及び、前記量子化値の前記量子化誤差が、前記量子化値の小数点を基準として、前記フィルタ出力と、前記画素値の小数部との和である前記小数加算値の小数部として求められることに基づき、前記画素値、及び、前記小数加算値のそれぞれを、整数部と小数部とに分けて、前記量子化値、及び、前記量子化誤差を求めることにより、画素値が複数の成分の前記画像の誤差拡散法による階調変換が行われる。
なお、画像処理装置は、独立した装置であっても良いし、1つの装置を構成している内部ブロックであっても良い。
また、プログラムは、伝送媒体を介して伝送することにより、又は、記録媒体に記録して、提供することができる。
本発明の一側面によれば、階調変換を高速に行うことができる。特に、例えば、画素値が複数の成分を有する画素の画像の階調変換を、高速に行うことができる。
以下、本発明の実施の形態について説明するが、その前に、前段階の準備として、誤差拡散法による階調変換について説明する。
[誤差拡散法による階調変換]
図1は、誤差拡散法による階調変換を行う階調変換装置の構成例を示している。
図1において、階調変換装置は、誤差拡散部10から構成される。
誤差拡散部10は、演算部11、量子化部12、演算部13、及び、フィルタ14から構成され、誤差拡散を行うことで、誤差拡散法による階調変換を行う。
いま、画素値がmビットの画素の画像を、階調変換の対象として、画素値が、mビットより少ないnビットの画素の画像に階調変換を行うこととする。この場合、演算部11には、階調変換の対象の画像の画素のmビットの画素値INが、例えば、ラスタスキャン順に供給される。
さらに、演算部11には、フィルタ14の出力(以下、フィルタ出力ともいう)が供給される。
演算部11は、画素値INと、フィルタ14のフィルタ出力とを加算し、その結果得られる加算値Mを、量子化部12、及び、演算部13に供給する。
量子化部12は、演算部11からの加算値を、nビットに量子化し、その結果得られるnビットの量子化値を、階調変換後の画像の画素値OUTとして出力する。
量子化部12が出力する画素値OUTは、演算部13にも供給される。
演算部13は、演算部11からの加算値Mから、量子化部12からの画素値OUTを減算することで、すなわち、量子化部12への入力から、量子化部12からの出力を減算することで、量子化部12での量子化により生じる量子化誤差Qを求め、フィルタ14に供給する。
フィルタ14は、信号をフィルタリングする2次元のFIR(Finite Impulse Response)フィルタであり、演算部13からの量子化誤差Qをフィルタリングし、そのフィルタリングの結果であるフィルタ出力を、演算部11に出力する。
演算部11では、以上のようにして、フィルタ14からの、量子化誤差Qのフィルタリングの結果であるフィルタ出力と、画素値INとが加算される。
誤差拡散部10では、量子化誤差Qが、2次元のFIRフィルタであるフィルタ14を介して、入力側(演算部11)にフィードバックされており、2次元のΔΣ変調を行うΔΣ変調器が構成されている。
ΔΣ変調器によれば、量子化誤差Qが、2次元の空間方向、つまり、水平方向(x方向)、及び、垂直方向(y方向)のいずれについても、空間周波数の高域に拡散され(ノイズシェーピングされ)、見た目に、ノイズが比較的目立たない、擬似的に、高階調の画像を得ることができる。
以上のように、誤差拡散法による階調変換では、ΔΣ変調が行われる。そこで、誤差拡散法による階調変換によって得られる、階調変換後の画像を、変調画像ともいう。また、変調画像の画素を、変調画素ともいい、変調画素の画素値OUTを、変調画素値ともいう。
ここで、加算値Mは、画素値INと、量子化誤差Qとを用いて、式(1)で表される。
M=IN+G×Q
・・・(1)
式(1)において、Gは、フィルタ14の伝達関数を表す。
また、量子化誤差は、加算値Mと、変調画素値OUTとを用いて、式(2)で表される。
Q=M-OUT
・・・(2)
式(1)と式(2)から、画素値INと変調画素値OUTとの関係は、式(3)で表される。
OUT=IN-(1-G)×Q
・・・(3)
式(3)では、量子化誤差Qが、-(1-G)で変調されているが、この-(1-G)での変調が、空間方向のΔΣ変調によるノイズシェーピングである。
図2は、誤差拡散法による階調変換、すなわち、ΔΣ変調の対象となる画素の順番を示している。
図2に示すように、階調変換の対象の画像を構成する画素は、例えば、ラスタスキャン順に、ΔΣ変調の対象(注目画素)となる。
図3は、図1のフィルタ14の構成例を示している。
図3において、フィルタ14は、4タップの2次元のFIRフィルタであり、4個の演算部211,1,212,1,213,1、及び211,2、並びに、1個の演算部22等から構成される。
いま、注目画素を中心とする、横×縦が3×3画素のうちの、左からx番目で、上からy番目の画素の量子化誤差を、Q(x,y)と表すこととすると、演算部21x,yには、量子化誤差Q(x,y)が供給される。
すなわち、図3では、演算部21x,yには、注目画素を中心とする、横×縦が3×3画素のうちの、ラスタスキャン順で、注目画素より先に処理される(注目画素にされる)4画素それぞれの量子化誤差Q(x,y)が供給される。
演算部21x,yは、そこに供給される量子化誤差Q(x,y)と、あらかじめ設定されたフィルタ係数a(x,y)とを乗算し、その結果得られる乗算値を、演算部22に供給する。
演算部22は、4個の演算部21x,yそれぞれから供給される乗算値を加算し、その加算値を、フィルタ出力として、演算部11(図1)に出力する。
図1の演算部11では、以上のように、注目画素を中心とする3×3画素のうちの、ラスタスキャン順で、注目画素より先に処理される4画素それぞれの量子化誤差Q(x,y)を用いたフィルタリングにより得られるフィルタ出力が、注目画素の画素値INに加算される。
なお、図3では、4タップのフィルタ14のフィルタ係数として、例えば、a(1,1) = 1/16,a(2,1) = 5/16,a(3,1) = 3/16,a(1,2) = 7/16が採用されている。
この場合、フィルタ出力Uは、式(4)で表される。
U=Q(1,1)/16 + Q(2,1)×5/16 + Q(3,1)×3/16 + Q(1,2)×7/16
・・・(4)
図4は、図3のフィルタ14のフィルタリングに用いられる量子化誤差Qを示している。
図3で説明したように、フィルタ14では、注目画素を中心とする3×3画素の、ラスタスキャン順で、注目画素より先に処理される4画素それぞれの量子化誤差Q(1,1),Q(2,1),Q(3,1)、及びQ(1,2)を用いてフィルタリング(式(4)の積和演算)が行われる。
そして、そのフィルタリングの結果であるフィルタ出力Uが、演算部11(図1)において、注目画素の画素値INと加算される。
ところで、図1の階調変換装置は、1つの誤差拡散部10から構成されるため、画素値がRGB成分等の複数の成分の画素からなる画像の階調変換を行う場合には、誤差拡散部10において、複数の成分の階調変換を順番に行うことになる。
図5は、図1の階調変換装置において、画素値がRGB成分の画素からなる画像の階調変換を行う場合の、階調変換の処理を説明するフローチャートである。
図1の階調変換装置の誤差拡散部10には、例えば、画素値がRGB成分の画素からなる画像が、階調変換の対象の画像(以下、対象画像ともいう)として供給される。
誤差拡散部10は、対象画像の画素の中で、まだ、注目画素(処理の対象として注目する画素)としていない画素のうちの、ラスタスキャン順で最初の画素を、注目画素とする。
そして、ステップS11において、誤差拡散部10は、注目画素の画素値のR成分のΔΣ変調、すなわち、誤差拡散法による階調変換を行い、階調変換後の画素値のR成分を出力して、処理は、ステップS12に進む。
ステップS12では、誤差拡散部10は、注目画素の画素値のG成分の誤差拡散法による階調変換を行い、階調変換後の画素値のG成分を出力して、処理は、ステップS13に進む。
ステップS13では、誤差拡散部10は、注目画素の画素値のB成分の誤差拡散法による階調変換を行い、階調変換後の画素値のB成分を出力して、処理は、ステップS14に進む。
なお、誤差拡散部10のフィルタ14(図1)は、量子化誤差を、RGB成分のそれぞれごとに記憶する。そして、フィルタ14は、R成分の階調変換では量子化誤差のR成分(画素値のR成分について得られた量子化誤差)を、G成分の階調変換では量子化誤差のR成分を、B成分の階調変換では量子化誤差のB成分を、それぞれ用いてフィルタリングを行う。
ステップS14では、誤差拡散部10は、注目画素が、ラスタスキャン順で、最後の画素であるかどうかを判定する。
ステップS14において、注目画素が、ラスタスキャン順で、最後の画素でないと判定された場合、誤差拡散部10は、対象画像の画素の中で、まだ、注目画素としていない画素のうちの、ラスタスキャン順で最初の画素を、新たに、注目画素とする。そして、処理は、ステップS14からステップS11に戻り、以下、同様の処理が繰り返される。
また、ステップS14において、注目画素が、ラスタスキャン順で、最後の画素であると判定された場合、処理は、終了する。
以上のように、1つの誤差拡散部10を有する階調変換装置(図1)において、画素値がRGB成分の画素からなる画像の階調変換を行う場合には、画素値のRGB成分の階調変換を、成分ごとに順番に行うことになるので、階調変換に要する時間(処理のサイクル数)が大になる。この点、並列処理用でないCPU等のプロセッサを有するコンピュータにプログラムを実行させることによって、階調変換を行う場合も、同様である。
図6は、誤差拡散法による階調変換を行う階調変換装置の他の構成例を示している。
図6において、階調変換装置は、3つの誤差拡散部31R,31G、及び31Bから構成され、画素値がRGB成分等の複数の成分の画素からなる画像の階調変換を行う。
すなわち、図6において、階調変換装置には、画素値がRGB成分の画素からなる画像が、対象画像として供給される。
対象画像の画素は、ラスタスキャン順に、注目画素とされ、注目画素の画素値のRGB成分のうちの、R成分は誤差拡散部31Rに、G成分は誤差拡散部31Gに、B成分は誤差拡散部31Bに、それぞれ供給される。
誤差拡散部31R,31G、及び31Bは、いずれも、図1の誤差拡散部10と同様に構成される。
例えば、いま、対象画像が、画素値のRGB成分がそれぞれ8ビットの画像(8ビット画像)であり、階調変換後の画像として、画素値のRGB成分がそれぞれ6ビットの画像(6ビット画像)が要求されていることとする。この場合、誤差拡散部31Rは、誤差拡散部10(図1)と同様の処理を行うことで、そこに供給される画素値の8ビットのR成分を、6ビットのR成分に階調変換して出力する。
同様に、誤差拡散部31Gは、そこに供給される画素値の8ビットのG成分を、6ビットのG成分に階調変換して出力し、誤差拡散部31Bは、そこに供給される画素値の8ビットのB成分を、6ビットのB成分に階調変換して出力する。
以上のように、3つの誤差拡散部31R,31G、及び31Bを有する階調変換装置(図6)では、画素値のRGB成分の階調変換を、並列に行うことができるので、階調変換に要する時間を小にすることができる。但し、図6の階調変換装置の規模は、単純には、図1の階調変換装置の3倍になる。
また、並列処理用でないCPU等のプロセッサを有するコンピュータにプログラムを実行させることによって、階調変換を行う場合には、図6の階調変換装置のように、画素値のRGB成分の階調変換を、並列に行うことは困難である。
[本発明を適用した画像処理装置の全体構成]
そこで、図7は、本発明を適用した画像処理装置の一実施の形態の構成例を示している。
図7において、画像処理装置は、誤差拡散部51とディスプレイ52から構成され、例えば、TV(テレビジョン受像機)等に適用することができる。
誤差拡散部51には、例えば、テレビジョン放送番組の画像が、対象画像として供給される。
例えば、対象画像が、画素値のRGB成分がそれぞれ8ビットの画像(8ビット画像)であり、ディスプレイ52が表示することができる画像が、画素値のRGB成分がそれぞれ6ビットの画像(6ビット画像)である。この場合、誤差拡散部51は、対象画像である8ビット画像の、誤差拡散法による階調変換(ΔΣ変調)を行うことで、6ビット画像(変調画像)とし、その6ビット画像を、ディスプレイ52に供給する。
ディスプレイ52は、例えば、6ビット画像を表示することが可能なLCD(Liquid Crystal Display)や有機EL(Electro Luminescence)ディスプレイ等であり、誤差拡散部51からの6ビット画像を表示する。
なお、ディスプレイ52としては、画素値のRGB成分がそれぞれ6ビットの6ビット画像以外のビット数の画像を表示するディスプレイを採用することができる。
また、ディスプレイ52としては、画素値のRGB成分が、いずれも6ビットの画像の他、例えば、R成分が5ビットで、G成分が6ビットで、B成分が5ビットの画像を表示するディスプレイを採用することが可能である。
以上のように構成される画像処理装置において、誤差拡散部51では、対象画像の画素値のRGB成分の誤差拡散法による階調変換(ΔΣ変調)が、以下の原理に基づき、RGB成分すべてについて並列(同時に)行われる。
すなわち、図1で説明した誤差拡散法による階調変換(ΔΣ変調)では、量子化部12が出力する量子化値(変調画素値)OUTの小数点を基準とすると、量子化値OUTは、画素値INの整数部と、小数加算値の整数部との和として求めることができる。
ここで、画素値INがmビットで、量子化値OUTがn(<m)ビットであるとする。量子化値(変調画素値)OUTとは、対象画像のmビットの画素値INと、量子化誤差Qのフィルタリングの結果であるフィルタ出力とを加算した加算値Mをnビットに量子化したnビットの値である。
量子化値OUTの小数点を基準としたときの、画素値INの整数部とは、mビットの画素値INの小数点が、最上位ビットからnビット目とn+1ビット目との間の位置にあるとしたときの、画素値INの整数部(最上位ビットから、nビット目まで)である。
小数加算値とは、量子化誤差Qのフィルタリングを行うフィルタ14のフィルタ出力と、画素値INの小数部(最上位ビットからn+1ビット目から、最下位ビットまで)との和である。
また、図1で説明した誤差拡散法による階調変換では、量子化部12が出力する量子化値OUTの小数点を基準とすると、量子化値OUTの量子化誤差Qは、フィルタ出力と画素値INの小数部との和である小数加算値の小数部として求めることができる。
図7の誤差拡散部51では、上述のように、量子化値OUTの小数点を基準とした場合に、第1に、量子化値OUTが、画素値INの整数部と、小数加算値の整数部との和として求められること、及び、第2に、量子化誤差Qが、小数加算値の小数部として求められることに基づき、画素値IN、及び、小数加算値のそれぞれを、整数部と小数部とに分けて、量子化値OUT、及び、量子化誤差Qを求めることにより、誤差拡散法による階調変換を、画素値のRGB成分すべてについて並列(同時に)行う。
その結果、誤差拡散部51では、画素値が複数の成分であるRGB成分を有する画素の画像の階調変換を、高速に行うことができる(処理のサイクル数を大幅に削減することができる)。
[誤差拡散部51のハードウェアの構成]
図8は、図7の誤差拡散部51のハードウェアの構成例を示している。
図8において、誤差拡散部51は、コンピュータで構成されている。
コンピュータは、CPU102を内蔵している。CPU102には、バス101を介して、入出力インタフェース110が接続されている。CPU102は、入出力インタフェース110を介して、外部とのインタフェースである入力部107から指令や処理の対象となるデータが入力されると、ROM(Read Only Memory)103に格納されているプログラムを実行する。あるいは、CPU102は、ハードディスク105に格納されているプログラムを、RAM(Random Access Memory)104にロードして実行する。これにより、コンピュータは、全体として、後述するブロック図の構成によって行われる処理や、後述するフローチャートに従った処理を行う。そして、CPU102は、その処理結果を、必要に応じて、例えば、入出力インタフェース110を介して、外部とのインタフェースである出力部106から出力し、あるいは、ハードディスク105に記録等させる。
なお、ハードディスク105に格納されているプログラムには、ハードディスク105に最初から記録されていたプログラムがある。また、ハードディスク105に格納されているプログラムには、インターネット等のネットワークを介しての通信インタフェースである通信部108によってダウンロードされてハードディスク105にインストールされたプログラムがある。その他、ハードディスク105に格納されているプログラムには、ドライブ109に装着されたリムーバブル記録媒体111から読み出されてハードディスク105にインストールされたプログラム等がある。
すなわち、CPU102に実行させるプログラムは、コンピュータに内蔵されている記録媒体としてのハードディスク105やROM103に予め記録しておくことができる。
あるいは、プログラムは、フレキシブルディスク、CD-ROM(Compact Disc Read Only Memory),MO(Magneto Optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体111に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体111は、いわゆるパッケージソフトウエアとして提供することができる。
プログラムは、上述したようなリムーバブル記録媒体111からコンピュータにインストールする他、ダウンロードサイトから、ディジタル衛星放送用の人工衛星を介して、コンピュータに無線で転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを、通信部108で受信し、内蔵するハードディスク105にインストールすることができる。
ここで、本明細書において、コンピュータに各種の処理を行わせるためのプログラムを記述する処理ステップは、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいは個別に実行される処理(例えば、並列処理あるいはオブジェクトによる処理)も含むものである。
[誤差拡散部51の処理]
図9は、図8のコンピュータで構成される誤差拡散部51の処理を説明するフローチャートである。
誤差拡散部51は、そこに供給される、画素値がRGB成分の画素からなる画像を、対象画像として、その対象画像の画素の中で、まだ、注目画素としていない画素のうちの、ラスタスキャン順で最初の画素を、注目画素とする。
そして、ステップS21において、誤差拡散部51は、注目画素の画素値のRGB成分それぞれのΔΣ変調、すなわち、誤差拡散法による階調変換を並列に行い、階調変換後の画素値のRGB成分を出力して、処理は、ステップS22に進む。
ステップS22では、誤差拡散部51は、注目画素が、ラスタスキャン順で、最後の画素であるかどうかを判定する。
ステップS22において、注目画素が、ラスタスキャン順で、最後の画素でないと判定された場合、誤差拡散部51は、対象画像の画素の中で、まだ、注目画素としていない画素のうちの、ラスタスキャン順で最初の画素を、新たに、注目画素とする。そして、処理は、ステップS22からステップS21に戻り、以下、同様の処理が繰り返される。
また、ステップS22において、注目画素が、ラスタスキャン順で、最後の画素であると判定された場合、処理は、終了する。
[誤差拡散部51の機能的な構成]
図10は、図7の誤差拡散部51の機能的な構成例を示すブロック図である。
図10の構成は、CPU102(図8)がプログラムを実行することにより、いわば機能的に実現される。すなわち、図8のコンピュータは、CPU102がプログラムを実行することにより、実質的に、図10の構成の誤差拡散部51として機能する。
なお、図10の構成の誤差拡散部51は、専用のハードウェアによって構成することも可能である。
図10において、誤差拡散部51は、結合部201、小数部抽出部202、演算部203、小数部抽出部204、フィルタ部205、整数部抽出部206及び207、演算部208、リミッタ209、及び、分離部210から構成される。
なお、以下において、ある値の整数部、及び、小数部とは、それぞれ、図1の誤差拡散部10の量子化部12の出力に相当する、誤差拡散部51での階調変換により得られる量子化値(変調画素値)OUTの小数点を基準とする整数部、及び、小数部を意味する。
結合部201には、注目画素の画素値INの複数の成分としてのRGB成分(R成分INR,G成分ING、及び、B成分INB)が供給される。
結合部201は、注目画素の画素値INのRGB成分を結合し、結合データLとして、小数部抽出部202、及び、整数部抽出部206に供給する。
小数部抽出部202は、結合部201からの結合データLに含まれる注目画素の画素値INのRGB成分それぞれの小数部を抽出し、注目画素の画素値INのRGB成分の小数部が結合された画素値成分小数部結合データPを求め、演算部203に供給する。
演算部203には、小数部抽出部202から、画素値成分小数部結合データPが供給される他、フィルタ部205から、図1のフィルタ14の出力に相当するフィルタ出力のRGB成分が結合されたフィルタ出力成分結合データUが供給される。
演算部203は、小数部抽出部202からの画素値成分小数部結合データPに含まれる注目画素の画素値INのRGB成分の小数部と、フィルタ部205からのフィルタ出力成分結合データUに含まれるフィルタ出力のRGB成分との加算を、成分ごとに(R成分、G成分、及び、B成分のそれぞれごとに)行う。さらに、演算部203は、その加算によって得られる小数加算値のRGB成分が結合された小数加算値成分結合データXを求め、小数部抽出部204、及び、整数部抽出部207に供給する。
小数部抽出部204は、演算部203からの小数加算値成分結合データXに含まれる小数加算値のRGB成分それぞれの小数部を、量子化誤差のRGB成分として抽出し、量子化誤差のRGB成分が結合された量子化誤差成分結合データQを求め、フィルタ部205に供給する。
フィルタ部205は、小数部抽出部204からの量子化誤差成分結合データQに含まれる量子化誤差のRGB成分をフィルタリングした、フィルタ出力のRGB成分が結合されたフィルタ出力成分結合データUを求め、演算部203に供給する。
整数部抽出部206は、結合部201からの結合データLに含まれる注目画素の画素値INのRGB成分それぞれの整数部を抽出し、注目画素の画素値INのRGB成分の整数部が結合された画素値成分整数部結合データIを求め、演算部208に供給する。
整数部抽出部207は、演算部203からの小数加算値成分結合データXに含まれる小数加算値のRGB成分それぞれの整数部を抽出し、小数加算値のRGB成分の整数部が結合された小数加算値成分整数部結合データJを求め、演算部208に供給する。
演算部208は、整数部抽出部206からの画素値成分整数部結合データIに含まれる注目画素の画素値INのRGB成分の整数部と、整数部抽出部207からの小数加算値成分整数部結合データJに含まれる小数加算値のRGB成分の整数部との加算を、成分ごとに行う。そして、演算部208は、その加算によって得られる注目画素の画素値INの整数部と小数加算値の整数部との和である整数加算値のRGB成分が結合された整数加算値成分結合データYを求め、リミッタ209に供給する。
リミッタ209は、演算部208からの整数加算値成分結合データYに含まれる整数加算値のRGB成分を、量子化値の最大値に制限することにより、量子化値のRGB成分とし、量子化値のRGB成分が結合された量子化値成分結合データSを求める。そして、リミッタ209は、量子化値成分結合データSを、分離部210に供給する。
分離部210は、リミッタ209からの量子化値成分結合データSに含まれる量子化値のRGB成分を分離し、階調変換後の画像の画素値である変調画素値OUTのRGB成分(R成分OUTR,G成分OUTG、及び、B成分OUTB)として出力する。
[誤差拡散部51の誤差拡散法による階調変換の処理]
図10の誤差拡散部51では、図7で説明したように、対象画像の画素値のRGB成分の誤差拡散法による階調変換(ΔΣ変調)が、上述の原理に基づき、RGB成分すべてについて並列に行われる。
すなわち、図1で説明した誤差拡散法による階調変換では、量子化部12が出力する量子化値(変調画素値)OUTの小数点を基準とすると、量子化値OUTは、画素値INの整数部と、小数加算値(画素値INの小数部とフィルタ出力との加算値)の整数部との和として求めることができる。
そこで、誤差拡散部51では、演算部208において、整数部抽出部206から供給される画素値成分整数部結合データIに含まれる注目画素の画素値INのRGB成分の整数部と、整数部抽出部207から供給される小数加算値成分整数部結合データJに含まれる小数加算値のRGB成分の整数部との加算を、成分ごとに行う。これにより、演算部208は、その加算によって得られる注目画素の画素値INの整数部と小数加算値の整数部との和である整数加算値のRGB成分が結合された整数加算値成分結合データYを求める。
演算部208で求められる整数加算値成分結合データYは、演算部208の後段のリミッタ209、及び、分離部210で処理され、最終的には、変調画素値OUTのRGB成分(R成分OUTR,G成分OUTG、及び、B成分OUTB)となる。
また、図1で説明した誤差拡散法による階調変換では、量子化部12が出力する量子化値(変調画素値)OUTの小数点を基準とすると、量子化値OUTの量子化誤差Qは、フィルタ出力と画素値INの小数部との和である小数加算値の小数部として求めることができる。
そこで、誤差拡散部51では、小数部抽出部204において、演算部203から供給される小数加算値成分結合データXに含まれる小数加算値のRGB成分それぞれの小数部を、量子化誤差のRGB成分として抽出し、量子化誤差のRGB成分が結合された量子化誤差成分結合データQを求める。
誤差拡散部51では、以上のようにして、最終的には変調画素値OUTとなる整数加算値成分結合データYと、量子化誤差成分結合データQとを求めるために、結合データL(に含まれる注目画素の画素値INのRGB成分それぞれ)を、整数部抽出部206と小数部抽出部202とで、整数部と小数部に分けるとともに、小数加算値成分結合データ(に含まれる小数加算値のRGB成分それぞれ)を、整数部抽出部207と小数部抽出部204とで、整数部と小数部に分けて、処理を行う。
すなわち、図11は、図10の誤差拡散部51が図9のステップS21で行う誤差拡散法による階調変換の処理を説明するフローチャートである。
結合部201は、ステップS101において、そこに供給される注目画素の画素値INのRGB成分を結合し、結合データLとして、小数部抽出部202、及び、整数部抽出部206に供給する。
小数部抽出部202は、ステップS102において、結合部201からの結合データLに含まれる注目画素の画素値INのRGB成分それぞれの小数部を抽出し、その画素値INのRGB成分の小数部が結合された画素値成分小数部結合データPを求める。画素値成分小数部結合データPは、小数部抽出部202から演算部203に供給される。
また、演算部203には、後述するステップS105で、フィルタ部205が前回求めた(前回の注目画素の階調変換の処理が行われたときに求められた)フィルタ出力成分結合データUが供給される。
演算部203は、ステップS103において、小数部抽出部202からの画素値成分小数部結合データPに含まれる注目画素の画素値INのRGB成分の小数部と、フィルタ部205からのフィルタ出力成分結合データUに含まれるフィルタ出力のRGB成分との加算を、成分ごとに行う。そして、演算部203は、その加算によって得られる小数加算値のRGB成分が結合された小数加算値成分結合データXを求め、小数部抽出部204、及び、整数部抽出部207に供給する。
小数部抽出部204は、ステップS104において、演算部203からの小数加算値成分結合データに含まれる小数加算値のRGB成分それぞれの小数部を、量子化誤差のRGB成分として抽出し、量子化誤差のRGB成分が結合された量子化誤差成分結合データQを求める。量子化誤差成分結合データQは、小数部抽出部204からフィルタ部205に供給される。
フィルタ部205は、ステップS105において、小数部抽出部204からの量子化誤差成分結合データQに含まれる量子化誤差のRGB成分を成分ごとにフィルタリングした、フィルタ出力のRGB成分が結合されたフィルタ出力成分結合データUを求め、演算部203に供給する。
このフィルタ出力成分結合データUは、次の注目画素の階調変換の処理が行われるときに、演算部203において、ステップS103で、小数部抽出部202から供給される画素値成分小数部結合データPと加算される。
一方、整数部抽出部206は、ステップS106において、結合部201からの結合データLに含まれる注目画素の画素値INのRGB成分それぞれの整数部を抽出し、注目画素の画素値INのRGB成分の整数部が結合された画素値成分整数部結合データIを求める。画素値成分整数部結合データIは、整数部抽出部206から演算部208に供給される。
また、整数部抽出部207は、ステップS107において、演算部203からの小数加算値成分結合データXに含まれる小数加算値のRGB成分それぞれの整数部を抽出し、小数加算値のRGB成分の整数部が結合された小数加算値成分整数部結合データJを求める。小数加算値成分整数部結合データJは、整数部抽出部207から演算部208に供給される。
演算部208は、ステップS108において、整数部抽出部206からの画素値成分整数部結合データIに含まれる注目画素の画素値INのRGB成分の整数部と、整数部抽出部207からの小数加算値成分整数部結合データJに含まれる小数加算値のRGB成分の整数部との加算を、成分ごとに行う。そして、演算部208は、その加算によって得られる注目画素の画素値INの整数部と小数加算値の整数部との和である整数加算値のRGB成分が結合された整数加算値成分結合データYを求め、リミッタ209に供給する。
リミッタ209は、ステップS109において、演算部208からの整数加算値成分結合データYに含まれる整数加算値のRGB成分を、量子化値の最大値に制限した、量子化値のRGB成分が結合された量子化値成分結合データSを求め、分離部210に供給する。
分離部210は、ステップS110において、リミッタ209からの量子化値成分結合データSに含まれる量子化値のRGB成分を分離し、変調画素値OUTのRGB成分として出力して、処理は、リターンする。
[結合部201ないし分離部210それぞれの処理]
次に、対象画像の画素値INのRGB成分それぞれがmビットであり、階調変換後の画像(変調画像)の変調画素値OUTのRGB成分それぞれがn(<m)ビットであるとして、誤差拡散部51を構成する結合部201ないし分離部210それぞれの処理について説明する。
図12は、図10の結合部201で扱われるデータを説明する図である。
結合部201は、図12に示すように、画素値INのmビットのRGB成分INR,ING、及びINBを結合し、少なくとも、3m+2ビット以上のビット長の結合データLとする。
図12の結合データLでは、画素値INのmビットのR成分INR、mビットのG成分ING、及び、mビットのB成分INBが、上位ビットから、その順で並んでいる。さらに、図12の結合データLは、各成分どうしの間に、1ビットのダミービットとしての、例えば0を挟む形の3m+2ビットのデータになっている。
ここで、図12の結合データLでは、mビットのR成分INR、mビットのG成分ING、及び、mビットのB成分INBの並びのうちの、R成分INRとG成分INGとの間に、1ビットのダミービット0が配置され、G成分INGとB成分INBとの間に、1ビットのダミービット0が配置されている。
但し、R成分INRとG成分INGとの間に配置するダミービットは、2ビット以上とすることができる。G成分INGとB成分INBとの間に配置するダミービットも同様である。
また、結合データLにおいては、その上位ビット側に配置されているmビットのR成分INRの上位ビット側や、結合データLの下位ビット側に配置されているmビットのB成分INBの下位ビット側に、さらに、1ビット以上のダミービットを配置することが可能である。
なお、以下では、データの最下位ビットからNビット目のビットを、第Nビットという。また、図12以降の図においては、データの小数点の位置を、逆三角形(▽)で表す。
例えば、図12の結合データLにおいて、第1ビットの右にある逆三角形は、結合データLに含まれる画素値INのB成分INBの小数点の位置を表す。また、第m+1ビットと第m+2ビットとの間にある逆三角形は、結合データLに含まれる画素値INのG成分INGの小数点の位置を表す。さらに、第2m+2ビットと第2m+3ビットとの間にある逆三角形は、結合データLに含まれる画素値INのR成分INRの小数点の位置を表す。
図13は、図10の小数部抽出部202、演算部203、小数部抽出部204、及び、フィルタ部205で扱われるデータを説明する図である。
すなわち、図13Aは、小数部抽出部202で求められる画素値成分小数部結合データPを示している。
上述したように、対象画像の画素値INのRGB成分INR,ING、及びINBそれぞれがmビットであり、階調変換後の画像(変調画像)の変調画素値OUTのRGB成分OUTR,OUTG、及びOUTBそれぞれがn(<m)ビットであるとする。この場合、nビットの量子化値、つまり、変調画素値OUTのnビットのR成分OUTR、G成分OUTG、及び、B成分OUTBの小数点を基準とすると、画素値のmビットのR成分INR、G成分ING、及び、B成分INBの整数部は、上位nビットである。また、小数部は、下位m-nビットである。
そこで、小数部抽出部202は、図12の結合データLを、nビットだけ左シフトする(上位ビット側にシフトする)。そして、小数部抽出部202は、その左シフト後の結合データLに含まれる画素値のRGB成分INR,ING、及びINBそれぞれの下位m-nビットである小数部PR,PG、及びPB以外のビットを0にする。
小数部抽出部202は、以上のようにして、量子化値の小数点を基準として、結合データLに含まれる画素値INのRGB成分INR,ING、及びINBそれぞれの小数部PR,PG、及びPBを抽出することで、画素値INのRGB成分INR,ING、及びINBの小数部PR,PG、及びPBが結合された、3m+2ビットの画素値成分小数部結合データP(図13A)を求める。
なお、図13Aの画素値成分小数部結合データPに含まれる画素値INのR成分INRの小数部PRの小数点の位置は、第3m+2ビットの左側である。また、画素値INのG成分INGの小数部PGの小数点の位置は、第2m+2ビットと第2m+1ビットとの間であり、画素値INのB成分INBの小数部PBの小数点の位置は、第m+1ビットと第mビットとの間である。
図13Bは、フィルタ部205で求められるフィルタ出力成分結合データUを示している。
図13Bにおいて、フィルタ出力成分結合データUは、フィルタ出力のmビットのR成分(画素値INのR成分INRの階調変換後の変調画素値(量子化値)OUTの量子化誤差QRをフィルタリングして得られる値)UR、mビットのG成分UG、及び、mビットのB成分UBが、上位ビットから、その順で並び、かつ、各成分どうしの間に、1ビットのダミービットとしての、例えば0を挟む形の3m+2ビットのデータになっている。
フィルタ部205は、小数部抽出部204で求められる後述する図13Dの量子化誤差成分結合データQに含まれる量子化誤差のR成分(画素値INのR成分INRの階調変換後の変調画素値(量子化値)OUTの量子化誤差)QRを、図1のフィルタ14等の、ΔΣ変調のノイズシェーピング用のフィルタでフィルタリングしたmビットの値を、フィルタ出力のmビットのR成分URとして求める。
さらに、フィルタ部205は、小数部抽出部204で求められる量子化誤差成分結合データQ(図13D)に含まれる量子化誤差のG成分QGをフィルタリングしたmビットの値を、フィルタ出力のmビットのG成分UGとして求める。
また、フィルタ部205は、小数部抽出部204で求められる量子化誤差成分結合データQ(図13D)に含まれる量子化誤差のB成分QBをフィルタリングしたmビットの値を、フィルタ出力のmビットのB成分UBとして求める。
そして、フィルタ部205は、以上のようにして求められたフィルタ出力のmビットのR成分UR、G成分UG、及び、B成分UBが結合されたフィルタ出力成分結合データU(図13B)を、演算部203(図10)に供給する。
なお、図13Bのフィルタ出力成分結合データUに含まれるフィルタ出力のR成分UR、G成分UG、及び、B成分UBそれぞれの小数点の位置は、図13Aの画素値成分小数部結合データPに含まれる画素値INのR成分INR,G成分ING、及びB成分INBの小数部PR,PG、及びPBの、同一の成分の小数点の位置に一致する。
すなわち、図13Bのフィルタ出力のR成分URの小数点の位置は、第3m+2ビットの左側であり、フィルタ出力のG成分UGの小数点の位置は、第2m+2ビットと第2m+1ビットとの間である。また、フィルタ出力のB成分UBの小数点の位置は、第m+1ビットと第mビットとの間である。
図13Cは、演算部203で求められる小数加算値成分結合データXを示している。
図13Cにおいて、小数加算値成分結合データXは、小数加算値のm+1ビットのR成分(画素値INのR成分INRの小数部PRと、フィルタ出力のR成分URとの和)XR、m+1ビットのG成分XG、及び、m+1ビットのB成分XBが、上位ビットから、その順で隙間なく並んだ3m+3ビットのデータになっている。
演算部203は、小数部抽出部202から供給される図13Aの画素値成分小数部結合データPに含まれる画素値INのRGB成分の小数部PR,PG、及びPBと、フィルタ部205から供給される図13Bのフィルタ出力成分結合データUに含まれるフィルタ出力のRGB成分UR,UG、及びUBとの加算を、成分ごとに行い、その加算によって得られる小数加算値のRGB成分XR,XG、及びXBが結合された小数加算値成分結合データXを求める。
ここで、上述したように、図13Aの画素値成分小数部結合データPと、図13Bのフィルタ出力成分結合データUとについては、成分ごとに、小数点の位置が一致する。
したがって、演算部203では、図13Aの画素値成分小数部結合データPと、図13Bのフィルタ出力成分結合データUとを、そのまま加算することで、図13Cの小数加算値成分結合データXを求めることができる。
そして、その結果、図13Cの小数加算値成分結合データXに含まれる小数加算値のRGB成分XR,XG、及びXBそれぞれの小数点の位置は、図13Aの画素値成分小数部結合データP、及び、図13Bのフィルタ出力成分結合データUの同一の成分の小数点の位置に一致する。
すなわち、図13Cの小数加算値成分結合データXに含まれる小数加算値のR成分XRの小数点の位置は、第3m+2ビットの左側(第3m+3ビットと第3m+2ビットとの間)である。また、小数加算値のG成分XGの小数点の位置は、第2m+2ビットと第2m+1ビットとの間であり、小数加算値のB成分XBの小数点の位置は、第m+1ビットと第mビットとの間である。
そして、図13Cの小数加算値成分結合データXに含まれる小数加算値のm+1ビットのR成分XRにだけ注目すると、そのm+1ビットのR成分XRにおいては、最上位ビットだけが整数部になっており、残りのmビットが小数部になっている。小数加算値のG成分XG、及びB成分XBも同様である。
なお、上述したように、図13Aの画素値成分小数部結合データPに含まれる画素値INのR成分の小数部PRは、m-nビットであり、図13Bのフィルタ出力成分結合データUに含まれるフィルタ出力のR成分URは、mビットである。したがって、画素値INのR成分の小数部PRと、フィルタ出力のR成分URとの加算値(和)である、小数加算値のR成分XRは、最大で、m+1ビットの値になる。このため、図13Cにおいて、小数加算値のR成分XRは、m+1ビットのデータになっている。小数加算値のG成分XG、及びB成分XBも同様である。
図13Dは、小数部抽出部204で求められる量子化誤差成分結合データQを示している。
図13Dにおいて、量子化誤差成分結合データQでは、量子化誤差のmビットのR成分(画素値INのR成分INRの変調画素値OUTRの量子化誤差)QR、mビットのG成分QG、及び、mビットのB成分QBが、上位ビットから、その順で並んでいる。さらに、量子化誤差成分結合データQは、各成分どうしの間に、1ビットのダミービットとしての、例えば0を挟む形の3m+2ビットのデータになっている。
小数部抽出部204は、上述したように、演算部203から供給される図13Cの小数加算値成分結合データXに含まれる小数加算値のRGB成分XR,XG、及びXBそれぞれの小数部を、量子化誤差のRGB成分QR,QG、及びQBとして抽出することで、量子化誤差のRGB成分QR,QG、及びQBが結合された量子化誤差成分結合データQを求める。
ここで、図13Cの小数加算値成分結合データXに含まれる小数加算値のm+1ビットのRGB成分XR,XG、及びXBそれぞれでは、図13Cで説明したように、最上位ビットだけが整数部になっており、残りのmビットが小数部になっている。
そこで、小数部抽出部204は、図13Cの小数加算値成分結合データXに含まれる小数加算値のm+1ビットのRGB成分XR,XG、及びXBそれぞれの整数部である最上位ビットを0とすることで、小数加算値のRGB成分XR,XG、及びXBそれぞれの小数部を抽出する。そして、小数部抽出部204は、小数加算値のm+1ビットのRGB成分XR,XG、及びXBそれぞれの整数部である最上位ビットを0とした3m+3ビットの小数加算値成分結合データXの下位3m+2ビットを、3m+2ビットの量子化誤差成分結合データQとして抽出する。
したがって、量子化誤差成分結合データQに含まれる量子化誤差のRGB成分QR,QG、及びQBそれぞれの小数点の位置は、図13Aの画素値成分小数部結合データP、図13Bのフィルタ出力成分結合データU、及び図13Cの小数加算値成分結合データXの同一の成分の小数点の位置に一致する。
すなわち、図13Dの量子化誤差成分結合データQに含まれる量子化誤差のR成分QRの小数点の位置は、第3m+2ビットの左側であり、量子化誤差のG成分QGの小数点の位置は、第2m+2ビットと第2m+1ビットとの間である。また、量子化誤差のB成分QBの小数点の位置は、第m+1ビットと第mビットとの間である。
図14は、図10の整数部抽出部206及び207、並びに、演算部208で扱われるデータを説明する図である。
すなわち、図14Aは、整数部抽出部206で求められる画素値成分整数部結合データIを示している。
上述したように、対象画像の画素値INのRGB成分INR,ING、及びINBそれぞれがmビットであり、階調変換後の画像(変調画像)の変調画素値OUTのRGB成分OUTR,OUTG、及びOUTBそれぞれがn(<m)ビットである。したがって、nビットの量子化値、つまり、変調画素値OUTのnビットのR成分OUTR、G成分OUTG、及び、B成分OUTBの小数点を基準とすると、画素値のmビットのR成分INR、G成分ING、及び、B成分INBの整数部は、上位nビットである。
そこで、整数部抽出部206は、図12の3m+2ビットの結合データLに含まれる画素値のRGB成分INR,ING、及びINBそれぞれの上位nビットである整数部IR,IG、及びIB以外のビットを0にする。
さらに、整数部抽出部206は、RGB成分INR,ING、及びINBそれぞれの整数部IR,IG、及びIB以外のビットを0にした結合データLの下位2m+n+2ビットを抽出することで、画素値INのRGB成分INR,ING、及びINBの整数部IR,IG、及びIBが結合された、2m+n+2ビットの画素値成分整数部結合データI(図14A)を求める。
なお、図14Aの画素値成分整数部結合データIに含まれる画素値のR成分INRの整数部IRの小数点の位置は、第2m+3ビットと第2m+2ビットとの間である。また、画素値のG成分INGの整数部IGの小数点の位置は、第m+2ビットと第m+1ビットとの間であり、画素値のB成分INBの整数部IBの小数点の位置は、第1ビットの右側である。
図14Bは、整数部抽出部207で求められる小数加算値成分整数部結合データJを示している。
上述したように、整数部抽出部207は、演算部203から供給される小数加算値成分結合データXに含まれる小数加算値のRGB成分XR,XG、及びXBそれぞれの整数部JR,JG、及びJBを抽出することで、小数加算値のRGB成分XR,XG、及びXBの整数部JR,JG、及びJBが結合された小数加算値成分整数部結合データJを求める。
小数加算値成分結合データXは、図13Cで説明したように、小数加算値のm+1ビットのR成分XR、m+1ビットのG成分XG、及び、m+1ビットのB成分XBが、上位ビットから、その順で隙間なく並んでいる3m+3ビットのデータである。さらに、図13Cで説明したように、小数加算値成分結合データXに含まれる小数加算値のm+1ビットのRGB成分XR,XG、及びXBそれぞれにおいては、最上位ビットだけが整数部になっており、残りのmビットが小数部になっている。
そこで、整数部抽出部207は、図13Cの3m+3ビットの小数加算値成分結合データXを、mビットだけ右シフトする。さらに、整数部抽出部207は、その右シフト後の小数加算値成分結合データXに含まれる小数加算値のRGB成分XR,XG、及びXBそれぞれの最上位ビットである整数部JR,JG、及びJB以外のビットを0にする。
そして、整数部抽出部207は、小数加算値のRGB成分XR,XG、及びXBそれぞれの整数部JR,JG、及びJB以外のビットを0にした小数加算値成分結合データXの下位2m+n+2ビットを抽出することで、小数加算値のRGB成分XR,XG、及びXBそれぞれの整数部JR,JG、及びJBが結合された、2m+n+2ビットの小数加算値成分整数部結合データJ(図14B)を求める。
なお、図14Bの小数加算値成分整数部結合データJに含まれる小数加算値のRGB成分XR,XG、及びXBそれぞれの小数点の位置は、図14Aの画素値成分整数部結合データIに含まれる整数部IR,IG、及びIBの、同一の成分の小数点の位置に一致する。
すなわち、図14Bの小数加算値成分整数部結合データJに含まれる整数部IRの小数点の位置は、第2m+3ビットと第2m+2ビットとの間であり、整数部IGの小数点の位置は、第m+2ビットと第m+1ビットとの間である。また、整数部IBの小数点の位置は、第1ビットの右側である。
図14Cは、演算部208で求められる整数加算値成分結合データYを示している。
演算部208は、整数部抽出部206から供給される図14Aの画素値成分整数部結合データIに含まれる画素値INのRGB成分の整数部IR,IG、及びIBと、整数部抽出部207から供給される図14Bの小数加算値成分整数部結合データJに含まれる小数加算値のRGB成分XR,XG、及びXBの整数部JR,JG、及びJBとの加算を、成分ごとに行うことで、その加算によって得られる整数加算値のRGB成分YR,YG、及びYBが結合された整数加算値成分結合データYを求める。
ここで、上述したように、図14Aの画素値成分整数部結合データIと、図14Bの小数加算値成分整数部結合データJとについては、成分ごとに、小数点の位置が一致する。
したがって、演算部208では、図14Aの画素値成分整数部結合データIと、図14Bの小数加算値成分整数部結合データJとを、そのまま加算することで、図14Cの整数加算値成分結合データYを求めることができる。
そして、その結果、図14Cの整数加算値成分結合データYに含まれる整数加算値のRGB成分YR,YG、及びYBそれぞれの小数点の位置は、図14Aの画素値成分整数部結合データI、及び、図14Bの小数加算値成分整数部結合データJの同一の成分の小数点の位置に一致する。
すなわち、図14Cの整数加算値成分結合データYに含まれる整数加算値のR成分YRの小数点の位置は、第2m+3ビットと第2m+2ビットとの間であり、整数加算値のG成分YGの小数点の位置は、第m+2ビットと第m+1ビットとの間である。また、整数加算値のB成分YBの小数点の位置は、第1ビットの右側である。
なお、上述したように、図14Aの画素値成分整数部結合データIに含まれる画素値INのR成分の整数部IRは、nビットであり、図14Bの小数加算値成分整数部結合データJに含まれる小数加算値のR成分XRの整数部JRは、1ビットである。したがって、画素値INのR成分の整数部IRと、小数加算値のR成分XRの整数部JRとの加算値(和)である、整数加算値のR成分YRは、最大で、n+1ビットの値になる。このため、図14Cにおいて、整数加算値のR成分XRは、n+1ビットのデータになっている。整数加算値のG成分XG、及びB成分XBも同様である。
そして、図14Cにおいて、整数加算値成分結合データYは、整数加算値のn+1ビットのR成分YR、n+1ビットのG成分YG、及び、n+1ビットのB成分YBが、上位ビットから、その順で並び、かつ、各成分どうしの間に、m-nビットの0を挟む形の2m+n+3ビットのデータになっている。
図15は、図10のリミッタ209、及び、分離部210で扱われるデータを説明する図である。
リミッタ209は、上述したように、演算部208から供給される図14Cの整数加算値成分結合データYに含まれる整数加算値のn+1ビットのRGB成分YR,YG、及びYBそれぞれを、nビットの量子化値(変調画素値)の最大値に制限する制限処理を行うことにより、量子化値のnビットのRGB成分SR,SG、及びSBとし、量子化値のRGB成分SR,SG、及びSBが結合された量子化値成分結合データSを求める。
すなわち、図14Cの整数加算値成分結合データYに含まれる整数加算値のn+1ビットのR成分YRにだけ注目すると、リミッタ209は、そのn+1ビットのR成分YRの最上位ビットが1であるかどうかによって、R成分YRが、nビットの量子化値の最大値を超えているかどうかを判定する。
そして、n+1ビットのR成分YRの最上位ビットが1であり、R成分YRが、nビットの量子化値の最大値を超えている場合には、リミッタ209は、n+1ビットのR成分YRを、nビットの量子化値の最大値(2n-1)、すなわち、最上位ビットが0で、残りの下位nビットがすべて1のn+1ビットに変更(置換)し、そのn+1ビットの下位nビットを、量子化値のnビットのR成分SRとする。
一方、n+1ビットのR成分YRの最上位ビットが0であり、R成分YRが、nビットの量子化値の最大値を超えていない場合には、リミッタ209は、n+1ビットのR成分YRの下位nビットを、そのまま、量子化値のnビットのR成分SRとする。
量子化値のG成分SG、及びB成分SBも、同様にして求められる。
そして、リミッタ209は、以上の制限処理後の2m+n+3ビット(図14C)の整数加算値成分結合データYの下位2m+n+2ビットを抽出し、図15に示すように、2m+n+2ビットの量子化値成分結合データSとする。
量子化値成分結合データSは、リミッタ209から分離部210に供給される。分離部210は、図15に示すように、量子化値成分結合データSに含まれる量子化値のnビットのRGB成分SR,SG、及びSBそれぞれを分離し、変調画素値OUTのnビットのRGB成分OUTR,OUTG、及びOUTBとする。
[階調変換の処理の具体例]
次に、図10の誤差拡散部51を機能的に実現する図8のCPU102が階調変換において行う処理を、例えば、8(=m)ビット画像である対象画像を、6(=n)ビット画像に階調変換する場合を例に説明する。
なお、CPU102は、例えば、32ビットのCPUであり、32ビットのレジスタを内蔵することとする。CPU102が内蔵するレジスタを、以下、内蔵レジスタともいう。
図16は、結合部201(図10)として機能するCPU102(図8)の処理を説明する図である。
結合部201として機能するCPU102は、図16に示すように、対象画像の画素値INの8(=m)ビットのRGB成分INR,ING、及びINBを結合し、3m+2ビット以上のビット長である32ビットの結合データL、すなわち、内蔵レジスタと同一のビット数の結合データLを生成して、内蔵レジスタに格納する。
図16の結合データLでは、画素値INの8ビットのR成分INR、8ビットのG成分ING、及び、8ビットのB成分INBが、上位ビットから、その順で並んでいる。さらに、結合データLは、各成分どうしの間に、3ビットのダミービットとしての0を挟み、さらに、最上位ビットと最下位ビットとして、1ビットのダミービットが付加された32ビットのデータになっている。
図17は、小数部抽出部202(図10)として機能するCPU102(図8)の処理を説明する図である。
図17Aは、結合部201から小数部抽出部202に供給される結合データLを示している。
図17Aの結合データLは、図16に示したのと同一のデータである。但し、図17Aにおいては、画素値INの8ビットのRGB成分INR,ING、及びINBを、それぞれ、RGB成分LR,LG、及びLBと表してある。
小数部抽出部202は、上述したように、結合部201からの結合データLから、画素値INのRGB成分LR,LG、及びLBの小数部PR,PG、及びPBが結合された画素値成分小数部結合データPを求める。
そのため、小数部抽出部202として機能するCPU102は、図17Aの結合データLを、6(=n)ビットだけ左シフトする。
図17Bは、図17Aの結合データLを、6ビットだけ左シフトして得られるデータを示している。
その後、小数部抽出部202は、左シフト後の結合データL(図17B)に含まれる画素値のRGB成分LR,LG、及びLBそれぞれの下位2(=m-n)ビットである小数部PR,PG、及びPB以外のビットを0にする。
そのため、小数部抽出部202として機能するCPU102は、左シフト後の結合データL(図17B)に、2ビットの小数部PR,PG、及びPBを抽出する所定のマスクをかける。
図17Cは、左シフト後の結合データL(図17B)にかけられる所定のマスクとしての32ビットのビット列(以下、マスクデータともいう)を示している。
図17Cの32ビットのマスクデータは、600C0180H(Hは、その直前の値が16進数であることを表す)になっている。
小数部抽出部202として機能するCPU102は、図17Bの左シフト後の結合データLと、図17Cのマスクデータとの論理積(AND)を演算することで、画素値INのRGB成分LR,LG、及びLBの2ビットの小数部PR,PG、及びPBが結合された32ビットの画素値成分小数部結合データPを求め、内蔵レジスタに格納する。
図17Dは、以上のようにして求められる画素値成分小数部結合データPを示している。
図17Dにおいて、32ビットの画素値成分小数部結合データPの第1ビットないし第7ビットには、0が配置されている。そして、第9ビットと第10ビットとの間を小数点として、画素値INのB成分LBの2ビットの小数部PBが、第8ビット及び第9ビットに配置されている。さらに、第10ビットないし第18ビットには、0が配置されている。そして、第20ビットと第21ビットとの間を小数点として、画素値INのG成分LGの2ビットの小数部PGが、第19ビット及び第20ビットに配置されている。また、第21ビットないし第29ビットには、0が配置されている。そして、第31ビットと第32ビットとの間を小数点として、画素値INのR成分LRの2ビットの小数部PRが、第30ビット及び第31ビットに配置されている。第32ビット(最上位ビット)には、0が配置されている。
次に、図18ないし図20を参照して、フィルタ部205(図10)として機能するCPU102(図8)の処理を説明する。
フィルタ部205は、上述したように、小数部抽出部204から供給される量子化誤差成分結合データQを用いて、量子化誤差成分結合データQに含まれる量子化誤差のRGB成分QR,QG、及びQBそれぞれをフィルタリングした、図1のフィルタ14の出力に相当するフィルタ出力のRGB成分UR,UG、及びUBが結合されたフィルタ出力成分結合データUを求める。
いま、フィルタ14の出力が、上述した式(4)によって表されることとすると、フィルタ出力のR成分URは、式(5)を計算することにより求めることができる。
UR=QR(1,1)/16 + QR(2,1)×5/16 + QR(3,1)×3/16 + QR(1,2)×7/16
・・・(5)
なお、式(5)において、QR(x,y)は、注目画素を中心とする、横×縦が3×3画素のうちの、左からx番目で、上からy番目の画素の量子化誤差のR成分を表す。
フィルタ出力のG成分UG、及びB成分UBも、フィルタ出力のR成分URと同様にして求めることができる。
すなわち、いま、説明を簡単にするために、フィルタ出力のRGB成分UR,UG、及びUBを、すべて、Uと表すとともに、量子化誤差のRGB成分QR,QG、及びQBを、すべて、Qと表すこととすると、フィルタ出力Uは、式(6)を計算することにより求めることができる。
U=Q(1,1)/16 + Q(2,1)×5/16 + Q(3,1)×3/16 + Q(1,2)×7/16
・・・(6)
図18は、式(6)右辺の第1項Q(1,1)/16の求め方を説明する図である。
図18Aは、図10において、小数部抽出部204からフィルタ部205に供給される量子化誤差成分結合データQを示している。
図18Aにおいて、量子化誤差成分結合データQは、32ビットのデータであり、量子化誤差の9ビットのRGB成分QR,QG、及びQBが、その順で並んでいる。
すなわち、量子化誤差成分結合データQの第1ビットないし第9ビットには、第9ビットと第10ビットとの間を小数点として、量子化誤差の9ビットのB成分QBが配置され、第10ビット及び第11ビットには、0が配置されている。さらに、第12ビットないし第20ビットには、第20ビットと第21ビットとの間を小数点として、量子化誤差の9ビットのG成分QGが配置され、第21ビット及び第22ビットには、0が配置されている。そして、第23ビットないし第31ビットには、第31ビットと第32ビットとの間を小数点として、量子化誤差の9ビットのR成分QRが配置され、第32ビットには、0が配置されている。
フィルタ部205として機能するCPU102は、式(6)右辺の第1項Q(1,1)/16を求めるために、図18Aの量子化誤差成分結合データQを、4(=-log2(1/16))ビットだけ右シフトする。
図18Bは、図18Aの量子化誤差成分結合データQを、4ビットだけ右シフトして得られるデータを示している。
その後、フィルタ部205は、右シフト後の量子化誤差成分結合データQ(図18B)に含まれる量子化誤差のRGB成分QR,QG、及びQBそれぞれの上位5(=9-4)ビット以外のビットを0にすることで、式(6)右辺の第1項Q(1,1)/16を求める。
すなわち、フィルタ部205として機能するCPU102は、右シフト後の量子化誤差成分結合データQ(図18B)に、量子化誤差のRGB成分QR,QG、及びQBの上位5ビットを抽出する所定のマスクをかける。
図18Cは、右シフト後の量子化誤差成分結合データQ(図18B)にかけられる所定のマスクとしての32ビットのマスクデータを示している。
図18Cの32ビットのマスクデータは、7C0F81FHになっている。
フィルタ部205として機能するCPU102は、図18Bの右シフト後の量子化誤差成分結合データQと、図18Cのマスクデータとの論理積を演算することで、式(6)右辺の第1項Q(1,1)/16としての32ビットのデータを求める。
図18Dは、以上のようにして求められる、式(6)右辺の第1項Q(1,1)/16としての32ビットのデータを示している。
ここで、式(6)右辺の第2項Q(2,1)×5/16は、Q(2,1)/4とQ(2,1)/16との和である。
また、式(6)右辺の第3項 Q(3,1)×3/16は、Q(3,1)/8とQ(3,1)/16との和である。
さらに、式(6)右辺の第4項Q(1,2)×7/16は、Q(1,2)/4と、Q(1,2)/8と、Q(1,2)/16との和である。
以上の、Q(2,1)/4及びQ(2,1)/16、Q(3,1)/8及びQ(3,1)/16、並びに、Q(1,2)/4、Q(1,2)/8、及びQ(1,2)/16は、いずれも、式(6)右辺の第1項Q(1,1)/16と同様に、図18Aの量子化誤差成分結合データQのシフトと、マスクデータとの論理積とによって求めることができる。
図19は、図18Aの量子化誤差成分結合データQのシフトと、マスクデータとの論理積とによって求められるQ(1,1)/16,Q(2,1)/4,Q(2,1)/16,Q(3,1)/8,Q(3,1)/16,Q(1,2)/4,Q(1,2)/8、及びQ(1,2)/16それぞれとしての32ビットのデータを示している。
すなわち、図19AはQ(1,1)/16を、図19BはQ(2,1)/4を、図19CはQ(2,1)/16を、図19DはQ(3,1)/8を、図19EはQ(3,1)/16を、図19FはQ(1,2)/4を、図19GはQ(1,2)/8を、図19HはQ(1,2)/16を、それぞれ示している。
フィルタ部205として機能するCPU102は、Q(1,1)/16,Q(2,1)/4,Q(2,1)/16,Q(3,1)/8,Q(3,1)/16,Q(1,2)/4,Q(1,2)/8、及びQ(1,2)/16それぞれとしての32ビットのデータを加算することにより、フィルタ出力のRGB成分UR,UG、及びUBが結合されたフィルタ出力成分結合データUを求める。
図20は、以上のようにして求められる32ビットのフィルタ出力成分結合データUを示している。
図20において、フィルタ出力成分結合データUは、図18Aの量子化誤差成分結合データQと同様の32ビットのデータになっている。
すなわち、フィルタ出力成分結合データUの第1ビットないし第9ビットには、第9ビットと第10ビットとの間を小数点として、フィルタ出力の9ビットのB成分UBが配置され、第10ビット及び第11ビットには、0が配置されている。さらに、第12ビットないし第20ビットには、第20ビットと第21ビットとの間を小数点として、フィルタ出力の9ビットのG成分UGが配置され、第21ビット及び第22ビットには、0が配置されている。そして、第23ビットないし第31ビットには、第31ビットと第32ビットとの間を小数点として、フィルタ出力の9ビットのR成分URが配置され、第32ビットには、0が配置されている。
なお、図18ないし図20では、CPU102が、乗算を行うハードウェアである乗算器を内蔵していないことを前提として、式(6)の演算に必要な乗算を、加算によって行うこととしたが、CPU102が、乗算器を内蔵する場合には、式(6)の演算に必要な乗算は、乗算器を用いて行うことができる。
次に、図21を参照して、演算部203(図10)として機能するCPU102(図8)の処理を説明する。
演算部203として機能するCPU102は、小数部抽出部202から供給される画素値成分小数部結合データPと、フィルタ部205から供給されるフィルタ出力成分結合データUとを加算して、小数加算値のRGB成分XR,XG、及びXBが結合された小数加算値成分結合データXを求める。
すなわち、図21Aは、画素値成分小数部結合データPを示している。図21Aの画素値成分小数部結合データPは、図17Dに示したものと同一である。
図21Bは、フィルタ出力成分結合データUを示している。図21Bのフィルタ出力成分結合データUは、図20に示したものと同一である。
図21Cは、図21Aの画素値成分小数部結合データPと、図21Bのフィルタ出力成分結合データUとを加算して得られる小数加算値成分結合データXを示している。
図17D、及び、図20で説明したことから、図17Dと同一の図21Aの画素値成分小数部結合データPに含まれる画素値INのRGB成分LR,LG、及びLBの2ビットの小数部PR,PG、及びPBの小数点の位置と、図20と同一の図21Bのフィルタ出力成分結合データUに含まれるフィルタ出力の9ビットのRGB成分UR,UG、及びUBの小数点の位置とは、成分ごとに一致する。
したがって、演算部203として機能するCPU102では、画素値成分小数部結合データPと、フィルタ出力成分結合データUとを加算することで、画素値INのRGB成分LR,LG、及びLBの小数部PR,PG、及びPBと、フィルタ出力のRGB成分UR,UG、及びUBとを、成分ごとに加算して得られる小数加算値のRGB成分XR,XG、及びXBが結合された小数加算値成分結合データXを求めることができる。
なお、画素値成分小数部結合データPに含まれる画素値INのRGB成分LR,LG、及びLBの小数部PR,PG、及びPBは、それぞれ2ビットであり、フィルタ出力成分結合データUに含まれるフィルタ出力のRGB成分UR,UG、及びUBは、それぞれ9ビットである。したがって、画素値成分小数部結合データPと、フィルタ出力成分結合データUとを加算することで得られる小数加算値成分結合データXに含まれる小数加算値のRGB成分XR,XG、及びXBは、それぞれ、最大で10ビットとなる。
さらに、小数加算値成分結合データXの小数点の位置は、画素値成分小数部結合データP、及び、フィルタ出力成分結合データUの小数点の位置に一致する。
このため、図21Cにおいて、小数加算値成分結合データXの第1ないし第10ビットには、第9ビットと第10ビットとの間を小数点として、小数加算値の10ビットのB成分XBが配置され、第11ビットには、0が配置されている。さらに、第12ビットないし第21ビットには、第20ビットと第21ビットとの間を小数点として、小数加算値の10ビットのG成分XGが配置され、第22ビットには、0が配置されている。そして、第23ビットないし第32ビットには、第31ビットと第32ビットとの間を小数点として、小数加算値の10ビットのR成分XRが配置されている。
また、小数加算値の10ビットのR成分XRにおいて、その最上位ビットが、整数部であり、残りの9ビットは、小数部である。小数加算値のG成分XG、及びB成分XBについても、同様である。
図22を参照して、整数部抽出部207(図10)として機能するCPU102(図8)の処理を説明する。
整数部抽出部207は、演算部203から供給される小数加算値成分結合データXに含まれる小数加算値のRGB成分XR,XG、及びXBそれぞれの整数部JR,JG、及びJBを抽出し、小数加算値のRGB成分XR,XG、及びXBの整数部JR,JG、及びJBが結合された小数加算値成分整数部結合データJを求める。
ここで、図21Cで説明したように、小数加算値成分結合データXに含まれる小数加算値のRGB成分XR,XG、及びXBそれぞれの最上位ビットが、整数部JR,JG、及びJBである。
そこで、整数部抽出部207として機能するCPU102は、小数加算値成分結合データXに、小数加算値のRGB成分XR,XG、及びXBそれぞれの最上位ビットを抽出する所定のマスクをかけることで、小数加算値のRGB成分XR,XG、及びXBの整数部JR,JG、及びJBが結合された小数加算値成分整数部結合データJを求める。
すなわち、図22Aは、小数加算値成分結合データXを示しており、図21Cと同一の図である。
図22Bは、小数加算値成分結合データX(図22A)にかけられる所定のマスクとして32ビットのマスクデータを示している。
図22Bの32ビットのマスクデータは、80100100Hになっている。
整数部抽出部207として機能するCPU102は、図22Aの小数加算値成分結合データXと、図22Bのマスクデータとの論理積を演算することで、32ビットの小数加算値成分整数部結合データJを求める。
図22Cは、以上のようにして求められる32ビットの小数加算値成分整数部結合データJを示している。
図22Cの小数加算値成分整数部結合データJでは、第9ビットと第10ビットとの間を小数点として、第10ビットに、小数加算値のB成分XBの整数部JBが配置されている。また、第20ビットと第21ビットとの間を小数点として、第21ビットに、小数加算値のG成分XGの整数部JGが配置されている。さらに、第31ビットと第32ビットとの間を小数点として、第32ビットに、小数加算値のR成分XRの整数部JRが配置されている。そして、他のビットは、0になっている。
図23を参照して、整数部抽出部206(図10)として機能するCPU102(図8)の処理を説明する。
図23Aは、結合部201から整数部抽出部206に供給される32ビットの結合データLを示している。
図23Aの結合データLは、図16に示したのと同一のデータである。但し、図23Aにおいては、画素値INの8ビットのRGB成分INR,ING、及びINBを、それぞれ、RGB成分LR,LG、及びLBと表してある。
8ビット画像を6ビット画像に階調変換することにより得られる6ビット画像(変調画像)の変調画素値(量子化値)の小数点を基準とする場合、結合データL(図23A)に含まれる画素値の8ビットのRGB成分LR,LG、及びLBそれぞれの整数部IR,IG、及びIBは、画素値の8ビットのRGB成分LR,LG、及びLBそれぞれの上位6ビットである。
そこで、整数部抽出部206は、結合データL(図23A)に含まれる画素値のRGB成分LR,LG、及びLBそれぞれの上位6ビットである整数部IR,IG、及びIB以外のビットを0にすることで、画素値INのRGB成分LR,LG、及びLBの6ビットの整数部IR,IG、及びIBが結合された32ビットの画素値成分整数部結合データIを求める。
そのため、整数部抽出部206として機能するCPU102は、結合データL(図23A)に、画素値のRGB成分LR,LG、及びLBそれぞれの上位6ビットを抽出する所定のマスクをかける。
図23Bは、結合データL(図23A)にかけられる所定のマスクとしての32ビットのマスクデータを示している。
図23Cの32ビットのマスクデータは、7E0FC1F8Hになっている。
整数部抽出部206として機能するCPU102は、図23Aの結合データLと、図23Cのマスクデータとの論理積を演算することで、画素値INのRGB成分LR,LG、及びLBの6ビットの整数部IR,IG、及びIBが結合された32ビットの画素値成分整数部結合データIを求め、内蔵レジスタに格納する。
図23Cは、以上のようにして求められる画素値成分整数部結合データIを示している。
図23Cにおいて、32ビットの画素値成分整数部結合データIの第1ビットないし第3ビットには、0が配置され、第3ビットと第4ビットとの間を小数点として、画素値INのB成分LBの6ビットの整数部IBが、第4ビットないし第9ビットに配置されている。さらに、第10ビットないし第14ビットには、0が配置され、第14ビットと第15ビットとの間を小数点として、画素値INのG成分LGの6ビットの整数部IGが、第15ビットないし第20ビットに配置されている。また、第21ビットないし第25ビットには、0が配置され、第25ビットと第26ビットとの間を小数点として、画素値INのR成分LRの6ビットの整数部IRが、第25ビットないし第31ビットに配置されている。そして、第32ビット(最上位ビット)に0が配置されている。
図24及び図25を参照して、演算部208(図10)として機能するCPU102(図8)の処理を説明する。
図24は、演算部208として機能するCPU102が、整数部抽出部207からの小数加算値成分整数部結合データJに対して行う処理を説明する図である。
演算部208は、整数部抽出部206から供給される画素値成分整数部結合データIと、整数部抽出部207から供給される小数加算値成分整数部結合データJとの加算を、成分ごとに行い、整数加算値成分結合データYを求める。
上述の成分ごとの加算を行うために、演算部208として機能するCPU102は、小数加算値成分整数部結合データJの小数点の位置を、画素値成分整数部結合データIの小数点の位置に一致させる。
すなわち、小数加算値成分整数部結合データJでは、図22Cで説明したように、第9ビットと第10ビットとの間を小数点として、第10ビットに、小数加算値のB成分XBの整数部JBが配置されている。また、第20ビットと第21ビットとの間を小数点として、第21ビットに、小数加算値のG成分XGの整数部JGが配置されている。さらに、第31ビットと第32ビットとの間を小数点として、第32ビットに、小数加算値のR成分XRの整数部JRが配置されている。
一方、画素値成分整数部結合データIでは、図23Cで説明したように、第3ビットと第4ビットとの間を小数点として、画素値INのB成分LBの6ビットの整数部IBが、第4ビットないし第9ビットに配置されている。さらに、第14ビットと第15ビットとの間を小数点として、画素値INのG成分LGの6ビットの整数部IGが、第15ビットないし第20ビットに配置されている。また、第25ビットと第26ビットとの間を小数点として、画素値INのR成分LRの6ビットの整数部IRが、第25ビットないし第31ビットに配置されている。
したがって、小数加算値成分整数部結合データJ(図22C)の小数点の位置は、RGB成分すべてについて、画素値成分整数部結合データI(図23C)の小数点の位置よりも、6ビットだけ左側(上位ビット側)にある。
そこで、演算部208として機能するCPU102は、整数部抽出部207からの小数加算値成分整数部結合データJを、6ビットだけ右シフトする。
すなわち、図24Aは、整数部抽出部207から演算部208に供給される小数加算値成分整数部結合データJを示しており、図22Cと同一の図である。
演算部208として機能するCPU102は、図24Aの小数加算値成分整数部結合データJを、6ビットだけ右シフトし、図24Bのようにする。
すなわち、図24Bは、右シフト後の小数加算値成分整数部結合データJを示している。
なお、図24Aの小数加算値成分整数部結合データJの全体を32ビットの値とみなすと、6ビットの右シフトは、64(=26)での除算であり、以下、6ビットの右シフト後の小数加算値成分整数部結合データJを、小数加算値成分整数部結合データJ/64ともいう。
図25は、演算部208として機能するCPU102が行う、画素値成分整数部結合データIと、小数加算値成分整数部結合データJとの加算を示す図である。
すなわち、図25Aは、画素値成分整数部結合データIを示しており、図23Cと同一の図である。
図25Bは、小数加算値成分整数部結合データJ/64を示しており、図24Bと同一の図である。
演算部208として機能するCPU102は、図25Aの画素値成分整数部結合データIと、その画素値成分整数部結合データIと小数点の位置が一致する図25Bの小数加算値成分整数部結合データJ/64とを加算し、整数加算値のRGB成分YR,YG、及びYBが結合された32ビットの整数加算値成分結合データYを求める。
図25Cは、そのようにして求められる整数加算値成分結合データYを示している。
ここで、図25Aの画素値成分整数部結合データIに含まれる、画素値の8ビットのR成分LRの整数部IRは、6ビットであり、図25Bの小数加算値成分整数部結合データJ/64に含まれる小数加算値のR成分XRの整数部JRは、1ビットである。
6ビットの整数部IRと、1ビットの整数部JRとの加算値は、最大で7ビットになるので、整数加算値成分結合データYに含まれる整数加算値のR成分YRは、7ビットになっている。整数加算値成分結合データYに含まれる整数加算値のG成分YG、及びB成分YBも、同様に7ビットになっている。
そして、32ビットの整数加算値成分結合データYにおいて、整数加算値の7ビットのRGB成分YR,YG、及びYBは、小数点の位置が、図25Aの画素値成分整数部結合データI(、及び、図25Bの小数加算値成分整数部結合データJ/64)と一致するように配置されている。さらに、整数加算値成分結合データYにおいて、整数加算値の7ビットのRGB成分YR,YG、及びYB以外のビットは、0になっている。
すなわち、図25Cの整数加算値成分結合データYにおいて、整数加算値の7ビットのB成分YBは、第3ビットと第4ビットとの間を小数点として、第4ビットないし第10ビットに配置されている。また、整数加算値の7ビットのG成分YGは、第14ビットと第15ビットとの間を小数点として、第15ビットないし第21ビットに配置されている。さらに、整数加算値の7ビットのR成分YRは、第25ビットと第26ビットとの間を小数点として、第26ビットないし第32ビットに配置されている。
図26ないし図29を参照して、リミッタ209(図10)として機能するCPU102(図8)の処理を説明する。
リミッタ209は、演算部208から供給される図25Cの整数加算値成分結合データYに含まれる整数加算値のRGB成分YR,YG、及びYBそれぞれを、量子化値(変調画素値)のRGB成分の最大値MAX_YR,MAX_YG、及びMAX_YBに制限することにより、量子化値のRGB成分SR,SG、及びSBとし、量子化値のRGB成分SR,SG、及びSBが結合された量子化値成分結合データSを求める。
すなわち、図25Cで説明したように、整数加算値成分結合データYに含まれる整数加算値のRGB成分YR,YG、及びYBは、それぞれ7ビットである。
一方、ここでは、8(=m)ビット画像である対象画像を、6(=n)ビット画像である変調画像に階調変換するので、誤差拡散部10(図1)の量子化部12の出力に相当する量子化値のRGB成分OUTR,OUTG、及びOUTBは、それぞれ6ビットである。
整数加算値成分結合データYに含まれる整数加算値の7ビットのR成分YRが、誤差拡散部10(図1)の量子化部12の出力に相当する量子化値のR成分OUTRのビット数である6ビットで表現することができる値である場合、整数加算値の7ビットのR成分YRの下位6ビットを、そのまま、量子化値の6ビットのR成分OUTRとすることができる。
一方、整数加算値成分結合データYに含まれる整数加算値の7ビットのR成分YRが、量子化値のR成分OUTRのビット数である6ビットで表現することができる値でない場合、すなわち、6ビットを超える7ビットでなければ表現することができない値である場合、整数加算値の7ビットのR成分YRは、量子化値の6ビットのR成分OUTRとしては、オーバーフローしているので、整数加算値の7ビットのR成分YRは、量子化値の6ビットのR成分の最大値MAX_YR、つまり、6ビットで表現することができる値の最大値に制限して、量子化値の6ビットのR成分OUTRとする必要がある。
整数加算値のG成分YG、及びB成分YBについても、同様である。
そこで、リミッタ209は、演算部208から供給される図25Cの整数加算値成分結合データYに含まれる整数加算値のRGB成分YR,YG、及びYBそれぞれを、量子化値のRGB成分の最大値MAX_YR,MAX_YG、及びMAX_YBに制限する制限処理を行う。
すなわち、図26は、整数加算値成分結合データYに含まれる整数加算値のR成分YRの、リミッタ209による制限処理を説明する図である。
図26Aは、演算部208からリミッタ209に供給される整数加算値成分結合データYを示しており、図25Cと同一の図である。
リミッタ209として機能するCPU102は、演算部208から供給される図26Aの整数加算値成分結合データYに含まれる整数加算値の7ビットのR成分YRが、量子化値の6ビットのR成分OUTRとしてはオーバーフローしている場合、すなわち、整数加算値の7ビットのR成分YRの最上位ビットが1である場合、量子化値のR成分の最大値MAX_YRを含む32ビットのデータと、図26Aの整数加算値成分結合データYとの論理和(OR)を演算することで、整数加算値のR成分YRを、量子化値のR成分の最大値MAX_YRに制限する。
図26Bは、量子化値のR成分の最大値MAX_YRを含む32ビットのデータを示している。
量子化値のR成分の最大値MAX_YRを含む32ビットのデータは、整数加算値成分結合データYに含まれる整数加算値の7ビットのR成分YRの小数点の位置である第25ビットと第26ビットとの間の位置から、上位6ビットが1で、他のビットが0の、7E000000Hになっている。
なお、整数加算値の7ビットのR成分YRの最上位ビットが0である場合、リミッタ209では、量子化値のR成分の最大値MAX_YRを含む32ビットのデータ(図26B)と、整数加算値成分結合データYとの論理和の演算は、行われない。
図27は、整数加算値成分結合データYに含まれる整数加算値のG成分YGの、リミッタ209による制限処理を説明する図である。
図27Aは、演算部208からリミッタ209に供給される整数加算値成分結合データYを示しており、図25Cと同一の図である。
リミッタ209として機能するCPU102は、演算部208から供給される図27Aの整数加算値成分結合データYに含まれる整数加算値の7ビットのG成分YGが、量子化値の6ビットのG成分OUTGとしてはオーバーフローしている場合、すなわち、整数加算値の7ビットのG成分YGの最上位ビットが1である場合、量子化値のG成分の最大値MAX_YGを含む32ビットのデータと、図27Aの整数加算値成分結合データYとの論理和を演算することで、整数加算値のG成分YGを、量子化値のG成分の最大値MAX_YGに制限する。
図27Bは、量子化値のG成分の最大値MAX_YGを含む32ビットのデータを示している。
量子化値のG成分の最大値MAX_YGを含む32ビットのデータは、整数加算値成分結合データYに含まれる整数加算値の7ビットのG成分YGの小数点の位置である第14ビットと第15ビットとの間の位置から、上位6ビットが1で、他のビットが0の、000FC000Hになっている。
なお、整数加算値の7ビットのG成分YGの最上位ビットが0である場合、リミッタ209では、量子化値のG成分の最大値MAX_YGを含む32ビットのデータ(図27B)と、整数加算値成分結合データYとの論理和の演算は行われない。
図28は、整数加算値成分結合データYに含まれる整数加算値のB成分YBの、リミッタ209による制限処理を説明する図である。
図28Aは、演算部208からリミッタ209に供給される整数加算値成分結合データYを示しており、図25Cと同一の図である。
リミッタ209として機能するCPU102は、演算部208から供給される図28Aの整数加算値成分結合データYに含まれる整数加算値の7ビットのB成分YBが、量子化値の6ビットのB成分OUTBとしてはオーバーフローしている場合、すなわち、整数加算値の7ビットのB成分YBの最上位ビットが1である場合、量子化値のB成分の最大値MAX_YBを含む32ビットのデータと、図28Aの整数加算値成分結合データYとの論理和を演算することで、整数加算値のB成分YBを、量子化値のB成分の最大値MAX_YBに制限する。
図28Bは、量子化値のB成分の最大値MAX_YBを含む32ビットのデータを示している。
量子化値のB成分の最大値MAX_YBを含む32ビットのデータは、整数加算値成分結合データYに含まれる整数加算値の7ビットのB成分YBの小数点の位置である第3ビットと第4ビットとの間の位置から、上位6ビットが1で、他のビットが0の、000001F8Hになっている。
なお、整数加算値の7ビットのB成分YBの最上位ビットが0である場合、リミッタ209では、量子化値のB成分の最大値MAX_YBを含む32ビットのデータ(図28B)と、整数加算値成分結合データYとの論理和の演算は、行われない。
リミッタ209は、制限処理の後、整数加算値成分結合データYに含まれる整数加算値の7ビットのRGB成分YR,YG、及びYBそれぞれから、下位6ビットを抽出することで、量子化値の6ビットのRGB成分SR,SG、及びSBが結合された量子化値成分結合データSを求める。
そのため、リミッタ209として機能するCPU102は、整数加算値成分結合データYに、整数加算値の7ビットのRGB成分YR,YG、及びYBそれぞれの下位6ビットを抽出する所定のマスクをかける。
図29は、整数加算値成分結合データYに、所定のマスクをかける処理を説明する図である。
図29Aは、マスクをかける対象の整数加算値成分結合データYを示している。
図29Aの整数加算値成分結合データYに含まれる整数加算値の7ビットのR成分YRは、図26で説明したように、量子化値の6ビットのR成分の最大値MAX_YRに制限されている。整数加算値のG成分YG、及びB成分YBも同様である。
図29Bは、図29Aの整数加算値成分結合データYにかけられる所定のマスクとしての32ビットのマスクデータを示している。
図29Bの32ビットのマスクデータは、7E0FC1F8Hになっている。
リミッタ209として機能するCPU102は、図29Aの整数加算値成分結合データYと、図29Bのマスクデータとの論理積を演算することで、整数加算値の7ビットのRGB成分YR,YG、及びYBそれぞれの最上位ビットを0とするとともに、下位6ビットを、量子化値の6ビットのRGB成分SR,SG、及びSBとした量子化値成分結合データSを求め、内蔵レジスタに格納する。
図29Cは、以上のようにして求められる量子化値成分結合データSを示している。
図29Cの量子化値成分結合データSにおいて、量子化値の6ビットのB成分SBは、第3ビットと第4ビットとの間を小数点として、第4ビットないし第9ビットに配置されている。また、量子化値の6ビットのG成分SGは、第14ビットと第15ビットとの間を小数点として、第15ビットないし第20ビットに配置されている。さらに、量子化値の6ビットのR成分SRは、第25ビットと第26ビットとの間を小数点として、第26ビットないし第31ビットに配置されている。
図30を参照して、分離部210(図10)として機能するCPU102(図8)の処理を説明する。
分離部210として機能するCPU102は、図30に示すように、リミッタ209からの量子化値成分結合データSに含まれる量子化値の6ビットのRGB成分SR,SG、及びSBを分離し、その量子化値の6ビットのRGB成分SR,SG、及びSBそのものを、階調変換後の画像の画素値である変調画素値OUTの6ビットのRGB成分OUTR,OUTG、及びOUTBとして出力する。
なお、量子化値成分結合データSに含まれる量子化値の6ビットのR成分SRそのものを、変調画素値OUTのR成分OUTRとする他、量子化値の6ビットのR成分SRの下位2ビットに0を付加した8ビットを、変調画素値OUTのR成分OUTRとすることが可能である。すなわち、変調画素値OUTのR成分OUTRは、いわば、形式的には、対象画像の画素値のR成分INR(図16)と同一の8ビットのデータとして出力することが可能である。変調画素値OUTのG成分OUTG、及びB成分OUTBについても、同様である。
図31を参照して、小数部抽出部204(図10)として機能するCPU102(図8)の処理を説明する。
図31Aは、演算部203から小数部抽出部204に供給される小数加算値成分結合データXを示しており、図21Cと同一の図である。
量子化誤差成分結合データQに含まれる量子化誤差のRGB成分QR,QG、及びQBは、それぞれ、小数加算値成分結合データXに含まれる小数加算値の9ビットのRGB成分XR,XG、及びXBの小数部である。
また、小数加算値の9ビットのR成分XRの小数点の位置は、第31ビットと第32ビットとの間、すなわち、小数加算値の9ビットのR成分XRの最上位ビットと最上位ビットから2番目のビットとの間である。したがって、小数加算値の9ビットのR成分XRの小数部は、9ビットのR成分XRの下位8ビットである。小数加算値の9ビットのG成分XG、及びB成分XBについても、同様である。
そこで、小数部抽出部204は、小数加算値の9ビットのRGB成分XR,XG、及びXBそれぞれの小数部である下位8ビットを、量子化誤差のRGB成分QR,QG、及びQBとして抽出した量子化誤差成分結合データQを求める。
そのために、小数部抽出部204として機能するCPU102は、小数加算値成分結合データXに、小数加算値の9ビットのRGB成分XR,XG、及びXBそれぞれの下位8ビットを抽出する所定のマスクをかける。
すなわち、図31Bは、小数加算値成分結合データXにかけられる所定のマスクとしての32ビットのマスクデータを示している。
図31Bの32ビットのマスクデータは、7FCFF9FFHになっている。
小数部抽出部204として機能するCPU102は、図31Aの小数加算値成分結合データXと、図31Bのマスクデータとの論理積を演算することで、32ビットの量子化誤差成分結合データQを求める。
図31Cは、そのようにして求められる32ビットの量子化誤差成分結合データQを示しており、図18Aと同一の図である。
以上のように、誤差拡散部51(図10)として機能するCPU102(図8)では、画像の画素値INと、量子化誤差Qのフィルタリングの結果であるフィルタ出力Uとを加算した加算値Mの量子化値OUTが、量子化値OUTの小数点を基準として、画素値INの整数部Iと、フィルタ出力Uと画素値INの小数部Pとの和である小数加算値Xの整数部Jとの和として求められること、及び、量子化値OUTの量子化誤差Qが、量子化値OUTの小数点を基準として、フィルタ出力Uと、画素値INの小数部Pとの和である小数加算値Xの小数部として求められることに基づき、画素値IN、及び、小数加算値Xのそれぞれを、整数部と小数部とに分けて、量子化値OUT、及び、量子化誤差Qを求めることにより、画素値がRGB成分の対象画像の誤差拡散法による階調変換を行う。
そして、このように、画素値IN、及び、小数加算値Xのそれぞれを、整数部と小数部とに分けることで、画素値INのRGB成分INR,ING、及びINBの誤差拡散法による階調変換を、画素値INのRGB成分INR,ING、及びINBを結合して、いわば、まとめて(並列に)行うことができる。
このように、画素値INのRGB成分INR,ING、及びINBの誤差拡散法による階調変換をまとめて行うことができるので、図6の階調変換装置のように、装置の規模を大規模化することなく(つまり、低コストで)、階調変換を、高速に行うことができる。すなわち、装置を大規模化することなく、階調変換の処理のサイクル数を、単純には、図5で説明した場合の1/3にすることができる。したがって、階調変換を、CPU102にプログラムを実行させることで行っても、リアルタイムで行うことができる。
なお、CPU102において、上述のように、画素値IN、及び、小数加算値Xのそれぞれを、整数部と小数部とに分けることで、画素値INのRGB成分INR,ING、及びINBの誤差拡散法による階調変換をまとめて行う場合には、図5で説明したように、画素値INのRGB成分INR,ING、及びINBの誤差拡散法による階調変換を、成分ごとに順番に行う場合に比較して、演算量、並びに、データのロード、ストア、及びアドレッシングの回数を削減することができる。
[フィルタ部205でのフィルタリングを行うフィルタの具体例]
誤差拡散部51(図10)のフィルタ部205でのフィルタリングを行うフィルタ、すなわち、フィルタ出力Uを得るフィルタリングを行うフィルタとしては、例えば、従来の誤差拡散法で用いられているノイズシェーピング用のフィルタを採用することができる。
従来の誤差拡散法で用いられるノイズシェーピング用のフィルタとしては、例えば、Jarvis, Judice & Ninkeのフィルタ(以下、Jarvisフィルタともいう)や、Floyd & Steinbergのフィルタ(以下、Floydフィルタともいう)がある。
図32は、Jarvisフィルタを用いたノイズシェーピングの振幅特性と、Floydフィルタを用いたノイズシェーピングの振幅特性とを示している。
なお、図32では、ノイズシェーピングの振幅特性の他に、人の視覚の空間周波数特性(以下、視覚特性ともいう)を表すコントラスト感度曲線も図示してある。
また、図32において(後述する図33、図34、及び、図36ないし図38でも同様)、横軸は、空間周波数を表し、縦軸は、振幅特性についてはゲインを、視覚特性については感度を、それぞれ表す。
ここで、空間周波数の単位は、cpd(cycle/degree)であり、cpdは、視野角の単位角度(視野角1度)の範囲に見える縞模様の数を表す。例えば、10cpdは、視野角1度の範囲に、白線と黒線のペアが10ペア見えることを意味し、20cpdは、視野角1度の範囲に、白線と黒線のペアが20ペア見えることを意味する。
図7において、誤差拡散部51で得られる変調画像は、最終的には、ディスプレイ52で表示される。したがって、ディスプレイ52に表示される画像(変調画像)の画質を向上させる観点からは、人の視覚の空間周波数特性については、(0cpdから)ディスプレイ52で表示される画像の最高の空間周波数までを考慮すればよい。
ディスプレイ52で表示される画像の最高の空間周波数が、仮に、例えば、120cpd程度等の極めて高い値である場合には、図32に示すように、Jarvisフィルタであっても、また、Floydフィルタであっても、人の視覚の感度が低い、高域の周波数帯域に、ノイズ(量子化誤差)が十分に変調(ノイズシェーピング)される。
ところで、ディスプレイ52で表示される画像の最高の空間周波数は、ディスプレイ52の解像度と、ディスプレイ52に表示された画像を視聴するときの、視聴者からディスプレイ52までの距離(以下、視聴距離ともいう)とによって決まる。
いま、ディスプレイ52の垂直方向(縦)の長さをHインチと表すこととすると、ディスプレイ52で表示される画像の最高の空間周波数を求めるにあたり、視聴距離としては、例えば、2.5Hないし3.0H程度が採用される。
この場合、例えば、ディスプレイ52が、いわゆるフルHD(High Definition)の画像を表示する横×縦が1920×1080画素の40インチのサイズの表示画面を有することとすると、ディスプレイ52で表示される画像の最高の空間周波数は、30cpd程度となる。
図33は、ディスプレイ52(図7)で表示される画像の最高の空間周波数が、30cpdである場合の、Jarvisフィルタを用いたノイズシェーピングの振幅特性と、Floydフィルタを用いたノイズシェーピングの振幅特性とを示している。
なお、図33では、図32と同様に、視覚特性も図示してある。
ディスプレイ52で表示される画像の最高の空間周波数が、30cpd程度である場合には、図33に示すように、Jarvisフィルタや、Floydフィルタでは、人の視覚の感度が十分低い、高域の周波数帯域に、ノイズを、十分に変調することが困難である。
したがって、Jarvisフィルタや、Floydフィルタでは、誤差拡散部51での階調変換によって得られる変調画像に、ノイズが目立って、見た目の画質が劣化することがある。
誤差拡散部51での階調変換によって得られる変調画像にノイズが目立つことによる、見た目の画質の劣化を低減するには、ノイズシェーピングの振幅特性を、例えば、図34に示すようにする必要がある。
すなわち、図34は、変調画像にノイズが目立つことによる、見た目の画質の劣化を低減するノイズシェーピング(以下、劣化低減ノイズシェーピングともいう)の振幅特性の例を示している。
ここで、劣化低減ノイズシェーピングを実現するΔΣ変調に用いられるノイズシェーピング用のフィルタを、SBM(Super Bit Mapping)フィルタともいう。
図34では、劣化低減ノイズシェーピング(SBMフィルタを用いたノイズシェーピング)の振幅特性の他、図33に示した視覚特性、Jarvisフィルタを用いたノイズシェーピングの振幅特性、及び、Floydフィルタを用いたノイズシェーピングの振幅特性も、図示してある。
劣化低減ノイズシェーピングの振幅特性においては、中域以上の特性が、視覚特性(コントラスト感度曲線)の形状を、上下逆にした形状(類似した形状を含む)の特性(以下、逆特性ともいう)になっている。
さらに、劣化低減ノイズシェーピングの振幅特性は、高域で、JarvisフィルタやFloydフィルタを用いたノイズシェーピングの振幅特性よりも急峻に増加する特性になっている。
これにより、劣化低減ノイズシェーピングでは、ノイズ(量子化誤差)が、視覚の感度がより低い、JarvisフィルタやFloydフィルタを用いたノイズシェーピングよりも高域に、いわば集中的に変調される。
図10のフィルタ部205(でのフィルタリングを行うフィルタ)として、SBMフィルタを採用することにより、すなわち、フィルタ部205を用いたノイズシェーピングの振幅特性が、中域以上で、視覚特性の逆特性となり、かつ、高域で、FloydフィルタやJarvisフィルタを用いたΔΣ変調によるノイズシェーピングの振幅特性よりも急峻に増加するように、フィルタ部205のフィルタ係数を決定することにより、画素値INに対して、視覚の感度が低い高域のノイズ(量子化誤差)が加算されるようになり、その結果、変調画像に、ノイズ(量子化誤差)が目立つことを防止することができる。
なお、図34において、SBMフィルタを用いたノイズシェーピングの振幅特性は、高域で、ゲイン1を大きく超えているが、これは、JarvisフィルタやFloydフィルタを用いる場合よりも、量子化誤差を、高域で大きく増幅していることを表す。
また、図34では、SBMフィルタを用いたノイズシェーピングの振幅特性は、低域から中域にかけて、ゲインが負になっているが、これにより、SBMフィルタを、少ないタップ数の2次元フィルタで構成することができる。
すなわち、例えば、SBMフィルタを用いたノイズシェーピングの振幅特性として、低域及び中域のゲインが0で、高域だけ、ゲインが急峻に増加する振幅特性を実現する場合には、SBMフィルタは、多タップ(タップ数が多い)の2次元フィルタとなる。
これに対して、SBMフィルタを用いたノイズシェーピングの振幅特性を、低域又は中域で、ゲインが負になるようにした場合には、少ないタップ数の2次元フィルタで、SBMフィルタを構成し、ノイズシェーピングの高域のゲインを、JarvisフィルタやFloydフィルタを用いる場合よりも急峻に増加させることができる。
このようなSBMフィルタを、フィルタ部205として採用することにより、誤差拡散部51を小型に構成することができる。
[フィルタ部205の構成例]
図35は、図10のフィルタ部205(フィルタ部205のフィルタ出力を得るフィルタリングを行うフィルタ)の構成例を示している。
図35において、フィルタ部205は、12タップの2次元のFIRフィルタであり、12個の演算部2511,3,2511,2,2511,1,2512,3,2512,2,2512,1,2513,2,2513,1,2514,1,2514,2,2515,1、及び、2515,2、並びに、1個の演算部252等から構成される。
いま、注目画素を中心とする、横×縦が5×5画素のうちの、左からx番目で、上からy番目の画素の量子化誤差を、Q(x,y)と表すこととすると、演算部251x,yには、量子化誤差Q(x,y)が供給される。
すなわち、図35では、演算部251x,yには、注目画素を中心とする、横×縦が5×5画素のうちの、ラスタスキャン順で、注目画素より先に処理される(注目画素にされる)12画素それぞれの量子化誤差Q(x,y)が供給される。
演算部251x,yは、そこに供給される量子化誤差Q(x,y)と、あらかじめ設定されたフィルタ係数a(x,y)とを乗算し、その結果得られる乗算値を、演算部252に供給する。
演算部252は、12個の演算部251x,yそれぞれから供給される乗算値を加算し、その加算値を、フィルタ出力Uとして出力する。
[ノイズシェーピングの特性と、フィルタ係数の具体例]
図36は、ディスプレイ52で表示される画像の空間周波数の最高周波数(最高の空間周波数)を30cpdとした場合の、SBMフィルタを用いたノイズシェーピングの振幅特性とフィルタ係数の第1の例を示している。
すなわち、図36Aは、ノイズシェーピングの振幅特性が、低域又は中域で負になり、高域で、Floydフィルタを用いたΔΣ変調によるノイズシェーピングの振幅特性よりも急峻に増加するように決定された、12タップのSBMフィルタのフィルタ係数の第1の例を示している。
図36Aでは、12タップのSBMフィルタのフィルタ係数a(x,y)(図35)として、a(1,1) = -0.0317,a(2,1) = -0.1267,a(3,1) = -0.1900,a(4,1) = -0.1267,a(5,1) = -0.0317,a(1,2) = -0.1267,a(2,2) = 0.2406,a(3,2) = 0.7345,a(4,2) = 0.2406,a(5,2) = -0.1267,a(1,3) = -0.1900,a(2,3) = 0.7345が採用されている。
図36Bは、SBMフィルタのフィルタ係数が図36Aに示すようになっている場合の、SBMフィルタを用いたノイズシェーピングの振幅特性を示している。
図36Bのノイズシェーピングの振幅特性では、周波数f=0で、ゲインが0で、低域又は中域で、ゲインが負になり、高域で、ゲインが、Floydフィルタ(及びJarvisフィルタ)を用いたΔΣ変調によるノイズシェーピングの振幅特性よりも急峻に増加している。
図37は、ディスプレイ52で表示される画像の空間周波数の最高周波数を30cpdとした場合の、SBMフィルタを用いたノイズシェーピングの振幅特性とフィルタ係数の第2の例を示している。
すなわち、図37Aは、SBMフィルタを用いたノイズシェーピングの振幅特性が、低域又は中域で負になり、高域で、Floydフィルタを用いたΔΣ変調によるノイズシェーピングの振幅特性よりも急峻に増加するように決定された、12タップのSBMフィルタのフィルタ係数の第2の例を示している。
図37Aでは、12タップのSBMフィルタのフィルタ係数a(x,y)(図35)として、a(1,1) = -0.0249,a(2,1) = -0.0996,a(3,1) = -0.1494,a(4,1) = -0.0996,a(5,1) = -0.0249,a(1,2) = -0.0996,a(2,2) = 0.2248,a(3,2) = 0.6487,a(4,2) = 0.2248,a(5,2) = -0.0996,a(1,3) = -0.1494,a(2,3) = 0.6487が採用されている。
図37Bは、SBMフィルタのフィルタ係数が図37Aに示すようになっている場合の、SBMフィルタを用いたノイズシェーピングの振幅特性を示している。
図37Bのノイズシェーピングの振幅特性では、周波数f=0で、ゲインが0で、低域又は中域で、ゲインが負になり、高域で、ゲインが、Floydフィルタを用いたΔΣ変調によるノイズシェーピングの振幅特性よりも急峻に増加している。
図38は、ディスプレイ52で表示される画像の空間周波数の最高周波数を30cpdとした場合の、SBMフィルタを用いたノイズシェーピングの振幅特性とフィルタ係数の第3の例を示している。
すなわち、図38Aは、ノイズシェーピングの振幅特性が、低域又は中域で負になり、高域で、Floydフィルタを用いたΔΣ変調によるノイズシェーピングの振幅特性よりも急峻に増加するように決定された、12タップのSBMフィルタのフィルタ係数の第3の例を示している。
図38Aでは、12タップのSBMフィルタのフィルタ係数a(x,y)(図35)として、a(1,1) = -0.0397,a(2,1) = -0.1586,a(3,1) = -0.2379,a(4,1) = -0.1586,a(5,1) = -0.0397,a(1,2) = -0.1586,a(2,2) = 0.2592,a(3,2) = 0.8356,a(4,2) = 0.2592,a(5,2) = -0.1586,a(1,3) = -0.2379,a(2,3) = 0.8356が採用されている。
図38Bは、SBMフィルタのフィルタ係数が図38Aに示すようになっている場合の、SBMフィルタを用いたノイズシェーピングの振幅特性を示している。
図38Bのノイズシェーピングの振幅特性では、周波数f=0で、ゲインが0で、低域又は中域で、ゲインが負になり、高域で、ゲインが、Floydフィルタを用いたΔΣ変調によるノイズシェーピングの振幅特性よりも急峻に増加している。
図36ないし図38に示した12タップのSBMフィルタのフィルタ係数は、負の値を含んでおり、そのために、ノイズシェーピングの振幅特性は、低域又は中域で負になる。このように、ノイズシェーピングの振幅特性を、低域又は中域で負にすることで、高域で急峻に増加するノイズシェーピングの振幅特性を、12タップという少ないタップ数のSBMフィルタで実現することができる。
なお、図36ないし図38に示したフィルタ係数のSBMフィルタ(のフィルタリング結果を出力するブロック)を、フィルタ部205に採用して行ったシミュレーションによれば、いずれのSBMフィルタについても、見た目の画質が良い変調画像を得ることができた。
以上、本発明を、TV等としての画像処理装置に適用した場合について説明したが、本発明は、TVの他、階調変換を行うあらゆる装置に適用可能である。
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
すなわち、例えば、本実施の形態では、画素値が、RGB成分の画像を、階調変換の対象(対象画像)としたが、階調変換の対象は、その他、例えば、画素値が、YUV成分等の複数の成分の画像等とすることができる。
また、階調変換の対象は、画素値が単一の成分(輝度)のみからなる画像(いわゆるモノクロの画像)であっても良い。
誤差拡散法による階調変換を行う階調変換装置の構成例を示すブロック図である。 誤差拡散法による階調変換の対象となる画素の順番を示す図である。 フィルタ14の構成例を示すブロック図である。 フィルタ14のフィルタリングに用いられる量子化誤差Qを示す図である。 画素値がRGB成分の画素からなる画像の階調変換の処理を説明するフローチャートである。 誤差拡散法による階調変換を行う階調変換装置の他の構成例を示すブロック図である。 本発明を適用した画像処理装置の一実施の形態の構成例を示すブロック図である。 誤差拡散部51のハードウェアの構成例を示すブロック図である。 誤差拡散部51の処理を説明するフローチャートである。 誤差拡散部51の機能的な構成例を示すブロック図である。 誤差拡散部51が行う誤差拡散法による階調変換の処理を説明するフローチャートである。 結合部201で扱われるデータを説明する図である。 小数部抽出部202、演算部203、小数部抽出部204、及び、フィルタ部205で扱われるデータを説明する図である。 整数部抽出部206及び207、並びに、演算部208で扱われるデータを説明する図である。 リミッタ209、及び、分離部210で扱われるデータを説明する図である。 結合部201として機能するCPU102の処理を説明する図である。 小数部抽出部202として機能するCPU102の処理を説明する図である。 フィルタ部205として機能するCPU102の処理を説明する図である。 フィルタ部205として機能するCPU102の処理を説明する図である。 フィルタ部205として機能するCPU102の処理を説明する図である。 演算部203として機能するCPU102の処理を説明する図である。 整数部抽出部207として機能するCPU102の処理を説明する図である。 整数部抽出部206として機能するCPU102の処理を説明する図である。 演算部208として機能するCPU102の処理を説明する図である。 演算部208として機能するCPU102の処理を説明する図である。 リミッタ209として機能するCPU102の処理を説明する図である。 リミッタ209として機能するCPU102の処理を説明する図である。 リミッタ209として機能するCPU102の処理を説明する図である。 リミッタ209として機能するCPU102の処理を説明する図である。 分離部210として機能するCPU102の処理を説明する図である。 小数部抽出部204として機能するCPU102の処理を説明する図である。 Jarvisフィルタを用いたノイズシェーピングの振幅特性と、Floydフィルタを用いたノイズシェーピングの振幅特性を示す図である。 Jarvisフィルタを用いたノイズシェーピングの振幅特性と、Floydフィルタを用いたノイズシェーピングの振幅特性を示す図である。 SBMフィルタを用いたノイズシェーピングの振幅特性を示す図である。 フィルタ部205のフィルタ出力Uを得るフィルタリングを行うフィルタの構成例を示す図である。 SBMフィルタを用いたノイズシェーピングの振幅特性と、フィルタ係数の第1の例を示す図である。 SBMフィルタを用いたノイズシェーピングの振幅特性と、フィルタ係数の第2の例を示す図である。 SBMフィルタを用いたノイズシェーピングの振幅特性と、フィルタ係数の第3の例を示す図である。
符号の説明
10 誤差拡散部, 11 演算部, 12 量子化部, 13 演算部, 14 フィルタ, 211,1ないし213,1,211,2,22 演算部, 31R,31G,31B,51 誤差拡散部, 52 ディスプレイ, 101 バス, 102 CPU, 103 ROM, 104 RAM, 105 ハードディスク, 106 出力部, 107 入力部, 108 通信部, 109 ドライブ, 110 入出力インタフェース, 111 リムーバブル記録媒体, 201 結合部, 202 小数部抽出部, 203 演算部, 204 小数部抽出部, 205 フィルタ部, 206,207 整数部抽出部, 208 演算部, 209 リミッタ, 210 分離部, 2511,1ないし2515,1,2511,2ないし2515,2,2511,3,2512,3,252 演算部

Claims (5)

  1. 画像の画素値と、量子化誤差のフィルタリングの結果であるフィルタ出力とを加算した加算値の量子化値が、前記量子化値の小数点を基準として、
    前記画素値の整数部と、
    前記フィルタ出力と前記画素値の小数部との和である小数加算値の整数部と
    の和として求められること、
    及び、
    前記量子化値の前記量子化誤差が、前記量子化値の小数点を基準として、
    前記フィルタ出力と、
    前記画素値の小数部と
    の和である前記小数加算値の小数部として求められること
    に基づき、前記画素値、及び、前記小数加算値のそれぞれを、整数部と小数部とに分けて、前記量子化値、及び、前記量子化誤差を求めることにより、画素値が複数の成分の前記画像の誤差拡散法による階調変換を行う誤差拡散手段を備える
    画像処理装置。
  2. 前記誤差拡散手段は、
    前記画像の画素値の複数の成分を結合し、結合データとする結合手段と、
    前記結合データに含まれる前記画素値の複数の成分それぞれの小数部を抽出し、前記画素値の複数の成分の小数部が結合された画素値成分小数部結合データを求める第1の小数部抽出手段と、
    前記画素値成分小数部結合データに含まれる前記画素値の複数の成分の小数部と、前記フィルタ出力の複数の成分が結合されたフィルタ出力成分結合データに含まれる前記フィルタ出力の複数の成分との加算を、成分ごとに行い、前記小数加算値の複数の成分が結合された小数加算値成分結合データを求める第1の演算手段と、
    前記小数加算値成分結合データに含まれる前記小数加算値の複数の成分それぞれの小数部を、前記量子化誤差の複数の成分として抽出し、前記量子化誤差の複数の成分が結合された量子化誤差成分結合データを求める第2の小数部抽出手段と、
    前記量子化誤差成分結合データに含まれる前記量子化誤差の複数の成分をフィルタリングした、前記フィルタ出力の複数の成分が結合されたフィルタ出力成分結合データを求めるフィルタ手段と、
    前記結合データに含まれる前記画素値の複数の成分それぞれの整数部を抽出し、前記画素値の複数の成分の整数部が結合された画素値成分整数部結合データを求める第1の整数部抽出手段と、
    前記小数加算値成分結合データに含まれる前記小数加算値の複数の成分それぞれの整数部を抽出し、前記小数加算値の複数の成分の整数部が結合された小数加算値成分整数部結合データを求める第2の整数部抽出手段と、
    前記画素値成分整数部結合データに含まれる前記画素値の複数の成分の整数部と、前記小数加算値成分整数部結合データに含まれる前記小数加算値の複数の成分の整数部との加算を、成分ごとに行い、前記画素値の整数部と前記小数加算値の整数部との和である整数加算値の複数の成分が結合された整数加算値成分結合データを求める第2の演算手段と、
    前記整数加算値成分結合データに含まれる前記整数加算値の複数の成分を、前記量子化値の最大値に制限することにより、前記量子化値の複数の成分とし、前記量子化値の複数の成分が結合された量子化値成分結合データを求める制限手段と、
    前記量子化値成分結合データに含まれる前記量子化値の複数の成分を分離し、階調変換後の画像の画素値である変調画素値の複数の成分として出力する分離手段と
    を有する
    請求項1に記載の画像処理装置。
  3. 前記複数の成分は、RGB(Red,Green,Blue)成分である
    請求項2に記載の画像処理装置。
  4. 画像処理装置が、
    画像の画素値と、量子化誤差のフィルタリングの結果であるフィルタ出力とを加算した加算値の量子化値が、前記量子化値の小数点を基準として、
    前記画素値の整数部と、
    前記フィルタ出力と前記画素値の小数部との和である小数加算値の整数部と
    の和として求められること、
    及び、
    前記量子化値の前記量子化誤差が、前記量子化値の小数点を基準として、
    前記フィルタ出力と、
    前記画素値の小数部と
    の和である前記小数加算値の小数部として求められること
    に基づき、前記画素値、及び、前記小数加算値のそれぞれを、整数部と小数部とに分けて、前記量子化値、及び、前記量子化誤差を求めることにより、画素値が複数の成分の前記画像の誤差拡散法による階調変換を行うステップを含む
    画像処理方法。
  5. 画像の画素値と、量子化誤差のフィルタリングの結果であるフィルタ出力とを加算した加算値の量子化値が、前記量子化値の小数点を基準として、
    前記画素値の整数部と、
    前記フィルタ出力と前記画素値の小数部との和である小数加算値の整数部と
    の和として求められること、
    及び、
    前記量子化値の前記量子化誤差が、前記量子化値の小数点を基準として、
    前記フィルタ出力と、
    前記画素値の小数部と
    の和である前記小数加算値の小数部として求められること
    に基づき、前記画素値、及び、前記小数加算値のそれぞれを、整数部と小数部とに分けて、前記量子化値、及び、前記量子化誤差を求めることにより、画素値が複数の成分の前記画像の誤差拡散法による階調変換を行う誤差拡散手段
    として、コンピュータを機能させるためのプログラム。
JP2008288306A 2008-11-11 2008-11-11 画像処理装置、画像処理方法、及び、プログラム Withdrawn JP2010117741A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008288306A JP2010117741A (ja) 2008-11-11 2008-11-11 画像処理装置、画像処理方法、及び、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008288306A JP2010117741A (ja) 2008-11-11 2008-11-11 画像処理装置、画像処理方法、及び、プログラム

Publications (1)

Publication Number Publication Date
JP2010117741A true JP2010117741A (ja) 2010-05-27

Family

ID=42305401

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008288306A Withdrawn JP2010117741A (ja) 2008-11-11 2008-11-11 画像処理装置、画像処理方法、及び、プログラム

Country Status (1)

Country Link
JP (1) JP2010117741A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019169131A (ja) * 2018-03-23 2019-10-03 キヤノン株式会社 データ処理装置及びデータ処理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019169131A (ja) * 2018-03-23 2019-10-03 キヤノン株式会社 データ処理装置及びデータ処理方法
JP7245058B2 (ja) 2018-03-23 2023-03-23 キヤノン株式会社 データ処理装置及びデータ処理方法

Similar Documents

Publication Publication Date Title
JP5206276B2 (ja) 階調変換装置、階調変換方法、及び、プログラム
US20070247532A1 (en) Image processing apparatus
CN1291849A (zh) 用于产生白色分量以及控制显示原件中亮度的方法和装置
KR101938298B1 (ko) 표시 시스템, 이를 이용한 영상 데이터 감마 보정 방법 및 상기 영상 데이터 감마 보정 방법을 실행하기 위한 컴퓨터 판독 매체
JP4577590B2 (ja) 画像処理装置、画像処理方法、及び、プログラム
JP2010101924A (ja) 画像処理装置、画像処理方法、及び、プログラム
JP5343458B2 (ja) 画像処理装置、画像処理方法およびプログラム
US8385671B1 (en) Digital camera and method
JP2004524729A (ja) サブピクセルサンプリングと視覚的歪みフィルタリングを用いた表示解像度向上の方法およびそのシステム
JP4577591B2 (ja) 画像処理装置、画像処理方法、及び、プログラム
JPH11313336A (ja) 信号処理装置および撮像用信号処理方法
JP4644602B2 (ja) カラー画像処理装置,カラー画像処理方法,プログラム,および記録媒体
JP2010117741A (ja) 画像処理装置、画像処理方法、及び、プログラム
JP4605283B2 (ja) 画像処理装置、画像処理方法、およびプログラム
JP4721077B2 (ja) 画像処理装置、画像処理方法、及び、プログラム
JP2010087977A (ja) 画像処理装置、画像処理方法、及び、プログラム
US7250967B2 (en) Apparatus for modifying reproduction frequency band of video signal
JP2010068368A (ja) 画像処理装置、画像処理方法、及び、プログラム
JP5323739B2 (ja) 映像信号送信装置および伝送用映像信号生成プログラム、映像信号受信装置および伝送用映像信号変換プログラム、並びに、映像信号伝送システム
JP5323738B2 (ja) 映像信号送信装置および伝送用映像信号生成プログラム、映像信号受信装置および伝送用映像信号変換プログラム、並びに、映像信号伝送システム
JP2005316766A (ja) 携帯電話機、並びに、画像変換装置、方法、及びプログラム
EP2169941A1 (en) Gradation conversion device and gradation conversion method
JP7005570B2 (ja) 装置、方法、及びプログラム
JP3865696B2 (ja) 色変換装置および色変換方法
JP2013098611A (ja) 階調変換装置および階調変換方法、並びにプログラム

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20120207