(57)【要約】【課題】レティネックス処理における対数演算を精度良く高速で行うことができる画像処理プログラムおよび画像処理装置を提供する。【解決手段】真数値が０．１以上、２．０以下の場合は、テーブルメモリ１２ｃに記憶されたテーブルを参照し、真数値が０．１より小さい場合、および２．０より大きい場合は、１次関数により対数値を取得するものである。テーブルは、真数値が、０．１以上、２．０以下の範囲で、０．１刻みの等間隔で、対数値（自然対数）を記憶するものである。真数値Ｘが０．１より小さい場合は（Ｓ２２：Ｙｅｓ）、次式により対数値Ｙを求める（Ｓ２３）。Ｙ＝１５×Ｘ−３．８０３【選択図】図４
2008085761.tif 000002
【特許請求の範囲】
【請求項１】
レティネックス処理を行う画像処理装置により実行される画像処理プログラムにおいて、
元画像の画素の値をその画素の周辺平均輝度で除した値である真数値を求める真数値演算ステップと、
その真数値演算ステップにより求められた真数値が所定の範囲内であるか否かを判定する判定ステップと、
その判定ステップにより前記真数値演算ステップにより求められた真数値が所定の範囲内であると判定された場合は、真数値に対応する対数値を記憶するテーブルを参照することにより真数値に対応する対数値を取得するテーブル参照ステップと、
前記判定ステップにより前記真数値演算ステップにより求められた真数値が所定の範囲内でないと判定された場合は、１次関数により真数値に対応する対数値を取得する対数値演算ステップとを備えていることを特徴とする画像処理プログラム。
【請求項２】
前記周辺平均輝度は、注目画素およびその注目画素の周辺の画素の値と、その周辺画素の注目画素からの距離に応じて設定されるフィルタ係数との畳み込み演算により求められ、フィルタ係数の総合計を１．０とする場合に、
前記所定の範囲は、真数値が１．０を挟む範囲であることを特徴とする請求項１記載の画像処理プログラム。
【請求項３】
前記所定の範囲は、真数値が０．１から２．０の範囲であることを特徴とする請求項２記載の画像処理プログラム。
【請求項４】
前記テーブル参照ステップは、前記真数値演算ステップにより演算された真数値を挟む前記テーブルに記憶された真数値に基づいて直線補間により対数値を求める補間手段を備えていることを特徴とする請求項１から３のいずれかに記載の画像処理プログラム。
【請求項５】
前記テーブルは、等間隔の真数値に対応して対数値を記憶することを特徴とする請求項１から４のいずれかに記載の画像処理プログラム。
【請求項６】
前記判定ステップは、前記真数値演算ステップにより演算された真数値が、前記所定の範囲内でない場合に、前記所定の範囲より大きいか、小さいかを判定し、
前記対数値演算ステップは、前記判定ステップにより真数値が前記所定の範囲より大きいと判定された場合は、第１の一次関数により対数値を取得し、真数値が前記所定の範囲より小さいと判定された場合は、第２の一次関数により対数値を取得することを特徴とする請求項１から５のいずれかに記載の画像処理プログラム。
【請求項７】
レティネックス処理を行う画像処理装置において、
元画像の画素の値をその画素の周辺平均輝度で除した値である真数値を求める真数値演算手段と、
真数値に対応する対数値を記憶するテーブルと、
前記真数値演算手段により求められた真数の値が所定の範囲内であるか否かを判定する判定手段と、
その判定手段により前記真数値演算手段により求められた真数値が所定の範囲内であると判定された場合は、前記テーブルを参照することにより真数値に対応する対数値を取得するテーブル参照手段と、
前記判定手段により前記真数値演算手段により求められた真数値が所定の範囲内ではないと判定された場合は、１次関数により真数値に対応する対数値を取得する対数値演算手段とを備えていることを特徴とする画像処理装置。
【請求項８】
前記周辺平均輝度は、注目画素の周辺の画素の値とその周辺画素の注目画素からの距離に応じて設定されるフィルタ係数との畳み込み演算により求められ、フィルタ係数の総合計を１．０とする場合に、前記所定の範囲は、真数値が１．０を挟む範囲であることを特徴とする請求項７記載の画像処理装置。
【請求項９】
前記所定の範囲は、真数値が０．１から２．０の範囲であることを特徴とする請求項８記載の画像処理装置。
【請求項１０】
前記テーブル参照手段は、前記真数値演算手段により演算された真数値を挟む前記テーブルに記憶された真数値に基づいて直線補間により対数値を求める補間手段を備えていることを特徴とする請求項７から９のいずれかに記載の画像処理装置。
【請求項１１】
前記テーブルは、等間隔の真数値に対応して対数値を記憶することを特徴とする請求項７から１０のいずれかに記載の画像処理装置。
【請求項１２】
前記判定手段は、前記真数値演算ステップにより演算された真数値が、前記所定の範囲内でない場合に、前記所定の範囲より大きいか、小さいかを判定し、
前記対数値演算手段は、前記判定手段により真数値が前記所定の範囲より大きいと判定された場合は、第１の一次関数により対数値を取得し、真数値が前記所定の範囲より小さいと判定された場合は、第２の一次関数により対数値を取得することを特徴とする請求項７から１１のいずれかに記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理プログラムおよび画像処理装置に関し、特にレティネックス処理における対数演算を精度良く高速で行うことができる画像処理プログラムおよび画像処理装置に関するものである。
【背景技術】
【０００２】
逆光条件下で被写体が撮像された場合、被写体部分の画像は、詳細な態様が判別困難となるほど明度やコントラストの低い不明瞭な逆光画像となる。かかる逆光画像のみならず、露光の過不足や、撮像時のぶれやぼけ、ノイズ、光量不足などによる劣悪な画像を、画像処理によって明度やコントラストを向上させて画質を改良することが行われている。かかる画像処理の１手法として、レティネックス処理（Ｒｅｔｉｎｅｘ処理）が知られている。
【０００３】
レティネックス処理は、高画質部分については入力画像データを保持し、主に低画質部分の画質改良を行うものである。このレティネックス処理では、ガウスフィルタにより、元の画像の各画素データを周辺画素の画素データを反映させた値に補正し、その補正された画素データの自然対数から元の画像のリファレンス成分データを算出し、元画像の画素成分で元の画像の画素データを除してイルミナンス成分データを算出する。つまり、元の画像を、リファレンス成分とイルミナンス成分との２の構成成分に分けるのである。そして、イルミナンス成分に対してガンマ補正等の明度や階調（コントラスト）を補正する処理を行った後、その補正されたイルミナンス成分と、リファレンス成分とを合成することにより、元の画像に対し逆光画像部分などの低画質部分の画質が改良された画像データを生成することができる。
【０００４】
しかしながら、リファレンス成分を算出する際の対数演算に時間を要するという問題がある。特開２００１−７８０２５号公報（特許文献１）には、画像の輝度補正方法において、対数演算を複数の１次関数で近似する方法が開示されている。
【特許文献１】特開２００１−７８０２５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に開示された方法では、レティネックス処理における反射率を求める対数演算を、１次関数を用いた補間演算で近似計算するため、輝度入力の変化量に対する反射率の変化量が大きく変化する領域（対数曲線の傾きが急激に変化する領域）において、変化量の少ない領域で補間する間隔を設定すれば、誤差が大きくなるため、反射率の精度が不足し、また、精度を確保しようとして、変化量の大きな領域で補間の間隔を決定すれば、間隔がちいさな１次関数を多数用いなければならず、演算に要する時間が長くなるという問題点があった。
【０００６】
本発明は、上記問題点を解決するためになされたものであり、レティネックス処理における対数演算を、輝度入力値の変化に対して反射率の変化が大きい（傾きが大きい）領域と、そうでない領域とにおいて精度よく高速で行うことができる画像処理プログラムおよび画像処理装置を提供することを目的としている。
【課題を解決するための手段】
【０００７】
この目的を達成するために、請求項１記載の画像処理プログラムは、レティネックス処理を行う画像処理装置により実行されるものであり、元画像の画素の値をその画素の周辺平均輝度で除した値である真数値を求める真数値演算ステップと、その真数値演算ステップにより求められた真数値が所定の範囲内であるか否かを判定する判定ステップと、その判定ステップにより前記真数値演算ステップにより求められた真数値が所定の範囲内であると判定された場合は、真数値に対応する対数値を記憶するテーブルを参照することにより真数値に対応する対数値を取得するテーブル参照ステップと、前記判定ステップにより真数値演算ステップにより求められた真数値が所定の範囲内でないと判定された場合は、１次関数により真数値に対応する対数値の近似値を取得する対数値演算ステップとを備えている。
【０００８】
請求項２記載の画像処理プログラムは、請求項１記載の画像処理プログラムにおいて、前記周辺平均輝度は、注目画素の周辺の画素の値とその周辺画素の注目画素からの距離に応じて設定されるフィルタ係数との畳み込み演算により求められ、フィルタ係数の総合計を１．０とする場合に、前記所定の範囲は、真数値が１．０を挟む範囲である。
【０００９】
請求項３記載の画像処理プログラムは、請求項２記載の画像処理プログラムにおいて、前記所定の範囲は、真数値が０．１から２．０の範囲である。
【００１０】
請求項４記載の画像処理プログラムは、請求項１から３のいずれかに記載の画像処理プログラムにおいて、前記テーブル参照ステップは、前記真数値演算ステップにより演算された真数値を挟む前記テーブルに記憶された真数値に基づいて直線補間により対数値を求める補間手段を備えている。
【００１１】
請求項５記載の画像処理プログラムは、請求項１から４のいずれかに記載の画像処理プログラムにおいて、前記テーブルは、等間隔の真数値に対応して対数値を記憶する。
【００１２】
請求項６記載の画像処理プログラムは、請求項１から５のいずれかに記載の画像処理プログラムにおいて、前記判定ステップは、前記真数値演算ステップにより演算された真数値が、前記所定の範囲内でない場合に、前記所定の範囲より大きいか、小さいかを判定し、前記対数値演算ステップは、前記判定ステップにより真数値が前記所定の範囲より大きいと判定された場合は、第１の一次関数により対数値を取得し、真数値が前記所定の範囲より小さいと判定された場合は、第２の一次関数により対数値を取得する。
【００１３】
請求項７記載の画像処理装置は、レティネックス処理を行うものであり、元画像の画素の値をその画素の周辺平均輝度で除した値である真数値を求める真数値演算手段と、真数値に対応する対数値を記憶するテーブルと、前記真数値演算手段により求められた真数値が所定の範囲内であるか否かを判定する判定手段と、その判定手段により前記真数値演算手段により求められた真数値が所定の範囲内であると判定された場合は、前記テーブルを参照することにより真数値に対応する対数値を取得するテーブル参照手段と、前記判定手段により前記真数値演算手段により求められた真数値が所定の範囲内ではないと判定された場合は、１次関数により真数値に対応する対数値を取得する対数値演算手段とを備えている。
【００１４】
請求項８記載の画像処理装置は、請求項７記載の画像処理装置において、前記周辺平均輝度は、注目画素の周辺の画素の値とその周辺画素の注目画素からの距離に応じて設定されるフィルタ係数との畳み込み演算により求められ、フィルタ係数の総合計を１．０とする場合に、前記所定の範囲は、真数値が１．０を挟む範囲である。
【００１５】
請求項９記載の画像処理装置は、請求項８記載の画像処理装置において、前記所定の範囲は、真数値が０．１から２．０の範囲である。
【００１６】
請求項１０記載の画像処理装置は、請求項７から９のいずれかに記載の画像処理装置において、前記テーブル参照手段は、前記真数値演算手段により演算された真数値を挟む前記テーブルに記憶された真数値に基づいて直線補間により対数値を求める補間手段を備えている。
【００１７】
請求項１１記載の画像処理装置は、請求項７から１０のいずれかに記載の画像処理装置において、前記テーブルは、等間隔の真数値に対応して対数値を記憶する。
【００１８】
請求項１２記載の画像処理装置は、請求項７から１１のいずれかに記載の画像処理装置において、前記判定手段は、前記真数値演算ステップにより演算された真数値が、前記所定の範囲内でない場合に、前記所定の範囲より大きいか、小さいかを判定し、前記対数値演算手段は、前記判定手段により真数値が前記所定の範囲より大きいと判定された場合は、第１の一次関数により対数値を取得し、真数値が前記所定の範囲より小さいと判定された場合は、第２の一次関数により対数値を取得する。
【発明の効果】
【００１９】
請求項１記載の画像処理プログラムによれば、元画像の画素の値をその画素の周辺平均輝度で除した値である真数値を求める真数値演算ステップと、その真数値演算ステップにより求められた真数値が所定の範囲内であるか否かを判定する判定ステップと、その判定ステップにより真数値演算ステップにより求められた真数値が所定の範囲内であると判定された場合は、真数値に対応する対数値を記憶するテーブルを参照することにより真数値に対応する対数値を取得するテーブル参照ステップと、判定ステップにより真数値演算ステップにより求められた真数値が所定の範囲内でないと判定された場合は、１次関数により真数値に対応する対数値を取得する対数値演算ステップとを備えているので、レティネックス処理における対数演算を精度よく高速で行うことができる。特に、レティネックス処理においては、元画像の画素の値をその画素の周辺平均輝度で除した値である真数値がとる値の頻度が高い範囲が集中しているので、その範囲については、テーブル参照とすることにより、真数値に対応する対数値の取得が速く行えるとともに、精度を維持することができる。また、この所定の範囲以外は、頻度が低いので、実際の対数値と１次関数による近似値との乖離が大きい部分があるが、精度には大きく影響しない。
【００２０】
請求項２記載の画像処理プログラムによれば、請求項１記載の画像処理プログラムの奏する効果に加え、周辺平均輝度は、注目画素の周辺の画素の値とその周辺画素の注目画素からの距離に応じて設定されるフィルタ係数との畳み込み演算により求められ、フィルタ係数の総合計を１．０とする場合に、前記所定の範囲は、真数値が１．０を挟む範囲であるので、元画像の画素の値をその画素の周辺平均輝度で除した値である真数値は、１．０付近に集中し、精度を維持した対数値を取得することができる。よって、精度良く高速で
レティネックス処理を行うことができる。
【００２１】
請求項３記載の画像処理プログラムによれば、請求項２記載の画像処理プログラムの奏する効果に加え、所定の範囲は、真数値が０．１から２．０の範囲であるので、真数値の多くがとる範囲において、精度を維持した対数値を取得することができる。
【００２２】
請求項４記載の画像処理プログラムによれば、請求項１から３のいずれかに記載の画像処理プログラムの奏する効果に加え、テーブル参照ステップは、真数値演算ステップにより演算された真数値を挟むテーブルに記憶された真数値に基づいて直線補間により対数値を求める補間手段を備えているので、簡単な構成で高速に精度の高い対数値を取得することができるという効果がある。高い精度で対数値を求めるには、細かい間隔の真数値に対応して対数値を記憶しなければならず、記憶手段が大規模になる。逆に、粗い間隔で対数値を記憶すると記憶容量は、小さくて済むが、精度を確保できない。補間手段を備えることにより、粗い間隔で対数値を記憶しても、補間演算により精度を確保できるとともに、補間演算は、直線補間であるので高速で演算することができる。
【００２３】
請求項５記載の画像処理プログラムによれば、請求項１から４のいずれかに記載の画像処理プログラムにおいて、テーブルは、等間隔の真数値に対応して対数値を記憶するので、真数値に対応する対数値が記憶されているアドレスを求める演算が簡単になり、高速で対数値を取得することができるという効果ある。非等間隔の真数値に対応して記憶されている場合には、真数値に応じて場合分けをしたり、複雑な演算をしなければならず、時間を要するが、等間隔であれば、簡単な演算により求めることができる。
【００２４】
請求項６記載の画像処理プログラムによれば、請求項１から５のいずれかに記載の画像処理プログラムにおいて、判定ステップは、真数値演算ステップにより演算された真数値が、所定の範囲内でない場合に、所定の範囲より大きいか、小さいかを判定し、対数値演算ステップは、判定ステップにより真数値が所定の範囲より大きいと判定された場合は、第１の一次関数により対数値を取得し、真数値が前記所定の範囲より小さいと判定された場合は、第２の一次関数により対数値を取得するので、対数値を求める演算を高速でかつ、精度良く行うことができる。すなわち、所定の範囲より大きい場合と、所定の範囲内の場合と、所定の範囲より小さい場合の３つの場合に分かれるので、場合分けの判断が少なく、高速で対数値を求めることができる。また、所定の範囲より大きい場合、および所定の範囲より小さい場合は、その範囲に対応する一の一次関数により演算されるので、高速である。
【００２５】
請求項７記載の画像処理装置によれば、元画像の画素の値をその画素の周辺平均輝度で除した値である真数値を求める真数値演算手段と、真数値に対応する対数値を記憶するテーブルと、真数値演算手段により求められた真数値が所定の範囲内であるか否かを判定する判定手段と、その判定手段により真数値演算手段により求められた真数値が所定の範囲内であると判定された場合は、テーブルを参照することにより真数値に対応する対数値を取得するテーブル参照手段と、判定手段により真数値演算手段により求められた真数値が所定の範囲内ではないと判定された場合は、１次関数により真数値に対応する対数値を取得する対数値演算手段とを備えているので、レティネックス処理における対数演算を精度よく高速で行うことができる。
【００２６】
請求項８記載の画像処理装置によれば、請求項７記載の画像処理装置の奏する効果に加え、周辺平均輝度は、注目画素の周辺の画素の値とその周辺画素の注目画素からの距離に応じて設定されるフィルタ係数との畳み込み演算により求められ、フィルタ係数の総合計を１．０とする場合に、所定の範囲は、真数値が１．０を挟む範囲であるので、元画像の画素の値をその画素の周辺平均輝度で除した値である真数値は、１．０付近に集中し、精度を維持した対数値を取得することができる。
【００２７】
請求項９記載の画像処理装置によれば、請求項８記載の画像処理装置の奏する効果に加え、所定の範囲は、真数値が０．１から２．０の範囲であるので、真数値の多くがとる範囲において、精度を維持した対数値を取得することができる。
【００２８】
請求項１０記載の画像処理装置によれば、請求項７から９のいずれかに記載の画像処理装置の奏する効果に加え、テーブル参照手段は、真数値演算手段により演算された真数値を挟む前記テーブルに記憶された真数値に基づいて直線補間により対数値を求める補間手段を備えているので、簡単な構成で高速に精度の高い対数値を取得することができるという効果がある。高い精度で対数値を求めるには、細かい間隔の真数値に対応して対数値を記憶しなければならず、記憶手段が大規模になる。逆に、粗い間隔で対数値を記憶すると記憶容量は、小さくて済むが、精度を確保できない。補間手段を備えることにより、粗い間隔で対数値を記憶しても、補間演算により精度を確保できるとともに、補間演算は、直線補間であるので高速で演算することができる。
【００２９】
請求項１１記載の画像処理装置によれば、請求項７から１０のいずれかに記載の画像処理装置の奏する効果に加え、テーブルは、等間隔の真数値に対応して対数値を記憶するので、真数値に対応する対数値が記憶されているアドレスを求める演算が簡単になり、高速で対数値を取得することができるという効果ある。非等間隔の真数値に対応して記憶されている場合には、真数値に応じて場合分けをしたり、複雑な演算をしなければならず、時間を要するが、等間隔であれば、簡単な演算により求めることができる。
【００３０】
請求項１２記載の画像処理装置によれば、請求項７から１１のいずれかに記載の画像処理装置の奏する効果に加え、判定手段は、真数値演算ステップにより演算された真数値が、所定の範囲内でない場合に、所定の範囲より大きいか、小さいかを判定し、対数値演算手段は、判定手段により真数値が所定の範囲より大きいと判定された場合は、第１の一次関数により対数値を取得し、真数値が所定の範囲より小さいと判定された場合は、第２の一次関数により対数値を取得するので、対数値を求める演算を高速でかつ、精度良く行うことができる。すなわち、所定の範囲より大きい場合と、所定の範囲内の場合と、所定の範囲より小さい場合の３つの場合に分かれるので、場合分けの判断が少なく、高速で対数値を求めることができる。また、所定の範囲より大きい場合、および所定の範囲より小さい場合は、その範囲に対応する一の一次関数により演算されるので、高速である。
【発明を実施するための最良の形態】
【００３１】
以下、本発明の好ましい第１の実施形態について添付図面を参照して説明する。図１は、本実施形態の画像処理を行う機能を有するプリンタ１の電気的な構成を示したブロック図である。本実施形態においては、プリンタ１に搭載された画像処理プログラムは、パーソナルコンピュータ（以下「ＰＣ」と称する）２や、デジタルカメラ２１や、外部メディア２０から入力された画像データ（元画像データなど）に対しレティネックス処理（Ｒｅｔｉｎｅｘ処理）を実行して、画像データの逆光画像部分などの低画質領域の補正を実行するように構成されている。
【００３２】
図１に示すように、プリンタ１には、ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、印刷ヘッドなどから構成され、印刷媒体（例えば、紙媒体など）への印刷（出力）を行う印刷部１５、出力画像サイズなどの入力値をユーザが入力可能なユーザ操作部（例えば、テンキーなど）を有する操作パネル１６とを備えている。
【００３３】
また、プリンタ１は、ケーブル５を介してＰＣ２と接続可能なインターフェイス（以下「Ｉ／Ｆ」と称する）１７と、ケーブル６を介してデジタルカメラ２１と接続可能なＩ／Ｆ１８と、外部メディア２０（例えば、ＳＤメモリカード、メモリスティックなどのフラッシュメモリにより構成される）を着脱自在に装着可能な外部メディアスロット１９とを備えている。これらのＩ／Ｆ１７、１８により行われる通信方法としてＵＳＢ（Universal  Serial  Bus）が使用される。
【００３４】
よって、プリンタ１は、ＰＣ２に記憶されている画像データをケーブル５及びＩ／Ｆ１７を介して入力することが可能であると共に、デジタルカメラ２１によって撮影された画像データをケーブル６及びＩ／Ｆ１８を介して入力することが可能である。さらに、外部メディアスロット１９に装着された外部メディア２０から、その外部メディア２０に記憶されている画像データを入力することが可能である。
【００３５】
ＣＰＵ１１は、プリンタ１全体を制御する演算処理装置である。ＲＯＭ１２は、ＣＰＵ１１により実行される各種制御プログラムやそのプログラムを実行する際に用いられる固定値などを記憶するものであり、レティネックス処理などの画像の処理を行う画像処理プログラムを記憶する画像処理プログラムメモリ１２ａや、印刷を行うための印刷制御プログラムを記憶する印刷制御プログラムメモリ１２ｂやテーブルメモリ１２ｃ等が備えられている。本発明によるレティネックス処理における対数演算の処理は、画像処理プログラムに組み込まれるものである。テーブルメモリ１２ｃには、真数値に対応して、対数値が記憶され、対数演算処理において、参照される。
【００３６】
ＲＡＭ１３は、制御プログラムがＣＰＵ１１により実行される際に必要な各種レジスタ群などが記憶されるワーキングエリアや、処理中のデータを一時的に格納するテンポラリエリア等を有しランダムにアクセスできる書き換え可能なメモリであり、元画像データを記憶する元画像メモリ１３ａと、元画像を縮小し、縮小した画像のレティネックス処理において求められる反射率を記憶する縮小レティネックス画像メモリ１３ｂとクリップ範囲を求めるためのヒストグラムが形成されるヒストグラムメモリ１３ｃ等を備えている。
【００３７】
元画像データメモリ１３ａは、ＰＣ２、デジタルカメラ２１、及び外部メディア２０から、それぞれ、Ｉ／Ｆ１７、Ｉ／Ｆ１８、及び外部メディアスロット１９を介して入力した画像データを記憶するものである。なお、本実施形態では、元画像データ及び出力画像データはいずれも、ＲＧＢ値から構成され、これらの各ＲＧＢ値は、「０」〜「２５５」の範囲の値である。
【００３８】
ＲＧＢ値は、光の３原色である赤を表すＲ値と、緑を表すＧ値と、青を示すＢ値とを構成成分とする値である。光の３原色の混色により各種の色は生成されるので、入力画像の各画素の色は、Ｒ値とＧ値とＢ値との組合せ（ＲＧＢ値）により１の色（色相や階調など）が示される。このＲＧＢ値の値が大きいほど、輝度（明度）は高くなる。
【００３９】
輝度信号メモリ１３ｂおよび色信号メモリ１３ｃは、元画像から輝度信号Ｙと、色信号Ｃｂ、Ｃｒに分離され、輝度信号Ｙと色信号Ｃｂ、Ｃｒとが、それぞれ記憶されるメモリである。レティネックス処理は、輝度信号のみに施され、レティネックス処理後に色信号Ｃｂ、Ｃｒを用いてカラー信号に戻される。
【００４０】
反射率メモリ１３ｄは、元画像の輝度信号のみについてレティネックス処理において求められる反射率Ｒ（ｘ，ｙ）を記憶するメモリである。画像の各画素（ピクセル）について反射率が演算され、このレティネックス画像メモリ１３ｄに記憶される。この演算において、注目画素の値が、周辺の画像の平均輝度値により除算され、その値を真数として自然対数が求められる。本発明は、この対数演算を高速かつ精度良く行うものであり、求められた値は、この反射率メモリ１３ｄに記憶される。
【００４１】
ヒストグラムメモリ１３ｅは、反射率Ｒ（ｘ，ｙ）を正規化する際に、クリップ範囲を設定するためにヒストグラムを形成するが、そのヒストグラムの集計を行うためのメモリである。
【００４２】
次に、図２を参照して、本発明によるレティネックス処理における対数演算の近似方法について説明する。図２は、複数の一次関数を用いて近似する場合（ａ）と、本発明による近似方法（ｂ）と、近似を行わなかった場合とこれらの２つの近似方法により反射率Ｒを求めた場合のヒストグラムとを示す。
【００４３】
図２（ａ）、（ｂ）は、横軸を０から３までの真数値とし、縦軸を−５から２までの対数値として示すグラフであり、真数値は、注目画素の輝度値と周辺画素の輝度値との比であるので、１．０付近の値を取ることが多く、これらのグラフが示す範囲でほどんどの画素についての対数値を求めることができる。
【００４４】
図２（ａ）は、対数曲線を実線で示し、この対数曲線を４つの直線（一次関数）により近似する様子を示すグラフであり、第１の直線を破線で、第２の直線を一点鎖線で、第３の直線を二点鎖線で、第４の直線を実線上に等間隔の＊印を付して、それぞれ示している。図２（ａ）に示すように、直線と直線とが交差する付近では、対数曲線との乖離が比較的大きいことが分かる。
【００４５】
図２（ｂ）は、同様に、対数曲線を実線で示し、真数値が０．１から２．０までの範囲については、テーブルを参照するので、テーブルに記憶する値をドットで示し、真数値が２．０より大きい場合は、第１の１次関数で、真数値が０．１より小さい場合は、第２の一次関数で近似を行う一次関数を示している。図２（b）では、示されていないが、テーブルは、真数値が０．１毎に対数値を記憶し、真数値が小数第２位以下の値を持つ場合は、テーブルに記憶されている値を用いて直線補間を行い、対数値を取得する。
【００４６】
図２（ｃ）において、横軸は、反射率Ｒ（ｘ，ｙ）を、０〜２５５の整数に正規化した値、縦軸は、反射率Ｒになった画素の数量とし、グラフは、あるデジタル写真で撮影した画像（図示せず）について反射率Ｒを求めた場合のヒストグラムである。このグラフのうち太い実線は、倍精度の対数値を用いた場合、細い実線は、図２（ａ）に示す４本の直線で近似した場合、破線は、図２（ｂ）に示す本発明による場合のヒストグラムである。
【００４７】
一般的な自然画像（風景や人物撮影）では、その画像を構成する画素の反射率は、反射率０となる画素が最も多いとされており、図２（ｃ）は、各ヒストグラムの最頻度値が、反射率である対数値＝０、即ち、真数値が１．０の箇所の値に相当し、ヒストグラムの最頻度値から左右にほぼ等量に値が発生していることからも、Ｒｅｔｉｎｅｘ処理においても、真数値１．０を中心（メディアン値）とした範囲に反射率の発生頻度が集中していることが判る。
【００４８】
更に、図２（ｃ）は、倍精度の対数値を用いた場合と、本発明による方法の場合には、ヒストグラムの形状が、ほぼ同じ形状であるとともに、なだらかな曲線により構成されるが、４本の直線で近似した場合は、ヒストグラムの形状がでこぼこに歪む。このことは、４本の直線での近似では、精度が確保されていないことを示している。
【００４９】
次に、図３および図４を参照して、本発明によるレティネックス処理について説明する。図３は、レティネックス処理の概要を示すフローチャートであり、図４は、図３に示す処理の中のＳ３の対数演算を行う処理の詳細を示すフローチャートである。
【００５０】
なお、このレティネックス処理では、まず、カラー画像から輝度信号を求め、その輝度信号のみについてレティネックス処理を行った後、カラー画像に戻す処理を行う。このことにより、色ずれなどを防止することができる。
【００５１】
まず、元画像データをＰＣ２やデジタルカメラ２１から読み込み、ＲＡＭ１３の元画像メモリ１３ａに記憶する（Ｓ１）。次に、元画像の各画素について輝度信号Ｙと色信号Ｃｂ，Ｃｒに変換する（Ｓ２）。輝度信号Ｙおよび色信号Ｃｂ，Ｃｒは、次式により演算される。
【００５２】
【数１】
2008085761.tif 000003
演算された輝度信号Ｙは、輝度信号メモリ１３ｂに記憶し、色信号Ｃｒ、Ｃｂは、色信号メモリ１３ｃに記憶する。次に、上式により演算された輝度信号Ｙについて、反射率Ｒ（ｘ，ｙ）を算出する。反射率Ｒは、縮小画像の各画素の輝度値をＩ（ｘ，ｙ）、縮小画像用のフィルタをＦ（ｘ，ｙ）として、次式により演算される。
【００５３】
【数２】
2008085761.tif 000004
ここで、ｘは、横方向の座標を、ｙは、縦方向の座標を、Ｉ（ｘ，ｙ）は、座標（ｘ，ｙ）における強度値を、Ｆ（ｘ，ｙ）は、座標（ｘ，ｙ）のフィルタ係数を、＊は、畳み込み演算（コンボリューション）をそれぞれ示す。なお、ｌｏｇは、ｅを底とする自然対数である。この対数演算については、図４を参照して後述する。
【００５４】
次に、上記演算により求められた反射率Ｒ（ｘ，ｙ）をＲＡＭ１３の反射率メモリ１３ｄに記憶する（Ｓ４）。次に、Ｒ（ｘ，ｙ）を最大値および最小値と比較する（Ｓ５）。詳細には、最初の座標について求めた反射率Ｒ（ｘ，ｙ）を最大値および最小値とし、そのつぎから求めた反射率Ｒ（ｘ，ｙ）と最大値および最小値とをそれぞれ比較し、今回求めた反射率Ｒ（ｘ，ｙ）が、最大値より大きい場合は、今回求めた反射率Ｒ（ｘ，ｙ）を新たな最大値とし、今回求めた反射率Ｒ（ｘ，ｙ）が、最小値より小さい場合は、今回求めた反射率Ｒ（ｘ，ｙ）を新たな最小値とし、今回求めた反射率Ｒ（ｘ，ｙ）が、最大値より小さく、最小値より大きい場合は、最大値、最小値を変更しないという処理である。
【００５５】
次に、画像の全ての座標についてＳ３〜Ｓ５の処理を行ったか否かを判断し（Ｓ６）、まだ、未処理の座標がある場合は（Ｓ６：Ｎｏ）、Ｓ３の処理に戻り、全ての座標についての処理を終了した場合は（Ｓ６：Ｙｅｓ）、Ｓ５の処理により求めた最大値と最小値に基づいて、反射率Ｒ（ｘ，ｙ）を正規化し、ヒストグラムを形成する（Ｓ７）。このヒストグラムは、算出された最大値と最小値との間の各値をとる画素値の数を集計したもので、この集計されたヒストグラムは、ヒストグラムメモリ１３ｅに形成される。
【００５６】
次に、その形成されたヒストグラムからメディアン値を求め（Ｓ８）、そのメディアン値とヒストグラムとから反射率Ｒ（ｘ，ｙ）のクリップ範囲を定める（Ｓ９）。このクリップ範囲は、例えば、メディアン値より大きい値で、全標本の４５％の標本が含まれる上限値をクリップ範囲の上限値ＵｐＲとし、メディアン値より小さい値で、全標本の４５％が含まれる下限値をクリップ範囲の下限値ＤｏｗｎＲとするものである。
【００５７】
以上の処理により、元画像の反射率により構成されるレティネックス画像を形成し、そのレティネックス画像から、元画像の反射率のクリップする範囲を求めることができる。次に、上記処理により求められたクリップ範囲に基づいてＲ（ｘ，ｙ）を正規化し、正規化反射率（正規化レティネックス値）ｒｅｆｌｅ（ｘ，ｙ）を得る（Ｓ１０）。
【００５８】
つまり、同じデジタル写真データから求めた図２（ｃ）の各ヒストグラムを正規化すれば、正規化後の最頻度値とメディアン値の横軸での位置は一致し、真数値１．０の箇所の値が正規化反射率の中心の値となる。
【００５９】
また、図２（ｃ）において、倍精度ｌｏｇヒストグラムのエンベロープ（太線の形状）と、本発明によるヒストグラムのエンベロープ（破線の形状）はヒストグラムの最頻度値の位置や、最頻度値からの左右への広がる幅が異なっているが、エンベロープの形状は、よく似ており、上記に示したＲ（ｘ，ｙ）を正規化し、正規化反射率（正規化レティネックス値）ｒｅｆｌｅ（ｘ，ｙ）へ変換をおこなった後の両者のグラフは、ほぼ一致すると考えられる。
【００６０】
正規化反射率ｒｅｆｌｅ（ｘ，ｙ）は、Ｒ（ｘ，ｙ）の値がＤｏｗｎＲ以下の場合は、０．０とし、Ｒ（ｘ，ｙ）の値がＵｐＲ以上の場合は、１．０とし、Ｒ（ｘ，ｙ）の値がＤｏｗｎＲより大きくＵｐＲより小さい場合は、
【００６１】
【数３】
2008085761.tif 000005
とする。
【００６２】
このように処理するとｒｅｆｌｅ（ｘ，ｙ）は、０．０から１．０の間の値を取るように正規化される。実験によれば、こうして得られた値に、０．３を加算し、ｒｅｆｌｅ（ｘ，ｙ）の値が０．３から１．３の値を取るようにするのがよいことが判明している。
【００６３】
次に、このｒｅｆｌｅ（ｘ，ｙ）を用いて、次式により輝度についてレティネックス処理を行った画素の値Ｏｕｔ（ｘ，ｙ）を得る（Ｓ１１）。なお、γは、定数である。
【００６４】
【数４】
2008085761.tif 000006
次に、このＯｕｔ（ｘ，ｙ）と、色信号Ｃｂ、Ｃｒとに基づいて、ＲＧＢ値に変換し（Ｓ１２）出力する。この変換は、次式により算出される。
【００６５】
【数５】
2008085761.tif 000007
出力先が印刷部１５に設定されている場合は、処理された画素値が印刷部１５に出力される。次に、元画像の全ても画素について処理を行ったかを判断し（Ｓ１３）、まだ、処理を行っていない画素があるある場合は（Ｓ１３：Ｎｏ）、Ｓ１０の処理に戻り、全ての画素について処理を終了した場合は（Ｓ１３：Ｙｅｓ）、このレティネックス処理を終了する。
【００６６】
次に、Ｓ３の処理である対数演算処理について、図４を参照して説明する。図４は、対数演算処理を示すフローチャートである。この対数演算処理では、真数値が０．１以上、２．０以下の場合は、テーブルメモリ１２ｃに記憶されたテーブルを参照し、真数値が０．１より小さい場合、および２．０より大きい場合は、１次関数により対数値を取得するものである。テーブルは、真数値が、０．１以上、２．０以下の範囲で、０．１刻みの等間隔で、対数値（自然対数）を記憶するものである。
【００６７】
まず注目画素値Ｉ（ｘ、ｙ）を周辺輝度値Ｆ（ｘ、ｙ）＊Ｉ（ｘ，ｙ）で除算し、真数値Ｘを求める（Ｓ２１）。次に、真数値Ｘが０．１より小さいか否かを判断する（Ｓ２２）。真数値Ｘが０．１より小さい場合は（Ｓ２２：Ｙｅｓ）、次式により対数値Ｙを求める（Ｓ２３）。
Ｙ＝１５×Ｘ−３．８０３
真数値が、０．１以上の場合は（Ｓ２２：Ｎｏ）、真数値が、２．０より大きいか否かを判断する（Ｓ２４）。真数値が、２．０より大きい場合は（Ｓ２４：Ｙｅｓ）、次式により対数値Ｙを求める（Ｓ２５）。
Ｙ＝０．３×Ｘ＋０．０９２
Ｓ２４の判断処理において、真数値が、２．０より大きくない場合（Ｓ２４：Ｎｏ）は、真数値が、０．１以上、２．０以下であり、真数値に基づいてテーブルから読み出す対数値が記憶されているアドレスを算出する（Ｓ２６）。このアドレスは、テーブルの先頭アドレスからのオフセットアドレスにより指定される。オフセットアドレスは、真数値を１０倍し、小数点以上の整数値である。
【００６８】
次に、このオフセットアドレスにより指定される対数値Ｂｎとこのオフセットアドレスの次のアドレスに記憶されている対数値Ｂｍとを読み出す（Ｓ２７）。次に、次式により補間演算を行うことにより対数値を求める（Ｓ２８）。ただし、オフセットアドレスをＡとする。
Ｙ＝（Ｂｍ−Ｂｎ）×（１０×Ｘ−Ａ）＋Ｂｎ
Ｓ２３、または、Ｓ２５、または、Ｓ２８の処理を終了した場合は、この対数演算処理を終了する。
【００６９】
図５は、上記の方法において、一次関数を用いて求めた対数値と、実際の対数値とを対比して示す表（ａ）と、グラフ（ｂ）である。表は、第１列に真数値を０．０１から０．０９までの範囲と、２から９０までの範囲に示し、第２列に、その真数値に対応する１次関数により求めた値を、第３列に実際の対数値を示す。
【００７０】
グラフは、横軸を０から１０の範囲の真数値、縦軸を−５から４までの範囲の対数値をそれぞれ表し、破線を実際の対数値、実線を上記対数処理により求められた値といして表すものである。
【００７１】
この図が示すように、真数値が７以上の場合には、一次関数により求めた対数値と実際の対数値との間にかなりの差が認められるが、真数値は、１．０付近に集中するので、ほとんど問題にならない。
【００７２】
以上、第１の実施形態について説明したように、本発明によるレティネックス処理における対数演算は、真数値が、０．１から２．０の範囲の場合は、テーブルを参照し、この範囲以外の場合は、一次関数を用いて求めるものである。
【００７３】
次に、第２の実施形態について説明する。第１の実施形態では、真数値が０．１から２．０の範囲の場合にテーブルを参照するものとしたが、第２の実施形態では、より広い範囲の真数値について対数値をテーブルに記憶する。この場合、真数値の等間隔な値に対して対数値を記憶すると、間隔が狭いと膨大な記憶容量を必要とし、間隔が広いと真数値が小さい場合の精度を維持できない。そこで、真数値が小さい範囲では、間隔を小さく、真数値が大きい範囲では、間隔を大きくとる必要がある。
【００７４】
図６は、真数値が０．０００１以上、９０以下の範囲の真数値に対応する対数値を記憶したテーブルを示すもので、テーブルの左上からインデックス（オフセット）に対応して、真数値と対数値とを示す。実際のメモリでは、このテーブルの先頭アドレスと、対数値だけが、アドレス順に記憶され、オフセットが算出されて、オフセットに対応する対数値が読み出される。
【００７５】
この例では、真数値が０．０００１から０．００１の範囲は、０．０００１刻みとし、０．００１から０．０１の範囲では０．００１刻みなどとしている。このテーブルを用いて対数値を求める方法について説明する。なお、第２の実施形態は、第１の実施形態における図４の処理と、この図４の処理で参照されるテーブルとが異なるが、他の構成は同一であり、同一部分については、その説明を省略する。
【００７６】
図７は、第１の実施形態における図４に示す対数演算処理に代わる処理である。この処理では、まず注目画素値Ｉ（ｘ、ｙ）を周辺輝度値Ｆ（ｘ、ｙ）＊Ｉ（ｘ，ｙ）で除算し、真数値Ｘを求める（Ｓ３１）。次に、真数値Ｘが０．０００１より小さいか否かを判断する（Ｓ３２）。真数値Ｘが０．０００１より小さい場合は（Ｓ３２：Ｙｅｓ）、次式により対数値Ｙを求める（Ｓ３３）。
Ｙ＝２００００×Ｘ−１１．２１
真数値が、０．０００１以上の場合は（Ｓ３２：Ｎｏ）、真数値が、９０より大きいか否かを判断する（Ｓ３４）。真数値が、９０より大きい場合は（Ｓ３４：Ｙｅｓ）、次式により対数値Ｙを求める（Ｓ３５）。
Ｙ＝０．００５×Ｘ＋４．０５
Ｓ２４の判断処理において、真数値が、９０より大きくない場合（Ｓ３４：Ｎｏ）は、真数値が、０．０００１以上、９０以下であり、真数値が入る領域を計算する（Ｓ３６）。ここでいう、領域とは、０．０００１から０．０００９まで、０．００１から０．００９まで、０．０１から０．０９まで、０．１から０．９まで、１．０から９．０まで、１０から９０までのいずれかの領域である。この領域が決定されると、第１の実施例と同様に、オフセットが決まり、整数化指数が決定される（Ｓ３７）。整数化指数は、各領域の先頭の値であり、この値で真数値を除算し、その整数部をとることにより領域内のオフセットが求められる。
【００７７】
このようにしてオフセットアドレスを求め、そのオフセットアドレスにより指定される対数値Ｂｎと、その次のアドレスに記憶される対数値Ｂｍとを読み出し（Ｓ３８）、これえらの値に基づいて補間演算を行う（Ｓ３９）。この補間演算は、第１の実施形態のＳ２８の処理と同一である。Ｓ３３、またはＳ３５、またはＳ３９の処理を終了した場合は、この対数演算処理を終了する。
【００７８】
この図７に示す処理の具体例として、真数値が０．３８である場合について、説明する。すなわち、Ｓ３１において演算により得られた真数値が０．３８である。Ｓ３２において、０．０００１より大きいので、Ｎｏと判断される。次にＳ３４において、９０より小さいと判断され、Ｎｏと判断される。つぎにＳ３６において、０．１から０．９の間の領域に含まれ、整数化指数は、０．１となる。
【００７９】
次に、真数値をこの整数化指数で除算すると、商は、３．８となり、その整数部の３がオフセットアドレスとなる。よって、真数値が０．１であるアドレスに３を加えたアドレスの対数値をＢｎ、その次にアドレスの対数値をＢｍとし、対数値Ｙは、次式により求められる。
Ｙ＝（Ｂｍ−Ｂｎ）×（３．８−３）＋Ｂｎ
以上、第２の実施形態について説明したが、第１の実施形態に比べ、真数値がいずれの領域に入るかを計算する必要があり、計算が多少煩雑である。しかしながら、精度は、第１の実施形態より良い。
【００８０】
以上説明したように、本願発明によるレティネックス処理における対数演算方法によれば、所定の範囲については、テーブルを参照し、所定の範囲以外では、一次関数を用いて対数値を求めるので、精度を維持したまま、高速で演算することができる。
【００８１】
なお、請求項に記載の真数値演算ステップおよび真数値演算手段は、図４に示すフローチャートのＳ２１の処理が該当し、判定ステップおよび判定手段は、図４に示すフローチャートのＳ２２、Ｓ２４の処理が該当し、テーブル参照ステップおよびテーブル参照手段は、図４に示すフローチャートのＳ２７の処理が該当し、対数値演算ステップは、図４に示すフローチャートのＳ２３、Ｓ２５の処理が該当し、補間手段は、図４に示すフローチャートのＳ２８の処理が該当する。
【００８２】
以上、実施形態に基づいて本発明を説明したが、本発明は上記各実施形態に何ら限定されるものでなく、本発明の趣旨を逸脱しない範囲内で種々の改良変形が可能であることは容易に推察できるものである。
【００８３】
例えば、上記実施形態では、周辺平均輝度値を、数２における、フィルタ係数Ｆ（ｘ，ｙ）と、輝度値Ｉ（ｘ，ｙ）とを畳み込み演算した値、Ｆ（ｘ，ｙ）＊Ｉ（ｘ，ｙ）と記載したが、周辺平均輝度を用いない構成、具体的には、従来技術文献２（特許３７３１５７７号）に記載の光学的にピントをずらしたボケ画像や、同じ被写体を低解像度で撮影した画像を、周辺平均輝度として用いても良い。
【００８４】
また、上記実施形態では、色表現系はＲＧＢ形式としたが、ＲＧＢ形式以外の他の色表現系、例えば、ＣＭＹ形式などに本発明を適用してもよい。
【００８５】
また、上記実施形態では、カラー画像の画素値（ＲＧＢ）から輝度値Ｙを算出し、輝度値Ｙについてレティネックス処理を行うものとしたが、Ｒ，Ｇ，Ｂそれぞれについて、補正を行うように構成されたレティネックス処理において、本発明の対数値を取得する方法を適用してもよい。
【００８６】
また、上記第１の実施形態では、真数値が０．１から２．０の範囲内である場合に、テーブルから読み出した２つの値から、直線補間により対数値を求めるものとしたが、テーブルから読み出した値を対数値とするようにしてもよい。その場合には、対数を記憶する真数値の間隔を、０．０５などように、小さくすることにより精度を確保し、真数値に最も近い値に対応する対数値を読み出すようにしてもよい。
【００８７】
また、上記実施形態では、本発明の画像処理プログラムは、プリンタ１に組み込まれたＣＰＵ１１により実行されるものとしたが、パーソナルコンピュータにアプリケーションとして供給され、パーソナルコンピュータに組み込まれたＣＰＵなどにより実行されるようにしてもよい。
【００８８】
また、レティネックス処理は、ＳＳＲ（シングルスケール法）であってもＭＳＲ（マルチスケール法）であってもよい。
【００８９】
また、上記実施形態の画像処理では、ＣＰＵ１１によりレティネックス処理などを行うものとしたが、ＤＳＰ（Digital  Signal  Processor）により行ってもよい。ＤＳＰを用いると、より高速に積和演算などの処理を実行することができる。
【図面の簡単な説明】
【００９０】
【図１】本発明の実施形態の画像処理プログラムを搭載したプリンタの電気的構成を示すブロック図である。
【図２】画像処理プログラムにより行われる前処理を示すフロー図である。
【図３】レティネックス処理を示すフローチャートである。
【図４】対数演算処理を示すフローチャートである。
【図５】（ａ）は、一次関数を用いて求めた対数値と、実際の対数値とを対比して示す表であり、（ｂ）は、その対比を表すグラフである。
【図６】第２の実施形態における対数表を示すテーブルである。
【図７】第２の実施形態における対数演算処理を示すフローチャートである。
【符号の説明】
【００９１】
１                        プリンタ
２                        パーソナルコンピュータ
１１                      ＣＰＵ
１２                      ＲＯＭ
１２ａ                    画像処理プログラムメモリ
１２ｃ                    テーブルメモリ
１３                      ＲＡＭ
１３ａ                    元画像メモリ
１３ｂ                    レティネックス画像メモリ
【図１】
2008085761.tif 000008
【図２】
2008085761.tif 000009
【図３】
2008085761.tif 000010
【図４】
2008085761.tif 000011
【図５】
2008085761.tif 000012
【図６】
2008085761.tif 000013
【図７】
2008085761.tif 000014