しかしながら、従来の文献に開示された処理では、図7(h)に示したガンマ補正演算が行われるので、出力値Outを生成するのに多大な時間を要するという問題点があった。つまり、ガンマ補正演算は複雑な演算処理であるために、計算量が多くなってしまうからである。しかも、一般に、画像(入力画像)を構成する画素は膨大な数であるため、各画素のそれぞれについて出力値Outを、上記(4)式に従って算出すると、更に処理時間を増大(処理速度を低下)させる一因となるという問題点があった。
本発明は、上記問題点を解決するためになされたものであり、レティネックス処理を高速で行うことができる画像処理プログラムおよび画像処理装置を提供することを目的としている。
この目的を達成するために、請求項1記載の画像処理プログラムは、画像の補正処理を行う画像処理装置に搭載され、元画像における注目画素の画素信号の値と注目画素周辺の周辺画素の平均輝度値とに基づいて注目画素と周辺画素との相対的な明るさの指標となる反射光成分値を算出する反射光成分算出ステップと、その反射光成分算出ステップにて算出された反射光成分値をパラメータとして注目画素の画素信号の値をガンマ補正した補正値と、注目画素の画素信号の値とに基づいて出力画像の画素信号を生成する画素信号生成ステップとを備え、レティネックス処理による画像の補正を実行するものであって、前記画素信号生成ステップは、第1の画素信号の値に対し予め定めた反射光成分値をパラメータとしてガンマ補正を行った補正値、または、その補正値と第1の画素信号の値とに基づいて算出された第2の画素信号の値を画素信号生成因子とし、その画素信号生成因子を第1の画素信号の値に対応つけて予め記憶する記憶手段から、注目画素の画素信号の値に基づいて対応する画素信号生成因子を抽出する抽出ステップと、その抽出ステップにて抽出された画素信号生成因子に基づいて出力画像の画素信号を生成する抽出生成ステップとを備えており、前記記憶手段に予め記憶された画素信号生成因子に対してなされたガンマ補正においてパラメータとされた前記予め定めた反射光成分値は、注目画素の画素信号の値と注目画素周辺の周辺画素の平均輝度値とが略同じである場合に、前記反射光成分算出ステップにて算出される値とされている。
尚、画素信号生成ステップは、元画像の全ての画素信号について、一義的に抽出生成ステップにて出力画像の画素信号生成を行うものであってもよく、また、元画像の一部の画素信号について抽出生成ステップによる出力画像の画素信号生成を行うものであっても良い。元画像の一部の画素信号について抽出生成ステップで出力画像の画素信号生成を行う場合は、例えば、反射光成分算出ステップにて算出された反射光成分値を基準に、抽出生成ステップによる出力画像の画素信号生成を行うかを判断してもよい。また、抽出生成ステップにて出力画像の画素信号が生成されない残りの画素信号については、ガンマ補正演算にて補正値を求めて出力画像の画素信号を生成しても良い。
また、補正値生成に関与するガンマ補正は、広義のガンマ補正であって、ガンマ関数による補正のみならず、画素信号の値が「0」から所定範囲の小さい値側にある場合にその値を増大させた出力値を生成するものであって且つ単調増加関数でない非線形の関数による補正を含む概念である。
請求項2記載の画像処理プログラムは、請求項1記載の画像処理プログラムにおいて、前記記憶手段に予め記憶される画素信号生成因子は、予め定めた複数の反射光成分値のそれぞれに対応して算出されたものであり、前記抽出ステップは、前記反射光成分算出ステップにより算出された反射光成分値に対応する画素信号生成因子を前記記憶手段から抽出する一方、前記算出された反射光成分値が前記記憶手段に予め記憶される画素信号生成因子に対応するものでない場合には、前記予め定めた複数の反射光成分値の内、前記反射光成分算出ステップにより算出された反射光成分値を跨ぐ2つの値について、対応する画素信号生成因子を前記記憶手段から抽出するものであり、前記抽出生成ステップは、前記抽出ステップにて抽出された2の画素信号生成因子に対し、前記反射光成分算出ステップにより算出された反射光成分値に基づいた補間演算を行って、出力画像の画素信号を生成するものである。
請求項3記載の画像処理プログラムは、請求項1又は2に記載の画像処理プログラムにおいて、前記画素信号生成ステップは、前記反射光成分算出ステップにより算出された反射光成分値について、所定割合以上の画素が属する範囲となることを条件に、反射光成分値の正規化範囲を決定する範囲決定ステップと、その範囲決定ステップにより決定された正規化範囲を予め定めた上限値と下限値との範囲とする変換により、前記正規化範囲に属する各反射光成分値を正規化して正規化反射光成分値を算出する正規化ステップとを有し、その正規化ステップにて正規化された正規化反射光成分値を前記反射光成分値として用いて出力画像の画素信号を生成するものであり、前記記憶手段に予め記憶された画素信号生成因子に対してなされたガンマ補正においてパラメータとされた前記予め定めた反射光成分値は、前記正規化ステップにより正規化された値が取る範囲の正規化反射光成分値とされている。
請求項4記載の画像処理プログラムは、請求項2記載の画像処理プログラムにおいて、前記画素信号生成ステップは、前記反射光成分算出ステップにより算出された反射光成分値について、所定割合以上の画素が属する範囲となることを条件に、反射光成分値の正規化範囲を決定する範囲決定ステップと、その範囲決定ステップにより決定された正規化範囲を予め定めた上限値と下限値との範囲とする変換により、前記正規化範囲に属する各反射光成分値を正規化して正規化反射光成分値を算出する正規化ステップとを有し、その正規化ステップにて正規化された正規化反射光成分値を前記反射光成分値として用いて出力画像の画素信号を生成するものであり、前記記憶手段に予め記憶された画素信号生成因子に対してなされたガンマ補正においてパラメータとされた前記予め定めた反射光成分値には、前記正規化ステップにより正規化された値が取る範囲の正規化反射光成分値であって、前記正規化ステップにて正規化範囲を変換するために予め定められた上限値と下限値とが採用されている。
請求項5記載の画像処理プログラムは、画像の補正処理を行う画像処理装置に搭載され、元画像における注目画素の画素信号の値と注目画素周辺の周辺画素の平均輝度値とに基づいて注目画素と周辺画素との相対的な明るさの指標となる反射光成分値を算出する反射光成分算出ステップと、その反射光成分算出ステップにて算出された反射光成分値をパラメータとして注目画素の画素信号の値をガンマ補正した補正値と、注目画素の画素信号の値とに基づいて出力画像の画素信号を生成する画素信号生成ステップとを備え、レティネックス処理による画像の補正を実行するものであり、前記画素信号生成ステップは、前記反射光成分算出ステップにより算出された反射光成分値について、所定割合以上の画素が属する範囲となることを条件に、反射光成分値の正規化範囲を決定する範囲決定ステップと、その範囲決定ステップにより決定された正規化範囲を、予め定めた上限値と下限値との範囲とする変換により、前記正規化範囲に属する各反射光成分値を正規化して正規化反射光成分値を算出する正規化ステップと、第1の画素信号の値に対し予め定めた正規化反射光成分値をパラメータとしてガンマ補正を行った補正値、または、その補正値と第1の画素信号の値とに基づいて算出された第2の画素信号の値を画素信号生成因子とし、その画素信号生成因子を第1の画素信号の値に対応つけて予め記憶する記憶手段から、注目画素の画素信号の値に基づいて対応する画素信号生成因子を抽出する抽出ステップと、その抽出ステップにて抽出された画素信号生成因子に基づいて出力画像の画素信号を生成する抽出生成ステップとを備え、前記正規化ステップにて正規化された正規化反射光成分値を前記反射光成分値として用いて出力画像の画素信号を生成するものであり、前記記憶手段に予め記憶された画素信号生成因子に対してなされたガンマ補正においてパラメータとされた前記予め定めた正規化反射光成分値は、前記正規化ステップにて求められる元画像の正規化反射光成分値の平均値、中央値、最頻値のいずれかに対応する値とされている。
尚、画素信号生成ステップは、元画像の全ての画素信号について、一義的に抽出生成ステップにて出力画像の画素信号生成を行うものであってもよく、また、元画像の一部の画素信号について抽出生成ステップによる出力画像の画素信号生成を行うものであっても良い。元画像の一部の画素信号について抽出生成ステップで出力画像の画素信号生成を行う場合は、例えば、正規化ステップにて算出された正規化反射光成分値を基準に、抽出生成ステップによる出力画像の画素信号生成を行うかを判断してもよい。また、抽出生成ステップにて出力画像の画素信号が生成されない残りの画素信号については、ガンマ補正演算にて補正値を求めて出力画像の画素信号を生成しても良い。
請求項6記載の画像処理プログラムは、請求項5記載の画像処理プログラムにおいて、
前記記憶手段に予め記憶される画素信号生成因子は、予め定めた複数の正規化反射光成分値のそれぞれに対応して算出されたものであり、前記抽出ステップは、前記正規化ステップにより正規化された正規化反射光成分値に対応する画素信号生成因子を前記記憶手段から抽出する一方、前記正規化された正規化反射光成分値が、前記記憶手段に予め記憶される画素信号生成因子に対応するものでない場合には、前記予め定めた複数の正規化反射光成分値の内、前記正規化ステップにて正規化された正規化反射光成分値を跨ぐ2つの値について、対応する画素信号生成因子を前記記憶手段から抽出するものであり、前記抽出生成ステップは、前記抽出ステップにて抽出された2の画素信号生成因子に対し、前記正規化ステップにて正規化された正規化反射光成分値に基づいた補間演算を行って、出力画像の画素信号を生成するものである。
請求項7記載の画像処理プログラムは、請求項6記載の画像処理プログラムにおいて、前記記憶手段に予め記憶された画素信号生成因子に対してなされたガンマ補正においてパラメータとされた前記予め定めた正規化反射光成分値には、前記正規化ステップにて正規化範囲を変換するために予め定められた上限値と下限値とが採用されている。
請求項8記載の画像処理プログラムは、請求項3から7のいずれかに記載の画像処理プログラムにおいて、前記正規化範囲を変換するために予め定められた下限値は、0を超える値とされている。
請求項9記載の画像処理プログラムは、請求項3から8のいずれかに記載の画像処理プログラムにおいて、前記正規化範囲を変換するために予め定められた上限値は、1以上の値とされている。
請求項10記載の画像処理プログラムは、請求項8又は9に記載の画像処理プログラムにおいて、前記正規化範囲を変換するために予め定められた上限値と下限値との幅は、1とされている。
請求項11記載の画像処理装置は、元画像における注目画素の画素信号の値と注目画素周辺の周辺画素の平均輝度値とに基づいて注目画素と周辺画素との相対的な明るさの指標となる反射光成分値を算出する反射光成分算出手段と、その反射光成分算出手段にて算出された反射光成分値をパラメータとして注目画素の画素信号の値をガンマ補正した補正値と、注目画素の画素信号の値とに基づいて出力画像の画素信号を生成する画素信号生成手段とを備え、レティネックス処理による画像の補正を実行するものであり、第1の画素信号の値に対し予め定めた反射光成分値をパラメータとしてガンマ補正を行った補正値、または、その補正値と第1の画素信号の値とに基づいて算出された第2の画素信号の値を画素信号生成因子とし、その画素信号生成因子を第1の画素信号の値に対応つけて予め記憶する記憶手段を備えており、前記画素信号生成手段は、その記憶手段から、注目画素の画素信号の値に基づいて対応する画素信号生成因子を抽出する抽出手段と、その抽出手段にて抽出された画素信号生成因子に基づいて出力画像の画素信号を生成する抽出生成手段とを備えており、前記記憶手段に予め記憶された画素信号生成因子に対してなされたガンマ補正においてパラメータとされた前記予め定めた反射光成分値は、注目画素の画素信号の値と注目画素周辺の周辺画素の平均輝度値とが略同じである場合に、前記反射光成分算出手段にて算出される値とされていることを特徴とする画像処理装置。
尚、補正値生成に関与するガンマ補正は、広義のガンマ補正であって、ガンマ関数による補正のみならず、画素信号の値が「0」から所定範囲の小さい値側にある場合にその値を増大させた出力値を生成するものであって且つ単調増加関数でない非線形の関数による補正を含む概念である。
請求項12記載の画像処理装置は、元画像における注目画素の画素信号の値と注目画素周辺の周辺画素の平均輝度値とに基づいて注目画素と周辺画素との相対的な明るさの指標となる反射光成分値を算出する反射光成分算出手段と、その反射光成分算出手段にて算出された反射光成分値をパラメータとして注目画素の画素信号の値をガンマ補正した補正値と、注目画素の画素信号の値とに基づいて出力画像の画素信号を生成する画素信号生成手段とを備え、レティネックス処理による画像の補正を実行するものであり、第1の画素信号の値に対し予め定めた正規化反射光成分値をパラメータとしてガンマ補正を行った補正値、または、その補正値と第1の画素信号の値とに基づいて算出された第2の画素信号の値を画素信号生成因子とし、その画素信号生成因子を第1の画素信号の値に対応つけて予め記憶する記憶手段を備えており、前記画素信号生成手段は、前記反射光成分算出手段により算出された反射光成分値について、所定割合以上の画素が属する範囲となることを条件に、反射光成分値の正規化範囲を決定する範囲決定手段と、その範囲決定手段により決定された正規化範囲を、予め定めた上限値と下限値との範囲とする変換により、前記正規化範囲に属する各反射光成分値を正規化して正規化反射光成分値を算出する正規化手段と、前記記憶手段から、注目画素の画素信号の値に基づいて対応する画素信号生成因子を抽出する抽出手段と、その抽出手段にて抽出された画素信号生成因子に基づいて出力画像の画素信号を生成する抽出生成手段とを備え、前記正規化手段にて正規化された正規化反射光成分値を前記反射光成分値として用いて出力画像の画素信号を生成するものであり、前記記憶手段に予め記憶された画素信号生成因子に対してなされたガンマ補正においてパラメータとされた前記予め定めた正規化反射光成分値は、前記正規化手段にて求められる元画像の正規化反射光成分値の平均値、中央値、最頻値のいずれかに対応する値とされていることを特徴とする画像処理装置。
尚、補正値生成に関与するガンマ補正は、広義のガンマ補正であって、ガンマ関数による補正のみならず、画素信号の値が「0」から所定範囲の小さい値側にある場合にその値を増大させた出力値を生成するものであって且つ単調増加関数でない非線形の関数による補正を含む概念である。
請求項1記載の画像処理プログラムによれば、反射光成分算出ステップにより反射光成分値が算出される。ここで、反射光成分値は、注目画素と周辺画素との相対的な明るさの指標とされるものであって、元画像における注目画素の画素信号の値と注目画素周辺の周辺画素の平均輝度値とに基づいて算出される。そして、この算出された反射光成分値をパラメータとして注目画素の画素信号の値をガンマ補正した補正値と、注目画素の画素信号の値とに基づいて、画素信号生成ステップにより、出力画像の画素信号が、即ち、レティネックス処理による補正がなされた画素信号が、生成される。かかる画素信号生成ステップでは、抽出ステップにより、記憶手段から、注目画素の画素信号の値に基づいて対応する画素信号生成因子が抽出され、その抽出ステップにて抽出された画素信号生成因子に基づいて、出力画像の画素信号が、抽出生成ステップにて生成される。
よって、かかる抽出生成ステップにより、ガンマ補正の複雑な演算を行うことなく出力画像の画素信号を生成することができるので、元画像に対するレティネックス処理を行って出力画像を生成する一連の画像処理において演算量を減らすことができ、高速で処理を行うことができるという効果がある。
また、記憶手段には、画素信号生成因子として、第1の画素信号の値に対し予め定めた反射光成分値をパラメータとしてガンマ補正を行った補正値、または、その補正値と第1の画素信号の値とに基づいて算出された第2の画素信号の値が、第1の画素信号の値に対応つけて予め記憶されている。記憶される画素信号生成因子は、第1の画素信号の値に対してガンマ補正を行って導出された値であるが、ガンマ補正においては、予め定めた反射光成分値がその演算のパラメータとされている。そして、このパラメータである予め定めた反射光成分値は、注目画素の画素信号の値と注目画素周辺の周辺画素の平均輝度値とが略同じである場合に、反射光成分算出ステップにて算出される値とされている。従って、ガンマ補正の演算を行うのではなく、元画像の注目画素の画素信号の値に対応する値を記憶手段から抽出するという簡便な処理にて出力画像の画素信号を生成しても、精度良く、該画素信号の値を生成することができるという効果がある。
抽出生成ステップにて生成される出力画像の画素信号の値を、元画像の画素信号の値を実際にガンマ補正して得られる値に近似させるためには、本プログラムにて取り扱う画素信号生成因子、即ち、記憶手段に記憶させる画素信号生成因子を、どのように設計するかが重要となる。ここで、画素信号生成因子(第1の画素信号の値をガンマ補正した補正値)は、パラメータとする反射光成分値によって大きく変化するので、記憶手段に記憶させる画素信号生成因子を設計する上で、ガンマ補正のパラメータとする予め定めた反射光成分値をどのようするかが肝要となる。
記憶手段に記憶される画素信号生成因子は、元画像の大部分においては、注目画素の画素信号の値とその周辺画素の平均輝度値とが略同じとなることから、注目画素の画素信号の値とその周辺画素の平均輝度値とが略同じである場合に反射光成分算出ステップにて算出される反射光成分値をガンマ補正のパラメータとして設計されている。これによれば、抽出生成ステップにて出力画像の画素信号の値を生成すると、元画像の大部分については、ガンマ補正の演算で生成した場合と同様の結果(近似した結果)を得ることができる。その結果、ガンマ補正の演算を行って出力画像の画素信号を生成した場合と比べて、画像品質を大きく劣化させることがない上、高速で出力画像の生成を行うことができるという効果がある。
請求項2記載の画像処理プログラムによれば、請求項1記載の画像処理プログラムの奏する効果に加え、抽出ステップにて、反射光成分算出ステップにより算出された反射光成分値に対応する画素信号生成因子が記憶手段から抽出される一方、算出された反射光成分値が記憶手段に予め記憶される画素信号生成因子に対応するものでない場合には、予め定めた複数の反射光成分値の内、反射光成分算出ステップにより算出された反射光成分値を跨ぐ2つの値について対応する画素信号生成因子が記憶手段から抽出される。そして、抽出ステップにて抽出された2の画素信号生成因子に対し、抽出生成ステップにて、反射光成分算出ステップにより算出された反射光成分値に基づいた補間演算が行われて、出力画像の画素信号が生成される。
記憶手段に記憶される画素信号生成因子が唯一の反射光成分値に対応するもののみとされていると、元画像の各注目画素に対応する出力画像の各画素信号を全て、抽出生成ステップにて生成しようとすれば、反射光成分算出ステップにより算出される全ての反射光成分値を、その唯一の反射光成分値として扱わねばならない。ところが、実際には、反射光成分算出ステップにて算出される反射光成分値は、唯一の値とはならないため、かかる条件下で抽出生成ステップが生成する値は、生成されるべき値(ガンマ補正演算を行った場合に得られる値)から大きくずれてしまいかねない。
しかし、記憶手段には、予め定めた複数の反射光成分値に対応する画素信号生成因子が記憶されており、本プログラムにおいては、抽出生成ステップにおいて、出力画像の画素信号の値生成に際し、算出された反射光成分値に対応する適切な画素信号生成因子を選択することができる。よって、抽出生成ステップにて生成される出力画像の画素信号の値について、その生成されるべき値からのずれを抑制することができる。
更には、反射光成分算出ステップにより算出された反射光成分値が記憶手段に予め記憶される画素信号生成因子に対応するものでなくとも、算出された反射光成分値に対応する画素信号生成因子を補間演算によって導出することができる。故に、様々な反射光成分値が反射光成分算出ステップにより算出されても、補間演算を行うことによって得られる画素信号生成因子を元に、抽出生成ステップで、適切な出力画像の画素信号の値を生成することができるという効果がある。
このため、反射光成分算出ステップにて算出される様々な反射光成分値に対応して膨大な画素信号生成因子を記憶手段に記憶させておく必要が無く、画素信号生成因子を記憶するために必要な記憶手段のメモリ容量を抑制することができる。
また、抽出生成ステップは、注目画素の画素信号の値とその周辺画素の平均輝度値とが略同じである場合に反射光成分算出ステップにて算出される反射光成分値をパラメータとした画素信号生成因子を用いて補間演算を行って、出力画像の画素信号の値を生成することができる。このため、生成した画素信号の値とその周辺画素の画素信号の値との輝度差の正負を、入力画像と同じ符号とすることができるという効果がある。つまり、注目画素と周辺画素とを比較した場合、注目画素が周辺画素に比べて明るい、同じ、暗いの3つのパターンが生じる。注目画素の画素信号の値とその周辺画素の平均輝度値とが略同じである場合は、注目画素と周辺画素との明るさ(輝度)が同じ場合に対応している。つまり、注目画素の画素信号の値とその周辺画素の平均輝度値とが略同じである場合に、反射光成分算出ステップにて算出される反射光成分値は、注目画素と周辺画素との輝度差の正負が反転する境界となる。従って、かかる反射光成分値に対応する画素信号生成因子が記憶手段に記憶されていると、抽出生成ステップが補間演算を行って画素信号の値を生成する場合に、かかる境界を跨ぐ補間演算は実行されない。言い換えれば、注目画素の輝度と周辺画素の輝度との正負が反転する境界を境にした補間演算が行われるので、両者の輝度の差が出力画像において反転することがない(輝度差の正負を入力画像と同じ符号となる)。故に、出力画像において入力画像と異なった不自然なコントラストが発生することを回避することができるという効果がある。
請求項3記載の画像処理プログラムによれば、請求項1又は2に記載の画像処理プログラムの奏する効果に加え、反射光成分算出ステップにより算出された反射光成分値について所定割合以上の画素が属する範囲となることを条件に、反射光成分値の正規化範囲が、範囲決定ステップにて決定されると、決定された正規化範囲を予め定めた上限値と下限値との範囲とする変換により、正規化範囲に属する反射光成分値を正規化した正規化反射光成分値が、正規化ステップにて算出される。
反射光成分算出ステップにより算出された反射光成分値の全ての値を許容していては、扱う数値範囲が膨大な範囲に及んでしまうため、算出された反射光成分値を用いた処理において処理速度の低下を招いてしまう。よって、正規化ステップで反射光成分値を正規化することにより、反射光成分算出ステップにより算出された反射光成分値を、現実的な範囲で取扱う事ができ、処理速度を向上させることができるという効果がある。また、正規化ステップにて正規化を行うことにより、ノイズ等の影響をカットすることができるという効果がある。
更に、記憶手段に予め記憶された画素信号生成因子に対してなされたガンマ補正においてパラメータとされた予め定めた反射光成分値は、正規化ステップにより正規化された値が取る範囲の正規化反射光成分値とされているので、抽出ステップにて抽出された画素信号生成因子に基づいて抽出生成ステップが出力画像の画素信号を生成することにより、正規化反射光成分値を反射光成分値として用いて、出力画像の画素信号を生成することができる。
ここで、本プログラムは、正規化ステップにて正規化された正規化反射光成分値を反射光成分値として用いて出力画像の画素信号を生成するものであるので、例えば、入力画像の一部についてガンマ補正の演算を行って出力画像の画像の画素信号の値を生成する場合にも、正規化ステップにて正規化された正規化反射光成分値に対してのガンマ補正の演算が行われることとなる。かかる場合においては、入力画像の他の部分については、抽出生成ステップにて出力画像の画素信号の値が生成されるが、その抽出生成ステップにて生成される出力画像の画素信号の値も、正規化反射光成分値を用いて生成されるものとなるので、画像全体のトーンを均質なものとすることができる。
更には、請求項2に従属する画像処理プログラムによれば、正規化ステップにて正規化された正規化反射光成分値に対応する画素信号生成因子が、抽出ステップにて抽出されることとなる。正規化された正規化反射光成分値が取る範囲は、予め定めた上限値から下限値に至る範囲であるので、正規化ステップにより正規化された正規化反射光成分値と、記憶手段に予め記憶させておく画素信号生成因子の算出に関与した正規化反射光成分値とは同じ範囲で規定されるものとなる。正規化された値が取る範囲、即ち、上限値および下限値に応じて、正規化後の値は変化するため、正規化ステップにより正規化された正規化反射光成分値と、記憶手段に予め記憶させておく画素信号生成因子の算出に関与した正規化反射光成分値とを同じ範囲で規定することにより、両者を整合することができる。その結果、抽出ステップが、画素信号生成因子の記憶手段から抽出を、正規化ステップにて正規化された正規化反射光成分値に基づいて行うことにより、的確な画素信号生成因子の抽出を行うことができるという効果がある。
請求項4記載の画像処理プログラムによれば、請求項2記載の画像処理プログラムの奏する効果に加え、反射光成分算出ステップにより算出された反射光成分値について所定割合以上の画素が属する範囲となることを条件に、反射光成分値の正規化範囲が、範囲決定ステップにて決定されると、決定された正規化範囲を予め定めた上限値と下限値との範囲とする変換により、正規化範囲に属する反射光成分値を正規化した正規化反射光成分値が、正規化ステップにて算出される。このため、予め定めた上限値と下限値とは、それぞれ正規化反射光成分値の上限値と下限値となる。そして、正規化ステップにて正規化された正規化反射光成分値を反射光成分値として用いて、画素信号生成ステップにより出力画像の画素信号が生成される。抽出ステップにおいては、正規化反射光成分値に基づいて記憶手段から画素信号生成因子が抽出される。ここで、記憶手段に予め記憶された画素信号生成因子に対してなされたガンマ補正においてパラメータとされた予め定めた反射光成分値には、正規化ステップにより正規化された値が取る範囲の正規化反射光成分値であって、正規化ステップにて正規化範囲を変換するために予め定められた上限値と下限値とが採用されている。
よって、記憶手段には、注目画素の画素信号の値と注目画素周辺の周辺画素の平均輝度値とが略同じである場合に反射光成分算出ステップにて算出される反射光成分値の正規化反射光成分値に対応する画素信号生成因子に加え、予め定めた上限値と下限値とのそれぞれに対応する画素信号生成因子が記憶されることとなり、正規化ステップにて正規化された正規化反射光成分値が取り得る全範囲において、抽出生成ステップによって、出力画像の画素信号を生成することができるという効果がある。従って、元画像に対するレティネックス処理を行って出力画像を生成する一連の画像処理を、単純なアルゴリズムで実行でき、その処理時間を短縮することができるという効果がある。
更には、記憶手段には、上限値と下限値との間のもう一点の正規化反射光成分値に対応する画素信号生成因子が保持されるので、抽出生成ステップにおいて、画素信号生成因子の補間演算を行う場合に、正規化反射光成分値の変化に対し非線形に変化する画素信号生成因子の値の偏差を反映して補間演算を実行することができ、抽出生成ステップによって生成される出力画像の画素信号の値の精度を向上させることができるという効果がある。
請求項5記載の画像処理プログラムによれば、反射光成分算出ステップにより反射光成分値が算出される。反射光成分値は、注目画素と周辺画素との相対的な明るさの指標とされるものであって、元画像における注目画素の画素信号の値と注目画素周辺の周辺画素の平均輝度値とに基づいて算出される。そして、反射光成分算出ステップにより算出された反射光成分値について所定割合以上の画素が属する範囲となることを条件に、反射光成分値の正規化範囲が、範囲決定ステップにて決定されると、決定された正規化範囲を予め定めた上限値と下限値との範囲とする変換により、正規化範囲に属する反射光成分値を正規化した正規化反射光成分値が、正規化ステップにて算出される。そして、この算出された正規化反射光成分値をパラメータとして注目画素の画素信号の値をガンマ補正した補正値と、注目画素の画素信号の値とに基づいて、画素信号生成ステップにより、出力画像の画素信号が、即ち、レティネックス処理による補正がなされた画素信号が、生成される。
かかる画素信号生成ステップでは、抽出ステップにより、記憶手段から、注目画素の画素信号の値に基づいて対応する画素信号生成因子が抽出され、抽出された画素信号生成因子に基づいて出力画像の画素信号が抽出生成ステップにて生成される。
よって、かかる抽出生成ステップにより、ガンマ補正の複雑な演算を行うことなく出力画像の画素信号を生成することができるので、元画像に対するレティネックス処理を行って出力画像を生成する一連の画像処理において演算量を減らすことができ、高速で処理を行うことができるという効果がある。
また、記憶手段には、画素信号生成因子として、第1の画素信号の値に対し予め定めた正規化反射光成分値をパラメータとしてガンマ補正を行った補正値、または、その補正値と第1の画素信号の値とに基づいて算出された第2の画素信号の値が、第1の画素信号の値に対応つけて予め記憶されている。記憶される画素信号生成因子は、第1の画素信号の値に対しガンマ補正を行って導出された値であるが、ガンマ補正においては、予め定めた反射光成分値がその演算のパラメータとされている。そして、ガンマ補正のパラメータであるこの予め定めた反射光成分値は、正規化ステップにて求められる元画像の正規化反射光成分値の平均値、中央値、最頻値のいずれかに対応する値とされている。従って、ガンマ補正の演算を行うことなく、元画像の注目画素の画素信号の値に対応する値を記憶手段から抽出するという簡便な処理にて出力画像の画素信号を生成しても、精度良く、該画素信号の値を生成することができるという効果がある。
抽出生成ステップにて生成される出力画像の画素信号の値を、元画像の画素信号の値を実際にガンマ補正して得られる値と近似させるためには、本プログラムにて取り扱う画素信号生成因子、即ち、記憶手段に記憶させる画素信号生成因子を、どのように設計するかが重要となる。画素信号生成因子(第1の画素信号の値をガンマ補正した補正値)は、パラメータとする正規化反射光成分値によって大きく変化するので、記憶手段に記憶させる画素信号生成因子を設計する上で、パラメータとする予め定めた正規化反射光成分値をどのように選定かが肝要となる。
ここで、記憶手段に記憶される画素信号生成因子のパラメータである正規化反射光成分値は、正規化ステップにて求めた元画像の正規化反射光成分値の平均値、中央値、最頻値のいずれかに対応する値とされているので、正規化反射光成分値の母集団を代表する値とすることができる。その結果、かかる正規化反射光成分値をパラメータとしてガンマ補正された画素信号生成因子は、元画像の注目画素の画素信号の値に対し、幅広く対応するものとなる。故に、抽出生成ステップにて画素信号生成因子に基づいて生成される出力画像の画素信号の値を適切なものとすることができるという効果がある。従って、ガンマ補正の演算を行って出力画像の画素信号を生成した場合と比べて、画像品質を大きく劣化させることがない上、高速で出力画像の生成を行うことができるという効果がある。
尚、本プログラムは、正規化ステップを備えているので、元画像が異なるものであっても、各元画像について得られる正規化反射光成分値は、正規化によって同様の分布態様となることが多い。従って、記憶手段に、予め、1の元画像の正規化反射光成分値の平均値、中央値、最頻値のいずれかをパラメータとして算出された画素信号生成因子を記憶させくことにより、他の元画像についても、記憶手段に記憶される画素信号生成因子を適用して、支障なく、出力画像の画素信号の値を生成することができる。
請求項6記載の画像処理プログラムによれば、請求項5記載の画像処理プログラムの奏する効果に加え、抽出ステップにて、正規化ステップにより正規化(算出)された正規化反射光成分値に対応する画素信号生成因子が記憶手段から抽出される一方、正規化ステップにより正規化された正規化反射光成分値が、記憶手段に予め記憶される画素信号生成因子に対応するものでない場合には、予め定めた複数の正規化反射光成分値の内、正規化ステップにて正規化された正規化反射光成分値を跨ぐ2つの値について対応する画素信号生成因子が、抽出ステップにより記憶手段から抽出される。そして、抽出ステップにて抽出された2の画素信号生成因子に対し、正規化ステップにて正規化された正規化反射光成分値に基づいた補間演算が、抽出生成ステップにて行われて、出力画像の画素信号が生成される。
記憶手段に記憶される画素信号生成因子が唯一の正規化反射光成分値に対応するもののみとされていると、元画像の各注目画素に対応する出力画像の各画素信号を全て、抽出生成ステップにて生成しようとすれば、正規化ステップにより算出される全ての正規化反射光成分値を、その唯一の正規化反射光成分値として扱わねばならない。ところが、実際には、反射光成分算出ステップにて算出された後に正規化ステップにて正規化された正規化反射光成分値は、唯一の値とはならないため、かかる条件下で抽出生成ステップが生成した出力画像の画素信号の値は、生成されるべき値(ガンマ補正演算を行った場合に得られる値)から大きくずれてしまいかねない。
しかし、記憶手段には、予め定めた複数の正規化反射光成分値に対応する画素信号生成因子が記憶されているので、本プログラムでは、出力画像の画素信号の値生成に際し、算出された正規化反射光成分値に対応する適切な画素信号生成因子を選択することができる。よって、抽出生成ステップにて生成される出力画像の画素信号の値について、その生成されるべき値からのずれを抑制することができる。
更には、正規化ステップにより算出された正規化反射光成分値が記憶手段に予め記憶される画素信号生成因子に対応するものでなくとも、算出された正規化反射光成分値に対応する画素信号生成因子を補間演算によって導出することができる。故に、正規化ステップにて様々な正規化反射光成分値が算出されても、補間演算を行うことによって得られる画素信号生成因子を元に、抽出生成ステップで、適切な出力画像の画素信号の値を生成することができるという効果がある。従って、反射光成分算出ステップにて算出される反射光成分値は様々であるためその反射光成分値が正規化された反射光成分値も多様となるが、かかる多様な正規化反射光成分に対応して膨大な画素信号生成因子を記憶手段に記憶させておく必要が無く、画素信号生成因子を記憶するために必要な記憶手段のメモリ容量を抑制することができる。
請求項7記載の画像処理プログラムによれば、請求項6記載の画像処理プログラムの奏する効果に加え、記憶手段に予め記憶された画素信号生成因子に対してなされたガンマ補正においてパラメータとされた予め定めた正規化反射光成分値には、正規化ステップにて正規化範囲を変換するために予め定められた上限値と下限値とが採用されているので、記憶手段には、正規化ステップにて求めた元画像の正規化反射光成分値の平均値、中央値、最頻値のいずれかに対応する正規化反射光成分値に対応する画素信号生成因子に加え、予め定めた上限値と下限値とのそれぞれに対応する画素信号生成因子が記憶されることとなり、正規化された正規化反射光成分値が取り得る全範囲において、抽出生成ステップによって、出力画像の画素信号を生成することができるという効果がある。従って、元画像に対するレティネックス処理を行って出力画像を生成する一連の画像処理を、単純なアルゴリズムで実行でき、その処理時間を短縮することができるという効果がある。
更には、記憶手段には、上限値と下限値との間のもう一点の正規化反射光成分値に対応する画素信号生成因子が保持されるので、抽出生成ステップにおいて、画素信号生成因子の補間演算を行う場合に、正規化反射光成分値の変化に対し非線形に変化する画素信号生成因子の値の偏差を反映して補間演算を実行することができ、抽出生成ステップによって生成される出力画像の画素信号の値の精度を向上させることができるという効果がある。
請求項8記載の画像処理プログラムによれば、請求項3から7のいずれかに記載の画像処理プログラムの奏する効果に加え、正規化範囲を変換するために予め定められた下限値は、0を超える値とされているので、出力画像の画素信号の値が生成不能となることを回避できるという効果がある。
一般に、レティネックス処理において、補正値を求める演算には、注目画素の画素信号の値を正規化反射光成分値で除す演算が含まれる。上記の予め定められた下限値が0である場合には、正規化反射光成分値が0を含む値となる。正規化反射光成分値が0である場合には、算出される補正値は無限大となるので算出不能となってしまう。しかし、本プログラムにおいては、正規化範囲を変換するために予め定められた下限値は、0を超える値とされているので、正規化反射光成分値を用いて算出される補正値が無限大となることを回避できる。従って、正規化反射光成分値をパラメータとしするガンマ補正を経て算出された補正値、画素信号生成因子は、必ず実在する数となるので、予め定めた下限値に対応する画素信号生成因子に基づく出力画像の画素信号の値を、抽出生成ステップによって、確実に生成することができる。
請求項9記載の画像処理プログラムによれば、請求項3から8のいずれかに記載の画像処理プログラムの奏する効果に加え、正規化範囲を変換するために予め定められた上限値は、1以上の値とされているので、出力画像の画素信号のダイナミックレンジの上側の値を、入力された元画像の画素信号のダイナミックレンジの上側以上の値とすることができるという効果がある。
例えば、元画像の画素信号が0〜255のダイナミックレンジ(上側のレンジが255)を有する場合に、出力画像の画素信号の値の上側のレンジが255未満となる補正が行われてしまうと、出力画像全体のトーンが暗くなって、画像品質を低下させてしまう。しかし、正規化範囲を変換するために予め定められた上限値は、1以上の値とされているので、正規化ステップにて正規化された正規化反射光成分値の最大値を1以上の値とする事ができる。故に、元画像の画素信号が0〜255のダイナミックレンジであれば、算出される画素生成因子の値の最大値を255以上の値とすることができ、良好な画像品質を確保することができる。
請求項10記載の画像処理プログラムによれば、請求項8又は9に記載の画像処理プログラムの奏する効果に加え、正規化範囲を変換するために予め定められた上限値と下限値との幅は、1とされているので、生成される出力画像の画素信号のダイナミックレンジを、元画像の画素信号のダイナミックレンジと略同じにすることができるという効果がある。このため、元画像に比べて、出力画像の全体の階調が極端に変化する、即ち、階調範囲が極端に狭くなったり広くなったりすることを回避できる。
請求項11記載の画像処理装置によれば、反射光成分算出手段により反射光成分値が算出される。ここで、反射光成分値は、注目画素と周辺画素との相対的な明るさの指標とされるものであって、元画像における注目画素の画素信号の値と注目画素周辺の周辺画素の平均輝度値とに基づいて算出される。そして、この算出された反射光成分値をパラメータとして注目画素の画素信号の値をガンマ補正した補正値と、注目画素の画素信号の値とに基づいて、画素信号生成手段により、出力画像の画素信号が、即ち、レティネックス処理による補正がなされた画素信号が、生成される。かかる画素信号生成手段では、抽出手段により、記憶手段から、注目画素の画素信号の値に基づいて対応する画素信号生成因子が抽出され、その抽出手段にて抽出された画素信号生成因子に基づいて、出力画像の画素信号が、抽出生成手段にて生成される。
よって、かかる抽出生成手段により、ガンマ補正の複雑な演算を行うことなく出力画像の画素信号を生成することができるので、元画像に対するレティネックス処理を行って出力画像を生成する一連の画像処理において演算量を減らすことができ、高速で処理を行うことができるという効果がある。
また、記憶手段には、画素信号生成因子として、第1の画素信号の値に対し予め定めた反射光成分値をパラメータとしてガンマ補正を行った補正値、または、その補正値と第1の画素信号の値とに基づいて算出された第2の画素信号の値が、第1の画素信号の値に対応つけて予め記憶されている。記憶される画素信号生成因子は、第1の画素信号の値に対してガンマ補正を行って導出された値であるが、ガンマ補正においては、予め定めた反射光成分値がその演算のパラメータとされている。そして、このパラメータである予め定めた反射光成分値は、注目画素の画素信号の値と注目画素周辺の周辺画素の平均輝度値とが略同じである場合に、反射光成分算出手段にて算出される値とされている。従って、ガンマ補正の演算を行うのではなく、元画像の注目画素の画素信号の値に対応する値を記憶手段から抽出するという簡便な処理にて出力画像の画素信号を生成しても、精度良く、該画素信号の値を生成することができるという効果がある。
抽出生成手段にて生成される出力画像の画素信号の値を、元画像の画素信号の値を実際にガンマ補正して得られる値に近似させるためには、記憶手段に記憶させる画素信号生成因子を、どのように設計するかが重要となる。ここで、画素信号生成因子(第1の画素信号の値をガンマ補正した補正値)は、パラメータとする反射光成分値によって大きく変化するので、記憶手段に記憶させる画素信号生成因子を設計する上で、ガンマ補正のパラメータとする予め定めた反射光成分値をどのようするかが肝要となる。
記憶手段に記憶される画素信号生成因子は、元画像の大部分においては、注目画素の画素信号の値とその周辺画素の平均輝度値とが略同じとなることから、注目画素の画素信号の値とその周辺画素の平均輝度値とが略同じである場合に反射光成分算出手段にて算出される反射光成分値をガンマ補正のパラメータとして設計されている。これによれば、抽出生成手段にて出力画像の画素信号の値を生成すると、その大部分について、ガンマ補正の演算で生成した場合と同様の結果(近似した結果)を得ることができる。その結果、ガンマ補正の演算を行って出力画像の画素信号を生成した場合と比べて、画像品質を大きく劣化させることがない上、高速で出力画像の生成を行うことができるという効果がある。
請求項12記載の画像処理装置によれば、反射光成分算出手段により反射光成分値が算出される。反射光成分値は、注目画素と周辺画素との相対的な明るさの指標とされるものであって、元画像における注目画素の画素信号の値と注目画素周辺の周辺画素の平均輝度値とに基づいて算出される。そして、反射光成分算出手段により算出された反射光成分値について所定割合以上の画素が属する範囲となることを条件に、反射光成分値の正規化範囲が、範囲決定手段にて決定されると、決定された正規化範囲を予め定めた上限値と下限値との範囲とする変換により、正規化範囲に属する反射光成分値を正規化した正規化反射光成分値が、正規化手段にて算出される。そして、この算出された正規化反射光成分値をパラメータとして注目画素の画素信号の値をガンマ補正した補正値と、注目画素の画素信号の値とに基づいて、画素信号生成手段により、出力画像の画素信号が、即ち、レティネックス処理による補正がなされた画素信号が、生成される。
かかる画素信号生成手段では、抽出手段により、記憶手段から、注目画素の画素信号の値に基づいて対応する画素信号生成因子が抽出され、抽出された画素信号生成因子に基づいて出力画像の画素信号が抽出生成手段にて生成される。
よって、かかる抽出生成手段により、ガンマ補正の複雑な演算を行うことなく出力画像の画素信号を生成することができるので、元画像に対するレティネックス処理を行って出力画像を生成する一連の画像処理において演算量を減らすことができ、高速で処理を行うことができるという効果がある。
また、記憶手段には、画素信号生成因子として、第1の画素信号の値に対し予め定めた正規化反射光成分値をパラメータとしてガンマ補正を行った補正値、または、その補正値と第1の画素信号の値とに基づいて算出された第2の画素信号の値が、第1の画素信号の値に対応つけて予め記憶されている。記憶される画素信号生成因子は、第1の画素信号の値に対しガンマ補正を行って導出された値であるが、ガンマ補正においては、予め定めた反射光成分値がその演算のパラメータとされている。そして、ガンマ補正のパラメータであるこの予め定めた反射光成分値は、正規化手段にて求められる元画像の正規化反射光成分値の平均値、中央値、最頻値のいずれかに対応する値とされている。従って、ガンマ補正の演算を行うことなく、元画像の注目画素の画素信号の値に対応する値を記憶手段から抽出するという簡便な処理にて出力画像の画素信号を生成しても、精度良く、該画素信号の値を生成することができるという効果がある。
抽出生成手段にて生成される出力画像の画素信号の値を、元画像の画素信号の値を実際にガンマ補正して得られる値と近似させるためには、記憶手段に記憶させる画素信号生成因子を、どのように設計するかが重要となる。画素信号生成因子(第1の画素信号の値をガンマ補正した補正値)は、パラメータとする正規化反射光成分値によって大きく変化するので、記憶手段に記憶させる画素信号生成因子を設計する上で、パラメータとする予め定めた正規化反射光成分値をどのように選定かが肝要となる。
ここで、記憶手段に記憶される画素信号生成因子のパラメータである正規化反射光成分値は、正規化手段にて求めた元画像の正規化反射光成分値の平均値、中央値、最頻値のいずれかに対応する値とされているので、正規化反射光成分値の母集団を代表する値とすることができる。その結果、かかる正規化反射光成分値をパラメータとしてガンマ補正された画素信号生成因子は、元画像の注目画素の画素信号の値に対し、幅広く対応するものとなる。故に、抽出生成手段にて画素信号生成因子に基づいて生成される出力画像の画素信号の値を適切なものとすることができるという効果がある。従って、ガンマ補正の演算を行って出力画像の画素信号を生成した場合と比べて、画像品質を大きく劣化させることがない上、高速で出力画像の生成を行うことができるという効果がある。
尚、本装置は、正規化手段を備えているので、元画像が異なるものであっても、各元画像について得られる正規化反射光成分値は、正規化によって同様の分布態様となることが多い。従って、記憶手段に、予め、1の元画像の正規化反射光成分値の平均値、中央値、最頻値のいずれかをパラメータとして算出された画素信号生成因子を記憶させくことにより、他の元画像についても、記憶手段に記憶される画素信号生成因子を適用して、支障なく、出力画像の画素信号の値を生成することができる。
以下、本発明の好ましい第1の実施形態について添付図面を参照して説明する。図1は、本実施形態の画像処理を行う機能を有するプリンタ1の電気的な構成を示したブロック図である。本実施形態においては、プリンタ1に搭載された画像処理プログラムは、パーソナルコンピュータ(以下「PC」と称する)2や、デジタルカメラ21や、外部メディア20から入力された画像データ(元画像データ)に対しレティネックス処理(Retinex処理)を実行して、画像データの逆光画像部分などの低画質領域の補正を行った出力画像データを生成するように構成されている。
図1に示すように、プリンタ1は、CPU11、ROM12、RAM13、印刷ヘッドなどから構成され、印刷媒体(例えば、紙媒体など)への印刷(出力)を行う印刷部15、出力画像サイズなどの入力値をユーザが入力可能なユーザ操作部(例えば、テンキーなど)を有する操作パネル16とを備えている。
また、プリンタ1は、ケーブル5を介してPC2と接続可能なインターフェイス(以下「I/F」と称する)17と、ケーブル6を介してデジタルカメラ21と接続可能なI/F18と、外部メディア20(例えば、SDメモリカード、メモリスティックなどのフラッシュメモリにより構成される)を着脱自在に装着可能な外部メディアスロット19とを備えている。これらのI/F17、18により行われる通信方法としてUSB(Universal Serial Bus)が使用される。
よって、プリンタ1には、PC2に記憶されている画像データをケーブル5及びI/F17を介して入力することが可能であると共に、デジタルカメラ21によって撮影された画像データをケーブル6及びI/F18を介して入力することが可能である。さらに、外部メディアスロット19に装着された外部メディア20から、その外部メディア20に記憶されている画像データを入力することが可能である。
CPU11は、プリンタ1全体を制御する演算処理装置である。ROM12は、CPU11により実行される各種制御プログラムやそのプログラムを実行する際に用いられる固定値などを記憶するものであり、レティネックス処理を用いた補正処理を行う画像処理プログラム12aや、印刷を行うための印刷制御プログラム12b、更には、レティネックス処理による補正を行うための上限値テーブル12c、中央値テーブル12d、下限値テーブル12e等が備えられている。尚、図5、図6に示すフローチャートのプログラムは、画像処理プログラム12aの一部としてROM12に記憶されている。
上限値テーブル12c、中央値テーブル12d、下限値テーブル12eは、レティネックス処理による補正が行われた出力値Outyを生成するためのテーブルであって、輝度信号Yとその輝度信号Yに対してレティネックス処理が行われた出力値Outyとが対応つけて記憶されている。つまり、各テーブル12c〜12eは、レティネックス処理がなされた出力値Outyを、元画像の輝度信号Yに基づいて得るためのテーブルである。プリンタ1は、この各テーブル12c〜12eを備えることにより、ガンマ補正演算を行うことなく、元画像データから、レティネックス処理がなされた出力画像データを、テーブルデータに基づいて生成することができるようになっている。
ここで、元画像データは、ラスタデータであって元画像を形成する各画素の画素値(信号強度値、RGB値)で構成されている。なお、本実施形態では、元画像データ及び出力画像データはいずれも、RGB値から構成され、これらの各RGB値は、「0」〜「255」の範囲の値である。
RGB値は、光の3原色である赤を表すR値と、緑を表すG値と、青を示すB値とを構成成分とする値である。光の3原色の混色により各種の色は生成されるので、元画像の各画素の色は、R値とG値とB値との組合せ(RGB値)により1の色(色相や階調など)が示される。このRGB値の値が大きいほど、輝度(明度)は高くなる。
本実施形態においては、かかる元画像データ(RGB値)に対して直接的にレティネックス処理を行うのではなく、元画像データのRGB値を輝度信号Yに変換してからレティネックス処理を実行するように構成されている。このため、各テーブル12c〜12eには、輝度信号Yに対しレティネックス処理による補正がなされた出力値Outyが、輝度信号Yに対応して記憶されているのである。従って、RGB値のそれぞれに対してレティネックス処理を行う場合に比べて、レティネックス処理後の出力画像において元画像のカラーバランスを維持することができる。
RGB値から(5)式に従って輝度信号Yおよび色信号Cb,Crは、算出されるが、RGB値は、予め定められた範囲であるので、輝度信号Yも予め定められた範囲の値となり、実際には「0」〜「255」となる。
このため、上記(4)式における元画像の信号強度値I(x,y)は、輝度信号Y(x,y)とされて、レティネックス処理がなされた輝度信号Yが、出力値Outyとして算出される。レティネックス処理において出力値Outを算出する(4)式によれば、ガンマ係数は任意の定数であるので、変数(パラメータ)は、元画像の画素値(輝度信号Y)と正規化反射率refleとの2つである。このため、正規化反射率refleを選定すれば、「0」〜「255」の各輝度信号Yに対応する各出力値Outyを導出することができるのである。
尚、この輝度信号Yが請求項記載の画素信号に該当する。また、本実施形態においては、輝度信号Yに対しレティネックス処理を行う構成としたが、これに代えて、RGB値をそのまま用いてレティネックス処理を行うようにしても良い。
多数の正規化反射率refleに対応する出力値Outyをテーブルデータで備えるほど、当然ながら、正確な((4)式の演算にて求める値に近似する)出力値Outyを取得することができる。しかし、テーブルデータの増大は、メモリ容量を圧迫したり、大容量のメモリが必要となるなど好ましくない。
そこで、本実施形態においては、少ないテーブル数で最適な出力値Outyを取得することができるように、予め定めた3つの正規化反射率refleに対応する3種類のテーブル12c〜12eを、ROM12に記憶させている。また、図6において後述するように、各テーブル12c〜12eからの正規化反射率refleに基づいた出力値Outyの抽出に、線形補間演算を組み合わせて、出力値Outyを生成するように画像処理プログラム12aは構成されている。これにより、プリンタ1は、テーブルデータを記憶するためのメモリ容量を抑制しつつ、的確な出力値Outyを生成することができるようになっている。
具体的には、上限値テーブル12c、中央値テーブル12d、下限値テーブル12eは、予め定めた反射率(正規化反射率refle)に対応して設けられたものであり、上限値テーブル12cは正規化反射率refleを1.3、中央値テーブル12dは正規化反射率refleを0.8、下限値テーブル12eは正規化反射率refleを0.3として、それぞれ形成されたものである。
図2は、上限値テーブル12c、中央値テーブル12d、下限値テーブル12eのそれぞれに記憶されるテーブルデータを説明する図あり、各テーブル12c〜12eに記憶される輝度信号Yと出力値Outyとの関係を示したグラフである。図2において、横軸には、輝度信号Yを示している。縦軸には、出力値Outyを示している。そして、実線で示したグラフ曲線は、正規化反射率refleが1.3である場合に、輝度信号Yを(4)式に従って処理して得られる出力値Outyを示している。破線で示したグラフ曲線は、正規化反射率refleが0.8である場合に、輝度信号Yを(4)式に従って処理して得られる出力値Outyを示している。一点鎖線で示したグラフ曲線は、正規化反射率refleが0.3である場合に、輝度信号Yを(4)式に従って処理して得られる出力値Outyを示している。かかるグラフ曲線のそれぞれにおいて、輝度信号Yが「0」〜「255」の各値(整数値)である場合にグラフ曲線上で得られる各値が出力値Outyである。そして、この得られる各出力値Outyが「0」〜「255」の各値に対応つけられて、対応するテーブル12c〜12eに記憶されている。
図2に示されるように、3本のグラフ曲線は、正規化反射率refleが0.3、0.8、1.3と0.5ずつ、同じ間隔で変更されたものであるにもかかわらず、3本のグラフ曲線にて形成される曲線間の間隔は均等ではない。例えば、輝度信号Yの値が「128」である場合、正規化反射率refle1.3での出力値Outyと正規化反射率refle0.8での出力値Outyとの差W1は、正規化反射率refle0.8での出力値Outyと正規化反射率refle0.3での出力値Outyとの差W2よりも、明らかに小さい。つまり、出力値Outyは、正規化反射率refleの変化に対して非線形に変化する。従って、上限値テーブル12c、中央値テーブル12d、下限値テーブル12eの3つのテーブルを備えることにより、線形補間演算を行って出力値Outyを生成する場合に、その正規化反射率refleの変化に対する出力値Outyの偏りを、補間演算に反映させることができる。故に、かかるテーブルデータに基づいて出力値Outyを生成した場合に、的確に出力値Outyを生成することができるのである。
ここで、プリンタ1内部に記憶させるテーブルデータがどのような内容で構成されているか、即ち、テーブルデータの形成に用いられた正規化反射率refleの値がどのように設計されているかは、少ないテーブル数で的確な出力値Outyを生成するための重要な要素である。
そこで、図3と図4とを参照して、本プリンタ1に記憶させた各テーブル12c〜12eの形成に用いられた正規化反射率refleについて詳細に説明する。
図3は、元画像データから求められる対数値Rと元画像との関係を説明する図である。図3(a)には、逆光画像である元画像(逆光画像模式図)が表示されている。該元画像は、矩形状の外形を有する態様に形成されると共に、中央部において円形の逆光部位を有している。図3(b)は、元画像の各画素値を反射率(対数値R)に変換して形成した変換画像を示している。ここで、対数値Rは、注目画素の画素値とその周辺画素の平均輝度値との差を示す値、言い換えれば、注目画素と周辺画素との明るさの差を表す値である。変換画像において、白で示される領域Aは対数値Rが正であることを、黒で示される領域Cは対数値Rが負であることを、灰色で示される領域Bは対数値Rが0であることをそれぞれ示している。
この対数値Rが正の値を持つ場合、注目画素は、周辺画素よりも明るいことを示している。逆に、対数値Rが負の値を持つ場合、注目画素は、周辺画素よりも暗いことを示している。また、対数値Rが0である場合は、注目画素は、周辺画素と同じ明るさであることを示している。
一般には、元画像の各部においては、その明るさが一様であることが多い。逆光部位の大部分は同じように暗く、また、逆光部位以外の他の部分については、同じように明るい。従って、変換画像に示すように、物体の輪郭周辺や、逆光部位と非逆光部位との境界周辺など、画像の一部の領域に属する一部の画素が、周辺画素よりも明るく又は暗くなるのである。
図4は、一般的な画像についての対数値Rのヒストグラムを示している。該ヒストグラムは、横軸を対数値Rとし、縦軸を画素数として作成されており、元画像の各画素について対数値Rを集計した結果を表したものである。かかるヒストグラムにおいてメジアン値Mは0であり、対数値Rは、メジアン値Mをピークとして両側に略対称に分布している。また、対数値Rはメジアン値M(即ち対数値R=0)近傍に集中しており、元画像の大部分において、注目画素と周辺画素とは同程度の明るさとなることが示されている。尚、対数値Rの母集団においては、モード値についても0となっている。つまり、このヒストグラムによっても、元画像における各画素の対数値Rの大部分が0(0近傍)となることが示されている。
プリンタ1は、この対数値Rが0となる場合に対応するテーブルデータ(中央値テーブル12d)を用いて出力値Outyの生成を行うように構成されている。多くの画素の対数値Rが0(0近傍)であることから、この対数値Rが0である場合に算出される出力値Outyをテーブルデータとして有することにより、テーブルデータを用いた出力値Outy生成において、生成される値の精度を向上することができるからである。実際には、(4)式の演算における反射光成分の項に、対数値R=0を用いて計算を行うと演算結果が無限大となってしまうので、算出された対数値Rに正規化を行った正規化反射率refleが用いられている。
対数値Rの正規化においては、正規化を行うクリップ範囲(正規化範囲)を規定する必要がある。本実施形態においては、形成されるヒストグラムにおいて、メジアン値Mよりも大きい側において45%の画素が含まれる点となる値を対数値Rの上限値Uとし、メジアン値Mよりも小さい側において45%の画素が含まれる点となる値を対数値Rの下限値Dとして、下限値D〜上限値Uの範囲がクリップ範囲とされている。そして、クリップ範囲の対数値Rは、予め定めた範囲(下限値d〜上限値u)へと正規化される。この正規化は、下限値D以下の対数値Rを下限値dとし、上限値U以上の値を上限値uとすると共に、下限値Dから上限値Uまでのクリップ範囲の対数値Rを、線形、または非線形な関数で、下限値d〜上限値uの範囲の値へと変換することにより行われる。テーブル12c〜12eに保持させる出力値Outyは、かかる正規化によって求められた正規化反射率refleを用いて算出されている。尚、クリップ範囲は、メジアン値Mを中心に上下45%の画素が属する範囲としたが、これに限られるものではなく、45%以上の画素が属する範囲であっても、45%以下の画素が属する範囲であっても良い。
本実施形態に用いられた各テーブル12c〜12eの設計においては、この対数値Rの正規化は、次の3の条件を満たすように行われている。1つ目の条件は、正規化して得られる正規化反射率refleが、0を含まない値とすることである。これは、上記したように、出力値Outyが算出不能となることを回避するためである。
2つ目の条件は、正規化反射率refleの上限値uを1以上の値とすることである。これは、正規化反射率refleが1以上の値でない場合には、出力画像の画素値を最大値(255)以上の値で出力することができないからである。言い換えれば、元画像の画素値が、255で入力されても、出力画像の対応する画素値は255未満となってしまうのである(ダイナミックレンジの縮小)。従って、本実施形態では、生成される出力画像の画素値の最大値を255以上とすることができるように、正規化反射率refleの上限値uを1以上の値とすることを条件としているのである。尚、正規化反射率refleが1以上の値であると、255以上の出力値が生成されてしまうが、生成された画素値が255以上の値となった場合には、255に収束されるように処理される。
3つ目の条件は、正規化された正規化反射率refleの値の幅を1とすることである。正規化反射率refleの有する幅が1であると、元画像のダイナミックレンジと出力画像のダイナミックレンジとをおおよそ同じにすることができる。元画像の画素値は「0」〜「255」の範囲の値であるので、正規化反射率refleの有する幅を1とすることにより、本実施形態では、同じ範囲である「0」〜「255」で出力画像の画素値を得ることができる。その結果、出力画像全体の色調が入力画像に比べて変化してしまうことを回避できる。
このため、対数値Rは、0を超える値の下限値dから、その下限値dに1加算した上限値uの範囲に、正規化される。尚、本実施形態においては、(3)式における下限値dは0.3とされ、上限値uは1.3とされており、対数値Rは0.3〜1.3の値に正規化されている。言い換えれば、元画像の各画素の正規化反射率refleは、0.3〜1.3の値となる。また、対数値Rを0.3〜1.3の範囲に正規化すると、対数値R「0」の正規化反射率refleは、0.8となる。従って、正規化反射率refleが0.8を超える画素(注目画素)は、対数値Rが正である、即ち、注目画素が周辺画素よりも明るい事を示しており、正規化反射率refleが0.8未満である画素(注目画素)は、対数値Rが負である、即ち、注目画素が周辺画素よりも暗い事を示すこととなる。
ここで、上限値テーブル12c、中央値テーブル12d、下限値テーブル12eには、正規化反射率refleが1.3、正規化反射率refleが0.8、正規化反射率refleが0.3である場合において形成されたものである。つまり、上限値テーブル12cは、正規化反射率refleの上限値(対数値Rが正である)を用いて形成されたものであり、下限値テーブル12eは、正規化反射率refleの下限値(対数値Rが負である)を用いて形成されたものである。そして、中央値テーブル12dは、上記したように、対数値R=0である場合の正規化反射率refleを用いて形成されたものとなっている。
また、プリンタ1は、入力された元画像データから算出された対数値Rを、0.3〜1.3の範囲に正規化するように構成されている。つまり、プリンタ1において入力された元画像から演算される対数値Rの正規化反射率refleと、各テーブル12c〜12eの形成に用いた正規化反射率refleとは、同じ範囲を有するものとなり、両者を整合させることができる。故に、かかる3つのテーブル12c〜12eを用いて生成される出力値Outyは、的確な値となる。
その上、上限値テーブル12cと下限値テーブル12eとを備えていることにより、補間演算を行えば、プリンタ1に入力された元画像から算出される全ての正規化反射率refleに対応する出力値Outyを、各テーブル12c〜12eに記憶されるテーブルデータを用いて導出することができる。
尚、本実施形態においては、正規化反射率refleは、0.3〜1.3の範囲としたが、正規化反射率refleの範囲はこれに限られるものではなく、同じクリップ範囲について、正規化反射率refleの範囲を、例えば、0.1〜1.1や、0.4〜1.4などとしても良い。また、正規化反射率refleの幅も厳密に1である必要はなく、1より小さい範囲(例えば、0.9など)であっても良く、1より大きい範囲(例えば、1.5など)であっても良い。
図1に戻って説明する。
RAM13は、制御プログラムがCPU11により実行される際に必要な各種レジスタ群などが記憶されるワーキングエリアや、処理中のデータを一時的に格納するテンポラリエリア等を有しランダムにアクセスできる書き換え可能なメモリであり、元画像データを記憶する元画像メモリ13aと、元画像を縮小し、縮小した画像のレティネックス処理において求められる反射率(対数値Rs)を記憶する縮小レティネックス画像メモリ13bと、対数値Rsのヒストグラム(頻度分布)が記憶されるヒストグラムメモリ13cと、縮小画像の反射率(対数値Rs)の最大値を記憶する最大値メモリ13dと、縮小画像の反射率(対数値Rs)の最小値を記憶する最小値メモリ13eと、元画像のRGB値から生成された輝度信号Yを記憶する輝度値メモリ13fと、元画像の反射率(反射光成分、対数値R)を記憶する対数値メモリ13gと、正規化された反射率である正規化反射率refleを記憶するrefle値メモリhと、レティネックス処理による補正がなされた出力画像データを記憶する出力画像メモリ13iとを備えている。なお、「s」は、縮小画像についての接尾辞であり、元画像については、接尾辞を付さないものとする。
元画像メモリ13aは、PC2、デジタルカメラ21、及び外部メディア20から、それぞれ、I/F17、I/F18、及び外部メディアスロット19を介してプリンタ1へ入力された画像データであって、上記した元画像データを記憶するものである。この元画像メモリ13aに記憶される元画像データは、新たにプリンタ1に画像データが入力されると、入力された画像データで更新される。
縮小レティネックス画像メモリ13bは、元画像を縮小した縮小画像の輝度信号Ysについて、レティネックス処理において求められる反射率、即ち対数値Rsを記憶するメモリである。
元画像を縮小する方法としては、縮小する画像の画素に対応する元画像の位置に最も近い画素の値をサンプリングし、そのサンプリングした画素の値をそのまま用いる最近傍(Nearest Neighbor)法や、縮小する画像の画素に対応する元画像の位置の周囲の画素を用いて補間演算を行うバイキュービック法や、平均画素法などが知られている。画質より処理速度を優先する場合は、最近傍法が用いられ、処理速度より画質を優先する場合は、バイキュービック法や、平均画素法が用いられる。
これらいずれかの方法により元画像が縮小され、その縮小画像の各画素(ピクセル)について対数値Rsが上述の(2)式を用いて演算され、縮小画像の各画素の座標(x,y)に対応して縮小レティネックス画像メモリ13bに記憶される。この縮小レティネックス画像メモリ13bの値は、新たな補正処理の実行時に更新される。尚、対数値Rsの演算は、上記(2)式における元画像の信号強度値I(x,y)に、輝度信号Ys(x,y)を用いて実行される。
ヒストグラムメモリ13cは、縮小レティネックス画像メモリ13bに記憶される反射率(対数値Rs)について、レベルが同じものの画素数を集計した集計結果を記憶するものであり、各レベルのそれぞれに対応して各1のエリアが設けられている。言い換えれば、対数値Rsのヒストグラムを形成するためのメモリである。
ヒストグラムメモリ13cの各エリア数及び各エリアにて管理する対数値Rsのレベルは、新たに元画像が入力されることにより、CPU11によって設定される。具体的には、縮小画像を構成する全画素について対数値Rsが求められると、求められた対数値Rsの最小値と最大値とに基づいてヒストグラムの生成範囲が決定され、また、同じレベルとして集計するレベル範囲(管理するレベル)が選定される。これにより、ヒストグラムメモリ13cのエリア数と各エリアのレベルが設定される。
縮小レティネックス画像メモリ13bに記憶される各対数値Rsが、いずれのレベルに属するかが判断されると、その判断された対数値Rsのレベルに対応するエリアに記憶される値に1が加算される。これにより、各レベル毎に、画素数が集計される。
縮小レティネックス画像メモリ13bに記憶される全ての対数値Rsのレベル判断が完了すると、このヒストグラムメモリ13cに記憶される集計結果から、メジアン値Mが検出され、上限値Uと下限値Dとが決定される。プリンタ1では、このヒストグラムメモリ13cにおける集計結果にて決定された下限値Dから上限値Uに至る範囲が、元画像メモリ13aに記憶される元画像データのクリップ範囲とされる。
このように、プリンタ1では、縮小画像から形成されたヒストグラムで元画像のクリップ範囲を決定することができるので、かかるクリップ範囲を決定するために、元画像の全画素についてのヒストグラムを生成する必要が無く、処理時間を短縮することができる。
最大値メモリ13d及び最小値メモリ13eは、ヒストグラムの生成に際し、縮小レティネックス画像メモリ13bに記憶される対数値Rsの内の、最大値のものと、最小値のものとをそれぞれ記憶するメモリである。かかる最大値メモリ13d及び最小値メモリ13eには、元画像のレティネックス処理を行う補正処理の開始に際し、0が書き込まれる。対数値Rsが算出されると、最大値メモリ13dに記憶される値は、その算出された(縮小レティネックス画像メモリ13bに記憶された)対数値Rsと比較される。そして、その比較結果に基づいて、より大きな対数値Rsにて、最大値メモリ13dに先に記憶される値が更新される。
また、最大値メモリ13dに記憶される値よりも、比較した対数値Rsの方が小さかった場合には、その対数値Rsは、最小値メモリ13eに記憶される値と比較される。そして、その比較結果に基づいて、より小さな対数値Rsにて最小値メモリ13eに記憶される先の値は更新される。
その結果、最大値メモリ13dには、縮小レティネックス画像メモリ13bに記憶される対数値Rsの内の最大値が保持され、最小値メモリ13eには、縮小レティネックス画像メモリ13bに記憶される対数値Rsの内の最小値が保持される。
この最大値メモリ13d及び最小値メモリ13eに記憶される最大値および最小値は、ヒストグラム生成のタイミングでCPU11に参照され、かかる最大値及び最小値に基づいて、ヒストグラム生成の範囲がCPU11にて決定される。
輝度値メモリ13fは、RGB値から(5)式に従って算出された輝度信号Y(Ys)と色信号Cb,Crを記憶するメモリである。プリンタ1では、上記したように、入力された元画像の元画像データ(RGB値)に直接レティネックス処理を行うのではなく、RGB値を輝度信号Yに変換してからレティネックス処理を行うように構成されている。RGB値から変換された輝度信号Yなどは、変換元のRGB値の座標(x,y)に対応してこの輝度値メモリ13fに記憶される。そして、この輝度値メモリ13fに記憶される輝度信号Yや輝度信号Ysに基づいて、反射率や出力値Outyが生成される。
ここで、プリンタ1は、出力画像の出力値Outyを生成するために、縮小画像と元画像との両者から、合計2回、反射率(対数値Rs及び対数値R)を算出する。反射率の算出に際しては、算出元の画像データ(縮小画像データ、元画像データ)のRGB値から輝度信号Ysまたは輝度信号Yがそれぞれ生成され、この輝度値メモリ13fに書き込まれる。元画像の輝度信号Yの生成に先立って、縮小画像の輝度信号Ysは生成され、輝度値メモリ13fに書き込まれる。輝度値メモリ13fに記憶された縮小画像の輝度信号Ys等は、その後、元画像の輝度信号Yが生成されるタイミングで、0クリアされ、新たに、元画像データのRGB値から生成された輝度信号Yなどが輝度値メモリ13fに記憶される。
対数値メモリ13gは、元画像データから算出された反射率である対数値Rを記憶するメモリである。具体的には、輝度値メモリ13fに記憶された元画像データの輝度信号Yを用いて、各画素に対応する対数値R(x,y)が、上述の(2)式に従って算出され、算出された対数値R(x,y)は、その座標に対応して対数値メモリ13gに記憶される。この対数値メモリ13gの値は、新たな補正処理の実行時に更新される。尚、上記(2)式における元画像の信号強度値I(x,y)は、輝度信号Y(x,y)を用いて演算される。
refle値メモリ13hは、対数値メモリ13gに記憶される対数値Rが正規化された正規化反射率refleを記憶するメモリである。このrefle値メモリ13hに記憶される正規化反射率refleは、対数値メモリ13gに記憶される各対数値R(x,y)を、(3)式に従って下限値0.3〜上限値1.3の範囲に正規化したものである。対数値R(x,y)、即ち対数値Rの各々に対応して、各1ずつの正規化反射率refle(x,y)が生成され、その座標に対応してこのrefle値メモリ13hに書き込まれる。このrefle値メモリ13hに記憶される正規化反射率refleは、出力値Outyを生成するタイミングでrefle値メモリ13hから読み出され、読み出された正規化反射率refleに対応するテーブル(テーブル12c〜12e)が、出力値Outy抽出元のテーブルとして選定される。
出力画像メモリ13iは、印刷部15に出力する出力画像データを記憶するメモリである。この出力画像メモリ13iに記憶される出力画像データは、補正処理によって元画像から生成された出力値Outであり、出力画像を形成する各画素のRGB値である。上記したように、本実施形態では、各テーブル12c〜12eから元画像の輝度信号Y(x,y)に応じた出力値Outyが抽出される。このテーブル12c〜12eから抽出される出力値Outy値は、輝度信号Yであるので、必要に応じて線形補間演算などが行われた後、以下に示す(6)式に従って、RGB値に変換され、出力値Outとされる。
元画像の各輝度信号Y(x,y)の各々に対応して、各1ずつの出力値Outy(x,y)が算出されており、出力値Outについても、各出力値Outy(x,y)のそれぞれに対応する出力値Outy(x,y)が生成される。そして、生成された出力値Out(x,y)が、その座標に対応して、出力画像メモリ13iに書き込まれる。記憶された出力値Out(出力画像データ)は、印刷を実行するタイミングでこの出力画像メモリ13iから読み出され、印刷部15へ出力される。印刷部へ出力された出力値Outは、出力画像メモリ13iから消去される。
次に、図5と図6とのフローチャートを参照して、上記のように構成されたプリンタ1で実行される補正処理について説明する。補正処理は、上記した画像処理プログラム12aによって実行される処理であり、入力された画像データ(元画像データ)にレティネックス処理を行って出力画像データを生成するものである。
この補正処理では、まず、元画像メモリ13aから元画像データを読み出し(S1)、縮小画像を形成すると共にその形成された縮小画像の各RGB値を輝度信号Ysと色信号Cb,Crとに変換し、縮小画像の各RGB値の座標(x,y)にそれぞれ対応させて輝度値メモリ13fに書き込む(S2)。これにより、縮小画像の全画素に対応する輝度信号Ysが輝度値メモリ13fに記憶される。
そして、輝度値メモリ13fに記憶した縮小画像の輝度信号Ysについて反射率(対数値Rs)を算出する。各画素の対数値Rs(x,y)は、(2)式の画素値I(x,y)に輝度信号Ys(x,y)を用いて算出する(S3)。つまり、座標(x,y)の注目画素を含むm×nの領域にガウスフィルタF(x,y)による畳み込み演算が行って、注目画素からの距離に応じた重みを加味しつつ平均された周辺画素の平均輝度値を求め、その平均輝度値にて注目画素の輝度信号Ys(x,y)を除したものの自然対数を求めることにより、注目画素の反射率である対数値Rs(x,y)を算出する。
その後、算出した対数値Rs(x,y)を縮小レティネックス画像メモリ13bに記憶し(S4)、記憶した対数値Rs(x,y)が最大値メモリ13dに記憶される値よりも大きいかを判断する(S5)。対数値Rs(x,y)が最大値メモリ13dに記憶される値よりも大きければ(S5:Yes)、算出した対数値Rs(x,y)を最大値メモリ13dに記憶して、先に最大値メモリ13dに記憶される値を更新する(S6)。また、S5の処理で確認した結果、対数値Rs(x,y)が最大値メモリ13dに記憶される値よりも小さい場合には(S5:No)、その対数値Rsを最小値メモリ13eに記憶される値よりも小さいかを判断する(S7)。その結果、比較した対数値Rsが最小値メモリ13eに記憶される値よりも小さければ(S7:Yes)、その対数値Rsを最小値メモリ13eに記憶し、最小値メモリ13eに先に記憶される値を更新する(S8)。
S6またはS8の処理の後は、縮小画像の全画素について処理が終了したかを確認する(S9)。縮小画像についての対数値Rsの生成と対数値Rsの最大値と最小値とを判断するS3〜S8の処理は、1の注目画素毎(1の輝度信号Ys毎)に実行され、最終画素の輝度信号Ysの処理が終了するまで、繰り返して実行される。従って、輝度値メモリ13fからは、S3〜S8の処理の実行毎に、座標に従った順番で(先頭座標から最終座標へ向かうラスタ走査の順で)、輝度信号Ysが読み出される。そして、S9の処理で確認した結果、全画素についての処理が終了していれば(S9:Yes)、縮小レティネックス画像メモリ13bに記憶される対数値Rsに対し、最大値メモリ13dに記憶される最大値から最小値メモリ13eに記憶される最小値までの範囲において、ヒストグラムを形成する(S10)。
その後、形成したヒストグラムからメジアン値Mを求め(S11)、次いで、そのメジアン値Mとヒストグラムとから対数値Rsのクリップ範囲(上限値Uと下限値D)を定める(S12)。具体的には、メジアン値Mを中心に、メジアン値Mの上側において45%の画素が含まれる点となる対数値Rsを上限値Uとし、メジアン値Mの下側において45%の画素が含まれる点となる対数値Rsを下限値Dとし、メジアン値Mの上下に各45%ずつの画素が所属する下限値D〜上限値Uの範囲をクリップ範囲とする。
続いて、輝度値メモリ13fを0クリアしてから(S13)、元画像メモリ13aに記憶される元画像データの各RGB値を輝度信号Yと色信号Cb,Crとに変換し、各RGB値の座標(x,y)にそれぞれ対応させて輝度値メモリ13fに書き込む(S14)。その後、出力画像データを生成する出力値算出処理を実行してから(S15)、その出力値算出処理(S15)において元画像の全画素についての処理が終了したかを確認し(S16)、元画像の全画素が出力値Outに変換されていなければ(S16:No)、その処理をS15の処理に移行して、元画像の全画素について出力値Outが生成されるまで繰り返して出力値算出処理(S15)を実行し、一方、元画像の全画素が出力値Outに変換されていれば(S16:Yes)、出力画像データの生成は完了であるので、この補正処理を終了する。
一方、S7の処理で確認した結果、対数値Rsが最小値メモリ13eに記憶される値以上の値であった場合には(S7:No)、最小値メモリ13eに記憶される値を更新する必要がないので、その処理をS9の処理に移行する。また、S9の処理で確認した結果、縮小画像の全画素について対数値Rsの生成や、その対数値Rsの最小値、最大値の判断を行う処理が終了していなければ(S9:No)、その処理をS3の処理に移行し、最終画素の輝度信号Yに対する処理が終了するまで、繰り返してS3〜S9の処理を実行する。
図6は、図5の補正処理の中で実行される出力値算出処理(S15)のフローチャートである。尚、出力値算出処理(S15)は、1の注目画素毎(1の輝度信号Y毎)に実行されるように構成されており、輝度値メモリ13fからは、出力値算出処理(S15)の実行毎に、座標に従った順番で(先頭座標から最終座標へ向かうラスタ走査の順で)、輝度信号Yが読み出され、最終画素の輝度信号Yの処理が終了するまで、繰り返して実行される。
この出力値算出処理(S15)では、まず、輝度値メモリ13fに記憶される輝度信号Yについて反射率(対数値R)を算出する。上記したように、輝度信号Yは、元画像の各画素のそれぞれについて求められて、その座標(x,y)に対応して輝度値メモリ13fに記憶されている。各画素の対数値R(x,y)は、(2)式の画素値I(x,y)に各輝度信号Y(x,y)を用いて算出する(S21)。
次に、算出した対数値Rを対数値メモリ13gに記憶してから(S22)、対数値メモリ13gに記憶した対数値Rについて、S12の処理で設定した下限値D〜上限値Uの範囲を0.3〜1.3とする正規化をおこなって、正規化反射率refle(x,y)を算出する(S23)。
この正規化は、対数値R(x,y)≦Dである場合には、0.3とし、また、対数値R(x,y)≧Uである場合には、1.3とすると共に0.3<対数値R(x,y)<1.3である場合には、(3)式に従って、対数値Rを正規化する。尚、本実施形態においては、(3)式におけるd及びuは、それぞれ0.3と1.3となる。
次に、算出した正規化反射率refle(x,y)を、その座標に対応してrefle値メモリ13hに記憶してから(S24)、その正規化反射率refle(x,y)が1.3であるかを確認する(S25)。ここで、正規化反射率refle(x,y)が1.3でなければ(S25:No)、正規化反射率refleは、1.3未満であるので、正規化反射率refle(x,y)が0.8を超えているかを確認する(S26)。つまり、このS26の処理により、正規化反射率refleが0.8を超え1.3未満の範囲にあるかが判断される。そして、正規化反射率refle(x,y)が0.8を超えている場合には(S26:Yes)、輝度値メモリ13fから読み出した輝度信号Y(x,y)に対応する出力値Outyを、上限値テーブル12cと中央値テーブル12dとのそれぞれから読み出す(S27)。上限値テーブル12cから読み出した出力値OutyをOu、中央値テーブル12dから読み出した出力値OutyをOcとする。
続いて、読み出した出力値Ou,Odを、(7)式に従って、正規化反射率refle(x,y)の値に基づいた線形補間をして、輝度信号Y(x,y)に対応する出力値Outyを求める(S28)。
そして、求めた出力値Outyを、(6)式に従ってRGB値に逆変換して出力値Outを生成し、生成元の輝度信号Yの座標(x,y)に対応させて出力画像メモリ13iに書き込んで(S29)、この出力値算出処理を終了する。
一方、S25の処理で確認した結果、正規化反射率refle(x,y)が1.3であれば(S25:Yes)、輝度信号Y(x,y)に対応する出力値Outyを上限値テーブル12cから読み出して(S30)、その処理をS29の処理に移行する。
また、S26の処理で確認した結果、正規化反射率refle(x,y)が0.8を超えていなければ(S26:No)、正規化反射率refleが0.8であるかを確認し(S31)、正規化反射率refleが0.8でなければ(S31:No)、正規化反射率refleは、0.8未満であるので、更に、0.3を超えているかを確認する(S32)。つまり、このS32の処理により、正規化反射率refleが0.3を超え0.8未満の範囲にあるかが判断される。ここで、正規化反射率refle(x,y)が0.3を超えていれば(S32:Yes)、輝度値メモリ13fから読み出した輝度信号Y(x,y)に対応する出力値Outyを、下限値テーブル12eと中央値テーブル12dとのそれぞれから読み出す(S33)。下限値テーブル12eから読み出した出力値OutyをOdとする。次いで、読み出した出力値Oc,Odを、(8)式に従って、正規化反射率refle(x,y)の値に基づいた線形補間をして、輝度信号Y(x,y)に対応する出力値Outyを求める(S34)。その後、その処理をS29の処理に移行する。
更に、S31の処理で確認した結果、正規化反射率refleが0.8であれば(S31:Yes)、輝度信号Yに対応する出力値Outyを中央値テーブル12dから読み出して(S35)、S29の処理に移行する。
また、S32の処理で確認した結果、正規化反射率refle(x,y)が、0.3を超えていなければ(S32:No)、正規化反射率refleは0.3であるので、輝度信号Yに対応する出力値Outyを下限値テーブル12eから読み出して(S36)、S29の処理に移行する。
各テーブル12c〜12eに記憶される出力値Outyを生成する際に用いられた正規化反射率refleは、1.3、0.8、0.3であるので、算出された正規化反射率refleが1.3、0.8、0.3の場合には、線形補間演算を行う必要がない。S30、S35、S36の処理は、算出された各画素の正規化反射率refleが、1.3、0.8、0.3の場合にそれぞれ実行されるものであり、従って、線形補間演算を行うステップS28,S34を経由することなく、S29の処理に移行するようになっている。このため、S30、S35、S36を経由して実行されるS29の処理では、各テーブル12c〜12eから読み出された出力値Outyそのものが、出力値Outに変換される。
以上説明したように、プリンタ1では、テーブルデータを参照することによってガンマ補正演算を行うことなく、入力された元画像をレティネックス処理して出力画像を生成することができるので、画像処理を高速化することができる。その上、元画像が最も多く有する正規化反射率refleの値にて形成されたテーブルデータ(中央値テーブル12d)を備えているので、テーブルデータを参照して作成される出力値Outを正確なものとすることができ、ガンマ補正演算によらずに出力画像を生成しても、画質を低下させることがない。
以上、実施形態に基づいて本発明を説明したが、本発明は上記各実施形態に何ら限定されるものでなく、本発明の趣旨を逸脱しない範囲内で種々の改良変形が可能であることは容易に推察できるものである。
例えば、上記実施形態では、色表現系はRGB形式としたが、RGB形式以外の他の色表現系、例えば、CMY形式などに本発明を適用してもよい。また、画像処理プログラム12aは、正規化反射率refleを算出し、この正規化反射率refleにて、参照するテーブルを選定した。また、各テーブル12c〜12eは、正規化反射率refleをパラメータとして形成された。これに代えて、算出した反射率R(0を除く)を用いて形成されたテーブルを選定するようにしても良い。
また、上記実施形態では、本発明の画像処理プログラムは、プリンタ1に組み込まれたCPU11により実行されるものとしたが、パーソナルコンピュータにアプリケーションとして供給され、パーソナルコンピュータに組み込まれたCPUなどにより実行されるようにしてもよい。
また、レティネックス処理は、SSR(シングルスケール法)であってもMSR(マルチスケール法)であってもよい。
また、上記実施形態の画像処理では、CPU11によりレティネックス処理などを行うものとしたが、DSP(Digital Signal Processor)により行ってもよい。DSPを用いると、より高速に積和演算などの処理を実行することができる。
加えて、上記実施形態では、演算された輝度信号および色信号は、RAM13(輝度値メモリ13f)に一時記憶するように構成しているが、記憶容量を削減したい場合には、これらを記憶せずに、必要な場合、元画像メモリから画素値(RGB値)を読み出し、その都度、演算で求めてもよい。
更に、反射率である対数値Rについて正規化を行う正規化範囲(クリップ範囲)は、ヒストグラム形成してそのメジアン値を基準に求めたが、このメジアン値に代えて、モード値や平均値を用いても良い。更には、注目画素の画素信号の値と注目画素周辺の周辺画素の平均輝度値とが略同じであるとは、完全同一であることも含む概念である。また、注目画素の画素信号の値と注目画素周辺の周辺画素の平均輝度値とが同じ場合には、対数値Rは0となるが、例えば、ヒストグラム形成した場合の対数値Rのメジアン値、モード値、平均値は、必ずしも0とはならず、0から、ずれた値となる。このずれた値を網羅する範囲が、注目画素の画素信号の値と注目画素周辺の周辺画素の平均輝度値とが略同じであるとする領域である。
また、上記実施形態においては、正規化反射率refleの全領域を網羅することができるように、プリンタ1には、3つのテーブルを設けたが、必ずしも、正規化反射率refleの全領域を網羅するテーブルを有する必要はなく、少なくとも中央値テーブル12dを備える構成として、テーブル参照とガンマ補正演算とを併用して出力値Outを生成するものとしても良い。かかる場合には、プリンタ1および画像処理プログラム12aを、四捨五入、切り捨て、切り上げで正規化反射率refleが0.8となる範囲について中央値テーブル12dを用いた出力値Outの生成を行い、それ以外の範囲については、ガンマ補正演算を行って出力値Outを生成するように構成しても良い。多くの画素の対数値Rは0となる(0近傍に集中する)ので、対数値R=0に対応するテーブル(中央値テーブル12d)を有していれば、多くの画素についてはテーブル参照にて出力値Outを生成することができる。従って、中央値テーブル12dに対するテーブル参照にて出力値Outを生成するだけでも、十分に演算速度を高速化することができる。
また、画像処理プログラム12aが参照するテーブルは、必ずしも3つである必要はなく、上記したように、中央値テーブル12aの1つであっても良く、4つ以上であっても良い。