しかしながら、従来の文献に開示された処理では、図11(h)や図12のグラフに示したようなガンマ補正演算が行われるので、過補正が生じるという問題点があった。過補正は、必要以上の極端なコントラスト強調がなされてしまうことであり、輝度値の階調差が増長されすぎてしまうことである。その結果、暗部において過度に明るい部位や、明部において過度に暗い部位が形成されてしまうという事象が生じる。この過補正が明部において発生すると、明るい部分に過度に暗い画素が出現することになる。かかる明部の中に発生した暗い画素(急激な階調変化)は視覚的に際だってしまうので、目立った画質不良となって、大きく画質を低下させてしまうという問題点があった。
このように、従来のレティネックス処理では、コントラストを強調することで過補正が発生してしまい、コントラスト強調と過補正抑制とを両立することが困難となっているという問題点があった。
そこで、入力画像データにレティネックス処理を行った処理画像と、元の入力画像データとを合成して、出力画像データを生成する手法が提案されている。これによれば、レティネックス処理を経て作成された処理画像の各画素値に、対応する入力画像の各画素値(輝度値)が加味されて出力画像が形成されるため、レティネックス処理を行っただけの処理画像に比べて、過補正が修正された出力画像が生成される。しかし、処理画像と元の入力画像との合成においては、各画素毎に演算が行われるので、演算量が膨大になり、処理速度を著しく低下させてしまうという問題点があった。
本発明は、上記問題点を解決するためになされたものであり、特にレティネックス処理における過補正を抑制することができる画像処理プログラムおよび画像処理装置を提供することを目的としている。
この目的を達成するために、請求項1記載の画像処理プログラムは、画像の補正処理を行う画像処理装置に搭載され、元画像における注目画素の画素信号の値と注目画素周辺の周辺画素の平均輝度値との比に対応した値に基づいて注目画素と周辺画素との相対的な明るさの指標となる反射光成分値を算出する反射光成分算出ステップと、その反射光成分算出ステップにて算出された反射光成分値をパラメータとして注目画素の画素信号の値をガンマ補正した補正値と、注目画素の画素信号の値とに基づいて出力画像の画素信号を生成する画素信号生成ステップとを備え、レティネックス処理による画像補正を実行するものであって、前記画素信号生成ステップは、注目画素の画素信号の値が予め定めた第1下限値以上であると共に前記反射光成分算出ステップにより算出された反射光成分値にて注目画素が周辺画素より暗いことが示されている場合には、元画像の画素信号の最大値をガンマ補正した補正値に基づいて求められる画素信号の輝度値よりも大きな値を、出力画像の画素信号の出力最大輝度値とすると共に、元画像の注目画素の画素信号の輝度値が大きい程、出力画像の画素信号の輝度値を単調増加関数に従って前記出力最大輝度値により近い値とした画素信号を生成する第1輝度値調整ステップを備えている。
尚、補正値生成に関与するガンマ補正は、広義のガンマ補正であって、ガンマ関数による補正のみならず、画素信号の値が「0」から所定範囲の小さい値側にある場合にその値を増大させた出力値を生成する補正であり、単調増加関数でない非線形の関数によって元の値を変更するものである。
請求項2記載の画像処理プログラムは、請求項1記載の画像処理プログラムにおいて、元画像および出力画像の画素信号が取り得る輝度値のレンジは、0〜255の範囲とされており、前記第1輝度値調整ステップにおける出力最大輝度値は、その最低値が240とされている。
請求項3記載の画像処理プログラムは、請求項1又は2記載の画像処理プログラムにおいて、前記画素信号生成ステップは、注目画素の画素信号の値が予め定めた第2下限値以上であると共に前記反射光成分算出ステップにより算出された反射光成分値にて注目画素が周辺画素と同じ明るさであることが示されている場合には、元画像の画素信号の最大値をガンマ補正した補正値に基づいて求められる画素信号の輝度値よりも大きな値を、出力画像の画素信号の出力最大輝度値とすると共に、元画像の注目画素の画素信号の輝度値が大きい程、出力画像の画素信号の輝度値を単調増加関数に従って前記出力最大輝度値により近い値とした画素信号を生成する第2輝度値調整ステップを備えている。
請求項4記載の画像処理プログラムは、請求項1から3のいずれかに記載の画像処理プログラムにおいて、前記画素信号生成ステップは、注目画素の画素信号の値が予め定めた第3下限値以上であると共に前記反射光成分算出ステップにより算出された反射光成分値にて注目画素が周辺画素より明るいことが示されている場合には、元画像の画素信号の最大値をガンマ補正した補正値に基づいて求められる画素信号の輝度値よりも大きな値を、出力画像の画素信号の出力最大輝度値とすると共に、元画像の注目画素の画素信号の輝度値が大きい程、出力画像の画素信号の輝度値を単調増加関数に従って前記出力最大輝度値により近い値とした画素信号を生成する第3輝度値調整ステップを備えている。
請求項5記載の画像処理プログラムは、請求項3又は4に記載の画像処理プログラムにおいて、元画像および出力画像の画素信号が取り得る輝度値のレンジは、0〜255の範囲とされており、前記第2輝度値調整ステップにおける出力最大輝度値又は第3輝度値調整ステップにおける出力最大輝度値の最高値は、255とされている。
請求項6記載の画像処理プログラムは、請求項1から5のいずれかに記載の画像処理プログラムにおいて、前記画素信号生成ステップは、第1の画素信号の値に対し予め定めた反射光成分値をパラメータとしてガンマ補正を行った補正値、または、その補正値と第1の画素信号の値とに基づいて算出された第2の画素信号の値を画素信号生成因子とし、その画素信号生成因子を第1の画素信号の値に対応つけて予め記憶する記憶手段から、注目画素の画素信号の値に基づいて対応する画素信号生成因子を抽出する抽出ステップと、その抽出ステップにて抽出された画素信号生成因子に基づいて出力画像の画素信号を生成する抽出生成ステップとを備えている。
請求項7記載の画像処理装置は、元画像における注目画素の画素信号の値と注目画素周辺の周辺画素の平均輝度値との比に対応した値に基づいて注目画素と周辺画素との相対的な明るさの指標となる反射光成分値を算出する反射光成分算出手段と、その反射光成分算出手段にて算出された反射光成分値をパラメータとして注目画素の画素信号の値をガンマ補正した補正値と、注目画素の画素信号の値とに基づいて出力画像の画素信号を生成する画素信号生成手段とを備え、レティネックス処理による画像補正を実行するものであって、前記画素信号生成手段は、注目画素の画素信号の値が予め定めた第1下限値以上であると共に前記反射光成分算出手段により算出された反射光成分値にて注目画素が周辺画素より暗いことが示されている場合には、元画像の画素信号の最大値をガンマ補正した補正値に基づいて求められる画素信号の輝度値よりも大きな値を、出力画像の画素信号の出力最大輝度値とすると共に、元画像の注目画素の画素信号の輝度値が大きい程、出力画像の画素信号の輝度値を単調増加関数に従って前記出力最大輝度値により近い値とした画素信号を生成する第1輝度値調整手段を備えている。
尚、補正値生成に関与するガンマ補正は、広義のガンマ補正であって、ガンマ関数による補正のみならず、画素信号の値が「0」から所定範囲の小さい値側にある場合にその値を増大させた出力値を生成する補正であり、単調増加関数でない非線形の関数によって元の値を変更するものである。
請求項8記載の画像処理装置は、請求項7記載の画像処理装置において、元画像および出力画像の画素信号が取り得る輝度値のレンジは、0〜255の範囲とされており、前記第1輝度値調整手段において、出力最大輝度値はその最低値が240とされている。
請求項9記載の画像処理装置は、請求項7又は8記載の画像処理装置において、前記画素信号生成手段は、注目画素の画素信号の値が予め定めた第2下限値以上であると共に前記反射光成分算出手段により算出された反射光成分値にて注目画素が周辺画素と同じ明るさであることが示されている場合には、元画像の画素信号の最大値をガンマ補正した補正値に基づいて求められる画素信号の輝度値よりも大きな値を、出力画像の画素信号の出力最大輝度値とすると共に、元画像の注目画素の画素信号の輝度値が大きい程、出力画像の画素信号の輝度値を単調増加関数に従って前記出力最大輝度値により近い値とした画素信号を生成する第2輝度値調整手段を備えている。
請求項10記載の画像処理装置は、請求項7から9のいずれかに記載の画像処理装置において、前記画素信号生成手段は、注目画素の画素信号の値が予め定めた第3下限値以上であると共に前記反射光成分算出手段により算出された反射光成分値にて注目画素が周辺画素より明るいことが示されている場合には、元画像の画素信号の最大値をガンマ補正した補正値に基づいて求められる画素信号の輝度値よりも大きな値を、出力画像の画素信号の出力最大輝度値とすると共に、元画像の注目画素の画素信号の輝度値が大きい程、出力画像の画素信号の輝度値を単調増加関数に従って前記出力最大輝度値により近い値とした画素信号を生成する第3輝度値調整手段を備えている。
請求項11記載の画像処理装置は、請求項9又は10に記載の画像処理装置において、元画像および出力画像の画素信号が取り得る輝度値のレンジは、0〜255の範囲とされており、前記第2輝度値調整手段における出力最大輝度値又は第3輝度値調整手段における出力最大輝度値の最高値は、255とされている。
請求項12記載の画像処理装置は、請求項7から11のいずれかに記載の画像処理装置において、第1の画素信号の値に対し予め定めた反射光成分値をパラメータとしてガンマ補正を行った補正値、または、その補正値と第1の画素信号の値とに基づいて算出された第2の画素信号の値を画素信号生成因子とし、その画素信号生成因子を第1の画素信号の値に対応つけて予め記憶する記憶手段を備えており、前記画素信号生成手段は、その記憶手段から、注目画素の画素信号の値に基づいて対応する画素信号生成因子を抽出する抽出手段と、その抽出手段にて抽出された画素信号生成因子に基づいて出力画像の画素信号を生成する抽出生成手段とを備えている。
請求項1記載の画像処理プログラムによれば、反射光成分算出ステップにより反射光成分値が算出される。ここで、反射光成分値は、注目画素と周辺画素との相対的な明るさの指標とされるものであって、元画像における注目画素の画素信号の値と注目画素周辺の周辺画素の平均輝度値とに基づいて算出される。また、この算出された反射光成分値をパラメータとして注目画素の画素信号の値をガンマ補正した補正値と、注目画素の画素信号の値とに基づいて、画素信号生成ステップにより、出力画像の画素信号が、即ち、レティネックス処理による補正がなされた画素信号が、生成される。
そして、画素信号生成ステップにおいて、注目画素の画素信号の値が、予め定めた第1下限値以上であると共に反射光成分算出ステップにより算出された反射光成分値にて当該注目画素が周辺画素より暗いことが示されている場合には、第1輝度値調整ステップによって出力画像の画素信号が生成される。
ここで、出力最大輝度値は、元画像の画素信号の最大値をガンマ補正した補正値に基づいて求められる画素信号の輝度値よりも大きな値であり、第1輝度値調整ステップでは、元画像の画素信号の輝度値が大きい程、輝度値が単調増加関数に従ってこの出力最大輝度値により近い値となるように出力画像の画素信号が生成される。
このため、元画像中の明るい部分(明部)に属する周辺画素よりも暗い注目画素について、出力画像の画素信号を生成する場合、ガンマ補正に基づいて生成される場合よりも輝度値の大きなものを生成することできる。また、このように周辺画素よりも暗い注目画素について生成される画素信号の輝度値を上昇させることができるので、注目画素が周辺画素より暗い場合に生成される画素信号の輝度値と、注目画素が周辺画素より明るいか同じ明るさである場合に生成される画素信号の輝度値との差を、ガンマ補正に基づいて生成される両信号の差よりも縮小することができる。
よって、元画像の画素信号の値が第1下限値以上である、即ち、元画像の明るい部分について、生成される出力画像の画素信号の取り得る輝度値の範囲を狭くすることができる。従って、出力画像の明るい部分における急激な階調変化を規制でき、かかる明るい部分に極端に輝度値の低下した過度に暗い画素が出現してしまう過補正を抑制することができるという効果がある。故に、明るい部分に過度に暗い画素が形成されるという目立った画質不良を回避でき、高画質の出力画像を生成することができるという効果がある。
更に、第1下限値未満である部分は、第1下限値以上である明部よりも暗い暗部となり、レティネックス処理によるガンマ補正(コントラスト強調、輝度値上昇)が最も必要とされる部分を含む。かかる部分(例えば逆光部位など)については、単調増加関数ではなく、ガンマ補正に基づいて出力画像の画素信号を生成することができるので、必要な部分においては的確に階調補正(コントラスト強調、輝度値上昇)を実行しつつ画質不良を招く過補正については抑制することができるという効果がある。
また、単調増加関数として、一次関数など、単純なアルゴリズムの関数を選択すれば、出力画像の画素信号を生成するための演算量を、ガンマ補正を行うよりも低減でき、画像処理を高速化することができるという効果がある。
請求項2記載の画像処理プログラムによれば、請求項1記載の画像処理プログラムの奏する効果に加え、元画像および出力画像の画素信号が取り得る輝度値のレンジは、0〜255の範囲とされており、第1輝度値調整ステップにおける出力最大輝度値は、その最低値が240とされているので、第1輝度値調整ステップにて生成される画素信号の輝度値が、元画像のそれに比べて極端に低下するといったことがなく、明部における過補正を確実に抑制することができるという効果がある。
また、出力最大輝度値を最大輝度値近傍の値とする場合に、いずれの値とするかによって、出力画像の画素信号の輝度値が取り得る範囲、即ち、明部でのコントラストの強調程度(言い換えれば過補正の程度)が変化する。出力最大輝度値が的確な値でない場合、即ち、過度に出力最大輝度値が小さい値であれば、コントラストは強調されるが過補正は抑制されず、逆に、過度に大きい値であれば、過補正は抑制されるがコントラスト強調が不十分になってしまう。しかし、元画像および出力画像において最大輝度値は255とされ、且つ、出力最大輝度値が最低240とされているので、出力最大輝度値を適切な値とすることができ、明部における過補正の抑制とコントラスト強調とを両立することができるという効果がある。
請求項3記載の画像処理プログラムによれば、請求項1又は2記載の画像処理プログラムの奏する効果に加え、注目画素の画素信号の値が予め定めた第2下限値以上であると共に反射光成分算出ステップにより算出された反射光成分値にて注目画素が周辺画素と同じ明るさであることが示されている場合には、第2輝度値調整ステップにて、元画像の画素信号の最大値をガンマ補正した補正値に基づいて求められる画素信号の輝度値よりも大きな値を、元画像の画素信号の最大輝度値近傍の値を出力画像の画素信号の出力最大輝度値とすると共に、元画像の注目画素の画素信号の輝度値が大きい程、出力画像の画素信号の輝度値を単調増加関数に従って出力最大輝度値により近い値とした画素信号が生成される。
よって、注目画素が周辺画素と同じ明るさである画素の内、最も明るい(最大輝度値の)画素については、輝度を大きく低下させることなく出力画像において表示でき、出力画像全体が暗くなることを回避できるという効果がある。出力画像の最大出力輝度が元画像の最大輝度値に近いほど、当然、元画像と出力画像とにおいて最も明るい画素の輝度変化は小さくなるからである。また、元画像の大部分においては、注目画素と周辺画素とは同じ明るさであるので、元画像中の最大輝度値を有する画素の多数は、周辺画素と同じ明るさとなっている。故に、元画像中の最大輝度値を有する画素の多数について、出力画像でもその明るさを維持する(最大輝度値近傍の値とする)ことができることとなり、画像全体が暗くなることを的確に回避できるのである。元画像中の最大輝度値の画素は白色画素であるため、輝度値の変化は、明るさを変更するのみならず、往々にして着色を発生させてしまうが、元画像中の最大輝度値を有する画素の大部分については周辺画素と同じ明るさであるため、輝度値の変化を微小とすることができ、目立った着色変化についても抑制できるので、画像品質の低下を回避できるという効果がある。
請求項4記載の画像処理プログラムによれば、請求項1から3のいずれかに記載の画像処理プログラムの奏する効果に加え、注目画素の画素信号の値が予め定めた第3下限値以上であると共に反射光成分算出ステップにより算出された反射光成分値にて注目画素が周辺画素より明るいことが示されている場合には、元画像の画素信号の最大値をガンマ補正した補正値に基づいて求められる画素信号の輝度値よりも大きな値を、出力画像の画素信号の出力最大輝度値とすると共に、第3輝度値調整ステップにより、元画像の注目画素の画素信号の輝度値が大きい程、出力画像の画素信号の輝度値を単調増加関数に従って出力最大輝度値により近い値とした画素信号が生成される。
よって、注目画素が周辺画素より明るい場合に、元画像の画素信号の最大値に対応して第3輝度値調整ステップにより生成される画素信号の輝度値を、ガンマ補正に基づいて生成されるものよりも最大輝度値に近い値とすることができるという効果がある。
一般に、注目画素が周辺画素より明るい場合に、ガンマ補正に基づいて出力画像の画素信号を生成すると、その出力最大輝度値は、元画像の最大輝度値を大きく上回った値となる。また、ガンマ補正によれば、生成される出力画像の輝度値は、元画像の画素値と出力最大輝度値に向かって増加するガンマ曲線とによって規定されるが、往々にして生成される出力画像の輝度値は、早い段階(元画像の画素値が最大値より大幅に小さい段階)で最大輝度値を超えてしまう。通常、出力可能な輝度値のレンジは元画像の最大輝度値を上限としており、最大輝度値を超えるものは最大輝度値に丸められてしまうので、ガンマ補正を用いると、出力画像の輝度値が元画像の画素値変化に応答しない階調とびが目立って発生してしまう(画質の低下)。
しかし、本プログラムは、出力画像の画素信号の出力最大輝度値を最大輝度値近傍の値とし、且つ、その出力最大輝度値に向かって出力画像の画素信号の輝度値は単調増加するように設計されているので、生成された出力画像の画素信号において、その輝度値が最大輝度値以上となるものを低減することができる。故に、ガンマ補正に基づいて出力画像の画素信号を生成する場合に比べて、出力画像における輝度値の階調とびを抑制でき、元画像中の明部における微妙な階調差を出力画像においても表現することができるので、高画質の出力画像を提供することができるという効果がある。
請求項5記載の画像処理プログラムによれば、請求項3又は4に記載の画像処理プログラムの奏する効果に加え、元画像および出力画像の画素信号が取り得る輝度値のレンジは、0〜255の範囲とされており、第2輝度値調整ステップにおける出力最大輝度値又は第3輝度値調整ステップにおける出力最大輝度値の最高値は、255とされているので、注目画素が周辺画素と同じ明るさであるか周辺画素より明るい場合には、元画像における最も明るい画素(輝度値255)を、出力画像においても同じ明るさ(輝度値255)の画素で形成することができるという効果がある。
よって、注目画素が周辺画素と同じ明るさである画素の内、最も明るい(最大輝度値の)画素については、輝度を低下させることなく同じ輝度で出力画像に表示でき、出力画像全体が暗くなることを回避できるという効果がある。また、元画像の大部分においては、注目画素と周辺画素とは同じ明るさであるので、元画像中の最大輝度値を有する画素の多数は、周辺画素と同じ明るさとなっている。故に、元画像中の最大輝度値を有する画素の多数について、出力画像でもその輝度を維持する(最大輝度値近傍の値とする)ことができることとなり、画像全体が暗くなることを的確に回避できるのである。
更に、注目画素が周辺画素より明るい場合に、出力最大輝度値を最高255とすることにより、出力画像の画素信号の最大値が255(元画像の最大輝度値)を超えてしまうことが無い。つまり、元画像の画素信号が最大値となるまで、その変化に応じて、出力画像の画素信号の輝度値を出力最大輝度値に向かって段階的に(徐々に)変化させることができるので、階調飛びを確実に回避することができるという効果がある。
加えて、元画像中の最大輝度値の画素は白色画素であるため、輝度値の変化は、明るさを変更するのみならず、往々にして着色も発生させてしまうが、元画像中の最大輝度値を有する画素の大部分については、出力画像においても、そのまま白色画素で出力できるので、画像品質の低下を回避できるという効果がある。
請求項6記載の画像処理プログラムによれば、請求項1から5のいずれかに記載の画像処理プログラムの奏する効果に加え、画素信号生成ステップにおいて、第1の画素信号の値に対し予め定めた反射光成分値をパラメータとしてガンマ補正を行った補正値、または、その補正値と第1の画素信号の値とに基づいて算出された第2の画素信号の値を画素信号生成因子とし、その画素信号生成因子を第1の画素信号の値に対応つけて予め記憶する記憶手段から、抽出ステップにより、注目画素の画素信号の値に基づいて対応する画素信号生成因子が抽出される。そして、その抽出ステップにて抽出された画素信号生成因子に基づいて出力画像の画素信号が抽出生成ステップにて生成される。
よって、かかる抽出生成ステップにより、ガンマ補正の複雑な演算を行うことなく出力画像の画素信号を生成することができるので、元画像に対するレティネックス処理を行って出力画像を生成する一連の画像処理において演算量を減らすことができ、高速で処理を行うことができるという効果がある。
請求項7記載の画像処理装置によれば、反射光成分算出手段により反射光成分値が算出される。ここで、反射光成分値は、注目画素と周辺画素との相対的な明るさの指標とされるものであって、元画像における注目画素の画素信号の値と注目画素周辺の周辺画素の平均輝度値とに基づいて算出される。また、この算出された反射光成分値をパラメータとして注目画素の画素信号の値をガンマ補正した補正値と、注目画素の画素信号の値とに基づいて、画素信号生成手段により、出力画像の画素信号が、即ち、レティネックス処理による補正がなされた画素信号が、生成される。
そして、画素信号生成手段において、注目画素の画素信号の値が、予め定めた第1下限値以上であると共に反射光成分算出手段により算出された反射光成分値にて当該注目画素が周辺画素より暗いことが示されている場合には、第1輝度値調整手段によって出力画像の画素信号が生成される。
ここで、出力最大輝度値は、元画像の画素信号の最大値をガンマ補正した補正値に基づいて求められる画素信号の輝度値よりも大きな値であり、第1輝度値調整手段では、元画像の画素信号の輝度値が大きい程、輝度値が単調増加関数に従ってこの出力最大輝度値により近い値となるように出力画像の画素信号が生成される。
このため、元画像中の明るい部分(明部)に属する周辺画素よりも暗い注目画素について、出力画像の画素信号を生成する場合、ガンマ補正に基づいて生成される場合よりも輝度値の大きなものを生成することできる。また、このように周辺画素よりも暗い注目画素について生成される画素信号の輝度値を上昇させることができるので、注目画素が周辺画素より暗い場合に生成される画素信号の輝度値と、注目画素が周辺画素より明るいか同じ明るさである場合に生成される画素信号の輝度値との差を、ガンマ補正に基づいて生成される両信号の差よりも縮小することができる。
よって、元画像の画素信号の値が第1下限値以上である、即ち、元画像の明るい部分について、生成される出力画像の画素信号の取り得る輝度値の範囲を狭くすることができる。従って、出力画像の明るい部分における急激な階調変化を規制でき、かかる明るい部分に極端に輝度値の低下した過度に暗い画素が出現してしまう過補正を抑制することができるという効果がある。故に、明るい部分に過度に暗い画素が形成されるという目立った画質不良を回避でき、高画質の出力画像を生成することができるという効果がある。
更に、第1下限値未満である部分は、第1下限値以上である明部よりも暗い暗部となり、レティネックス処理によるガンマ補正(コントラスト強調、輝度値上昇)が最も必要とされる部分を含む。かかる部分(例えば逆光部位など)については、単調増加関数ではなく、ガンマ補正に基づいて出力画像の画素信号を生成することができるので、必要な部分においては的確に階調補正(コントラスト強調、輝度値上昇)を実行しつつ画質不良を招く過補正については抑制することができるという効果がある。
また、単調増加関数として、一次関数など、単純なアルゴリズムの関数を選択すれば、出力画像の画素信号を生成するための演算量を、ガンマ補正を行うよりも低減でき、画像処理を高速化することができるという効果がある。
請求項8記載の画像処理装置によれば、請求項7記載の画像処理装置の奏する効果に加え、元画像および出力画像の画素信号が取り得る輝度値のレンジは、0〜255の範囲とされており、第1輝度値調整手段における出力最大輝度値は、その最低値が240とされているので、第1輝度値調整手段にて生成される画素信号の輝度値が、元画像のそれに比べて極端に低下するといったことがなく、明部における過補正を確実に抑制することができるという効果がある。
また、出力最大輝度値を最大輝度値近傍の値とする場合に、いずれの値とするかによって、出力画像の画素信号の輝度値が取り得る範囲、即ち、明部でのコントラストの強調程度(言い換えれば過補正の程度)が変化する。出力最大輝度値が的確な値でない場合、即ち、過度に出力最大輝度値が小さい値であれば、コントラストは強調されるが過補正は抑制されず、逆に、過度に大きい値であれば、過補正は抑制されるがコントラスト強調が不十分になってしまう。しかし、元画像および出力画像において最大輝度値は255とされ、且つ、出力最大輝度値が最低240とされているので、出力最大輝度値を適切な値とすることができ、明部における過補正の抑制とコントラスト強調とを両立することができるという効果がある。
請求項9記載の画像処理装置によれば、請求項7又は8記載の画像処理装置の奏する効果に加え、注目画素の画素信号の値が予め定めた第2下限値以上であると共に反射光成分算出手段により算出された反射光成分値にて注目画素が周辺画素と同じ明るさであることが示されている場合には、第2輝度値調整手段にて、元画像の画素信号の最大値をガンマ補正した補正値に基づいて求められる画素信号の輝度値よりも大きな値を、出力画像の画素信号の出力最大輝度値とすると共に、元画像の注目画素の画素信号の輝度値が大きい程、出力画像の画素信号の輝度値を単調増加関数に従って出力最大輝度値により近い値とした画素信号が生成される。
よって、注目画素が周辺画素と同じ明るさである画素の内、最も明るい(最大輝度値の)画素については、輝度を大きく低下させることなく出力画像において表示でき、出力画像全体が暗くなることを回避できるという効果がある。出力画像の最大出力輝度が元画像の最大輝度値に近いほど、当然、元画像と出力画像とにおいて最も明るい画素の輝度変化は小さくなるからである。また、元画像の大部分においては、注目画素と周辺画素とは同じ明るさであるので、元画像中の最大輝度値を有する画素の多数は、周辺画素と同じ明るさとなっている。故に、元画像中の最大輝度値を有する画素の多数について、出力画像でもその明るさを維持する(最大輝度値近傍の値とする)ことができることとなり、画像全体が暗くなることを的確に回避できるのである。元画像中の最大輝度値の画素は白色画素であるため、輝度値の変化は、明るさを変更するのみならず、往々にして着色を発生させてしまうが、元画像中の最大輝度値を有する画素の大部分については周辺画素と同じ明るさであるため、輝度値の変化を微小とすることができ、目立った着色変化についても抑制できるので、画像品質の低下を回避できるという効果がある。
請求項10記載の画像処理装置によれば、請求項7から9のいずれかに記載の画像処理装置の奏する効果に加え、注目画素の画素信号の値が予め定めた第3下限値以上であると共に反射光成分算出手段により算出された反射光成分値にて注目画素が周辺画素より明るいことが示されている場合には、元画像の画素信号の最大値をガンマ補正した補正値に基づいて求められる画素信号の輝度値よりも大きな値を、出力画像の画素信号の出力最大輝度値とすると共に、第3輝度値調整手段により、元画像の注目画素の画素信号の輝度値が大きい程、出力画像の画素信号の輝度値を単調増加関数に従って出力最大輝度値により近い値とした画素信号が生成される。
よって、注目画素が周辺画素より明るい場合に、元画像の画素信号の最大値に対応して第3輝度値調整手段により生成される画素信号の輝度値を、ガンマ補正に基づいて生成されるものよりも最大輝度値に近い値とすることができるという効果がある。
一般に、注目画素が周辺画素より明るい場合に、ガンマ補正に基づいて出力画像の画素信号を生成すると、その出力最大輝度値は、元画像の最大輝度値を大きく上回った値となる。また、ガンマ補正によれば、生成される出力画像の輝度値は、元画像の画素値と出力最大輝度値に向かって増加するガンマ曲線とによって規定されるが、往々にして生成される出力画像の輝度値は、早い段階(元画像の画素値が最大値より大幅に小さい段階)で最大輝度値を超えてしまう。通常、出力可能な輝度値のレンジは元画像の最大輝度値を上限としており、最大輝度値を超えるものは最大輝度値に丸められてしまうので、ガンマ補正を用いると、出力画像の輝度値が元画像の画素値変化に応答しない階調とびが目立って発生してしまう(画質の低下)。
しかし、本装置は、出力画像の画素信号の出力最大輝度値を最大輝度値近傍の値とし、且つ、その出力最大輝度値に向かって出力画像の画素信号の輝度値は単調増加するように設計されているので、生成された出力画像の画素信号において、その輝度値が最大輝度値以上となるものを低減することができる。故に、ガンマ補正に基づいて出力画像の画素信号を生成する場合に比べて、出力画像における輝度値の階調とびを抑制でき、元画像中の明部における微妙な階調差を出力画像においても表現することができるので、高画質の出力画像を提供することができるという効果がある。
請求項11記載の画像処理装置によれば、請求項9又は10に記載の画像処理装置の奏する効果に加え、元画像および出力画像の画素信号が取り得る輝度値のレンジは、0〜255の範囲とされており、第2輝度値調整手段における出力最大輝度値又は第3輝度値調整手段における出力最大輝度値の最高値は、255とされているので、注目画素が周辺画素と同じ明るさであるか周辺画素より明るい場合には、元画像における最も明るい画素(輝度値255)を、出力画像においても同じ明るさ(輝度値255)の画素で形成することができるという効果がある。
よって、注目画素が周辺画素と同じ明るさである画素の内、最も明るい(最大輝度値の)画素については、輝度を低下させることなく同じ輝度で出力画像に表示でき、出力画像全体が暗くなることを回避できるという効果がある。また、元画像の大部分においては、注目画素と周辺画素とは同じ明るさであるので、元画像中の最大輝度値を有する画素の多数は、周辺画素と同じ明るさとなっている。故に、元画像中の最大輝度値を有する画素の多数について、出力画像でもその輝度を維持する(最大輝度値近傍の値とする)ことができることとなり、画像全体が暗くなることを的確に回避できる。
更に、注目画素が周辺画素より明るい場合に、出力最大輝度値を最高255とすることにより、出力画像の画素信号の最大値が255(元画像の最大輝度値)を超えてしまうことが無い。つまり、元画像の画素信号が最大値となるまで、その変化に応じて、出力画像の画素信号の輝度値を出力最大輝度値に向かって段階的に(徐々に)変化させることができるので、階調飛びを確実に回避することができるという効果がある。
加えて、元画像中の最大輝度値の画素は白色画素であるため、輝度値の変化は、明るさを変更するのみならず、往々にして着色も発生させてしまうが、元画像中の最大輝度値を有する画素の大部分については、出力画像においても、そのまま白色画素で出力できるので、画像品質の低下を回避できるという効果がある。
請求項12記載の画像処理装置によれば、請求項7から11のいずれかに記載の画像処理装置の奏する効果に加え、画素信号生成手段において、第1の画素信号の値に対し予め定めた反射光成分値をパラメータとしてガンマ補正を行った補正値、または、その補正値と第1の画素信号の値とに基づいて算出された第2の画素信号の値を画素信号生成因子とし、その画素信号生成因子を第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等が備えられている。尚、図6、図7に示すフローチャートのプログラムは、画像処理プログラム12aの一部としてROM12に記憶されている。
上限値テーブル12c、中央値テーブル12d、下限値テーブル12eは、レティネックス処理による補正が行われた出力値Outyを生成するためのテーブルであって、輝度信号Yとその輝度信号Yに対する出力である出力値Outyとが対応つけて記憶されている。
また、各テーブル12c〜12eには、輝度信号Yが「128」未満である場合には、ガンマ補正演算に従って得られる出力値Outyが各輝度信号Yに対応して記憶される一方、輝度信号Yが「128」以上である場合には、ガンマ補正演算ではなく単調増加関数である一次関数に従って得られる出力値Outyが各輝度信号Yに対応して記憶されている。
従来のレティネックス処理は、元画像の全ての画素に対して一律にガンマ補正演算を行って出力値Outyを生成するものであった。ところが、かかる手法では、過補正が発生してしまう。そこで、本実施形態では、元画像の明部に対応する領域(本実施形態においては輝度信号Yが「128」以上)については、ガンマ補正演算によらず、単調増加関数である一次関数を用いて出力値Outyを生成するように各テーブル12c〜12eが構成されているのである。
プリンタ1は、この各テーブル12c〜12eを備えることにより、ガンマ補正演算を行うことなく、元画像データから、レティネックス処理がなされた出力画像データを、テーブルデータに基づいて生成することができるようになっている。その上、かかるテーブル12c〜12eを用いて出力値Outyを生成することにより、明部において(輝度が大きくなるほど)目立った画質不良となる過補正の発生を回避できる。
ここで、元画像データは、ラスタデータであって元画像を形成する各画素の画素値(信号強度値、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を導出することができ、各テーブル12c〜12eに記憶させるテーブルデータを得ることができるのである。
本実施形態においては、(4)式に従って算出される出力値Outyの内、上記したように輝度信号Yが「0」〜「127」である場合に導出されたもののみが、各テーブル12c〜12eには記憶されている。
尚、この輝度信号Yの値が請求項記載の輝度値に該当する。また、本実施形態においては、輝度信号Yは、RGB値(RGB信号)の画素値が変換されたものであるので、この輝度信号Yは、請求項記載の画素信号にも該当する。また、本実施形態においては、輝度信号Yに対しレティネックス処理を行う構成としたが、これに代えて、RGB値をそのまま用いてレティネックス処理を行うようにしても良い。
多数の正規化反射率refleに対応する出力値Outyをテーブルデータで備えるほど、当然ながら、正確な((4)式の演算にて求める値に近似する)出力値Outyを取得することができる。しかし、テーブルデータの増大は、メモリ容量を圧迫したり、大容量のメモリが必要となるなど好ましくない。
そこで、本実施形態においては、少ないテーブル数で最適な出力値Outyを取得することができるように、予め定めた3つの正規化反射率refleに対応する3種類のテーブル12c〜12eを、ROM12に記憶させている。また、図7において後述するように、各テーブル12c〜12eからの正規化反射率refleに基づいた出力値Outyの抽出に、線形補間演算を組み合わせて、出力値Outyを生成するように画像処理プログラム12aは構成されている。これにより、プリンタ1は、テーブルデータを記憶するためのメモリ容量を抑制しつつ、的確な出力値Outyを生成することができるようになっている。
具体的には、上限値テーブル12c、中央値テーブル12d、下限値テーブル12eは、予め定めた反射率(正規化反射率refle)に対応して設けられたものであり、上限値テーブル12cは正規化反射率refleを1.3、中央値テーブル12dは正規化反射率refleを0.8、下限値テーブル12eは正規化反射率refleを0.3として、それぞれ形成されたものである。
尚、図4及び図5において後述するが、正規化反射率refleの1.3は、対数値Rが正である(注目画素が周辺画素よりも明るい)場合に対応した値である。正規化反射率refleの0.8は、対数値Rが0である(注目画素と周辺画素とが同じ明るさである)場合に対応した値である。正規化反射率refleの0.3は、対数値Rが負である(注目画素が周辺画素よりも暗い)場合に対応した値である。
ここで、図2及び図3を参照して、上限値テーブル12c、中央値テーブル12d、下限値テーブル12eについて詳細に説明する。図2は、上限値テーブル12c、中央値テーブル12d、下限値テーブル12eの構成を模式的に示した図であり、図3は、図2に示した各テーブル12c〜12eに記憶されるテーブルデータである輝度信号Yと出力値Outyとの関係(輝度信号Yから出力値Outyを求めるための関数)を示したグラフである。
図2においては、上限値テーブル12c、中央値テーブル12d、下限値テーブル12eを一覧表の態様で示しており、最左端の欄には、入力値となる輝度信号Yが表示されている。尚、各テーブル12c〜12eには、「0」〜「255」の範囲において1ずつ更新された輝度信号Yの値が記憶されているが、図2においては、4ずつ更新した値(「0」、「4」、「8」、・・・、「252」)と「255」とを表示し、他の値については、その表示を省略している(出力値Outyについても同様)。この輝度信号Yの表示欄の右方には、出力値Outyを表示する3つの表示欄が示されている。出力値Outyの3つの表示欄には、左から順に、下限値テーブル12e、中央値テーブル12d、上限値テーブル12cのそれぞれに記憶されるテーブルデータ(出力値Outy)が表示されている。つまり、左から順に、正規化反射率refle0.3の場合に生成される出力値Outy、正規化反射率refle0.8の場合に生成される出力値Outy、正規化反射率refle1.3の場合に生成される出力値Outyが、左方に表示されている輝度信号Yに対応してそれぞれ示されている。
図3において、横軸には、輝度信号Yを示している。縦軸には、出力値Outyを示している。そして、図3において二点鎖線で示した特性線f1は、上限値テーブル12cに記憶される出力値Outyを輝度信号Yから生成するための関数であって、上限値テーブル12cのテーブルデータをグラフ化したものである。同様に、一点鎖線で示した特性線f2は、中央値テーブル12dに記憶される出力値Outyを輝度信号Yから求めるための関数であって、中央値テーブル12dのテーブルデータをグラフ化したものである。破線で示した特性線f3は、下限値テーブル12eに記憶される出力値Outyを輝度信号Yから求めるための関数であって、下限値テーブル12eのテーブルデータをグラフ化したものである。
かかる特性線f1〜f3のそれぞれにおいて、輝度信号Yが「0」〜「255」の各値(整数値)である場合に特性線上で得られる各値が出力値Outyである。逆に言えば、この得られる各出力値Outyが「0」〜「255」の各値に対応つけられて、図1及び図2に示した対応するテーブル12c〜12eに記憶されているのである。
ここで、各特性線は、輝度信号Yの値「128」において変曲点を有している。これは、出力値Outyを生成する関数が、輝度信号Yが「128」までは、ガンマ補正演算を含む(4)式のものであると共に、輝度信号Yが「128」以上では、単調増加関数である一次関数で設計されているからである。
具体的には、上限値テーブル12cに記憶されるテーブルデータ(出力値Outy)を生成する関数は、輝度信号Yが「128」までは、(4)式における正規化反射率refleが1.3とされたものである。また、輝度信号Yが「128」以上から「254」までは、出力値Outyを生成する関数は、傾きを0.62切片を97.14とする一次関数(y=0.62x+97.14、上限値演算式)とされている。
これにより、図3に示すように正規化反射率refleが1.3であれば、輝度信号Yが「128」以上では、出力値Outyは「255」近傍に向かって増大する。また、輝度信号Yが「254」であっても、出力値Outyは「255」を超えない値「254.62」となる。更に、輝度信号Yが「255」である場合には、上限値演算式によらず、出力値Outyは「255」とされている(図2参照)。
故に、プリンタ1において、この上限値テーブル12cに従って出力値Outyが生成されると、輝度信号Yが「255」である場合に出力値Outyが「255」で生成される一方、輝度信号Yが「255」に到達する手前において、出力値Outyが255を超えて生成されることはない。つまり、輝度信号Yが一定値以上において全て「255」で出力されてしまうといった階調飛びが発生することはない。
更には、元画像中において周辺画素よりも明るい画素であって且つ最も明るい画素(輝度信号Y「255」)については、出力画像においても最も明るい画素(出力値Outy「255」)とすることができる。元画像中の最も明るい画素であって、且つ、周辺画素よりも明るい画素である場合に、その輝度が出力画像において低下すると、出力画像が元画像に比べて著しく暗くなった印象を閲覧者に与えてしまうが、プリンタ1においては、かかる輝度低下が発生することがないので、画像品質を良好に維持することができる。
また、後述するように、本実施形態においては、元画像中の各画素の正規化反射率refleは、1.3が上限値であり、更に、周辺画素より明るい注目画素の正規化反射率refleは、0.8を超え1.3以下の値である。ここで、正規化反射率refleが1.3未満であって、0.8を超えている場合には、その割合((正規化反射率−0.8)/0.5)に応じた線形補間演算にて、出力値Outyが生成される(図7参照)。このため、0.8<正規化反射率refle<1.3の場合には、正規化反射率refleが0.8である場合の最大の出力値Outyである「248」を超え、且つ、正規化反射率refleが1.3である場合の最大の出力値Outyである「255」未満の間のいずれかの値に向かって、出力値Outyは増大することとなる。従って、注目画素が周辺画素より明るい場合(0.8<正規化反射率refle≦1.3)に、輝度信号Y「255」に対応する出力値Outyが取り得る最高値は「255」となる。
中央値テーブル12dに記憶されるテーブルデータ(出力値Outy)を生成する関数は、輝度信号Yが「128」までは、(4)式における正規化反射率refleが0.8とされたものである。また、輝度信号Yが「128」以上から「254」までは、出力値Outyを生成する関数は、傾きを0.77切片を51.13とする一次関数(y=0.77x+51.13、中央値演算式)とされている。このため、輝度信号Yが「254」である場合には、出力値Outyは「246.71」で生成される。更に、輝度信号Yが「255」である場合には、中央値演算式によらず、出力値Outyは「248」とされている(図2参照)。故に、この中央値テーブル12dに従って出力値Outyが生成されると、輝度信号Yが「255」である場合に出力値Outyが「248」で生成される一方、輝度信号Yが「128」以上では、ガンマ補正演算によらず、出力値Outyは「248」に向かって増大することとなる。
下限値テーブル12eに記憶されるテーブルデータ(出力値Outy)を生成する関数は、輝度信号Yが「128」までは、(4)式における正規化反射率refleが0.3とされたものである。また、輝度信号Yが「128」以上から「254」までは、出力値Outyを生成する関数は、傾きを1.04切片を−25.33とする一次関数(y=1.04x−25.33、下限値演算式)とされている。このため、輝度信号Yが「254」である場合には、出力値Outyは「238.83」で生成される。更に、輝度信号Yが「255」である場合には、下限値演算式によらず、出力値Outyは「240」とされている(図2参照)。その結果、プリンタ1において、この下限値テーブル12eに従って出力値Outyが生成されると、輝度信号Yが「255」である場合に出力値Outyが「240」で生成される一方、輝度信号Yが「128」以上では、出力値Outyは「240」に向かって増大することとなる。
また、元画像中の各画素の正規化反射率refleは、後述するように、0.3が下限値である。本実施形態においては、周辺画素より暗い注目画素の正規化反射率refleは、0.8未満0.3以上の値となる。ここで、正規化反射率refleが0.8未満であって、0.3を超えている場合には、その割合((正規化反射率−0.3)/0.5)に応じた線形補間演算にて、出力値Outyが生成される(図7参照)。このため、0.3<正規化反射率refle<0.8の場合には、正規化反射率refleが0.3である場合の最大の出力値Outy「240」を超え、且つ、正規化反射率refleが0.8である場合の最大の出力値Outy「248」未満の間のいずれかの値に向かって、出力値Outyは増大することとなる。従って、注目画素が周辺画素より暗い場合(0.3≦正規化反射率refle<0.8)に、輝度信号Y「255」に対し、取り得る出力値Outyの最低値は240となり、これを下回る事はない。
このように、各テーブル12c〜12eに従えば、輝度信号Yが「128」までは、ガンマ補正演算にて補正された出力値Outyを得ることができ、ガンマ補正演算に従った階調補正(コントラスト強調や輝度値上昇)を行うことができる。一方で、輝度信号Yが「128」以上になると、ガンマ補正演算によらず、緩やかに出力値Outyが上昇する一次関数にて輝度信号Yが補正した出力値Outyを得ることができる。背景技術において説明したように(図12参照)、明部においては(輝度信号Yの値が大きくなる程)、ガンマ補正演算を行うと、注目画素の画素値(輝度信号Y)が同じであっても周辺画素との明暗関係によってその値が大きく変化する。例えば、図12の例によれば、ガンマ補正演算に基づいて出力値Outを求めた場合、対数値Rが正であると、元画像の画素値が「255」に対し出力値は「255」となる一方で、対数値Rが負であると出力値は「170」程度にしかならない。輝度信号Yの値も同様である。
このように同じ画素値(輝度信号Yの値)に対し広範囲の出力値が与えられてしまうことによって、僅かな画素値(輝度信号Yの値)の差が大きく増長される過補正(過度なコントラスト強調)が発生するのである。しかし、プリンタ1が備える下限値テーブル12e(対数値Rが負(正規化反射率refleが下限値)である場合に対応するテーブル)では、元画像の輝度信号Y「255」に対する出力値Outyは「240」とされており、ガンマ補正演算にて求められる値よりも遥かに大きな値とされている。一方で、上限値テーブル12c(対数値Rが正(正規化反射率refleが上限値)である場合に対応するテーブル)では、元画像の輝度信号Y「255」に対する出力値Outyは「255」とされている。このため、明部においては(輝度信号Yが大きくなるほど)、出力値Outyが取り得る分布範囲は、ガンマ補正演算を行う従来に比べて狭小な範囲に納めることができる。その結果、明部においてコントラストが過度に強調される過補正を、大きく抑制することができる。故に、プリンタ1においては、元画像の暗部(輝度信号Yの小さい側、本実施形態においては128未満)における必要な輝度上昇(逆光領域の逆光補正)と、明部における過補正の抑制とを実現することができるのである。その上、逆光補正も過補正の抑制も不要な中間領域においては、同じ画素値(輝度信号Yの値)に対し適度な範囲の出力値を取り得るので、かかる中間領域においては、十分なコントラスト強調を実現することができる。
尚、本実施形態では、上記各テーブル12c〜12eは、記憶される出力値Outyの内、輝度信号値Y「128」〜「254」に対する出力値Outyは1種類の一次関数で生成されたものとされ、輝度信号値Yが「255」に対する出力値Outyは、かかる一次関数によらない固定値とされたものであったが、変曲点(本実施形態では「128」)から「255」までの範囲における全ての輝度信号値Yに対して1種類の一次関数で生成した出力値Outyを記憶する構成としても良い。更には、上記各テーブル12c〜12eを、変曲点から「255」までの範囲の輝度信号Yに対し複数種類の一次関数で生成した出力値Outyを記憶する構成としても良い。
また、図3に示されるように、3本の特性線f1〜f3は、正規化反射率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を生成することができるのである。
また、ガンマ補正演算(ガンマ関数)は、その増加率が次第に減少する特性を有しているため、輝度信号Yの増加につれ、やがては、入力値である輝度信号Yよりも出力値Outyの方が小さくなる。従って、輝度信号Y≧出力値Outyとなる境界点は、各正規化反射率refleにおけるガンマ補正演算の関数曲線と、輝度信号Yの値をそのまま無変換で出力値Outyとする場合の無変換直線(一次関数y=x)との交点で示される。この交点よりも輝度信号Yが大きくなる程、ガンマ補正演算にて求められる出力値Outyと無変換直線との差は拡大する。この傾向は、対数値Rが負である場合、即ち、正規化反射率refleが小さくなるほど、顕著となる(図12参照)。
ここで、輝度信号Yの値の「255」に対し、出力値Outyを「255」近傍の値で生成する関数を設計する場合、輝度信号Yの値に対し、ガンマ補正演算から一次関数演算に切り替わる変曲点が、(交点より後方において)「255」に近づくほど、一次関数の傾きaは増大する。このため変曲点が「255」近傍となると、急激な出力値Outyの変化を引き起こしてしまう。かかる急激な出力値Outyの変化は、画質の低下を招きかねないため、各テーブル12c〜12eは、ガンマ補正演算から一次関数演算への切り換えが中点付近で行われるように、即ち変曲点が中点付近となるように構成されている。これにより、傾きaを1近傍の値又はそれ以下の値として、その出力値Outyの上昇が緩やかに生じさせることができるようになっている。
尚、本実施形態において設けられた各テーブル12c〜12eは、輝度信号Yの値において「128」が変曲点となるように構成されたが、変曲点は「128」に限られるものではない。例えば、かかる変曲点を、図3に示した特性線f3に対し無変換直線が交差する交点の輝度信号Yの値以上であって、特性線f2に対しy=xの直線が交差する交点の輝度信号Yの値以下の範囲において、任意の値に設定してもよい。
ここで、プリンタ1内部に記憶させるテーブルデータがどのような内容で構成されているか、即ち、テーブルデータの形成に用いられた正規化反射率refleの値がどのように設計されているかは、少ないテーブル数で的確な出力値Outyを生成するための重要な要素である。
そこで、図4と図5とを参照して、本プリンタ1に記憶させた各テーブル12c〜12eの形成に用いられた正規化反射率refleについて詳細に説明する。
図4は、元画像データから求められる対数値Rと元画像との関係を説明する図である。図4(a)には、逆光画像である元画像(逆光画像模式図)が表示されている。該元画像は、矩形状の外形を有する態様に形成されると共に、中央部において円形の逆光部位を有している。図4(b)は、元画像の各画素値を反射率(対数値R)に変換して形成した変換画像を示している。ここで、対数値Rは、注目画素の画素値とその周辺画素の平均輝度値との差を示す値、言い換えれば、注目画素と周辺画素との明るさの差を表す値である。変換画像において、白で示される領域Aは対数値Rが正であることを、黒で示される領域Cは対数値Rが負であることを、灰色で示される領域Bは対数値Rが0であることをそれぞれ示している。
この対数値Rが正の値を持つ場合、注目画素は、周辺画素よりも明るいことを示している。逆に、対数値Rが負の値を持つ場合、注目画素は、周辺画素よりも暗いことを示している。また、対数値Rが0である場合は、注目画素は、周辺画素と同じ明るさであることを示している。
一般には、元画像の各部においては、その明るさが一様であることが多い。逆光部位の大部分は同じように暗く、また、逆光部位以外の他の部分については、同じように明るい。従って、変換画像に示すように、物体の輪郭周辺や、逆光部位と非逆光部位との境界周辺など、画像の一部の領域に属する一部の画素が、周辺画素よりも明るく又は暗くなるのである。
図5は、図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の正規化は、次の2つの条件を満たすように行われている。1つ目の条件は、正規化して得られる正規化反射率refleが、0を含まない値とすることである。これは、上記したように、出力値Outyが算出不能となることを回避するためである。
2つ目の条件は、正規化された正規化反射率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から消去される。
次に、図6と図7とのフローチャートを参照して、上記のように構成されたプリンタ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の処理を実行する。
図7は、図6の補正処理の中で実行される出力値算出処理(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は、ガンマ補正演算を含む(4)式で生成された出力値Outyを「128」未満の輝度信号Yに対応して記憶すると共に、「128」以上の輝度信号Yに対しては、単調増加関数である一次関数を基本に生成された出力値Outyを記憶する各テーブル12c〜12eを備えており、かかるテーブル12c〜12eから、注目画素の輝度信号Yと正規化反射率refleとに基づいて、出力値Outyを抽出し、その抽出した出力値OutyをRGB値に変換して出力値Outを生成する。ここで、下限値テーブル12eでは、元画像の輝度信号Y「255」に対する出力値Outyは「240」とされており、ガンマ補正演算にて求められる値よりも遥かに大きな値とされている。一方で、上限値テーブル12cでは、元画像の輝度信号Y「255」に対する出力値Outyは「255」とされている。このため、明部においては(輝度信号Yが大きくなるほど)、出力値Outyが取り得る分布範囲は、ガンマ補正演算を行う従来に比べて狭小な範囲に納めることができ、その結果、明部における過補正を大きく抑制することができる。故に、プリンタ1においては、元画像の暗部(輝度信号Yの小さい側、本実施形態においては「128」未満)における必要な輝度上昇(逆光補正)と、明部における過補正の抑制とを実現することができる上、更には、逆光補正も過補正の抑制も不要な中間領域においてはコントラスト強調を実現することができる。
更に、テーブルデータを参照することによってガンマ補正演算を行うことなく、入力された元画像をレティネックス処理して出力画像を生成することができるので、画像処理を高速化することができる。その上、元画像が最も多く有する正規化反射率refleの値にて形成されたテーブルデータ(中央値テーブル12d)を備えているので、テーブルデータを参照して作成される出力値Outを正確なものとすることができ、ガンマ補正演算によらずに出力画像を生成しても、画質を低下させることがない。
次に、図8を参照して、本発明の第2実施形態について説明する。上記した第1実施形態のプリンタ1は、上限値テーブル12c、中央値テーブル12d、下限値テーブル12eを備え、入力された元画像について、その各画素の輝度信号Yと正規化反射率refleとに基づき、各テーブル12c〜12eから出力値Outyを抽出して、出力値Outを生成するように構成された。つまり、プリンタ1の画像処理プログラム12aは、予め記憶されるテーブルデータから、出力値Outyを生成するように構成された。
これに代えて、第2実施形態では、元画像の各画素の輝度信号Yと正規化反射率refleとから、ガンマ補正演算または一次関数による演算を行って出力値Outyを生成するように画像処理プログラム12aが構成されている。このため、第1実施形態に設けらた上限値テーブル12c、中央値テーブル12d、下限値テーブル12eは非設とされている。尚、上記した第1実施形態と同じ部分には同じ符号を付し、その説明を省略する。
第2実施形態の画像処理プログラム12aは、図6と同様の補正処理が実行するように構成されているが、この図6の補正処理の中で実行される出力値算出処理(S15)が、図8に示す出力値算出処理(S51)に変更されている。
図8は、図6の補正処理の中で実行される第2実施形態の出力値算出処理(S51)のフローチャートである。尚、出力値算出処理(S51)は、1の注目画素毎(1の輝度信号Y毎)に実行されるように構成されており、輝度値メモリ13fからは、出力値算出処理(S51)の実行毎に、座標に従った順番で(先頭座標から最終座標へ向かうラスタ走査の順で)、輝度信号Yが読み出され、最終画素の輝度信号Yの処理が終了するまで、繰り返して実行される。
この出力値算出処理(S51)では、まず、第1実施形態の出力値算出処理(S15)と同様に、S21〜S24の処理によって、輝度値メモリ13fに記憶される輝度信号Yについて反射率(対数値R)の算出と、対数値Rの対数値メモリ13gへの記憶と、正規化反射率refle(x,y)の算出と、正規化反射率refle(x,y)のrefle値メモリ13hへの記憶とを行う。
その後、読み出した輝度信号Y(x,y)が128未満であるかを確認し(S53)、128未満でなければ(S53:No)、一次関数に従った出力値Outyを算出する処理を、S55以降の処理によって行う。S55の処理では、refle値メモリ13hへ記憶した正規化反射率refle(x,y)が1.3であるかを確認する(S55)。ここで、正規化反射率refle(x,y)が1.3でなければ(S55:No)、正規化反射率refleは、1.3未満であるので、正規化反射率refle(x,y)が0.8を超えているかを確認する(S56)。つまり、このS56の処理により、正規化反射率refleが0.8を超え1.3未満の範囲にあるかが判断される。そして、正規化反射率refle(x,y)が0.8を超えている場合には(S56:Yes)、輝度値メモリ13fから読み出した輝度信号Y(x,y)に対応する出力値Outyを、上限値演算式と中央値演算式とのそれぞれから算出する(S57)。上限値演算式にて算出した出力値OutyをOu、中央値演算式から算出した出力値OutyをOcとする。
尚、各演算式は、第1実施形態で用いられた演算式と同じであり、上限値演算式は、一次関数(y=0.62x+97.14)であり、中央値演算式は、一次関数(y=0.77x+51.13)である。また、下限値演算式は一次関数(y=1.04x−25.33)である。
続いて、算出した出力値Ou,Odを、(7)式に従って、正規化反射率refle(x,y)の値に基づいた線形補間をして、輝度信号Y(x,y)に対応する出力値Outyを求める(S58)。
そして、求めた出力値Outyを、(6)式に従ってRGB値に逆変換して出力値Outを生成し、生成元の輝度信号Yの座標(x,y)に対応させて出力画像メモリ13iに書き込んで(S59)、この出力値算出処理(S51)を終了する。
また、S53の処理で確認した結果、読み出した輝度信号Y(x,y)が128未満であれば(S53:Yes)、ガンマ補正演算処理を実行し(S54)、輝度信号Yと正規化反射率refleとに基づいて、ガンマ補正演算を含む(4)式にて出力値Outyを算出し、その後、その処理をS59の処理に移行する。
一方、S55の処理で確認した結果、正規化反射率refle(x,y)が1.3であれば(S55:Yes)、輝度信号Y(x,y)に対応する出力値Outyを上限値演算式にて算出して(S60)、その処理をS59の処理に移行する。
また、S56の処理で確認した結果、正規化反射率refle(x,y)が0.8を超えていなければ(S56:No)、正規化反射率refleが0.8であるかを確認し(S61)、正規化反射率refleが0.8でなければ(S61:No)、正規化反射率refleは、0.8未満であるので、更に、0.3を超えているかを確認する(S62)。つまり、このS62の処理により、正規化反射率refleが0.3を超え0.8未満の範囲にあるかが判断される。ここで、正規化反射率refle(x,y)が0.3を超えていれば(S62:Yes)、輝度値メモリ13fから読み出した輝度信号Y(x,y)に対応する出力値Outyを、下限値演算式と中央値演算式とのそれぞれから算出する(S63)。ここで、下限値演算式にて算出した出力値OutyをOdとする。次いで、算出した出力値Oc,Odを、(8)式に従って、正規化反射率refle(x,y)の値に基づいた線形補間をして、輝度信号Y(x,y)に対応する出力値Outyを求める(S64)。その後、その処理をS59の処理に移行する。
更に、S61の処理で確認した結果、正規化反射率refleが0.8であれば(S61:Yes)、輝度信号Yに対応する出力値Outyを中央値演算式から算出して(S65)、S59の処理に移行する。
また、S62の処理で確認した結果、正規化反射率refle(x,y)が、0.3を超えていなければ(S62:No)、正規化反射率refleは0.3であるので、輝度信号Yに対応する出力値Outyを下限値演算式にて算出して(S66)、S59の処理に移行する。
各演算式は正規化反射率refleが1.3,0.8,0.3のそれぞれに対応するものであるので、算出された正規化反射率refleが1.3,0.8,0.3の場合には、線形補間演算を行う必要がない。S60,S65,S66の処理は、算出された各画素の正規化反射率refleが、1.3,0.8,0.3の場合にそれぞれ実行されるものであり、従って、線形補間演算を行うステップS58,S64を経由することなく、S59の処理に移行するようになっている。このため、S60、S65、S66を経由して実行されるS59の処理では、各演算式にて算出されてた出力値Outyそのものが、出力値Outに変換される。
このように、第2実施形態によれば、輝度信号Yが128未満であるか否かを判定し、128未満であればガンマ補正演算に基づいて出力値Outyを生成し、128以上であれば一次関数(上限値演算式、中央値演算式、下限値演算式)によって出力値Outyを生成する。故に、予め出力値Outyを記憶する各テーブル12c〜12eが設けられていなくとも、ガンマ補正演算と一次関数演算とを組み合わせた演算によって、階調補正を行いつつその過補正については抑制することができる。
次に、図9と図10とを参照して、本発明の第3実施形態について説明する。上記した第1実施形態における上限値テーブル12c、中央値テーブル12d、下限値テーブル12eは、輝度信号Yに対応つけて出力値Outyを記憶すると共に、輝度信号Yが「128」未満では、各輝度信号Yに対応してガンマ補正演算に基づいて生成される出力値Outyを記憶し、輝度信号Yが「128」以上では、各輝度信号Yに対応して一次関数に基づいて生成される出力値Outyを記憶するように構成された。これに代えて、第3実施形態の上限値テーブル12c、中央値テーブル12d、下限値テーブル12eは、輝度信号Yに対応して、3次関数によって生成された出力値Outyが記憶された構成とされている。尚、上記した第1実施形態と同じ部分には同じ符号を付し、その説明を省略する。
また、第3実施形態においては、第1実施形態の上限値テーブル12c、中央値テーブル12d、下限値テーブル12eに代えて、図9、図10に示した各テーブル12c〜12eを用いる以外は、第1実施形態と同様の画像処理プログラム12aによって、画像処理が実行される。
図9は、第3実施形態においてROM12に記憶されている上限値テーブル12c、中央値テーブル12d、下限値テーブル12eの構成を模式的に示した図である。図10においては、上限値テーブル12c、中央値テーブル12d、下限値テーブル12eを一覧表の態様で示しており、「0」〜「255」の範囲において1ずつ更新された輝度信号Yと、その輝度信号の右方に、輝度信号Yに対応して3次関数にて導出された出力値Outyが表示されている。出力値Outyは、3つの表示欄に表示されており、かかる出力値Outyの3つの表示欄は、左から順に、下限値テーブル12e、中央値テーブル12d、上限値テーブル12cのそれぞれに記憶されるテーブルデータ(出力値Outy)が示されている。つまり、左から順に、正規化反射率refle0.3の場合に生成される出力値Outy、正規化反射率refle0.8の場合に生成される出力値Outy、正規化反射率refle1.3の場合に生成される出力値Outyがそれぞれ示されている。かかる上限値テーブル12c、中央値テーブル12d、下限値テーブル12eに記憶される出力値Outyは、以下に示す(9)式に従って算出されている。
(9)式において、Kは係数であり、輝度信号Yが「255」である場合に導出される出力値Outyの値である。第3実施形態においては、この係数Kは、正規化反射率refleが0.3の場合に「240」とされ、正規化反射率refleが0.8の場合に「255」とされ、正規化反射率refleが1.3の場合に「272」とされている。言い換えれば、係数Kを「240」とした(9)式に従って算出された出力値Outyが下限値テーブル12eに記憶されており、係数Kを「255」とした(9)式に従って算出された出力値Outyが中央値テーブル12dに記憶されており、係数Kを「272」とした(9)式に従って算出された出力値Outyが上限値テーブル12cに記憶されている。
図10は、図9に示した第3実施形態の各テーブル12c〜12eに記憶されるテーブルデータである輝度信号Yと出力値Outyとの関係(輝度信号Yから出力値Outyを求めるための関数)を示したグラフである。即ち、横軸を輝度信号Yとし、縦軸を出力値Outyとすると共に、係数Kを240、255、272として(9)式にて生成される3次関数曲線を示したものである。
これによれば、正規化反射率refleが0.8の場合に輝度信号Y「255」の画素は、出力値Outy「255」となるので、元画像中の最も明るい画素(白色画素)を出力画像においても最も明るい画素として生成することができる。ここで、元画像の大部分においては、注目画素と周辺画素とは同じ明るさであるので、正規化反射率refleが0.8となっている。このため、元画像中の最も明るい画素(輝度信号Y「255」)の多数について、出力値Outyが「255」となるので、出力画像でもその輝度を維持することができることとなり、画像全体が暗くなることを的確に回避できる。
図10において二点鎖線で示した特性線(3次関数曲線)f4は、上限値テーブル12cに記憶される出力値Outyを輝度信号Yから生成するための関数であって、上限値テーブル12cのテーブルデータをグラフ化したものである。同様に、一点鎖線で示した特性線(3次関数曲線)f5は、中央値テーブル12dに記憶される出力値Outyを輝度信号Yから生成するための関数であって、中央値テーブル12dのテーブルデータをグラフ化したものである。破線で示した特性線(3次関数曲線)f6は、下限値テーブル12eに記憶される出力値Outyを輝度信号Yから生成するための関数であって、下限値テーブル12eのテーブルデータをグラフ化したものである。
かかる特性線f4〜f6のそれぞれにおいて、輝度信号Yが「0」〜「255」の各値(整数値)である場合に特性線上で得られる各値が出力値Outyである。そして、この得られる各出力値Outyが「0」〜「255」の各値に対応つけられて、図1及び図9に示した対応するテーブル12c〜12eに記憶されているのである。
第3実施形態においては、各テーブル12c〜12eに記憶される出力値Outyは、図10に示した3次関数曲線に従って生成されているので、屈曲点を持たない。その結果、輝度信号Yの変化に対してなだらかに出力値Outyが変化し、輝度信号Yの変化に対して出力値Outyが急激に変化するといった事態が発生することがない。また、輝度信号Yが小さい側においては、各特性線f4〜f6は、無変換直線(y=x)を上回る値となっている(広義のガンマ補正が行われている)。
従って、かかる輝度信号Yが小さい領域においては、入力値である輝度信号Yを増大させた出力値Outyが生成されるので、逆光補正(輝度上昇)を行うことができるようになっている。また、いずれの特性線f4〜f6においても、輝度信号Yが「128」において変曲点を有し、その変曲点以降では輝度信号Yが増大するにつれて、出力値Outyは、最終値(最大値)に向かって緩やかに上昇している(単調増加関数による出力値Outyの増大)。このため、明部側における過補正を十分に抑制することができる。
このように、第3実施形態によれば、3次関数を用いることにより、必要な部分(輝度信号の小さい側)の逆光補正に加え、コントラスト強調と、明部における過補正の抑制とを両立して行うことができる。その上、3次関数曲線は、屈曲点を持たずに変化するので、輝度信号Yの変化に対して、なだらかに出力値Outyを変化させることができる。このため、かかる3次関数に輝度信号Yに基づいて出力値Outyを生成した場合に、輝度信号Yの変化量に対して出力値Outyが急激に変化してしまうといった事態を回避でき、画像全体にわたって不自然な階調変化が現出することを抑制できる。
以上、上記各実施形態に基づいて本発明を説明したが、本発明は上記各実施形態に何ら限定されるものでなく、本発明の趣旨を逸脱しない範囲内で種々の改良変形が可能であることは容易に推察できるものである。
例えば、上記各実施形態では、色表現系はRGB形式としたが、RGB形式以外の他の色表現系、例えば、CMY形式などに本発明を適用してもよい。また、画像処理プログラム12aは、正規化反射率refleを算出し、この正規化反射率refleにて、参照するテーブルを選定した。また、各テーブル12c〜12eは、正規化反射率refleをパラメータとして形成された。これに代えて、各テーブル12c〜12eを対数値Rにて形成し、算出した対数値Rを用いて形成したテーブルを選定するようにしても良い。
また、上記各実施形態では、本発明の画像処理プログラムは、プリンタ1に組み込まれたCPU11により実行されるものとしたが、パーソナルコンピュータにアプリケーションとして供給され、パーソナルコンピュータに組み込まれたCPUなどにより実行されるようにしてもよい。
また、レティネックス処理は、SSR(シングルスケール法)であってもMSR(マルチスケール法)であってもよい。
また、上記各実施形態の画像処理では、CPU11によりレティネックス処理などを行うものとしたが、DSP(Digital Signal
Processor)により行ってもよい。DSPを用いると、より高速に積和演算などの処理を実行することができる。
加えて、上記各実施形態では、演算された輝度信号および色信号は、RAM13(輝度値メモリ13f)に一時記憶するように構成しているが、記憶容量を削減したい場合には、これらを記憶せずに、必要な場合、元画像メモリから画素値(RGB値)を読み出し、その都度、演算で求めてもよい。
更に、反射率である対数値Rについて正規化を行う正規化範囲(クリップ範囲)は、ヒストグラム形成してそのメジアン値を基準に求めたが、このメジアン値に代えて、モード値や平均値を用いても良い。更には、反射光成分値にて注目画素が周辺画素と同じ明るさであることが示されているとは、注目画素の画素信号の値と注目画素周辺の周辺画素の平均輝度値とが完全同一のみならず、対数値Rに発生する小数点以下の端数を、例えば、切り捨て、切り上げ、四捨五入した値が0であることも含む概念である。また、注目画素の画素信号の値と注目画素周辺の周辺画素の平均輝度値とが同じ場合には、対数値Rは0となるが、例えば、ヒストグラム形成した場合の対数値Rのメジアン値、モード値、平均値は、必ずしも0とはならず、0から、ずれた値となる。このずれた値を網羅する範囲が、注目画素の画素信号の値と注目画素周辺の周辺画素の平均輝度値とが同じ(対数値R=0とみなす、即ち同じ明るさ)であるとする領域としても良い。
加えて、上記各実施形態においては、正規化反射率refleが0.3である場合において、入力値である輝度信号Yが「255」であると、その出力値Outyを「240」とするようにプリンタ1は構成されたが、かかる場合に、必ずしも輝度信号Y「255」に対応する出力値Outyは「240」とする必要はなく、出力可能な最も明るい輝度信号「255」近傍の値であれば良く、例えば、「224」〜「255」の任意の値とする事ができる。
また、上記第1、第2実施形態においては、正規化反射率refleが0.8である場合において、入力値である輝度信号Yが「255」であると、その出力値Outyをそれぞれ「248」、「255」とするようにプリンタ1は構成されたが、これに代えて、出力可能な最も明るい輝度信号「255」近傍の値である「240」〜「255」の任意の値とすることができる。
同様に、上記第1、第2実施形態においては、正規化反射率refleが1.3である場合において、入力値である輝度信号Yが「255」であると、その出力値Outyをそれぞれ「255」、「272」とするようにプリンタ1は構成されたが、これに代えて、出力可能な最も明るい輝度信号「255」近傍の値である「255」〜「280」の任意の値とすることができる。