(57)【要約】【課題】拡張されたＬＵＴを用いて画質変換した場合に発生する階調飛びを抑制する画像処理装置、画像処理プログラムを提供する。【解決手段】Ｎビット（Ｎは自然数）の入力画素値に対応するＭビット（Ｍは自然数）の出力画素値を求めるための画質変換情報に基づいて前記入力画素値のビット数をＫ（Ｋは自然数でＫ＞Ｎ）ビットに拡張した拡張画質変換情報を生成する拡張画質変換情報生成手段（拡張ＬＵＴ生成部４２）と、入力画素値Ｑを画素値がＮビットの画素で構成される画像の画素値とし、実数Ｒを所定の乱数としたとき、前記入力画素値ＱをＫビットに拡張した画素値Ｑ'を、Ｑ'＝２Ｋ−Ｎ×Ｑ＋Ｒの演算式により算出し、算出した画素値Ｑ'に対して前記拡張画質変換情報生成手段により生成された拡張画質変換情報を用いて画質変換する画質変換手段（画質変換部４４）と、を有する。【選択図】図２
2008072280.tif 000002
【特許請求の範囲】
【請求項１】
Ｎビット（Ｎは自然数）の入力画素値に対応するＭビット（Ｍは自然数）の出力画素値を求めるための画質変換情報に基づいて前記入力画素値のビット数をＫ（Ｋは自然数でＫ＞Ｎ）ビットに拡張した拡張画質変換情報を生成する拡張画質変換情報生成手段と、
入力値Ｑを画素値がＮビットの画素で構成される画像の画素値とし、実数Ｒを所定の乱数としたとき、前記入力画素値ＱをＫビットに拡張した画素値Ｑ'を、次の演算式により算出し、
Ｑ'＝２Ｋ−Ｎ×Ｑ＋Ｒ
算出した画素値Ｑ'に対して前記拡張画質変換情報生成手段により生成された拡張画質変換情報を用いて画質変換する画質変換手段と、
を有する画像処理装置。
【請求項２】
前記画質変換情報は、前記入力画素値に対応する前記出力画素値を求めるために予め定められた曲線における入力値及び出力値を離散化することで得られた画質変換情報であり、
前記拡張画質変換情報生成手段は、
前記拡張画質変換情報により求められた入力画素値に対応する出力画素値が、前記曲線における入力画素値に対応する出力値に近似するように前記拡張画質変換情報を生成する請求項１に記載の画像処理装置。
【請求項３】
前記拡張画質変換情報生成手段は、
前記画質変換情報における入力画素値ｎ（０≦ｎ≦２Ｋ−Ｎ−１）に対応する出力画素値をＡ（ｎ）としたとき、入力画素値が１≦ｎ≦２Ｋ−Ｎ−２の場合には、出力画素値Ａ（ｎ−１）と出力画素値Ａ（ｎ＋１）との平均値と、Ａ（ｎ）との差の絶対値が、予め定められた閾値Ｄ以下となるように入力画素値の各々に対応する出力画素値を定めると共に、入力画素値０に対応する出力画素値をＡ（０）と定め、入力画素値２Ｋ−Ｎ−１の出力画素値をＡ（２Ｋ−Ｎ−１）と定めることにより、前記拡張画質変換情報の生成に用いる中間画質変換情報を生成する請求項１又は請求項２に記載の画像処理装置。
【請求項４】
前記実数Ｒは、その絶対値が２Ｋ−Ｎ-１未満、又は０以上２Ｋ−Ｎ未満の乱数である請求項１から請求項３のいずれか１項に記載の画像処理装置。
【請求項５】
変換される前記画質は、赤色、緑色、及び青色の色調である請求項１から請求項４のいずれか１項に記載の画像処理装置。
【請求項６】
Ｎビット（Ｎは自然数）の入力画素値に対応するＭビット（Ｍは自然数）の出力画素値を求めるための画質変換情報に基づいて前記入力画素値のビット数をＫ（Ｋは自然数でＫ＞Ｎ）ビットに拡張した拡張画質変換情報を生成する拡張画質変換情報生成ステップと、
入力値Ｑを画素値がＮビットの画素で構成される画像の画素値とし、実数Ｒを所定の乱数としたとき、前記入力画素値ＱをＫビットに拡張した画素値Ｑ'を、次の演算式により算出し、
Ｑ'＝２Ｋ−Ｎ×Ｑ＋Ｒ
算出した画素値Ｑ'に対して前記拡張画質変換情報生成ステップにより生成された拡張画質変換情報を用いて画質変換する画質変換ステップと、
を有する処理をコンピュータに実行させる画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理プログラムに関する。
【背景技術】
【０００２】
従来より、画像の画質変換に供されるＬＵＴ（Look Up Table）を用いたトーンカーブ調整（以下、ＬＵＴ処理と記す）が行われている。このＬＵＴ処理に用いられるＬＵＴを用いて画質変換を行った際に階調飛びが発生することがある。
【０００３】
この階調飛びを、具体的に図９を用いて説明する。図９は実際の画像の濃度ヒストグラムの一例を示す図であり、この濃度ヒストグラムは、横軸が画素値、縦軸が画素数を示している。同図に示される濃度ヒストグラムの場合、殆どいたる所で階調飛びが発生していることが示されている。
【０００４】
このような階調飛びを抑える技術として、特許文献１には、グラデーション画像を印刷するときのトナーの濃度特性により印刷物の階調飛びが発生するので、その対策として画素値に乱数を加えることで階調飛びを抑える技術が開示されている。
【０００５】
また、特許文献２には、階調飛びへの対策として、画像を領域分離して、乱数を付加をしても画質が劣化しない部分にのみ乱数を付加することで階調飛びを回避する技術が開示されている。
【特許文献１】特開２０００−１３４４７５号公報
【特許文献２】特開２００１−２１８０２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
このような技術背景において、上記階調飛びの発生を抑えることために、ＬＵＴのビット拡張を行うことは容易に推測できるが、拡張するために必要となる補間方法を単純な方法を用いて拡張した場合には階調飛びの発生を十分に抑えられないことが知られている。
【０００７】
具体的に例えば、入力画素値のビット数が８ビットで、出力画素値のビット数が８ビットであるＬＵＴを、入力画素値のビット数が１２ビットのＬＵＴに拡張した場合、拡張された画素値に対応するための補間が行われる。
【０００８】
８ビットにおける入力画素値（０、１、・・・）は、拡張により入力画素値（０、１６、・・・）となる。このとき、例えば１〜１５までの入力画素値に対応する出力画素値を補間しなければならない。
【０００９】
図１０は、単純に線形補間を行った場合の入出力曲線（現実曲線：実線）、及び理想の入出力曲線（理想曲線：破線）を示している。このグラフにおいて、例えば、入力値８の画素が仮に１００個あった場合、現実曲線のままだと、入力画素値に仮に±０.５程度の乱数を加えて入力画素値を散らしたとしても、その殆どの出力値が８となり、階調飛びが発生する。しかし、理想曲線に示されるように、１００個のうちの４０〜５０個程度の画素値は９となるべきである。
【００１０】
このように、従来技術では、画像の画質変換に供されるＬＵＴの拡張を行い、その拡張されたＬＵＴを用いて画質変換した場合においても階調飛びが発生するという問題点があった。
【００１１】
本発明は上記問題点に鑑み、拡張されたＬＵＴを用いて画質変換した場合に発生する階調飛びを抑制する画像処理装置、画像処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するために請求項１の発明は、Ｎビット（Ｎは自然数）の入力画素値に対応するＭビット（Ｍは自然数）の出力画素値を求めるための画質変換情報に基づいて前記入力画素値のビット数をＫ（Ｋは自然数でＫ＞Ｎ）ビットに拡張した拡張画質変換情報を生成する拡張画質変換情報生成手段と、入力値Ｑを画素値がＮビットの画素で構成される画像の画素値とし、実数Ｒを所定の乱数としたとき、前記入力画素値ＱをＫビットに拡張した画素値Ｑ'を、Ｑ'＝２Ｋ−Ｎ×Ｑ＋Ｒの演算式により算出し、算出した画素値Ｑ'に対して前記拡張画質変換情報生成手段により生成された拡張画質変換情報を用いて画質変換する画質変換手段と、を有する。
【００１３】
なお、本発明は、請求項２の発明のように、前記画質変換情報は、前記入力画素値に対応する前記出力画素値を求めるために予め定められた曲線における入力値及び出力値を離散化することで得られた画質変換情報であり、前記拡張画質変換情報生成手段は、前記拡張画質変換情報により求められた入力画素値に対応する出力画素値が、前記曲線における入力画素値に対応する出力値に近似するように前記拡張画質変換情報を生成するようにしても良い。
【００１４】
なお、本発明は、請求項３の発明のように、前記拡張画質変換情報生成手段は、前記画質変換情報における入力画素値ｎ（０≦ｎ≦２Ｋ−Ｎ−１）に対応する出力画素値をＡ（ｎ）としたとき、入力画素値が１≦ｎ≦２Ｋ−Ｎ−２の場合には、出力画素値Ａ（ｎ−１）と出力画素値Ａ（ｎ＋１）との平均値と、Ａ（ｎ）との差の絶対値が、予め定められた閾値Ｄ以下となるように入力画素値の各々に対応する出力画素値を定めると共に、入力画素値０に対応する出力画素値をＡ（０）と定め、入力画素値２Ｋ−Ｎ−１の出力画素値をＡ（２Ｋ−Ｎ−１）と定めることにより、前記拡張画質変換情報の生成に用いる中間画質変換情報を生成するようにしても良い。
【００１５】
なお、本発明は、請求項４の発明のように、前記実数Ｒは、その絶対値が２Ｋ−Ｎ-１未満、又は０以上２Ｋ−Ｎ未満の乱数であるようにしても良い。
【００１６】
なお、本発明は、請求項５の発明のように、変換される前記画質は、赤色、緑色、及び青色の色調であるようにしても良い。
【００１７】
上記目的を達成するために請求項６の発明は、Ｎビット（Ｎは自然数）の入力画素値に対応するＭビット（Ｍは自然数）の出力画素値を求めるための画質変換情報に基づいて前記入力画素値のビット数をＫ（Ｋは自然数でＫ＞Ｎ）ビットに拡張した拡張画質変換情報を生成する拡張画質変換情報生成ステップと、入力値Ｑを画素値がＮビットの画素で構成される画像の画素値とし、実数Ｒを所定の乱数としたとき、前記入力画素値ＱをＫビットに拡張した画素値Ｑ'を、Ｑ'＝２Ｋ−Ｎ×Ｑ＋Ｒにより算出し、算出した画素値Ｑ'に対して前記拡張画質変換情報生成ステップにより生成された拡張画質変換情報を用いて画質変換する画質変換ステップと、を有する処理をコンピュータに実行させる。
【発明の効果】
【００１８】
以上説明したように請求項１の発明によれば、拡張されたＬＵＴを用いて画質変換した場合に発生する階調飛びを抑制する画像処理装置を提供することができるという効果が得られる。
【００１９】
請求項２の発明によれば、曲線における入力画素値に対応する出力値に近似した拡張画質変換情報を生成することができる。
【００２０】
請求項３の発明によれば、出力画素値Ａ（ｎ−１）と出力画素値Ａ（ｎ＋１）との平均値と、Ａ（ｎ）との差の絶対値が、予め定められた閾値Ｄ以下とする中間画質変換情報を生成することができる。
【００２１】
請求項４の発明によれば、実数Ｒを、その絶対値が２Ｋ−Ｎ-１未満、又は０以上２Ｋ−Ｎ未満の乱数とすることができる。
【００２２】
請求項５の発明によれば、変換される前記画質を、赤色、緑色、及び青色の色調とすることができる。
【００２３】
請求項６の発明によれば、拡張されたＬＵＴを用いて画質変換した場合に発生する階調飛びを抑制する画像処理プログラムを提供することができるという効果が得られる。
【発明を実施するための最良の形態】
【００２４】
以下、図面を参照して、本発明の実施の形態について詳細に説明する。なお、本実施の形態では、本発明の画像処理装置を、パソコン（Personal Computer）に適用している。
【００２５】
まず、図１を用いてパソコン１０の構成について説明する。パソコン１０は、ＣＰＵ（Central Processing Unit）１８と、ＨＤＤ（Hard Disk Drive）２０と、ＲＡＭ２２と、ネットワークＩ／Ｆ（インタフェース）部２４と、ＲＯＭ２６と、表示部２８と、操作入力部３０と、それらを電気的に接続するバス３２とを含む。
【００２６】
ＣＰＵ１８は、パソコン１０の全体の動作を司るものであり、後述するパソコン１０の処理の流れを示すフローチャートは、ＣＰＵ１８により実行される。ＨＤＤ２０は、各ＬＵＴ、各種プログラム、そしてＯＳなどが記録される不揮発性の記憶装置である。ＲＡＭ２２は、ＯＳ、プログラム、ＬＵＴなどが展開される揮発性の記憶装置である。なお、ＬＵＴは画像の画質変換に供される画質変換情報である。ここで、画質とはＲ（赤色）、Ｇ（緑色）、及びＢ（青色）の色調や、白黒画像の階調を含む。
【００２７】
ネットワークＩ／Ｆ部２４は、ネットワークに接続するためのものであり、ＬＡＮに接続するためのＮＩＣやそのドライバ、又はＵＳＢデバイスを含んで構成される。ＲＯＭ２６は、パソコン１０の起動時に動作するブートプログラムなどが記憶されている不揮発性の記憶装置である。表示部２８は、各種情報をユーザに表示するものである。操作入力部３０は、ユーザがパソコン１０の操作指示や各種情報を入力する際に用いられるものである。バス３２は、以上の各部間で情報のやりとりが行われる際に使用される。
【００２８】
なお、上述したＨＤＤ２０には、ＣＰＵ１８により実行される後述する画像処理プログラムやそのプログラムが用いるデータなどが記録される。このプログラムは、必ずしもＨＤＤ２０に記録されたプログラムでなくても良い。ＨＤＤ２０以外の記録媒体として、具体的には可搬型の記録媒体にプログラムを記録したものが挙げられる。この場合、パソコン１０に、可搬型の記録媒体を読み取るための読み取り装置を設け、可搬型の記録媒体は読み取り装置に対して、磁気、光、電気等のエネルギーの変化状態を引き起こし、それに対応する信号の形式で、読み取り装置にプログラムの記述内容を伝達できるものである。
【００２９】
可搬型の記録媒体として、例えば光磁気ディスク、光ディスク（ＣＤやＤＶＤなどを含む）、磁気ディスク、メモリ（ＩＣカード、メモリカードなどを含む）などが挙げられる。
【００３０】
以上が本実施の形態に係るパソコン１０の構成となっている。次に、図２を用いて、本実施の形態に係る画像処理を実行する機能ブロックについて説明する。図２には、ＬＵＴ４０Ａ（画質変換情報）、拡張ＬＵＴ４０Ｂ（拡張画質変換情報）、拡張ＬＵＴ生成部（拡張画質変換情報生成手段）４２、及び画質変換部（画質変換手段）４４が示されている。
【００３１】
このうち、ＬＵＴ４０Ａ、及びＬＵＴ４０Ｂは上述したようにＨＤＤ２０に記憶されているテーブルであり、本実施の形態では、それぞれＲ（赤色）、Ｇ（緑色）、及びＢ（青色）に対応したＬＵＴ（Ｒ−ＬＵＴ、Ｇ−ＬＵＴ、Ｂ−ＬＵＴ）が用意されている。
【００３２】
また、ＬＵＴ４０Ａに示される各ＬＵＴは、入力画素値に対応する出力画素値を求めるために予め定められた曲線における入力値及び出力値を離散化することで得られた画質変換情報である。なお、予め定められた曲線とは、画質を変換するために例えば設計者により定められた理想曲線である。
【００３３】
本実施の形態におけるＬＵＴ４０Ａは、入力画素値が８ビットで、出力画素値が８ビットのＬＵＴである。また、ＬＵＴ４０Ｂに示される各ＬＵＴは、入力画素値が８ビットから１０ビットに拡張され、出力画素値が８ビットのＬＵＴである。
【００３４】
このような入力画素値が拡張されたＬＵＴ４０Ｂは、拡張ＬＵＴ生成部４２によりＬＵＴ４０Ａから生成される。この拡張ＬＵＴ生成部４２は、Ｎビット（Ｎは自然数）の入力画素値に対応するＭビット（Ｍは自然数）の出力画素値を求めるためのＬＵＴに対して前記入力画素値のビット数をＫ（Ｋは自然数でＫ＞Ｎ）ビットに拡張したＬＵＴを生成する。具体的な処理の詳細は後述する。
【００３５】
画質変換部４４は、拡張されたＬＵＴ４０Ｂを用いて画質を変換することで、ＲＧＢから色調が変換されたＲ'Ｇ'Ｂ'を出力する。この画質変換部４４の処理の詳細も後述する。
【００３６】
以下、フローチャートを用いて、ＣＰＵ１８により実行される拡張ＬＵＴ生成処理、及び画質変換処理について説明する。このうち、拡張ＬＵＴ生成処理は、ＬＵＴ正規化処理、ＬＵＴ拡張処理の２つの処理からなる。なお、ここで説明される拡張ＬＵＴ生成処理は、入力画素値が８ビットのＬＵＴを１０ビットの入力画素値のＬＵＴに拡張する処理である。
【００３７】
まず、ＬＵＴ正規化処理について説明する。ＬＵＴ正規化処理とは、ＬＵＴ４０Ａにおける入力画素値ｎ（０≦ｎ≦２Ｋ−Ｎ−１）に対応する出力画素値をＡ（ｎ）としたとき、入力画素値が１≦ｎ≦２Ｋ−Ｎ−２の場合には、出力画素値Ａ（ｎ−１）と出力画素値Ａ（ｎ＋１）との平均値と、Ａ（ｎ）との差の絶対値が、予め定められた閾値Ｄ以下となるように入力画素値の各々に対応する出力画素値を定めると共に、入力画素値０に対応する出力画素値をＡ（０）と定め、入力画素値２Ｋ−Ｎ−１の出力画素値をＡ（２Ｋ−Ｎ−１）と定めることにより、ＬＵＴ４０Ｂの生成に用いるＬＵＴ（中間画質変換情報）を生成する処理である。
【００３８】
具体的に図３のフローチャートを用いてＬＵＴ正規化処理の流れを説明する。なお、入力画素値は８ビットであるので、Ａ（ｎ）はｎが０〜２５５で定義されている。更に、値Ｄは上述した予め定められた閾値である。この閾値Ｄが小さければ小さいほど、出力画素値Ａ（ｎ）と出力画素値Ａ（ｎ＋２）との平均値と、Ａ（ｎ＋１）の差の絶対値が小さくなる。従って、入力画素値に対応する出力画素値を、理想曲線における入力画素値に対応する出力値に近似させることが可能となる。また、上記差の絶対値をどれだけ小さくするかにより閾値Ｄが予め定められている。
【００３９】
まず、ステップ１０１で変数の初期化が実行される。ここでは、ループカウンタｎに０、閾値判定変数Ｅｍａｘに０、一時的に用いられる変数ｔｍｐにＡ（０）がそれぞれ代入される。次のステップ１０２で、ＣＰＵ１８は、ＡにＡ（ｎ）とＡ（ｎ＋２）との平均値を代入する。
【００４０】
次のステップ１０３で、ＣＰＵ１８は、Ａ（ｎ）とＡ（ｎ＋２）との中間にあるＡ（ｎ＋１）とＡの差の絶対値を変数Ｅに代入する。次のステップ１０４で、ＣＰＵ１８は、Ａ（ｎ）にｔｍｐを代入し、ステップ１０５でｔｍｐにＡを代入する。
【００４１】
次のステップ１０６で、ＣＰＵ１８は、ＥがＥｍａｘより大きいか否か判断し、ステップ１０６でＣＰＵ１８が肯定判断した場合、ステップ１０７でＥｍａｘにＥが代入される。これは、差の絶対値の最大値を保持するための処理である。
【００４２】
一方、ＣＰＵ１８がステップ１０６で否定判断した場合、ステップ１０８に処理が進む。ステップ１０８で、ＣＰＵ１８は、ループカウンタｎを１つ増分し、次のステップ１０９で、ｎが２５３を越えたか否か判断する。ここでの判断で用いられる値が２５５ではない理由は、ステップ１０２で「ｎ＋２」が用いられるためである。
【００４３】
ステップ１０９で、ＣＰＵ１８が否定判断した場合、上記ステップ１０２に戻る。一方、ステップ１０９で、ＣＰＵ１８が肯定判断した場合、ステップ１１０で、Ａ（ｎ）にｔｍｐが代入される。これは、ステップ１０９で肯定判断された場合、ｎ＝２５４であり、またｔｍｐにはＡ（２５３）とＡ（２５５）の平均が代入されているためである。
【００４４】
次のステップ１１１で、ＣＰＵ１８は、Ｅｍａｘが閾値Ｄより大きいか否か判断する。ステップ１１１で、ＣＰＵ１８が肯定判断した場合、上記ステップ１０１に戻り、否定判断した場合、処理を終了する。
【００４５】
このように、差の絶対値の最大値Ｅｍａｘが閾値Ｄ以下となるまで処理が実行される。図４は、上述した正規化処理によりＡ（ｎ）が変化する様子を示す図である。同図は、上記ループ処理（ステップ１０１〜１１１）を３回繰り返して閾値Ｄ以下となった場合のＡ（ｎ）が変化する様子を示す図である。また、同図に示される左側のグラフでは、×印が処理前のＡ（ｎ）を、黒点がステップ１０２により求められた新たなＡ（ｎ）を示している。一方、右側のグラフでは、×印がその回の処理でステップ１０２により求められた新たなＡ（ｎ）を示している。
【００４６】
例えば１回目のｎとＡ（ｎ）の対応は、Ａ（０）＝０、Ａ（１）＝０、Ａ（２）＝１、Ａ（３）＝１、Ａ（４）＝２である。
【００４７】
従って、ステップ１０２で、Ａ＝０．５（＝（Ａ（０）＋Ａ（２））／２）となる。同様に、Ａ（２）＝０．５、Ａ（３）＝１．５となる。
【００４８】
以下同様に、ループ処理を２回目、３回目と繰り返すことで、Ｅｍａｘが小さくなることが示されている。
【００４９】
このような処理により正規化されたＬＵＴを用いてＬＵＴ拡張処理が実行される。ＬＵＴ拡張処理とは、Ａ（ｎ）により示されるＬＵＴにおける連続する２つの入力画素値ｎ、ｎ＋１の各々に対応する出力画素値同士Ａ（ｎ）、Ａ（ｎ＋１）の差Ｃを用いてＡ（ｎ）により示されるＬＵＴから拡張されたＬＵＴ（拡張画質変換情報）を生成する処理である。
【００５０】
このＬＵＴ拡張処理の流れを、図５、図６を用いて説明する。なお、このフローチャートにおいて、Ｂ（ｎ）は、拡張されたＬＵＴにおける入力画素値ｎに対応する出力画素値を示している。また、Ａ（ｎ）は先ほどと同様、ｎが０〜２５５で定義され、Ｂ（ｎ）は、入力画素値が１０ビットのため、ｎが０〜１０２３で定義されている。更に記号［Ｘ］は、Ｘの小数点第１位を四捨五入して整数化した値を示している。
【００５１】
まず、ステップ２０１で、ＣＰＵ１８は、ループカウンタｎを０で初期化する。次のステップ２０２で、ＣＰＵ１８は、Ｂ（４ｎ）に［Ａ（ｎ）］を代入し、ステップ２０３で、ＣにＡ（ｎ＋１）とＡ（ｎ）との差を代入する。
【００５２】
次にＣＰＵ１８は、ステップ２０４で、Ｂ（４ｎ＋１）に［Ａ（ｎ）＋Ｃ／４］を代入し、ステップ２０５でＢ（４ｎ＋２）に［Ａ（ｎ）＋Ｃ／２］を代入し、更にステップ２０６で、Ｂ（４ｎ＋３）に［Ａ（ｎ）＋Ｃ×（３／４）］を代入する。
【００５３】
次のステップ２０７で、ＣＰＵ１８は、ループカウンタｎを１つ増分し、次のステップ２０８で、ｎが２５４を越えたか否か判断する。この判断で用いられる値が２５５ではない理由は、ステップ２０３で「ｎ＋１」が用いられるためであり、このステップ２０３において、ｎ＝２５５のときは、Ａ（２６６）が存在しないため、差を求めることができないためである。
【００５４】
以上の処理により、ｎが０〜１０１９に対応する新たなＬＵＴに対応するＢ（ｎ）が生成される。次に、ｎが１０２０〜１０２３の場合のＢ（ｎ）を定める処理の流れを、図６のフローチャートを用いて説明する。
【００５５】
まず、ステップ３０１で、ＣＰＵ１８は、Ｂ（１０２０）に［Ａ（２５５）］を代入し、ステップ３０２で、ＣにＡ（２５５）とＡ（２５４）との差を代入する。
【００５６】
次にＣＰＵ１８は、ステップ３０３で、Ｂ（１０２１）に［Ａ（２５５）＋Ｃ／４］を代入し、ステップ３０４でＢ（１０２２）に［Ａ（２５５）＋Ｃ／２］を代入し、更にステップ３０５で、Ｂ（１０２３）に［Ａ（２５５）＋Ｃ×（３／４）］を代入する。
【００５７】
以上の処理により、ｎ＝０〜１０２３に対応するＢ（ｎ）が定まるため、入力画素値を１０ビットに拡張したＬＵＴが生成される。図７は、上述した拡張ＬＵＴ生成処理により生成されたＬＵＴの出力値と、単に線形補間により生成されたＬＵＴの出力値を示すグラフである。
【００５８】
同図に示されるように、拡張ＬＵＴ生成処理により生成されたＬＵＴの出力値（破線）は、０〜２が３つずつ、３と４が２つずつ、５以降は１つずつとほぼ理想曲線による出力値となっている。一方、線形補間によるＬＵＴの出力値（実線）は、０が５つ、１〜３及び５〜８が１つずつ、４が５つと理想曲線による出力値とはほど遠い値となっている。
【００５９】
次に、拡張したＬＵＴを用いて８ビット画像を拡張した１０ビット画像に対して画像画質変換する画質変換処理の流れを、図８のフローチャートを用いて説明する。なお、このフローチャートでは、画質変換される画像の画素の数をＭとしている。
【００６０】
まず、ステップ４０１で、ＣＰＵ１８は、チャネル（ＲＧＢ）に対応したＬＵＴを選択する。選択したＬＵＴをここではＢ（ｎ）とする。次のステップ４０２で、ＣＰＵ１８は、ループカウンタｎを０で初期化する。次のステップ４０３で、ＣＰＵ１８は、画素値Ｓ（ｎ）をＰに代入する。次いでステップ４０４で、ＣＰＵ１８は、乱数Ｒを生成する。この乱数Ｒはその絶対値を２未満とするものとなっている。
【００６１】
次にＣＰＵ１８は、ステップ４０５で、Ｑに４Ｐ＋Ｒを代入する。ここで、Ｐを４倍することは、８ビットから１０ビットに拡張するためである。また、絶対値を２未満とするＲを加えることは、４Ｐ＋Ｒの最大値と最小値の差を最大で４未満とするためである。
【００６２】
例えば元の画素値が１の場合、４Ｐ＋Ｒは２〜６となり、元の画素値が２の場合、４Ｐ＋Ｒは６〜１０となる。このことは元の画素値の±１未満の範囲で、元の画素値を乱数で散らしていることとなる。このように元の画素値の±１未満の範囲で画素値を散らすことで、拡張されても他の画素値から拡張された値と等しくなることを極力回避することができ、乱数による画像の劣化を回避することができる。
【００６３】
また、上記乱数Ｒを０以上４（＝２Ｋ−Ｎ）未満の値としても良い。この場合も４Ｐ＋Ｒの最大値と最小値の差を最大で４未満とすることができる。
【００６４】
なお、一般的に入力画素値Ｑを画素値がＮビットの画素で構成される画像の画素値とし、実数Ｒをその絶対値が２Ｋ−Ｎ−１未満の乱数としたとき、画素値ＱをＫビットに拡張したＱ'を、Ｑ'＝２Ｋ−Ｎ×Ｑ＋Ｒにより算出する。
【００６５】
上述した例では、Ｎ＝８、Ｋ＝１０であるので、２Ｋ−Ｎ＝４であり、２Ｋ−Ｎ−１＝２（＝Ｒの絶対値）である。
【００６６】
フローチャートに戻り、ステップ４０６で、ＣＰＵ１８は、Ｑが負か否か判断する。このステップでＣＰＵ１８が否定判断した場合、ステップ４０８の処理を実行する。一方、ＣＰＵ１８が肯定判断した場合、ステップ４０７でＣＰＵ１８は、Ｑに０を代入する。
【００６７】
次に、ＣＰＵ１８は、ステップ４０８で、Ｂ（［Ｑ］）をＱ'（ｎ）に代入する。これにより色調変換されたＱ'（ｎ）が得られる。次のステップ４０９で、ＣＰＵ１８は、ｎを１つ増分し、ステップ４１０で、ｎ＞Ｍか否か、すなわち全ての画素に対して画質変換処理を実行したか否かを判断し、否定判断した場合は再びステップ４０３の処理を実行し、肯定判断した場合は処理を終了する。
【００６８】
なお、以上説明した各フローチャートの処理の流れは一例であり、本発明の主旨を逸脱しない範囲内で処理順序を入れ替えたり、新たなステップを追加したり、不要なステップを削除したりすることができることは言うまでもない。
【図面の簡単な説明】
【００６９】
【図１】本実施の形態に係るパソコンの構成を示す図である。
【図２】画像処理を実行する機能ブロックを示す図である。
【図３】ＬＵＴ正規化処理の流れを示すフローチャートである。
【図４】ＬＵＴ正規化処理によりＡ（ｎ）が変化する様子を示す図である。
【図５】ＬＵＴ拡張処理の流れを示すフローチャート（その１）である。
【図６】ＬＵＴ拡張処理の流れを示すフローチャート（その２）である。
【図７】拡張ＬＵＴ生成処理により生成されたＬＵＴの出力値と線形補間により生成されたＬＵＴの出力値を示すグラフである。
【図８】画質変換処理の流れを示すフローチャートである。
【図９】階調飛びが発生した場合の濃度ヒストグラムの一例を示す図である。
【図１０】線形補間を行った場合の入出力曲線及び理想の入出力曲線の一例を示すグラフである。
【符号の説明】
【００７０】
１０  パソコン
１８  ＣＰＵ
２０  ＨＤＤ
２２  ＲＡＭ
４０Ａ、４０Ｂ  ＬＵＴ
４２  拡張ＬＵＴ生成部
４４  画質変換部
【図１】
2008072280.tif 000003
【図２】
2008072280.tif 000004
【図３】
2008072280.tif 000005
【図４】
2008072280.tif 000006
【図５】
2008072280.tif 000007
【図６】
2008072280.tif 000008
【図７】
2008072280.tif 000009
【図８】
2008072280.tif 000010
【図９】
2008072280.tif 000011
【図１０】
2008072280.tif 000012