(57)【要約】【課題】一実施例は、複数のパッチのうちの一部のパッチの画素値を限定的に変動させる照明環境の不均一性が画像に発生している場合にも、被写体が本来持つ画素値を再現できる技術を提供する。【解決手段】一実施例に係る画像処理装置は、特定部と、補正部を含む。特定部は、画像に写るカラーチャート上の異なる位置に配置された複数の同色の領域のそれぞれの画素値を抽出し、抽出した領域の画素値と配置された同色の領域の並び位置から、所定の関数に応じた画素値となる領域を特定する。所定の関数は、一方向に向かって一定の割合で画素値を変動させる照明環境の不均一性に起因する位置に応じた画素値の変動を表す。補正部は、特定した領域の画素値に基づいて同色の領域間を補正する。【選択図】図２２
2015207085.tif 000002
【特許請求の範囲】
【請求項１】
画像に写るカラーチャート上の異なる位置に配置された複数の同色の領域のそれぞれの画素値を抽出し、抽出した領域の画素値と配置された同色の領域の並び位置から、一方向に向かって一定の割合で画素値を変動させる照明環境の不均一性に起因する位置に応じた画素値の変動を表す関数に応じた画素値となる領域を特定する特定部と、
前記特定した領域の画素値に基づいて前記同色の領域間を補正する補正部と、
を含む、画像処理装置。
【請求項２】
前記複数の同色の領域は補正を行う対象となる領域の外周上に配置されており、同色の画素値の関係がシヌソイド関数で表される、請求項１に記載の画像処理装置。
【請求項３】
前記複数の同色の領域は、前記補正を行う対象となる領域を挟んで両側に対として配置される２対以上の同色の領域であり、
前記特定部は、前記対の一方の同色の領域から、他方の同色の領域までの区間に存在する同色の領域の画素値が、線形に変動しているか否かを判定し、線形に変動している場合に前記区間を線形区間と判定し、
前記線形区間の数に基づいて、前記シヌソイド関数に応じた画素値となる領域を特定する、
請求項２に記載の画像処理装置。
【請求項４】
前記特定部は、前記線形区間の数が１本である場合に、前記１本の線形区間に含まれる同色の領域を、前記シヌソイド関数に応じた画素値となる領域として特定する、請求項３に記載の画像処理装置。
【請求項５】
前記特定部は、前記線形区間の数が２本である場合に、前記２本の線形区間に重複する区間があるか否かを判定し、前記２本の線形区間に重複する区間が無い場合に、前記２本の線形区間に含まれる同色の領域を、前記シヌソイド関数に応じた画素値となる領域として特定する、請求項３に記載の画像処理装置。
【請求項６】
前記特定部は、前記複数の同色の領域の画素値を前記シヌソイド関数に当てはめた場合の当てはまりの度合いに基づいて、前記シヌソイド関数に応じた画素値となる領域を特定する、請求項２に記載の画像処理装置。
【請求項７】
前記補正部は、前記当てはまりの度合いに基づいて特定された前記シヌソイド関数に応じた画素値となる領域の画素値に基づいて、前記シヌソイド関数の振動の中心の画素値を算出し、前記振動の中心の画素値に基づいて前記同色の領域間を補正する、
請求項６に記載の画像処理装置。
【請求項８】
コンピュータが、
画像に写るカラーチャート上の異なる位置に配置された複数の同色の領域のそれぞれの画素値を抽出し、抽出した領域の画素値と配置された同色の領域の並び位置から、一方向に向かって一定の割合で画素値を変動させる照明環境の不均一性に起因する位置に応じた画素値の変動を表す関数に応じた画素値となる領域を特定し、
前記特定した領域の画素値に基づいて前記同色の領域間を補正すること、
を特徴とする画像処理方法。
【請求項９】
画像に写るカラーチャート上の異なる位置に配置された複数の同色の領域のそれぞれの画素値を抽出し、抽出した領域の画素値と配置された同色の領域の並び位置から、一方向に向かって一定の割合で画素値を変動させる照明環境の不均一性に起因する位置に応じた画素値の変動を表す関数に応じた画素値となる領域を特定し、
前記特定した領域の画素値に基づいて前記同色の領域間を補正する、
処理をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法、及びプログラムに関する。
【背景技術】
【０００２】
例えば日光や照明等の光源からの光の加減、及び光源からの光を遮蔽する遮蔽物による影響で、画像を撮像する際の照明環境は様々に変化する。そして、照明環境が変化すると画像中の被写体の色は、同じ被写体であってもさまざまな色に変化してしまう。
【０００３】
この場合、被写体が本来持つ色と、撮像された画像に写る被写体の色との間には照明環境に応じて色に差が生じる。そのため、例えば、測色計などで予め色を正確に測定してあるパッチを配列したカラーチャート（色票）などを、被写体とともに撮像し、画像中のパッチの色を基準に被写体の色を補正することが行われている。即ち、例えば、画像に写るパッチの色を、そのパッチが本来持つ正確な色に近づけるように補正値を算出する。そして、得られた補正値を用いて画像中の被写体の色を補正することで、被写体が本来持つ色を再現することができる。
【０００４】
また、美容や健康の分野において、肌表面の画像を撮像し、例えば、肌の色、毛穴の大きさと数、シミの大きさや色の濃さなどの肌の状態を画像からデータ化して、それらのデータをもとに肌の状態を評価することが行われている。
【０００５】
これに関し、色の計測精度を向上させるための技術が知られている。また、テストパターンの撮影時に外光が変化したり障害物で撮影が遮られて撮影データに異常なデータが取り込まれたりした場合でも、常に正しい補正データを算出するための技術が知られている。多くの手間や時間を要することなく、投射される画像の画質低下を抑制するための技術が知られている。カラーチャートを用いずに２つの印刷物の色調ズレを、校正するための技術が知られている。不要な色調変換を抑制して画像出力機器の色調を補正するための技術が知られている。色標のデザイン性を損なうことなく、色標の標示領域の並び順を簡易に抽出するための技術が知られている。（例えば、特許文献１から特許文献６参照）
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１３‐１９５２４３号公報
【特許文献２】特開２００５‐１５０７７９号公報
【特許文献３】特開２００１‐１３４２５２号公報
【特許文献４】特開２０１３‐１１０６９６号公報
【特許文献５】特開２０１３‐２６９２１号公報
【特許文献６】特開２０１３‐１９６３７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、撮像された画像においてカラーチャートが均一な照明環境で撮像されないことがある。例えば、ユーザがカメラをカラーチャートや被写体の表面に近づけて画像を撮影した場合に、カメラのレンズに対してカラーチャートや被写体の表面が傾いていると、その傾きにより、レンズからの距離が撮像された画像内で位置よって異なってしまう。そのため、カメラのレンズに届く光の量に距離に応じた差が生じ、画像におおよそ一方向に向かって一定の割合で画素値を変化させる現象が生じることがある。そして、この現象は、ユーザがカメラをカラーチャートや被写体の表面に近づけて画像を撮影した場合には、画像内でカラーチャートや被写体が大きく撮像されているため、顕著に表れることもある。なお、この画像においておおよそ一方向に向かって一定の割合で画素値を変化させる現象は、以降の説明でグラデーションと呼ぶ。また、画素値とは、画像の画素が有する値であり、例えば、輝度値、及び色値であってよい。色値とは、例えば、色空間における各色成分の値であってよい。例えば、原色を赤、緑、青とするＲＧＢ（Red-Green-Blue color model）空間を用いる場合には、画素値は、赤、緑、及び青のそれぞれの成分の値であってよい。
【０００８】
グラデーションが画像に発生している場合、補正の対象である被写体に当たる光と、補正のための補正値を算出するために用いるカラーチャート上のパッチに当たる光との間に差が生じてしまう。そのため、画像中のカラーチャートのパッチの画素値を用いて補正値を算出し、得られた補正値を用いて画像中の被写体の画素値を補正する処理を行ったとしても、被写体が本来持つ画素値を十分に再現できないことがある。なお、被写体が本来持つ画素値とは、例えば、被写体を測色計で計測して得られる正確な色などの値に対応する画素値であってよい。
【０００９】
この場合に、例えば、ユーザが、点対称に対を作って配置される同色の複数のパッチを含むカラーチャートを用い、対となるパッチで補正の対象となる被写体を挟んで画像を撮像したとする。そして、例えば、画像中の点対称に配置した同色のパッチの画素値を平均化して得られた値を用いて補正値が算出され、撮像された画像中の被写体の画素値の補正が、その補正値を用いて行なわれたとする。この様な補正が行われた場合、おおよそ一方向に向かって一定の割合で画素値が変化するグラデーションによる照明環境の不均一性がパッチの画素値に与える影響は除去されるため、被写体が本来持つ画素値を精度よく再現することができる。
【００１０】
しかしながら、画像において、カラーチャートが均一な照明環境で撮像されない別な状況として、カラーチャート上に存在する複数のパッチのうちの一部のパッチの画素値を限定的に変化させる照明環境の不均一性が画像に発生することがある。一例は、カラーチャートを持つ手の指などの影が一部のパッチ上に掛かる場合や、一部のパッチが反射により白飛びしてしまう場合などである。この場合、一部のパッチに限定的に生じる画素値の変化の影響が補正値から除去できず、画素値の補正を行っても被写体が本来持つ画素値が再現できないことがあった。一態様に係る目的は、複数のパッチのうちの一部のパッチの画素値を限定的に変動させる照明環境の不均一性が画像に発生している場合にも、被写体が本来持つ画素値を再現することである。
【課題を解決するための手段】
【００１１】
一つの態様の画像処理装置は、特定部と、補正部を含む。特定部は、画像に写るカラーチャート上の異なる位置に配置された複数の同色の領域のそれぞれの画素値を抽出し、抽出した領域の画素値と配置された同色の領域の並び位置から、所定の関数に応じた画素値となる領域を特定する。所定の関数は、一方向に向かって一定の割合で画素値を変動させる照明環境の不均一性に起因する位置に応じた画素値の変動を表す。補正部は、特定した領域の画素値に基づいて同色の領域間を補正する。
【発明の効果】
【００１２】
一つの態様によれば、複数のパッチのうちの一部のパッチの画素値を限定的に変動させる照明環境の不均一性が画像に発生している場合にも、被写体が本来持つ画素値が再現できる。
【図面の簡単な説明】
【００１３】
【図１】いくつかの実施例に係る画像処理装置の機能ブロック構成を例示する図である。
【図２】第１の実施例に係るカラーチャートを例示する図である。
【図３】画像の照明環境と、同色のパッチの位置に応じた画素値との関係を例示する図である。
【図４】グラデーションと、円の円周上の点での画素値の変動との関係を例示する図である。
【図５】第１の実施例に係る画像の照明環境と、線形区間との関係を例示する図である。
【図６】第１の実施例に係る画像の照明環境と、線形区間との関係を例示する図である。
【図７】第１の実施例に係る画像の照明環境と、線形区間との関係を例示する図である。
【図８】第１の実施例に係る画像の照明環境と、線形区間との関係を例示する図である。
【図９】第１の実施例に係る画像の照明環境と、線形区間との関係を例示する図である。
【図１０】第１の実施例に係る画像の照明環境と、線形区間との関係を例示する図である。
【図１１】第１の実施例に係るパッチグループ情報を例示する図である。
【図１２】第１の実施例に係る画素値補正処理の動作フローを例示する図である。
【図１３】第１の実施例に係る線形区間特定処理の動作フローを例示する図である。
【図１４】第２の実施例に係る画像の照明環境と、線形区間との関係を例示する図である。
【図１５】第２の実施例に係る画像の照明環境と、線形区間との関係を例示する図である。
【図１６】第２の実施例に係る画像の照明環境と、線形区間との関係を例示する図である。
【図１７】第２の実施例に係る画像の照明環境と、線形区間との関係を例示する図である。
【図１８】第２の実施例に係る画像の照明環境と、線形区間との関係を例示する図である。
【図１９】第２の実施例に係る画像の照明環境と、線形区間との関係を例示する図である。
【図２０】第２の実施例に係るパッチグループ情報を例示する図である。
【図２１】第２の実施例に係る線形区間特定処理の動作フローを例示する図である。
【図２２】第３の実施例に係る画素値補正処理を例示する図である。
【図２３】第３の実施例に係る代表値取得処理の動作フローを例示する図である。
【図２４】一実施例に係るパラメータ算出処理の動作フローを例示する図である。
【図２５】第４の実施例に係る代表値取得処理の動作フローを例示する図である。
【図２６】変形例に係る画素値補正処理を例示する図である。
【図２７】一実施例に係る画像処理装置を実現するためのコンピュータのハードウェア構成を例示する図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照しながら、いくつかの実施例について詳細に説明する。なお、複数の図面において対応する要素には同一の符号を付す。
【００１５】
図１は、いくつかの実施例に係る画像処理装置１００の機能ブロック構成を例示する図である。画像処理装置１００は、例えば、携帯電話機、スマートフォン、タブレット端末、パーソナルコンピュータ（ＰＣ）、及びノートＰＣなどの画像を処理する機能を備える装置であってよい。画像処理装置１００は、例えば、制御部１０１及び記憶部１０２を含む。制御部１０１は、例えば特定部１１１及び補正部１１２などの機能部を含む。画像処理装置１００の記憶部１０２は、例えば、プログラム１２０及び後述するパッチグループ情報１１００，２０００などの情報を記憶している。画像処理装置１００の制御部１０１は、プログラム１２０を読み出して実行することで例えば特定部１１１及び補正部１１２などの機能部として機能する。これらの各機能部の詳細及び記憶部１０２に格納されている情報の詳細については後述する。
【００１６】
［第１の実施例］
図２は、第１の実施例に係るカラーチャート１を例示する図である。カラーチャート１は、中抜けの領域５（例えば貫通穴）を含んでいる。そして、カラーチャート１には、領域５の外周に複数のパッチ（Ｗ１〜Ｗ４、及びＣ１〜Ｃ１６）が配置されている。そのため、例えば、画素値の補正の対象となる被写体を領域５に配置して撮像装置で画像を撮像することで、被写体をパッチで取り囲んで画像を撮像することができる。また、カラーチャート１では、４色（ａ、ｂ、ｃ、及びｄ）のパッチが、色毎に２対の合計４個ずつ含まれている。なお、パッチの色は任意の色であってよいが、例えば、補正を行う対象である被写体の画素値に類する色であることが好ましい。例えば、被写体の肌の色を補正する場合には、ＲＧＢ空間上で人の肌の色が分布すると想定される領域の色が採用されてよい。一例として、ピンク色、黄色、チャコールグレー、赤紫色などの色が採用されてよい。また、各対のパッチは、例えば、補正を行う対象である被写体が写る領域５の中心を対称点３０として点対称の位置に配置されている。
【００１７】
例えば、カラーチャート１において、パッチＣ１、Ｃ６、Ｃ９及びＣ１４の４個のパッチは色：ａを有する同一色のパッチである。また、パッチＣ２、Ｃ５、Ｃ１０及びＣ１３は、色：ｂを有する同一色のパッチである。パッチＣ３、Ｃ８、Ｃ１１及びＣ１６は、色：ｃを有する同一色のパッチである。パッチＣ４、Ｃ７、Ｃ１２及びＣ１５は、色：ｄを有する同一色のパッチである。そして、パッチＣ１とパッチＣ９は、対称点３０から点対称の位置に対として配置されている。同様に、パッチＣ６とパッチＣ１４は、対称点３０から点対称の位置に対として配置されている。また、パッチＣ２、Ｃ５、Ｃ１０及びＣ１３、パッチＣ３、Ｃ８、Ｃ１１及びＣ１６、並びにパッチＣ４、Ｃ７、Ｃ１２及びＣ１５についても、図２に示されるように、対となるパッチが対称点３０から点対称の位置に配置されている。また、図２の例では、同色の２対の合計４個のパッチは、対称点３０の周りに等間隔に（例えば、各々が９０度の間隔を空けて）配置されている。更に、カラーチャート１は、白色の４個のパッチＷ１〜Ｗ４を含んでおり、これらの白色のパッチＷ１〜Ｗ４が画像に写った際の画素値を用いてホワイトバランスが設定されてもよい。
【００１８】
図３は、画像の照明環境と、カラーチャート１の４個の同色のパッチの位置に応じた画素値との関係を例示する図である。なお、図３においてパッチＣ１、Ｃ６、Ｃ９、及びＣ１４は、図２のカラーチャート１のパッチＣ１、Ｃ６、Ｃ９、及びＣ１４と対応している。図３（ａ）は、画像においてカラーチャート１が均一な照明環境で撮像される場合の照明環境と、４個の同色のパッチの位置に応じた画素値との関係を例示している。図３（ａ）に示す様に、画像の全領域にわたって均一な照明環境で画像が撮像されている場合には、カラーチャート１に配置された４個の同色のパッチＣ１、Ｃ６、Ｃ９、及びＣ１４はいずれもほぼ同一の画素値を示す。そのため、例えば、画像においてカラーチャート１の領域５に配置された被写体の画素値の補正に、４個の同色のパッチＣ１、Ｃ６、Ｃ９、及びＣ１４のどの画素値を用いても、被写体が本来持つ画素値を再現することができる。
【００１９】
図３（ｂ）は、画像においておおよそ方向２０に向かって一定の割合で画素値が増加するグラデーションが発生している照明環境と、４個の同色のパッチの位置に応じた画素値との関係を例示している。この場合、カラーチャート１に配置された４個の同色のパッチＣ１、Ｃ６、Ｃ９、及びＣ１４は、グラデーションの影響でそれぞれが異なる色を示す。この状態で、カラーチャート１に配置された４個の同色のパッチのうちのいずれか１つの画素値を基準として補正値を算出したとしても、基準として用いたパッチの照明環境と、補正の対象の被写体の照明環境とが異なる。そのため、基準として用いたパッチから算出される補正値を用いて画素値の補正を行ったとしても、被写体が本来持つ画素値を再現することができないことがある。
【００２０】
この場合に、上述のように、グラデーションでは画像において画素値がおおよそ一方向に向かって一定の割合で変化する。また、カラーチャート１は、図２に示す様に、同色の２対の４個のパッチのうち対となるパッチ同士が対称点３０から点対称の位置に配置されている（例えば、パッチＣ１とパッチＣ９）。そのため、例えば、点対称の位置に配置されているパッチＣ１及びパッチＣ９の画素値の平均をとることで、グラデーションによる照明環境の不均一性がこれらのパッチの画素値に与える影響が平均化できる。それによって、例えば、被写体が写る領域５内にある対称点３０におけるパッチの画素値を推定することができる。また同様に、カラーチャート１のパッチＣ６及びパッチＣ１４は、対称点３０に対して点対称に配置されているため、同様に平均をとることで、グラデーションによる照明環境の不均一性がこれらのパッチの画素値に与える影響を平均化することができる。そのため、例えば、パッチＣ１、Ｃ６、Ｃ９、及びＣ１４の画素値を平均化して得られた値を、基準として用いて補正値を算出し、被写体の画素値の補正を行うことで、被写体が本来持つ画素値を再現することができる。
【００２１】
しかしながら、図３（ｃ）に示すように、例えば、同色の複数のパッチのうちの一部のパッチの画素値に限定的に影響を及ぼす照明環境の不均一性が画像に生じることがある。例えば、カラーチャート１を手に持った際に指などの影が一部のパッチ上に掛かる場合や、一部のパッチにおいて照明の反射が強く画像が白飛びしてしまう場合などが挙げられる。なお、以下の説明では、この同色の複数のパッチのうちの一部のパッチの画素値に限定的に影響を及ぼす照明環境の不均一性を、部分的照明環境変化５０と呼ぶ。例えば、図３（ｃ）では、おおよそ方向２０に向かって一定の割合で画素値が増加するグラデーションが発生しており、更に、パッチＣ１に部分的照明環境変化５０が発生している。
【００２２】
この場合、一部のパッチに生じた部分的照明環境変化５０の影響でグラデーションの影響を除去することができない。その結果、画素値の補正を行っても被写体が本来持つ画素値を再現できないことがある。
【００２３】
そこで、第１の実施例では、制御部１０１は、画像に写るカラーチャート１上に配置された複数の同色のパッチのうちで、グラデーションに起因する位置に応じた画素値の変動を表す関数に応じた画素値となるパッチを特定する。ここで、グラデーションに起因する位置に応じた画素値の変動を表す関数に、パッチの画素値が応じた画素値となる場合、それらのパッチは、グラデーション以外の不均一な照明環境変化の影響を受けていないことが推定される。そのため、それらのパッチは、部分的照明環境変化５０が発生していないと考えられる。従って、特定されたパッチの画素値を用いて画素値の補正に用いる補正値を得ることで、部分的照明環境変化５０の影響を排除して、同色のパッチ間（例えば、領域５）の画素値の補正を行うことができる。それにより、被写体が本来持つ画素値を再現することができる。
【００２４】
続いて、図４から図１３は、第１の実施例に係る画素値の補正を説明する図である。なお、図５〜図１０においてパッチＣ１、Ｃ６、Ｃ９、及びＣ１４は、図２のカラーチャート１のパッチＣ１、Ｃ６、Ｃ９、及びＣ１４と対応している。また、以下の説明では、グラデーションに起因する位置に応じた画素値の変動を表す関数の例として、シヌソイド関数が用いられている。シヌソイド関数とは、例えば、サイン関数、及びコサイン関数であってよい。しかしながら、実施例で用いられるグラデーションに起因する位置に応じた画素値の変動を表す関数はこれに限定されるものではない。例えば、グラデーションに起因する位置に応じた画素値の変動を表す関数であれば、画像中の楕円形状又は六角形状上の位置に応じた画素値の変動を表す関数等のその他の関数が用いられてよい。また、この場合、複数のパッチが、関数が表す例えば楕円形状又は六角形状に沿うようにカラーチャート上に配置され、複数のパッチの画素値が関数に応じた画素値となるか否かが判定されてよい。
【００２５】
図４は、画像に発生したグラデーションに起因する画素値の変動と、点Ｐを中心とした半径ｒの円の円周上の点との関係を例示する図である。例えば、図４（ａ）では、画像に、方向２０に向かっておおよそ一方向に一定の割合で画素値が増加するグラデーションによる照明環境の変化が発生している。また、画像中の点Ｐを中心とした半径ｒの円において、例えば、点４１はθの角度が０度の点とする。また、θ０は、グラデーションの向きを表す方向２０までの点４１からの回転角とする（即ち、θ０はグラデーションの向きを表す）。この場合、点Ｐを中心とした半径ｒの円１０の円周上を角度θだけ回転した点の画素値ｙは、シヌソイド曲線を描いて変化する。そのため、円１０の円周上の点の画素値ｙは、シヌソイド関数を用いて表すことができ、例えば、以下の式１で表すことができる。なお、以下の式１では、図４（ａ）における反時計回りの回転方向が角度θの正の方向であり、αはシヌソイド曲線の振幅の値である。また、βは、シヌソイド曲線の波の振動の中心の値であり、点Ｐにおける画素値と対応している。また、式１では、画像にグラデーションが発生している場合の円１０の円周上の点と、その点での画素値との関係がコサイン関数で表されているが、実施例はこれに限定されるものではなく、例えば、サイン関数が用いられてもよい。
【００２６】
【数１】
2015207085.tif 000003
【００２７】
図４（ｂ）は、式１で表される画素値ｙと、角度θとの関係を表すグラフである。図４（ｂ）に示すように、図４（a）に示すようなグラデーションが発生している画像において円１０の円周上に画素値を検出すると、画素値はシヌソイド曲線を描いて変化する。
【００２８】
従って、例えば、図２に例示されるカラーチャート１を用いて撮像した画像にグラデーションが発生している場合、カラーチャート１に含まれる４個の同色のパッチの画素値は、位置に応じてシヌソイド曲線に応じた画素値を有する。図５（ａ）は、画像に発生したグラデーションと、画像に写るカラーチャート１上の４個の同色のパッチＣ１、Ｃ６、Ｃ９、及びＣ１４の配置を例示している。この場合に、各パッチＣ１、Ｃ６、Ｃ９、及びＣ１４の画素値は、図５（ｂ）に示すようにおおよそシヌソイド関数に従って変化する。ここで、シヌソイド曲線は、例えば、図４（ａ）の円１０を一周する区間において画素値が単調に減少する減少区間（例えば図４（ｂ）のθ０からθ０＋πの区間）と、単調に増加する増加区間（例えば図４（ｂ）のθ０＋πからθ０＋２πの区間）とを含む。また、カラーチャート１では、対となるパッチが点対称に配置されている。そのため、被写体が写る領域５の周りで連続する３つのパッチ（例えば、対となるパッチＣ１からパッチＣ９までの区間）は、図４（ｂ）のシヌソイド曲線において角度：πの幅を持つ区間に対応している。そのため、図５（ｂ）に例示するように、カラーチャート１のパッチＣ１、Ｃ６、Ｃ９、及びＣ１４の画素値を被写体が写る領域５の周りに連続する順番で並べると、連続する３つのパッチにおいておおよそ線形な画素値の変化が２本検出される。
【００２９】
一方で、図３（ｃ）で例示するように、同色のパッチのいずれかにおいて部分的照明環境変化５０が発生している場合、部分的照明環境変化５０が発生しているパッチの画素値が変化する。そのため、部分的照明環境変化５０が発生しているパッチの位置と対応するシヌソイド曲線の減少区間又は増加区間において、おおよそ線形な画素値の増加や減少が検出されなくなる。
【００３０】
そこで、第１の実施例では、制御部１０１は、領域５の周りに連続する順番でパッチの画素値の変化が示す線形性に基づいて、カラーチャート１に含まれる４個の同色のパッチの画素値がおおよそシヌソイド関数に応じた画素値となるか否かを判定する。
【００３１】
＜ケース１＞
上述のように図５（ａ）は、画像に発生したグラデーションと、画像に写るカラーチャート１上の４個の同色のパッチＣ１、Ｃ６、Ｃ９、及びＣ１４の配置を例示している。また、図５（ａ）では、画像にグラデーションによる照明環境の変化が発生しており、一方、部分的照明環境変化５０は発生していない。この場合に、例えば、カラーチャート１の４個の同色のパッチ（例えば、Ｃ１、Ｃ６、Ｃ９、及びＣ１４）の画素値を、対称点３０を中心として反時計回りにＣ９、Ｃ６、Ｃ１、及びＣ１４の順に並べると、パッチの画素値は図５（ｂ）に示す変動を示す。そして、対称点３０の周りに時計回り、又は反時計回りに連続する３つのパッチにおいて、画素値が線形に増加又は減少する２つの区間が検出される。即ち、図５（ｂ）では区間：Ｃ９‐Ｃ６‐Ｃ１においておおよそ線形な画素値の増加が検出される。また、区間：Ｃ１‐Ｃ１４‐Ｃ９においておおよそ線形な画素値の減少が検出される。そして、第１の実施例では、制御部１０１は、このように対称点３０を中心として時計回りに、又は反時計回りに連続する３つのパッチにおいて画素値がおおよそ線形に増加又は減少する場合に、その連続する３つのパッチの区間を線形区間として特定する。即ち、図５（ｂ）の例では、制御部１０１は、線形区間として、Ｃ９‐Ｃ６‐Ｃ１と、Ｃ１‐Ｃ１４‐Ｃ９の２本を特定する。
【００３２】
続いて、線形区間の重なりについて説明する。例えば、図５（ｂ）において、特定された２本の線形区間の両端のパッチ（例えば、Ｃ１及びＣ９）ではなく、線形区間の中間の点を構成する２つのパッチＣ６及びＣ１４は、互いに別の検出された線形区間では用いられていない。即ち、これらの２本の線形区間には、重複する区間がない。この様に、例えば、特定された線形区間の中間の点を構成するパッチが、別の線形区間において用いられておらず、重複する区間がない場合に、以降の説明では線形区間が重複していないと表現する。一方、線形区間の中間の点を構成するパッチが、別の線形区間において用いられており、一部の区間が重複している場合に、以降の説明では線形区間が重複していると表現する。
【００３３】
ここで、カラーチャート１では、対となるパッチが点対称に配置されているため、対称点３０の周りに連続する３つのパッチ（例えば、対となるパッチＣ１からＣ９までの区間）は、図４（ｂ）のシヌソイド曲線において角度：πの幅を持つ区間に対応している。そのため、特定された重複しない２本の線形区間は、例えば、上述のシヌソイド曲線の減少区間及び増加区間に対応していると考えられる。従って、例えば、重複しない２本の線形区間が特定される場合、その線形区間に含まれるパッチの画素値はシヌソイド関数に応じた画素値を有しているとみなしてよい。また更に、重複しない２本の線形区間が特定される場合、カラーチャート１の４個の同色のパッチのすべてがいずれかの線形区間に属している。そのため、２本の線形区間が特定される場合、４個の同色のパッチのいずれにも部分的照明環境変化５０は発生していない。そのため、例えば、４個の同色のパッチＣ１、Ｃ６、Ｃ９、及びＣ１４の画素値を代表する代表値を取得し、得られた代表値を基準として用いて画像の画素値を補正することで、被写体が本来持つ画素値を再現することができる。なお、代表値としては、例えば、４個の同色のパッチＣ１、Ｃ６、Ｃ９、及びＣ１４の画素値を平均化した値が用いられてよい。
【００３４】
＜ケース２＞
図６は、重なりのある２つの線形区間が検出される場合を例示する図である。図６（ａ）の例では、画像において、弧を描く方向４０に向かって一定の割合で画素値を増加させる照明環境の変化が発生している。この場合、例えば、４個の同色のパッチ（例えば、カラーチャート１のＣ１、Ｃ６、Ｃ９、及びＣ１４）の画素値を、対称点３０を中心として反時計回りの順序に並べると、パッチの画素値は図６（ｂ）の変動を示す。そして、対称点３０を中心として時計回り、又は反時計回りに連続する３つのパッチにおいて、図６（ｂ）に示す様に画素値の線形な２つの変動が検出される。即ち、図６（ｂ）ではＣ１‐Ｃ１４‐Ｃ９へとおおよそ線形な画素値の減少が検出される。また、Ｃ１４‐Ｃ９‐Ｃ６へとおおよそ線形な画素値の減少が検出される。従って、図６（ｂ）の例において、制御部１０１は、Ｃ１‐Ｃ１４‐Ｃ９と、Ｃ１４‐Ｃ９‐Ｃ６の２本の線形区間を特定する。
【００３５】
また、線形区間の重なりについては、例えば、図６（ｂ）において、特定された２本の線形区間のうち１本目の線形区間：Ｃ１‐Ｃ１４‐Ｃ９の中間の点Ｃ１４は、２本目の線形区間：Ｃ１４‐Ｃ９‐Ｃ６に含まれている。また、同様に２本目の線形区間：Ｃ１４‐Ｃ９‐Ｃ６の中間の点Ｃ９は、１本目の線形区間：Ｃ１‐Ｃ１４‐Ｃ９に含まれている。従って、線形区間はＣ１４‐Ｃ９において重複している。このように、図６（ａ）に示す方向４０へ向かって徐々に増加するように画素値を変動させる照明環境の変化が画像に発生している場合、カラーチャート１の４個の同色のパッチの画素値から重複する２本の線形区間が検出される。なお、この場合、図６（ａ）に例示する画素値の変化では、パッチＣ１とパッチＣ６との間の画素値の差が大きく、現実的にはこのような形状の画素値の変動が照明環境の変化により生じることは特殊である。そのため、第１の実施例では、２本の線形区間が検出された場合にも、検出された２本の線形区間が重複する場合には、制御部１０１は、カラーチャート１の４個の同色のパッチの画素値が、シヌソイド関数に応じた画素値を有していないと判定してよい。また、この場合、制御部１０１は、例えば、画素値の補正を実行せずにエラー情報を出力することで、ユーザに再撮像を促してよい。
【００３６】
＜ケース３‐１＞
続いて、画像中の４個の同色のパッチのうちの一部のパッチに部分的照明環境変化５０が発生しているケース３−１を例示する。なお、部分的照明環境変化５０が画像に発生する場合の一例としては、カラーチャートを手に持った際の指などの影が一部のパッチ上に掛かる場合や、一部のパッチが光の反射により白飛びしてしまう場合などが挙げられる。
【００３７】
図７は、グラデーションによる画素値の変化において画素値が最も高くなる位置に、部分的照明環境変化５０が発生している場合を例示する図である。図７（ａ）では、画像において方向２０に向かって画素値が徐々に増加するようにグラデーションが生じている。また更に、図７（ａ）では、グラデーションによる画素値の変化において画素値が最も高くなる位置に存在するパッチＣ１において、部分的照明環境変化５０が発生している。なお、図７（ａ）において部分的照明環境変化５０は、Ｃ１と同色の他のパッチＣ６、Ｃ９、及びＣ１４にはかかっておらず、画素値に影響を及ぼしていない。この場合に、例えば、４個の同色のパッチ（例えば、カラーチャート１のＣ１、Ｃ６、Ｃ９、及びＣ１４）において対称点３０を中心として反時計回りにパッチの画素値を並べると、図７（ｂ）の画素値が検出される。ここで、パッチＣ１には部分的照明環境変化５０が発生しているため、画素値が下がっている。そのため、対称点３０の周りに時計回り、又は反時計回りに連続する３つのパッチにおいて、線形な画素値の変動が検出されず、線形区間は特定されない。従って、例えば、グラデーションによる画素値の変化において画素値が最も高くなるパッチに部分的照明環境変化５０が発生している場合、線形区間は特定されなくなる。なお、線形区間が特定されない場合、制御部１０１は、例えば、カラーチャート１の４個の同色のパッチのうち少なくともいずれかのパッチの画素値が、シヌソイド関数に応じた画素値を有していないと判定してよい。また、この場合、少なくともいずれかのパッチが、グラデーション以外の不均一な照明環境変化の影響を受けている。そのため、制御部１０１は、４個の同色のパッチの画素値のうち少なくともいずれかのパッチで、部分的照明環境変化５０が生じていることを検出できる。
【００３８】
＜ケース３‐２＞
続いて、画像中の４個の同色のパッチのうちの一部のパッチに部分的照明環境変化５０が発生しているケース３−２を例示する。なお、部分的照明環境変化５０が画像に発生する場合の一例としては、カラーチャートを手に持った際の指などの影が一部のパッチ上に掛かる場合や、一部のパッチが光の反射により白飛びしてしまう場合などが挙げられる。
【００３９】
図８は、グラデーションによる画素値の変化において画素値が最も低くなる位置に、部分的照明環境変化５０が発生している場合を例示する図である。図８（ａ）では、画像に方向２０に向かって画素値が徐々に増加するようにグラデーションが生じている。また更に、図８（ａ）では、グラデーションによる画素値の変化において画素値が最も低くなる位置に存在するパッチＣ９において、部分的照明環境変化５０が発生している。なお、図８（ａ）において部分的照明環境変化５０は、Ｃ９と同色の他のパッチＣ１、Ｃ６、及びＣ１４にはかかっておらず、画素値に影響を及ぼしていない。この場合に、例えば、４個の同色のパッチ（例えば、カラーチャート１のＣ１、Ｃ６、Ｃ９、及びＣ１４）において対称点３０を中心として反時計回りに順に画素値を並べると、図８（ｂ）の画素値が検出される。ここで、パッチＣ９には部分的照明環境変化５０が生じているため、画素値が下がっている。そのため、対称点３０の周りに時計回り、又は反時計回りに連続する３つのパッチにおいて、線形な画素値の変動が検出されず、線形区間は特定されない。従って、例えば、グラデーションによる画素値の変化において画素値が最も低くなるパッチに部分的照明環境変化５０が発生している場合、線形区間は特定されなくなる。
【００４０】
＜ケース３‐３＞
続いて、画像中の４個の同色のパッチのうちの一部のパッチに部分的照明環境変化５０が発生しているケース３−３を例示する。なお、部分的照明環境変化５０が画像に発生する場合の一例としては、カラーチャートを手に持った際の指などの影が一部のパッチ上に掛かる場合や、一部のパッチが光の反射により白飛びしてしまう場合などが挙げられる。
【００４１】
図９は、グラデーションによる画素値の変化において画素値が中間の値を有するパッチの位置に部分的照明環境変化５０が生じている場合を例示する図である。図９（ａ）では、画像に方向２０に向かって画素値が徐々に増加するようにグラデーションが生じている。また更に、図９（ａ）では、グラデーションによる画素値の変化では画素値が中間の値を有する位置に存在するパッチＣ６において部分的照明環境変化５０が生じている。なお、図９（ａ）において、部分的照明環境変化５０は、Ｃ６と同色の他のパッチＣ１、Ｃ９、及びＣ１４にはかかっておらず画素値に影響を及ぼしていない。この場合、例えば、４個の同色のパッチ（例えば、カラーチャート１のＣ１、Ｃ６、Ｃ９、及びＣ１４）において対称点３０を中心として反時計回りに順に画素値を並べると、図９（ｂ）の画素値が検出される。そして、例えば、反時計回りに連続する３つのパッチＣ１‐Ｃ１４‐Ｃ９において画素値が線形に変化する１本の線形区間が特定される。一方、パッチＣ６には部分的照明環境変化５０が生じているため、画素値が下がっており、例えば、図５（ｂ）では特定されたＣ９‐Ｃ６‐Ｃ１の線形区間は特定されない。従って、例えば、グラデーションによる画素値の変化において中間の値を有するパッチに部分的照明環境変化５０が発生している場合、１本の線形区間が特定される。この場合、制御部１０１は、例えば、特定された１本の線形区間に含まれる３個のパッチの画素値はシヌソイド関数に応じた画素値となるパッチであると判定してよい。また、この場合、１本の線形区間に含まれる３個のパッチはグラデーション以外の不均一な照明環境変化の影響を受けていない。そのため、制御部１０１は、１本の線形区間に含まれる３個のパッチには、部分的照明環境変化５０が発生していないと判定してよい。また、制御部１０１は、例えば、特定された１本の線形区間に含まれなかったパッチのＣ６が、シヌソイド関数に応じた画素値となるパッチではないと判定してよく、パッチＣ６に部分的照明環境変化５０が生じていると判定してよい。
【００４２】
＜ケース４＞
図１０は、グラデーションによる画素値の変化に加えて、同色のパッチのうちの複数のパッチに部分的照明環境変化５０が生じている場合を例示する図である。図１０（ａ）では、画像に方向２０に向かって画素値が徐々に増加するようにグラデーションが生じている。また更に、図１０（ａ）では、同色のパッチのうちの複数のパッチ（例えば、Ｃ６及びＣ１４）において部分的照明環境変化５０が生じている。この場合、例えば、４個の同色のパッチ（例えば、カラーチャート１のＣ１、Ｃ６、Ｃ９、及びＣ１４）において対称点３０を中心として反時計回りに順に画素値を並べると、図１０（ｂ）の画素値が検出される。そして、Ｃ６及びＣ１４に部分的照明環境変化５０が生じているため、対称点３０の周りに時計回り、又は反時計回りに連続する３つのパッチにおいて線形な画素値の変化は検出されない。従って、例えば、４個の同色のパッチのうち、複数のパッチにおいて部分的照明環境変化５０が生じている場合、線形区間は特定されなくなる。
【００４３】
以上のケース１から４で説明したように、対称点３０から点対称に位置する２対の合計４個の同色のパッチの画素値が、対称点３０を中心として時計回りに、又は反時計回りに順に並べられたとする。この場合に、制御部１０１は、画素値の並びから特定される線形区間の本数から、部分的照明環境変化５０が画像中に発生していることを検出することができる。
【００４４】
例えば、制御部１０１は、４個の同色のパッチの画素値から２本の線形区間が特定されれば、ケース１又はケース２で述べたように、部分的照明環境変化５０は画像中に発生していないと判定できる。
【００４５】
また更に、制御部１０１は、検出された２本の線形区間が重複しているか否かを判定することで、ケース１で例示した直線的なグラデーションによる画素値の変化と、ケース２で例示した特殊な画素値の変化とを区別することができる。そして、線形区間が重複しておらず、ケース１で例示したグラデーションによる画素値の変化が生じている場合には、制御部１０１は、例えば、２本の線形区間に含まれる４個の同色のパッチの画素値を平均した値を基準として用いて、画素値の補正を行ってもよい。また、線形区間が重複しており、ケース２で例示した特殊な画素値の変化が生じている場合には、制御部１０１は、エラー情報を出力することで、ユーザに再撮像を促してよい。
【００４６】
一方、２対の合計４個の同色のパッチの画素値から２本の線形区間が特定されない場合には、制御部１０１は、４個の同色のパッチのうちの一部のパッチに部分的照明環境変化５０が発生していると判定できる。この場合には、例えば、これらの４個の同色のパッチの画素値を平均した値を基準として用いて画素値の補正を行ったとしても、部分的照明環境変化５０により一部のパッチの画素値が変化しているため、被写体が本来持つ画素値を再現できない恐れがある。そのため、４個の同色のパッチの画素値から２本の線形区間が特定されない場合には、制御部１０１は、エラー情報を出力することで、ユーザに再撮像を促してよい。これにより、例えば、ユーザは画素値の補正に成功する可能性の高い画像が撮像されるまで画像を撮りなおすことができ、結果として被写体が本来持つ画素値を再現することができる。
【００４７】
或いは、２対の合計４個の同色のパッチの画素値から１本の線形区間が特定される場合には、制御部１０１は、特定された１本の線形区間に含まれるパッチの画素値を代表する代表値を取得し、画素値の補正を実行してもよい。なお、代表値は、例えば以下のように取得されてよい。
【００４８】
例えば、１本の線形区間が特定される場合、特定された１本の線形区間に含まれる連続する３つのパッチのうちで中間の画素値を有するパッチは、図４（ｂ）に示すシヌソイド関数における振動の中心：βの画素値に近い値を有する。そのため、制御部１０１は検出された１本の線形区間に含まれる連続する３つのパッチのうちの中間のパッチの画素値を代表値として取得し、得られた代表値を基準に画素値の補正を行ってもよい。或いは、検出された１本の線形区間を構成するパッチの画素値のうち両端のパッチ（例えば、図９ではパッチＣ１とＣ９）は対を形成している。そのため、制御部１０１は、これらのパッチの画素値を平均した値を代表値として取得し、得られた代表値を基準に被写体の画素値の補正を行ってもよい。更に、別の例では、制御部１０１は、検出された１本の線形区間を構成するパッチのうちで最大の画素値を有するパッチ（例えば、図９ではＣ１）と、最小の画素値を有するパッチ（例えば、図９ではＣ９）との画素値の平均値を計算する。そして、制御部１０１は、得られた平均値と、中間の画素値を有するパッチ（例えば、図９ではＣ１４）の画素値との平均値を更に算出し代表値として用いてもよい。この様に、１本の線形区間が検出される場合には、検出された１本の線形区間に含まれていないパッチの画素値を除外して、制御部１０１は、１本の線形区間に含まれるパッチの画素値に基づいて代表値を取得し、画素値の補正を実行してよい。また、代表値は、例えば、図４（ｂ）に示すシヌソイド関数における振動の中心：βの画素値に近い値が得られるように、１本の線形区間に含まれるパッチの画素値に基づいてその他の手法で取得されてもよい。
【００４９】
続いて、線形区間の判定について例示する。第１の実施例に係る線形区間は、例えば、以下の判定により特定されてよい。例えば、カラーチャート１上に含まれる４個の同色のパッチのうちの１個をｉ番目のパッチとする。そして、ｉ番目のパッチから対称点３０を中心として時計回り、又は反時計回りに連続する３つのパッチの画素値をｐｉ、ｐｉ＋１、ｐｉ＋２とする。この場合に、制御部１０１は、この連続する３つのパッチの画素値にｐｉ≦ｐｉ＋１≦ｐｉ＋２、またはｐｉ≧ｐｉ＋１≧ｐｉ＋２の関係が成り立ち、且つ、以下の式Ａ１を満たす場合に、その３つ並んだパッチを線形区間として特定してよい。
【００５０】
ｐｉ＋１−ｔｈ＜（ｐｉ＋ｐｉ＋２）／２＜ｐｉ＋１＋ｔｈ      …式Ａ１
【００５１】
ここで、ｔｈは画素値の変動が線形であるか否かを判断するために設定される閾値である。なお、閾値ｔｈとしては、例えば、対称点３０の周りに連続する３つ並んだパッチの画素値にｐｉ≦ｐｉ＋１≦ｐｉ＋２、またはｐｉ≧ｐｉ＋１≧ｐｉ＋２の関係が成り立つ場合における差分｜ｐｉ−ｐｉ＋２｜の１０％や２０％の値が設定されてもよい。また、閾値ｔｈの値は、例えば、カラーチャート１を用いて画像を撮像する際に発生するグラデーションの強さがある程度推定できる場合には、評価環境などで決定した閾値を予め記憶部１０２に記憶して用いてもよい。
【００５２】
続いて、図１１及び図１２を参照して、第１の実施例に係る画素値補正処理を説明する。図１１は、第１の実施例に係るパッチグループ情報１１００を例示する図である。パッチグループ情報１１００は、例えば、グループ、パッチ数、及びパッチ識別子を含んでいる。グループは、カラーチャート１に配置されるパッチの４色（ａ、ｂ、ｃ、及びｄ）に対応するグループである。パッチ数は、各グループが含む同色のパッチの数を示す。パッチ識別子には、各グループが含む４個の同色のパッチに対して割り振られた識別子が登録される。また、図１１の例では、パッチ識別子には、対称点３０を中心として時計周りの並び順で各グループの４個のパッチが登録されている。例えば、グループａの場合には、Ｃ１、Ｃ６、Ｃ９、及びＣ１４の順でパッチが並んで登録されている。
【００５３】
図１２は、第１の実施例に係る画素値補正処理を例示する動作フロー図である。図１２の画素値補正処理の動作フローは、例えば、制御部１０１が記憶部１０２に格納されているプログラム１２０を読み出して実行することで実施される。一実施例においては、制御部１０１に画素値補正処理の実行指示が入力されると図１２の動作フローは開始する。
【００５４】
ステップ１２０１（以降、ステップを“Ｓ”と記載し、例えば、Ｓ１２０１と表記する）において、制御部１０１は、線形区間特定処理を実行する。
【００５５】
図１３は、第１の実施例に係る線形区間特定処理の動作フローを例示する図である。図１３の線形区間特定処理の動作フローは、例えば、制御部１０１が記憶部１０２に格納されているプログラム１２０を読み出して実行することで実施される。一実施例においては、図１２のＳ１２０１に進むと、図１３の線形区間特定処理は開始する。
【００５６】
Ｓ１３０１において、制御部１０１は、パラメータ：ｉの値をｉ＝１、及びパラメータ：ｌの値をｌ＝０に設定し、パラメータ：ｉ及びパラメータ：ｌを初期化する。Ｓ１３０２において制御部１０１は、パッチグループ情報１１００において同じグループに属するパッチの画素値を画像から取得する。例えば、パッチグループ情報１１００のグループａであれば、制御部１０１は、Ｃ１、Ｃ６、Ｃ９、及びＣ１４のパッチの画素値を取得する。なお、画像に写るカラーチャート１上のパッチからの画素値の取得は、様々な手法を用いて実施されてよい。例えば、カラーチャート１のパッチが配列された面に位置を示すマークが付されている場合には、制御部１０１は画像中のマークの位置を基に、カラーチャート１に含まれる各パッチの領域を特定し、パッチの画素値を取得してもよい。或いは別の実施例では、画像に写るカラーチャート１上のパッチからの画素値の取得は、特許文献６に示される手法を利用して実施されてよい。そして、制御部１０１は、取得されたパッチの画素値：ｐに対して、例えば、対称点３０を中心として時計回りにｉ番目から順に番号を割り振る。例えば、グループａのＣ１、Ｃ６、Ｃ９、及びＣ１４の画素値が取得された場合には、制御部１０１は、Ｃ１、Ｃ６、Ｃ９、及びＣ１４のパッチのそれぞれの画素値に対しｐ１、ｐ２、ｐ３、及びｐ４を割り振る。ここで、例えば、Ｃ１の画素値はｐ１、Ｃ６の画素値はｐ２、Ｃ９の画素値はｐ３、Ｃ１４の画素値はｐ４であってよい。
【００５７】
Ｓ１３０３において制御部１０１は、対称点３０を中心として時計回りに連続する同色の３つのパッチの画素値ｐｉ、ｐｉ＋１、ｐｉ＋２が線形区間であるか否かを判定する。制御部１０１は、例えば、上述のように画素値ｐｉ、ｐｉ＋１、ｐｉ＋２にｐｉ≦ｐｉ＋１≦ｐｉ＋２、またはｐｉ≧ｐｉ＋１≧ｐｉ＋２の関係が成り立ち、且つ、上述の式Ａ１を満たす場合に、その連続する同色の３つのパッチを線形区間として特定してよい。なお、Ｓ１３０３において、例えば、ｉ＋１及びｉ＋２の値が、パッチグループ情報１１００のパッチ数を超えている場合には、値は１に戻すものとする。即ち、例えば、ｉ＝４の場合に、ｉ＋１＝５、及びｉ＋２＝６は、パッチグループ情報１１００のグループ：ａのパッチ数：４を超えている。この場合には、ｉ＋１は１に戻し、ｉ＋２は２になる。従って、例えば、Ｓ１３０３においてｉ＝４の場合には、制御部１０１は、パッチ識別子がＣ１４、Ｃ１、Ｃ６のパッチの画素値ｐ４、ｐ１、及びｐ２に対して線形区間であるか否かを判定してよい。
【００５８】
線形区間でない場合（Ｓ１３０３がＮＯ）、フローはＳ１３０６へと進む。一方、線形区間である場合（Ｓ１３０３がＹＥＳ）、フローはＳ１３０４へと進む。Ｓ１３０４において制御部１０１は、特定された線形区間を記憶部１０２に記憶する。例えば、Ｓ１３０２においてＣ１、Ｃ６、Ｃ９、及びＣ１４の画素値がｐ１、ｐ２、ｐ３、及びｐ４として取得されており、また、画素値：ｐ１、ｐ２、ｐ３の連続において線形区間が特定されたとする。この場合に、線形区間であると特定された連続する３つのパッチＣ１‐Ｃ６‐Ｃ９が記憶部１０２に記憶されてよい。
【００５９】
Ｓ１３０５において制御部１０１は、パラメータ：ｌの値を１増加させる。なお、パラメータ：ｌは図１３の動作フローにおいては線形区間の本数をカウントするパラメータである。Ｓ１３０６において制御部１０１は、パラメータ：ｉの値を１増加させる。続いて、Ｓ１３０７において制御部１０１は、パラメータ：ｉの値が、パッチグループ情報１１００のパッチ数を超えたか否かを判定する。パラメータ：ｉの値が、パッチグループ情報１１００のパッチ数を超えていない場合（Ｓ１３０７がＮＯ）、フローはＳ１３０３へと戻り、制御部１０１は処理を繰り返す。即ち、例えば、Ｓ１３０３からＳ１３０７の処理では、繰り返しの度にｉが１増加し、制御部１０１は、ｐ１‐ｐ２‐ｐ３、ｐ２‐ｐ３‐ｐ４、ｐ３‐ｐ４‐ｐ１、ｐ４‐ｐ１‐ｐ２という組み合わせに対して線形区間であるか否かを判定する。そして、制御部１０１は、これらの組み合わせにおいて線形区間であると判定されたパッチを記憶部１０２に記憶し、また、線形区間の本数をパラメータ：ｌによりカウントする。Ｓ１３０７において、パラメータ：ｉの値が、パッチグループ情報１１００のパッチ数を超えている場合（Ｓ１３０７がＹＥＳ）、本動作フローは終了し、フローは図１２のＳ１２０２へと進む。
【００６０】
Ｓ１２０２において制御部１０１は、線形区間の数が２本であるか否か（即ち、パラメータ：ｌ＝２）を判定する。線形区間の数が２本である場合（Ｓ１２０２がＹＥＳ）、フローはＳ１２０３へと進む。Ｓ１２０３において制御部１０１は、２本の線形区間が重複しているか否かを判定する。例えば、制御部１０１は、Ｓ１３０４で記憶部１０２に線形区間として記憶されている連続する３つのパッチのうちの中間のパッチが、もう一方の線形区間の連続する３つのパッチに含まれている場合に線形区間が重複していると判定してよい。２本の線形区間が重複していない場合（Ｓ１２０３がＮＯ）、フローはＳ１２０４へと進む。なお、２本の線形区間が重複していない場合とは、例えば、図５を参照して例示したケース１であり、この場合、制御部１０１は、２本の重複しない線形区間が特定された４個の同色のパッチには、部分的照明環境変化５０が発生していないと判定できる。Ｓ１２０４において制御部１０１は、２本の重複しない線形区間が特定された４個の同色のパッチの画素値を代表する代表値を取得する。代表値は、例えば、４個の同色のパッチの画素値の相加平均及び加重平均などの平均値であってよい。Ｓ１２０５において制御部１０１は、取得された代表値を基準として用いて被写体の画素値の補正を実行する。なお、画素値の補正は、例えば、特許文献１に記載される手法を用いて実行されてよい。
【００６１】
一方、Ｓ１２０３において２本の線形区間が重複する場合（Ｓ１２０３がＹＥＳ）、フローはＳ１２０６へと進む。なお、２本の線形区間が重複する場合とは、例えば、図６を参照して例示したケース２の特殊な画素値の変化が生じている場合である。このケース２で述べたような特殊な画素値の変化が生じている場合、画像に画素値の補正を実行しても被写体が本来持つ画素値を再現できない可能性がある。そのため、Ｓ１２０６において制御部１０１は、エラー情報を出力し、本動作フローは終了する。なお、エラー情報の出力は、例えば、再撮像を促すメッセージ等を画像処理装置１００の表示画面に表示させることであってよい。
【００６２】
また、Ｓ１２０２において線形区間が２本では無い場合（Ｓ１２０２がＮＯ）、フローはＳ１２０７に進む。Ｓ１２０７において、制御部１０１は、線形区間の数が１本であるか否か（即ち、パラメータ：ｌ＝１）を判定する。線形区間の数が１本である場合（Ｓ１２０７がＹＥＳ）、フローはＳ１２０８へと進む。Ｓ１２０８において制御部１０１は、１本の線形区間に含まれる同色の３つのパッチの画素値を代表する代表値を取得する。
【００６３】
例えば、制御部１０１は、検出された１本の線形区間に含まれる連続する３つのパッチの中間のパッチの画素値を代表値としてよい。或いは、特定された１本の線形区間に含まれるパッチのうちで両端のパッチ（例えば、図９ではパッチＣ１とＣ９）は対を形成しているため、制御部１０１は、この両端のパッチの画素値の相加平均及び加重平均などの平均値を代表値として用いてもよい。続いて、Ｓ１２０５において制御部１０１は、取得された代表値を基準として用いて被写体の画素値の補正を実行し、本動作フローは終了する。以上で述べたように、１本の線形区間が検出される場合には、制御部１０１は、Ｓ１２０１の線形区間特定処理において特定された１本の線形区間に含まれていないパッチの画素値を除外して代表値を取得し、画素値の補正を実行してよい。これにより、部分的照明環境変化５０が発生しているパッチが画素値の補正において除外されるため、被写体が本来持つ画素値を再現することができる。
【００６４】
一方、Ｓ１２０７において線形区間の数が１本でない場合（Ｓ１２０７がＮＯ）、フローはＳ１２０６へと進む。Ｓ１２０６において制御部１０１は、エラー情報を出力し、本動作フローは終了する。なお、Ｓ１２０７においてＮＯと判定される場合は、例えば、図７、図８、図１０を参照して例示したケース３‐１、ケース３‐２、及びケース４の部分的照明環境変化５０が発生している場合である。この場合、例えば、部分的照明環境変化５０が発生しているパッチを含む４個の同色のパッチの画素値に基づいて画素値の補正を実行しても被写体が本来持つ画素値を再現できない恐れがある。そのため、制御部１０１は、Ｓ１２０６においてエラー情報を出力してよい。なお、エラー情報の出力は、例えば、再撮像を促すメッセージ等を画像処理装置１００の表示画面に表示させることであってよい。
【００６５】
以上で述べたように、第１の実施例によれば制御部１０１は、カラーチャート１上の４個の同色のパッチの画素値から特定された線形区間に基づいて、４個の同色のパッチのうちでシヌソイド関数に応じた画素値となるパッチを特定することができる。例えば、２本の重複しない線形区間が特定された場合には、４個の同色のパッチのすべてをシヌソイド関数に応じた画素値となるパッチとして特定できる。また、この場合、制御部１０１は、４個の同色のパッチのいずれにも部分的照明環境変化５０は発生していないと判定できる。そのため、制御部１０１は、４個の同色のパッチの画素値から代表値を取得し、得られた代表値を基準として用いて画素値の補正を実行することで、被写体が本来持つ画素値を再現することができる。
【００６６】
また、一方で、制御部１０１は、４個の同色のパッチの画素値から特定された線形区間に基づいて、４個の同色のパッチのいずれかに部分的照明環境変化５０が発生していることを検出することができる。例えば、制御部１０１は、１本の線形区間が特定された場合には、１本の線形区間に含まれる３個の同色のパッチをシヌソイド関数に応じた画素値となるパッチとして特定できる。また、制御部１０１は、４個の同色のパッチのうち、１本の線形区間に含まれていない残りの１個の同色のパッチにおいて部分的照明環境変化５０が発生していることを検出できる。そのため、制御部１０１は、部分的照明環境変化５０が発生しているパッチを、画素値の補正の際に除くことができる。そして、制御部１０１は、部分的照明環境変化５０が発生している場合にも、１本の線形区間に含まれる３個の同色のパッチの画素値から、代表値を取得し、得られた代表値を基準として用いて画素値の補正を実行することができる。従って、被写体が本来持つ画素値を再現することができる。
【００６７】
また、例えば、線形区間が特定されない場合には、制御部１０１は、いずれかのパッチに部分的照明環境変化５０が発生していることを検出できる。そのため、制御部１０１は、エラー情報を出力することでユーザに再撮影を促すことができ、それにより、ユーザは画素値の補正に成功する可能性の高い画像が撮像されるまで画像を撮りなおすことができる。結果として、ユーザは被写体が本来持つ画素値が再現された画像を取得することができる。上述のように、美容や健康の分野において、肌表面の画像を撮像し、例えば、肌の色、毛穴の大きさと数、シミの大きさや色の濃さなどの肌の状態を画像からデータ化して、それらのデータをもとに肌の状態を評価することが行われている。そして、例えば、このような場合に、被写体が本来持つ画素値が再現されていない画像を用いて肌の状態を評価してしまうと、誤った評価につながってしまう。そのため、例えば、ユーザが、画素値の補正に成功する可能性の高い画像が撮像されるまで画像を撮りなおすことができ、被写体が本来持つ画素値が再現された画像を取得できることは、肌の状態を評価する精度の向上につながるため好ましい。
【００６８】
なお、上記の例では、カラーチャート１が２対の合計４個の同色のパッチを含む場合を例に説明を行った。しかしながら、実施例はこれに限定されるものではなく、例えば、カラーチャートは、２対以上の同色のパッチを含んでいても良い。この場合、例えば、制御部１０１は、２対以上の同色のパッチのうちの対の一方の同色のパッチから、他方の同色のパッチまでの区間で連続する同色のパッチの画素値が、線形な変動を示すか否かを判定してよい。そして、制御部１０１は、対の一方の同色のパッチから、他方の同色のパッチまでの区間で線形な変動を示すと判定された場合には、その区間を線形区間として特定してよい。即ち、例えば、カラーチャートが３対の合計６個の同色のパッチを含むとする。この場合に、制御部１０１は、例えば、Ｓ１３０３において、被写体が写る領域５の周りに連続する４つのパッチにおいて画素値がおおよそ線形に増加又は減少する場合に、その連続する４つのパッチの区間を線形区間として特定してよい。
【００６９】
なお、上述の図１２の動作フローにおいて、Ｓ１２０１からＳ１２０３、Ｓ１２０６、及びＳ１２０７の処理では、画像処理装置１００の制御部１０１は、例えば、特定部１１１として機能する。また、Ｓ１２０４、Ｓ１２０５及びＳ１２０８の処理では、画像処理装置１００の制御部１０１は、例えば、補正部１１２として機能する。
【００７０】
また、図１３の動作フローにおいて、Ｓ１３０１からＳ１３０７までの処理では、画像処理装置１００の制御部１０１は、例えば、特定部１１１として機能する。
【００７１】
［第２の実施例］
続いて、図１４から図２１を参照し、第２の実施例を説明する。第２の実施例では、例えば、補正を行う対象となる領域の中心を対称点３０として、補正を行う対象となる領域の周りに対称点３０から点対称に配置される３対以上の同色のパッチを有するカラーチャート２を用いる場合の画素値補正処理を例示する。
【００７２】
なお、図１４から図１９では、第２の実施例に係る３対以上の同色のパッチを含むカラーチャート２のうちの１色の配置が例として示されている。例えば、図１４（ａ）、図１５、及び図１６（ａ）から図１９（ａ）は、カラーチャート２が３対の同色のパッチを含む場合の同色のパッチの配置を例示している。そして、カラーチャート２には、パッチ１〜パッチ６の６つの同色のパッチが、例えば、補正を行う対象である被写体が写る領域の中心を対称点３０として点対称の位置に配置されている。ここで、例えば、パッチ１とパッチ４、パッチ２とパッチ５、パッチ３とパッチ６は対称点３０に対して点対称の位置に配置されている対となるパッチである。また、図１４（ａ）、図１５、及び図１６（ａ）から図１９（ａ）の例では、パッチ１〜パッチ６は対称点３０の周りにおおよそ等間隔に配置されている。更に、図１４（ａ）、図１６（ａ）から図１９（ａ）に示す例では、パッチ１からパッチ４へと画素値が徐々に高くなるようにグラデーションが発生している。
【００７３】
また、図１４（ｂ）、図１６（ｂ）から図１９（ｂ）は、カラーチャート２が４対の同色のパッチを含む場合の同色のパッチの配置を例示している。そして、図１４（ｂ）、図１６（ｂ）から図１９（ｂ）では、パッチ１〜パッチ８の８つの同色のパッチが、例えば、補正を行う対象である被写体が写る領域の中心を対称点３０として点対称の位置に配置されている。ここで、例えば、パッチ１とパッチ５、パッチ２とパッチ６、パッチ３とパッチ７、パッチ４とパッチ８は対称点３０に対して点対称の位置に配置されている対となるパッチである。また、図１４（ｂ）、図１６（ｂ）から図１９（ｂ）の例では、パッチ１〜８は対称点３０の周りにおおよそ等間隔に配置されている。更に、図１４（ｂ）、図１６（ｂ）から図１９（ｂ）に示す例では、パッチ１からパッチ５へと画素値が徐々に高くなるようにグラデーションによる照明環境の変化が画像に発生している。そして、例えば、以上のような３対以上の同色のパッチを有するカラーチャート２を用いる第２の実施例では、線形区間は以下のように特定されてよい。
【００７４】
＜ケース５＞
ケース５は、図１４に示す様に、同色の複数のパッチのうちの一部のパッチの画素値に限定的に影響を及ぼす部分的照明環境変化５０は発生しておらず、グラデーションによる照明環境の変化が発生している場合の線形区間の特定を例示している。例えば、カラーチャート２に同色のパッチがｎ対で合計２ｎ個（ｎは３以上の整数）含まれている場合に、同色のパッチのうちの或るパッチをｉ番目とする。そして、ｉ番目のパッチから補正を行う対象である被写体が写る領域の周りに時計回りに連続する３つのパッチの画素値をｐｉ、ｐｉ＋１、ｐｉ＋２とする。この場合に、制御部１０１は、この連続する３つのパッチの画素値ｐｉ、ｐｉ＋１、ｐｉ＋２にｐｉ≦ｐｉ＋１≦ｐｉ＋２、またはｐｉ≧ｐｉ＋１≧ｐｉ＋２の関係が成り立ち、且つ、上記式Ａ１を満たすか否かを判定する。そして、連続する３つのパッチの画素値にｐｉ≦ｐｉ＋１≦ｐｉ＋２、またはｐｉ≧ｐｉ＋１≧ｐｉ＋２の関係が成り立ち、且つ、上記式Ａ１を満たす場合に、制御部１０１は、その連続する３つのパッチに部分的な線形性が有りと判定する。この判定を、カラーチャート２上の同色の２ｎ個のすべてのパッチをｉ番目のパッチとして実行し、制御部１０１は、同色の２ｎ個のパッチに含まれる部分的な線形性を取得する。
【００７５】
例えば、図１４（ａ）では、カラーチャート２は、２ｎ＝６個（ｎ＝３対）でパッチ１〜パッチ６の６個の同色のパッチを含んでいる。この場合に、図１４（ａ）に矢印１４で示すように、パッチ１‐２‐３、パッチ２‐３‐４、パッチ４‐５‐６、及びパッチ５‐６‐１の４組の部分的な線形性が検出される。
【００７６】
制御部１０１は、この検出された部分的な線形性において、例えばｐｉとｐｉ＋１の画素値の大小関係を比較し、部分的な線形性の変動の方向がｐｉからｐｉ＋1にかけて増加しているか、又は減少しているかを特定する。そして、制御部１０１は、対称点３０の周りに連続する（ｎ＋１）個の同色のパッチで構成される区間で、変動の方向が同じである部分的な線形性が連続している場合に、その連続する（ｎ＋１）個の同色のパッチで構成される区間を線形区間として特定する。従って、第２の実施例では、線形区間は変動の方向が同じである複数の部分的な線形性を含んでいるが、線形区間の全体に渡って画素値が線形に変動をしていなくてもよい。図１４（ａ）では、ｎ＝３であるため、ｎ＋１は４である。また、部分的な線形性は、対称点３０の周りに連続する３点で構成されている。そのため、変動の方向が同じである部分的な線形性が２組連続している場合に、制御部１０１は、その部分的な線形性が２組連続している区間を線形区間として特定してよい。なお、部分的な線形性が対称点３０の周りに連続する３点で構成される場合、制御部１０１は、変動の方向が同じである部分的な線形性が（ｎ−１）組連続する場合に、その（ｎ−１）組の部分的な線形性が連続する区間を線形区間として特定してよい。
【００７７】
例えば、図１４（ａ）では、検出された部分的な線形性のうち、パッチ１‐２‐３と、パッチ２‐３‐４はカラーチャート２において時計回りに連続して存在している。また、部分的な線形性の変動の方向も、パッチ１‐２‐３と、パッチ２‐３‐４はいずれも増加であり一致している。そのため、制御部１０１は、この２組の部分的な線形性が連続する区間：パッチ１‐２‐３‐４を線形区間として特定してよい。なお、この線形区間はｎ＋１点（即ち、４点）のパッチを含んでいる。
【００７８】
同様に、検出された部分的な線形性のうち、パッチ４‐５‐６とパッチ５‐６‐１とはカラーチャート２において時計回りに連続して存在している。また、部分的な線形性の変動の方向も、パッチ４‐５‐６と、５‐６‐１とはいずれも減少であり一致している。そのため、制御部１０１は、この２組の部分的な線形性が連続する区間：パッチ４‐５‐６‐１を線形区間として特定してよい。従って、図１４（ａ）では、制御部１０１は、２本の線形区間を特定してよい。
【００７９】
また、図１４（ｂ）は、カラーチャート２に同色のパッチが２ｎ＝８個（ｎ＝４対）含まれている場合を例示している。そのため、ｎ＋１は５である。また、部分的な線形性は、対称点３０の周りに連続する３点の同色のパッチを含む。そのため、変動の方向が同じである部分的な線形性が３組連続している場合に、制御部１０１はその区間を線形区間として特定してよい。
【００８０】
例えば、図１４（ｂ）では、パッチ１‐２‐３、パッチ２‐３‐４、パッチ３‐４‐５において３組の連続する部分的な線形性が連続している。また、これらの部分的な線形性ではいずれもｐｉからｐｉ＋１へと向かって画素値が増加しており、画素値の変動の方向も一致している。従って、制御部１０１は、この３組の部分的な線形性が連続する区間：パッチ１‐２‐３‐４‐５を線形区間として特定してよい。同様に、図１４（ｂ）には、パッチ５‐６‐７、パッチ６‐７‐８、及びパッチ７‐８‐１において画素値の変動の方向が減少で一致している３組の連続する部分的な線形性がある。そのため、制御部１０１は、この３組の部分的な線形性が連続する区間：パッチ５‐６‐７‐８‐１を線形区間として特定してよい。従って、図１４（ｂ）では、制御部１０１は２本の線形区間を特定してよい。
【００８１】
続いて、線形区間の重なりについて説明する。例えば、図１４（ａ）で特定された２本の線形区間の両端のパッチではなく、線形区間の中間の点である４個のパッチ（パッチ２、パッチ３、パッチ５、及びパッチ６）は、別の検出された線形区間では用いられていない。この様に、例えば、特定された線形区間の中間の点となるパッチが、別の線形区間において用いられていない場合に、制御部１０１は線形区間が重複していないと判定してよい。一方、線形区間の中間の点となるパッチが、別の線形区間において用いられている場合には、制御部１０１は線形区間が重複していると判定してよい。
【００８２】
また、第２の実施例では線形区間は、対称点３０の周りに連続する同色のｎ＋１個のパッチを含んでおり、カラーチャート２において対となる２個のパッチの間の区間（例えば、図１４（ａ）ではパッチ１からパッチ４までの区間）に対応している。そのため、線形区間は、例えば、図４（ｂ）のシヌソイド曲線において角度：πの幅を持ち、上述のシヌソイド曲線の減少区間又は増加区間に対応している。従って、重複しない線形区間が特定される場合、その線形区間に含まれるパッチの画素値は、シヌソイド関数に応じた画素値を有しているとみなしてよい。また更に、２本の線形区間が特定される場合、２ｎ個の同色のパッチのすべてがいずれかの線形区間に属している。そのため、２本の線形区間が特定される場合、２ｎ個の同色のパッチのいずれにも部分的照明環境変化５０は発生していない。従って、制御部１０１は、例えば、２ｎ個の同色のパッチの画素値を代表する代表値を取得し、得られた代表値を基準として用いて画像の画素値を補正することで、被写体が本来持つ画素値を再現することができる。なお、代表値としては、例えば、２ｎ個の同色のパッチの画素値を平均化した値が用いられてよい。
【００８３】
＜ケース６＞
ケース６は、重なりのある２本以上の線形区間が特定される場合を例示している。図１５は、重なりのある２本以上の線形区間が特定される場合を例示する図であり、方向４０へ向かって徐々に増加するように画素値を変動させる照明環境の変化が画像に発生している。この場合に、図１５に矢印１４で示すように、パッチ１‐２‐３、パッチ２‐３‐４、パッチ３‐４‐５、及びパッチ４‐５‐６の４組の部分的な線形性が検出される。また、これらの部分的な線形性ではいずれもｐｉからｐｉ＋１へ向かって画素値が減少しており、画素値の変動の方向も一致している。また、ｎ＝３であるため、制御部１０１は、画素値の変動の方向が一致する部分的な線形性が２組連続している区間で線形区間を特定してよい。従って、図１５では、制御部１０１は、区間：パッチ１‐２‐３‐４、区間：パッチ２‐３‐４‐５、区間：パッチ３‐４‐５‐６において３本の線形区間を特定する。
【００８４】
一方で、これらの３本の線形区間のうちのいずれかの線形区間において中間の点となるパッチ（パッチ２、パッチ３、パッチ４、及びパッチ５）は、検出された別の線形区間で用いられている。そのため、制御部１０１は線形区間が重複すると判定してよい。なお、このように重複する２本以上の線形区間が２ｎ個の同色のパッチの画素値から検出される場合、例えば、図１５のパッチ１とパッチ６との間のように画素値の差が大きい部分があり、現実的にはこのような形状の画素値の変化が生じることは特殊である。そのため、第２の実施例では、２本以上の重複する線形区間が特定された場合には、制御部１０１は、例えば、画素値の補正を実行せずに、エラー情報を出力することで、ユーザに再撮像を促してよい。
【００８５】
＜ケース７‐１＞
続いて、画像中の同色の複数のパッチのうちの一部のパッチに、部分的照明環境変化５０が発生しているケース７−１における線形区間の特定について例示する。
【００８６】
図１６は、グラデーションによる画素値の変化において画素値が最も高くなる位置に、部分的照明環境変化５０が生じている場合を例示する図である。図１６（ａ）では、カラーチャート２は同色のパッチを２ｎ＝６個（ｎ＝３対）含んでいる。ｎ＝３であるため、制御部１０１は、画素値の変動の方向が一致する部分的な線形性が２組連続している区間で線形区間を特定してよい。しかしながら、パッチ４に部分的照明環境変化５０が発生しているため、画素値が下がっており、図１４（ａ）では検出されたパッチ２‐３‐４及びパッチ４‐５‐６の部分的な線形性が、図１６（ａ）では検出されない。そのため、図１６（ａ）では、画素値の変動の方向が一致する部分的な線形性が２組連続して検出されず、線形区間は特定されない。
【００８７】
また、図１６（ｂ）では、カラーチャート２は同色のパッチを２ｎ＝８個（ｎ＝４対）含んでいる。ｎ＝４であるため、制御部１０１は、画素値の変動の方向が一致する部分的な線形性が３組連続している区間で線形区間を特定してよい。しかしながら、パッチ５に部分的照明環境変化５０が発生しているため、画素値が下がっており、図１４（ｂ）では検出されたパッチ３‐４‐５及びパッチ５‐６‐７の部分的な線形性が、図１６（ｂ）では検出されない。そのため、図１６（ｂ）では、画素値の変動の方向が一致する部分的な線形性が３組連続して検出されず、線形区間は特定されない。
【００８８】
＜ケース７‐２＞
続いて、画像中の同色の複数のパッチのうちの一部のパッチに、部分的照明環境変化５０が発生しているケース７−２における線形区間の特定について例示する。
【００８９】
図１７は、グラデーションによる画素値の変化において画素値が最も低くなる位置に、部分的照明環境変化５０が生じている場合を例示する図である。図１７（ａ）では、カラーチャート２は同色のパッチを２ｎ＝６個（ｎ＝３対）含んでいる。ｎ＝３であるため、制御部１０１は、画素値の変動の方向が一致する部分的な線形性が２組連続している区間で線形区間を特定してよい。しかしながら、パッチ１に部分的照明環境変化５０が発生しているため、画素値が下がっており、図１４（ａ）では検出されたパッチ１‐２‐３及びパッチ５‐６‐１の部分的な線形性が、図１７（ａ）では検出されない。そのため、図１７（ａ）では、画素値の変動の方向が一致する部分的な線形性が２組連続して検出されず、線形区間は特定されない。
【００９０】
また、図１７（ｂ）では、カラーチャート２は同色のパッチを２ｎ＝８個（ｎ＝４対）含んでいる。ｎ＝４であるため、制御部１０１は、画素値の変動の方向が一致する部分的な線形性が３組連続している区間で線形区間を特定してよい。しかしながら、パッチ１に部分的照明環境変化５０が発生しているため、画素値が下がっており、図１４（ｂ）では検出されたパッチ１‐２‐３及びパッチ７‐８‐１の部分的な線形性が、図１７（ｂ）では検出されない。そのため、図１７（ｂ）では、画素値の変動の方向が一致する部分的な線形性が３組連続して検出されず、線形区間は特定されない。
【００９１】
＜ケース７‐３＞
続いて、画像中の同色の複数のパッチのうちの一部のパッチに、部分的照明環境変化５０が発生しているケース７−３における線形区間の特定について例示する。
図１８は、グラデーションによる画素値の変化において中間の画素値を有するパッチに部分的照明環境変化５０が発生している場合を例示する図である。図１８（ａ）では、カラーチャート２は同色のパッチを２ｎ＝６個（ｎ＝３対）含んでいる。ｎ＝３であるため、制御部１０１は、画素値の変動の方向が一致する部分的な線形性が２組連続している区間で線形区間を特定してよい。図１８（ａ）では、パッチ４‐５‐６、及びパッチ５‐６‐１において画素値の変動の方向が一致する部分的な線形性が２組の連続している。そのため、制御部１０１は、これらの２組の部分的な線形性の区間：パッチ４‐５‐６‐１において、線形区間を特定してよい。一方、パッチ３に部分的照明環境変化５０が発生しており、画素値が下がっているため、図１４（ａ）では検出されたパッチ１‐２‐３及びパッチ２‐３‐４の部分的な線形性が図１８（ａ）では検出されない。そのため、図１８（ａ）では制御部１０１は１本の線形区間を特定してよい。
【００９２】
また、図１８（ｂ）では、カラーチャート２は同色のパッチを２ｎ＝８個（ｎ＝４対）含んでいる。ｎは４であるため、制御部１０１は、画素値の変動の方向が一致する部分的な線形性が３組連続している区間で線形区間を特定してよい。図１８（ｂ）では、パッチ５‐６‐７、パッチ６‐７‐８、及びパッチ７‐８‐１において画素値の変動の方向が一致する部分的な線形性が３組連続している。そのため、制御部１０１は、これらの３組の部分的な線形性の区間：パッチ５‐６‐７‐８‐１において、線形区間を特定してよい。一方、パッチ３に部分的照明環境変化５０が発生しており、画素値が下がっているため、図１４（ｂ）では検出されたパッチ１‐２‐３、パッチ２‐３‐４、及びパッチ３‐４‐５の部分的な線形性が図１８（ｂ）では検出されない。そのため、図１８（ｂ）では制御部１０１は１本の線形区間を特定してよい。
【００９３】
＜ケース８＞
図１９は、グラデーションによる画素値の変化に加えて、同色のパッチのうちの２個以上のパッチに部分的照明環境変化５０が発生している場合を例示する図である。図１９（ａ）では、カラーチャート２は同色のパッチを２ｎ＝６個（ｎ＝３対）含んでいる。ｎ＝３であるため、制御部１０１は、画素値の変動の方向が一致する部分的な線形性が２組連続している区間で線形区間を特定してよい。しかしながら、図１９（ａ）に示す２つの例では、画素値の変動の方向が一致する部分的な線形性が２組連続して検出されないため、制御部１０１は線形区間がないと判定してよい。なお、別な例として、部分的照明環境変化５０がパッチ２とパッチ３に生じている場合には、パッチ４‐５‐６‐１の区間において１本の線形区間が特定されてよい。
【００９４】
また、図１９（ｂ）では、カラーチャート２は同色のパッチを２ｎ＝８個（ｎ＝４対）含んでいる。ｎ＝４であるため、制御部１０１は、画素値の変動の方向が一致する部分的な線形性が３組連続している区間で線形区間を特定してよい。しかしながら、図１９（ｂ）に示す２つの例では、画素値の変動の方向が一致する部分的な線形性が３組連続して検出されないため、制御部１０１は線形区間がないと判定してよい。なお、別な例として、部分的照明環境変化５０がパッチ２、及びパッチ４に発生している場合には、パッチ５‐６‐７‐８‐１の区間において１本の線形区間が特定されてよい。
【００９５】
以上のケース５から８で説明したように、カラーチャート２がｎ対の合計２ｎ個の同色のパッチを含む場合にも、制御部１０１は線形区間を特定することができる。そして、制御部１０１は、特定された線形区間の本数から、例えば、部分的照明環境変化５０が画像中に発生していることを検出することができる。また、制御部１０１は、検出された線形区間の重複からケース６で述べた特殊な画素値の変化が発生していることを検出してよい。
【００９６】
図２０は、第２の実施例に係るパッチグループ情報２０００を例示する図である。パッチグループ情報２０００は、例えば、グループ、パッチ数、及びパッチ識別子を含んでいる。グループは、カラーチャート２に配置された各色に対応するグループである。例えば、カラーチャート２に５色のパッチが配置される場合には、５つのグループがパッチグループ情報２０００に登録されてよい。パッチ数は、各グループが含む同色のパッチの数を示し、２ｎ個の同色のパッチをカラーチャート２は含んでいる。パッチ識別子には、各グループが含む同色の２ｎ個のパッチに対して割り振られた識別子が登録されている。また、パッチ識別子には、例えば、補正を行う対象である被写体が写る領域の周りに時計周りの順番で、カラーチャート２の同じグループに属する同色の２ｎ個のパッチの識別子が登録されていてよい。例えば、グループａでは、ａ１、ａ２、…ａ２ｎの順でパッチが並んで登録されており、これは、カラーチャート２において補正を行う対象である被写体が写る領域の周りに時計周りにａ１、ａ２、…ａ２ｎの順番でパッチが並んでいることを示していてよい。
【００９７】
続いて、第２の実施例に係る画素値補正処理を説明する。第２の実施例において、例えば、制御部１０１に画素値補正処理の実行指示が入力された場合、制御部１０１は、図１２に示す画素値補正処理の動作フローを開始してよい。
【００９８】
Ｓ１２０１において制御部１０１は線形区間特定処理を実行する。なお、第２の実施例においては、制御部１０１は、図２１の線形区間特定処理の動作フローを実行してよい。
【００９９】
図２１は、第２の実施例に係る線形区間特定処理の動作フローを例示する図である。図２１の線形区間特定処理の動作フローは、例えば、制御部１０１が記憶部１０２に格納されているプログラム１２０を読み出して実行することで実施される。一実施例においては、図１２のＳ１２０１に進むと、図２１の線形区間特定処理は開始する。
【０１００】
Ｓ２１０１において、制御部１０１は、パラメータ：ｉ、ｊ、ｋ、及びｌの値をｉ＝１、ｊ＝１、ｋ＝０、及びｌ＝０にそれぞれお設定し、パラメータ：ｉ、ｊ、ｋ、及びｌを初期化する。Ｓ２１０２において制御部１０１は、パッチグループ情報２０００において同じグループに属するパッチの画素値を画像から取得する。例えば、パッチグループ情報２０００のグループａであれば、制御部１０１は、ａ１、ａ２、…ａ２ｎのパッチの画素値を取得する。なお、画像に写るカラーチャート２上のパッチからの画素値の取得は、様々な手法を用いて実施されてよい。例えば、カラーチャート２のパッチが配列された面に位置を示すマークが付されている場合には、制御部１０１は、画像中のマークの位置を基に、カラーチャート２に含まれる各パッチの領域を特定し、パッチの画素値を取得してもよい。或いは別の実施例では、画像に写るカラーチャート２上のパッチからの画素値の取得は、特許文献６に示される手法を利用して実施されてよい。そして、制御部１０１は、カラーチャート２の対称点３０を中心として時計回りに取得されたパッチの画素値：ｐに、ｉ番目から順に番号を割り振る。例えば、ａ１、ａ２、…ａ２ｎの画素値が取得された場合には、制御部１０１は、ａ１、ａ２、…ａ２ｎのそれぞれのパッチの画素値に対しｐ１、ｐ２、…及びｐ２ｎを割り振る。ここで、例えば、パッチａ１の画素値はｐ１、ａ２の画素値はｐ２、…、ａ２ｎの画素値はｐ２ｎであってよい。
【０１０１】
Ｓ２１０３において制御部１０１は、補正を行う対象である被写体が写る領域の中心を対称点３０として、対称点３０の周りに例えば時計回りに連続する同色の３つのパッチの画素値ｐｉ、ｐｉ＋１、ｐｉ＋２に部分的な線形性があるか否かを判定する。制御部１０１は、例えば、画素値ｐｉ、ｐｉ＋１、ｐｉ＋２にｐｉ≦ｐｉ＋１≦ｐｉ＋２、またはｐｉ≧ｐｉ＋１≧ｐｉ＋２の関係が成り立ち、且つ、上述の式Ａ１を満たす場合に、部分的な線形性があると判定してよい。なお、例えば、ｉ＋１及びｉ＋２の値がパッチグループ情報２０００のパッチ数を超えている場合には、値は１に戻すものとする。即ち、例えば、制御部１０１は、ｉ＝２ｎの場合に、ｉ＋１＝２ｎ＋１、及びｉ＋２＝２ｎ＋２は、パッチグループ情報２０００のグループ：ａのパッチ数：２ｎを超えている。この場合には、ｉ＋１は１に戻し、ｉ＋２は２になる。即ち、制御部１０１は、例えば、Ｓ２１０３においてｉ＝２ｎの場合には、パッチ識別子ａ２ｎ、ａ１、及びａ２のパッチの画素値ｐ２ｎ、ｐ１、及びｐ２に対して部分的な線形性があるか否かを判定する。
【０１０２】
部分的な線形性がない場合（Ｓ２１０３がＮＯ）、フローはＳ２１０４へと進む。Ｓ２１０４において制御部１０１は、パラメータ：ｊの値を０に設定する。Ｓ２１０５において制御部１０１は、パラメータ：ｉの値を１増加させる。Ｓ２１０６において制御部１０１は、パラメータ：ｉの値が、パッチグループ情報２０００のパッチ数：２ｎと一致するか否かを判定する。パラメータ：ｉの値がパッチグループ情報２０００のパッチ数：２ｎでない場合（Ｓ２１０６がＮＯ）、フローはＳ２１０３へと戻る。一方、パラメータ：ｉの値がパッチグループ情報２０００のパッチ数：２ｎと一致する場合（Ｓ２１０６がＹＥＳ）、本動作フローは終了し、フローは図１２のＳ１２０２へと進む。
【０１０３】
一方、Ｓ２１０３において部分的な線形性がある場合（Ｓ２１０３がＹＥＳ）、フローはＳ２１０７へと進む。Ｓ２１０７において制御部１０１は、パラメータ：ｊの値が０であるか否かを判定する。パラメータ：ｊの値が０である場合（Ｓ２１０７がＹＥＳ）、フローはＳ２１０８へと進む。Ｓ２１０８において制御部１０１は、画素値：ｐｉが画素値：ｐｉ＋１よりも大きいか否かを判定する。画素値：ｐｉが画素値：ｐｉ＋１よりも大きい場合（Ｓ２１０８がＹＥＳ）、フローはＳ２１０９へと進み、制御部１０１は、ｋ＝０に設定し、フローはＳ２１１１へと進む。一方、画素値：ｐｉが画素値：ｐｉ＋１以下である場合（Ｓ２１０８がＮＯ）、フローはＳ２１１０へと進み、制御部１０１は、ｋ＝１に設定し、フローはＳ２１１１へと進む。ここで、パラメータｋの値は、０であればＳ２１０３で検出された部分的な線形性において画素値の変動の方向が減少であることを示している。また、パラメータｋの値が１であれば、Ｓ２１０３で検出された部分的な線形性において画素値の変動の方向が増加であることを示している。Ｓ２１１１において制御部１０１は、パラメータ：ｊの値を１増加させ、フローはＳ２１０５へと進む。なお、パラメータ：ｊは図２１の動作フローでは、例えば、画素値の変動の方向が同じである部分的な線形性が連続する数をカウントするパラメータとして用いられている。
【０１０４】
また、Ｓ２１０７においてパラメータ：ｊの値が０でない場合（Ｓ２１０７がＮＯ）、フローはＳ２１１２へと進む。Ｓ２１１２において制御部１０１は、画素値：ｐｉが画素値：ｐｉ＋１よりも大きいか否かを判定する。画素値：ｐｉが画素値：ｐｉ＋１よりも大きい場合（Ｓ２１１２がＹＥＳ）、フローはＳ２１１３へと進む。Ｓ２１１３において制御部１０１はパラメータ：ｋの値が０か否かを判定する。パラメータ：ｋの値が０でない場合（Ｓ２１１３がＮＯ）、フローはＳ２１０４へと戻る。一方、パラメータ：ｋの値が０である場合（Ｓ２１１３がＹＥＳ）、フローはＳ２１１５へと進む。
【０１０５】
また、Ｓ２１１２において画素値：ｐｉが画素値：ｐｉ＋１以下である場合（Ｓ２１１２がＮＯ）、フローはＳ２１１４へと進む。Ｓ２１１４において制御部１０１はパラメータ：ｋの値が１か否かを判定する。パラメータ：ｋの値が１でない場合（Ｓ２１１４がＮＯ）、フローはＳ２１０４へと戻る。一方、パラメータ：ｋの値が１である場合（Ｓ２１１４がＹＥＳ）、フローはＳ２１１５へと進む。Ｓ２１１５において制御部１０１は、パラメータ：ｊの値を１増加させ、フローはＳ２１１６へと進む。Ｓ２１１６において制御部１０１は、パラメータ：ｊの値がｎ−１であるか否かを判定する。パラメータ：ｊの値がｎ−１でない場合（Ｓ２１１６がＮＯ）、フローはＳ２１０５へと進む。一方、パラメータ：ｊの値がｎ−１である場合（Ｓ２１１６がＹＥＳ）、フローはＳ２１１７へと進む。なお、パラメータ：ｊの値がｎ−１である場合、ｐｉとｐｉ＋２の画素値の大小関係が同じである部分的な線形性が（ｎ−１）組連続して検出されたことを示している。部分的な線形性が３点の連続するパッチで構成される場合、部分的な線形性が（ｎ−１）組連続する区間には、ｎ＋１個のパッチが含まれており、これはカラーチャート２において対となる２個のパッチの間の区間に対応している。従って、Ｓ２１１７において、制御部１０１は、部分的な線形性が（ｎ−１）組連続して検出された区間を、線形区間として特定してよい。なお、Ｓ２１０３において部分的な線形性を検出する長さとして、例えば、４点及び５点などの３点以上の長さを用いる場合には、ｎ＋１個のパッチの区間に含まれる連続する部分的な線形性の数が変わる。そのため、Ｓ２１１６の判定に用いる値は、部分的な線形性の長さに応じてｎ−１から変更されてよい。また、別の例では、Ｓ２１１６の判定において、制御部１０１は、例えば、ｊ個の連続する部分的な線形性に含まれるパッチの数が、ｎ＋１個であるか否かを判定してよい。
【０１０６】
Ｓ２１１７において制御部１０１は、パラメータ：ｌの値を１増加させ、パラメータ：ｊの値を０に設定する。続いて、Ｓ２１１８において制御部１０１は、パッチの線形区間を記憶し、フローはＳ２１０５へと戻る。例えば、制御部１０１は、ｊ＝１からｊ＝ｎ−１においてＳ２１０３で部分的な線形性がありと判定された（ｎ−１）組の部分的な線形性に含まれるパッチを、線形区間として記憶部１０２に記憶してよい。
【０１０７】
以上で述べたように、図２１の動作フローにおいて、制御部１０１は、例えば、カラーチャート２上に含まれる同色の２ｎ個のパッチから、補正を行う対象である被写体が写る領域の周りに時計回りに３つ連続するパッチを選択する。なお、ここで選択される３つ連続するパッチは、Ｓ２１０５でｉの値が１増加する度に、例えば、時計回りに１つずつずれてゆく。そして、制御部１０１は、選択された３つ連続するパッチに部分的な線形性が有るか否かを判定する（Ｓ２１０３）。部分的な線形性がある場合には、Ｓ２１０７からＳ２１１１の処理において、制御部１０１は、検出された部分的な線形性における画素値の変動の方向をｋの値として取得する。そして、Ｓ２１１２からＳ２１１６の処理において、制御部１０１は、ｋの値として取得された画素値の変動の方向が、ｉの値を１増加して検出された次の部分的な線形性において一致しているか否かを判定する。そして、画素値の変動の方向が、次の部分的な線形性において一致している場合に、制御部１０１はｊの値を１増加させる。この処理を繰り返すことにより、制御部１０１は、画素値の変動の方向が同じである部分的な線形性が連続する数を、パラメータ：ｊの値としてカウントする（Ｓ２１１１及びＳ２１１５）。そして、画素値の変動の方向が同じである部分的な線形性が、（ｎ−１）組連続する場合に、制御部１０１は、その（ｎ−１）組の部分的な線形性が連続する区間を線形区間として特定し、線形区間の本数をｌの値でカウントする（Ｓ２１１７）。また、制御部１０１は特定された線形区間に含まれるパッチを記憶部１０２に記憶する（Ｓ２１１８）。
【０１０８】
従って、制御部１０１は、カラーチャート２が対称点３０から点対称に位置する３対以上の同色のパッチを有する場合にも、図２１の第２の実施例に係る線形区間特定処理により線形区間を特定し、線形区間の本数を取得することができる。
【０１０９】
そして、続く、図１２のＳ１２０２以降の処理において、制御部１０１は、取得した線形区間に基づいて、２ｎ個の同色のパッチのうちでシヌソイド関数に応じた画素値となるパッチを特定することができる。また、一方で、制御部１０１は、２ｎ個の同色のパッチの画素値から特定された線形区間に基づいて、２ｎ個の同色のパッチのいずれかに部分的照明環境変化５０が発生していることを検出することができる。
【０１１０】
例えば、Ｓ１２０３において、２本の重複しない線形区間が特定された場合には、制御部１０１は、２ｎ個の同色のパッチのすべてをシヌソイド関数に応じた画素値となるパッチとして特定できる。また、この場合、制御部１０１は、２ｎ個の同色のパッチのいずれにも部分的照明環境変化５０は発生していないと判定できる。そのため、制御部１０１は、Ｓ１２０４及びＳ１２０５において、２ｎ個の同色のパッチの画素値から代表値を取得し、得られた代表値を基準として用いて画素値の補正を実行することで、被写体が本来持つ画素値を再現することができる。
【０１１１】
また、例えば、Ｓ１２０７において、１本の線形区間がある場合には、制御部１０１は、１本の線形区間に含まれるｎ＋１個の同色のパッチをシヌソイド関数に応じた画素値となるパッチとして特定できる。また、制御部１０１は、２ｎ個の同色のパッチのうち、１本の線形区間に含まれていない残りの同色のパッチに部分的照明環境変化５０が発生しているパッチが含まれていることを検出できる。そのため、制御部１０１は、部分的照明環境変化５０が発生している可能性のある残りのパッチを画素値の補正の際に除くことができる。そして、制御部１０１は、Ｓ１２０８において、１本の線形区間に含まれるｎ＋１個の同色のパッチの画素値から、代表値を取得し、Ｓ１２０５で、代表値を基準として用いて画像の画素値を補正する。これにより、制御部１０１は、部分的照明環境変化５０が発生しているパッチを画素値の補正において除外して、補正を実行することができる。そのため、被写体が本来持つ画素値を再現することができる。
【０１１２】
また更に、例えば、Ｓ１２０７において、線形区間が無い場合には、制御部１０１は、Ｓ１２０６においてエラー情報を出力することでユーザに再撮影を促すことができる。そして、ユーザは、それにより、画素値の補正に成功する可能性の高い画像が撮像されるまで画像を撮りなおすことができる。結果として、ユーザは、被写体が本来持つ画素値が再現された画像を取得することができる。
【０１１３】
なお、Ｓ１２０８において、制御部１０１は、例えば、検出された１本の線形区間に含まれる連続するｎ＋１のパッチの真中に位置するパッチの画素値を代表値として用いてよい。又は、検出された１本の線形区間に含まれるパッチのうちで両端のパッチは、対を形成しているため、制御部１０１は、この両端のパッチの画素値の相加平均及び加重平均などの平均値を代表値として用いてもよい。或いは、制御部１０１は、検出された１本の線形区間に含まれる連続するｎ＋１のパッチの画素値の相加平均及び加重平均などの平均値を代表値として用いてもよい。なお、代表値の算出は、これに限定されるものではなく、例えば、その他の算出法を用いて補正の対象となる被写体が写る領域の中心におけるパッチの画素値を推定し、得られた値を代表値として用いてよい。
【０１１４】
また、上記の第１の実施例及び第２の実施例では、被写体が写る領域の周りに時計回り又は反時計回りに連続する同色のパッチの画素値の線形な変動が、式Ａ１により検出されている。しかしながら、実施例はこれに限定されるものではなく、その他の判定手法で、被写体が写る領域の周りに連続する同色のパッチの画素値の線形な変動が検出されてもよい。例えば、別の実施例では、被写体が写る領域の中心を対称点３０として、対称点３０の周りに存在するパッチからパッチまでの回転角を横軸にとり、また、パッチの画素値を縦軸にとる。この場合に、対称点３０の周りに時計回り又は反時計回りに連続するパッチの画素値が所定の誤差範囲内で直線に乗るか否かを判定することで、線形な変動が検出されてもよい。
【０１１５】
また更に、上記の第１の実施例及び第２の実施例では、図２に示すカラーチャート１、及び図１４から図１９に示すカラーチャート２が例として用いられている。しかしながら、第１の実施例及び第２の実施例で利用可能なカラーチャートは、これに限定されるものではない。
【０１１６】
例えば、図２で例示したカラーチャート１、及び図１４から図１９で例示したカラーチャート２では、同色のパッチは被写体が写る領域の周りに等間隔の角度で配置されている。パッチを配置する間隔は、図４（ｂ）のシヌソイド曲線の横軸においてパッチが位置する間隔に対応しているため、極端に偏って配置すると、例えば、式Ａ１を用いた線形区間や部分的な線形性の判定に影響を与える可能性がある。そのため、同色のパッチを被写体が写る領域の周りに等間隔に配置することは好ましい。しかしながら、例えば、式Ａ１を用いた判定で、或いは別の判定手法により被写体が写る領域の周りに連続する同色のパッチから線形な画素値の変動を検出し、線形区間を特定できる範囲であれば、パッチの間隔は任意に変更されてもよい。
【０１１７】
また、例えば、図２で例示したカラーチャート１、及び図１４から図１９で例示したカラーチャート２では、対となる同色のパッチが点対称に配置されている。対となる同色のパッチの点対称の配置は、例えば、対となるパッチの画素値の相加平均によりグラデーションの影響を簡便に除去できることにつながるため、好ましい。しかしながら、対となるパッチは、例えば、補正を行う対象である被写体が写る領域の中心を挟んで両側に異なる距離に配置されてもよい。この場合にも、例えば、被写体が写る領域の中心からのパッチまでの距離に応じて、対となるパッチの画素値に重み付けを行うことで、グラデーションの影響を除去し、被写体が写る領域の中心の位置におけるパッチの画素値は推定できる。
【０１１８】
また、上述のように、画像にグラデーションが生じている場合にパッチの画素値がシヌソイド曲線に応じた画素値となることは、画像においてパッチが同心円に配置されていることを想定している。そのため、例えば、被写体が写る領域の中心からのパッチまでの距離が異なるように配置されている場合、パッチの画素値にシヌソイド曲線からのズレが生じる。そのため、同色のパッチのそれぞれが同心円に配置されることは好ましい。しかしながら、例えば、式Ａ１を用いた判定で、或いは別の判定手法により被写体が写る領域の中心の周りに連続する同色のパッチから線形な画素値の変動を検出し、線形区間を特定できる範囲であれば、被写体が写る領域の中心からの距離が異なってパッチが配置されていてもよい。そのため、対となる同色のパッチ同士は、例えば、被写体からの平均距離よりも短い距離でパッチ同士が異なる距離に、カラーチャート上に配置されてもよい。なお、距離の違いは、例えば、配置された同色のパッチの画素値から、上述の式Ａ１を用いた判定で、或いは別の判定手法により線形区間を特定することが可能な範囲となるように設定されてよい。
【０１１９】
なお、上述の図２１の動作フローにおいて、Ｓ２１０１からＳ２１１８までの処理では、画像処理装置１００の制御部１０１は、例えば、特定部１１１として機能する。
【０１２０】
［第３の実施例］
図２２及び図２３は、第３の実施例を説明する図である。カラーチャートにおいて被写体が写る領域の周りに配置される同色のパッチの数が、ある程度以上の数になると検出されたパッチの画素値から式１で表されるシヌソイド関数の曲線に関する情報を取得することが可能である。そのため、検出されたパッチの画素値に基づいて、例えば式１について信頼性の高いα、β、θ０の値を推定することができる。そして、式１において、βはシヌソイド関数（図４（ｂ））の振動の中心における画素値であるため、βは、画像の画素値の補正において基準として用いることができる。そこで、第３の実施例では、制御部１０１は、被写体が写る領域の周りに配置されたカラーチャートの同色の複数のパッチの画素値に基づいてβの値を算出し、得られたβの値を基準として用いて画像の画素値の補正を実行する。なお、この推定では、同色のパッチの数は、例えば４点以上であってよく、また、８点以上であることが好ましい。また、第３の実施例において、カラーチャートには、例えば、カラーチャート１及びカラーチャート２などが用いられてよい。
【０１２１】
まず、α、β、θ０の値の算出は、以下のように実施されてよい。上述したように図４（ａ）は、例えば、画像において方向２０の向きに徐々に明るくなるようにグラデーションによる照明環境の変化が生じている場合を例示している。この場合に、点Ｐから半径ｒの円において、例えば、点４１は、θの角度が０度の点とする。また、θ０は、グラデーションの向きを表す方向２０までの点４１からの回転角とする（即ち、θ０は、グラデーションの向きを表す）。この場合、点Ｐから半径ｒの円周上を角度θだけ回転した点の画素値ｙは、例えば、以下の式１で表すことができる。なお、以下の式１では、θの正の方向は、図４（ａ）における反時計回りの回転方向とする。また、βは、シヌソイド曲線の振動の中心の値であり、点Ｐにおける画素値と対応している。
【０１２２】
【数２】
2015207085.tif 000004
【０１２３】
ここで、被写体が写る領域の周りに配置された同色のパッチのインデックスをｉ（ｉ＝１〜ｎ）とし、各パッチの点４１からの角度をそれぞれｘｉと表すと、パッチｉの画素値の理論値ｙ’ｉは式１から以下の式で表すことができる。なお、各パッチのそれぞれの点４１からの角度ｘｉは、例えば、表として記憶部１０２に記憶されていてよい。或いは、別の実施例では、例えば、各パッチが等間隔に配置されている場合には、各パッチの角度ｘｉは、配置の間隔に基づいて算出されてもよい。
【０１２４】
【数３】
2015207085.tif 000005
【０１２５】
ここで、ｉ＝ｍのパッチは、部分的照明環境変化５０が発生しているパッチと仮定する。この場合、パッチｍの画素値の実測値ｙｉは、理論値ｙ’ｉと離れた値をとると推定されるが、その他のパッチの画素値の実測値ｙｉは、理論値ｙ’ｉと近しい値をとることが予測される。そのため、制御部１０１は、パッチｍを除いたその他のパッチの画素値を用いて、α、β、θ０の推定値であるαハット、βハット、及びθ０ハットを、以下の式３の評価関数を最小化する値として算出する。
【０１２６】
【数４】
2015207085.tif 000006
【０１２７】
まず、式３を式２により変形することで、式４が得られる。
【０１２８】
【数５】
2015207085.tif 000007
【０１２９】
なお、式４において、ｙｉは、パッチｉの画素値の実測値であるため、画像から取得することができる値である。
【０１３０】
式４においてＪをβで偏微分して０とおき、βについて解くと以下の式５が得られる。
【０１３１】
【数６】
2015207085.tif 000008
【０１３２】
また、式４においてＪをαで偏微分して０とおき、αについて解くと以下の式６が得られる。
【０１３３】
【数７】
2015207085.tif 000009
【０１３４】
式４においてＪをθ０で偏微分して０とおくと以下の式７が得られる。
【０１３５】
【数８】
2015207085.tif 000010
【０１３６】
ここで、式７について、制御部１０１は、反復解法であるニュートン法を用いてθ０ハットの解を求める。ニュートン法では、以下の更新式（式８）に基づいて解が求められる。
【０１３７】
【数９】
2015207085.tif 000011
【０１３８】
なお、式８においてｔは、反復回数である。また、式８において：
【数１０】
2015207085.tif 000012
とする。
【０１３９】
式８において：
【数１１】
2015207085.tif 000013
とする。
【０１４０】
なお、式８を用いてθ０ハットを求める際に、αハット、及びβハットが必要になる。そこで、一実施例においては、制御部１０１は、検出されたインデックス：１〜ｎ（ｍを除く）のパッチのうちから画素値の最大値と、画素値の最小値とを取得する。そして、制御部１０１は、（画素値の最大値−画素値の最小値）／２を計算し、αハットの初期値として用いる。また、制御部１０１は、（画素値の最大値＋画素値の最小値）／２を計算し、βハットの初期値として用いる。
【０１４１】
式８にてθ０ハットを算出した後、制御部１０１は、この算出したθ０ハットの値とαハットの初期値とを式５に代入して、βハットを求める。また、制御部１０１は、得られたβハットとθ０ハットとを用いて、式６からαハットを求める。続いて、式５及び式６から得られたβハット及びαハットの値を用いて、制御部１０１は、式８により新たなθ０ハットを算出する。以上の処理をθ０ハット、βハット、及びαハットの値が収束するまで繰り返すことで、制御部１０１は、パラメータ：θ０ハット、βハット、及びαハットを算出することができる。
【０１４２】
また、得られたパラメータ：θ０ハット、βハット、及びαハットを用いて、制御部１０１は、ｉ＝ｍのパッチに、部分的照明環境変化５０が発生しているか否かを判定することができる。例えば、ｉ＝ｍのパッチに部分的照明環境変化５０が発生している場合、パッチｍの画素値の実測値ｙｉは、理論値ｙ’ｉと離れた値をとると推定される。そこで、制御部１０１は、得られたパラメータ：θ０ハット、βハット、及びαハットを、以下の式１１に代入し、パッチｍについて実測値ｙｉと、理論値ｙ’ｉとの残差Ｄｉを導出する。なお、Ｄｉはパッチの画素値の実測値の理論値への当てはまりの度合いを表している。
【０１４３】
【数１２】
2015207085.tif 000014
【０１４４】
ここで、Ｄｉの絶対値が閾値ＴｈＤ以上であれば、制御部１０１は、ｉ＝ｍのパッチに部分的照明環境変化５０が発生していると判定することができる。一方、Ｄｉの絶対値が閾値ＴｈＤ未満であれば、制御部１０１は、ｉ＝ｍのパッチに部分的照明環境変化５０が発生していないと判定することができる。そのため、部分的照明環境変化５０が発生していると仮定するパッチｍの位置をパッチ１〜パッチｎへと順次移動して、以上の判定を行うことで、制御部１０１は、部分的照明環境変化５０が生じているパッチの位置を特定することができる。また、特定された部分的照明環境変化５０が発生しているパッチをｍとして除いて算出されたβハットの値は、確からしい値を有すると考えられるため、制御部１０１は、βハットの値を画像の画素値の補正のための基準として用いることができる。
【０１４５】
なお、閾値ＴｈＤは、例えば、求めたαハットの値（即ち、振幅）に基づいて設定されてよい。ここで、最適なパラメータを算出するためには、当てはまりを重視し、できるだけ厳しい閾値を用いることが好ましい。そのため、閾値ＴｈＤは、例えば、２αの３％〜５％程度の値に設定されてよい。しかしながら、閾値ＴｈＤの値は、これに限定されるものではなく、例えば、２αの１％〜１５％程度の値に設定されてもよい。閾値ＴｈＤの値は、例えば、カラーチャートを用いて画素値の補正を行う場合の照明環境がある程度決まっている場合には、評価環境などで決定した閾値を予め記憶部１０２に記憶して用いてもよい。
【０１４６】
図２２は、第３の実施例に係る画素値補正処理を例示する図である。図２２の画素値補正処理の動作フローは、例えば、制御部１０１が記憶部１０２に格納されているプログラム１２０を読み出して実行することで実施される。一実施例においては制御部１０１に画素値補正処理の実行指示が入力されると図２２の動作フローは開始してよい。
【０１４７】
なお、図２２のＳ２２０１からＳ２２０８の処理は、例えば、図１２のＳ１２０１からＳ１２０８の処理とそれぞれ対応していてよい。即ち、例えば、Ｓ２２０１からＳ２２０８の処理において、制御部１０１は、図１２のＳ１２０１からＳ１２０８の処理と同様の処理を実行してよい。例えば、Ｓ２２０１において制御部１０１は、線形区間特定処理を実行してよい。そして、制御部１０１は、Ｓ２２０１において例えば、図１３又は図２１で例示した線形区間特定処理を実行してよい。
【０１４８】
また、図２２の動作フローでは、Ｓ２２０７において制御部１０１は、線形区間の数が１本であるか否か（即ち、パラメータ：ｌ＝１）を判定する。そして、線形区間の数が１本でない場合（Ｓ２２０７がＮＯ）、フローはＳ２２０９へと進む。Ｓ２２０９において制御部１０１は、代表値取得処理を実行する。
【０１４９】
図２３は、第３の実施例に係る代表値取得処理の動作フローを例示する図である。図２３の代表値取得処理の動作フローは、例えば、制御部１０１が記憶部１０２に格納されているプログラム１２０を読み出して実行することで実施される。一実施例においては、図２２のＳ２２０９に進むと、図２３の代表値取得処理は開始する。
【０１５０】
Ｓ２３０１において制御部１０１は、カラーチャートに含まれている同色の複数のパッチのうちから、未選択のパッチを１つ選択する。Ｓ２３０２において制御部１０１は、パラメータ算出処理を実行する。なお、Ｓ２３０１で選択したパッチは上述の部分的照明環境変化５０が発生していると仮定するパッチｍであり、制御部１０１は、例えば、その選択したパッチｍを除いた他の同色の複数のパッチの画素値を用いて、パラメータ算出処理を実行する。
【０１５１】
図２４は、実施例に係るパラメータ算出処理の動作フローを例示する図である。図２４のパラメータ算出処理の動作フローは、例えば、制御部１０１が記憶部１０２に格納されているプログラム１２０を読み出して実行することで実施される。一実施例においては、図２３のＳ２３０２に進むと、図２４のパラメータ算出処理は開始する。
【０１５２】
Ｓ２４０１において制御部１０１は、αハットの初期値を算出する。制御部１０１は、例えば、カラーチャートに含まれている同色の複数のパッチのうちから、Ｓ２３０１で選択したパッチｍを除いた他のパッチの画素値のうちで画素値の最大値と、画素値の最小値とを取得する。そして、制御部１０１は、取得した画素値の最大値と、画素値の最小値とから（画素値の最大値−画素値の最小値）／２を計算し、αハットの初期値として用いてよい。Ｓ２４０２において制御部１０１は、βハットの初期値を算出する。制御部１０１は、例えば、Ｓ２４０１で取得した画素値の最大値と、画素値の最小値とから（画素値の最大値＋画素値の最小値）／２を計算し、βハットの初期値として用いてよい。
【０１５３】
Ｓ２４０３において制御部１０１は、算出されたαハットの初期値と、及びβハットの初期値とを用いて式８が収束するまで反復し、θ０ハットを算出する。Ｓ２４０４において制御部１０１は、αハットの初期値と、Ｓ２４０３で算出されたθ０ハットとから式５を計算しβハットを算出する。Ｓ２４０５において制御部１０１は、Ｓ２４０４で算出されたβハットと、Ｓ２４０３で算出されたθ０ハットとから式６を計算しαハットを算出する。
【０１５４】
Ｓ２４０６において制御部１０１は、θ０ハット、αハット、及びβハットが収束したか否かを判定する。例えば、制御部１０１は、前回Ｓ２４０６の処理を実行した際に得られたθ０ハット、αハット、βハットの値と、今回実行した際に得られたθ０ハット、αハット、βハットの値との差が所定の範囲内であれば、収束したと判定してよい。θ０ハット、αハット、βハットの値が収束していない場合（Ｓ２４０６がＮＯ）、フローはＳ２４０３へと戻る。そして、２回目以降のＳ２４０３、Ｓ２４０４の処理では、制御部１０１は、Ｓ２４０６で得られているθ０ハット、αハット、βハットを用いて、処理を実行する。即ち、Ｓ２４０３では制御部１０１は、前回Ｓ２４０４を実行した際に得られたβハットと、前回Ｓ２４０５を実行した際に得られたαハットを用いて式８が収束するまで反復し、θ０ハットを得る。また、Ｓ２４０４では制御部１０１は、Ｓ２４０３で得られたθ０ハットと、前回Ｓ２４０５を実行した際に得られたαハットを用いてβハットを得る。
【０１５５】
そして、Ｓ２４０６においてθ０ハット、αハット、βハットが収束した場合（Ｓ２４０６がＹＥＳ）、本動作フローは終了し、フローは図２３のＳ２３０３へと進む。
【０１５６】
Ｓ２３０３において制御部１０１は、Ｓ２３０２で算出されたパラメータ：θ０ハット、αハット、及びβハットと、Ｓ２３０１で選択したパッチの画素値とを用いて、式１１を計算し、Ｄｉを算出する。Ｓ２３０４において制御部１０１は、Ｄｉの絶対値が閾値ＴｈＤ以上か否かを判定する。Ｄｉの絶対値が閾値ＴｈＤ以上であれば（Ｓ２３０４がＹＥＳ）、フローはＳ２３０６へと進む。なお、この場合、Ｓ２３０１で選択されたパッチは、部分的照明環境変化５０が発生しているパッチと推定される。また、そのような部分的照明環境変化５０が発生しているパッチを除いてＳ２３０２で算出されているパラメータ：θ０ハット、αハット、βハットは、確からしい値を有する。
【０１５７】
続いて、Ｓ２３０６において制御部１０１は、Ｓ２３０２で算出されたβハットの値を、カラーチャートに含まれている同色の複数のパッチの画素値を代表する代表値として取得する。Ｓ２３０６で代表値を取得すると、本動作フローは終了し、フローは図２２のＳ２２０５へと進み、制御部１０１は、特定された代表値を用いて画像の画素値を補正する。
【０１５８】
一方、Ｄｉの絶対値が閾値ＴｈＤ未満であれば（Ｓ２３０４がＮＯ）、フローはＳ２３０５へと進む。なお、Ｓ２３０４において、Ｄｉの絶対値が閾値ＴｈＤ未満である場合は、Ｓ２３０１で選択されたパッチが式１のシヌソイド関数に応じた画素値となるパッチであることを示している。Ｓ２３０５において制御部１０１は、カラーチャートに含まれている同色の複数のパッチのすべてを選択したか否かを判定する。すべてのパッチが選択されていない場合（Ｓ２３０５がＮＯ）、フローはＳ２３０１に戻り、制御部１０１は、未選択の別のパッチを選択して処理を繰り返す。
【０１５９】
一方、すべてのパッチが選択されている場合（Ｓ２３０５がＹＥＳ）、フローはＳ２３０６へと進む。なお、すべてのパッチが選択されている場合は、Ｓ２３０４で部分的照明環境変化５０が発生していると推定されるパッチが無かったことを示している。この場合には、Ｓ２３０６で、制御部１０１は、得られているパラメータのβを代表値として取得して、以降の処理を実行してもよい。或いは、別の例では、制御部１０１は、すべてのパッチの画素値を平均化することで代表値を算出してもよい。また、更に別の例では、例えば、Ｓ２２０７においてＮＯと判定されており線形区間が無いにも関わらず、Ｓ２３０４で部分的照明環境変化５０が発生していると推定されるパッチを特定できなかった場合には、信頼できるβが得られていない可能性がある。そのため、すべてのパッチが選択されている場合（Ｓ２３０５がＹＥＳ）、フローはＳ２２０６へと進められてもよい。
【０１６０】
以上で述べたように、第３の実施例では、制御部１０１は、同色の複数のパッチの画素値に基づいて、図４（ｂ）のシヌソイド関数の振動の中心における画素値：βを算出し、その値を被写体の画素値の補正の基準として用いる。そのため、例えば、図７、図８、図１６、及び図１７を参照して述べた、グラデーションにおいて画素値が最も高い又は低い位置に部分的照明環境変化５０が発生している場合についても、画素値の補正で、被写体が本来持つ画素値を再現することができる。
【０１６１】
なお、上記の例では、Ｓ２３０１において、制御部１０１は、部分的照明環境変化５０が発生していると仮定するパッチｍとして、すべての同色のパッチのうちから選択を行っている。しかしながら、例えば、図２１の線形区間特定処理のＳ２１０３において部分的な線形性がありと判定されているパッチについては、部分的照明環境変化５０が発生していない可能性が高い。そのため、Ｓ２１０３において部分的な線形性がありと判定されているパッチは、Ｓ２３０１で選択する対象から除いてもよい。例えば、図１６（ａ）におけるパッチ１、２、３、５、及び６、並びに図１６（ｂ）におけるパッチ１、２、３、４、６、７、及び８は、部分的な線形性がありと判定されているため、Ｓ２３０１で選択する対象から除いてもよい。そして、例えば、図１６（ａ）におけるパッチ４、及び図１６（ｂ）におけるパッチ５のように部分的な線形性が検出されなかったパッチを、制御部１０１はＳ２３０１において選択し、以降のＳ２３０２の処理を実行してもよい。この様にすることで、代表値取得処理の演算負荷を低減することができる。
【０１６２】
なお、以上の図２２の動作フローにおいて、Ｓ２２０１からＳ２２０３、Ｓ２２０６、及びＳ２２０７の処理では、画像処理装置１００の制御部１０１は、例えば、特定部１１１として機能する。また、Ｓ２２０４、Ｓ２２０５及びＳ２２０８の処理では、画像処理装置１００の制御部１０１は、例えば、補正部１１２として機能する。Ｓ２２０９の処理では、画像処理装置１００の制御部１０１は、例えば、特定部１１１又は補正部１１２として機能する。
【０１６３】
また、図２３の動作フローにおいて、Ｓ２３０１、Ｓ２３０３、Ｓ２３０４、及びＳ２３０５の処理では、画像処理装置１００の制御部１０１は、例えば、特定部１１１として機能する。また、Ｓ２３０２、及びＳ２３０６の処理では、画像処理装置１００の制御部１０１は、例えば、補正部１１２として機能する。
【０１６４】
また、図２４の動作フローにおいて、Ｓ２４０１からＳ２４０６の処理では、画像処理装置１００の制御部１０１は、例えば、補正部１１２として機能する。
【０１６５】
［第４の実施例］
図１９に例示されるように、カラーチャート上の同色の複数のパッチのうちの１個以上のパッチに部分的照明環境変化５０が発生している場合がある。そこで、第４の実施例は、カラーチャート上の同色の複数のパッチのうちの１個以上のパッチに、部分的照明環境変化５０が発生している場合にも代表値の取得を可能とする。
【０１６６】
カラーチャート上の同色の複数のパッチのうちの１個以上のパッチに部分的照明環境変化５０が発生している状況でβの値を算出する手法として、例えば、ＲＡＮＳＡＣ（Random Sample Consensus）法が利用できる。ＲＡＮＳＡＣ法が利用される場合、制御部１０１は、例えば、カラーチャート上の同色の複数のパッチの画素値のうち、いくつかだけを用いてパラメータ：α、β、θ０を求める。そして、制御部１０１は、カラーチャート上の同色の複数のパッチのうちで、求めたパラメータに従う画素値を持つパッチが最も多いパラメータを、パラメータの推定値として特定する。
【０１６７】
図２５は、第４の実施例に係る代表値取得処理の動作フローを例示する図である。図２５の代表値取得処理の動作フローは、例えば、制御部１０１が記憶部１０２に格納されているプログラム１２０を読み出して実行することで実施される。一実施例においては、図２２のＳ２２０９に進むと、図２５の代表値取得処理は開始する。
【０１６８】
Ｓ２５０１において制御部１０１は、反復パラメータ：ｋの値を０に設定し、反復パラメータ：ｋを初期化する。Ｓ２５０２において制御部１０１は、計数パラメータ：Ｗｍａｘの値を０に設定し、計数パラメータ：Ｗｍａｘを初期化する。Ｓ２５０３において制御部１０１は、カラーチャート上の同色の複数のパッチのうちからパッチをＭ個ランダムに選択する。なお、Ｍは、例えば３以上の整数である。
【０１６９】
Ｓ２５０４において制御部１０１は、Ｓ２５０３でランダムに選択したＭ個のパッチを用いてパラメータ算出処理を実行する。制御部１０１は、例えば、図２４に示すパラメータ算出処理を実行し、パラメータ：θ０ハット、αハット、βハットの値を算出してよい。なお、図２４に示すパラメータ算出処理では、上記式５〜式１０が用いられる。ここで、式５〜式１０ではｉ≠ｍとしており、パッチｍが除外されている。しかしながら、第４の実施例では、Ｓ２５０３で選択されなかったパッチが除外されるパッチとなり、パラメータの算出はＳ２５０３で選択されたＭ個のパッチのすべてを用いて行う。そのため、Ｓ２５０４で実行するパラメータ算出処理では、式５〜式１０のｉ≠ｍの記載によるパッチｍの除外は無いものとする。
【０１７０】
Ｓ２５０５において制御部１０１は、式１１を用いて、算出したパラメータ：θ０ハット、αハット、βハットに従うパッチの数をカウントし、カウントされた数をＷとする。例えば、制御部１０１は、算出したパラメータ：θ０ハット、αハット、βハットを式１１に代入する。そして、制御部１０１は、カラーチャート上の同色の複数のパッチのそれぞれの画像中の画素値を用いて式１１によりＤｉを算出し、Ｄｉの絶対値が閾値ＴｈＤ未満である場合に、パラメータに従うパッチとしてカウントし、カウントされた数をＷとする。
【０１７１】
Ｓ２５０６において制御部１０１は、ＷがＷｍａｘよりも大きいか否かを判定する。ＷがＷｍａｘ以下である場合（Ｓ２５０６がＮＯ）、フローはＳ２５０８へと進む。一方、ＷがＷｍａｘよりも大きい場合（Ｓ２５０６がＹＥＳ）、フローはＳ２５０７へと進む。Ｓ２５０７において制御部１０１は、ＷｍａｘにＷの値を設定し、また、Ｓ２５０５においてパラメータに従うパッチと、Ｓ２５０４で算出されたパラメータ：βの値とを記憶部１０２に記憶する。Ｓ２５０８において制御部１０１は反復パラメータ：ｋの値を１増加させる。続いて、Ｓ２５０９において制御部１０１は、反復パラメータ：ｋの値がＫｍａｘよりも小さいか否かを判定する。反復パラメータ：ｋがＫｍａｘよりも小さい場合（Ｓ２５０９がＹＥＳ）、フローは２５０３へと戻り、制御部１０１は新たにパッチをＭ個ランダムに選択して処理を繰り返す。一方、反復パラメータ：ｋがＫｍａｘ以上である場合（Ｓ２５０９がＮＯ）、フローは２５１０へと進む。なお、Ｋｍａｘは、ＲＡＮＳＡＣ法における繰り返し回数である。Ｋｍａｘの値は、カラーチャートが含む同色のパッチの数と、Ｓ２５０３でランダムに選択するパッチの数とに基づいて設定されてよく、例えば数百回から数万回の値が設定されてよい。一例として、カラーチャートが同色のパッチを１０個含み、同色のパッチのうちからＳ２５０３においてランダムに４個のパッチを選択する場合には、組み合わせの数が１０×９×８×７＝５０４０≒５，０００となる。そのため、５０００回がＫｍａｘに設定されてよい。
【０１７２】
Ｓ２５１０において制御部１０１は、Ｗｍａｘに設定されているＷの値がＳ２５０５で得られた際のβの値を記憶部１０２から読み出し、カラーチャートに含まれている同色の複数のパッチの画素値を代表する代表値として取得する。なお、Ｗｍａｘに設定されているＷの値がＳ２５０５で得られた際のパラメータに従うパッチは、式１のシヌソイド関数に応じた画素値となるパッチである。βの値を代表値として取得すると、本動作フローは終了し、フローは図２２のＳ２２０５へと進み、制御部１０１は、取得された代表値を用いて画像の画素値の補正を実行する。
【０１７３】
以上で述べたように、第４の実施例では、例えば、図１９に示す様にカラーチャートに含まれる同色の複数のパッチのうちの１つ以上のパッチに部分的照明環境変化５０が発生している場合にもβの値が算出できる。そのため、カラーチャートに含まれている同色の複数のパッチの画素値を代表する代表値を得ることができる。従って、例えば、部分的照明環境変化５０の発生により線形区間が検出されない場合にも、得られた代表値を用いて画像の同色のパッチ間の画素値を補正することができる。それにより、被写体が本来持つ画素値を再現することができる。
【０１７４】
以上の図２５の動作フローにおいて、Ｓ２５０１からＳ２５０３、Ｓ２５０５からＳ２５０９の処理では、画像処理装置１００の制御部１０１は、例えば、特定部１１１として機能する。また、Ｓ２５０４及びＳ２５１０の処理では、画像処理装置１００の制御部１０１は、例えば、補正部１１２として機能する。
【０１７５】
なお、以上の第３及び第４の実施例では、Ｓ２２０７でＮＯと判定され、線形区間が特定されなかった場合に、制御部１０１が代表値取得処理を実行する例を述べた。しかしながら、実施例はこれに限定されるものではなく、例えば、線形区間が１本及び２本特定されるような場合でも、代表値取得処理により代表値を得ることができる。そのため、第３及び第４の実施例の変形例に係る画素値補正処理として、制御部１０１は、図２６の動作フローを実行してもよい。
【０１７６】
図２６は、変形例に係る画素値補正処理の動作フローを例示する図である。図２６の画素値補正処理の動作フローは、例えば、制御部１０１が記憶部１０２に格納されているプログラム１２０を読み出して実行することで実施される。一実施例においては、制御部１０１に画素値補正処理の実行指示が入力されると図２６の動作フローは開始する。
【０１７７】
Ｓ２６０１において、制御部１０１は、代表値取得処理を実行する。例えば、制御部１０１は、Ｓ２６０１において、図２３又は図２５の代表値取得処理を実行し、シヌソイド関数（図４（ｂ））の振動の中心における画素値であるβを、カラーチャートに含まれている同色の複数のパッチの画素値を代表する代表値として取得する。Ｓ２６０２において、制御部１０１は、取得された代表値を用いて画像の画素値の補正を実行し、本動作フローは終了する。
【０１７８】
なお、図２６の動作フローにおいて、Ｓ２６０１の処理では、画像処理装置１００の制御部１０１は、例えば、特定部１１１又は補正部１１２として機能する。また、Ｓ２６０２の処理では、画像処理装置１００の制御部１０１は、例えば、補正部１１２として機能する。
【０１７９】
以上の変形例に係る画素値補正処理によれば、制御部１０１は、例えば、上述のケース１、ケース３〜５、ケース７〜８のいずれのケースにおいても、カラーチャートに含まれている同色の複数のパッチの画素値を代表する代表値を得ることができる。従って、制御部１０１は、得られた代表値を用いて画素値の補正を実行でき、被写体が本来持つ画素値を再現することができる。
【０１８０】
また、上述の第３及び第４の実施例及びその変形例において代表値として用いられるβが得られた際に、式１１を用いた判定でＤｉの絶対値が閾値ＴｈＤ未満であると判定されたパッチは、シヌソイド関数に応じた画素値となるパッチとみなすことができる。従って、制御部１０１は、カラーチャートに含まれる同色の複数のパッチのうちから、グラデーション以外の不均一な照明環境変化の影響を受けていないパッチを特定できる。また、一方で、代表値として用いられるβが得られた際に、Ｓ２３０４又はＳ２５０５における式１１を用いた判定で、Ｄｉの絶対値が閾値ＴｈＤ以上と判定されたパッチは、部分的照明環境変化５０が発生しているパッチとみなすことができる。従って、制御部１０１は、画像中の同色の複数のパッチの画素値から部分的照明環境変化５０が発生していることを検出でき、且つ、部分的照明環境変化５０が発生しているパッチを特定することができる。
【０１８１】
また、上記の第３の実施例及び第４の実施例は、図２に示すカラーチャート１、及び図１４から図１９に示すカラーチャート２を例として用いて説明した。しかしながら、カラーチャートは、これに限定されるものではない。
【０１８２】
例えば、第３及び第４の実施例の変形例では、カラーチャート１及びカラーチャート２を含む第１及び第２の実施例で利用可能なカラーチャートが用いられてよい。また、更には、おおよそ同心円状に同色のパッチが配置されているカラーチャートであれば、シヌソイド関数に関する情報がパッチの配置から得られるので、実施例において用いることができる。従って、第３及び第４の実施例の変形例では、例えば、パッチと被写体までの距離の違いが、対となるパッチ同士の被写体からの平均距離よりも短い距離以内となるように同色のパッチが配置されているカラーチャートが用いられてよい。なお、距離の違いは、例えば、上述の式１１における閾値ＴｈＤに設定される値との関係で、式１１により画素値がシヌソイド関数に応じた画素値となるパッチであるか否かを判定することが可能な範囲となるように設定されてよい。
【０１８３】
また更に、上述の第３及び第４の実施例、及びその変形例においては、式１に記載されるシヌソイド関数が例として用いられている。しかしながら、第３及び第４の実施例、及びその変形例で利用可能な関数はこれに限定されるものではない。例えば、グラデーションに起因する位置に応じた画素値の変動を表すシヌソイド関数であれば、サイン関数などを用いて表した式が用いられてもよい。また、同様に、例えば、グラデーションに起因する位置に応じた画素値の変動を表す関数であれば、画像中の楕円形状又は六角形状上の位置に応じた画素値の変動を表す関数等のその他の関数が用いられてよい。この場合には、用いる関数に応じて、上述の式２から式１１の代替となる数式を導出し、第３及び第４の実施例、及びその変形例が実施されてよい。また、この場合、用いる関数が表す形状に沿うように複数のパッチが配置されたカラーチャートが用いられてよい。
【０１８４】
以上で述べたように、いくつかの実施例によれば、例えば、画像において複数の同色のパッチの一部に部分的照明環境変化５０が発生している場合に、制御部１０１は、その発生を検出することができる。また更に、いくつかの実施例によれば、例えば、画像中の複数の同色のパッチの一部に部分的照明環境変化５０が発生している場合に、制御部１０１は、部分的照明環境変化５０が発生しているパッチを除外して、画像の画素値の補正を実行することができる。それにより、例えば、画像において複数の同色のパッチの一部に部分的照明環境変化５０が発生している場合にも、制御部１０１は、画像の画素値の補正により、被写体の本来の画素値を再現することができる。また、いくつかの実施例によれば、例えば、画像において複数の同色のパッチの一部に部分的照明環境変化５０が発生している場合に、制御部１０１は、部分的照明環境変化５０が発生しているパッチを特定することができる。
【０１８５】
なお、上述の実施例において、画素値は、例えば、輝度値、及び色値であってよい。色値は、例えば、色空間における各色成分の値であってよく、原色を赤、緑、青とするＲＧＢ空間を用いる場合には、画素値は、例えば赤、緑、及び青のそれぞれの成分の値であってよい。また、上述のいくつかの実施例において、例えば、色値を用いる場合には、制御部１０１は、色空間の成分となる色のいずれかを用いていくつかの実施例に係る処理を実行してもよい。或いは、制御部１０１は、色空間の成分となる複数の色を用いていくつかの実施例に係る処理を実行してもよい。
【０１８６】
また、上述の実施例において、画像の画素値の補正で基準として用いる代表値の算出についていくつかの例が述べられた。しかしながら、代表値の算出はこれらに限定されるものではない。例えば、グラデーションに起因する位置に応じた画素値の変動を表す関数に応じた画素値となる同色のパッチから、画像中の被写体の位置におけるパッチの画素値を推定できれば、その他の手法が用いられてもよい。例えば、上述の第３及び第４の実施例、及びその変形例においては、同色のパッチに部分的照明環境変化５０が発生している場合、そのパッチが特定される。そこで、βを用いる代わりに、例えば、部分的照明環境変化５０が発生しているパッチと、そのパッチと対になるパッチの画素値を除いた残りのパッチの画素値を平均し、代表値が算出されてもよい。また更に、上記の第３及び第４の実施例並びに変形例では、算出されたβの値を代表値として用いる場合を例示したが、実施例はこれに限定されるものではない。一実施例においては、制御部１０１は、算出されたβに基づいて得られるβとは異なる値を代表値として用いてもよい。即ち、例えば、制御部１０１は、シヌソイド関数の振動の中心（β）の画素値を算出し、振動の中心の画素値に基づいて画像の画素値を補正してよい。
【０１８７】
また、上述の例えば図１２、図１３、図２１、図２２、図２３、図２４、図２５及び図２６の動作フローは例示であり、実施例はこれに限定されるものではない。例えば、可能な場合には、動作フローは処理の順番を変更して実行してもよく、別に更なる処理を含んでいてもよく、又は、一部の処理が省略されてもよい。例えば、別の実施例においては、図１３のＳ１３０４とＳ１３０５の処理は、任意に順序を入れ替えて実行されてもよい。また、図２１のＳ２１１７とＳ２１１８の処理は、任意に順序を入れ替えて実行されてもよい。図２４のＳ２４０４とＳ２４０５の処理は、任意に順序を入れ替えて実行されてもよい。図２５のＳ２５０１とＳ２５０２の処理は、任意に順序を入れ替えて実行されてもよい。
【０１８８】
図２７は、一実施例に係る画像処理装置１００を実現するためのコンピュータ２７００のハードウェア構成を例示する図である。図２７のコンピュータ２７００は、例えば、プロセッサ２７０１、メモリ２７０２、記憶装置２７０３、読取装置２７０４、通信インタフェース２７０６、及び入出力装置２７０７を備える。なお、プロセッサ２７０１、メモリ２７０２、記憶装置２７０３、読取装置２７０４、通信インタフェース２７０６、入出力装置２７０７は、例えば、バス２７０８を介して互いに接続されている。
【０１８９】
プロセッサ２７０１は、メモリ２７０２を利用して例えば上述の動作フローの手順を記述したプログラム１２０を実行することにより、上述した各機能部の一部又は全部の機能を提供する。例えば、画像処理装置１００の制御部１０１は、プロセッサ２７０１であり、また、記憶部１０２は、例えばメモリ２７０２、記憶装置２７０３、及び着脱可能記憶媒体２７０５を含んでいる。プロセッサ２７０１は、例えば、記憶装置２７０３からプログラム１２０を読み出して実行することで、特定部１１１及び補正部１１２として機能してよい。記憶装置２７０３は、例えば、プログラム１２０及びパッチグループ情報１１００，２０００などの情報を格納していてよい。
【０１９０】
メモリ２７０２は、例えば半導体メモリであり、ＲＡＭ領域及びＲＯＭ領域を含んで構成される。なお、ＲＡＭは、Random Access Memoryの略称である。また、ＲＯＭは、Read Only Memoryの略称である。記憶装置２７０３は、例えばハードディスク、フラッシュメモリ等の半導体メモリ、又は外部記憶装置である。
【０１９１】
読取装置２７０４は、プロセッサ２７０１の指示に従って着脱可能記憶媒体２７０５にアクセスする。着脱可能記憶媒体２７０５は、例えば、半導体デバイス（ＵＳＢメモリ、ＳＤメモリカード等）、磁気的作用により情報が入出力される媒体（磁気ディスク等）、及び光学的作用により情報が入出力される媒体（ＣＤ‐ＲＯＭ、ＤＶＤ等）などにより実現される。なお、ＵＳＢは、Universal Serial Busの略称である。ＣＤは、Compact Discの略称である。ＤＶＤは、Digital Versatile Diskの略称である。
【０１９２】
通信インタフェース２７０６は、例えば、無線ＬＡＮ通信機器、ＮＦＣ通信機器、赤外線通信機器などの通信機器であってよい。なお、ＬＡＮは、Local Area Networkの略称である。通信インタフェース２７０６は、例えば、プロセッサ２７０１の指示に従ってネットワーク２７２０を介してデータを送受信してよい。入出力装置２７０７は、例えばユーザからの指示を受け付ける入力キー、及びタッチパネルなどのデバイス、或いは画像データを入力する撮像装置であってよい。撮像装置は、例えば、ＣＣＤ（Charge Coupled Device）やＣＭＯＳ（Complementary Metal Oxide Semiconductor）などを用いたカメラであってよい。また、入出力装置２７０７は、例えばディスプレーなどの表示装置、及びスピーカなどの音声装置などであってよい。また、例えば、カラーチャートが写る画像は、撮像装置などの入出力装置２７０７から入力されてよい。或いは、カラーチャートが写る画像は、記憶装置２７０３に記憶されていてもよいし、ネットワーク２７２０及び着脱可能記憶媒体２７０５を介して取得されてもよい。
【０１９３】
実施例に係る各プログラムは、例えば、下記の形態で画像処理装置１００に提供される。
（１）記憶装置２７０３に予めインストールされている。
（２）着脱可能記憶媒体２７０５により提供される。
（３）プログラムサーバなどのサーバ２７３０から提供される。 
【０１９４】
以上で述べた実施例を含むいくつかの実施例は、上述の実施例の各種変形形態及び代替形態を包含するものとして当業者には理解される。例えば、各種実施例は、構成要素を変形して具体化されてよい。また、上述した実施例に開示されている複数の構成要素を適宜組み合わせることにより、種々の実施例が実施されてよい。更には、実施例に示される全構成要素からいくつかの構成要素を削除して又は置換して、或いは実施例に示される構成要素にいくつかの構成要素を追加して種々の実施例が実施されてよい。
【符号の説明】
【０１９５】
１，２      カラーチャート
１００      画像処理装置
１０１      制御部
１０２      記憶部
１１１      特定部
１１２      補正部
２７００    コンピュータ
２７０１    プロセッサ
２７０２    メモリ
２７０３    記憶装置
２７０４    読取装置
２７０５    着脱可能記憶媒体
２７０６    通信インタフェース
２７０７    入出力装置
２７０８    バス
２７２０    ネットワーク
２７３０    サーバ
【図１】
2015207085.tif 000015
【図１１】
2015207085.tif 000016
【図１２】
2015207085.tif 000017
【図１３】
2015207085.tif 000018
【図２０】
2015207085.tif 000019
【図２１】
2015207085.tif 000020
【図２２】
2015207085.tif 000021
【図２３】
2015207085.tif 000022
【図２４】
2015207085.tif 000023
【図２５】
2015207085.tif 000024
【図２６】
2015207085.tif 000025
【図２７】
2015207085.tif 000026
【図２】
2015207085.tif 000027
【図３】
2015207085.tif 000028
【図４】
2015207085.tif 000029
【図５】
2015207085.tif 000030
【図６】
2015207085.tif 000031
【図７】
2015207085.tif 000032
【図８】
2015207085.tif 000033
【図９】
2015207085.tif 000034
【図１０】
2015207085.tif 000035
【図１４】
2015207085.tif 000036
【図１５】
2015207085.tif 000037
【図１６】
2015207085.tif 000038
【図１７】
2015207085.tif 000039
【図１８】
2015207085.tif 000040
【図１９】
2015207085.tif 000041