しかしながら、従来の文献に開示された処理では、図12(h)や図13のグラフに示したようなガンマ補正演算が行われるので、入力画像の画素値が大きくなるに従って、注目画素が周辺画素よりも明るい場合に生成される出力値と、注目画素が周辺画素よりも暗い場合に生成される出力値との差が拡大しすぎてしまい、過補正が生じてしまうという問題点があった。
過補正は、必要以上の極端なコントラスト強調がなされてしまうことであり、輝度値の階調差が増長されすぎてしまうことである。その結果、暗部において過度に明るい部位や、明部において過度に暗い部位が形成されてしまうという事象が生じる。この過補正が明部において発生すると、明るい部分に過度に暗い画素が出現することになる。かかる明部の中に発生した暗い画素(急激な階調変化)は視覚的に際だってしまうので、目立った画質不良となって、大きく画質を低下させてしまうという問題点があった。
このように、従来のレティネックス処理では、コントラストを強調することで過補正が発生してしまい、コントラスト強調と過補正抑制とを両立することが困難となっているという問題点があった。
そこで、入力画像データにレティネックス処理を行った処理画像と、元の入力画像データとを合成して、出力画像データを生成する手法が提案されている。これによれば、レティネックス処理を経て作成された処理画像の各画素値に、対応する入力画像の各画素値(輝度値)が加味されて出力画像が形成されるため、レティネックス処理を行っただけの処理画像に比べて、過補正が修正された出力画像が生成される。しかし、処理画像と元の入力画像との合成においては、各画素毎に演算が行われるので、演算量が膨大になり、処理速度を著しく低下させてしまうという問題点があった。
本発明は、上記問題点を解決するためになされたものであり、特にレティネックス処理における過補正を抑制しつつ画像処理演算を高速化することができる画像処理プログラムおよび画像処理装置を提供することを目的としている。
この目的を達成するために、請求項1記載の画像処理プログラムは、画像の補正処理を行う画像処理装置に搭載され、元画像における注目画素の画素信号の値と注目画素周辺の周辺画素の平均輝度値とに基づいて注目画素と周辺画素との相対的な明るさの指標となる反射光成分値を算出する反射光成分算出ステップと、その反射光成分算出ステップにて算出された反射光成分値をパラメータとして注目画素の画素信号の値を非線形の関数で補正した補正値と、注目画素の画素信号の値とに基づいて出力画像の画素信号を生成する画素信号生成ステップとを備え、レティネックス処理による画像補正を実行するものであり、前記画素信号生成ステップは、前記反射光成分算出ステップにて算出された反射光成分値により注目画素が周辺画素より暗いことが示されている場合において、注目画素の画素信号の値が0から第1所定値までの範囲では前記非線形の関数に従って導出された信号値により注目画素よりも信号値が増大した画素信号を生成する一方、注目画素の画素信号の値が前記第1所定値以上では、単調増加関数に従って導出された信号値により画素信号を生成する第1複合生成ステップを備えており、その第1複合生成ステップにて用いられる単調増加関数は、前記非線形の関数で元画像の画素信号の最大値を補正した補正値に基づいて求められる出力画像の画素信号の輝度値よりも大きな値であって、元画像の画素信号の最大輝度値近傍の値を、出力最大輝度値とし、注目画素の画素信号の値が増加するにつれて、その出力最大輝度値に向かって輝度値を上昇させた画素信号を導出するものであり、前記第1所定値は、前記第1複合生成ステップにて用いられる最小の反射光成分値をパラメータとした前記非線形の関数と、出力画像の画素信号の値を注目画素の画素信号と同じ値で生成する無変換関数との交点である第1の値以上とされている。
請求項2記載の画像処理プログラムは、請求項1記載の画像処理プログラムにおいて、前記第1所定値は、注目画素が周辺画素よりも明るいことを示す反射光成分値の最大値をパラメータとした前記非線形の関数によって導出される信号値と、前記第1複合生成ステップにて用いられる最小の反射光成分値をパラメータとした前記非線形の関数によって導出される信号値との差が、予め定めた幅以下となる画素信号の値とされている。
請求項3記載の画像処理プログラムは、請求項2記載の画像処理プログラムにおいて、前記第1所定値は、注目画素の画素信号が取り得る範囲の中点近傍の値とされている。
請求項4記載の画像処理プログラムは、請求項1から3のいずれかに記載の画像処理プログラムにおいて、前記画素信号生成ステップは、前記反射光成分算出ステップにて算出された反射光成分値により注目画素が周辺画素と同じ明るさであることが示されている場合において、注目画素の画素信号の値が0から第2所定値までの範囲では前記非線形の関数に従って導出された信号値により注目画素よりも信号値が増大した画素信号を生成する一方、注目画素の画素信号の値が前記第2所定値以上では、単調増加関数に従って導出された信号値により画素信号を生成する第2複合生成ステップを備えており、その第2複合生成ステップにて用いられる単調増加関数は、元画像の画素信号の最大輝度値近傍の値を出力最大輝度値とし、注目画素の画素信号の値が増加するにつれて、その出力最大輝度値に向かって輝度値を上昇させた画素信号を導出するものであり、前記第2所定値は、前記第1複合生成ステップにて用いられる最小の反射光成分値をパラメータとした前記非線形の関数と、出力画像の画素信号の値を注目画素の画素信号と同じ値で生成する無変換関数との交点である第1の値以上とされている。
請求項5記載の画像処理プログラムは、請求項4記載の画像処理プログラムにおいて、前記第2所定値は、注目画素に対し前記第2複合生成ステップにおける単調増加関数に従って信号値を導出した場合に、同じ注目画素に対し前記第1複合生成ステップによって導出される信号値よりも大きな値となるように規定されたものである。
請求項6記載の画像処理プログラムは、請求項1から5のいずれかに記載の画像処理プログラムにおいて、前記画素信号生成ステップは、前記反射光成分算出ステップにて算出された反射光成分値により注目画素が周辺画素よりも明るいことが示されている場合において、注目画素の画素信号の値が0から第3所定値までの範囲では前記非線形の関数に従って導出された信号値により注目画素よりも信号値が増大した画素信号を生成する一方、注目画素の画素信号の値が前記第3所定値以上では、単調増加関数に従って導出された信号値により画素信号を生成する第3複合生成ステップを備えており、その第3複合生成ステップにて用いられる単調増加関数は、元画像の画素信号の最大輝度値近傍の値を出力最大輝度値とし、注目画素の画素信号の値が増加するにつれて、その出力最大輝度値に向かって輝度値を上昇させた画素信号を導出するものであり、前記第3所定値は、前記第1複合生成ステップにて用いられる最小の反射光成分値をパラメータとした前記非線形の関数と、出力画像の画素信号の値を注目画素の画素信号と同じ値で生成する無変換関数との交点である第1の値以上とされている。
請求項7記載の画像処理プログラムは、請求項6記載の画像処理プログラムにおいて、前記第3所定値は、注目画素に対し前記第3複合生成ステップにおける単調増加関数に従って信号値を導出した場合に、同じ注目画素に対し前記第1複合生成ステップ及び第2複合生成ステップによって導出される信号値よりも大きな値となるように規定されたものである。
請求項8記載の画像処理装置は、元画像における注目画素の画素信号の値と注目画素周辺の周辺画素の平均輝度値とに基づいて注目画素と周辺画素との相対的な明るさの指標となる反射光成分値を算出する反射光成分算出手段と、その反射光成分算出手段にて算出された反射光成分値をパラメータとして注目画素の画素信号の値を非線形の関数で補正した補正値と、注目画素の画素信号の値とに基づいて出力画像の画素信号を生成する画素信号生成手段とを備え、レティネックス処理による画像補正を実行するものであり、前記画素信号生成手段は、前記反射光成分算出手段にて算出された反射光成分値により注目画素が周辺画素より暗いことが示されている場合において、注目画素の画素信号の値が0から第1所定値までの範囲では前記非線形の関数に従って導出された信号値により注目画素よりも信号値が増大した画素信号を生成する一方、注目画素の画素信号の値が前記第1所定値以上では、単調増加関数に従って導出された信号値により画素信号を生成する第1複合生成手段を備えており、その第1複合生成手段にて用いられる単調増加関数は、前記非線形の関数で元画像の画素信号の最大値を補正した補正値に基づいて求められる出力画像の画素信号の輝度値よりも大きな値であって、元画像の画素信号の最大輝度値近傍の値を、出力最大輝度値とし、注目画素の画素信号の値が増加するにつれて、その出力最大輝度値に向かって輝度値を上昇させた画素信号を導出するものであり、前記第1所定値は、前記第1複合生成手段にて用いられる最小の反射光成分値をパラメータとした前記非線形の関数と、出力画像の画素信号の値を注目画素の画素信号と同じ値で生成する無変換関数との交点である第1の値以上とされている。
請求項9記載の画像処理装置は、請求項8記載の画像処理装置において、前記第1所定値は、注目画素が周辺画素よりも明るいことを示す反射光成分値の最大値をパラメータとした前記非線形の関数によって導出される信号値と、前記第1複合生成手段にて用いられる最小の反射光成分値をパラメータとした前記非線形の関数によって導出される信号値との差が、予め定めた幅以下となる画素信号の値とされている。
請求項10記載の画像処理装置は、請求項9記載の画像処理装置において、前記第1所定値は、注目画素の画素信号が取り得る範囲の中点近傍の値とされている。
請求項11記載の画像処理装置は、請求項8から10のいずれかに記載の画像処理装置において、前記画素信号生成手段は、前記反射光成分算出手段にて算出された反射光成分値により注目画素が周辺画素と同じ明るさであることが示されている場合において、注目画素の画素信号の値が0から第2所定値までの範囲では前記非線形の関数に従って導出された信号値により注目画素よりも信号値が増大した画素信号を生成する一方、注目画素の画素信号の値が前記第2所定値以上では、単調増加関数に従って導出された信号値により画素信号を生成する第2複合生成手段を備えており、その第2複合生成手段にて用いられる単調増加関数は、元画像の画素信号の最大輝度値近傍の値を出力最大輝度値とし、注目画素の画素信号の値が増加するにつれて、その出力最大輝度値に向かって輝度値を上昇させた画素信号を導出するものであり、前記第2所定値は、前記第1複合生成手段にて用いられる最小の反射光成分値をパラメータとした前記非線形の関数と、出力画像の画素信号の値を注目画素の画素信号と同じ値で生成する無変換関数との交点である第1の値以上とされている。
請求項12記載の画像処理装置は、請求項11記載の画像処理装置において、前記第2所定値は、注目画素に対し前記第2複合生成手段における単調増加関数に従って信号値を導出した場合に、同じ注目画素に対し前記第1複合生成手段によって導出される信号値よりも大きな値となるように規定されたものである。
請求項13記載の画像処理装置は、請求項8から12のいずれかに記載の画像処理装置において、前記画素信号生成手段は、前記反射光成分算出手段にて算出された反射光成分値により注目画素が周辺画素よりも明るいことが示されている場合において、注目画素の画素信号の値が0から第3所定値までの範囲では前記非線形の関数に従って導出された信号値により注目画素よりも信号値が増大した画素信号を生成する一方、注目画素の画素信号の値が前記第3所定値以上では、単調増加関数に従って導出された信号値により画素信号を生成する第3複合生成手段を備えており、その第3複合生成手段にて用いられる単調増加関数は、元画像の画素信号の最大輝度値近傍の値を出力最大輝度値とし、注目画素の画素信号の値が増加するにつれて、その出力最大輝度値に向かって輝度値を上昇させた画素信号を導出するものであり、前記第3所定値は、前記第1複合生成手段にて用いられる最小の反射光成分値をパラメータとした前記非線形の関数と、出力画像の画素信号の値を注目画素の画素信号と同じ値で生成する無変換関数との交点である第1の値以上とされている。
請求項14記載の画像処理装置は、請求項13記載の画像処理装置において、前記第3所定値は、注目画素に対し前記第3複合生成手段における単調増加関数に従って信号値を導出した場合に、同じ注目画素に対し前記第1複合生成手段及び第2複合生成手段によって導出される信号値よりも大きな値となるように規定されたものである。
請求項1記載の画像処理プログラムによれば、反射光成分算出ステップにより反射光成分値が算出される。ここで、反射光成分値は、注目画素と周辺画素との相対的な明るさの指標とされるものであって、元画像における注目画素の画素信号の値と注目画素周辺の周辺画素の平均輝度値とに基づいて算出される。また、この算出された反射光成分値をパラメータとして注目画素の画素信号の値を非線形の関数で補正した補正値と、注目画素の画素信号の値とに基づいて、画素信号生成ステップにより、出力画像の画素信号が、即ち、レティネックス処理による補正がなされた画素信号が、生成される。
かかる画素信号生成ステップにおいては、反射光成分算出ステップにて算出された反射光成分値により注目画素が周辺画素より暗いことが示されていると、第1複合生成ステップによって画素信号が生成されるが、注目画素の画素信号の値が0から第1所定値までの範囲では、非線形の関数に従って導出された信号値にて、注目画素よりも信号値が増大した画素信号が生成され、注目画素の画素信号の値が第1所定値以上では、単調増加関数に従って導出された信号値にて画素信号が生成される。つまり、注目画素の画素信号の値が第1所定値以上では、生成される画素信号を、非線形の関数によらず、単調増加関数にて導出されたものとすることができる。
ここで用いられる単調増加関数は、元画像の画素信号の最大値を非線形の関数で補正した補正値に基づいて求められる出力画像の画素信号の輝度値よりも大きな値であって、元画像の画素信号の最大輝度値近傍の値を、出力最大輝度値とし、注目画素の画素信号の値が増加するにつれて、その出力最大輝度値に向かって輝度値を上昇させた画素信号を導出するものである。一方で、レティネックス処理において用いられる非線形の関数は、コントラストや輝度の補正を行うべく、元画像の画素信号値(注目画素の画素信号の値)が小さい部分(暗い部分)では出力画像の画素信号値を元の値よりも増大させる一方、元画像の画素信号値が大きくなるにつれて出力画像の画素信号値を元の値に対して圧縮するようなものが一般的である。
よって、第1所定値以上である元画像中の明るい部分(明部)に属する画素の内、周辺画素よりも暗い注目画素について出力画像の画素信号を生成する場合、上記の単調増加関数に従ったものとなるので、非線形の関数に基づいて生成される場合よりも輝度値の大きなものを生成することできる。また、このように周辺画素よりも暗い注目画素について生成される画素信号の輝度値を上昇させることができるので、注目画素が周辺画素より暗い場合に生成される画素信号の輝度値と、注目画素が周辺画素より明るい場合に生成される画素信号の輝度値との差を、非線形の関数に基づいて生成される両信号の差よりも縮小することができる。言い換えれば、生成される出力画像の画素信号の取り得る輝度値の範囲を狭くすることができる。従って、出力画像の明るい部分における急激な階調変化を規制でき、かかる明るい部分に極端に輝度値の低下した過度に暗い画素が出現してしまう過補正を抑制することができるという効果がある。故に、明るい部分に過度に暗い画素が形成されるという目立った画質不良を回避でき、高画質の出力画像を生成することができるという効果がある。
また、第1所定値は、第1複合生成ステップにて用いられる最小の反射光成分値をパラメータとした非線形の関数と、出力画像の画素信号の値を注目画素の画素信号と同じ値で生成する無変換関数との交点である第1の値以上とされている。
ここで、第1の値よりも小さな画素信号は、レティネックス処理による逆光補正(即ち、注目画素よりも信号値が増大した画素信号の生成)が最も必要とされる部分である。かかる部分については、出力画像の画素信号を、単調増加関数ではなく、非線形の関数に基づいたもので生成することができるので、必要な部分においては的確に逆光補正を行いつつ画質不良を招く過補正については抑制することができるという効果がある。
更には、上記の非線形の関数に従えば、注目画素の画素信号が第1の値を超えると、圧縮された値の画素信号が生成される。従って、第1所定値が第1の値以降にあれば、単調増加関数にて生成される画素信号の信号値は、無変換関数にて生成されるものよりも小さな値を起点として生成される。故に、注目画素の画素信号の値が第1所定値以上にあって出力画像の画素信号が単調増加関数に従って導出されたとしても、注目画素が周辺画素よりも暗い場合には、出力画像の画素信号は、元の画素よりも暗い画素で生成されることとなる。その結果、コントラスト強調についても適性に実行することができる。
また、単調増加関数として、一次関数など、単純なアルゴリズムの関数を選択すれば、出力画像の画素信号を生成するための演算量を、非線形の関数で補正を行うよりも低減でき、画像処理を高速化することができるという効果がある。
請求項2記載の画像処理プログラムによれば、請求項1記載の画像処理プログラムの奏する効果に加え、第1所定値は、注目画素が周辺画素よりも明るいことを示す反射光成分値の最大値をパラメータとした非線形の関数によって導出される信号値と、第1複合生成ステップにて用いられる最小の反射光成分値をパラメータとした非線形の関数によって導出される信号値との差が、予め定めた幅以下となる画素信号の値とされているので、注目画素が周辺画素よりも明るい場合に導出される信号値と暗い場合に導出される信号値とに、過度に差が発生してしまうといった事態を確実に解消できるという効果がある。
つまり、かかる差は、コントラスト強調の度合を規定するので、かかる信号値の差を予め定めた幅以下に制限することにより、コントラスト強調程度を適切な範囲に収めることができる。そして、かかる信号値の差が予め定めた幅を超える場合には、出力画像の画素信号は、単調増加関数に基づいて生成されるため、注目画素の画素信号の値が大きくなるにつれ、上記の信号値の差は、次第に縮小することとなる。その結果、明部においてコントラストが過度に強調される過補正の発生を確実に回避することができるという効果がある。
請求項3記載の画像処理プログラムによれば、請求項2記載の画像処理プログラムの奏する効果に加え、第1所定値は、注目画素の画素信号が取り得る範囲の中点近傍の値とされている。上記した第1の値は無変換関数との交点であるので、画像処理において一般的に用いられる非線形の関数に従えば、注目画素が第1の値まではその信号値が増大した画素信号が生成され、第1の値を超えると逆に圧縮された画素信号が生成される。
一般的に画像処理に用いられる非線形の関数に従えば、第1の値よりも中点近傍の値のほうが大きくなるので、第1所定値を中点近傍の値とすることにより、第1の値から中点近傍の第1所定値までは、注目画素が周辺画素より暗い場合に生成される画素信号の輝度値と、注目画素が周辺画素より明るい場合に生成される画素信号の輝度値との差が拡大する。そして、注目画素の画素信号の値が第1所定値以上の値であれば、単調増加関数に従った画素信号が生成されるため、中点近傍で拡大した両者の差を徐々に縮小させていくことができる。
よって、注目画素の画素信号の値が、中点近傍を含みコントラスト強調が画質低下の要因とならない中間領域(即ち、過補正を抑制する必要のない領域)にある場合には、注目画素が周辺画素より暗い場合に生成される画素信号の輝度値と、注目画素が周辺画素より明るい場合に生成される画素信号の輝度値とに、十分な差を設けることができる。その結果、注目画素の画素信号のうち、かかる中間領域に属するものについては、良好に(十分な)コントラスト強調を行うことができるという効果がある。更には、第1所定値を中点近傍とすることにより、注目画素の画素信号の狭い範囲(例えば最大値近傍など)において、生成される画素信号の値が急激に上昇したものとなるといった事態を回避できる。このため、急激な階調変化の発生による画質の劣化を招くことがないという効果がある。
請求項4記載の画像処理プログラムによれば、請求項1から3のいずれかに記載の画像処理プログラムの奏する効果に加え、反射光成分値により注目画素が周辺画素と同じ明るさであることが示されていると、第2複合生成ステップによって画素信号が生成されるが、注目画素の画素信号の値が0から第2所定値までの範囲では非線形の関数に従って導出された信号値により注目画素よりも信号値が増大した画素信号が生成される。また、注目画素の画素信号の値が第2所定値以上では、単調増加関数に従って導出された信号値により画素信号が生成される。
第2複合生成ステップにて用いられる単調増加関数は、元画像の画素信号の最大輝度値近傍の値を出力最大輝度値とし、注目画素の画素信号の値が増加するにつれて、その出力最大輝度値に向かって輝度値を上昇させた画素信号を導出するものである。また、第2所定値は、第1複合生成ステップにて用いられる最小の反射光成分値をパラメータとした非線形の関数と、出力画像の画素信号の値を注目画素の画素信号と同じ値で生成する無変換関数との交点である第1の値以上とされている。
よって、第2所定値以上である元画像中の明るい部分(明部)に属する画素の内、周辺画素と同じ明るさの注目画素について出力画像の画素信号を生成する場合、単調増加関数に従った画素信号を生成することができる。つまり、第2所定値以上においては、注目画素の画素信号の値が大きくなるに従って次第に増大する画素信号が生成される。これによれば、注目画素が周辺画素と同じ明るさである画素の内、最大の明るさを有する画素については、輝度を大きく低下させることなく出力画像において表示でき、出力画像全体が暗くなることを回避できるという効果がある。出力画像の最大出力輝度が元画像の最大輝度値に近いほど、当然、元画像と出力画像とにおいて最も明るい画素の輝度変化は小さくなるからである。また、元画像の大部分においては、注目画素と周辺画素とは同じ明るさであるので、元画像中の最大輝度値を有する画素の多数は、周辺画素と同じ明るさとなっている。故に、元画像中の最大輝度値を有する画素の多数について、出力画像でもその明るさを維持する(最大輝度値近傍の値とする)ことができることとなり、画像全体が暗くなることを的確に回避できるのである。元画像中の最大輝度値の画素は白色画素であるため、輝度値の変化は、明るさを変更するのみならず、往々にして着色を発生させてしまうが、元画像中の最大輝度値を有する画素の大部分については周辺画素と同じ明るさであるため、輝度値の変化を微小とすることができ、目立った着色変化についても抑制できるので、画像品質の低下を回避できるという効果がある。
ここで、本プログラムが、注目画素が周辺画素よりも暗い場合に、出力最大輝度値に向かう単調増加関数に従った画素信号を生成する構成(第1複合生成ステップ)を有しているため、周辺画素と同じ明るさである注目画素に対し非線形の関数に従った画素信号だけを出力画像の画素信号として生成する構成であると、場合によっては、周辺画素と同じ明るさにある注目画素に対応する出力画像の画素信号が、周辺画素よりも暗い注目画素に対応するものよりも、より暗い画素信号で生成されてしまいかねない(階調の逆転が発生)。しかし、周辺画素と同じ明るさである注目画素についても、その画素信号の値が第2所定値以上であると単調増加関数に従った画素信号が出力画像の画素信号として生成されるので、上記したような階調の逆転が生じることはない。
請求項5記載の画像処理プログラムによれば、請求項4記載の画像処理プログラムの奏する効果に加え、注目画素に対し第2複合生成ステップにおける単調増加関数に従って信号値を導出した場合に、同じ注目画素に対し前記第1複合生成ステップによって導出される信号値よりも大きな値となるように第2所定値が規定されているので、第2複合生成ステップにおいて単調増加関数に従って画素信号を生成しても、階調の序列が逆転することはない。つまり、元画像において注目画素が周辺画素と同じ明るさにあれば、周辺画素よりも暗い場合にあるよりも、出力画像において、その注目画素に対応する画素は、元の画素よりも必ず明るい画素(大きな信号値)で生成される。故に、第2複合生成ステップにおける単調増加関数に従って第2所定値以上の注目画素に対する出力画像の画素信号を生成しても、元画像の階調の序列に従った画素信号を生成することができるという効果がある。
請求項6記載の画像処理プログラムによれば、請求項1から5のいずれかに記載の画像処理プログラムの奏する効果に加え、反射光成分値により注目画素が周辺画素よりも明るいことが示されていると、第3複合生成ステップにより画素信号が生成されるが、注目画素の画素信号の値が0から第3所定値までの範囲では非線形の関数に従って導出された信号値により注目画素よりも信号値が増大した画素信号が生成される。一方、注目画素の画素信号の値が第3所定値以上では、単調増加関数に従って導出された信号値により画素信号を生成される。
第3複合生成ステップにて用いられる単調増加関数は、元画像の画素信号の最大輝度値近傍の値を出力最大輝度値とし、注目画素の画素信号の値が増加するにつれて、その出力最大輝度値に向かって輝度値を上昇させた画素信号を導出するものであり、第3所定値は、第1複合生成ステップにて用いられる最小の反射光成分値をパラメータとした非線形の関数と、出力画像の画素信号の値を注目画素の画素信号と同じ値で生成する無変換関数との交点である第1の値以上とされている。
よって、注目画素が周辺画素より明るい場合に、元画像の画素信号の最大値に対応して第3複合生成ステップにより生成される画素信号の輝度値を、非線形の関に基づいて生成されるものよりも最大輝度値に近い値とすることができるという効果がある。
一般に、注目画素が周辺画素より明るい場合に、非線形の関数に基づいて出力画像の画素信号を生成すると、その出力最大輝度値は、元画像の最大輝度値を大きく上回った値となる。また、かかる非線形の関数によれば、往々にして生成される出力画像の輝度値は、早い段階(元画像の画素値が最大値より大幅に小さい段階)で最大輝度値を超えてしまう。通常、出力可能な輝度値のレンジは元画像の最大輝度値を上限としており、最大輝度値を超えるものは最大輝度値に丸められてしまうので、非線形の関数を用いると、出力画像の輝度値が元画像の画素値変化に応答しない階調とびが目立って発生してしまう(画質の低下)。
しかし、本プログラムは、出力画像の画素信号の出力最大輝度値を最大輝度値近傍の値とし、且つ、その出力最大輝度値に向かって出力画像の画素信号の輝度値は単調増加するように設計されているので、生成された出力画像の画素信号において、その輝度値が最大輝度値以上となるものを低減することができる。故に、非線形の関数での補正に基づいて出力画像の画素信号を生成する場合に比べて、出力画像における輝度値の階調とびを抑制でき、元画像中の明部における微妙な階調差を出力画像においても表現することができるので、高画質の出力画像を提供することができるという効果がある。
請求項7記載の画像処理プログラムによれば、請求項6記載の画像処理プログラムの奏する効果に加え、注目画素に対し第3複合生成ステップにおける単調増加関数に従って信号値を導出した場合に、同じ注目画素に対し第1複合生成ステップ及び第2複合生成ステップによって導出される信号値よりも大きな値となるように、第3所定値が規定されているので、第3複合生成ステップにおいて単調増加関数に従って画素信号を生成しても、階調の序列が逆転することはない。つまり、元画像において注目画素が周辺画素よりも明るければ、周辺画素よりも暗い又は同じ明るさにある場合によりも、出力画像において、その注目画素に対応する画素は、元の画素よりも必ず明るい画素(大きな信号値)で生成される。故に、第3複合生成ステップにおける単調増加関数に従って第3所定値以上の注目画素に対する出力画像の画素信号を生成しても、元画像の階調の序列に従った画素信号を生成することができるという効果がある。
請求項8記載の画像処理装置によれば、反射光成分算出手段により反射光成分値が算出される。ここで、反射光成分値は、注目画素と周辺画素との相対的な明るさの指標とされるものであって、元画像における注目画素の画素信号の値と注目画素周辺の周辺画素の平均輝度値とに基づいて算出される。また、この算出された反射光成分値をパラメータとして注目画素の画素信号の値を非線形の関数で補正した補正値と、注目画素の画素信号の値とに基づいて、画素信号生成手段により、出力画像の画素信号が、即ち、レティネックス処理による補正がなされた画素信号が、生成される。
かかる画素信号生成手段においては、反射光成分算出手段にて算出された反射光成分値により注目画素が周辺画素より暗いことが示されていると、第1複合生成手段によって画素信号が生成されるが、注目画素の画素信号の値が0から第1所定値までの範囲では、非線形の関数に従って導出された信号値にて、注目画素よりも信号値が増大した画素信号が生成され、注目画素の画素信号の値が第1所定値以上では、単調増加関数に従って導出された信号値にて画素信号が生成される。つまり、注目画素の画素信号の値が第1所定値以上では、生成される画素信号を、非線形の関数によらず、単調増加関数にて導出されたものとすることができる。
ここで用いられる単調増加関数は、元画像の画素信号の最大値を非線形の関数で補正した補正値に基づいて求められる出力画像の画素信号の輝度値よりも大きな値であって、元画像の画素信号の最大輝度値近傍の値を、出力最大輝度値とし、注目画素の画素信号の値が増加するにつれて、その出力最大輝度値に向かって輝度値を上昇させた画素信号を導出するものである。一方で、レティネックス処理において用いられる非線形の関数は、コントラストや輝度の補正を行うべく、元画像の画素信号値(注目画素の画素信号の値)が小さい部分(暗い部分)では出力画像の画素信号値を元の値よりも増大させる一方、元画像の画素信号値が大きくなるにつれて出力画像の画素信号値を元の値に対して圧縮するようなものが一般的である。
よって、第1所定値以上である元画像中の明るい部分(明部)に属する画素の内、周辺画素よりも暗い注目画素について出力画像の画素信号を生成する場合、上記の単調増加関数に従ったものとなるので、非線形の関数に基づいて生成される場合よりも輝度値の大きなものを生成することできる。また、このように周辺画素よりも暗い注目画素について生成される画素信号の輝度値を上昇させることができるので、注目画素が周辺画素より暗い場合に生成される画素信号の輝度値と、注目画素が周辺画素より明るい場合に生成される画素信号の輝度値との差を、非線形の関数に基づいて生成される両信号の差よりも縮小することができる。言い換えれば、生成される出力画像の画素信号の取り得る輝度値の範囲を狭くすることができる。従って、出力画像の明るい部分における急激な階調変化を規制でき、かかる明るい部分に極端に輝度値の低下した過度に暗い画素が出現してしまう過補正を抑制することができるという効果がある。故に、明るい部分に過度に暗い画素が形成されるという目立った画質不良を回避でき、高画質の出力画像を生成することができるという効果がある。
また、第1所定値は、第1複合生成手段にて用いられる最小の反射光成分値をパラメータとした非線形の関数と、出力画像の画素信号の値を注目画素の画素信号と同じ値で生成する無変換関数との交点である第1の値以上とされている。
ここで、第1の値よりも小さな画素信号は、レティネックス処理による逆光補正(即ち、注目画素よりも信号値が増大した画素信号の生成)が最も必要とされる部分である。かかる部分については、出力画像の画素信号を、単調増加関数ではなく、非線形の関数に基づいたもので生成することができるので、必要な部分においては的確に逆光補正を行いつつ画質不良を招く過補正については抑制することができるという効果がある。
更には、上記の非線形の関数に従えば、注目画素の画素信号が第1の値を超えると、圧縮された値の画素信号が生成される。従って、第1所定値が第1の値以降にあれば、単調増加関数にて生成される画素信号の信号値は、無変換関数にて生成されるものよりも小さな値を起点として生成される。故に、注目画素の画素信号の値が第1所定値以上にあって出力画像の画素信号が単調増加関数に従って導出されたとしても、注目画素が周辺画素よりも暗い場合には、出力画像の画素信号は、元の画素よりも暗い画素で生成されることとなる。その結果、コントラスト強調についても適性に実行することができる。
また、単調増加関数として、一次関数など、単純なアルゴリズムの関数を選択すれば、出力画像の画素信号を生成するための演算量を、非線形の関数で補正を行うよりも低減でき、画像処理を高速化することができるという効果がある。
請求項9記載の画像処理装置によれば、請求項8記載の画像処理装置の奏する効果に加え、第1所定値は、注目画素が周辺画素よりも明るいことを示す反射光成分値の最大値をパラメータとした非線形の関数によって導出される信号値と、第1複合生成手段にて用いられる最小の反射光成分値をパラメータとした非線形の関数によって導出される信号値との差が、予め定めた幅以下となる画素信号の値とされているので、注目画素が周辺画素よりも明るい場合に導出される信号値と暗い場合に導出される信号値とに、過度に差が発生してしまうといった事態を確実に解消できるという効果がある。
つまり、かかる差は、コントラスト強調の度合を規定するので、かかる信号値の差を予め定めた幅以下に制限することにより、コントラスト強調程度を適切な範囲に収めることができる。そして、かかる信号値の差が予め定めた幅を超える場合には、出力画像の画素信号は、単調増加関数に基づいて生成されるため、注目画素の画素信号の値が大きくなるにつれ、上記の信号値の差は、次第に縮小することとなる。その結果、明部においてコントラストが過度に強調される過補正の発生を確実に回避することができるという効果がある。
請求項10記載の画像処理装置によれば、請求項9記載の画像処理装置の奏する効果に加え、第1所定値は、注目画素の画素信号が取り得る範囲の中点近傍の値とされている。上記した第1の値は無変換関数との交点であるので、画像処理において一般的に用いられる非線形の関数に従えば、注目画素が第1の値まではその信号値が増大した画素信号が生成され、第1の値を超えると逆に圧縮された画素信号が生成される。
一般的に画像処理に用いられる非線形の関数に従えば、第1の値よりも中点近傍の値のほうが大きくなるので、第1所定値を中点近傍の値とすることにより、第1の値から中点近傍の第1所定値までは、注目画素が周辺画素より暗い場合に生成される画素信号の輝度値と、注目画素が周辺画素より明るい場合に生成される画素信号の輝度値との差が拡大する。そして、注目画素の画素信号の値が第1所定値以上の値であれば、単調増加関数に従った画素信号が生成されるため、中点近傍で拡大した両者の差を徐々に縮小させていくことができる。
よって、注目画素の画素信号の値が、中点近傍を含みコントラスト強調が画質低下の要因とならない中間領域(即ち、過補正を抑制する必要のない領域)にある場合には、注目画素が周辺画素より暗い場合に生成される画素信号の輝度値と、注目画素が周辺画素より明るい場合に生成される画素信号の輝度値とに、十分な差を設けることができる。その結果、注目画素の画素信号のうち、かかる中間領域に属するものについては、良好に(十分な)コントラスト強調を行うことができるという効果がある。更には、第1所定値を中点近傍とすることにより、注目画素の画素信号の狭い範囲(例えば最大値近傍など)において、生成される画素信号の値が急激に上昇したものとなるといった事態を回避できる。このため、急激な階調変化の発生による画質の劣化を招くことがないという効果がある。
請求項11記載の画像処理装置によれば、請求項8から10のいずれかに記載の画像処理装置の奏する効果に加え、反射光成分値により注目画素が周辺画素と同じ明るさであることが示されていると、第2複合生成手段によって画素信号が生成されるが、注目画素の画素信号の値が0から第2所定値までの範囲では非線形の関数に従って導出された信号値により注目画素よりも信号値が増大した画素信号が生成される。また、注目画素の画素信号の値が第2所定値以上では、単調増加関数に従って導出された信号値により画素信号が生成される。
第2複合生成手段にて用いられる単調増加関数は、元画像の画素信号の最大輝度値近傍の値を出力最大輝度値とし、注目画素の画素信号の値が増加するにつれて、その出力最大輝度値に向かって輝度値を上昇させた画素信号を導出するものである。また、第2所定値は、第1複合生成手段にて用いられる最小の反射光成分値をパラメータとした非線形の関数と、出力画像の画素信号の値を注目画素の画素信号と同じ値で生成する無変換関数との交点である第1の値以上とされている。
よって、第2所定値以上である元画像中の明るい部分(明部)に属する画素の内、周辺画素と同じ明るさの注目画素について出力画像の画素信号を生成する場合、単調増加関数に従った画素信号を生成することができる。つまり、第2所定値以上においては、注目画素の画素信号の値が大きくなるに従って次第に増大する画素信号が生成される。これによれば、注目画素が周辺画素と同じ明るさである画素の内、最大の明るさを有する画素については、輝度を大きく低下させることなく出力画像において表示でき、出力画像全体が暗くなることを回避できるという効果がある。出力画像の最大出力輝度が元画像の最大輝度値に近いほど、当然、元画像と出力画像とにおいて最も明るい画素の輝度変化は小さくなるからである。また、元画像の大部分においては、注目画素と周辺画素とは同じ明るさであるので、元画像中の最大輝度値を有する画素の多数は、周辺画素と同じ明るさとなっている。故に、元画像中の最大輝度値を有する画素の多数について、出力画像でもその明るさを維持する(最大輝度値近傍の値とする)ことができることとなり、画像全体が暗くなることを的確に回避できるのである。元画像中の最大輝度値の画素は白色画素であるため、輝度値の変化は、明るさを変更するのみならず、往々にして着色を発生させてしまうが、元画像中の最大輝度値を有する画素の大部分については周辺画素と同じ明るさであるため、輝度値の変化を微小とすることができ、目立った着色変化についても抑制できるので、画像品質の低下を回避できるという効果がある。
ここで、本装置が、注目画素が周辺画素よりも暗い場合に、出力最大輝度値に向かう単調増加関数に従った画素信号を生成する構成(第1複合生成手段)を有しているため、周辺画素と同じ明るさである注目画素に対し非線形の関数に従った画素信号だけを出力画像の画素信号として生成する構成であると、場合によっては、周辺画素と同じ明るさにある注目画素に対応する出力画像の画素信号が、周辺画素よりも暗い注目画素に対応するものよりも、より暗い画素信号で生成されてしまいかねない(階調の逆転が発生)。しかし、周辺画素と同じ明るさである注目画素についても、その画素信号の値が第2所定値以上であると単調増加関数に従った画素信号が出力画像の画素信号として生成されるので、上記したような階調の逆転が生じることはない。
請求項12記載の画像処理装置によれば、請求項11記載の画像処理装置の奏する効果に加え、注目画素に対し第2複合生成手段における単調増加関数に従って信号値を導出した場合に、同じ注目画素に対し前記第1複合生成手段によって導出される信号値よりも大きな値となるように第2所定値が規定されているので、第2複合生成手段において単調増加関数に従って画素信号を生成しても、階調の序列が逆転することはない。つまり、元画像において注目画素が周辺画素と同じ明るさにあれば、周辺画素よりも暗い場合にあるよりも、出力画像において、その注目画素に対応する画素は、元の画素よりも必ず明るい画素(大きな信号値)で生成される。故に、第2複合生成手段における単調増加関数に従って第2所定値以上の注目画素に対する出力画像の画素信号を生成しても、元画像の階調の序列に従った画素信号を生成することができるという効果がある。
請求項13記載の画像処理装置によれば、請求項8から12のいずれかに記載の画像処理装置の奏する効果に加え、反射光成分値により注目画素が周辺画素よりも明るいことが示されていると、第3複合生成手段により画素信号が生成されるが、注目画素の画素信号の値が0から第3所定値までの範囲では非線形の関数に従って導出された信号値により注目画素よりも信号値が増大した画素信号が生成される。一方、注目画素の画素信号の値が第3所定値以上では、単調増加関数に従って導出された信号値により画素信号を生成される。
第3複合生成手段にて用いられる単調増加関数は、元画像の画素信号の最大輝度値近傍の値を出力最大輝度値とし、注目画素の画素信号の値が増加するにつれて、その出力最大輝度値に向かって輝度値を上昇させた画素信号を導出するものであり、第3所定値は、第1複合生成手段にて用いられる最小の反射光成分値をパラメータとした非線形の関数と、出力画像の画素信号の値を注目画素の画素信号と同じ値で生成する無変換関数との交点である第1の値以上とされている。
よって、注目画素が周辺画素より明るい場合に、元画像の画素信号の最大値に対応して第3複合生成手段により生成される画素信号の輝度値を、非線形の関に基づいて生成されるものよりも最大輝度値に近い値とすることができるという効果がある。
一般に、注目画素が周辺画素より明るい場合に、非線形の関数に基づいて出力画像の画素信号を生成すると、その出力最大輝度値は、元画像の最大輝度値を大きく上回った値となる。また、かかる非線形の関数によれば、往々にして生成される出力画像の輝度値は、早い段階(元画像の画素値が最大値より大幅に小さい段階)で最大輝度値を超えてしまう。通常、出力可能な輝度値のレンジは元画像の最大輝度値を上限としており、最大輝度値を超えるものは最大輝度値に丸められてしまうので、非線形の関数を用いると、出力画像の輝度値が元画像の画素値変化に応答しない階調とびが目立って発生してしまう(画質の低下)。
しかし、本装置は、出力画像の画素信号の出力最大輝度値を最大輝度値近傍の値とし、且つ、その出力最大輝度値に向かって出力画像の画素信号の輝度値は単調増加するように設計されているので、生成された出力画像の画素信号において、その輝度値が最大輝度値以上となるものを低減することができる。故に、非線形の関数による補正に基づいて出力画像の画素信号を生成する場合に比べて、出力画像における輝度値の階調とびを抑制でき、元画像中の明部における微妙な階調差を出力画像においても表現することができるので、高画質の出力画像を提供することができるという効果がある。
請求項14記載の画像処理装置によれば、請求項13記載の画像処理装置の奏する効果に加え、注目画素に対し第3複合生成手段における単調増加関数に従って信号値を導出した場合に、同じ注目画素に対し第1複合生成手段及び第2複合生成手段によって導出される信号値よりも大きな値となるように、第3所定値が規定されているので、第3複合生成手段において単調増加関数に従って画素信号を生成しても、階調の序列が逆転することはない。つまり、元画像において注目画素が周辺画素よりも明るければ、周辺画素よりも暗い又は同じ明るさにある場合によりも、出力画像において、その注目画素に対応する画素は、元の画素よりも必ず明るい画素(大きな信号値)で生成される。故に、第3複合生成手段における単調増加関数に従って第3所定値以上の注目画素に対する出力画像の画素信号を生成しても、元画像の階調の序列に従った画素信号を生成することができるという効果がある。
以下、本発明の好ましい第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等が備えられている。尚、図7、図8に示すフローチャートのプログラムは、画像処理プログラム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が、出力値Out
yとして生成されることとなる。
レティネックス処理において出力値Outを算出する(4)式によれば、ガンマ係数は任意の定数であるので、変数(パラメータ)は、元画像の画素値(輝度信号Y)と正規化反射率refleとの2つである。このため、正規化反射率refleを選定すれば、「0」〜「255」の各輝度信号Yに対応する各出力値Outyを導出することができ、各テーブル12c〜12eに記憶させるテーブルデータを得ることができるのである。
本実施形態においては、(4)式に従って算出される出力値Outyの内、上記したように輝度信号Yが「0」〜「127」である場合に導出されたもののみが、各テーブル12c〜12eには記憶されている。
尚、この輝度信号Yの値が請求項記載の輝度値に該当する。また、本実施形態においては、輝度信号Yは、RGB値(RBG信号)の画素値が変換されたものであるので、この輝度信号Yは、請求項記載の画素信号にも該当する。また、本実施形態においては、輝度信号Yに対しレティネックス処理を行う構成としたが、これに代えて、RGB値をそのまま用いてレティネックス処理を行うようにしても良い。
多数の正規化反射率refleに対応する出力値Outyをテーブルデータで備えるほど、当然ながら、正確な((4)式の演算にて求める値に近似する)出力値Outyを取得することができる。しかし、デーブルデータの増大は、メモリ容量を圧迫したり、大容量のメモリが必要となるなど好ましくない。
そこで、本実施形態においては、少ないテーブル数で最適な出力値Outyを取得することができるように、予め定めた3つの正規化反射率refleに対応する3種類のテーブル12c〜12eを、ROM12に記憶させている。また、図8において後述するように、各テーブル12c〜12eからの正規化反射率refleに基づいた出力値Outyの抽出に、線形補間演算を組み合わせて、出力値Outyを生成するように画像処理プログラム12aは構成されている。これにより、プリンタ1は、テーブルデータを記憶するためのメモリ容量を抑制しつつ、的確な出力値Outyを生成することができるようになっている。
具体的には、上限値テーブル12c、中央値テーブル12d、下限値テーブル12eは、予め定めた反射率((3)式に従って導出された正規化反射率refle)に対応して設けられたものであり、上限値テーブル12cは正規化反射率refleを1.3、中央値テーブル12dは正規化反射率refleを0.8、下限値テーブル12eは正規化反射率refleを0.3として、それぞれ形成されたものである。
尚、図5及び図6において後述するが、正規化反射率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」以上では、単調増加関数である一次関数で設計されているからである。逆に言えば、各特性線f1〜f3は、ガンマ補正演算と単調増加関数とが変曲点「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が生成される(図8参照)。このため、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が生成される(図8参照)。このため、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を得ることができる。背景技術において説明したように(図13参照)、明部においては(輝度信号Yの値が大きくなる程)、ガンマ補正演算を行うと、注目画素の画素値(輝度信号Y)が同じであっても周辺画素との明暗関係によってその値が大きく変化する。例えば、図13の例によれば、ガンマ補正演算に基づいて出力値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」未満)における必要な輝度上昇(逆光補正)と、明部における過補正の抑制とを実現できる。
尚、本実施形態では、上記各テーブル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本の特性線f1〜f3の間隔は均等ではない。例えば、輝度信号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を生成することができるのである。
図4は、ガンマ補正演算と一次関数演算との切替点となる変曲点の設定範囲(変曲点設定区間)を説明する図である。変曲点設定区間は、変曲点の取り得る範囲である。
この図4は、ガンマ補正演算を含む(4)式をグラフ化したものであり、横軸に元画像データの輝度信号Y(x,y)を示し、縦軸にレティネックス処理((4)式)による補正)がなされた出力値Outyを示している。図4中に描画された各グラフ曲線は、特定の正規化反射率refle(0.3,0.8,1.3)のグラフ曲線を示している。具体的には、正規化反射率refle0.3のグラフ曲線を破線で、正規化反射率refle0.8のグラフ曲線を一点鎖線で、正規化反射率refle1.3であるグラフ曲線を二点鎖線で示した。また、y=xの無変換直線を実線で示した。
本実施形態は、単調増加関数である一次関数をガンマ補正演算に組み合わせて、明部における過補正を抑制する構成としているが、単純に、一次関数(単調増加関数)を用いただけでは、逆光補正が不十分となる、十分なコントラストが得られない、急激な画素値上昇に伴った画質不良が発生するといった問題点が発生する。つまり、ガンマ補正演算と一次関数演算とを切り換える変曲点には、最適範囲が存在するのである。
本実施形態においては、以下の2つの規定により、変曲点の最適範囲である変曲点設定区間を設定している。1つ目の規定は、変曲点を、正規化反射率refle0.3のグラフ曲線と、無変換直線との交点の値以上とする、即ち、かかる交点を変曲点設定区間の下限とすることである。
図4に示すように、ガンマ補正演算では、輝度信号Yの増加につれ、やがては、入力値である輝度信号Yよりも出力値Outyの方が小さくなる。輝度信号Y≧出力値Outyとなる境界点は、各正規化反射率refleにおけるガンマ補正演算のグラフ曲線と、輝度信号Yの値をそのまま無変換で出力値Outyとする場合の無変換直線との交点で示される。逆に言えば、この交点までは、元画像データの輝度信号Yの値が増大された出力値Outyが生成される区間である。
また、正規化反射率refleの0.3は、算出される正規化反射率refleの内の最小値であるので、各グラフ曲線の内、最も下側に形成され、無変換直線との交点が最も小さい値となる。この正規化反射率refle0.3のグラフ曲線が無変換直線と交わるまでの区間に変曲点が位置すると、正規化反射率refle0.3である場合に、一次関数によって生成される出力値Outyが、無変換直線によって生成されるものを下回ってしまいかねない。つまり、逆光補正(輝度値の上昇)が要求される画素値の小さい部分において、元の入力値を超えた値で出力値を生成することができず、逆光補正が不能となるのである。故に、本実施形態においては、図4に示す正規化反射率refle0.3のグラフ曲線と、無変換直線との交点の値以上を、変曲点設定区間としているのである。
変曲点設定区間を設定する2つ目の規定は、正規化反射率refle0.3のグラフ曲線と正規化反射率refle1.3のグラフ曲線との間隔が、予め定めた幅以下となる範囲とすることである。正規化反射率refle0.3のグラフ曲線と無変換直線との交点以降は、輝度信号Yが大きくなる程、正規化反射率refleが0.3である場合の出力値Outyと、正規化反射率refleが1.3である場合の出力値Outyとの差が拡大している。このため、両グラフ曲線の間隔が予め定めた幅となる輝度信号Yの値が、変曲点設定区間の上限となる。尚、出力値Outyの上限値は「255」であるので、両グラフ曲線の差が計算上は拡大していても、実際には、「224」付近からは両グラフ曲線の開きは縮小する。しかし、本実施形態においては、この計算上において、両グラフ曲線の間隔が予め定めた幅となる輝度信号Yの値を変曲点設定区間の上限とする。
上記したように、正規化反射率refleが0.3である場合の出力値Outyと、正規化反射率refleが1.3である場合の出力値Outyとの間に幅があることにより、コントラスト強調を行うことができるのであるが、輝度信号Yの値が大きな領域においては、かかる出力値Outyに必要以上の差が付与されてしまい過補正が発生することとなる。そこで、かかる2のグラフ曲線の差が、予め定めた幅となるまでに変曲点を設けることにより、正規化反射率refleが0.3である場合の出力値Outyと、正規化反射率refleが1.3である場合の出力値Outyとに、過剰な差が生じることを回避できる。本実施形態では、変曲点以降では、一次関数に従って出力値Outyが生成されるため、図3に示すように、正規化反射率refleが0.3である特性線f3と、正規化反射率refleが1.3である場合の特性線f1との間隔は、変曲点において最大となり、輝度信号Yの値が変曲点を超えて大きくなるにつれ次第に、両特性線の間隔を縮小することができるようになっている。
具体的には、本実施形態においては、予め定めた幅は「96」とされており、上記2のグラフ曲線の間隔が「96」となる、輝度信号Yの値「160」が、変曲点設定区間の上限とされている。尚、変曲点設定区間を規定する上記2のグラフ曲線の間隔は「96」に限られるものではなく、「64」〜「96」の範囲の任意の値とすることができる。「64」以下では、形成される特性線f1,f3の間隔が狭小となりすぎて画像に十分なコントラストを付与できず、また「96」を超えると、必要範囲において特性線f1,f3の間隔の縮小が不十分となり明部における過補正を発生させてしまう。その上、かかる幅が「96」以上となると、変曲点輝度信号Yの最大値に近くなり過ぎ、最大値近傍の狭い範囲において出力値Outyが急激に上昇してしまうこととなって画質不良を招きかねない。故に、変曲点設定区間を規定する上記2のグラフ曲線の間隔は「64」〜「96」とされている。
変曲点は、上記2の規定によって設定される変曲点設定区間内の任意の値とすることができる。このように変曲点設定区間を規定することにより、元画像の逆光領域においてはガンマ補正演算に従った逆光補正(輝度上昇)を実現し、また、明部における過補正の発生を抑制することができる。
変曲点は、かかる変曲点設定区間において任意の値とでき、各特性線f1〜f3毎に設定可能であるが、同じ輝度信号Yの値に対し、正規化反射率refleが大きい場合ほど、求められる出力値Outyが大きな値となる位置に(輝度信号Yの値で)設定するものとされている。つまり、各特性線f1〜f3が、各輝度信号Y「0」〜「255」において、交差することのないように変曲点は設けられる。これにより、注目画素が周辺画素より暗い場合より、周辺画素と同じ明るさである方が、更には、周辺画素より明るい方が、より大きな出力値Outyとなる。従って、元画像の階調の序列に従って出力画像を形成することができる。
更に、本実施形態においては、変曲点には、この変曲点設定区間内の値であって輝度信号Yの中点近傍の値が(「128」)採用されている。
ガンマ補正演算によって発生する過補正は、明部の中でも最大値近傍となるほど顕著となるが、かかる最大値近傍に到達するまでは、むしろ、コントラストを強調することが画質を向上させることとなる。従って、輝度信号Yの値の中点近傍に変曲点を設けることにより、中点を含む過補正を抑制する必要のない中間領域においては、正規化反射率refle1.3の特性線f1と正規化反射率refle0.3の特性線f3との間隔を十分に確保でき、かかる領域では良好なコントラストを出力画像に付与することができる。
更には、変曲点を輝度信号Yの中点近傍とすることにより、図3に示したように、正規化反射率refleが0.3である場合の特性線f3を、輝度信号Yの中点近傍から最大値に向かって緩やかに上昇させることができる。変曲点を中点近傍とすることにより、一次関数の傾きaを1近傍の値又はそれ以下の値とできるからである。従って、出力値Outyの上昇を十分に緩慢にすることができ、狭い範囲での急激な出力値Outy上昇を確実に回避できる。
尚、本実施形態において設けられた各テーブル12c〜12eは、輝度信号Yの値において「128」が変曲点となるように構成されたが、変曲点は「128」に限られるものではない。
また、本実施形態においては、各テーブル12c〜12eのテーブルデータのそれぞれは、全て、輝度信号Yの値「128」を変曲点として構成されたが、各テーブル12c〜12eに記憶させるテーブルデータは、異なる変曲点を有するものであっても良い。
また、テーブルデータの形成に用いられた正規化反射率refleの値がどのように設計されているかは、少ないテーブル数で的確な出力値Outyを生成するための重要な要素である。
そこで、図5と図6とを参照して、本プリンタ1に記憶させた各テーブル12c〜12eの形成に用いられた正規化反射率refleについて詳細に説明する。
図5は、元画像データから求められる対数値Rと元画像との関係を説明する図である。図5(a)には、逆光画像である元画像(逆光画像模式図)が表示されている。該元画像は、矩形状の外形を有する態様に形成されると共に、中央部において円形の逆光部位を有している。図5(b)は、元画像の各画素値を反射率(対数値R)に変換して形成した変換画像を示している。ここで、対数値Rは、注目画素の画素値とその周辺画素の平均輝度値との差を示す値、言い換えれば、注目画素と周辺画素との明るさの差を表す値である。変換画像において、白で示される領域Aは対数値Rが正であることを、黒で示される領域Cは対数値Rが負であることを、灰色で示される領域Bは対数値Rが0であることをそれぞれ示している。
この対数値Rが正の値を持つ場合、注目画素は、周辺画素よりも明るいことを示している。逆に、対数値Rが負の値を持つ場合、注目画素は、周辺画素よりも暗いことを示している。また、対数値Rが0である場合は、注目画素は、周辺画素と同じ明るさであることを示している。
一般には、元画像の各部においては、その明るさが一様であることが多い。逆光部位の大部分は同じように暗く、また、逆光部位以外の他の部分については、同じように明るい。従って、変換画像に示すように、物体の輪郭周辺や、逆光部位と非逆光部位との境界周辺など、画像の一部の領域に属する一部の画素が、周辺画素よりも明るく又は暗くなるのである。
図6は、図5に示した画像を含む一般的な画像についての対数値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ずつの出力値Out
y(x,y)が算出されており、出力値Outについても、各出力値Out
y(x,y)のそれぞれに対応する出力値Out
y(x,y)が生成される。そして、生成された出力値Out(x,y)が、その座標に対応して、出力画像メモリ13iに書き込まれる。記憶された出力値Out(出力画像データ)は、印刷を実行するタイミングでこの出力画像メモリ13iから読み出され、印刷部15へ出力される。印刷部へ出力された出力値Outは、出力画像メモリ13iから消去される。
次に、図7と図8とのフローチャートを参照して、上記のように構成されたプリンタ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の処理を実行する。
図8は、図7の補正処理の中で実行される出力値算出処理(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)。
そして、求めた出力値Out
yを、(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に対応する出力値Out
yを中央値テーブル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」とされており、変曲点(輝度信号Y「128」)以降において、ガンマ補正演算にて求められる値よりも遥かに大きな値である「240」に向かって出力値Outyが増大するように、下限値テーブル12eは構成されている。一方で、上限値テーブル12cでは、元画像の輝度信号Y「255」に対する出力値Outyは「255」とされ、また、変曲点(輝度信号Y「128」)以降において「255」に向かって出力値Outyが増大するように上限値テーブル12cは構成されている。このため、明部においては(輝度信号Yが大きくなるほど)、出力値Outyが取り得る分布範囲は、ガンマ補正演算を行う従来に比べて狭小な範囲に納めることができ、その結果、明部における過補正を大きく抑制することができる。故に、プリンタ1においては、元画像の暗部(輝度信号Yの小さい側、本実施形態においては「128」未満)における必要な輝度上昇(逆光補正)と、明部における過補正の抑制とを実現しつつ、更には、逆光補正も過補正の抑制も不要な中間領域においてはコントラスト強調を実現することができる。
更に、テーブルデータを参照することによってガンマ補正演算を行うことなく、入力された元画像をレティネックス処理して出力画像を生成することができるので、画像処理を高速化することができる。その上、元画像が最も多く有する正規化反射率refleの値にて形成されたテーブルデータ(中央値テーブル12d)を備えているので、テーブルデータを参照して作成される出力値Outを正確なものとすることができ、ガンマ補正演算によらずに出力画像を生成しても、画質を低下させることがない。
次に、図9を参照して、本発明の第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は、図7と同様の補正処理が実行するように構成されているが、この図7の補正処理の中で実行される出力値算出処理(S15)が、図9に示す出力値算出処理(S51)に変更されている。
図9は、図7の補正処理の中で実行される第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が設けられていなくとも、ガンマ補正演算と一次関数演算とを組み合わせた演算によって、階調補正(逆光補正およびコントラスト強調)を行いつつその過補正(過度なコントラスト強調)については抑制することができる。
次に、図10と図11とを参照して、本発明の第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に代えて、図10、図11に示した各テーブル12c〜12eを用いる以外は、第1実施形態と同様の画像処理プログラム12aによって、画像処理が実行される。
図10は、第3実施形態においてROM12に記憶されている上限値テーブル12c、中央値テーブル12d、下限値テーブル12eの構成を模式的に示した図である。図11においては、上限値テーブル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」である場合に導出される出力値Out
yの値である。第3実施形態においては、この係数Kは、正規化反射率refleが0.3の場合に「240」とされ、正規化反射率refleが0.8の場合に「255」とされ、正規化反射率refleが1.3の場合に「272」とされている。言い換えれば、係数Kを「240」とした(9)式に従って算出された出力値Out
yが下限値テーブル12eに記憶されており、係数Kを「255」とした(9)式に従って算出された出力値Out
yが中央値テーブル12dに記憶されており、係数Kを「272」とした(9)式に従って算出された出力値Out
yが上限値テーブル12cに記憶されている。
図11は、図10に示した第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」となるので、出力画像でもその輝度を維持することができることとなり、画像全体が暗くなることを的確に回避できる。
図11において二点鎖線で示した特性線(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及び図10に示した対応するテーブル12c〜12eに記憶されているのである。
第3実施形態においては、各テーブル12c〜12eに記憶される出力値Outyは、図11に示した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」の任意の値とすることができる。