以下、本発明の実施形態を、図面を用いて説明する。
(第1の実施形態)
図1は、本発明を適用可能な画像処理装置の構成例を示すブロック図である。
画像処理装置100は、CPU101、ROM102、RAM103、プリンタエンジン104、タッチパネル等のユーザインタフェース105、表示装置106、メモリーカードリーダー107、入出力インタフェース108を備える。これらの要素は、システムバス109を介して接続される。画像処理装置100は、入出力インタフェース108を介して、パーソナルコンピュータ(PC)110と接続可能である。なお、本装置を、プリンタ、デジタルカメラ、複写機、ファクシミリ、テレビ等に組み込むことも可能である。
CPU101は、ROM102に格納されたプログラム(以下で説明する画像処理のプログラムを含む)をワークメモリであるRAM103にロードして当該プログラムを実行する。そして、当該プログラムに従いシステムバス109を介して上記の各構成を制御することで、当該プログラムの機能を実現する。
図2は、第1の実施形態における画像処理装置の機能を示すブロック図で、CPU101によって実行される処理である。
JPEGデコード部200は、デジタルカメラ等で撮影された静止画の静止画情報(Exif−JPEG情報等)を入力し、静止画情報に対して周知のJPEGデコード処理を行うことにより画像データ(例えばRGBデータ(24bit階調))を生成する。
縮小画像生成部201は、JPEGデコード部200から受け取った画像データから縮小画像データを生成する。縮小画像データを生成する目的は、後述する顔検出処理やホワイトバランスパラメータの算出等の画像解析に要する演算量を削減するためである。縮小画像データは、できるだけ小さく、かつ画像のディテールを十分に保っている必要がある。したがって、縮小画像データの解像度は、640×480画素程度であるのが望ましい。なお、第1の実施形態においては、縮小画像生成部201は、RGBデータ(24bit階調)で構成された縮小画像データを生成するものとする。
顔検出部202は、縮小画像生成部201から受け取った縮小画像データに対して、予め定めたオブジェクトである人物の顔領域を検出する処理を行い、検出した顔領域の座標位置等を示す顔検出結果を求める。人物の顔検出処理は、周知の手法を用いればよい。
ホワイトバランスパラメータ算出部203は、縮小画像生成部201から受け取った縮小画像データのホワイトバランス(WB)の状態を推定し、適切なホワイトバランスに補正するためのパラメータを求める。このパラメータをホワイトバランス補正パラメータと呼ぶ。ホワイトバランスの補正方法は、公知の手法のいずれであってもよいが、第1の実施形態においては、画像の明るい領域と暗い領域を使用した補正方法を用いる。画像の明るい領域をハイライト(HL)領域と呼び、画像の暗い領域をシャドー(SD)領域と呼ぶ。
図3、図4は、ホワイトバランスの補正方法を説明するための図である。
入力画像が適正なホワイトバランスとなっている場合、図3の300に示すように、入力画像を輝度・色差空間(YCbCr空間)に射影した際、ハイライト(HL)領域とシャドー(SD)領域はグレー軸(Y軸)の近辺に分布することが知られている。一方で、入力画像が色かぶりを起こしている場合等ホワイトバランスが崩れている場合には、輝度・色差空間における画像の分布は、図4の400に示すようになる。図4の400に示す分布となっている入力画像に対してホワイトバランス補正を行うために、輝度・色差空間において、ハイライト(HL)領域とシャドー(SD)領域をグレー軸(Y軸)上に配置させるための回転行列を生成する。そして、以下の式によって輝度・色差空間の色変換を行う。
上式における3×3の回転行列は、ホワイトバランス補正パラメータである。
図5は、ホワイトバランス補正パラメータ算出部203によるホワイトバランス補正パラメータの算出処理の流れを示すフローチャートである。
S501において、ホワイトバランス補正パラメータ算出部203は、縮小画像データのヒストグラムを算出する。ヒストグラムは、RGBデータで構成された縮小画像データの画素値をYCbCr値に変換し、累積輝度ヒストグラムと、各輝度における平均Cb,Cr値を算出する。
S502において、ホワイトバランス補正パラメータ算出部203は、ハイライトポイント(HLポイント)とシャドーポイント(SDポイント)を算出する。例えば、ホワイトバランス補正パラメータ算出部203は、累積輝度ヒストグラムを参照し、累積度数が縮小画像データ全体の99.0%と1.0%の位置をそれぞれハイライトポイントとシャドーポイントとする。ハイライトポイントを、(YHL,CbHL,CrHL)と表記し、シャドーポイントを、(YSD,CbSD,CrSD)と表記する。
S503において、ホワイトバランス補正パラメータ算出部203は、ハイライトポイントとシャドーポイントをグレー軸(Y軸)に配置させるための3×3の回転行列を生成する。なお、3×3の回転行列は、公知の手法を用いて生成すればよい。
引き続き、図2を参照して、画像処理装置100の機能を説明する。
階調補正カーブ算出部204は、縮小画像生成部201から受け取った縮小画像データと、顔検出部202から受け取った顔検出結果に基づいて、階調補正カーブを算出する。入力画像に対して階調補正を行う手法は様々考えられる。例えば、入力画像が風景画像であれば、コントラストを上げる補正が考えられる。また、入力画像が夜景画像であれば、暗部は維持したまま、明るい領域を際立たせる補正が考えられる。第1の実施形態では、検出した人物の顔領域が暗い時、顔領域の明るさを適正にするための階調補正を行う。
図6は、階調補正カーブ算出部204による階調補正処理の流れを示すフローチャートである。
S601において、階調補正カーブ算出部204は、顔検出部202によって検出された顔領域の平均輝度値(InSkinTone)を算出する。顔領域が複数ある場合には、階調補正カーブ算出部204は、各顔領域の平均輝度値を算出してから、それらの平均を求めてもよいし、サイズが大きい顔領域の平均輝度値のみを求めてもよい。
S602において、階調補正カーブ算出部204は、S601で求めた顔領域の平均輝度値(InSkinTone)が所定値より低いか否かを判定する。すなわち、階調補正カーブ算出部204は、顔領域が暗いか否かを判定する。判定した結果、顔領域の平均輝度値が所定値より低い場合は、階調補正カーブ算出部204は、顔領域が逆光状態になっているとみなして、平均輝度値(InSkinTone)を目標輝度値(OutSkinTone)に補正するための階調補正カーブを生成する。
図7は、階調補正カーブ算出部204による階調補正カーブの生成を説明するための図である。
図7の700は、階調補正カーブを示す。階調補正カーブは、(0,0)、(InSkinTone,OutSkinTone)、(255,255)の座標値を通る線であればよい。すなわち、階調補正カーブは、単純なガンマカーブであっても、直線で構成されるカーブであってもよい。一方、顔領域が存在しない場合や顔領域の平均輝度が所定値より高い場合には、InとOutが同値となる1次元ルックアップテーブルを生成し、メモリに格納する。
引き続き、図2を参照して、画像処理装置100の機能を説明する。
補正用3次元ルックアップテーブル生成部205は、ホワイトバランス補正パラメータ算出部203からホワイトバランス補正パラメータ(3×3の回転行列)を受け取り、階調補正カーブ算出部204から階調補正カーブを受け取る。補正用3次元ルックアップテーブル生成部205は、ホワイトバランス補正パラメータと階調補正カーブを用いて、画像補正用のRGB3次元ルックアップテーブル(3DLUT)を生成する。
図8は、補正用3次元ルックアップテーブル生成部205による補正用3次元ルックアップテーブルの生成処理の流れを示すフローチャートである。
S800において、補正用3次元ルックアップテーブル生成部205は、RGB空間における補正用3次元ルックアップテーブルの各グリッド値(R,G,B)を取得する。
S801において、補正用3次元ルックアップテーブル生成部205は、グリッド値(R,G,B)を輝度・色差信号であるYCbCr値に変換する。
S802において、補正用3次元ルックアップテーブル生成部205は、YCbCr値に対して、ホワイトバランス補正パラメータ(3×3の回転行列)を適用し、(Y’,Cb’,Cr’)を算出する。
S803において、補正用3次元ルックアップテーブル生成部205は、(Y’,Cb’,Cr’)のうちの輝度成分(Y’)に対して階調補正カーブを適用して、Y’’値を算出する。
S804において、補正用3次元ルックアップテーブル生成部205は、(Y’’,Cb’,Cr’)を(R’,G’,B’)に変換し、それをグリッドに格納する。
補正用3次元ルックアップテーブル生成部205は、上述の処理をRGBの補正用3次元ルックアップテーブルの全てのグリッドに対して行う。
S805において、補正用3次元ルックアップテーブル生成部205は、上述の処理をRGBの補正用3次元ルックアップテーブルの全てのグリッドに対して行った場合には、補正用3次元ルックアップテーブルの生成を終了する。
引き続いて、図2を参照して、画像処理装置100の機能を説明する。
中間画像生成部206は、補正用3次元ルックアップテーブル生成部205から受け取った補正用3次元ルックアップテーブルを公知の補間処理(四面体補間等)を用いて縮小画像に適用することで中間画像を生成する。次いで、中間画像生成部206は、生成した中間画像データをメモリに格納する。
顔領域判定部207は、顔検出部202から受け取った顔検出結果に基づき、縮小画像内に人物の顔領域(予め定めたオブジェクト)が存在するか否かの判定を行う。顔領域が存在する場合には、中間画像生成部206から受け取った中間画像データを特定色強調部209に送り、顔領域が存在しない場合には、中間画像データを全体彩度補正係数算出部208に送る。
特定色強調部209は、予め定めたオブジェクトの色(本例では、顔色)に対してはそのままの色を維持しつつ、予め定めたオブジェクト以外のオブジェクト内の特定の色に対してはその色を強調する処理を行う。第1の実施形態では、特定色強調部209は、予め保持している複数種の特定色強調テーブルを参照しながら、どの特定色強調テーブルをどの程度の強度で施すかを決定する。なお、第1の実施形態においては、特定色強調テーブルは、RGBの補正用3次元ルックアップテーブル形式で保持することを想定しており、特定色のグリッドだけが特定方向に補正されたRGB値を格納している。
図10は、特定色強調テーブルの1つである青強調テーブルの特性を説明するための図である。図11は、特定色強調テーブルの1つである緑強調テーブルの特性を説明するための図である。
これらの図は、特定色強調テーブルの特性を分かりやすく説明するために、RGB空間で保持している特定色強調テーブルの効果を色差CbCr平面で表現している。
図10において、円1000は、色差CbCr平面における青領域を示す。同円中の矢印は、その領域内の色が青色強調テーブルによってどの方向に補正されるかを示す。基本的には原点から遠ざかる方向、すなわち彩度が向上する方向に補正されるが、色相も変化する。また、同円以外の領域では、その色は、全く変化しない。
図11において、円1100は、CbCr平面における緑領域を示す。同円中の矢印は、その領域内の色が緑色強調テーブルによってどの方向に補正されるかを示す。基本的には原点から遠ざかる方向、すなわち彩度が向上する方向に補正されるが、色相も変化する。また、同円以外の領域では、その色は、全く変化しない。
特定色強調部209は、このような特定色強調テーブルを複数保持し、以下に説明するように、それらの中から入力画像に応じて、最適な特定色強調テーブルを選択する。
図9は、特定色強調部209において、最適な特定色強調テーブルを選択し、選択された特定色強調テーブルの処理強度を決定する処理の流れを示すフローチャートである。
S900において、特定色強調部209は、中間画像生成部206から受け取った中間画像データの画素値(R,G,B)を取得する。
S901において、特定色強調部209は、複数の特定色強調テーブル(青強調テーブル、緑強調テーブル、赤強調テーブル等)の中から、例えば青強調テーブルを選択する。次いで、特定色強調部209は、公知の補間方法(四面体補間など)を用いて、画素値(R,G,B)に対して青強調テーブルを適用する。画素値(R,G,B)に対して青強調テーブルを適用することにより、青色が強調された画素値(R’,G’,B’)が得られる。
S902において、特定色強調部209は、画素値(R,G,B)と画素値(R’,G’,B’)から色強調テーブルの適用前後の変動量デルタDを算出する。
S902において、特定色強調部209は、上記の変動量を積算する。また、特定強調部209は、変動量が所定値以上となる画素数をカウントする。さらに、特定色強調部209は、変動量が所定値以上となる画素の色強調前の彩度を積算する。なお、画素の彩度は、(R,G,B)値をHIS系に変換して求めてもよいし、(R,G,B)値を(Y,Cb,Cr)値に変換して、以下のように(Cb,Cr)ベクトルの長さを彩度として積算してもよい。
このように変動量が少ない画素を対象外とすることで、特定色強調テーブルを適用した場合の色強調効果の大きさを精度良く推定することができる。
特定色強調部209は、S900〜S902の処理を中間画像データ内の全ての画素に対して行う。
S902において、特定色強調部209は、S900〜S902の処理を中間画像データ内の全ての画素に対して行ったかどうかを判定し、全ての画素に対して行った場合には、S904の処理に進む。
S904において、特定色強調部209は、積算した変動量と彩度を中間画像データの画素数で除算することにより、平均変動量と、色強調前の平均彩度を算出する。
特定色強調部209は、S900〜S904の処理を、全ての特定色強調テーブルを用いて行う。それにより、特定色強調部209は、特定色強調テーブル毎に、平均変動量、所定値以上変動する画素数、所定値以上変動する画素の色強調前の平均彩度の3つのパラメータを取得する。
S905において、特定色強調部209は、S900〜S904の処理を、全ての特定色強調テーブルを用いて行ったかどうかを判定し、全ての特定色強調テーブルを用いて行った場合には、S906の処理に進む。
S906において、特定色強調部209は、上記の3つのパラメータのうちの少なくとも1つを参照して入力画像に対してどの特定色強調テーブルを用いると色強調の効果が大きくなるかを判定する。特定色強調部209は、例えば平均変動量を用いて効果の大きさを判定する。平均変動量が大きいということは、色強調の効果が大きいと考えることができるため、特定色強調部209は、平均変動量が最も大きくなる特定色強調テーブルを選択する。
S907において、特定色強調部209は、選択した特定色強調テーブルをどの程度の強度で画像に適用するかを決定する。特定色強調テーブルを適用する強度は、例えば、上記の3つのパラメータのうちの少なくとも1つを用いて決定される。
まず、平均変動量に関する重み値W0を、以下のように決定する。
if(平均変動量>TH0) W0=1.0
else W0=平均変動量÷TH0
ここで、TH0は、平均変動量を正規化するための閾値である。
すなわち、平均変動量が閾値より大きい場合には、重み値を1とし、平均変動量が閾値以下の場合には、平均変動量を閾値で除算した値を重み値とする。
次に、所定値以上変動する画素数を、中間画像データ全体の画素数で除算した値をW1とする。
さらに、色強調前の平均彩度に関する重み値W2を、以下のように決定する。
if(色強調前の平均彩度<TH2) W2=1.0
else W2=TH2÷色強調前の平均彩度
ここで、TH2は、色強調前の平均彩度を正規化するための閾値である。
すなわち、色強調前の平均彩度が閾値以下の場合には、重み値を1とし、色強調前の平均彩度が閾値より大きい場合には、閾値を色強調前の平均彩度で除算した値を重み値とする。これにより、色強調前の平均彩度が低い場合、特定色強調テーブルを強くかけることができ、色強調前の平均彩度が高い場合、特定色強調テーブルを弱くかけることで、過度の色強調を防ぐことができる。
上記の値W0、W1、W2を用いて、色強調テーブルを適用する強度Wを以下のように算出する。
W=W0×W1×W2
以上が、特定色強調部209における、特定色強調テーブルの選択と、選択された特定色強調テーブルを適用する強度Wを算出する処理の説明である。
引き続き、図2を参照して、画像処理装置100の機能を説明する。
補正用3次元ルックアップテーブル修正部211は、特定色強調部209で求めた強度で、補正用3次元ルックアップテーブル生成部205で生成された補正用3次元ルックアップテーブルと特定色強調部209で生成された特定色強調テーブルとを合成する。
図12は、補正用3次元ルックアップテーブル修正部211による、補正用3次元ルックアップテーブルと特定色強調テーブルの合成処理の流れを示すフローチャートである。
なお、第1の実施形態においては、説明の簡略化のため、補正用3次元ルックアップテーブルのグリッド数と、特定色強調テーブルのグリッド数とが一致しているものとする。
S1200において、補正用3次元ルックアップテーブル修正部211は、補正用3次元ルックアップテーブルの任意のグリッドに格納されている補正後の値(R,G,B)を取得する。
S1201において、補正用3次元ルックアップテーブル修正部211は、(R,G,B)に対して公知の補間処理(四面体補間など)を行い、色強調後の(R’,G’,B’)を算出する。
S1202において、補正用3次元ルックアップテーブル修正部211は、(R,G,B)と(R’,G’,B’)と強度Wを用いて最終的な(R’’,G’’,B’’)を算出する。
R’’=(R−R’)×W+R
G’’=(G−G’)×W+G
B’’=(B−B’)×W+B
S1203において、補正用3次元ルックアップテーブル修正部211は、算出した(R’’,G’’,B’’)を補正用3次元ルックアップテーブルのグリッドに格納する。
補正用3次元ルックアップテーブル修正部211は、S1200〜S1203の処理を、補正用3次元ルックアップテーブルの全てのグリッドに対して行う。これによって、補正用3次元ルックアップテーブルと特定色強調テーブルの合成処理が完了する。
一方で、顔領域判定部207による判定で、顔領域が存在しないと判定した場合には、顔領域判定部207は、中間画像データを全体彩度補正係数算出部208に送る。
全体彩度補正係数算出部208は、中間画像データの平均彩度から、縮小画像全体の彩度を補正するための彩度補正係数(SG)を算出する。
図13は、平均彩度と彩度補正係数の関係の一例を説明するための図である。
図13に表されたグラフにおいて、横軸は、中間画像データの平均彩度、縦軸は、彩度補正係数(SG)を示す。本グラフからわかるように、平均彩度が低い場合には彩度補正係数(SG)は高めに設定され、平均彩度が上昇するにつれて彩度補正係数(SG)は減衰し、閾値Th_Sを超えると、彩度補正係数(SG)=1.0となり彩度強調は行われない。彩度補正係数(SG)をこのように設定することにより、元々彩度が高い画像に対して、過剰な彩度強調を行わないようにする。
補正用3次元ルックアップテーブル修正部211は、全体彩度補正係数算出部208から受け取った彩度補正係数(SG)を用いて、補正用3次元ルックアップテーブルを修正する。
図14は、補正用3次元ルックアップテーブル修正部211による、補正用3次元ルックアップテーブルの修正処理の流れを示すフローチャートである。
S1400において、補正用3次元ルックアップテーブル修正部211は、補正用3次元ルックアップテーブルの任意のグリッドに格納されている補正後の(R,G,B)を取得する。
S1401において、補正用3次元ルックアップテーブル修正部211は、(R,G,B)を(Y,Cb,Cr)に変換する。
S1402において、補正用3次元ルックアップテーブル修正部211は、(Cb,Cr)値に対して彩度補正係数(SG)を乗じ、(Cb’,Cr’)を算出する。
Cb’=Cb×SG
Cr’=Cr×SG
S1403において、補正用3次元ルックアップテーブル修正部211は、彩度補正後の(Y,Cb’,Cr’)を(R’,G’,B’)に変換し、グリッド位置に格納する。
補正用3次元ルックアップテーブル修正部211は、S1400〜S1403までの処理を補正用3次元ルックアップテーブルの全グリッドに対して行う。
S1404において、補正用3次元ルックアップテーブル修正部211は、S1400〜S1403までの処理を補正用3次元ルックアップテーブルの全グリッドに対して行ったかどうかを判定し、全グリッドに対して行った場合には、修正を終了する。
引き続き、図2を参照して、画像処理装置100の機能を説明する。
補正処理部212は、まず、公知の補間処理を使って、元解像度の入力画像データ、あるいは、印刷解像度、表示解像度に縮小・拡大されたリサイズ画像を生成する。次いで、補正処理部212は、補正用3次元ルックアップテーブル修正部211から受け取った補正用3次元ルックアップテーブルを入力画像に適用し、その結果、所望の補正が施された画像データを生成する。補正処理部212は、生成した画像データを記憶装置に保存し、表示装置に表示し、又は、プリンタエンジンに送る。
以上説明したように、第1の実施形態の画像処理装置は、入力画像内に色を変化させたくないオブジェクトが存在するか否かを判定する。その結果、色を変化させたくないオブジェクトが存在するならば、画像処理装置は、ホワイトバランス補正や階調補正をした後、特定の色のみを強調する。一方、入力画像内に色を変化させたくないオブジェクトが存在しないならば、画像処理装置は、画像全体の彩度を強調する。第1の実施形態によれば、上述の処理を行うことで、入力画像に対して適応的に色強調処理を切り替えることができる。
また、第1の実施形態では、予め保持している特定色強調テーブルのみを用いて平均変動量、すなわち、色強調効果の大きさを算出する。その後、その色強調効果の大きさを参照して、複数の特定色強調テーブルの中から最適な特定色テーブルを選択し、さらに、その選択された特定色テーブルを適用する強度も決定する。この構成であれば、特定色強調テーブルを追加・修正した場合にも、特定色強調部209のアルゴリズムを変更する必要がない。尚、色強調効果の大きさを参照して、複数の特定色強調テーブルの中から色強調効果が大きい上位N個の色強調テーブルを選択してもよい。
また、第1の実施形態によれば、画像の補正を行った後の中間画像データを解析して特定色強調テーブルの選択や、特定色強調テーブルの適用の強度の算出を行うため、より正確な色強調処理を行うことができる。
また、第1の実施形態では、最初に補正用3次元ルックアップテーブルを生成し、特定色強調用のテーブルを選択し、補正用3次元ルックアップテーブルを修正するように構成している。このことにより、最後に一度だけ元解像度の画像に対して補正処理を実行すればよく、効率的な処理で出力画像を生成することができる。
(第2の実施形態)
第1の実施形態では、画像処理装置は、まず、VGAサイズの縮小画像データを生成し、ホワイトバランス補正パラメータと階調補正カーブを算出する。次いで、画像処理装置は、縮小画像データに対して基本補正(ホワイトバランス補正および階調補正)を行うことにより中間画像データを生成し、その中間画像データを用いて、適用する特定色強調テーブルを選択する。このような第1の実施形態においては、以下に示す改善点がある。
第1の実施形態の場合、縮小画像データあるいは中間画像データを処理の終盤までメモリに保存しておく必要がある。RGB各画素を3バイトで表現するならば、VGAサイズの縮小画像データであっても必要なメモリ量の合計は640×480×3=900KBにも及ぶ。この必要なメモリ量の大きさは、数百MB程度の大容量のメモリを装備したパーソナルコンピュータ等の場合には殆ど影響はないが、小容量のメモリしか装備していないプリンタやデジタルカメラ等の場合には影響が大きい。また、第1の実施形態の場合、ホワイトバランスパラメータや階調補正カーブを算出した後に、補正用3次元ルックアップテーブルを生成し、補正用3次元ルックアップテーブルを縮小画像データの各画素に適用することで中間画像データを生成する。中間画像データを生成する際に必要な演算量については、四面体補間などの補間演算に約30万回(640×480=307200)の演算を要し、特定色強調テーブルの選択時に画素毎に変動量を算出するための補間演算に30万×テーブル数の演算を要する。この演算量の大きさは、数GHzのクロックで動作するCPUを搭載したパーソナルコンピュータの場合には殆ど影響がないが、数百MHz程度のクロックで動作するCPUを搭載したプリンタやデジタルカメラ等の場合には影響が大きい。
そこで、第2の実施形態では、中間画像データを保持しつづけるためのメモリを確保する必要をなくし、さらに、中間画像データを生成する際に必要な演算量を削減する画像処理装置を提供する。
第2の実施形態では、入力画像に対してRGB空間におけるグリッドヒストグラム(GH)を算出し、グリッドヒストグラム(GH)と補正用3次元ルックアップテーブルを用いて特定色強調テーブルを選択する。
図15は、第2の実施形態における画像処理装置の機能を示すブロック図である。
図15に示す構成は、縮小画像データに対してグリッドヒストグラム(GH)を算出するグリッドヒストグラム算出部1503を有する点と、中間画像生成部206を有しない点で、図2に示す構成とは異なる。
まず、グリッドヒストグラム(GH)について説明する。
図16は、多次元のグリッドヒストグラム(GH)を示す図である。
図16では、例として24bitのRGBの3次元空間において16間隔でグリッドを生成した場合を示している。この場合、3次元空間におけるグリッド(格子点)数は、173=4913となる。
図17は、グリッドヒストグラム算出部1503による、縮小画像データに対してグリッドヒストグラム(GH)を算出する処理の流れを示すフローチャートである。
S1700において、グリッドヒストグラム算出部1503は、縮小画像生成部1501から受け取ったRGB縮小画像データの各画素に対して、グリッドヒストグラムのグリッド位置を算出する。算出は、各画素の(R,G,B)値を用いて、以下のように行う。
ここで、GR、GG、GBは、グリッドヒストグラム(GH)のグリッド位置を示す。上記の式によれば、例えば、(R,G,B)=(16,16,16)であれば、グリッド位置は(1,1,1)と計算される。
S1701において、グリッドヒストグラム算出部1503は、3次元配列グリッドヒストグラムを用いて、以下の式のように、グリッド位置の度数を積算する。
GH[GR][GG][GB]=GH[GR][GG][GB]+1
S1702において、グリッドヒストグラム算出部1503は、S1700とS1701の処理を縮小画像データの全ての画素に対して行ったかどうかを判定する。
グリッドヒストグラム算出部1503は、S1700とS1701の処理を、縮小画像データの全ての画素に対して行うことで、グリッドヒストグラムを算出する。
なお、第2の実施形態では、縮小画像データをYCbCrデータからRGBデータに変換し、RGB3次元空間においてグリッドヒストグラムを算出するが、本発明はこれに限定されるものではない。例えば、YCbCr空間で3次元グリッドを構成し、同様にグリッドヒストグラムを算出してもよく、3次元以上の空間、例えばCMYK4次元色空間において、同様にグリッドヒストグラムを算出してもよい。
ただし、第2の実施形態によるRGB3次元空間におけるグリッドヒストグラムの算出は、YCbCr空間におけるグリッドヒストグラムの算出よりも優れている。なぜなら、一般的な画像データにおいては、例えば(Y,Cb,Cr)=(255、128,128)のような輝度と彩度が共に高い画素は存在しない。このため、YCbCr空間では度数が0となるグリッド位置が多数存在し、YCbCr空間を有効利用できないからである。これに対して、RGB3次元空間であれば、画像データは(R,G,B)=(255,255,255)から(R,G,B)=(0,0,0)の全域に渡って存在するため、すべてのグリッド位置を有効利用できる。その結果、RGB3次元空間においては、YCbCr空間に比べて、詳細な画像情報の解析を行うことができる。したがって、第2の実施形態においては、RGB3次元グリッドヒストグラムを用いる。
以下、第2の実施形態における処理を図15と図18を用いて説明する。なお、説明は第1の実施例と異なる箇所のみ行う。
特定色強調部1509は、グリッドヒストグラム算出部1503からグリッドヒストグラムを受け取り、補正用3次元ルックアップテーブル生成部1506から補正用3次元ルックアップテーブルを受け取る。特定色強調部1509は、顔領域判定部1507が画像内に人物の顔領域が存在すると判定した場合、グリッドヒストグラムと補正用3次元ルックアップテーブルとを用いて特定色強調テーブルを選択する。尚、実施形態2は、実施形態1とは異なり、中間画像生成部を有していないため、中間画像データを用いないで特定色強調テーブルを選択する。
図18は、特定色強調部1509による特定色強調処理の流れを示すフローチャートである。
S1800において、特定色強調部1509は、グリッドヒストグラムの各グリッド値である(R,G,B)と、該グリッドの度数を取得する。
S1801において、特定色強調部1509は、(R,G,B)に対して補正用3次元ルックアップテーブルを適用し、(R’,G’,B’)を取得する。
S1802において、特定色強調部1509は、公知の補間方法(四面体補間など)を用いて、上記(R’,G’,B’)値に対して、例えば青強調テーブルを適用し、青色が強調された(R’’,G’’,B’’)を取得する。
S1806において、特定色強調部1509は、1.変動量の積算値、2.所定以上変動するグリッドの度数の積算値、3.所定以上変動するグリッドの色強調前彩度の積算値の3つのパラメータを算出する。
まず、特定色強調部1509は、青強調テーブルによるグリッドの色強調テーブルの適用前後の変動量デルタDを以下の式により算出する。
変動量の積算値は、(上記デルタD×グリッドの度数)を積算することにより求められる。また、特定色強調部1509は、変動量デルタDが所定値以上となる画素数をカウントする。また、特定色強調部1509は、変動量が所定値以上となる画素の元の画素値の彩度も積算する。なお、画素の彩度は、基本補正後のグリッド値(R’,G’,B’)値をHIS系に変換して求めてもよいし、(R’,G’,B’)値を(Y,Cb,Cr)値に変換して、以下のように(Cb,Cr)ベクトルの長さを彩度として積算してもよい。
S1807において、特定色強調部1509は、S1800〜S1806の処理を中間画像データ内の全ての画素に対して行ったかどうかを判定し、全ての画素に対して行った場合には、S1808の処理に進む。
S1808において、特定色強調部1509は、積算した変動量と彩度を縮小画像データの画素数で除算することにより平均変動量と平均彩度を算出する。
特定色強調部1509は、S1800〜S1808までの処理を、全ての特定色強調テーブルを用いて行う。それにより、特定色強調部1509は、特定色強調テーブル毎に、平均変動量、所定値以上変動する画素数、所定値以上変動する画素の色強調前の平均彩度の3つのパラメータを取得する。
以降の処理は、第1の実施形態と同様であるため、説明は省略する。
以上説明したように、第2の実施形態によれば、中間画像データを生成せず、RGB空間におけるグリッドヒストグラム(GH)と、補正用3次元ルックアップテーブルを用いて、補正後の画像状態をシミュレートする。そして、その結果を用いて、特定色強調テーブルの選択や適用強度の計算を行う。したがって、第2の実施形態では、中間画像データを保持しつづけるためのメモリが必要ない。また、第1の実施形態では中間画像データを生成する際には約60万回の補間演算が必要であった。しかし、第2の実施形態では、4913グリッドのグリッドヒストグラム(GH)に対して2回の補間演算で済む。すなわち、第2の実施形態では、約1万回の補間演算を行うことで第1の実施形態と同精度で特定色強調テーブルを選択することができる。
(その他の実施形態)
上述した実施形態では、RGBの補正用3次元ルックアップテーブルを用いたが、輝度・色差信号(YCbCr、YC1C2、L*a*b*など)の補正用3次元ルックアップテーブルやCMYKなど3次元以上のルックアップテーブルを用いてもよい。
また、上述した実施形態では、色を変えたくないオブジェクトの例として人物の顔を挙げたが、動物や花といったその他の特定オブジェクトであってもよい。
また、上述した実施形態では、複数の特定色強調テーブルの中から色強調効果の大きさ、すなわち、平均変動量が最も高いテーブルを1つだけ選択した。しかし、変動量が大きい複数個のテーブルを選択し、それらを補正用3次元ルックアップテーブル修正部が順次適用するように構成してもよい。
また、上述した実施形態では、面積が大きいほど強度が強くなるが、それだと逆に効果が目立ちすぎる場合もあるため、例えば、次式のように、面積が大きくなるにつれて特定色強調テーブルの適用強度が小さくなるように構成してもよい。
W=W0×(1.0−W1)×W2
また、色強調効果の大きさを制限するために、適用強度パラメータW0,W1,W2、さらには、最終的な適用強度Wに上限値を設定してもよい。
また、本発明は、複数の機器(例えばホストコンピュータ、インタフェース機器、リーダ、プリンタ等)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機、ファクシミリ装置等)に適用しても良い。
本発明の目的は、前述した実施例の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システムあるいは装置に装着し、そのシステム等のコンピュータが記録媒体に格納されたプログラムコードを読み取り実行することによっても達成される。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成する。記録媒体は、コンピュータ読み取り可能な記録媒体である。また、プログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現されてもよい。また、記録媒体から読み出されたプログラムコードが、コンピュータの機能拡張カードや機能拡張ユニットに書込まれた後、機能拡張カード等がプログラムコードの指示に基づき処理の一部または全部を行うことで、前述の実施形態を実現してもよい。
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納される。