(57)【要約】【課題】処理対象となる原画像の内容に依存することなく、良好なＲｅｔｉｎｅｘ処理のコントラスト補正ができる画像処理プログラムを提供する。【解決手段】Ｒｅｔｉｎｅｘ画像処理におけるクリッピング処理では、原画像データ４０２（またはＲｅｔｉｎｅｘ処理画像データ）を対象として、上限値４０１以上（または下限値以下）の値を有する画素の数の総画素数に対する比率を計算し、比率に基づいてＲｅｔｉｎｅｘ処理画像のハイライト側（またはシャドー側）のクリッピング係数をＲＧＢ各チャンネル独立に算出する。これにより、画像の白飛びや黒つぶれを防止する。【選択図】        図３
2005004510.tif 000002
【特許請求の範囲】
【請求項１】
Ｒｅｔｉｎｅｘ処理をコンピュータに実行させる画像処理プログラムにおいて、
上限値以上の画素値を有する画素の存在比率と、下限値以下の画素値を有する画素の存在比率との少なくとも一方を計算する第１ステップと、
前記計算された存在比率に基づいて、Ｒｅｔｉｎｅｘ処理を施した画像のハイライト側、およびシャドー側の少なくとも一方のクリッピング処理を、ＲＧＢ各チャンネル独立して実行する第２ステップとをコンピュータに実行させる、画像処理プログラム。
【請求項２】
原画像を対象データとして、前記上限値以上の画素値を有する画素の数を総画素数で除算することで得られる比率が、ハイライト側のクリッピング係数となるように、前記第１ステップの存在比率を決定するための上限値は設定される、請求項１に記載の画像処理プログラム。
【請求項３】
Ｒｅｔｉｎｅｘ処理画像を対象データとして、前記下限値以下の画素値を有する画素の数を総画素数で除算することで得られる比率が、シャドー側のクリッピング係数となるように、前記第１ステップの存在比率を決定するための下限値は設定される、請求項１に記載の画像処理プログラム。
【請求項４】
前記第１ステップで、上限値以上の画素値を有する画素の存在比率と、下限値以下の画素値を有する画素の存在比率とを計算し、それぞれをハイライト側、シャドー側の各クリッピング係数におけるオフセット量として予め与える、請求項１に記載の画像処理プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、画像処理プログラムに関し、特にデジタルカメラやフィルムスキャナなどの出力画像の処理においてＲｅｔｉｎｅｘ処理を行なう画像処理プログラムに関する。
【０００２】
【従来の技術】
従来の画像処理の分野では、生体における網膜や皮質と同等の役割をモデル化した画像処理技術として、Ｃｅｎｔｅｒ／Ｓｕｒｒｏｕｎｄ  Ｒｅｔｉｎｅｘ処理が提案されている（例えば、下記特許文献１参照）。
【０００３】
Ｒｅｔｉｎｅｘ処理とは、デジタルデータである画像情報を補正する方法である。Ｒｅｔｉｎｅｘ処理には各種の変形例が考えられるが、ここでは、視覚をモデル化して注目画素に対して周辺情報を加味する画像の補正方法を総括してＲｅｔｉｎｅｘ処理と呼んでいる。Ｒｅｔｉｎｅｘ処理では画像中の明暗部に応じて、局所局所でゲイン調整が変わるため、ダイナミックレンジを圧縮する効果がある。
【０００４】
Ｃｅｎｔｅｒ／Ｓｕｒｒｏｕｎｄ  Ｒｅｔｉｎｅｘアルゴリズムに関して、Ｓｉｎｇｌｅ  Ｓｃａｌｅ  Ｒｅｔｉｎｅｘ（ＳＳＲ）、およびＭｕｌｔｉ  Ｓｃａｌｅ  Ｒｅｔｉｎｅｘ（ＭＳＲ）が知られている。以下にそれぞれのアルゴリズムについて説明する。
【０００５】
Ｓｉｎｇｌｅ  Ｓｃａｌｅ  Ｒｅｔｉｎｅｘ（ＳＳＲ）は、次の式（１）によって表される。式（１）の処理をＲ，Ｇ，Ｂの各チャンネルに対して実行し、統合することでカラー出力画像が得られる。
【０００６】
2005004510.tif 000003
ここで、「＊」はコンボリューション積分を表す。また、Ｔｉ（ｘ，ｙ）はＳＳＲ処理後の画素値を表し、Ｉｉ（ｘ，ｙ）は原画像の画素値を表す。Ｆ（ｘ，ｙ）は、注目画素の周囲の画素を考慮してぼけ画像を作成するためのフィルタに用いられる関数である。Ｆ（ｘ，ｙ）として例えばガウス関数を用いると、Ｆ（ｘ，ｙ）は、次の式（２）および（３）を満たすこととなる。
【０００７】
Ｆ（ｘ，ｙ）＝Ｋ・ｅｘｐ｛−（ｘ２＋ｙ２）／ｃ２｝              …（２）
ΣΣＦ（ｘ，ｙ）＝１                                        …（３）
ここで、ｃはガウス関数における周辺の広がりを決める定数であり、カーネル値と呼ばれる。式（３）を満たすように定数Ｋは定められる。一般的には、ｃの値が小さい程、画像処理においてエッジを強調する効果が高くなり、ｃの値が大きい程、ダイナミックレンジ圧縮の効果が高くなることが知られている。
【０００８】
また、ＳＳＲ処理後の出力画像のコントラストを向上させることを目的に、クリッピング処理が行われる。通常、ヒストグラム分布にして、上下３％前後の画素値はクリッピングしてから、線形変換によって出力ビット数（例えば８ビット）に応じたデジタル値に割り振られる。
【０００９】
図１７は、ぼけ画像作成のためにガウス関数を用いたＳＳＲの具体的な処理を説明するための図である。
【００１０】
図を参照して、ｉ＝Ｒ，Ｇ，Ｂからなるオリジナル画像（処理対象画像）Ｄ２に対して処理が行われる。なお、オリジナル画像においてＲＧＢを合成した画像を図中Ｐ２で示している。
【００１１】
Ｄ２の各画素値は、Ｉｉ（ｘ，ｙ）として示される。ぼけ画像Ｄ４を作成するためにＩｉ（ｘ，ｙ）＊Ｇ（ｘ，ｙ）の演算が行われる。ここにＧ（ｘ，ｙ）はガウス関数である。
【００１２】
オリジナル画像の各画素値を、ぼけ画像の各画素値で除算する処理が行われ、そのｌｏｇを求めることで、Ｒｅｔｉｎｅｘ処理後の画像Ｄ５が得られる。Ｄ５の各画素値をここではＲｉ（ｘ，ｙ）とする。Ｒ，Ｇ，ＢからなるＤ５を合成することで、Ｒｅｔｉｎｅｘ処理後の画像Ｐ１が得られる。
【００１３】
一方、Ｍｕｌｔｉ  Ｓｃａｌｅ  Ｒｅｔｉｎｅｘ（ＭＳＲ）では、式（２）における定数ｃとして、異なる幾つかの値が用いられる。これにより、周辺の広がりが異なるガウス関数によるＳＳＲ処理が行われる。それぞれの結果を足し合わせて平均化することにより、エッジ強調、およびダイナミックレンジ圧縮を同時に達成している。
【００１４】
図１８は、ガウス関数を用いたＭＳＲ処理を説明するための図である。
図を参照して、周辺の広がりが狭いガウス関数（サイズの小さいフィルタ）により作成されたぼけ画像Ｄ４−１、周辺の広がりが中位のガウス関数（サイズの中位のフィルタ）により作成されたぼけ画像Ｄ４−２、および周辺の広がりが広いガウス関数（サイズの大きいフィルタ）により作成されたぼけ画像Ｄ４−３がオリジナル画像Ｄ２に基づいて作成される。
【００１５】
そして、オリジナル画像Ｄ２を各ぼけ画像で除算し、それぞれの対数をとることで、画像Ｄ５−１〜Ｄ５−３が得られる。フィルタサイズが小さい関数で処理を行った画像の方がエッジ強調効果が高く、逆にフィルタサイズが大きい関数で処理を行った画像の方がダイナミックレンジ圧縮の効果が高い。画像Ｄ５−１〜Ｄ５−３を足し合わせて平均化することにより、エッジ強調、およびダイナミックレンジ圧縮を同時に達成することができる。
【００１６】
ＭＳＲは、次の式（４）によって表される。式（４）の処理をｉ＝Ｒ，Ｇ，Ｂの各チャンネルに対して実行し、各スケールから得られる出力に各々重みを掛けて合成することでカラー出力画像を得ることができる。
【００１７】
2005004510.tif 000004
ここで、「＊」はコンボリューション積分を表す。また、Ｔｉ（ｘ，ｙ）はＭＳＲ処理後の画素値を表し、Ｉｉ（ｘ，ｙ）は原画像の画素値を表す。
【００１８】
Ｆｓ（ｘ，ｙ）は、注目画素の周囲の画素を考慮してぼけ画像を作成するためのフィルタに用いられる関数である。Ｆｓ（ｘ，ｙ）としてガウス関数を用いると、Ｆｓ（ｘ，ｙ）は式（５）で表され、式（６）を満たすように定数Ｋは定められる。
【００１９】
ここで、ｃｓはガウス関数における周辺の広がりを決める定数であり、カーネル値と呼ばれる。このｃｓの値に応じてダイナミックレンジ圧縮の効果が異なることが知られている。スケール数Ｓ＝１の場合がＳＳＲに相当し、通常のＭＳＲでは、Ｓ＝３程度が普通である。ｗｓは各スケールに対する重み係数であり、式（７）を満足するものである。例えば、Ｓ＝３の場合にｗｓ＝１／３として各スケールの出力が平均化される。
【００２０】
また、Ｒｅｔｉｎｅｘ処理後の出力画像Ｔｉ（ｘ，ｙ）に対して、コントラストを向上させることを目的に、クリッピング処理が行われる。通常、ヒストグラム分布にして、上下３％前後の画素値をクリッピングし、線形変換によって出力ビット数（例えば８ビット）に応じたデジタル値に割り振る。
【００２１】
この３％などのクリッピングを行なう量を示す係数は、「クリッピング係数」と呼ばれている。
【００２２】
ネガフィルムなどからフィルムスキャナによってデジタル化された画像データや、デジタルスチルカメラなどで撮影されたデジタル画像データに対して以上のようなＳＳＲ、およびＭＳＲ処理を適用する研究が盛んに行われている。
【００２３】
また、以下の特許文献２は、画像の異なる領域間の小さなコントラスト差を維持しながら、画像の異なる領域間の大きなコントラスト差を縮小する技術を開示している。
【００２４】
また、以下の非特許文献１は、Ｒｅｔｉｎｅｘ処理を線形演算で構成することを開示している。
【００２５】
【特許文献１】
米国特許第５，９９１，４５６号明細書
【００２６】
【特許文献２】
特開２００１−２４５１５４号公報
【００２７】
【非特許文献１】
小林正明、小寺宏嘩、「Ｒｅｔｉｎｅｘモデルによる画像の見えの改善」、カラーフォーラムＪＡＰＡＮ２００１（第４７回光学四学会連合講演会、２００１年１１月１３日〜１５日開催）予稿集
【００２８】
【発明が解決しようとする課題】
ところが、上述したＲｅｔｉｎｅｘ画像処理における従来のクリッピング処理では、ＲＧＢ各チャンネルに対して一律の値のクリッピング係数が適用されるため、原画像の内容によっては、白飛びや黒つぶれを引き起こす場合があるという問題があった。
【００２９】
本発明の目的は、処理対象となる原画像の内容に依存することなく、良好なＲｅｔｉｎｅｘ処理のクリッピング処理ができる画像処理プログラムを提供することを目的としている。
【００３０】
【課題を解決するための手段】
上記目的を達成するため、この発明のある局面に従うと、Ｒｅｔｉｎｅｘ処理をコンピュータに実行させる画像処理プログラムは、上限値以上の画素値を有する画素の存在比率と、下限値以下の画素値を有する画素の存在比率との少なくとも一方を計算する第１ステップと、計算された存在比率に基づいて、Ｒｅｔｉｎｅｘ処理を施した画像のハイライト側、およびシャドー側の少なくとも一方のクリッピング処理を、ＲＧＢ各チャンネル独立して実行する第２ステップとをコンピュータに実行させる。
【００３１】
この発明に従うと、上限値以上の画素値を有する画素の存在比率と、下限値以下の画素値を有する画素の存在比率との少なくとも一方に基づいて、Ｒｅｔｉｎｅｘ処理を施した画像のハイライト側、およびシャドー側の少なくとも一方のクリッピング処理を、ＲＧＢ各チャンネル独立して実行することができるため、処理対象となる原画像の内容に依存することなく、良好なＲｅｔｉｎｅｘ処理のクリッピング処理ができる画像処理プログラムを提供することが可能となる。
【００３２】
好ましくは、原画像を対象データとして、上限値以上の画素値を有する画素の数を総画素数で除算することで得られる比率が、ハイライト側のクリッピング係数となるように、第１ステップの存在比率を決定するための上限値は設定される。
【００３３】
このように発明を構成することで、ハイライト側のクリッピング係数を良好に設定することが可能となる。
【００３４】
好ましくは、Ｒｅｔｉｎｅｘ処理画像を対象データとして、下限値以下の画素値を有する画素の数を総画素数で除算することで得られる比率が、シャドー側のクリッピング係数となるように、第１ステップの存在比率を決定するための下限値は設定される。
【００３５】
このように発明を構成することで、シャドー側のクリッピング係数を良好に設定することが可能となる。
【００３６】
好ましくは画像処理プログラムは、第１ステップで、上限値以上の画素値を有する画素の存在比率と、下限値以下の画素値を有する画素の存在比率とを計算し、それぞれをハイライト側、シャドー側の各クリッピング係数におけるオフセット量として予め与える。
【００３７】
このように発明を構成することで、ハイライト側、シャドー側の各クリッピング係数を容易に設定することが可能となる。
【００３８】
【発明の実施の形態】
本発明の実施の形態に開示される画像処理方法、画像処理プログラムおよび画像処理装置などでは、Ｒｅｔｉｎｅｘ処理の後処理として行なうクリッピング係数をＲＧＢ各チャンネルで独立に変更することとしている。
【００３９】
より詳しくは、本実施の形態における画像処理プログラムなどでは、ＲＧＢ各々のチャンネルで、上限値以上の画素値を有する画素の存在比率を計算し、下限値以下の画素値を有する画素の存在比率を計算し、各々の存在比率に基づいてＲｅｔｉｎｅｘ処理画像のハイライト側とシャドー側のクリッピング処理をＲＧＢ各チャンネル独立して実行することとしている。
【００４０】
本発明の構成によると、処理対象となる原画像、もしくはＲｅｔｉｎｅｘ処理画像において、総画素数に対するしきい値以上、もしくはしきい値以下の画素値を有する画素の数の比率に応じて、ＲＧＢ各チャンネルに対するクリッピング係数を独立して生成してオフセット量とするため、新たな白飛びや黒つぶれを起こさずに良好なＲｅｔｉｎｅｘ画像処理のコントラスト補正ができる画像処理プログラムなどを提供することができる。
【００４１】
以下に本発明の実施の形態について、図面を参照しながら順に説明する。
［第１の実施の形態］
図１は、第１の実施の形態におけるＲｅｔｉｎｅｘ処理を行なう撮像装置の構成を示すブロック図である。図中、画像データの流れを矢印で示している。
【００４２】
図を参照して撮影装置は、撮像デバイスとしてのＣＣＤイメージセンサ１０１と、Ａ／Ｄコンバータ１０２と、Ｒｅｔｉｎｅｘ処理部１０３と、クリッピング処理部１０７と、γ補正部１０４と、表示・保存部１０５とを備えている。
【００４３】
ＣＣＤイメージセンサ１０１は、光電変換によって入射光から電気信号であるアナログ信号Ｒ，Ｇ，Ｂを生成する。Ａ／Ｄコンバータ１０２はアナログ信号Ｒ，Ｇ，Ｂを、例えば８ｂｉｔの離散的なデジタル信号Ｒ，Ｇ，Ｂに変換する。Ｒｅｔｉｎｅｘ処理部１０３は、Ａ／Ｄコンバータ１０２でＡ／Ｄ変換のみ施されたデジタル画像信号に対して、ＳＳＲやＭＳＲなどのＲｅｔｉｎｅｘ処理を各ＲＧＢのチャンネルに対して独立に行なう。
【００４４】
クリッピング処理部１０７は、Ｒ，Ｇ，Ｂ各チャンネル独立して、クリッピング係数を算出し、算出されたクリッピング係数に基づき、Ｒ，Ｇ，Ｂ各チャンネル独立してクリッピング処理を行なう。
【００４５】
γ補正部１０４は、Ｒｅｔｉｎｅｘ出力に対して、後工程である表示・保存工程で求められる所定のγ補正を行なう。
【００４６】
最後に、表示・保存部１０５では、γ補正部１０４で所定のγ処理が施された画像データをモニタなどに表示、またはハードディスクなどに保存する。
【００４７】
図１に示した構成をデジタルスチルカメラ内部などでハード的に実行することも可能であるが、一旦保存された画像データに対して、パソコンなどにインストールされたアプリケーションを用いて、ソフト的に上述したＲｅｔｉｎｅｘ処理、クリッピング処理、およびγ補正処理などの画像処理を実行することも可能である。
【００４８】
なお、上記（１）、（４）式で示されるＲｅｔｉｎｅｘ処理にはコンボリューション積分が含まれているため、その処理速度はＦ（ｘ，ｙ）で示されるガウス関数などのフィルタのサイズや画像サイズそのものに大きく依存する。一般に、Ｒｅｔｉｎｅｘ処理に用いられるフィルタのサイズは非常に大きく、比較的解像度の低い画像（例えば６４０×４８０画素のＶＧＡ）でも、カーネル値ｃ＝１００程度のサイズのフィルタが用いられることが多い。このような場合、最近の高速な処理を行なうパーソナルコンピュータでもその処理を完了するまでに数時間かかってしまうことがあり、実用的ではない。
【００４９】
コンボリューション積分を高速に実行する方法として、周波数領域で計算を実行する手法であるフーリエ変換が知られている。デジタル画像のような離散的な信号に対しては、ＦＦＴ（Ｆａｓｔ  Ｆｏｕｒｉｅｒ  Ｔｒａｎｓｆｏｒｍｓ）やＤＦＴ（Ｄｉｓｃｒｅｔｅ  Ｆａｓｔ  Ｆｏｕｒｉｅｒ  Ｔｒａｎｓｆｏｒｍｓ）といった高速処理手法が適用できる。上記（１）式のコンボリューション積分は、画像サイズが２のべき乗の場合、式（８）で表現することができる。
【００５０】
2005004510.tif 000005
ここで、ＦＦＴ−１は逆ＦＦＴを、「・」は周波数領域での掛け算を表す。この場合、その処理速度はＦ（ｘ，ｙ）で表されるガウス関数のフィルタサイズには関係なく、画像サイズそのものに依存することになる。なお、画像サイズが２のべき乗でない場合、ＤＦＴを代用に用いることができる。
【００５１】
図２は、Ｒｅｔｉｎｅｘ処理の後処理として行われるクリッピング処理を説明するための図である。
【００５２】
従来の技術においては、Ｒｅｔｉｎｅｘ処理の後処理として行なうクリッピング処理において、クリップする比率が多過ぎることで、例えば新たな白飛びを引き起こしてしまうなどの問題があった。このため、処理対象となる原画像の内容によってはクリッピング係数を調整する必要があり、また、その比率の決め方が不明確であるという問題があった。
【００５３】
つまり、上述したように、クリッピング処理を一律の定数として上下各３％ずつクリップすることも考えられるが、これにより画像内容によっては、新たな白飛びや黒つぶれといった不具合を引き起こしてしまう場合もあった。
【００５４】
図２においては、一般的なクリッピング処理を説明するためのＲｅｔｉｎｅｘ処理画像のヒストグラムが示されている。
【００５５】
横軸の画素値は、Ｒｅｔｉｎｅｘ処理画像において実数で表現された画素値から生成されるスケールである。横軸の画素値は、ヒストグラム表示するために実数スケールから所定の間隔毎にサンプリングされている。
【００５６】
縦軸の頻度は、所定の間隔でサンプリングされた画素の個数を集計したものであり、画素の出現数に相当する。例えば、ある画像のＲｅｔｉｎｅｘ処理画像におけるヒストグラムが図中の曲線のような出現頻度であったとする。
【００５７】
ここで、従来技術のように、クリッピング処理を一律の定数として上下各３％ずつクリップする（クリッピング係数＝３％）場合を仮定する。クリップＬ以下の画素値を有する画素の“Ａ”の領域、つまり、クリップＬ以下の画素値を有する画素の数の総和、および、クリップＨ以上の画素値を有する画素の“Ｂ”の領域、つまり、クリップＨ以上の画素値を有する画素の数の総和は各々、図中曲線の総領域（すなわち総画素数）の３％に相当するように、クリップＬとクリップＨとは決定される。
【００５８】
“Ａ”の領域に存在する画素は、すべてクリップＬの画素値にクリップされ、所定のデジタル値（例えば０）に割り振られる。“Ｂ”の領域に存在する画素は、すべてクリップＨの画素値にクリップされ、所定のデジタル値（例えば２５５）に割り振られる。こうして、すべての画素をクリップＬからクリップＨの間に存在させて、例えば８ビットで表現されるモニタなどに表示するために、クリップＬからクリップＨまでの間が２５６階調に線形に割り付けられる。
【００５９】
本実施の形態では、このクリッピング係数（％）をＲＧＢの各チャンネルで独立に変更する。
【００６０】
図３は、図１のクリッピング処理部１０７のハイライト側クリッピング係数の算出部を示すブロック図である。
【００６１】
ＲＧＢの各チャンネルにおいて、原画像データ４０２に対して所定の上限値４０１を定め、その上限値以上の画素値を有する画素の数を算出部４０３により算出する。また、算出部４０４で原画像データの４０２の総画素数を求める。演算器４０６は、上限値以上の画素値を有する画素の数を、総画素数で除算する。これにより算出された割合は、ハイライト側クリッピング係数４０５とされる。
【００６２】
ここで、原画像データ４０２を対象とする理由は、通常、Ｒｅｔｉｎｅｘ処理画像の画素値でハイライト側の取り得る最大値は画像内容に応じて変化するからである。そのため、Ｒｅｔｉｎｅｘ処理画像を対象に参照する上限値を設定することが難しい。一方、原画像であれば、通常の８ビット（カラー：２４ビット）画像であれば、とりうる最大値は２５５と限定することができる。例えば、上限値を“２５５”と設定する場合、各チャンネルのハイライト側の飽和画素の比率がハイライト側クリッピング係数４０５として適用される。従って、各チャンネルにおいておおよそ元々飽和しているレベルの画素をクリップすることができ、新たな白飛びなどを起こすことなくクリッピングが実行される。また、各チャンネルにおいて上限値４０１を異ならせるようにすることも可能である。
【００６３】
図４は、図１のクリッピング処理部１０７のシャドー側クリッピング係数の算出部を示すブロック図である。
【００６４】
ＲＧＢの各チャンネルにおいて、そのＲｅｔｉｎｅｘ処理画像データ５０２に対して所定の下限値５０１を定め、その下限値以下の画素値を有する画素の数を算出部５０３により算出する。また、算出部５０４でＲｅｔｉｎｅｘ処理画像データ５０２の総画素数を求める。演算器５０６は、下限値以下の画素値を有する画素の数を、総画素数で除算する。これにより算出された割合は、シャドー側クリッピング係数５０５とされる。
【００６５】
ここで、Ｒｅｔｉｎｅｘ処理画像データ５０２を対象とする理由は、ハイライト側とは異なり、Ｒｅｔｉｎｅｘ処理画像データ５０２のシャドー側最小値を元に、実数のためより高精度にクリッピング係数５０５を算出することができるからである。特に、Ｃｅｎｔｅｒ／Ｓｕｒｒｏｕｎｄ  Ｒｅｔｉｎｅｘアルゴリズムにおいて、対数変換を行なう前の線形Ｒｅｔｉｎｅｘ出力が負の値になることはない。そのため、線形Ｒｅｔｉｎｅｘ処理画像を対象として下限値を設定することが可能であり、線形Ｒｅｔｉｎｅｘ処理画像のとりうる最小値は０と限定することができる。
【００６６】
例えば、下限値５０１を“０．０１”と設定することで、シャドー側クリッピング係数５０５が算出される。従って、下限値５０１を調整することで、新たな黒つぶれなどを起こすことなくクリッピングが実行される。同じく、各チャンネルにおいて下限値５０１を異ならせるようにすることも可能である。
【００６７】
もちろん、ハイライト側同様、原画像を対象とすることも可能である。Ｒｅｔｉｎｅｘ処理画像データ５０２の代わりに原画像データを用い、例えば、下限値５０１を“０”と設定する場合、各チャンネルのシャドー側の飽和画素の比率がシャドー側クリッピング係数５０５として適用される。従って、各チャンネルにおいて元々飽和しているレベルをクリップすることができ、新たな黒つぶれなどを起こすことなくクリッピングが実行される。
【００６８】
また、図３により算出されたハイライト側クリッピング係数、および、図４により算出されたシャドー側クリッピング係数を各々オフセット値（初期値）として予め与えておき、さらにクリップ率の加算値を各々に加算することとしてもよい。
【００６９】
図５では、図３で求めたＲＧＢそれぞれにおけるハイライト側クリッピング係数を初期値６０１〜６０３とし、それらに対して、演算器６０８〜６１０によりさらに一律の加算値６０４を各々に加算し、ハイライト側クリッピング係数６０５〜６０７を算出する構成を示すブロック図である。
【００７０】
加算値６０４は、ユーザーが好ましいコントラストになるようにＧＵＩなどを介して調整できる構成としてもよい。こうすることで、例えば、原画像のうち“２５５”の画素値を有する画素の占める比率をハイライト側クリッピング係数初期値として設定すれば、各チャンネルに対して予め異なるオフセット値が与えられることとなるため、ダイナミックなコントラスト調整が可能となる。
【００７１】
図６では、シャドー側クリッピング係数７０１〜７０３に対して、さらに一律の加算値７０４を各々に加算し、シャドー側クリッピング係数７０５〜７０７を算出する構成を示すブロック図である。
【００７２】
加算値７０４は、同様にユーザーが好ましいコントラストになるようにＧＵＩなどを介して調整できる構成としてもよい。こうすることで、例えば、原画像のうち“０”の画素値を有する画素の占める比率をシャドー側クリッピング係数初期値として設定すれば、各チャンネルに対して予め異なるオフセット値が与えられることとなるため、同じくダイナミックなコントラスト調整が可能となる。
【００７３】
図７は、ハイライト側クリッピング係数初期値８０１〜８０３に対して、さらに各チャンネルで演算器８１０〜８１２により、加算値８０４〜８０６を各々に加算し、ハイライト側クリッピング係数８０７〜８０９を算出する構成を示すブロック図である。
【００７４】
特に、ハイライト側のクリッピング係数は出力画像の色再現に大きく影響する。具体的には、例えば、Ｒチャンネルの加算値８０４を大きく設定することで、出力画像は次第に赤が強い色調に変化する。同様に、Ｇチャンネルの加算値８０５を大きく設定することで、出力画像は次第に緑が強い色調に変化する。Ｂチャンネルの加算値８０６を大きく設定することで、出力画像は次第に青が強い色調に変化する。ここでも、ユーザーが好ましいコントラストや色調になるようにＧＵＩなどを介して各々を調整できる構成としてもよい。
【００７５】
また、図示しないが、各シャドー側クリッピング係数初期値に対して、さらに各チャンネルで加算値を独立して加算し、シャドー側クリッピング係数を算出する構成を採用してもよい。
【００７６】
図８は、ＲＡＷデータに対してＲｅｔｉｎｅｘ処理とクリッピング処理とを適用する場合を説明するためのＲＡＷデータの分版（左からＲ，Ｇ，Ｂ）を示す図である。
【００７７】
ここでＲＡＷデータとは、ＣＣＤイメージセンサや、ＣＭＯＳイメージセンサなどの撮像デバイスの電気信号に対してＡ／Ｄ変換を行った直後のデータを示す。なお、「Ａ／Ｄ変換を行なった直後」とは、少なくともγ補正が施される前の段階を示し、好ましくは色補正や、ＭＴＦ補正が施されていない段階である。撮像デバイスの画素間における感度ばらつきなどのハードウェア調整のための補正や、ｇａｍｕｔなどの色相変換を行っていてもＲＡＷデータとみなしてよい。更には、例えば撮像デバイスとしてカラーフィルタを有したエリア型センサである場合、Ａ／Ｄ変換後に各色の画像データについて画素補間の処理が施されるが、このような補間処理後の画像データもＲＡＷデータとみなしてよい。
【００７８】
ＲＡＷデータは、ゲイン調整がされていない。従って例えば、図８における窓越しの背景部において、ＲとＢには存在する内容で、Ｇには存在しない内容があり、単純に重ねると窓越しの背景部において、カラーバランスの崩れた内容が現れることになる。そのため、ＲＡＷデータを現像する際、一般的には例えば、Ｇ面の感度に合わせてＲ面とＢ面のゲイン調整をし、各々オーバーフローした部分を最大値（例えば“２５５”）にクリップする処理が行われる。
【００７９】
本実施の形態においても、このゲイン値から各チャンネルに対するクリッピング係数を計算することが可能である。具体的には、例えば、ゲイン“１．５”というチャンネルがあれば、そのチャンネルの画素値を全て１．５倍し、オーバーフローした画素の数の全画素数に対する比率を、そのチャンネルのハイライト側クリッピング係数と設定することで、本発明を実施することができる。
【００８０】
図９〜１２は、本実施の形態における効果を説明するための図である。
図９および１０は、黒つぶれを説明するための図であり、図１１および図１２は、白飛びを説明するための図である。
【００８１】
図９は、従来技術のように各チャンネル３％づつシャドー側をクリッピング処理した例であり、図１０は本実施の形態のように各チャンネル独立してシャドー側をクリッピング処理した例である。
【００８２】
図１１は、従来技術のように各チャンネル３％づつハイライト側をクリッピング処理した例であり、図１２は本実施の形態のように各チャンネル独立してハイライト側をクリッピング処理した例である。
【００８３】
特に、図９および１０においては、画像中の暗い部分、図１１および１２においては画像中の明るい部分を参照すると、本発明の実施により黒つぶれ（図９）や白飛び（図１１）が解消されることがわかる。
【００８４】
以上説明したように本実施の形態によると、処理対象となる原画像、もしくはＲｅｔｉｎｅｘ処理画像において、総画素数に対する上限値以上、もしくは下限値以下の画素値を有する画素の数の比率に応じて、ＲＧＢ各チャンネルに対するクリッピング係数を独立して生成して初期値とすることで、新たな白飛びや黒つぶれを起こさずに良好なＲｅｔｉｎｅｘ画像処理のコントラスト補正ができる画像処理プログラムを提供することができる。
【００８５】
［第２の実施の形態］
図１３は、本発明の第２の実施の形態におけるデジタルカメラの構成を示すブロック図である。
【００８６】
図を参照して、デジタルカメラは、レンズＬと、レンズを駆動するレンズ制御部２０９と、ＣＣＤイメージセンサ２０１と、ＣＣＤイメージセンサの出力をＡ／Ｄ変換するＡ／Ｄコンバータ２０３と、画像処理のためのＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）２０５と、バッファメモリ２０７と、ＣＰＵ２１１と、ＲＡＭ２１３と、ＲＯＭ（ファームウェアメモリ）２１５と、画像表示部２２１と、カードインタフェース２１７と、メモリカード２１９とを備えている。
【００８７】
ＡＳＩＣ２０５内のモジュールとして、Ｒｅｔｉｎｅｘ処理回路２５１、色補間回路２５３、γ補正回路２５５、色空間変換回路２５７、および画像圧縮回路２５９が設けられている。
【００８８】
ＡＳＩＣ２０５内では、Ａ／Ｄコンバータ２０３からの入力に対して、図の左のモジュールから順に処理が行なわれる。ＡＳＩＣ２０５内のモジュールはバッファメモリ２０７を共有しており、ＣＰＵ２１１は、どのモジュールがメモリにアクセスするかのタイミングコントロールを行なう。
【００８９】
本実施の形態においても、デジタルカメラのＲｅｔｉｎｅｘ処理回路２５１において、第１の実施の形態と同様のＲｅｔｉｎｅｘ処理およびクリッピング処理を適用する。
【００９０】
なお、図１３の回路構成は、デジタルビデオカメラ、スキャナ、フィルムスキャナなどに対しても応用することができる。
【００９１】
［第３の実施の形態］
図１４は、本発明の第３の実施の形態における、プログラムを実行するコンピュータの構成を示すブロック図である。
【００９２】
図を参照して、コンピュータは、装置全体の制御を行なうＣＰＵ３０１と、表示部３０３と、ネットワークに接続したり外部と通信を行なうためのＬＡＮ（ローカルエリアネットワーク）カード３０５（またはモデムカード）と、キーボードやマウスなどにより構成される入力部３０７と、フレキシブルディスクドライブ３０９と、ＣＤ−ＲＯＭドライブ３１１と、ハードディスクドライブ３１３と、ＲＯＭ３１５と、ＲＡＭ３１７とを備えている。
【００９３】
以後のフローチャートに示される、ＣＰＵ（コンピュータ）３０１を駆動させるためのプログラムは、フレキシブルディスク（Ｆ１）やＣＤ−ＲＯＭ（Ｃ１）やハードディスクドライブ３１３などの記録媒体に記録することができる。このプログラムは、ＣＰＵ３０１により読出され、記録媒体からＲＡＭその他の記録媒体に送られ、記録される。プログラムはＲＡＭなどをワークエリアとして実行される。なお、プログラムはＲＯＭ、ＲＡＭ、メモリカードなどの記録媒体に記録してユーザに提供するようにしてもよい。また、インターネットを介して外部のサイトなどよりそのようなプログラムをワークステーションやコンピュータにダウンロードして実行させるようにしてもよい。
【００９４】
図１５は、図１４のコンピュータが実行するＲｅｔｉｎｅｘ処理を示すフローチャートである。
【００９５】
図を参照して、ＣＣＤイメージセンサなどにより得られたアナログデータＤ１は、ステップＳ１０１でＡ／Ｄ変換器により変換され、原画像データＤ２とされる。これがステップＳ１０３で、コンピュータ内においてフーリエ変換される。
【００９６】
一方ステップＳ１０５では、ガウス周辺関数Ｄ３がフーリエ変換される。ステップＳ１０７で、ステップＳ１０３およびＳ１０５で得られたデータの周波数領域での掛け算が行なわれる。その後、ステップＳ１０９で逆フーリエ変換が行なわれることでぼけ画像Ｄ４が得られる。
【００９７】
ステップＳ１１１で、Ｄ２をＤ４で割り、ステップＳ１１３でそれをｌｏｇ処理することで、Ｒｅｔｉｎｅｘ出力Ｄ５が得られる。
【００９８】
その後、Ｒｅｔｉｎｅｘ出力に対し、γ補正（ステップＳ１１５）、その他画像処理（ステップＳ１１７）、クリッピング処理（ステップＳ１１９）、および８ｂｉｔ割り付け処理（ステップＳ１２１）が行なわれる。その後、画像が表示される（ステップＳ１２３）。
【００９９】
図１６は、図１５のステップＳ１１９で行なわれるクリッピング処理の詳細を示すフローチャートである。
【０１００】
図を参照して、ステップＳ２０１で、第１の実施の形態と同様にＲ，Ｇ，Ｂごとにハイライト側のクリッピング係数が算出される。ステップＳ２０４で、Ｒ，Ｇ，Ｂごとにシャドー側のクリッピング係数が算出される。
【０１０１】
ステップＳ２０５で、ハイライト側クリッピング係数への加算値の加算処理が行なわれる。ステップＳ２０７で、シャドー側クリッピング係数への加算値の加算処理が行なわれる。
【０１０２】
ステップＳ２０９で、Ｒ，Ｇ，Ｂそれぞれにおけるクリッピング処理が独立して行なわれる。
【０１０３】
なお、インターネットなどの通信回線を通じて送信されてきた画像データに対して上述の画像処理を行ってもよいし、その結果を通信回線を通じて他の装置へ送信するようにしてもよい。
【０１０４】
（発明の他の構成例）
なお、上述した具体的実施形態には以下の構成を有する発明が含まれている。
【０１０５】
（１）  Ｒｅｔｉｎｅｘ処理をコンピュータに実行させる画像処理プログラムを記録したコンピュータ読取可能な記録媒体において、
上限値以上の画素値を有する画素の存在比率と、下限値以下の画素値を有する画素の存在比率との少なくとも一方を計算する第１ステップと、
前記計算された存在比率に基づいて、Ｒｅｔｉｎｅｘ処理を施した画像のハイライト側、およびシャドー側の少なくとも一方のクリッピング処理を、ＲＧＢ各チャンネル独立して実行する第２ステップとをコンピュータに実行させる、画像処理プログラムを記録したコンピュータ読取可能な記録媒体。
【０１０６】
（２）  Ｒｅｔｉｎｅｘ処理を実行する方法において、
上限値以上の画素値を有する画素の存在比率と、下限値以下の画素値を有する画素の存在比率との少なくとも一方を計算する第１ステップと、
前記計算された存在比率に基づいて、Ｒｅｔｉｎｅｘ処理を施した画像のハイライト側、およびシャドー側の少なくとも一方のクリッピング処理を、ＲＧＢ各チャンネル独立して実行する第２ステップとを備える、Ｒｅｔｉｎｅｘ処理を実行する方法。
【０１０７】
（３）  原画像を対象データとして、前記上限値以上の画素値を有する画素の数を総画素数で除算することで得られる比率が、ハイライト側のクリッピング係数となるように、前記第１ステップの存在比率を決定するための上限値は設定される、（１）または（２）に記載の画像処理プログラムを記録したコンピュータ読取可能な記録媒体または方法。
【０１０８】
（４）  Ｒｅｔｉｎｅｘ処理画像を対象データとして、前記下限値以下の画素値を有する画素の数を総画素数で除算することで得られる比率が、シャドー側のクリッピング係数となるように、前記第１ステップの存在比率を決定するための下限値は設定される、（１）または（２）に記載の画像処理プログラムを記録したコンピュータ読取可能な記録媒体または方法。
【０１０９】
（５）  前記第１ステップで、上限値以上の画素値を有する画素の存在比率と、下限値以下の画素値を有する画素の存在比率とを計算し、それぞれをハイライト側、シャドー側の各クリッピング係数におけるオフセット量として予め与える（１）に記載の画像処理プログラムを記録したコンピュータ読取可能な記録媒体または方法。
【０１１０】
（６）  Ｒｅｔｉｎｅｘ処理を実行する画像処理装置において、
上限値以上の画素値を有する画素の存在比率と、下限値以下の画素値を有する画素の存在比率との少なくとも一方を計算する第１手段と、
前記計算された存在比率に基づいて、Ｒｅｔｉｎｅｘ処理を施した画像のハイライト側、およびシャドー側の少なくとも一方のクリッピング処理を、ＲＧＢ各チャンネル独立して実行する第２手段とを備える、画像処理装置。
【０１１１】
（７）  原画像を対象データとして、前記上限値以上の画素値を有する画素の数を総画素数で除算することで得られる比率が、ハイライト側のクリッピング係数となるように、前記第１手段の存在比率を決定するための上限値は設定される、（６）に記載の画像処理装置。
【０１１２】
（８）  Ｒｅｔｉｎｅｘ処理画像を対象データとして、前記下限値以下の画素値を有する画素の数を総画素数で除算することで得られる比率が、シャドー側のクリッピング係数となるように、前記第１手段の存在比率を決定するための下限値は設定される、（６）に記載の画像処理装置。
【０１１３】
（９）  前記第１手段で、上限値以上の画素値を有する画素の存在比率と、下限値以下の画素値を有する画素の存在比率とを計算し、それぞれをハイライト側、シャドー側の各クリッピング係数におけるオフセット量として予め与える、（６）に記載の画像処理装置。
【０１１４】
（この構成によると、上限値以上の画素値を有する画素の存在比率と、下限値以下の画素値を有する画素の存在比率との少なくとも一方に基づいて、Ｒｅｔｉｎｅｘ処理を施した画像のハイライト側、およびシャドー側の少なくとも一方のクリッピング処理を、ＲＧＢ各チャンネル独立して実行することができるため、処理対象となる原画像の内容に依存することなく、良好なＲｅｔｉｎｅｘ処理のクリッピング処理ができる画像処理プログラムを記録したコンピュータ読取可能な記録媒体、方法、または装置を提供することができる。）
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【０１１５】
【発明の効果】
本発明によると、上限値以上の画素値を有する画素の存在比率と、下限値以下の画素値を有する画素の存在比率との少なくとも一方に基づいて、Ｒｅｔｉｎｅｘ処理を施した画像のハイライト側、およびシャドー側の少なくとも一方のクリッピング処理を、ＲＧＢ各チャンネル独立して実行することができるため、処理対象となる原画像の内容に依存することなく、良好なＲｅｔｉｎｅｘ処理のクリッピング処理ができる画像処理プログラムを提供することができる。
【図面の簡単な説明】
【図１】第１の実施の形態におけるＲｅｔｉｎｅｘ処理を行なう撮像装置の構成を示すブロック図である。
【図２】Ｒｅｔｉｎｅｘ処理画像におけるコントラスト補正として行なうクリッピング処理の概念図である。
【図３】図１のクリッピング処理部１０７のハイライト側クリッピング係数の算出部を示すブロック図である。
【図４】図１のクリッピング処理部１０７のシャドー側クリッピング係数の算出部を示すブロック図である。
【図５】生成したハイライト側クリッピング係数を初期値として、さらに各チャンネル一律の加算値を加算して新たにハイライト側クリッピング係数を生成する処理を示すブロック図である。
【図６】生成したシャドー側クリッピング係数を初期値として、さらに各チャンネル一律の加算値を加算して新たにシャドー側クリッピング係数を生成する処理を示すブロック図である。
【図７】生成したハイライト側クリッピング係数を初期値として、さらに各チャンネル独立に加算値を加算して新たにハイライト側クリッピング係数を生成する処理を示すブロック図である。
【図８】本発明の一実施例を説明するためのＲＡＷデータ分版を示す図である。
【図９】従来技術の問題点を説明するための処理結果を示す図である。
【図１０】本発明の効果を説明するための処理結果を示す図である。
【図１１】従来技術の問題点を説明するための処理結果を示す図である。
【図１２】本発明の効果を説明するための処理結果を示す図である。
【図１３】本発明の第２の実施の形態におけるデジタルカメラの構成を示すブロック図である。
【図１４】本発明の第３の実施の形態における、プログラムを実行するコンピュータの構成を示すブロック図である。
【図１５】図７のコンピュータが実行するＲｅｔｉｎｅｘ処理を示すフローチャートである。
【図１６】図８のステップＳ１１９で行なわれる処理の詳細を示すフローチャートである。
【図１７】ぼけ画像作成のためにガウス関数を用いたＳＳＲの具体的な処理を説明するための図である。
【図１８】ガウス関数を用いたＭＳＲ処理を説明するための図である。
【符号の説明】
１０１  ＣＣＤイメージセンサ、１０２  Ａ／Ｄコンバータ、１０３  Ｒｅｔｉｎｅｘ処理部、１０４  γ補正部、１０５  表示・保存部、Ｌ  レンズ、２０１  ＣＣＤイメージセンサ、２０３  Ａ／Ｄコンバータ、２０５  ＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）、２０７  バッファメモリ、２０９レンズ制御部、２１１  ＣＰＵ、２１３  ＲＡＭ、２１５  ＲＯＭ（ファームウェアメモリ）、２１７  カードインタフェース、２１９  メモリカード、２２１  画像表示部、２５１  Ｒｅｔｉｎｅｘ処理回路、２５３  色補間回路、２５５  γ補正回路、２５７  色空間変換回路、２５９  画像圧縮回路、３０１  ＣＰＵ、３０３  表示部、３０５  ＬＡＮカード、３０７  入力部、３０９  フレキシブルディスクドライブ、３１１  ＣＤ−ＲＯＭドライブ、３１３  ハードディスクドライブ、３１５  ＲＯＭ、３１７  ＲＡＭ、４０１  上限値、４０２  原画像データ、４０３  上限値以上の画素値を有する画素数算出部、４０４  総画素数算出部、４０５  ハイライト側クリッピング係数、５０１  下限値、５０２  Ｒｅｔｉｎｅｘ処理画像データ、５０３  下限値以下の画素値を有する画素数算出部、５０４  総画素数算出部、５０５  シャドー側クリッピング係数、６０１，８０１  ハイライト側クリッピング係数（Ｒ）初期値、６０２，８０２  ハイライト側クリッピング係数（Ｇ）初期値、６０３，８０３  ハイライト側クリッピング係数（Ｂ）初期値、６０４  加算値、６０５，８０７  ハイライト側クリッピング係数（Ｒ）、６０６，８０８  ハイライト側クリッピング係数（Ｇ）、６０７，８０９  ハイライト側クリッピング係数（Ｂ）、７０１  シャドー側クリッピング係数（Ｒ）初期値、７０２  シャドー側クリッピング係数（Ｇ）初期値、７０３  シャドー側クリッピング係数（Ｂ）初期値、７０４  加算値、７０５  シャドー側クリッピング係数（Ｒ）、７０６  シャドー側クリッピング係数（Ｇ）、７０７  シャドー側クリッピング係数（Ｂ）、８０４  加算値Ｒ、８０５  加算値Ｇ、８０６  加算値Ｂ、Ｆ１  フレキシブルディスク、Ｃ１  ＣＤ−ＲＯＭ、Ｄ１  アナログ画像、Ｄ２  オリジナルデジタル画像、Ｄ４  ぼけ画像、Ｄ５  Ｒｅｔｉｎｅｘ出力画像、Ｌ  シャドー側クリップ、Ｈ  ハイライト側クリップ。
【図１】
2005004510.tif 000006
【図２】
2005004510.tif 000007
【図３】
2005004510.tif 000008
【図４】
2005004510.tif 000009
【図５】
2005004510.tif 000010
【図６】
2005004510.tif 000011
【図７】
2005004510.tif 000012
【図８】
2005004510.tif 000013
【図９】
2005004510.tif 000014
【図１０】
2005004510.tif 000015
【図１１】
2005004510.tif 000016
【図１２】
2005004510.tif 000017
【図１３】
2005004510.tif 000018
【図１４】
2005004510.tif 000019
【図１５】
2005004510.tif 000020
【図１６】
2005004510.tif 000021
【図１７】
2005004510.tif 000022
【図１８】
2005004510.tif 000023