(57)【要約】【課題】レティネックス処理におけるフィルタ処理を高速化すると共に、フィルタ処理を高速化してもレティネックス処理で得られる画像の品質を良好に保持することができる画像処理装置および画像処理プログラムを提供すること【解決手段】各要素には、入力マスクにおいてフィルタ演算で使用される要素数で重み付けをしたフィルタ係数が格納されている。例えば、この縮小マスクの左上端の要素においては、対応する入力マスクの区画にはフィルタ演算に使用される要素が２つあるので、正規分布関数から求められたフィルタ係数０．３７を２倍した０．７４が、そのフィルタ係数となる。つまり入力マスクの間引きパターンを、ガウスフィルタの本来のフィルタ係数に対する重みに変換してフィルタ係数を生成することにより、入力マスクの要素を間引いた間引きパターンを反映した縮小マスクを作成することができる。【選択図】図１０
2008252772.tif 000002
【特許請求の範囲】
【請求項１】
元画像の注目画素を含む周辺画素領域に対するフィルタ演算を行って各注目画素に対応する周辺画素の平均画素値をそれぞれ生成する元画像平均画素値生成手段と、前記元画像平均画素値生成手段により生成された平均画素値と元画像の注目画素の画素値とに対する対数演算処理に基づいて、注目画素と周辺画素との明るさの比を示す反射光成分値を元画像の各画素について算出する元画像反射光成分値算出手段と、前記元画像反射光成分値算出手段により算出された元画像の各反射光成分値と、注目画素の画素値とに基づくと共に、反射光成分値に応じて変化する画素値と出力値との対応関係に従って注目画素の画素値を出力値に変換する変換手段とを有し、前記変換手段により、元画像の注目画素の画素値を、注目画素と周辺画素との明るさの比に応じて補正する画像処理装置において、
前記変換手段は、元画像の画素値を反射光成分値に基づいて変換する場合には、反射光成分値を正規化パラメータに従って正規化した正規化反射光成分値を用いて元画像の画素値を変換するものであり、
前記正規化パラメータを設定するために元画像を縮小して縮小画像を形成する縮小画像形成手段と、
前記縮小画像形成手段により形成された縮小画像の各画素を注目画素とし、当該注目画素を含む周辺画素領域に対するフィルタ演算を行って、縮小画像の各注目画素に対応する周辺画素の平均画素値をそれぞれ生成する縮小平均画素値生成手段と、
前記縮小平均画素値生成手段により生成された平均画素値と縮小画像の注目画素の画素値とに対する対数演算処理に基づいて、縮小画像の各画素の反射光成分値を算出すると共に、前記反射光成分値の頻度分布に基づいて、前記変換手段が用いる正規化反射光成分値の正規化パラメータを設定する正規化パラメータ設定手段と、
前記元画像平均画素値生成手段でのフィルタ演算に用いられ仮想的に２次元マトリクスに配置される要素に格納されたフィルタ係数を有する元画像用マスクを記憶する元画像用マスク記憶手段と、
前記元画像用マスク記憶手段に記憶される元画像用マスクを元画像と縮小画像とのサイズ比に基づいて縮小して、前記縮小平均画素値生成手段が実行するフィルタ演算で用いられる縮小画像用マスクを生成する縮小画像用マスク生成手段とを備えたことを特徴とする画像処理装置。
【請求項２】
前記元画像用マスク記憶手段に記憶される元画像用マスクは、前記元画像平均画素値生成手段によるフィルタ演算において、演算に関わる要素は、元画像用マスクを構成する全要素よりも少ない数で配置されたものであり、
前記縮小画像用マスク生成手段は、
元画像と縮小画像とのサイズ比に基づいて形成される縮小画像用マスクの全要素数で、前記元画像用マスク記憶手段に記憶される元画像用マスクを区分する区分手段と、
縮小画像用マスクの要素に格納するフィルタ係数を算出すると共に、算出されるフィルタ係数に対し、前記区分手段にて区分された元画像用マスクの各区画のうち、縮小画像用マスクの要素の配置に対応する区画において前記元画像平均画素値生成手段によるフィルタ演算に実際に用いられる要素数で、重み付けをする重み付けフィルタ係数算出手段とを備えており、
元画像用マスクで使用される要素のパターンを反映した縮小画像用マスクを生成するものであることを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記元画像用マスク記憶手段に記憶される元画像用マスクは、前記元画像平均画素値生成手段によるフィルタ演算において、演算に関わる要素は、元画像用マスクを構成する全要素よりも少ない数で配置されたものであり、
前記縮小画像用マスク生成手段は、
元画像と縮小画像とのサイズ比に基づいて形成される縮小画像用マスクの全要素数で、前記元画像用マスク記憶手段に記憶される元画像用マスクを区分する区分手段と、
縮小画像用マスクの要素に格納するフィルタ係数を算出すると共に、算出されるフィルタ係数に対し、前記区分手段にて区分された元画像用マスクの各区画のうち、縮小画像用マスクの要素の配置に対応する区画において、前記元画像平均画素値生成手段によるフィルタ演算に実際に用いられる要素に格納されているフィルタ係数の総和で、重み付けをする重み付けフィルタ係数算出手段とを備えており、
元画像用マスクの内容を反映した縮小画像用マスクを生成するものであることを特徴とする請求項１記載の画像処理装置。
【請求項４】
前記区分手段は、生成された各区画を縮小画像用マスクの各要素に対応させた場合に元画像用マスク側に余剰の要素や不足の要素を発生させることなく、元画像用マスクの全要素を配分して、元画像用マスクを縮小画像用マスクの要素数分に区分するものであることを特徴とする請求項２又は３に記載の画像処理装置。
【請求項５】
前記区分手段は、縮小画像用マスクの大きさと元画像用マスクの大きさとの比に基づいて、縮小画像用マスクの１の要素に対応する元画像用マスクの要素数を算出する対応要素数算出手段と、
前記対応要素数算出手段により算出された要素数毎に元画像用マスクを分割した場合の各分割位置を算出する分割位置算出手段と、
前記分割位置算出手段により算出された各分割位置に隣接する２の要素の内のより近いほうへ、分割位置をずらして分割位置間に含まれる要素数を整数化する整数化手段とを備えており、
分割位置に応じて各分割位置間に含まれる要素数を変更しつつ元画像用マスクに区画を割り付けることで、元画像用マスク側に余剰の要素や不足の要素を発生させることなく、元画像用マスクの全要素を配分するものであることを特徴とする請求項４記載の画像処理装置。
【請求項６】
前記元画像用マスク記憶手段に記憶される元画像用マスクは、各要素を特定する値が乱数に従って選択されることで、全要素の内のフィルタ演算に実際に用いられる要素が決定されたものであることを特徴とする請求項２から５のいずれかに記載の画像処理装置。
【請求項７】
前記縮小画像用マスク生成手段は、
元画像と縮小画像とのサイズ比に基づいて形成される縮小画像用マスクの要素数が、偶数となるかを判断する偶数判断手段と、
前記偶数判断手段により要素数が偶数になると判断されると、要素数を増加または減少させて、縮小画像用マスクの要素数が奇数となるように調整する要素数調整手段とを備えていることを特徴とする請求項１から６のいずれかに記載の画像処理装置。
【請求項８】
元画像の補正処理を行う画像処理装置で実行され、元画像の注目画素を含む周辺画素領域に対するフィルタ演算を行って各注目画素に対応する周辺画素の平均画素値をそれぞれ生成する元画像平均画素値生成ステップと、前記元画像平均画素値生成ステップにより生成された平均画素値と元画像の注目画素の画素値とに対する対数演算処理に基づいて、注目画素と周辺画素との明るさの比を示す反射光成分値を元画像の各画素について算出する元画像反射光成分値算出ステップと、前記元画像反射光成分値算出ステップにより算出された元画像の各反射光成分値と、注目画素の画素値とに基づくと共に、反射光成分値に応じて変化する画素値と出力値との対応関係に従って注目画素の画素値を出力値に変換する変換ステップとを有し、前記変換ステップにより、元画像の注目画素の画素値を、注目画素と周辺画素との明るさの比に応じて補正する画像処理プログラムにおいて、
前記変換ステップは、元画像の画素値を反射光成分値に基づいて変換する場合には、反射光成分値を正規化パラメータに従って正規化した正規化反射光成分値を用いて元画像の画素値を変換するものであり、
前記正規化パラメータを設定するために元画像を縮小して縮小画像を形成する縮小画像形成ステップと、
前記縮小画像形成ステップにより形成された縮小画像の各画素を注目画素とし、当該注目画素を含む周辺画素領域に対するフィルタ演算を行って、縮小画像の各注目画素に対応する周辺画素の平均画素値をそれぞれ生成する縮小平均画素値生成ステップと、
前記縮小平均画素値生成ステップにより生成された平均画素値と縮小画像の注目画素の画素値とに対する対数演算処理に基づいて、縮小画像の各画素の反射光成分値を算出すると共に、前記反射光成分値の頻度分布に基づいて、前記変換ステップが用いる正規化反射光成分値の正規化パラメータを設定する正規化パラメータ設定ステップと、
前記元画像平均画素値生成ステップでのフィルタ演算に用いられ仮想的に２次元マトリクスに配置される要素に格納されたフィルタ係数を有する元画像用マスクを、前記画像処理装置の内部に記憶する元画像用マスク記憶ステップと、
前記元画像用マスク記憶ステップによって記憶される元画像用マスクを元画像と縮小画像とのサイズ比に基づいて縮小して、前記縮小平均画素値生成ステップが実行するフィルタ演算で用いられる縮小画像用マスクを生成する縮小画像用マスク生成ステップとを備えたことを特徴とする画像処理プログラム。
【請求項９】
前記元画像用マスク記憶ステップにより画像処理装置内部に記憶される元画像用マスクは、前記元画像平均画素値生成ステップによるフィルタ演算において、演算に関わる要素は、元画像用マスクを構成する全要素よりも少ない数で配置されたものであり、
前記縮小画像用マスク生成ステップは、
元画像と縮小画像とのサイズ比に基づいて形成される縮小画像用マスクの全要素数で、前記元画像用マスク記憶ステップにて記憶される元画像用マスクを区分する区分ステップと、
縮小画像用マスクの要素に格納するフィルタ係数を算出すると共に、算出されるフィルタ係数に対し、前記区分ステップにて区分された元画像用マスクの各区画のうち、縮小画像用マスクの要素の配置に対応する区画において前記元画像平均画素値生成ステップによるフィルタ演算に実際に用いられる要素数で、重み付けをする重み付けフィルタ係数算出ステップとを備えており、
前記区分ステップは、
縮小画像用マスクの大きさと元画像用マスクの大きさとの比に基づいて、縮小画像用マスクの１の要素に対応する元画像用マスクの要素数を算出する対応要素数算出ステップと、
前記対応要素数算出ステップにより算出された要素数毎に元画像用マスクを分割した場合の各分割位置を算出する分割位置算出ステップと、
前記分割位置算出ステップにより算出された各分割位置に隣接する２の要素の内のより近いほうへ、分割位置をずらして分割位置間に含まれる要素数を整数化する整数化ステップとを備えており、
分割位置に応じて各分割位置間に含まれる要素数を変更しつつ元画像用マスクに区画を割り付けることで、元画像用マスク側に余剰の要素や不足の要素を発生させることなく、元画像用マスクの全要素を配分するものであることを特徴とする請求項８記載の画像処理プログラム。
【請求項１０】
前記元画像用マスク記憶ステップにより画像処理装置内部に記憶される元画像用マスクは、前記元画像平均画素値生成ステップによるフィルタ演算において、演算に関わる要素は、元画像用マスクを構成する全要素よりも少ない数で配置されたものであり、
前記縮小画像用マスク生成ステップは、
元画像と縮小画像とのサイズ比に基づいて形成される縮小画像用マスクの全要素数で、前記元画像用マスク記憶ステップに記憶される元画像用マスクを区分する区分ステップと、
縮小画像用マスクの要素に格納するフィルタ係数を算出すると共に、算出されるフィルタ係数に対し、前記区分ステップにて区分された元画像用マスクの各区画のうち、縮小画像用マスクの要素の配置に対応する区画において、前記元画像平均画素値生成ステップによるフィルタ演算に実際に用いられる要素に格納されているフィルタ係数の総和で、重み付けをする重み付けフィルタ係数算出ステップとを備えており、
前記区分ステップは、
縮小画像用マスクの大きさと元画像用マスクの大きさとの比に基づいて、縮小画像用マスクの１の要素に対応する元画像用マスクの要素数を算出する対応要素数算出ステップと、
前記対応要素数算出ステップにより算出された要素数毎に元画像用マスクを分割した場合の各分割位置を算出する分割位置算出ステップと、
前記分割位置算出ステップにより算出された各分割位置に隣接する２の要素の内のより近いほうへ、分割位置をずらして分割位置間に含まれる要素数を整数化する整数化ステップとを備えており、
分割位置に応じて各分割位置間に含まれる要素数を変更しつつ元画像用マスクに区画を割り付けることで、元画像用マスク側に余剰の要素や不足の要素を発生させることなく、元画像用マスクの全要素を配分するものであることを特徴とする請求項８記載の画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置および画像処理プログラムに関し、特に、レティネックス処理におけるフィルタ処理を高速化すると共に、フィルタ処理を高速化してもレティネックス処理で得られる画像の品質を良好に保持することができる画像処理装置および画像処理プログラムに関するものである。
【背景技術】
【０００２】
逆光条件下で被写体が撮像された場合、被写体部分の画像は、詳細な態様が判別困難となるほど明度やコントラストの低い不明瞭な逆光画像となる。かかる逆光画像のみならず、露光の過不足や、撮像時のぶれやぼけ、ノイズ、光量不足などによる劣悪な画像を、画像処理によって明度やコントラストを向上させて画質を改良することが行われている。かかる画像処理の１手法として、レティネックス処理（Ｒｅｔｉｎｅｘ処理）が知られている。レティネックス処理は、主に低画質部分の画質改良を行うものである。このレティネックス処理では、元の画像は、リフレクタンス成分（反射光成分）とイルミナンス成分（照明光成分）との２の構成成分で成り立っているとされる。
【０００３】
レティネックス処理は、大略的には、元の画素値から反射光成分値と照明光成分値とを算出し、照明光成分値に対し反射光成分値に応じた補正を施した後、その補正された照明光成分値と元の画素値とを用いて出力値を生成することで画像補正を達成するものである。
【０００４】
図１３は、かかるレティネックス処理の概要を示したものである。この図１３を参照して、具体的にレティネックス処理の内容を説明する。
【０００５】
レティネックス処理では、まず、元の画像の各画素（注目画素）の反射光成分値を求めるために周辺画素の平均輝度値が求められる。周辺画素は、注目画素を含む注目画素周辺の領域に属する画素である。この周辺画素の平均輝度値は、周辺画素に対し、注目画素からの距離に応じた重みを加味してその画素値を平均（積和演算）したものであり、換言すれば、周辺画素の値を反映させることで元の注目画素の画素値を補正した値となっている。
【０００６】
この周辺画素の平均輝度値を求めるためには、まず、周辺画素の平均輝度値を算出するためのＭＳＲマスク（ガウスフィルタ）が生成される（図１３（ａ））。元画像（入力画像）の各画素を注目画素として（１）式に従ったガウスフィルタ処理によって、周辺画素の平均輝度値が算出される（図１３（ｂ））。
【０００７】
図１３の（ｂ−１）には、Ｍ×Ｎのマトリクスで形成されたガウスフィルタ（ＭＳＲマスク）を模式的に示している。また、図１３の（ｂ−２）には、このガウスフィルタのマトリクスの各要素に格納されるフィルタ係数（重み）の内容を示している。尚、図１３の（ｂ−２）におけるグラフは、横軸に各要素の位置（フィルタサイズ）、縦軸にフィルタ係数を示している。横軸の中心付近に示した「０」は、注目画素に重ねられるフィルタ中心位置であり、「０」から遠ざかるほどフィルタ中心から遠い要素の位置となる。図１３の（ｂ−２）に示すように、ガウスフィルタは、中心値を１とすると共に、中心から四方へ向かって正規分布関数に従って次第にフィルタ係数が小さくなるように設計されている。
【０００８】
【数１】
2008252772.tif 000003
ここで、ｘは、横方向の座標を、ｙは、縦方向の座標を、Ｉ（ｘ，ｙ）は、座標（ｘ、ｙ）における信号強度値（画素値，画素信号の値）を、Ｆ（ｘ，ｙ）は、ガウスフィルタを、＊は、畳み込み演算（コンボリューション）をそれぞれ示す。
【０００９】
フィルタを用いてなされるこのようなフィルタ処理、即ち、フィルタ演算は、フィルタ処理する元画像の注目画素とフィルタ中心とを重ね合わせ、フィルタの各要素に配置（格納）されたフィルタ係数（重み）と元画像の対応する位置の画素値とを乗算すると共にその乗算で得られた各値の総和を算出する積和演算を、各画素について行う畳み込み演算である。尚、フィルタ演算は、求めた総和をフィルタ係数の合計値で除す演算を含むものであってもよい。
【００１０】
ガウスフィルタ処理により、各画素をそれぞれ注目画素としてＭ×Ｎの領域にガウスフィルタＦ（ｘ，ｙ）による畳み込み演算が行われると、注目画素からの距離に応じた重みを加味しつつ平均された周辺画素の平均輝度値が、各画素のそれぞれに対応して算出されることとなる。上記したように、ガウスフィルタではマトリクスの各要素に配置された重みが距離に応じて異なる値となっているので、算出される平均輝度値は、周辺画素領域に属する各画素値を単純に平均したものとは異なる。
【００１１】
平均輝度値が求められると、反射光成分値が求められる。具体的には、（２）式に従って、元画像の各画素値を、算出された対応する平均輝度値で除し、得られた値を自然対数化する（図１３（ｃ））。
【００１２】
【数２】
2008252772.tif 000004
この対数化された値（対数値）をＲとする。かかる対数演算では、元画像の各画素毎に、対応する対数値Ｒ（即ち、Ｒ（ｘ，ｙ））が求められる。求められた対数値Ｒは、注目画素と周辺画素との相対的な明るさを示すものであって、元の画素の反射光成分値に相当するが、計算機処理でき、且つ、画素値として取り扱える値に変換する必要がある。
【００１３】
（２）式からわかるように、この対数値Ｒは、注目画素から周辺画素の画素値を差分したものの対数である。つまり、両者の相対的明るさを示すものである。従って、注目画素と周辺画素との明るさに差が無ければ、対数値Ｒは「０」となるが、レティネックス処理では、後半の演算処理で反射光成分値は分母に挿入されるので、反射光成分値が「０」であると演算不能となってしまうのである。
【００１４】
故に、この対数値Ｒが求められると、対数値Ｒを正規化するために全対数値Ｒの最大値から最小値までの範囲で対数値Ｒのヒストグラム（頻度分布）が作成される（図１３（ｄ））。
【００１５】
その後、ヒストグラムの補正を行う（図１３（ｅ））。かかるヒストグラム補正では、作成されたヒストグラムからメジアン値Ｍを求め、そのメジアン値Ｍから大きい側へ所定％（例えば４５％）の画素数を含む範囲の上限値をＵ、メジアン値Ｍから小さい側へ所定％（例えば４５％）の画素数を含む範囲の下限値をＤとする。
【００１６】
続いて、対数値Ｒを正規化した正規化反射率（正規化レティネックス値）ｒｅｆｌｅを求める（図１３（ｆ））。具体的には、求められた上限値Ｕおよび下限値Ｄの値を、それぞれ予め定めた上限値ｕおよび下限値ｄとして、先に算出された上限値Ｕ〜下限値Ｄの範囲の対数値Ｒを上限値ｕ〜下限値ｄの範囲の値に正規化する（正規化反射率ｒｅｆｌｅの算出）。この正規化は、例えば、（３）式に従って実行される。
【００１７】
【数３】
2008252772.tif 000005
尚、下限値Ｄ以下である対数値Ｒは下限値ｄに、上限値Ｕ以上である対数値Ｒは、上限値ｕとされる。ここで、下限値ｄを「０」を超える値とすることで、先に求められた対数値Ｒは、計算機処理できるように正規化された正規化反射率ｒｅｆｌｅとされるのである。得られた正規化反射率ｒｅｆｌｅは、元画像の反射光成分値（正規化された反射光成分値）であって、最終的な反射光成分値（出力値Ｏｕｔ）を求めるためのパラメータとなる値である。
【００１８】
その後、正規化反射率ｒｅｆｌｅに対し、カラー補正処理であるＣＲ処理が実行された後（図１３（ｇ））、出力値Ｏｕｔが生成される。出力値Ｏｕｔは、（４）式に従って算出される。この出力値Ｏｕｔは、出力画像の各画素の画素値（出力画像データ）となる。
【００１９】
【数４】
2008252772.tif 000006
レティネックス処理では、上記したように、画素値は、照明光成分値と反射光成分値との合成値とされており、照明光成分値は輝度を反映し、反射光成分値は色を反映するものとされている。ここで、照明光成分値は、元画像の画素値を反射光成分値で除して求められるので、（４）式においては、分母が照明光成分値に相当する。尚、元画像の画素値は「０」〜「２５５」とされているので、算出された正規化反射率ｒｅｆｌｅ（ｘ，ｙ）についても「０」〜「２５５」で取り扱うべく、２５５が乗算されて画素値として取り扱われる値に変換されている。
【００２０】
（４）式では、元画像の画素値を照明光成分値で除しているので、算出される出力値Ｏｕｔは、反射光成分値となる。出力画像データの画素値としては、色を形成する値が必要であるので、反射光成分値で出力値Ｏｕｔが求められるのである。当然の事ながら、（４）式からも解るように、算出される出力値Ｏｕｔは、ガンマ補正によって明度や階調（コントラスト）が補正された照明光成分が反映された値となっている。
【００２１】
この（４）式に従えば、元画像の画素値と出力画像の画素値との対応関係は、反射光成分値（正規化反射率ｒｅｆｌｅ）に応じて変化するグラフ曲線となる。（４）式で示される関数では、一般に、入力された元画像の画素値は、画素値が小さい側、即ち暗部においては増大（伸張）される補正がなされて、出力値Ｏｕｔとして出力されるように設計されている。その結果、入力値の僅かな変化が大きく出力値Ｏｕｔに反映され、階調変化を増大させるコントラストの強調が行われることとなる。従って、レティネックス処理を行えば、入力された元画像に対し逆光画像部分などの低画質部分の画質が改良された出力画像を生成することができる。
【００２２】
更に、（４）式で示される関数は、元画像の画素値が大きい側、即ち、明部においては、入力された画素値は、正規化反射率ｒｅｆｌｅが小さくなるほどより大きく減少（圧縮）されて出力されるように設計されている。
【００２３】
つまり、レティネックス処理において正規化反射率が小さな値であるほど（言い換えれば対数値Ｒが正であるよりも負であるほうが）、元画像データの画素値が大きくなるにつれ、生成される出力値Ｏｕｔが大きく圧縮される傾向にある。言い換えれば、正規化反射率ｒｅｆｌｅが大きくなるほど、元画像の画素値が同じでも出力値Ｏｕｔは大きくなる。このように、同じ入力値でも、正規化反射率ｒｅｆｌｅ（対数値Ｒ）に応じて、即ち周辺画素との相対的な明るさに応じて、その出力値Ｏｕｔは広い範囲の値を取り得るので、明部において階調変化を増長（形成）し、コントラストを向上させることができるのである。尚、画素値と輝度（明るさ）とは連動しており、画素値が大きいほど輝度は高く（明るく）なり、逆に画素値が小さいほど輝度は低く（暗く）なる。
【００２４】
特開２００１−６９５２５号公報（特許文献１）には、このレティネックス処理をＲＧＢの各プレーンで独立に行った場合に、カラーバランスが崩れたり色ずれが発生するという問題点を解決するために、ＲＧＢ値をＹＣｂＣｒやＹＩＱという輝度成分と色成分により構成される座標空間に変換し、輝度成分Ｙに対してのみレティネックス処理を施し、色成分を維持したまま、ＲＧＢに戻すという方法が開示されている。この方法を用いると輝度成分のみが調整され、色成分は調整されないのでカラーバランスが崩れたり色ずれが発生することがない。また、この方法では、輝度成分のみにレティネックス処理を行うので、ＲＧＢの各プレーンそれぞれにレティネックス処理を行う場合に比べ、計算量が少なく、高速で処理を実行することができとともに、Ｒ（ｘ，ｙ）を正規化するために、ＲＧＢそれぞれについて記憶する必要がなく、輝度のみについて記憶すればよいので、必要な記憶容量は少なくなる。
【００２５】
また、特許３７３１５７７号（特許文献２）には、このレティネックス処理の処理速度を高速にする方法が開示されている。この方法は、元画像を平均画素法などの方法により縮小画像（解像度が低い）を形成し、その縮小画像の各画素について周辺平均輝度を求めた周辺平均輝度画像（ボケ画像）を形成し、そのボケ画像を拡大した画像と元画像からレティネックス処理画像を形成し、更に、そのレティネックス処理画像と元画像とから出力画像を形成している。
【特許文献１】特開２００１−６９５２５号公報
【特許文献２】特許３７３１５７７号公報
【発明の開示】
【発明が解決しようとする課題】
【００２６】
しかしながら、従来の文献に開示された処理では、元画像の全画素について、それぞれ反射光成分値を演算して記憶し、全画素分の反射光成分値を得た後に、その反射光成分値を集計して正規化パラメータを決定するので、全画素分の反射光成分値を記憶するための膨大な記憶容量が必要という問題点があった。
【００２７】
そこで、本出願人は、上記問題点を解決するために鋭意検討した結果、元画像の反射率を演算するのに先立って、縮小画像の反射光成分値である対数値Ｒｓを取得し、その縮小画像の対数値Ｒｓを用いて正規化パラメータ（上記した対数値Ｒから求められる上限値Ｕおよび下限値Ｄの値）を決定することを想到した（未公知）。なお、「ｓ」は、縮小画像についての接尾辞であり、元画像については、接尾辞を付さないものとする。
【００２８】
正規化パラメータを求めるために、縮小画像を用いた方が、対数値を演算すべき画素の数を低減することができるので、メモリ使用量を小さくすることができる。また、正規化パラメータを事前に決定しておくことにより、元画像について演算された対数値Ｒは、他の画素の対数値Ｒの演算終了を待たずに、正規化して直ぐに出力することができるので、画像の出力開始までの時間が短縮し、処理を高速化することができる。
【００２９】
一方で、フィルタ演算は、各要素に格納された各フィルタ係数を元画像の対応する位置の画素値に乗算して加算する（乗算値の総和を求める）積和演算を、各画素について行う畳み込み演算であるため、その計算量が非常に多い。そこで、一般的に、フィルタ処理では、全要素に全てフィルタ係数が配置されて形成されたフィルタに代えて、フィルタ係数が各所で間引かれたフィルタを用いてフィルタ演算をすることが往々にして行われている。つまり、フィルタ要素が格納された要素のみを用いて積和演算を行うのである。
【００３０】
ここで、縮小画像から正規化パラメータを導出することにより処理を高速化する場合、ガウスフィルタを用いたフィルタ演算は、元画像と縮小画像とのそれぞれに対して行わなければならない。かかる場合に、両方のフィルタが的確に設定されていないと、フィルタ処理して得られる平均画素値を用いて対数値を求めた場合に、その演算結果（対数値の分布態様）が、元画像と縮小画像とでは大きく異なるものとなってしまうという問題点があった。つまり、元画像、縮小画像の双方においてそれぞれに用いられるフィルタが、不用意に作成されたものであると、縮小画像から決定された正規化パラメータが元画像に対しては不適切なパラメータとなってしまう。正規化パラメータは、対数値の頻度分布に基づいて設定されるものであるからである。その結果、縮小画像から得られた正規化パラメータを用いて元画像の対数値Ｒの正規化を行うと、レティネックス処理の精度を低下させてしまい、画質の補正が十分に行われないという問題点があった。
【００３１】
更には、縮小画像用のフィルタの大きさと元画像用のフィルタの大きさとの比を、画像サイズに応じたものとすることは、フィルタ処理の結果（対数値の分布態様）を縮小画像と元画像とで同様のものを得るための要件の１つである。しかしながら、入力される元画像の大きさは様々であるので、元画像の大きさに応じてその都度フィルタサイズが変動するといった事態が生じる。このため、フィルタを記憶するために必要なメモリ量が不明確となってしまう。言い換えれば、入力される元画像の大きさが不明であるために、元画像用のフィルタサイズの上限値が不明となってしまうのである。このため、場合によっては、フィルタサイズが当初予期したものよりも大きなものとなって、フィルタを記憶するためのメモリの確保が困難になるという問題点があった。また、入力される元画像がどのような大きさであっても、その元画像を処理するためのフィルタを記憶できるようにしようとすれば、フィルタを記憶するために膨大なメモリを割当ねばならず、必要なメモリ容量を増大させてしまうという問題点があった。
【００３２】
本発明は、上記問題点を解決するためになされたものであり、レティネックス処理におけるフィルタ処理を高速化すると共に、フィルタ処理を高速化してもレティネックス処理で得られる画像の品質を良好に保持することができる画像処理装置および画像処理プログラムを提供することを目的としている。
【課題を解決するための手段】
【００３３】
上記目的を達成するために、請求項１記載の画像処理装置は、元画像の注目画素を含む周辺画素領域に対するフィルタ演算を行って各注目画素に対応する周辺画素の平均画素値をそれぞれ生成する元画像平均画素値生成手段と、前記元画像平均画素値生成手段により生成された平均画素値と元画像の注目画素の画素値とに対する対数演算処理に基づいて、注目画素と周辺画素との明るさの比を示す反射光成分値を元画像の各画素について算出する元画像反射光成分値算出手段と、前記元画像反射光成分値算出手段により算出された元画像の各反射光成分値と、注目画素の画素値とに基づくと共に、反射光成分値に応じて変化する画素値と出力値との対応関係に従って注目画素の画素値を出力値に変換する変換手段とを有し、前記変換手段により、元画像の注目画素の画素値を、注目画素と周辺画素との明るさの比に応じて補正するものであり、前記変換手段は、元画像の画素値を反射光成分値に基づいて変換する場合には、反射光成分値を正規化パラメータに従って正規化した正規化反射光成分値を用いて元画像の画素値を変換するものであり、前記正規化パラメータを設定するために元画像を縮小して縮小画像を形成する縮小画像形成手段と、前記縮小画像形成手段により形成された縮小画像の各画素を注目画素とし、当該注目画素を含む周辺画素領域に対するフィルタ演算を行って、縮小画像の各注目画素に対応する周辺画素の平均画素値をそれぞれ生成する縮小平均画素値生成手段と、前記縮小平均画素値生成手段により生成された平均画素値と縮小画像の注目画素の画素値とに対する対数演算処理に基づいて、縮小画像の各画素の反射光成分値を算出すると共に、前記反射光成分値の頻度分布に基づいて、前記変換手段が用いる正規化反射光成分値の正規化パラメータを設定する正規化パラメータ設定手段と、前記元画像平均画素値生成手段でのフィルタ演算に用いられ仮想的に２次元マトリクスに配置される要素に格納されたフィルタ係数を有する元画像用マスクを記憶する元画像用マスク記憶手段と、前記元画像用マスク記憶手段に記憶される元画像用マスクを元画像と縮小画像とのサイズ比に基づいて縮小して、前記縮小平均画素値生成手段が実行するフィルタ演算で用いられる縮小画像用マスクを生成する縮小画像用マスク生成手段とを備えたものである。
【００３４】
請求項２記載の画像処理装置は、請求項１記載の画像処理装置において、前記元画像用マスク記憶手段に記憶される元画像用マスクは、前記元画像平均画素値生成手段によるフィルタ演算において、演算に関わる要素は、元画像用マスクを構成する全要素よりも少ない数で配置されたものであり、前記縮小画像用マスク生成手段は、元画像と縮小画像とのサイズ比に基づいて形成される縮小画像用マスクの全要素数で、前記元画像用マスク記憶手段に記憶される元画像用マスクを区分する区分手段と、縮小画像用マスクの要素に格納するフィルタ係数を算出すると共に、算出されるフィルタ係数に対し、前記区分手段にて区分された元画像用マスクの各区画のうち、縮小画像用マスクの要素の配置に対応する区画において前記元画像平均画素値生成手段によるフィルタ演算に実際に用いられる要素数で、重み付けをする重み付けフィルタ係数算出手段とを備えており、元画像用マスクで使用される要素のパターンを反映した縮小画像用マスクを生成するものである。
【００３５】
請求項３記載の画像処理装置は、請求項１記載の画像処理装置において、前記元画像用マスク記憶手段に記憶される元画像用マスクは、前記元画像平均画素値生成手段によるフィルタ演算において、演算に関わる要素は、元画像用マスクを構成する全要素よりも少ない数で配置されたものであり、前記縮小画像用マスク生成手段は、元画像と縮小画像とのサイズ比に基づいて形成される縮小画像用マスクの全要素数で、前記元画像用マスク記憶手段に記憶される元画像用マスクを区分する区分手段と、縮小画像用マスクの要素に格納するフィルタ係数を算出すると共に、算出されるフィルタ係数に対し、前記区分手段にて区分された元画像用マスクの各区画のうち、縮小画像用マスクの要素の配置に対応する区画において、前記元画像平均画素値生成手段によるフィルタ演算に実際に用いられる要素に格納されているフィルタ係数の総和で、重み付けをする重み付けフィルタ係数算出手段とを備えており、元画像用マスクの内容を反映した縮小画像用マスクを生成するものである。
【００３６】
請求項４記載の画像処理装置は、請求項２又は３に記載の画像処理装置において、前記区分手段は、生成された各区画を縮小画像用マスクの各要素に対応させた場合に元画像用マスク側に余剰の要素や不足の要素を発生させることなく、元画像用マスクの全要素を配分して、元画像用マスクを縮小画像用マスクの要素数分に区分するものである。
【００３７】
請求項５記載の画像処理装置は、請求項４記載の画像処理装置において、前記区分手段は、縮小画像用マスクの大きさと元画像用マスクの大きさとの比に基づいて、縮小画像用マスクの１の要素に対応する元画像用マスクの要素数を算出する対応要素数算出手段と、前記対応要素数算出手段により算出された要素数毎に元画像用マスクを分割した場合の各分割位置を算出する分割位置算出手段と、前記分割位置算出手段により算出された各分割位置に隣接する２の要素の内のより近いほうへ、分割位置をずらして分割位置間に含まれる要素数を整数化する整数化手段とを備えており、分割位置に応じて各分割位置間に含まれる要素数を変更しつつ元画像用マスクに区画を割り付けることで、元画像用マスク側に余剰の要素や不足の要素を発生させることなく、元画像用マスクの全要素を配分するものである。
【００３８】
請求項６記載の画像処理装置は、請求項２から５のいずれかに記載の画像処理装置において、前記元画像用マスク記憶手段に記憶される元画像用マスクは、各要素を特定する値が乱数に従って選択されることで、全要素の内のフィルタ演算に実際に用いられる要素が決定されたものである。
【００３９】
請求項７記載の画像処理装置は、請求項１から６のいずれかに記載の画像処理装置において、前記縮小画像用マスク生成手段は、元画像と縮小画像とのサイズ比に基づいて形成される縮小画像用マスクの要素数が、偶数となるかを判断する偶数判断手段と、前記偶数判断手段により要素数が偶数になると判断されると、要素数を増加または減少させて、縮小画像用マスクの要素数が奇数となるように調整する要素数調整手段とを備えている。
【００４０】
請求項８記載の画像処理プログラムは、元画像の補正処理を行う画像処理装置で実行され、元画像の注目画素を含む周辺画素領域に対するフィルタ演算を行って各注目画素に対応する周辺画素の平均画素値をそれぞれ生成する元画像平均画素値生成ステップと、前記元画像平均画素値生成ステップにより生成された平均画素値と元画像の注目画素の画素値とに対する対数演算処理に基づいて、注目画素と周辺画素との明るさの比を示す反射光成分値を元画像の各画素について算出する元画像反射光成分値算出ステップと、前記元画像反射光成分値算出ステップにより算出された元画像の各反射光成分値と、注目画素の画素値とに基づくと共に、反射光成分値に応じて変化する画素値と出力値との対応関係に従って注目画素の画素値を出力値に変換する変換ステップとを有し、前記変換ステップにより、元画像の注目画素の画素値を、注目画素と周辺画素との明るさの比に応じて補正するものであり、前記変換ステップは、元画像の画素値を反射光成分値に基づいて変換する場合には、反射光成分値を正規化パラメータに従って正規化した正規化反射光成分値を用いて元画像の画素値を変換するものであり、前記正規化パラメータを設定するために元画像を縮小して縮小画像を形成する縮小画像形成ステップと、前記縮小画像形成ステップにより形成された縮小画像の各画素を注目画素とし、当該注目画素を含む周辺画素領域に対するフィルタ演算を行って、縮小画像の各注目画素に対応する周辺画素の平均画素値をそれぞれ生成する縮小平均画素値生成ステップと、前記縮小平均画素値生成ステップにより生成された平均画素値と縮小画像の注目画素の画素値とに対する対数演算処理に基づいて、縮小画像の各画素の反射光成分値を算出すると共に、前記反射光成分値の頻度分布に基づいて、前記変換ステップが用いる正規化反射光成分値の正規化パラメータを設定する正規化パラメータ設定ステップと、前記元画像平均画素値生成ステップでのフィルタ演算に用いられ仮想的に２次元マトリクスに配置される要素に格納されたフィルタ係数を有する元画像用マスクを、前記画像処理装置の内部に記憶する元画像用マスク記憶ステップと、前記元画像用マスク記憶ステップによって記憶される元画像用マスクを元画像と縮小画像とのサイズ比に基づいて縮小して、前記縮小平均画素値生成ステップが実行するフィルタ演算で用いられる縮小画像用マスクを生成する縮小画像用マスク生成ステップとを備えたものである。
【００４１】
請求項９記載の画像処理プログラムは、請求項８記載の画像処理プログラムにおいて、前記元画像用マスク記憶ステップにより画像処理装置内部に記憶される元画像用マスクは、前記元画像平均画素値生成ステップによるフィルタ演算において、演算に関わる要素は、元画像用マスクを構成する全要素よりも少ない数で配置されたものであり、前記縮小画像用マスク生成ステップは、元画像と縮小画像とのサイズ比に基づいて形成される縮小画像用マスクの全要素数で、前記元画像用マスク記憶ステップにて記憶される元画像用マスクを区分する区分ステップと、縮小画像用マスクの要素に格納するフィルタ係数を算出すると共に、算出されるフィルタ係数に対し、前記区分ステップにて区分された元画像用マスクの各区画のうち、縮小画像用マスクの要素の配置に対応する区画において前記元画像平均画素値生成ステップによるフィルタ演算に実際に用いられる要素数で、重み付けをする重み付けフィルタ係数算出ステップとを備えており、前記区分ステップは、縮小画像用マスクの大きさと元画像用マスクの大きさとの比に基づいて、縮小画像用マスクの１の要素に対応する元画像用マスクの要素数を算出する対応要素数算出ステップと、前記対応要素数算出ステップにより算出された要素数毎に元画像用マスクを分割した場合の各分割位置を算出する分割位置算出ステップと、前記分割位置算出ステップにより算出された各分割位置に隣接する２の要素の内のより近いほうへ、分割位置をずらして分割位置間に含まれる要素数を整数化する整数化ステップとを備えており、分割位置に応じて各分割位置間に含まれる要素数を変更しつつ元画像用マスクに区画を割り付けることで、元画像用マスク側に余剰の要素や不足の要素を発生させることなく、元画像用マスクの全要素を配分するものである。
【００４２】
請求項１０記載の画像処理プログラムは、請求項８記載の画像処理プログラムにおいて、前記元画像用マスク記憶ステップにより画像処理装置内部に記憶される元画像用マスクは、前記元画像平均画素値生成ステップによるフィルタ演算において、演算に関わる要素は、元画像用マスクを構成する全要素よりも少ない数で配置されたものであり、前記縮小画像用マスク生成ステップは、元画像と縮小画像とのサイズ比に基づいて形成される縮小画像用マスクの全要素数で、前記元画像用マスク記憶ステップに記憶される元画像用マスクを区分する区分ステップと、縮小画像用マスクの要素に格納するフィルタ係数を算出すると共に、算出されるフィルタ係数に対し、前記区分ステップにて区分された元画像用マスクの各区画のうち、縮小画像用マスクの要素の配置に対応する区画において、前記元画像平均画素値生成ステップによるフィルタ演算に実際に用いられる要素に格納されているフィルタ係数の総和で、重み付けをする重み付けフィルタ係数算出ステップとを備えており、前記区分ステップは、縮小画像用マスクの大きさと元画像用マスクの大きさとの比に基づいて、縮小画像用マスクの１の要素に対応する元画像用マスクの要素数を算出する対応要素数算出ステップと、前記対応要素数算出ステップにより算出された要素数毎に元画像用マスクを分割した場合の各分割位置を算出する分割位置算出ステップと、前記分割位置算出ステップにより算出された各分割位置に隣接する２の要素の内のより近いほうへ、分割位置をずらして分割位置間に含まれる要素数を整数化する整数化ステップとを備えており、分割位置に応じて各分割位置間に含まれる要素数を変更しつつ元画像用マスクに区画を割り付けることで、元画像用マスク側に余剰の要素や不足の要素を発生させることなく、元画像用マスクの全要素を配分するものである。
【発明の効果】
【００４３】
請求項１記載の画像処理装置によれば、元画像の画素値を反射光成分値に基づいて変換する場合、反射光成分値を正規化パラメータに従って正規化した正規化反射光成分値を用いて元画像の画素値を変換するが、この正規化パラメータを、縮小画像の各画素の反射光成分値の頻度分布に基づいて設定するので、元画像の反射光成分値を用いて正規化パラメータを求めるよりも、正規化パラメータを求める際の演算数が少なく、処理を高速で行うことができると共に、必要なメモリ量を節約できる。
【００４４】
ここで、元画像および縮小画像のそれぞれに対し、平均画素値を求めるためのフィルタ演算が行われるが、縮小画像のフィルタ演算に用いられる縮小画像用マスクは、元画像用マスク記憶手段に記憶される元画像用マスクを、元画像と縮小画像とのサイズ比に基づいて縮小して生成する。このため、元画像および縮小画像のそれぞれに対して適用されるマスクは、元画像と縮小画像とのサイズ比に応じたものとなり、画像のサイズ比と無関係に生成されたマスクを用いてフィルタ演算を行う場合よりも、縮小画像の平均画素値に基づいて求められる反射光成分値の頻度分布の態様を、元画像の反射光成分値の頻度分布に整合させることができる。その結果、縮小画像の反射光成分値の頻度分布に基づいて設定される正規化パラメータを、元画像に適合する適切なものとすることができ、処理速度を向上させつつ、精度のよい画像補正を実行することができるという効果がある。
【００４５】
更に、マスクを用いてフィルタ処理を行う場合に、元画像用マスクから縮小画像用マスクを生成するので、元画像用マスクの大きさを固定サイズとし、縮小画像用マスクの大きさを変動させることで双方のマスクを画像のサイズ比に応じたものとすることができる。その上、元画像用マスクのマスクサイズを既知とすることができる。従って、例えば、縮小画像用マスクの大きさを固定して、元画像と縮小画像とのサイズ比に応じたマスクを作成する場合のように、入力される元画像のサイズに応じて元画像用マスクの大きさが変動することがない。言い換えれば、元画像用マスクのマスクサイズの上限値が不明になることはない。
【００４６】
このため、元画像用マスクの設計段階で、適切な大きさで元画像用マスクを設計しておけば、マスクサイズの上限値が不明である場合に行われるような元画像用マスクを記憶するための膨大なメモリ割当てを不要にでき、画像補正を実行するために必要なメモリ量を低減することができるという効果がある。また、フィルタ演算に際し、マスクを記憶するためのメモリの確保を容易とすることができる上、マスクを記憶できないが故にフィルタ演算が不能になるといった事態を回避できるという効果がある。
【００４７】
請求項２記載の画像処理装置によれば、請求項１記載の画像処理装置の奏する効果に加え、元画像用マスクは、フィルタ演算において演算に関わる要素が、元画像用マスクを構成する全要素よりも少ない数で配置されたものであるので、演算に使用される要素は間引かれたものとなって、フィルタ処理における演算数を低減して、演算を高速化することができるという効果がある。
【００４８】
元画像用マスクを縮小して縮小画像用マスクを生成すると、マスクを構成する要素数が減少するため、元画像用マスクの要素の間引きのパターンと同じパターンで縮小画像用マスクを形成することは困難となる。しかし、本装置においては、縮小画像用マスクの全要素数で区分された元画像用マスクの１区画においてフィルタ演算に実際に用いられる要素数で、当該１区画に対応する縮小画像用マスクの１の要素に格納されるフィルタ係数の重み付けを行う。よって、元画像用マスクの区画内のフィルタ演算に用いられる要素数に応じて、縮小画像用マスクの対応する要素のフィルタ係数を変化させることができる。これによれば、縮小画像用マスクのフィルタ係数に、元画像用マスクの対応する区画、即ち、対応する複数の要素群の内容（各々の要素の使用状態）を反映させることができる、言い換えれば、元画像用マスクの要素の間引きパターンを重みに変換してフィルタ係数に付与することができ、元画像用マスクの間引きのパターンが擬似的に模写された高度に相関性を有する縮小画像用マスクを形成することができるという効果がある。
【００４９】
従って、かかるマスクを用いることで、縮小画像の平均画素値に基づいて求められる反射光成分値の頻度分布の態様を、元画像の反射光成分値の頻度分布に、より整合させることができる。故に、その結果、縮小画像の反射光成分値の頻度分布に基づいて設定される正規化パラメータを、元画像に適合する適切なものとすることができるので、処理速度を向上させつつ、より一層、精度のよい画像補正を実行することができるという効果がある。
【００５０】
請求項３記載の画像処理装置によれば、請求項１記載の画像処理装置の奏する効果に加え、元画像用マスクは、フィルタ演算において演算に関わる要素が、元画像用マスクを構成する全要素よりも少ない数で配置されたものであるので、演算に使用される要素は間引かれたものとなって、フィルタ処理における演算数を低減して、演算を高速化することができるという効果がある。
【００５１】
元画像用マスクを縮小して縮小画像用マスクを生成すると、マスクを構成する要素数が減少するため、元画像用マスクの要素の間引きのパターンと同じパターンで縮小画像用マスクを形成することは困難となる。しかし、本装置においては、縮小画像用マスクの全要素数で区分された元画像用マスクの１区画において、フィルタ演算に実際に用いられる要素に格納されたフィルタ係数の総和で、当該１区画に対応する縮小画像用マスクの１の要素に格納されるフィルタ係数の重み付けを行う。このため、縮小画像用マスクのフィルタ係数に付与される重みは、元画像用マスクにおいて対応する区画において使用されるフィルタ係数の個数によっても、また、使用される個々のフィルタ係数の値によっても変化することとなる。
【００５２】
よって、縮小画像用マスクのフィルタ係数には、元画像用マスクによるフィルタ演算においてどれほどの数の要素が関わったか（即ち間引きのパターン）を反映できる上、元画像用マスクで使用されるフィルタ係数そのものの値についても反映させることができるという効果がある。フィルタ演算においては、要素に格納されているフィルタ係数に画素値が演算されるので、フィルタ係数の値に応じて異なる平均画素値が導出される。故に、元画像用マスクにおいてフィルタ演算に実際に用いられる要素数を重みとしてフィルタ係数に付与するよりも、用いられる要素に格納されているフィルタ係数の総和で、フィルタ係数を重み付けすることにより、より一層高度に元画像用マスクの内容を反映した縮小画像用マスクを生成することができる。
【００５３】
その結果、かかるマスクを用いることで、縮小画像の平均画素値に基づいて求められる反射光成分値の頻度分布の態様を、元画像の反射光成分値の頻度分布に、より整合させることができ、縮小画像の反射光成分値の頻度分布に基づいて設定される正規化パラメータを、元画像に適合する適切なものとすることができる。故に、処理速度を向上させつつ、より一層、精度のよい画像補正を実行することができるという効果がある。
【００５４】
請求項４記載の画像処理装置によれば、請求項２又は３に記載の画像処理装置の奏する効果に加え、元画像用マスクに生成される各区画を縮小画像用マスクの各要素に対応させた場合に元画像用マスク側に余剰の要素や不足の要素を発生させることなく、元画像用マスクの全要素を配分して、元画像用マスクを縮小画像用マスクの要素数分に区分するので、元画像用マスクの情報を欠落させることなく縮小画像用マスクに反映させることができるという効果がある。
【００５５】
請求項５記載の画像処理装置によれば、請求項４記載の画像処理装置の奏する効果に加え、区分手段にて元画像用マスクを分割する場合の分割位置を、各分割位置に隣接する２の要素の内のより近いほうへずらして分割位置間に含まれる要素数を整数化することができる。元画像と縮小画像とのサイズ比に応じて元画像用マスクを縮小した場合、縮小画像用マスクの１の要素に対応させる元画像用マスクの要素数は、多くの場合、整数とはならずに、小数点以下の端数を有する数となり、この場合、分割位置は、１の要素を分断する位置となる。
【００５６】
しかし、本装置においては、各分割位置に隣接する２の要素の内のより近いほうへ、分割位置をずらして分割位置間に含まれる要素数を整数化するので、縮小画像用マスクの要素に対応する区画を規定する際に、分断された面積比に応じて当該分断された要素を隣り合う区画のそれぞれに分配して区画を規定するなどといった煩雑な処理を不要とすることができるという効果がある。また、区画の範囲を整数で管理できるので、その管理を簡便にすることができるという効果がある。
【００５７】
請求項６記載の画像処理装置によれば、請求項２から５のいずれかに記載の画像処理装置の奏する効果に加え、元画像用マスクは、各要素を特定する値が乱数に従って選択されることで全要素の内のフィルタ演算に実際に用いられる要素が決定されたものであるので、人為的に、フィルタ演算に実際に用いられる要素を決定する（フィルタ演算に用いられない要素を間引く）場合に比べて、よりランダムにフィルタ演算に実際に用いられる要素を２次元マトリクスに配置することができるという効果がある。このため、全要素よりも少ない要素数でフィルタ演算を行っても、全要素がフィルタ演算に用いられた場合と比較して画質を大きく劣化させることなく自然な画像補正を実現することができるという効果がある。
【００５８】
請求項７記載の画像処理装置によれば、請求項１から６のいずれかに記載の画像処理装置の奏する効果に加え、元画像と縮小画像とのサイズ比に基づいて形成される縮小画像用マスクの要素数が偶数になる場合には、要素数を増加または減少させて、縮小画像用マスクの要素数が奇数となるように調整するので、縮小画像用マスクの中心要素を、縮小画像の注目画素に重ねてフィルタ処理を実行することができるという効果がある。
【００５９】
つまり、元画像と縮小画像とのサイズ比に基づいて、単純に縮小画像用マスクを形成した場合には、必ずしも奇数の要素数でマスクが形成されるとは限られず、偶数の要素数でマスクが形成されてしまうこともある。偶数の要素数で形成されたマスクではマスク中心に要素が配置されないが、本装置では、縮小画像用マスクは、必ず、奇数の要素数で生成される（即ち、マスクの中心に要素が配置される）ので、注目画素にマスク中心（中心要素）を確実に重ねることができる。その結果、偶数の要素数のフィルタを用いる場合のような注目画素に対して偏心された範囲でフィルタ演算が行われるといった事態が発生することはない。
【００６０】
通常、マスクは、中心要素を対称中心としてフィルタ係数が割り付けられているなど、中心要素を注目画素に重ね、他の要素をその配置に従って、注目画素周辺の対応する位置の周辺画素に重ねて演算を行うように設計されているので、縮小画像用マスクを奇数の要素数で形成されたものとすることにより、当初の設計通りのフィルタ演算を行うことができ、最終的に得られる補正画像を高品質で形成することができるという効果がある。
【００６１】
請求項８記載の画像処理プログラムによれば、元画像の画素値を反射光成分値に基づいて変換する場合、反射光成分値を正規化パラメータに従って正規化した正規化反射光成分値を用いて元画像の画素値を変換するが、この正規化パラメータを、縮小画像の各画素の反射光成分値の頻度分布に基づいて設定するので、元画像の反射光成分値を用いて正規化パラメータを求めるよりも、正規化パラメータを求める際の演算数が少なく、処理を高速で行うことができると共に、必要なメモリ量を節約できる。
【００６２】
ここで、元画像および縮小画像のそれぞれに対し、平均画素値を求めるためのフィルタ演算が行われるが、縮小画像のフィルタ演算に用いられる縮小画像用マスクは、元画像用マスク記憶ステップにより記憶される元画像用マスクを、元画像と縮小画像とのサイズ比に基づいて縮小して生成する。このため、元画像および縮小画像のそれぞれに対して適用されるマスクは、元画像と縮小画像とのサイズ比に応じたものとなり、画像のサイズ比と無関係に生成されたマスクを用いてフィルタ演算を行う場合よりも、縮小画像の平均画素値に基づいて求められる反射光成分値の頻度分布の態様を、元画像の反射光成分値の頻度分布に整合させることができる。その結果、縮小画像の反射光成分値の頻度分布に基づいて設定される正規化パラメータを、元画像に適合する適切なものとすることができ、処理速度を向上させつつ、精度のよい画像補正を実行することができるという効果がある。
【００６３】
更に、マスクを用いてフィルタ処理を行う場合に、元画像用マスクから縮小画像用マスクを生成するので、元画像用マスクの大きさを固定サイズとし、縮小画像用マスクの大きさを変動させることで、双方のマスクを画像のサイズ比に応じたものとすることができる。その上、元画像用マスクのマスクサイズを既知とすることができる。従って、例えば、縮小画像用マスクの大きさを固定して、元画像と縮小画像とのサイズ比に応じたマスクを作成する場合のように、入力される元画像のサイズに応じて元画像用マスクの大きさが変動することがない。言い換えれば、元画像用マスクのマスクサイズの上限値が不明になることはない。
【００６４】
このため、元画像用マスクの設計段階で、適切な大きさで元画像用マスクを設計しておけば、マスクサイズの上限値が不明である場合に行われるような元画像用マスクを記憶するための膨大なメモリ割当てを不要にでき、画像補正を実行するために必要なメモリ量を低減することができるという効果がある。また、フィルタ演算に際し、マスクを記憶するためのメモリの確保を容易とすることができる上、マスクが記憶できないが故にフィルタ演算が不能になるといった事態を回避できるという効果がある。
【００６５】
請求項９記載の画像処理プログラムによれば、請求項８記載の画像処理プログラムの奏する効果に加え、元画像用マスクは、フィルタ演算において演算に関わる要素が、元画像用マスクを構成する全要素よりも少ない数で配置されたものであるので、演算に使用される要素は間引かれたものとなって、フィルタ処理における演算数を低減して、演算を高速化することができる。
【００６６】
元画像用マスクを縮小して縮小画像用マスクを生成すると、マスクを構成する要素数が減少するため、元画像用マスクの要素の間引きのパターンと同じパターンで縮小画像用マスクを形成することは困難となる。しかし、本プログラムにおいては、縮小画像用マスクの全要素数で区分された元画像用マスクの１区画においてフィルタ演算に実際に用いられる要素数で、当該１区画に対応する縮小画像用マスクの１の要素に格納されるフィルタ係数の重み付けを行う。よって、元画像用マスクの区画内のフィルタ演算に用いられる要素数に応じて縮小画像用マスクのフィルタ係数を変化させることができる。これによれば、元画像用マスクの要素の間引きパターンを重みに変換して、縮小画像用マスクのフィルタ係数に付与することができ、元画像用マスクの間引きのパターンが擬似的に模写された高度に相関性を有する縮小画像用マスクを形成することができるという効果がある。
【００６７】
従って、かかるマスクを用いることで縮小画像の平均画素値から求められる反射光成分値の頻度分布の態様を、元画像の反射光成分値の頻度分布に、より整合させることができ、その結果、縮小画像の反射光成分値の頻度分布に基づいて設定される正規化パラメータを、元画像に適合する適切なものとすることができる。故に、処理速度を向上させつつ、より一層、精度のよい画像補正を実行することができるという効果がある。
【００６８】
更に、区分ステップにて元画像用マスクを分割する場合の分割位置を、各分割位置に隣接する２の要素の内のより近いほうへずらして分割位置間に含まれる要素数を整数化することができる。このため、分割位置に応じて各分割位置間に含まれる要素数を変更しつつ元画像用マスクに区画を割り付けることができ、元画像用マスク側に余剰の要素や不足の要素を発生させることなく、各区画に元画像用マスクの全要素を配分することができる。よって、元画像用マスクの情報を欠落させることなく縮小画像用マスクに反映させることができるという効果がある。
【００６９】
また、元画像と縮小画像とのサイズ比に応じて元画像用マスクを縮小した場合、縮小画像用マスクの１の要素に対応させる元画像用マスクの要素数は、多くの場合、整数とはならずに、小数点以下の端数を有する数となる。この場合、分割位置は、１の要素を分断する位置となるが、本プログラムにおいては、分割位置をずらして間に含まれる要素数を整数化することができるので、縮小画像用マスクの要素に対応する区画を規定する際に、分断された面積比に応じて当該分断された要素を隣り合う区画のそれぞれに分配して区画を規定するなどといった煩雑な処理を不要とすることができるという効果がある。また、区画の範囲を整数で管理できるので、その管理を簡便にすることができるという効果がある。
【００７０】
請求項１０記載の画像処理プログラムによれば、請求項８記載の画像処理プログラムの奏する効果に加え、元画像用マスクは、フィルタ演算において演算に関わる要素が、元画像用マスクを構成する全要素よりも少ない数で配置されたものであるので、演算に使用される要素は間引かれたものとなって、フィルタ処理における演算数を低減して、演算を高速化することができるという効果がある。
【００７１】
元画像用マスクを縮小して縮小画像用マスクを生成すると、マスクを構成する要素数が減少するため、元画像用マスクの要素の間引きのパターンと同じパターンで縮小画像用マスクを形成することは困難となる。しかし、本プログラムにおいては、縮小画像用マスクの全要素数で区分された元画像用マスクの１区画において、フィルタ演算に実際に用いられる要素に格納されたフィルタ係数の総和で、当該１区画に対応する縮小画像用マスクの１の要素に格納されるフィルタ係数の重み付けを行う。このため、縮小画像用マスクのフィルタ係数に付与される重みは、元画像用マスクにおいて対応する区画において使用されるフィルタ係数の個数によっても、また、用いられる個々のフィルタ係数の値によっても変化することとなる。
【００７２】
よって、縮小画像用マスクのフィルタ係数には、元画像用マスクによるフィルタ演算においてどれほどの数の要素が関わったか（即ち間引きのパターン）を反映できる上、元画像用マスクで使用されるフィルタ係数そのものの値についても反映させることができるという効果がある。フィルタ演算においては、要素に格納されているフィルタ係数に画素値が演算されるので、フィルタ係数の値に応じて異なる平均画素値が導出される。故に、元画像用マスクにおいてフィルタ演算に実際に用いられる要素数を重みとしてフィルタ係数に付与するよりも、用いられる要素に格納されているフィルタ係数の総和で、フィルタ係数を重み付けすることにより、より一層高度に元画像用マスクの内容を反映した縮小画像用マスクを生成することができる。
【００７３】
その結果、かかるマスクを用いることで、縮小画像の平均画素値に基づいて求められる反射光成分値の頻度分布の態様を、元画像の反射光成分値の頻度分布に、より整合させることができ、縮小画像の反射光成分値の頻度分布に基づいて設定される正規化パラメータを、元画像に適合する適切なものとすることができるので、処理速度を向上させつつ、より一層、精度のよい画像補正を実行することができるという効果がある。
【００７４】
更に、区分ステップにて元画像用マスクを分割する場合の分割位置を、各分割位置に隣接する２の要素の内のより近いほうへずらして分割位置間に含まれる要素数を整数化することができる。このため、分割位置に応じて各分割位置間に含まれる要素数を変更しつつ元画像用マスクに区画を割り付けることができ、元画像用マスク側に余剰の要素や不足の要素を発生させることなく、各区画に元画像用マスクの全要素を配分することができる。よって、元画像用マスクの情報を欠落させることなく縮小画像用マスクに反映させることができるという効果がある。
【００７５】
また、元画像と縮小画像とのサイズ比に応じて元画像用マスクを縮小した場合、縮小画像用マスクの１の要素に対応させる元画像用マスクの要素数は、多くの場合、整数とはならずに、小数点以下の端数を有する数となる。この場合、分割位置は、１の要素を分断する位置となるが、本プログラムにおいては、分割位置をずらして間に含まれる要素数を整数化することができるので、縮小画像用マスクの要素に対応する区画を規定する際に、分断された面積比に応じて当該分断された要素を隣り合う区画のそれぞれに分配して区画を規定するなどといった煩雑な処理を不要とすることができるという効果がある。また、区画の範囲を整数で管理できるので、その管理を簡便にすることができるという効果がある。
【発明を実施するための最良の形態】
【００７６】
以下、本発明の好ましい実施形態について、添付図面を参照して説明する。図１は、本発明における実施形態の複合機１の外観構成を示す斜視図である。なお、以下の実施形態は本発明を具体化した一例にすぎず、本発明の要旨を変更しない範囲で、実施例を適宜変更できることは言うまでもない。
【００７７】
図１に示すように、本複合機１は、下部に設けられたプリンタ２と、上部に設けられたスキャナ３と、スキャナ３の正面側に設けられた操作パネル４とを一体的に備えたＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）であり、コピー機能、ファクシミリ機能、パーソナルコンピュータ（以下単に「ＰＣ」と称す）など外部のコンピュータ（図示せず）から受信したデータを記録用紙に記録（印刷）するプリンタ機能など複数の機能を実現するものである。
【００７８】
スキャナ３は、ＦＢＳ（Ｆｌａｔｂｅｄ  Ｓｃａｎｎｅｒ）として機能する原稿読取台６に対して、自動原稿搬送機構（ＡＤＦ：Ａｕｔｏ  Ｄｏｃｕｍｅｎｔ  Ｆｅｅｄｅｒ、以下「ＡＤＦ」という。）７を備えた原稿カバー８が、背面側の蝶番を介して開閉自在に取り付けられてなる。横長の直方体に形成された原稿読取台６の上面にはプラテンガラスが配設されており、原稿読取台６の内部には、図示しない画像読取ユニットが内蔵されている。
【００７９】
原稿読取台６の内部には、上記画像読取ユニットの移動スペースや、画像読取ユニット或いはそれを支持する部材および駆動させる機構などを配設するスペースが確保されているため、原稿読取台６の上面はプラテンガラスよりも大きく形成されているが、原稿読取台６は、プラテンガラスと平面視で概ね相似形（平面視で横方向に長い矩形状）に形成されている。
【００８０】
このように構成されたスキャナ３をＦＢＳとして使用する場合は、原稿カバー８を開いてプラテンガラス上に原稿を載置し、その後、原稿カバー８を閉じて当該原稿を固定する。そして、読取開始指令が入力されると、上記画像読取ユニットがプラテンガラスの裏面に沿って走査される。これにより、ＦＢＳによる原稿の画像読取りが行われる。
【００８１】
上記画像読取ユニットは、複合機１の奥行き方向を主走査方向とするラインイメージセンサを備えたものであり、光源を発光させて原稿に光を照射し、原稿からの反射光をレンズにより光電変換素子に導き、光電変換素子が反射光強度に応じた電気信号を出力することによって画像を読み取る。ラインイメージセンサとしては、密着型のＣＩＳ（Ｃｏｎｔａｃｔ  Ｉｍａｇｅ  Ｓｅｎｓｏｒ）、或いは、縮小光学系のＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）や、ＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ−Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ：相補型金属酸化膜半導体）などを適用することができる。なお、画像読取ユニットやスキャナ３の内部構成の構成は本発明に直接関係がないので、ここでは詳細な説明は省略する。
【００８２】
ＡＤＦ７は、原稿トレイ９から原稿排出トレイ１０へ原稿搬送路を通じて原稿を搬送するものである。ＡＤＦ７による原稿の搬送過程において、原稿が原稿読取台６上の読取面を通過され、該読取面の下方に待機する上記画像読取ユニットによって該原稿の画像が読み取られる。このようなＡＤＦ７による画像読取りは、原稿カバー８が原稿読取台６に対して閉じられた状態で行われる。なお、本発明においてＡＤＦ７は任意の構成であり、スキャナ３がＡＤＦ７を具備せず、ＦＢＳとしてのみ画像読取を行うものであってもよい。したがって、ＡＤＦ７の詳細な説明については省略する。
【００８３】
プリンタ２は、スキャナ３で読み取られた画像データ或いは外部から入力された画像データに基づいて、記録用紙上に画像を記録する画像記録装置である。このプリンタ２は、上述したように、スキャナ３の下方に配設されている。スキャナ３とプリンタ２は、それらの背面が同一面となるように位置決めされているため、複合機１の背面は凸凹のない平坦形状となっている。なお、プリンタ２は、画像記録方式にインクジェット方式を用いたインクジェットプリンタで構成されているが、電子写真方式や熱転写方式などの種々の画像記録方式を採用することができるのはもちろんである。
【００８４】
複合機１の正面側、換言すれば、プリンタ２の正面側には開口５が形成されている。この開口５内に給紙トレイ１４及び排紙トレイ１５が完全に内包されるように設けられている。給紙トレイ１４と排紙トレイ１５は上下二段となるように配設されており、上段に排紙トレイ１５が設けられ、その下方に給紙トレイ１４が設けられている。
【００８５】
プリンタ２の正面側の端面１７は、上述したように原稿読取台６が横長の直方体に形成されているため、スキャナ３の正面側の端面１８から所定幅だけ正面側に突出している。以下、このように正面側に突出したプリンタ２の正面側の端部を突出部１６と称する。なお、プリンタ２の横幅はスキャナ３の横幅に合わせて形成されている。従って、複合機１は平面視で略正方形をなしている。
【００８６】
プリンタ２には、給紙トレイ１４の奥側から上方へ延びた後に正面側へＵ字状に湾曲して排紙トレイ１５に連結される用紙搬送路が設けられている。給紙トレイ１４に収容された記録用紙は、その短辺を先頭にして用紙搬送路に送り出され、Ｕターン搬送されることによって用紙搬送路中に設けられた画像記録位置に案内される。そして、該画像記録位置で、画像が記録用紙に記録される。画像記録後の記録用紙は排紙トレイ１５に排出される。
【００８７】
プリンタ２の上記開口５の上側には、接続パネル７０が設けられている。この接続パネル７０には、その左端側にＵＳＢ端子７１が配設されている。ＵＳＢ端子７１は、外部機器とＵＳＢ接続することにより該外部機器と本複合機１とを通信可能に接続するコネクタ端子である。また、接続パネル７０の右端側にはスロット部７２が配設されている。スロット部７２はメモリカード（カード型メモリ）を装填可能な複数のカードスロットが設けられている。カードスロットにメモリカードが装填され、該装填されたメモリカードから画像データが後述の制御部２０（図２参照）により読み出される。
【００８８】
複合機１の正面側には、操作パネル４が設けられている。操作パネル４は、突出部１６の上方の空きスペースに適合するよう、横長形状に形成されている。換言すれば、操作パネル４は、その縦幅が、スキャナ３の縦幅からプリンタ２の縦幅を減じた長さ(空きスペースの縦幅)に収まる寸法に形成されている。操作パネル４は、プリンタ２やスキャナ３を操作するためのものであり、各種操作キー４０と液晶ディスプレイ（ＬＣＤ：Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）４１とを具備する。ユーザは、操作パネル４を用いて、所望の指令を入力することができる。複合機１に所定の指令が入力されると、その入力された情報に基づいて該複合機１の動作が制御部２０によって制御される。
【００８９】
特に、本実施形態の複合機１は、操作キー４０として、コピーモードキー、ＦＡＸモードキーなどの各種モードキーを備えている。これらのモードキーにより、ユーザはいずれかのモードを選択する。コピーモードが選択されている場合、スキャナ３により読み取った画像データは、プリンタ２により記録される。ＦＡＸモードキーが選択されている場合、スキャナ３により読み取った画像データは、通信回線を介して他のファクシミリ装置に送信される。
【００９０】
なお、複合機１は、操作パネル４から入力された指令のほか、ＰＣなどのコンピュータに接続されて該コンピュータからプリンタドライバやスキャナドライバ等を介して送信される指令に基づいて動作するようにシステム構成されている。
【００９１】
図１に示すように、ＬＣＤ４１は、操作パネル４に配置可能な最大の縦幅に大型化されている。一方、ＬＣＤ４１の横幅（横寸法）は、その縦幅の４／３倍よりも長いものである。換言すれば、ＬＣＤ４１の縦幅に対する横幅の寸法の比率が４／３より大きく設定されている。ＬＣＤ４１の縦幅に対する横幅の比率は８／３となっている。
【００９２】
図２は、上記のように構成された複合機１の電気的構成を示すブロック図である。この
複合機１は、ケーブルを介してＰＣと接続可能なインターフェイス（以下「Ｉ／Ｆ」と称する）であるパラレルＩ／Ｆ２９と、デジタルカメラと接続可能なＵＳＢ端子７１と、外部メディア（例えば、メモリカードなどフラッシュメモリにより構成される記録媒体）を着脱自在に装着可能なスロット部７２とを備えている。このため、ＰＣ、デジタルカメラ、外部メディアから画像データを入力することができるようになっている。そして、入力された画像データに対して、レティネックス処理による画像処理（画像補正）を行うことができるように構成されている。
【００９３】
制御部２０は、プリンタ２、スキャナ３及び操作パネル４を含む複合機１の動作を統括的に制御するものである。制御部２０は、図２に示すように、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２２、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２３、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）２４を主とするマイクロコンピュータとして構成されており、バス２５を介してＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）２６に接続されている。
【００９４】
ＣＰＵ２１は、この複合機１を総括的に制御する中央演算処理装置である。ＲＯＭ２２は、ＣＰＵ２１により実行される各種制御プログラムやそのプログラムを実行する際に用いられる固定値などを記憶するものであり、コピー動作、プリンタ動作、ファクシミリ動作などを行うための制御プログラム２２ａと、レティネックス処理などの画像処理を行う画像処理プログラムを２２ｂと、参照点数メモリ２２ｃとを備えている。
【００９５】
画像処理プログラム２２ｂは、パラレルＩ／Ｆ２９、ＵＳＢ端子７１、スロット部７２を介して、ＰＣ、デジタルカメラ、外部メディアから入力された画像データ（元画像データ）に対しレティネックス処理（Ｒｅｔｉｎｅｘ処理）を実行して、画像データの逆光画像部分などの低画質領域の補正を行った出力画像データを生成するように構成されている。図３から図６のフローチャートに示すプログラムは、画像処理プログラムの一部としてこのＲＯＭ２２に記憶されている。
【００９６】
参照点数メモリ２２ｃは、元画像の平均輝度値を生成するために元画像に対して実行されるフィルタ演算で使用されるガウスフィルタにおいて、フィルタ演算に実際に用いる要素数（参照点数）を記憶するメモリである。尚、本実施形態では元画像と縮小画像とのそれぞれに対してガウスフィルタによるフィルタ演算が行われるが、以降、元画像に対して用いられるガウスフィルタを入力マスク、縮小画像に対して用いられるガウスフィルタを縮小マスクと称す。
【００９７】
この参照点数メモリ２２ｃに記憶される数は、Ｍ×Ｎのマトリクスで形成される入力マスクの全要素数よりも少ない数とされており、全要素数の１／３０程度を下限値としている。
【００９８】
レティネックス処理においては、ガウスフィルタによるフィルタ演算が行われるが、本複合機１においてフィルタ演算に用いられるガウスフィルタ（入力マスク及び縮小マスク）は、後述するマスク生成処理（Ｓ１２）（図６参照）で生成される。マスク生成処理（Ｓ１２）において入力マスクが生成される際には、ＣＰＵ２１にて参照点数メモリ２２ｃが参照され、この参照点数メモリ２２ｃに記憶される数分の要素にだけフィルタ係数が格納される。つまり、要素が各所で間引かれた間引きパターンを有するマスクが形成されることとなる。
【００９９】
ＲＡＭ２３は、ＣＰＵ２１が上記プログラムを実行する際に用いる各種データを一時的に記録する記憶領域又は作業領域として使用される書き換え可能なメモリである。ＲＡＭ２３には、複合機１の起動に伴って読み込みが指示されているプログラムやメイン処理のプログラムのためのロードエリア、及びメイン処理に必須の固定値などを記憶するためのエリア等として固定的に確保される領域以外に、実行されるプログラムに対して動的に割り当てられる可変領域が設けられている。各プログラムの実行時には、この可変領域の空き領域（使用されていない領域）において、そのプログラム動作に必要なメモリ領域（記憶領域や作業領域）が確保される。
【０１００】
一般にプログラムは、実行に際し、そのプログラム動作のために必要なメモリ領域を、必要最小量から最大量までの範囲でＣＰＵ２１に要求する。そして、十分な空き領域があれば、プログラムを実行するために必要なメモリ領域が、要求された範囲内で、割り当てられる。複数のプログラムが並行して実行される場合には、各プログラムに割り当てられるメモリ領域は、要求された必要最小量から最大量までの範囲内で、状況に応じて変更される。
【０１０１】
また、例えば、新たにプログラムが動作された場合には、現在動作中の他のプログラムに割り当てられているメモリ領域は圧縮され、作動中のプログラムが終了した場合には、現在動作中の他のプログラムに割り当てられているメモリ領域は拡張されるなど、メモリ領域は動的に割り当てられる。
【０１０２】
画像処理の実行時には、画像処理プログラム２３ｂを実行するために必要なメモリ領域が、画像処理用バッファ２３ａとしてＲＡＭ２３に確保される。尚、当然のことながら、プログラムの実行に必要なメモリ領域よりも空き領域が少なければ、プログラムを実行するのに必要なメモリ領域を確保できないので、プログラムは実行不能となる。
【０１０３】
この画像処理用バッファ２３ａは、元画像メモリ２３ａ１と、縮小率メモリ２３ａ２と、輝度値メモリ２３ａ３と、縮小レティネックス画像メモリ２３ａ４と、ヒストグラムメモリ２３ａ５と、最大値メモリ２３ａ６と、最小値メモリ２３ａ７と、クリップ値メモリ２３ａ８と、入力マスクメモリ２３ａ９と、縮小マスクメモリ２３ａ１０と、分割要素数メモリ２３ａ１１と、対数値メモリ２３ａ１２と、ｒｅｆｌｅ値メモリ２３ａ１３と、出力画像メモリ２３ａ１４とを備えている。なお、「ｓ」は、縮小画像についての接尾辞であり、元画像については、接尾辞を付さないものとする。
【０１０４】
元画像メモリ２３ａ１は、画像処理を行う前の元画像データを記憶するメモリであり、ＰＣ、デジタルカメラ、外部メディアから、それぞれ、パラレルＩ／Ｆ２９、ＵＳＢ端子７１、及びスロット部７２を介してプリンタ２へ入力された画像データ（元画像データ）を記憶するものである。この元画像メモリ２３ａ１に記憶される元画像データは、新たに複合機１に画像データが入力されると、入力された画像データで更新される。尚、元画像データには、そのサイズを示すサイズデータが付加されており、元画像メモリ２３ａ１には、この元画像のサイズデータについても記憶されている。
【０１０５】
ここで、元画像データは、ラスタデータであって元画像を形成する各画素の画素値（信号強度値、ＲＧＢ値）で構成されている。なお、本実施形態では、元画像データ及び出力画像データはいずれも、ＲＧＢ値から構成され、これらの各ＲＧＢ値は、「０」〜「２５５」の範囲の値である。
【０１０６】
ＲＧＢ値は、光の３原色である赤を表すＲ値と、緑を表すＧ値と、青を示すＢ値とを構成成分とする値である。光の３原色の混色により各種の色は生成されるので、元画像の各画素の色は、Ｒ値とＧ値とＢ値との組合せ（ＲＧＢ値）により１の色（色相や階調など）が示される。このＲＧＢ値の値が大きいほど、輝度（明度）は高くなる。
【０１０７】
本実施形態においては、かかる元画像データ（ＲＧＢ値）に対して直接的にレティネックス処理を行うのではなく、元画像データのＲＧＢ値を輝度信号Ｙに変換してからレティネックス処理を実行するように構成されている。従って、ＲＧＢ値のそれぞれに対してレティネックス処理を行う場合に比べて、レティネックス処理後の出力画像において元画像のカラーバランスを維持することができる。
【０１０８】
縮小率メモリ２３ａ２は、元画像から縮小画像を作成する際の縮小率を記憶するメモリである。本複合機１では、元画像データに対してレティネックス処理を行うが、元画像から求められる反射率（対数値Ｒ）を正規化するパラメータは、縮小画像の反射率（対数値Ｒｓ）から求められる。故に、縮小画像を形成する必要がある。用いられる縮小画像はサイズが小さい程、対数値Ｒｓを求めるために必要なメモリ量や、算出された各対数値を記憶するためのメモリ量を低減できる。しかし、縮小画像が小さくなるほど画像精度が低下するので、求められるパラメータも不正確なものとなる。つまり、正確なパラメータを算出できる縮小画像サイズには、下限値がある。従って、正確なパラメータを算出し得る最も小さなサイズが縮小画像の最適サイズとなり、本複合機１は、かかる最適サイズで縮小画像を形成するように、縮小画像の画像サイズは予め定めた固定サイズとされている。
【０１０９】
縮小画像のサイズが固定されている一方で、入力される元画像（元画像データ）はユーザ任意のサイズであるので、固定サイズの縮小画像を形成するために、元画像のサイズに応じて縮小率は変更されることとなる。このため、元画像データの入力毎（異なる元画像に対する画像処理の実行毎）に縮小率が算出され、この縮小率メモリ２３ａ２に記憶される。
【０１１０】
この縮小率は、元画像のサイズと縮小画像のサイズとの比、つまり、元画像データに付加されたサイズデータと、既知である縮小画像のサイズデータとの比で導出される。サイズデータは、画像のＸ軸方向の画素数と、画像のＹ軸方向の画素数とで形成されている。一般に画像においては、Ｘ軸方向とＹ軸方向とで画素数が異なることが多いので、本実施形態においては、縮小率は、元画像および縮小画像の長辺の画素数の比と、短辺の画素数の比との２種類で求められる。そして、求められた値が縮小率としてこの縮小率メモリ２３ａ２に記憶されている。縮小画像は、かかるＸ軸方向の縮小率とＹ軸方向の縮小率とのそれぞれに基づいて、元画像を縮小して形成される。
【０１１１】
輝度値メモリ２３ａ３は、ＲＧＢ値から（５）式に従って算出された輝度信号Ｙ（Ｙｓ）と色信号Ｃｂ，Ｃｒを記憶するメモリである。
【０１１２】
【数５】
2008252772.tif 000007
複合機１では、上記したように、入力された元画像の元画像データ（ＲＧＢ値）に直接レティネックス処理を行うのではなく、ＲＧＢ値を輝度信号Ｙに変換してからレティネックス処理を行うように構成されている。ＲＧＢ値から変換された輝度信号Ｙなどは、変換元のＲＧＢ値の座標（ｘ，ｙ）に対応してこの輝度値メモリ２３ａ３に記憶される。そして、この輝度値メモリ２３ａ３に記憶される輝度信号Ｙや輝度信号Ｙｓに基づいて、反射率や出力値Ｏｕｔｙが生成される。
【０１１３】
ここで、複合機１は、出力画像の出力値Ｏｕｔｙを生成するために、縮小画像と元画像との両者から、合計２回、反射率（対数値Ｒｓ及び対数値Ｒ）を算出する。反射率の算出に際しては、算出元の画像データ（縮小画像データ、元画像データ）のＲＧＢ値から輝度信号Ｙｓまたは輝度信号Ｙがそれぞれ生成され、この輝度値メモリ２３ａ３に書き込まれる。元画像の輝度信号Ｙの生成に先立って、縮小画像の輝度信号Ｙｓは生成され、輝度値メモリ２３ａ３に書き込まれる。輝度値メモリ２３ａ３に記憶された縮小画像の輝度信号Ｙｓ等は、その後、元画像の輝度信号Ｙが生成されるタイミングで、０クリアされ、新たに、元画像データのＲＧＢ値から生成された輝度信号Ｙなどが輝度値メモリ２３ａ３に記憶される。
【０１１４】
輝度信号Ｙおよび色信号Ｃｂ，Ｃｒは、ＲＧＢ値から（５）式に従って算出されるが、ＲＧＢ値は、予め定められた範囲「０」〜「２５５」であるので、輝度信号Ｙも予め定められた範囲の値となり、実際には「０」〜「２５５」となる。このため、本実施形態では上記（４）式における元画像の信号強度値Ｉ（ｘ，ｙ）は、輝度信号Ｙ（ｘ，ｙ）又は輝度信号Ｙｓ（ｘ，ｙ）とされて、レティネックス処理がなされた輝度信号Ｙ（輝度信号Ｙｓ）が、出力値Ｏｕｔｙとして生成されることとなる。
【０１１５】
尚、この輝度信号Ｙ及び輝度信号Ｙｓが請求項記載の画素値に該当する。また、本実施形態においては、輝度信号Ｙ（輝度信号Ｙｓ）に対しレティネックス処理を行う構成としたが、これに代えて、ＲＧＢ値をそのまま用いてレティネックス処理を行うようにしても良い。
【０１１６】
縮小レティネックス画像メモリ２３ａ４は、元画像を縮小した縮小画像において求められる反射率（反射光成分値、対数値Ｒｓ）を記憶するものであり、縮小画像の輝度信号Ｙｓから求められる反射率を記憶するメモリである。
【０１１７】
元画像を縮小する方法としては、縮小する画像の画素に対応する元画像の位置に最も近い画素の値をサンプリングし、そのサンプリングした画素の値をそのまま用いる最近傍（Nearest  Neighbor）法や、縮小する画像の画素に対応する元画像の位置の周囲の画素を用いて補間演算を行うバイキュービック法や、平均画素法などが知られている。画質より処理速度を優先する場合は、最近傍法が用いられ、処理速度より画質を優先する場合は、バイキュービック法や、平均画素法が用いられる。
【０１１８】
これらいずれかの方法により、縮小率メモリ２３ａ２に記憶される縮小率で、元画像が縮小され、その縮小画像の各画素（ピクセル）について対数値Ｒｓが上述の（２）式を用いて演算され、縮小画像の各画素の座標（ｘ，ｙ）に対応して縮小レティネックス画像メモリ２３ａ４に記憶される。この縮小レティネックス画像メモリ２３ａ４に記憶される値は、新たな補正処理の実行時に更新される。尚、対数値Ｒｓの演算は、上記（２）式における元画像の信号強度値Ｉ（ｘ，ｙ）に、輝度信号Ｙｓ（ｘ，ｙ）を代入して実行される。つまり、この対数値Ｒｓは、ガウスフィルタ（縮小マスクメモリ２３ａ１０に記憶される縮小マスク）を用い、各画素をそれぞれ注目画素としてｍ×ｎの領域にガウスフィルタＦ（ｘ，ｙ）による畳み込み演算を行って平均輝度値を算出し、その算出された平均輝度値で縮小画像の輝度値Ｙｓを除して得られた値を自然対数化することで得る。
【０１１９】
ヒストグラムメモリ２３ａ５は、縮小レティネックス画像メモリ２３ａ４に記憶される反射率（対数値Ｒｓ）についてのヒストグラム（頻度分布）が記憶されるものである。このヒストグラムメモリ２３ａ５には、対数値Ｒｓのレベルが同じものの数を集計した集計結果を記憶するために、各レベルのそれぞれに対応して各１のエリアが設けられている。言い換えれば、ヒストグラムメモリ２３ａ５は、対数値Ｒｓのヒストグラムを形成するためのメモリである。
【０１２０】
ヒストグラムメモリ２３ａ５の各エリア数及び各エリアにて管理する対数値Ｒｓのレベルは、新たに元画像が入力されることにより、ＣＰＵ２１によって設定される。具体的には、縮小画像を構成する全画素について対数値Ｒｓが求められると、求められた対数値Ｒｓの最小値と最大値とに基づいてヒストグラムの生成範囲が決定され、また、同じレベルとして集計するレベル範囲（管理するレベル）が選定される。これにより、ヒストグラムメモリ２３ａ５のエリア数と各エリアのレベルが設定される。
【０１２１】
そして、縮小レティネックス画像メモリ２３ａ４に記憶される各対数値Ｒｓが、いずれのレベルに属するかが判断されると、その判断された対数値Ｒｓのレベルに対応するエリアに記憶される値に１が加算される。これにより、各レベル毎に、その頻度が集計される。
【０１２２】
最大値メモリ２３ａ６及び最小値メモリ２３ａ７は、ヒストグラムの生成に際し、縮小レティネックス画像メモリ２３ａ４に記憶される対数値Ｒｓの内の、最大値のものと、最小値のものとをそれぞれ記憶するメモリである。かかる最大値メモリ２３ａ６及び最小値メモリ２３ａ７には、元画像のレティネックス処理（補正処理）の開始に際し、０が書き込まれる。対数値Ｒｓが算出されると、最大値メモリ２３ａ６に記憶される値は、その算出された（縮小レティネックス画像メモリ２３ａ４に記憶された）対数値Ｒｓと比較される。そして、その比較結果に基づいて、より大きな対数値Ｒｓにて、最大値メモリ２３ａ６に先に記憶される値が更新される。
【０１２３】
また、最大値メモリ２３ａ６に記憶される値よりも、比較した対数値Ｒｓの方が小さかった場合には、その対数値Ｒｓは、最小値メモリ２３ａ７に記憶される値と比較される。そして、その比較結果に基づいて、より小さな対数値Ｒｓにて最小値メモリ２３ａ７に記憶される先の値は更新される。
【０１２４】
これにより、最大値メモリ２３ａ６には、縮小レティネックス画像メモリ２３ａ４に記憶される対数値Ｒｓの内の最大値が保持され、最小値メモリ２３ａ７には、縮小レティネックス画像メモリ２３ａ４に記憶される対数値Ｒｓの内の最小値が保持される。
【０１２５】
この最大値メモリ２３ａ６及び最小値メモリ２３ａ７に記憶される最大値および最小値は、ヒストグラム生成のタイミングでＣＰＵ２１によって参照され、かかる最大値及び最小値に基づいて、ヒストグラム生成の範囲がＣＰＵ２１にて決定される。
【０１２６】
クリップ値メモリ２３ａ８は、ヒストグラムから求められるクリップ範囲を記憶するメモリであり、具体的には、ヒストグラムメモリ２３ａ５における集計結果に基づいて決定された下限値Ｄと上限値Ｕとが記憶されている。上限値Ｕは、ヒストグラムメモリ２３ａ５に記憶される集計結果（頻度分布）から検出されるメジアン値Ｍよりも大きい側において４５％の画素が含まれる点となる値であり、下限値Ｄは、メジアン値Ｍよりも小さい側において４５％の画素が含まれる点となる値である。そして、下限値Ｄ〜上限値Ｕの範囲がクリップ範囲となり、元画像データの対数値Ｒに対し、このクリップ範囲に属するものが、予め定めた下限値ｄ〜上限値ｕに正規化される（正規化反射率ｒｅｆｌｅの生成）。つまり、下限値Ｄおよび上限値Ｕのそれぞれは、元画像データの対数値Ｒを正規化するパラメータとなっている。
【０１２７】
このように、複合機１では、縮小画像から形成されたヒストグラムで元画像のクリップ範囲を決定することができるので、かかるクリップ範囲を決定するために、元画像の全画素についての反射率のヒストグラムを生成する必要が無く、処理時間を短縮することができる。
【０１２８】
入力マスクメモリ２３ａ９は、マスク生成処理（Ｓ１２）によって生成されたＭ×Ｎのマトリクスのガウスフィルタであって、元画像に対するフィルタ演算処理において用いられるガウスフィルタである入力マスクを記憶するメモリである。本実施形態の入力マスクは、奇数の要素数を有する予め規定された大きさを有し、例えば、２１×２１のマトリクスで形成された全要素数４４１のマスクとされている。入力マスクの各要素に対しては、その位置を特定するべく、左上端の要素を座標（０，０）とし、右下端の要素を最終座標（２１×２１のマトリクスでは（２０，２０））として、マスク内の位置を示すＸＹ座標（マスク座標）がそれぞれ付与されている。つまり、２次元配列されたマスクの各要素に付されたマスク座標は、Ｘ軸にそって右側の列へいくほどＸ座標が大きくなり、Ｙ軸に沿って下方の行へ行くほどＹ座標が大きくなる。また、各要素には、座標の小さいものから順に、即ち、Ｘ軸方向に沿って左端から右端へ向かいつつ、上側の行から下側の行へ進行する順で、次第に大きな数となるように、０〜４４０の識別番号が付与されている。
【０１２９】
本実施形態では、マスク生成処理（Ｓ１２）において、参照点数メモリ２２ｃに記憶されている数分の乱数が取得され、取得された乱数に対応する要素にだけフィルタ係数が格納される。上記したように、参照点数メモリ２２ｃに記憶されている数は、全要素数（例えば４４１）よりも少ない数であるので、この入力マスクメモリ２３ａ９に記憶される入力マスクは、間引きされたパターンを有するものとなっている。
【０１３０】
マスクの全要素と、画像の対応する各画素とを積和演算すると、処理時間が膨大になる。一方で、多くの自然画では、要素が各所で間引かれた態様のマスクを用い、点在する要素と処理対象の画像における対応する画素とを積和演算してフィルタ演算を行っても、全要素を有するマスクを用いてフィルタ演算をして得られる結果と大差が生じないことが知られている。
【０１３１】
そこで、本複合機１では、各所で要素が間引かれた態様のマスクを用いることで、フィルタ演算に要する時間の短縮と、フィルタ演算に際して必要となるメモリ量の抑制とを図っている。
【０１３２】
縮小マスクメモリ２３ａ１０は、マスク生成処理（Ｓ１２）によって生成されたｍ×ｎのマトリクスのガウスフィルタであって、縮小画像に対するフィルタ演算を行うためのガウスフィルタである縮小マスクを記憶するメモリである。この縮小マスクは、入力マスクメモリ２３ａ９に記憶される入力マスクに基づいて作成される。
【０１３３】
縮小マスクは、基本的には、元画像と縮小画像とのサイズ比に基づいて作成される。具体的には、縮小率メモリ２３ａ２に記憶される縮小率で入力マスクを縮小して作成される。本実施形態では、縮小画像と元画像とのそれぞれから対数値Ｒ，Ｒｓを求めるので、対数値Ｒ，Ｒｓを求めるために縮小画像と元画像とのそれぞれに対してフィルタ演算を行う必要がある。ところが、間引きパターンを有する入力マスクを単純に縮小して縮小マスクを作成することはできない。入力マスクの間引きパターンが縮小マスクに反映されず、両者は整合性の乏しいものとなってしまうからである。フィルタ演算に用いられる入力マスクと縮小マスクとの整合性が乏しいと、得られる演算結果は整合性のないものとなってしまい、縮小画像から設定したクリップ範囲を元画像のクリップ範囲に適用することができなくなってしまう。
【０１３４】
詳細は後述するが、本実施形態においては、入力マスクを縮小して縮小マスクを作成することを基本としつつ、入力マスクの間引きパターンを反映した縮小マスクが作成されるようになっており（図６のマスク生成処理（Ｓ１２）及び図７から図１０参照）、作成された縮小マスクがこの縮小マスクメモリ２３ａ１０には記憶されている。
【０１３５】
尚、この縮小マスクの各要素も、入力マスクと同様に付与されたマスク内での位置を特定するための座標（マスク座標）によって管理される。
【０１３６】
分割要素数メモリ２３ａ１１は、縮小マスクの１要素に対応する入力マスクの要素数（分割要素数）を記憶するメモリである。分割要素数は、入力マスクの全要素数を、生成する縮小マスクの全要素数で分割した場合に、分割された区画に属する要素数を示す数である。該分割要素数は、分割された入力マスクの区画に属する要素数そのものを直接示す値であってもよく、分割された入力マスクの区画のＸ軸方向とＹ軸方向とのそれぞれに配置される要素数の値であってもよい。
【０１３７】
縮小マスクは入力マスクを縮小して生成されるので、当然、縮小マスクの要素数は入力マスクよりも減少し、入力マスクの要素数の略縮小率倍となっている。尚、算出された縮小マスクの要素数は、小数点以下の端数が丸められるので、誤差が発生し、厳密に縮小率倍とならないことが多い。
【０１３８】
本実施形態では、かかる分割要素数は、入力マスクのＸ軸方向とＹ軸方向とのそれぞれの要素数を、縮小マスクの対応する軸方向の要素数で分割して求められた値とされており、各軸方向の分割要素数のそれぞれが、この分割要素数メモリ２３ａ１１に記憶される。
【０１３９】
画像の縮小率は、Ｘ軸方向とＹ軸方向とで異なることが多いため、本実施形態ではＸ軸方向とＹ軸方向との両者について縮小率が求められている。一方で、入力マスクの形状は正方形で形成されている。従って、縮小マスクを生成した場合に、縮小マスクの１要素に対応する入力マスクの区画は、縦横サイズの異なる長方形となることが多い。このため、本実施形態では、縮小マスクの全要素数で、単純に入力マスクの全要素数を除して分割要素数を求めるのでなく、マスクのＸ軸方向、Ｙ軸方向のそれぞれにおいて分割要素数を求めているのである。
【０１４０】
尚、ここでいう全要素数は、Ｍ×Ｎのマトリクスで形成される入力マスクおよびｍ×ｎのマトリクスで形成される縮小マスクが有する全要素の数であり、フィルタ係数が格納されたものであるか否かには無関係である。
【０１４１】
本複合機１は、この分割要素数メモリ２３ａ１１に記憶される分割要素数に基づいて入力マスクを区分し、形成された入力マスクの区画に属する要素の内容を、縮小マスクの１の要素に反映させることで、入力マスクとの整合性を維持した縮小マスクを生成するように構成されている（図６のマスク生成処理（Ｓ１２）、図９、図１０参照）。
【０１４２】
ここで、分割要素数は、小数点以下の端数を伴った値であることが多い。このため、分割要素数毎に入力マスクを区分して区画を形成すると、区画の境界を形成する分割位置において１の要素が分断されてしまう。そこで、本実施形態では、分割要素数毎に入力マスクを区画した場合に得られる座標（マスク座標）を四捨五入して、縮小マスクの１の要素に対応する入力マスクの要素数が整数となるように分割位置をずらしている。このため、入力マスクに形成される区画は、厳密には、本来の境界からずれるが、形成される区画に対し僅か１要素を組み入れるか否かの僅かな差異であるので、かかる方法で分割位置をずらしても、生成される縮小マスクの入力マスクに対する整合性を著しく低下させるような支障が生じることはない。
【０１４３】
これにより、縮小マスクの１の要素に、その１要素に対応する入力マスクの複数の要素の内容を反映させることができる上、その複数の要素は整数であるので、かかる複数の要素の内容を縮小マスクの１の要素に反映させる処理において端数の処理を不要とし、簡便に処理を行うことができる。
【０１４４】
対数値メモリ２３ａ１２は、元画像の反射率（反射光成分値、対数値Ｒ）を記憶するものである。具体的には、輝度値メモリ２３ａ３に記憶された元画像データの輝度信号Ｙを用いて、各画素に対応する対数値Ｒ（ｘ，ｙ）が、上述の（２）式に従って算出され、算出された対数値Ｒ（ｘ，ｙ）は、その座標に対応して対数値メモリ２３ａ１２に記憶される。この対数値メモリ２３ａ１２の値は、新たなレティネックス処理が実行された場合に新たに算出された対数値Ｒによって更新される。尚、対数値Ｒ（ｘ，ｙ）は、上記（２）式における元画像の信号強度値Ｉ（ｘ，ｙ）に、輝度信号Ｙ（ｘ，ｙ）を用いて演算される。つまり、この対数値Ｒは、入力マスクを用いたフィルタ演算を行って平均輝度値を算出し、その算出された平均輝度値で元画像の輝度値Ｙを除して得られた値を自然対数化することで得る。
【０１４５】
ｒｅｆｌｅ値メモリ２３ａ１３は、元画像の正規化反射率ｒｅｆｌｅを記憶するものであり、対数値メモリ２３ａ１２に記憶される対数値Ｒ（元画像の反射率）を正規化した正規化反射率ｒｅｆｌｅを記憶するメモリである。このｒｅｆｌｅ値メモリ２３ａ１３に記憶される正規化反射率ｒｅｆｌｅは、対数値メモリ２３ａ１２に記憶される各対数値Ｒ（ｘ，ｙ）を、（３）式に従い、クリップ値メモリ２３ａ８に記憶されるクリップ範囲について、下限値０．３〜上限値１．３の範囲に正規化したものである。対数値Ｒ（ｘ，ｙ）、即ち対数値Ｒの各々に対応して、各１ずつの正規化反射率ｒｅｆｌｅ（ｘ，ｙ）が生成され、その座標に対応してこのｒｅｆｌｅ値メモリ２３ａ１３に書き込まれる。このｒｅｆｌｅ値メモリ２３ａ１３に記憶される正規化反射率ｒｅｆｌｅは、出力値Ｏｕｔｙを生成するタイミングでｒｅｆｌｅ値メモリ２３ａ１３から読み出され、読み出された正規化反射率ｒｅｆｌｅを用いて出力値Ｏｕｔｙが算出される。
【０１４６】
印刷またはプレビュー画像表示に際し、出力値Ｏｕｔｙを生成するためには、対数値Ｒ（又は対数値Ｒｓ）を正規化する必要があるが、対数値Ｒの正規化は、次の２つの条件を満たすように行われている。１つ目の条件は、正規化して得られる正規化反射率ｒｅｆｌｅが、０を含まない値とすることである。これは、出力値Ｏｕｔｙが算出不能となることを回避するためである。
【０１４７】
２つ目の条件は、正規化された正規化反射率ｒｅｆｌｅの値の幅を１とすることである。正規化反射率ｒｅｆｌｅの有する幅が１であると、元画像のダイナミックレンジと出力画像のダイナミックレンジとをおおよそ同じにすることができる。元画像の画素値は「０」〜「２５５」の範囲の値であるので、正規化反射率ｒｅｆｌｅの有する幅を１とすることにより、本実施形態では、同じ範囲である「０」〜「２５５」で出力画像の画素値を得ることができる。その結果、出力画像全体の色調が入力画像に比べて変化してしまうことを回避できる。
【０１４８】
このため、対数値Ｒは、０を超える値の下限値ｄから、その下限値ｄに１加算した上限値ｕの範囲に、正規化される。尚、本実施形態においては、（３）式における下限値ｄは０．３とされ、上限値ｕは１．３とされており、対数値Ｒは０．３〜１．３の値に正規化されている。言い換えれば、元画像の各画素の正規化反射率ｒｅｆｌｅは、０．３〜１．３の値となる。また、対数値Ｒを０．３〜１．３の範囲に正規化すると、対数値Ｒ「０」の正規化反射率ｒｅｆｌｅは、０．８となる。従って、正規化反射率ｒｅｆｌｅが０．８を超える画素（注目画素）は、対数値Ｒが正である、即ち、注目画素が周辺画素よりも明るい事を示しており、正規化反射率ｒｅｆｌｅが０．８未満である画素（注目画素）は、対数値Ｒが負である、即ち、注目画素が周辺画素よりも暗い事を示すこととなる。
【０１４９】
レティネックス処理において出力値Ｏｕｔを算出する（４）式によれば、ガンマ係数は任意の定数であるので、変数（パラメータ）は、画素値（輝度信号Ｙまたは輝度信号Ｙｓ）と正規化反射率ｒｅｆｌｅとの２つである。このため、正規化反射率ｒｅｆｌｅが算出されれば、「０」〜「２５５」の各輝度信号Ｙ（Ｙｓ）に対応する各出力値Ｏｕｔｙを導出することができる。
【０１５０】
出力画像メモリ２３ａ１４は、プリンタ２に出力する出力画像データ、即ち、レティネックス処理による補正がなされた出力画像データを記憶するメモリである。この出力画像メモリ２３ａ１４に記憶される出力画像データは、補正処理によって元画像から生成された出力値Ｏｕｔであり、出力画像を形成する各画素のＲＧＢ値である。上記したように、本実施形態では、補正処理により、まず、元画像の輝度信号Ｙ（ｘ，ｙ）に応じた出力値Ｏｕｔｙが生成され、以下に示す（６）式に従って、ＲＧＢ値に変換されて出力値Ｏｕｔとされる。
【０１５１】
【数６】
2008252772.tif 000008
元画像の各輝度信号Ｙ（ｘ，ｙ）の各々に対応して、各１ずつの出力値Ｏｕｔｙ（ｘ，ｙ）が算出されており、出力値Ｏｕｔについても、各出力値Ｏｕｔｙ（ｘ，ｙ）のそれぞれに対応する出力値Ｏｕｔｙ（ｘ，ｙ）が生成される。そして、生成された出力値Ｏｕｔ（ｘ，ｙ）が、その座標に対応して、出力画像メモリ２３ａ１４に書き込まれる。記憶された出力値Ｏｕｔ（出力画像データ）は、印刷を実行するタイミングでこの出力画像メモリ２３ａ１４から読み出され、プリンタ２へ出力される。プリンタ２へ出力された出力値Ｏｕｔは、出力画像メモリ２３ａ１４から消去される。
【０１５２】
制御部２０とバス２５を介して接続されるＡＳＩＣ２６には、複合機１に所望の指令を入力する操作キー４０を制御するパネルゲートアレイ（パネルＧＡ）２７が接続されている。パネルゲートアレイ２７は、操作キー４０の押下（入力）を検出して、所定のコード信号を出力する。このキーコードは、複数の操作キー４０に対応して割り当てられている。ＣＰＵ２１は、パネルゲートアレイ２７から所定のキーコードを受信すると、所定のキー処理テーブルに従って、実行すべき制御処理を行う。キー処理テーブルは、キーコードと制御処理とを対応させてテーブル化したものであり、例えば、ＲＯＭ２２に記憶されている。
【０１５３】
ＡＳＩＣ２６には、ＬＣＤ４１の画面表示を制御するＬＣＤコントローラ２８が接続されている。ＬＣＤコントローラ２８は、ＣＰＵ２１の指令に基づいて、ＬＣＤ４１にプリンタ２又はスキャナ３の動作に関する情報を画面に表示させる。また、スキャナ３により読み取られたデータに対応する画像を画面に表示させ、または、接続された外部装置やスロット部７２に挿入されたメモリカードから受け取ったデータに対応する画像を画面に表示させる。
【０１５４】
さらに、ＡＳＩＣ２６には、一般公衆回線３３に接続されファクシミリ機能を実現するためのＮＣＵ（Ｎｅｔｗｏｒｋ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）３１や、ＮＣＵを介してモデム３２が接続されている。また、ネットワーク上に存在するコンピュータとデータの送受信を行うための、図示しないネットワークインターフェースを備えていてもよい。更には、ＮＣＵ３１に送受話器を接続し、複合機１を通話（電話）機能を備えた構成としてもよい。
【０１５５】
また、ＡＳＩＣ２６には、アンプ７３が接続されている。アンプ７３は、そのアンプ７３に接続されたスピーカ７４を鳴動して、呼出音や拒否音、メッセージなどを出力するためのものである。
【０１５６】
ＡＳＩＣ２６に接続されたプリンタ２は、インクジェットプリンタで構成されており、記録ヘッド２０１と、ＣＲモータ２０３と、ＬＦモータ２０５と、駆動回路２０２，２０４，２０６とを備えている。
【０１５７】
記録ヘッド２０１は、ノズル面に形成された複数のノズル口からインクを吐出して、記録用紙に印字を形成するものである。この記録ヘッド２０１は、非図示のキャリッジに搭載されており、記録用紙の搬送方向に対して直交する方向へ往復移動可能に構成されている。駆動回路２０２は、非図示のゲートアレイから出力される信号に応じて、その信号に合った波形の駆動パルスを、記録ヘッド２０１の各ノズルに対応した駆動素子に印加する駆動回路である。記録ヘッド２０１は、駆動回路から出力される駆動パルス信号によって動作され、インクを吐出する。
【０１５８】
ＣＲモータ２０３は、上記したキャリッジを往復移動させるためのモータである。駆動回路２０４は、ＣＲモータ２０３に電圧を印加する回路である。駆動回路２０４から出力される電圧によってＣＲモータ２０３が駆動されると、ＣＲモータ２０３に接続された例えばプーリなどの各部が動作され、キャリッジ、即ち、記録ヘッド２０１を記録用紙の搬送方向に対して直交する方向に往復移動させることができる。
【０１５９】
ＬＦモータ２０５は、記録用紙を搬送するためのモータである。駆動回路２０６は、ＬＦモータ２０５に電圧を印加する回路である。駆動回路２０６から出力される電圧によってＬＦモータ２０５が駆動されると、ＬＦモータ２０５に連結された給紙ローラや搬送ローラなどが駆動され、記録用紙が、給紙トレイ１４の奥側から上方へ延びた後に正面側へＵ字状に湾曲して排紙トレイ１５に連結される用紙搬送路を搬送される。
【０１６０】
尚、本複合機１のプリンタ２が電子写真方式のもので構成される場合には、記録ヘッド２０１に代えて感光体ユニットが設けられ、ＣＲモータ２０３に代えて感光体ユニットを回動させるモータが設けられる。
【０１６１】
次に、上記のように構成された複合機１において実行される画像処理（レティネックス処理）を、図３から図６のフローチャートを参照して説明する。また、レティネックス処理の中で実行されるマスク生成処理（Ｓ１２）については、入力マスク及び縮小マスクの基本構成を示す図７、縮小マスクの各要素に格納するフィルタ係数の内容を示す図８、入力マスクの分割方法を示す図９、入力マスクの間引きパターンを反映した縮小マスクの生成原理を示す図１０を、フローチャートと共に適宜用いて説明する。
【０１６２】
図３は、本複合機１で実行されるレティネックス処理（Ｒｅｔｉｎｅｘ処理）のフローチャートである。複合機１にて実行されるＲｅｔｉｎｅｘ処理では、まず、元画像を縮小し、その縮小した画像に基づいて元画像の反射率Ｒの正規化を行うためのクリップ範囲の設定とプレビュー画像の表示を行うＲｅｔｉｎｅｘ前処理を実行した後（Ｓ１）、元画像のレティネックス処理を行うＲｅｔｉｎｅｘ後処理を実行して（Ｓ２）、このレティネックス処理を終了する。Ｒｅｔｉｎｅｘ後処理（Ｓ２）にて補正処理された元画像データはプリンタ２によって印刷される。
【０１６３】
このように、本複合機１において実行されるレティネックス処理は、縮小画像に対してレティネックス処理を行う前処理と、元画像に対してレティネックス処理行う後処理の大別して２の処理から成り立っている。
【０１６４】
図４は、図３に示したＲｅｔｉｎｅｘ処理の中で実行されるＲｅｔｉｎｅｘ前処理（Ｓ１）のフローチャートである。このＲｅｔｉｎｅｘ前処理（Ｓ１）は、元画像のクリップ範囲を設定するために縮小画像に対するレティネックス処理（前処理）を行うものであり、まず、縮小画像のサイズデータ（縮小画像の長辺の画素数と短辺の画素数）と元画像メモリ２３ａ１に記憶されている元画像のサイズデータ（元画像の長辺の画素数と短辺の画素数）との比により、Ｘ軸方向とＹ軸方向との両者について縮小率を算出し、算出した縮小率を縮小率メモリ２３ａ２に記憶する（Ｓ１１）。なお、長辺側をＸ軸、短辺側をＹ軸とする。故に、元画像および縮小画像の長辺同士の比がＸ軸方向の縮小率、短辺同士の比がＹ軸方向の縮小率となる。
【０１６５】
次いで、縮小画像及び元画像に対して行われるフィルタ演算（畳み込み演算）に用いるガウスフィルタ（マスク）を生成するマスク生成処理を行う（Ｓ１２）。その後、元画像メモリ２３ａ１から元画像データを読み出し（Ｓ１３）、縮小率メモリ２３ａ２に記憶される縮小率で元画像データを縮小して縮小画像データを生成する（Ｓ１４）。尚、外部から入力された元画像データは、その入力時或いはユーザの指示によって実行される所定の処理により、Ｒｅｔｉｎｅｘ前処理（Ｓ１）に先立って、元画像メモリ２３ａ１に記憶されている。
【０１６６】
その後、生成された縮小画像データの各ＲＧＢ値を輝度信号Ｙｓと色信号Ｃｂ，Ｃｒとに変換し、縮小画像の各ＲＧＢ値の座標（ｘ，ｙ）にそれぞれ対応させて輝度値メモリ２３ａ３に書き込む（Ｓ１５）。これにより、縮小画像の全画素に対応する輝度信号Ｙｓが輝度値メモリ２３ａ３に記憶される。
【０１６７】
そして、輝度値メモリ２３ａ３に記憶した縮小画像の輝度信号Ｙｓについて反射率（対数値Ｒｓ）を算出する。各画素の対数値Ｒｓ（ｘ，ｙ）は、（２）式の画素値Ｉ（ｘ，ｙ）に輝度信号Ｙｓ（ｘ，ｙ）を用いて算出する（Ｓ１６）。つまり、座標（ｘ，ｙ）の注目画素を含むｍ×ｎの領域にガウスフィルタＦ（ｘ，ｙ）による畳み込み演算を行って（縮小マスクを用いたフィルタ演算の実行）、注目画素からの距離に応じた重みを加味しつつ平均された周辺画素の平均輝度値を求め、その平均輝度値にて注目画素の輝度信号Ｙｓ（ｘ，ｙ）を除したものの自然対数を求めることにより、注目画素の反射率である対数値Ｒｓ（ｘ，ｙ）を算出する。なお、Ｓ１６の処理において使用される縮小マスクは、Ｓ１２のマスク生成処理において生成される。
【０１６８】
その後、算出した対数値Ｒｓ（ｘ，ｙ）を縮小レティネックス画像メモリ２３ａ４に記憶し（Ｓ１７）、記憶した対数値Ｒｓ（ｘ，ｙ）が最大値メモリ２３ａ６に記憶される値よりも大きいかを判断する（Ｓ１８）。対数値Ｒｓ（ｘ，ｙ）が最大値メモリ２３ａ６に記憶される値よりも大きければ（Ｓ１８：Ｙｅｓ）、算出した対数値Ｒｓ（ｘ，ｙ）を最大値メモリ２３ａ６に記憶して、先に最大値メモリ２３ａ６に記憶される値を更新する（Ｓ１９）。また、Ｓ１８の処理で確認した結果、対数値Ｒｓ（ｘ，ｙ）が最大値メモリ２３ａ６に記憶される値よりも小さい場合には（Ｓ１８：Ｎｏ）、その対数値Ｒｓを最小値メモリ２３ａ７に記憶される値よりも小さいかを判断する（Ｓ２０）。その結果、比較した対数値Ｒｓが最小値メモリ２３ａ７に記憶される値よりも小さければ（Ｓ２０：Ｙｅｓ）、その対数値Ｒｓを最小値メモリ２３ａ７に記憶し、最小値メモリ２３ａ７に先に記憶される値を更新する（Ｓ２１）。
【０１６９】
Ｓ１９またはＳ２１の処理の後は、縮小画像の全画素について処理が終了したかを確認する（Ｓ２２）。縮小画像についての対数値Ｒｓの生成と対数値Ｒｓの最大値と最小値とを判断するＳ１６〜Ｓ２２の処理は、１の注目画素毎（１の輝度信号Ｙｓ毎）に実行され、最終画素の輝度信号Ｙｓの処理が終了するまで、繰り返して実行される。従って、輝度値メモリ２３ａ３からは、Ｓ１６〜Ｓ２２の処理の実行毎に、座標に従った順番で（先頭座標から最終座標へ向かうラスタ走査の順で）、輝度信号Ｙｓが読み出される。そして、Ｓ２２の処理で確認した結果、全画素についての処理が終了していれば（Ｓ２２：Ｙｅｓ）、縮小レティネックス画像メモリ２３ａ４に記憶される対数値Ｒｓに対し、最大値メモリ２３ａ６に記憶される最大値から最小値メモリ２３ａ７に記憶される最小値までの範囲において、ヒストグラムを形成する（Ｓ２３）。
【０１７０】
その後、形成したヒストグラムからメジアン値Ｍを求め（Ｓ２４）、次いで、そのメジアン値Ｍとヒストグラムとから対数値Ｒｓのクリップ範囲（上限値Ｕと下限値Ｄ）を定め、下限値Ｄ及び上限値Ｕをクリップ値メモリ２３ａ８に記憶する（Ｓ２５）。具体的には、メジアン値Ｍを中心に、メジアン値Ｍの上側において４５％の画素が含まれる点となる対数値Ｒｓを上限値Ｕとし、メジアン値Ｍの下側において４５％の画素が含まれる点となる対数値Ｒｓを下限値Ｄとし、メジアン値Ｍの上下に各４５％ずつの画素が所属する下限値Ｄ〜上限値Ｕの範囲をクリップ範囲とする。これによりヒストグラムの端部がカットされる。尚、このＳ２５のステップで設定されたクリップ範囲は、Ｒｅｔｉｎｅｘ後処理（Ｓ２）において元画像のクリップ範囲として適用される。
【０１７１】
続いて、縮小レティネックス画像メモリ２３ａ４に記憶される対数値Ｒｓに対し、クリップ値メモリ２３ａ８に記憶されるクリップ範囲（下限値Ｄ〜上限値Ｕ）を０．３〜１．３とする正規化をおこなって、正規化反射率ｒｅｆｌｅ（ｘ，ｙ）を算出する（Ｓ２６）。尚、この正規化は、対数値Ｒｓ（ｘ，ｙ）≦Ｄである場合には、０．３とし、また、対数値Ｒ（ｘ，ｙ）≧Ｕである場合には、１．３とすると共に０．３＜対数値Ｒ（ｘ，ｙ）＜１．３である場合には、（３）式に従って、対数値Ｒを正規化するものである。尚、本実施形態においては、（３）式におけるｄ及びｕは、それぞれ０．３と１．３とされている。
【０１７２】
その後、Ｓ２６の処理で算出された縮小画像の正規化反射率ｒｅｆｌｅを用い、（４）式に従ってプレビュー画像の出力値Ｏｕｔｙを算出する（Ｓ２７）。尚、Ｓ２７の処理では、上記（４）式において元画像の信号強度値Ｉ（ｘ，ｙ）に輝度信号Ｙｓ（ｘ，ｙ）を用いて演算が実行される。
【０１７３】
レティネックス処理において出力値Ｏｕｔを算出する（４）式によれば、ガンマ係数は任意の定数であるので、変数（パラメータ）は、元画像の画素値（輝度信号Ｙ）と正規化反射率ｒｅｆｌｅとの２つである。このため、正規化反射率ｒｅｆｌｅを算出すれば、「０」〜「２５５」の各輝度信号Ｙに対応する各出力値Ｏｕｔｙを導出することができるのである。なお、算出された出力値Ｏｕｔｙが取り得る最高値は「２５５」とされているので、「２５５」を超えた出力値Ｏｕｔｙは、全て「２５５」で出力される。
【０１７４】
尚、この輝度信号Ｙが請求項記載の画素値に該当する。また、本実施形態においては、輝度信号Ｙに対しレティネックス処理を行う構成としたが、これに代えて、ＲＧＢ値をそのまま用いてレティネックス処理を行うようにしても良い。
【０１７５】
そして、求めた出力値Ｏｕｔｙを、（６）式に従ってＲＧＢ値に逆変換して出力値Ｏｕｔを生成し、生成元の輝度信号Ｙの座標（ｘ，ｙ）に対応させて出力画像メモリ２３ａ１４に書き込み（Ｓ２８）、縮小画像の全画素について出力値Ｏｕｔを生成したかを確認する（Ｓ２９）。
【０１７６】
Ｓ２６〜Ｓ２９の処理は、１の注目画素毎（１の対数値Ｒｓ毎）に実行され、最終画素の対数値Ｒｓの処理が終了するまで、繰り返して実行される。従って、縮小レティネックス画像メモリ２３ａ４からは、Ｓ２６〜Ｓ２９の処理の実行毎に、座標に従った順番で（先頭座標から最終座標へ向かうラスタ走査の順で）、対数値Ｒｓが読み出される。そして、Ｓ２９の処理で確認した結果、全画素についての処理が終了していれば（Ｓ２９：Ｙｅｓ）、このＲｅｔｉｎｅｘ前処理（Ｓ１）を終了する。
【０１７７】
一方、Ｓ２９の処理で確認した結果、未だ縮小画像の全画素について出力値Ｏｕｔが生成されていなければ（Ｓ２９：Ｎｏ）、その処理をＳ２６の処理に移行して、縮小画像の全画素について出力値Ｏｕｔが生成されるまで、Ｓ２６〜Ｓ２９の処理を繰り返す。
【０１７８】
このＲｅｔｉｎｅｘ前処理（Ｓ１）により、元画像に対するクリップ範囲（正規化パラメータ）が縮小画像を用いて求められる。また、縮小画像をレティネックス処理した画像、即ち、出力画像メモリ２３ａ１４に記憶される出力値Ｏｕｔは、このＲｅｔｉｎｅｘ前処理（Ｓ１）終了後に、所定のタイミングでプレビュー画像としてＬＣＤ４１に出力される。
【０１７９】
図５は、図３のＲｅｔｉｎｅｘ処理の中で実行されるＲｅｔｉｎｅｘ後処理（Ｓ２）を示すフローチャートである。このＲｅｔｉｎｅｘ後処理（Ｓ２）は、元画像に対してレティネックス処理を行うものであり、まず、元画像メモリ２３ａ１に記憶される元画像データの各ＲＧＢ値を輝度信号Ｙｓと色信号Ｃｂ，Ｃｒとに変換し、縮小画像の各ＲＧＢ値の座標（ｘ，ｙ）にそれぞれ対応させて輝度値メモリ２３ａ３に書き込む（Ｓ３１）。これにより、元画像の全画素に対応する輝度信号Ｙが輝度値メモリ２３ａ３に記憶される。尚、輝度値メモリ２３ａ３は、Ｒｅｔｉｎｅｘ前処理（Ｓ１）終了後、Ｒｅｔｉｎｅｘ後処理（Ｓ２）開始前に、非図示のステップにより０クリアされている。
【０１８０】
そして、輝度値メモリ２３ａ３に記憶した元画像の輝度信号Ｙについて対数値Ｒを算出する。各画素の対数値Ｒ（ｘ，ｙ）は、（２）式の画素値Ｉ（ｘ，ｙ）に輝度信号Ｙ（ｘ，ｙ）を用いて算出する（Ｓ３２）。
【０１８１】
つまり、座標（ｘ，ｙ）の注目画素を含むＭ×Ｎの領域にガウスフィルタＦ（ｘ，ｙ）による畳み込み演算を行って（入力マスクを用いたフィルタ演算の実行）、注目画素からの距離に応じた重みを加味しつつ平均された周辺画素の平均輝度値を求め、その平均輝度値にて注目画素の輝度信号Ｙ（ｘ，ｙ）を除したものの自然対数を求めることにより、注目画素の反射率である対数値Ｒ（ｘ，ｙ）を算出する。なお、Ｓ３２の処理において使用される入力マスクは、マスク生成処理（Ｓ１２）において生成される。
【０１８２】
その後、算出した対数値Ｒ（ｘ，ｙ）を対数値メモリ２３ａ１２に記憶し（Ｓ３３）、続いて、対数値メモリ２３ａ１２に記憶される対数値Ｒに対し、クリップ値メモリ２３ａ８に記憶されるクリップ範囲（下限値Ｄ〜上限値Ｕ）を０．３〜１．３とする正規化をおこなって、正規化反射率ｒｅｆｌｅ（ｘ，ｙ）を算出する（Ｓ３４）。これにより、縮小画像から求めたクリップ範囲（正規化パラメータ）によって元画像の対数値Ｒを正規化することができる。
【０１８３】
尚、この正規化は、縮小画像の場合と同様に、対数値Ｒ（ｘ，ｙ）≦Ｄである場合には、０．３とし、また、対数値Ｒ（ｘ，ｙ）≧Ｕである場合には、１．３とすると共に０．３＜対数値Ｒ（ｘ，ｙ）＜１．３である場合には、（３）式に従って、対数値Ｒを正規化するものである。
【０１８４】
これによれば、元画像の対数値Ｒについてはヒストグラムの形成を不要とできるので、ＲＡＭ２３の使用量を削減することができる上、レティネックス処理全体の処理速度を向上することができる。
【０１８５】
そして、算出した元画像の正規化反射率ｒｅｆｌｅをｒｅｆｌｅ値メモリ２３ａ１３に記憶した後（Ｓ３５）、ｒｅｆｌｅ値メモリ２３ａ１３に記憶した正規化反射率ｒｅｆｌｅを用い、（４）式に従って出力値Ｏｕｔｙを算出する（Ｓ３６）。尚、Ｓ３６の処理では、上記（４）式において元画像の信号強度値Ｉ（ｘ，ｙ）に輝度信号Ｙ（ｘ，ｙ）を用いて演算が実行される。
【０１８６】
その後、求めた出力値Ｏｕｔｙを、（６）式に従ってＲＧＢ値に逆変換して出力値Ｏｕｔを生成し、生成元の輝度信号Ｙの座標（ｘ，ｙ）に対応させて出力画像メモリ２３ａ１４に書き込み（Ｓ３７）、元画像の全画素について出力値Ｏｕｔを生成したかを確認する（Ｓ３８）。
【０１８７】
Ｓ３２〜Ｓ３８の処理は、１の注目画素毎（１の輝度信号Ｙ毎）に実行され、最終画素の輝度信号Ｙの処理が終了するまで、繰り返して実行される。従って、輝度値メモリ２３ａ３からは、Ｓ３２〜Ｓ３８の処理の実行毎に、座標に従った順番で（先頭座標から最終座標へ向かうラスタ走査の順で）、輝度信号Ｙが読み出される。そして、Ｓ３８の処理で確認した結果、全画素についての処理が終了していれば（Ｓ３８：Ｙｅｓ）、このＲｅｔｉｎｅｘ後処理（Ｓ２）を終了する。
【０１８８】
尚、Ｓ３７の処理において出力画像メモリ２３ａ１４に記憶された出力値Ｏｕｔは、このＲｅｔｉｎｅｘ後処理（Ｓ２）終了後に、所定のタイミングでプリンタ２に出力される。また、Ｓ３８の処理で確認した結果、未だ元画像の全画素について出力値Ｏｕｔが生成されていなければ（Ｓ３８：Ｎｏ）、その処理をＳ３２の処理に移行して、元画像の全画素について出力値Ｏｕｔが生成されるまで、Ｓ３２〜Ｓ３８の処理を繰り返す。
【０１８９】
図６は、図４のＲｅｔｉｎｅｘ前処理（Ｓ１）において実行されるマスク生成処理（Ｓ１２）のフローチャートである。このマスク生成処理（Ｓ１２）は、入力マスクを生成し、その生成した入力マスクから当該入力マスクに整合性を有する縮小マスクを生成する処理である。上記したように、Ｒｅｔｉｎｅｘ前処理（Ｓ１）及びＲｅｔｉｎｅｘ後処理（Ｓ２）では、このマスク生成処理（Ｓ１２）で生成されたマスク（ガウスフィルタ）を用いて、Ｓ１６及びＳ３２のステップではフィルタ演算が実行される。
【０１９０】
マスク生成処理（Ｓ１２）では、まず、参照点数メモリ２２ｃに記憶される参照点数を読み出し（Ｓ６１）、変数ｉを０にセットする（Ｓ６２）。そして、所定のアルゴリズムに従って入力マスクの要素数に対応した有限の範囲で疑似乱数を発生させる乱数生成処理を実行する（Ｓ６３）。この乱数生成処理（Ｓ６３）により、その実行毎に１の乱数値が生成され、乱数の一様性（連続で取得した場合に同じ値を取ることがなく、しかも、すべての値が同じ確率で取り出せること）を有する乱数値を得ることができる。
【０１９１】
ここで、入力マスクの大きさは予め既知であり、例えば２１×２１のマトリクスで形成されるものであれば、入力マスクの全要素数４４１に対応する識別番号「０」〜「４４０」が、生成される乱数値の範囲となる。故に、生成された乱数値によっていずれかの識別番号を指定することができる。
【０１９２】
かかる識別番号のそれぞれは、各要素に付与されたマスク座標のそれぞれと対応つけられているので、生成された乱数に対応するマスク座標のフィルタ係数を正規分布関数に従って算出する（Ｓ６４）。
【０１９３】
図７（ｂ）においては、左方に入力マスクを、右方に縮小マスクを表示しており、各マスクの下方には、中心要素を含むマスク左右方向の各要素に格納されるフィルタ係数の変化をグラフにて図示している。図７（ｂ）の各グラフにおいては、横軸は各要素の位置に対応しており、縦軸はフィルタ係数を示している。
【０１９４】
この図７（ｂ）からもわかるように、マスクの各要素に格納するフィルタ係数の基本的な割り付けは、入力マスクであっても縮小マスクであっても同様に実行される。つまり、生成される入力マスクも縮小マスクもガウスフィルタであるので、中心要素に格納するフィルタ係数を１とすると共に、中心から四方へ向かって正規分布関数に従って次第にフィルタ係数が小さくなる（減衰する）ように割り付けられる。
【０１９５】
また、マスクの幅にわたって正規分布曲線が描かれるような正規分布関数に従って各要素に格納するフィルタ係数は設定される。従って、マスク内の要素の位置（マスク座標）がわかれば、その要素に格納するべきフィルタ係数を算出できる。
【０１９６】
Ｓ６４の処理の後は、算出されたフィルタ係数をマスク座標に対応つけて入力マスクメモリに記憶する（Ｓ６５）。
【０１９７】
そして、変数ｉに１加算してから（Ｓ６６）、変数ｉが参照点数メモリ２２ｃに記憶される参照点数以上であるかを確認し（Ｓ６７）、確認した変数ｉがその参照点数未満であると、フィルタ係数を格納するべき要素全てについてフィルタ係数は未だ算出されていないので（Ｓ６７：Ｎｏ）、その処理をＳ６３の処理に移行して、フィルタ係数を格納するべき要素についてそのフィルタ係数が全て算出されるまで、Ｓ６３〜Ｓ６７の処理を繰り返す。
【０１９８】
一方、Ｓ６７の処理で確認した変数ｉがその参照点数以上であると（Ｓ６７：Ｙｅｓ）、フィルタ係数を格納するべき要素分についてフィルタ係数全てが算出されているので、縮小率メモリ２３ａ２に記憶されている縮小率を読み出して、入力マスクのＸ軸方向長さ（Ｘ軸方向の要素数、行の数）Ｍおよび入力マスクのＹ軸方向長さ（Ｙ軸方向の要素数、列の数）Ｎのそれぞれに対応する縮小率を乗算し、縮小マスクサイズｍ，ｎを算出する（Ｓ６８）。算出されるｍは縮小マスクのＸ軸方向の要素数であり、ｎは縮小マスクのＹ軸方向の要素数である。
【０１９９】
ここで、本実施形態において用いられるマスク（ガウスフィルタ）の基本構成について図７を参照して説明する。図７（ａ）の左方には、元画像および入力マスクを模式的に示しており、右方には、縮小画像および縮小マスクを、模式的に示している。本実施形態の入力マスク及び縮小マスクは、図７（ａ）に示すように、そのサイズ比が、元画像と縮小画像とのサイズ比と同程度となることを基本的構成としており、元画像と縮小画像とのサイズ比（縮小率メモリ２３ａ２に記憶される縮小率）に基づいて、入力マスクから縮小マスクが作成される。
【０２００】
上記したように、縮小画像のサイズが固定されている一方で、入力される元画像はユーザ任意のサイズであるため、縮小率は、その入力される元画像のサイズに応じて変動する。ここで、入力マスクと縮小マスクとのサイズ比を、元画像と縮小画像とのサイズ比と等しくすることは、両マスクに整合性を持たせる要因の１つである。本実施形態では、入力マスクのサイズは固定サイズとしているので、元画像のサイズに応じて縮小率が変化すると、生成される縮小マスクのマスクサイズが変化することとなる。つまり、元画像のサイズに応じて大きさの異なる縮小マスクが生成される。
【０２０１】
そして、算出された縮小マスクのマスクサイズｍ，ｎを小数点以下を四捨五入して整数化（ｍ→ｉｎｔ（ｍ），ｎ→ｉｎｔ（ｎ））する（Ｓ６９）。入力マスクサイズに縮小率を乗算して縮小マスクサイズを算出すると、往々にして、そのマスクサイズは小数点以下の端数を伴った値で算出される。ここで、マスクの各要素は、画像の１の画素に対応するものであるので、マスクサイズは自然数で規定されなければならない。このため、Ｓ６９のステップにより、算出された縮小マスクのマスクサイズに対し四捨五入を行い、マスクサイズを整数化する。
【０２０２】
その後、ｍが奇数であるかを調べる（Ｓ７０）。そして、ｍが偶数であると（Ｓ７０：Ｎｏ）、その値に１加算して（Ｓ７１）、ｍを奇数に変換する。次いで、算出されたマスクサイズｎが奇数であるかを調べる（Ｓ７２）。そして、ｎが偶数であると（Ｓ７２：Ｎｏ）、その値に１加算して（Ｓ７３）、ｎを奇数に変換する。これにより、縮小マスクのマスクサイズが確定する。尚、Ｓ７０，Ｓ７２のステップにおいてａは自然数である。また、Ｓ７０，Ｓ７２のステップでは、ｍ，ｎが奇数であるかを調べることによって、ｍ，ｎが奇数であるか、言い換えれば、偶数であるかを判別したが、かかるステップにおいて、ｍ，ｎが偶数であるかを調べることによって、ｍ，ｎが奇数であるか、偶数であるかを判別する構成としても良い。
【０２０３】
画像の縮小率をもって縮小マスクを生成すると、マスクサイズｍ，ｎが偶数になることがある。フィルタ演算は、マスク（フィルタ）の中心要素を画像の注目画素に対応させて積和演算を行うことを基本とするものであるので、マスクサイズが偶数になってしまうと、その中心要素を注目画素に重ねることができなくなってしまう。そこで、本実施形態においては、マスクサイズが偶数となった場合には、算出されたマスクサイズに１加算してマスクサイズが奇数となるように調整しているのである。しかし、調整する要素数は僅か１であるので、入力マスクと縮小マスクとのサイズは、おおよそ元画像と縮小画像とのサイズ比に等しいものとなる。尚、本実施形態においては、偶数で算出されたマスクサイズに１加算することによって、マスクサイズが奇数となるように調整したが、マスクサイズを奇数にする調整方法は、これに限られるものではなく、例えば、偶数で算出されたマスクサイズから１減算しても良い。また、加減算される数を、１以上の奇数としても良い。
【０２０４】
その後、入力マスクサイズＭ，Ｎを縮小マスクサイズｍ，ｎで除してＸ軸方向、Ｙ軸方向それぞれの分割要素数を求め（Ｓ７４）、求めた分割要素数を分割要素数メモリ２３ａ１１に記憶する（Ｓ７５）。続いて、ｘ，ｙ，Ｘ，Ｙのそれぞれを０にセットする（Ｓ７６）。尚、ここで、ｘ，ｙは、縮小マスクのマスク座標を示す変数であり、Ｘ，Ｙは、入力マスクのマスク座標を示す変数である。
【０２０５】
次に、Ｘ軸方向のマスクサイズｍとＹ軸方向のマスクサイズｎとの内、大きい方のサイズを基準とする正規分布関数に従って、縮小マスクの座標（ｘ，ｙ）のフィルタ係数を算出する（Ｓ７７）。上記したように、Ｘ軸方向とＹ軸方向との縮小率が異なる場合には、多くの場合、縮小マスクは長方形で形成されるからである。
【０２０６】
例えば、図８には、生成される縮小マスクの例として、５×７のマトリクスのマスクを示している。また、マスクの右方と下方には、それぞれ、中心要素を含むマスク左右および上下方向の各要素に格納されるフィルタ係数の変化をグラフにて図示している。図８の各グラフにおいては、横軸（マスク下方のグラフにおいては紙面左右方向に伸びる軸であり、マスク右方のグラフにおいては紙面上下方向に伸びる軸）は各要素の位置に対応しており、縦軸（横軸に直交する軸）はフィルタ係数を示している。
【０２０７】
縮小マスクの各要素には、中心要素に格納するフィルタ係数を１とすると共に、中心から四方へ向かって正規分布関数に従って次第にフィルタ係数が小さくなる（減衰する）ようにフィルタ係数割り付けられる。
【０２０８】
ここで、実際に生成される縮小マスクは、破線で囲まれた５×７のマトリクスのマスクであるが、マスクサイズの大きい側に基づき、７×７のマトリクスの幅にわたって正規分布曲線が描かれるような正規分布関数に従って各要素に格納するフィルタ係数は設定される。
【０２０９】
一方で、縮小マスクのマスク座標は、破線で囲んだ実際の縮小マスクの５×７のマトリクスに付与され、破線で囲んだ５×７のマトリクス左上端の座標を（０，０）とし、５×７のマトリクスの右下端が最終座標（４，６）となる。算出された各フィルタ係数は、実際の縮小マスクのマスク座標に対応つけて管理される。
【０２１０】
この後、マスク座標（α，β）を算出する（Ｓ７８）。マスク座標（α，β）は、入力マスクにおける１の区画を規定するための座標であり、縮小マスクの１の要素に対応する入力マスクの１の区画においての最終座標（２次元配列で表された入力マスクの１の区画の右下端の座標）を示す。尚、座標（α）が１区画内の最終座標のＸ座標であり、座標（β）がＹ座標である。座標αは、以下の演算にて求められる。まず、分割要素数メモリ２２ａ１１に記憶されるＸ軸方向の分割要素数に、フィルタ係数を求める縮小マスクの要素のｘ座標に１加算した値（ｘ＋１）を乗算して得た値を、四捨五入によって整数化する。そして、整数化された値から１を減算することで要素の個数から座標系へと値を変換し、それを入力マスクの対応する区画の先頭座標であるＸに加算することでαが求められる。
【０２１１】
同様に、座標βは、分割要素数メモリ２２ａ１１に記憶されるＹ軸方向の分割要素数に、フィルタ係数を求める縮小マスクの要素のｙ座標に１加算した値（ｙ＋１）を乗算して得た値を、四捨五入によって整数化する。そして、整数化された値から１を減算することで要素の個数から座標系へと値を変換し、それを入力マスクの対応する区画の先頭座標であるＹに加算することでβが求められる。
【０２１２】
縮小マスクのｘ座標に１加算した値（ｘ＋１）を分割要素数に乗算して得られる値及び、縮小マスクのｙ座標に１加算した値（ｙ＋１）を分割要素数に乗算して得られる値、簡単に言えば、分割要素数をｎ倍（ｎは１以上の自然数）した値は、各区画における分割位置を示す座標値となっている。
【０２１３】
図９には、２１×２１のマトリクスの入力マスクから５×７のマトリクスの縮小マスクを作成する場合を例示している。尚、Ｙ軸方向についても同様の処理であるので、Ｘ軸方向についてのみ説明し、Ｙ軸方向の説明については省略する。
【０２１４】
図９の（ａ）は、入力マスクの分割方法を概念的に説明する図であり、図９の（ｂ）は、入力マスクを分割して区画を作成する際のパラメータとなる数値を表で示したものである。表においては左欄に項目を、右欄には各項目に対応する数値を示している。図９の例では、図９（ｂ）に示すように、入力マスクのＸ軸方向のサイズは２１であり、Ｘ軸方向の縮小率は１／５とされている。従って、縮小率を乗算して縮小マスクのｘ軸方向のサイズは、４．２と算出され、これを整数化した後、奇数となるように１を加算することで、マスクサイズが５に確定する。確定したマスクサイズ５で入力マスクのＸ軸方向の要素数を分割すると、Ｘ軸方向の分割要素数＝４．２が得られる。
【０２１５】
図９（ａ）の最下方には、縮小マスクの１の行に配列された各要素を図示している。これら要素の縮小マスクにおけるマスク座標は、（０，０）〜（４，０）である。図９（ａ）の最上方には、入力マスクの１の行に配列された各要素を図示している。これら要素の入力マスクにおけるマスク座標は、（０，０）〜（２０，０）である。分割要素数は４．２であるので、図示した入力マスクにおいて破線で示す位置がこの分割要素数に従った分割位置となる。座標で示すと、分割位置は（３．２，０），（７．４，０），（１１．６，０），（１５．８，０）となり、（０，０）〜（２０，０）をかかる分割位置で区分した区画には、４．２要素ずつが含まれる。
【０２１６】
図９（ａ）においては、この入力マスクの直下に、拡大した縮小マスクを示している。分割要素数に従えば、破線で示す位置まで、即ち、拡大した縮小マスクの１の要素と同じ大きさで表示される範囲までが、入力マスクにおける１区画となるが、本実施形態では、分割要素数から求めた分割位置を整数化しており、その整数化された分割位置から区画の座標を決定している。具体的には、例えば、入力マスクの先頭から４．２個の要素が含まれる範囲が、縮小マスクの座標（０，０）の要素に対応する本来の区画であるが、分割位置を整数化（四捨五入）して４個の要素を含む位置に、分割位置を変更している。その結果、縮小マスクのマスク座標（０，０）の要素に対応する入力マスクの区画は、入力マスクのＸ座標が（０）〜（３）である範囲となる。同様に、縮小マスクのマスク座標（１，０）の要素に対応する入力マスクの区画は、入力マスクのＸ座標が（４）〜（７）である範囲となり、縮小マスクのマスク座標（２，０）の要素に対応する入力マスクの区画は、入力マスクのＸ座標が（８）〜（１２）である範囲となり、縮小マスクのマスク座標（３，０）の要素に対応する入力マスクの区画は、入力マスクのＸ座標が（１３）〜（１６）である範囲となり、縮小マスクのマスク座標（４，０）の要素に対応する入力マスクの区画は、入力マスクのＸ座標が（１７）〜（２１）である範囲となる。
【０２１７】
このように、本実施形態では、各分割位置を四捨五入して整数化することで、要素が分断されることを回避して、区画内に含まれる要素数を整数化している。かかる方法によれば、区画内に含まれる要素数は変化するが、その数は、２以下の僅かな要素数であるので本来の区画に対して大きく変化することはない。これによれば、区画内において、フィルタ演算に使用される要素（フィルタ係数が格納されている要素）の数をカウントする処理を簡便に行うことができる。その上、入力マスクの全要素を縮小マスクに割り付けることができるので、両マスクの整合性を向上させることができる。
【０２１８】
Ｓ７８の処理の後は、入力マスクメモリ２３ａ９に記憶されている要素のマスク座標に基づき、入力マスクのマスク座標が（Ｘ，Ｙ）〜（α，β）の範囲で、フィルタ演算に用いられた要素（フィルタ係数が格納されている要素）の数を集計する（Ｓ７９）。これは、入力マスクメモリ２３ａ９において、マスク座標が（Ｘ，Ｙ）〜（α，β）の範囲で記憶されているフィルタ係数の数を確認することで実行される。入力マスクメモリ２３ａ９には、Ｓ６３〜Ｓ６７の処理によって、参照点数分の要素の座標とその対応するフィルタ係数のみが記憶されるように構成されているからである。
【０２１９】
次いで、集計した数を（その数が０でなければ）、Ｓ７７の処理で求めた縮小マスクのマスク座標（ｘ，ｙ）のフィルタ係数に乗算し、得られた値を縮小マスクのフィルタ係数として、縮小マスクメモリ２３ａ１０にマスク座標（ｘ，ｙ）に対応つけて記憶する（Ｓ８０）。
【０２２０】
尚、Ｓ７９の処理で集計数が０となる場合には、縮小画像に対するフィルタ演算においては使用されない要素としてＣＰＵ２１に認識される。縮小マスクメモリ２３ａ１０には、この０、或いは使用しない要素であることを示す何らかの情報をマスク座標に対応つけて記憶させることで、ＣＰＵ２１に、そのマスク座標の要素をフィルタ演算に用いない要素であると認識させても良く、Ｓ７９での集計結果が０であると、そのマスク座標を縮小マスクメモリ２３ａ１０に記憶させないことで、ＣＰＵ２１に、そのマスク座標の要素がフィルタ演算に用いない要素であると認識させても良い。本実施形態においては、Ｓ７９での集計結果が０である場合には、対応する要素のマスク座標を縮小マスクメモリ２３ａ１０には記憶されない。
【０２２１】
かかる縮小マスクの生成原理を図１０を参照して具体的に説明する。図１０において、紙面最左方には、１５×１５のマトリクスで形成された入力マスクを図示している。かかる入力マスクの各要素には、左上端の要素を（０，０）、右下端の要素を最終座標（１４，１４）として、マスク座標がそれぞれ付与されている。また、各要素には、上記した順に従って０から２２４までの識別番号が付与されており、入力マスクの上側には１行目に配列された要素について付与された識別番号「０，１，２，３，４，５，６，７，・・・，１４」を、および左側には１列目に配列された要素について付与された識別番号「（０），１５，３０，４５，６０，７５，・・・，２１０」を表示している。
【０２２２】
図示した入力マスクにおいて、斜線の面種で表示されている要素は、実際にフィルタ演算に使用される要素であることを、白塗りの面種で表示されている要素は、フィルタ演算に用いられない要素であることを示している。また、黒塗りで示した要素は、注目画素に重ねられる中心要素を示している。
【０２２３】
入力マスクの右方には、入力マスクから作成された５×５のマトリクスの縮小マスクを表示している。このため、入力マスクの３×３の要素が、縮小マスクの１の要素に対応する区画となっている。この縮小マスクにおいて、左上端と右下端とには、その位置の要素のマスク座標（０，０）および（４，４）が表示されている。
【０２２４】
図１０の中央に表示した縮小マスクは、実際のフィルタ演算には用いられない縮小マスクであるが、縮小マスクの生成原理を説明するために図示しており、左方の入力マスクの対応する区画においてフィルタ演算に使用される要素が含まれている場合を斜線の面種で示し、逆に、使用される要素が含まれていない場合を白塗りの面種で示している。中心要素は黒塗りの面種で示している。
【０２２５】
また、図１０の中央下方には、その上方の縮小マスクの拡大図を表示しており、かかる拡大図に示す各要素には、正規分布関数から算出された基本（重みを付加する前）のフィルタ係数を表示している。尚、白塗りの面種で示される要素は、対応する入力マスクの区画において、１つもフィルタ演算に使用される要素を含んでいないので、縮小マスクによるフィルタ演算においては使用されない要素となり、縮小マスクメモリ２３ａ１０には、その座標、フィルタ係数は記憶されていない。このため、そのフィルタ係数を括弧書きで示している。
【０２２６】
ここで、入力マスクと縮小マスクとを比較すると、マスクにおいて使用される要素のパターン（言い換えれば、要素の間引きパターン）が異なっていることが明確である。間引きパターンを有する入力マスクを縮小して縮小マスクを形成する場合、縮小マスクの各要素を使用する要素とするか否かを何らかの手法で定める必要がある。ここで、単純には、入力マスクを縮小して縮小マスクのサイズを規定した後、縮小マスクの要素に対応する入力マスクの区画において使用される要素がある場合、その要素を使用する要素とし、縮小マスクの要素に対応する入力マスクの区画において使用される要素がない場合、その要素を使用しない要素とすることで、縮小マスクを作成することができる。しかし、図８の入力マスクと縮小マスクの要素のパターンとは明らかに異なっていることから、かかる手法では、入力マスクのパターンを反映することはできず、両マスクの整合性が低下してしまうことは明白である。
【０２２７】
図１０の最右方には、本実施形態において縮小画像に対するフィルタ演算に用いる縮小マスクを示し、その直下には、この縮小マスクの拡大図を示している。各要素に付した面種は、左方に示した縮小マスクと同様に、斜線の面種は使用される要素を、白塗りの面種は使用されない要素を示している。また、この縮小マスクにおいても、左上端と右下端とには、その位置の要素のマスク座標（０，０）および（４，４）が表示されている。
【０２２８】
この縮小画像に対するフィルタ演算に用いる縮小マスクの拡大図に示すように、各要素には、入力マスクにおいてフィルタ演算で使用される要素（フィルタ係数が格納された要素）数で重み付けをしたフィルタ係数が格納されている。例えば、この縮小マスクの左上端のマスク座標（０，０）の要素においては、対応する入力マスクの区画は、入力マスクのマスク座標（０，０）〜（２，２）で囲まれる３×３要素の矩形の領域である。
【０２２９】
かかる区画にはフィルタ演算に使用される要素が２つある。一方で、縮小マスクのマスク座標（０，０）に対応して、正規分布関数から求められたフィルタ係数は０．３７である（図１０の真ん中に示す縮小マスク参照）。従って、０．３７を２倍した０．７４が本実施形態において用いられる縮小マスクのマスク座標（０，０）に格納されているフィルタ係数となる。
【０２３０】
また、縮小マスクのマスク座標（１，０）の要素においては、対応する入力マスクの区画は、入力マスクのマスク座標（３，０）〜（５，２）で囲まれる３×３要素の矩形の領域であるが、使用される要素が含まれていない。従って、縮小マスクのマスク座標（１，０）の要素は、フィルタ演算に使用されない要素となる。
【０２３１】
このように、本実施形態では、入力マスクの間引きパターンは、ガウスフィルタの本来のフィルタ係数に対する重みに変換されることとなる。故に、その重みを、本来のフィルタ係数に加味して、縮小マスクの各フィルタ係数を生成することにより、入力マスクの要素を間引いた状態（間引きパターン）を反映した縮小マスクを作成することができる。つまり、入力マスクと縮小マスクとでは、マスクのパターンは異なってはいるが、フィルタ係数を操作することで、擬似的に入力マスクのパターン（内容）を縮小マスクに反映させているのである。
【０２３２】
Ｓ８０の処理の後は、ｘがｍ−１未満であるか（ｘ＜ｍ−１）、即ち、１の行におけるＸ軸方向の最終座標に到達したかを調べ（Ｓ８１）、その結果、ｘがｍ−１以上であれば（Ｓ８１：Ｎｏ）、その行の最終座標に到達しているので、ｙがｎ−１未満であるか（ｘ＜ｎ−１）、即ち、最終行に到達したかを調べる（Ｓ８２）。ここで、ｙがｎ−１以上であれば（Ｓ８２：Ｎｏ）、最終行の最終座標（マスクの最終座標）に到達しているので、このマスク生成処理（Ｓ１２）を終了する。
【０２３３】
ここで、Ｓ７０の処理で確認した結果、縮小マスクのマスクサイズｍが奇数であれば（Ｓ７０：Ｙｅｓ）、Ｓ７１の処理をスキップして、その処理をＳ７２の処理に移行する。更に、Ｓ７２の処理で確認した結果、縮小マスクのマスクサイズｎが奇数であれば（Ｓ７２：Ｙｅｓ）、Ｓ７３の処理をスキップして、その処理をＳ７４の処理に移行する。また、Ｓ８１の処理で確認した結果、ｘがｍ−１未満であると（Ｓ８１：Ｙｅｓ）、縮小マスクの１の行において最終座標に到達していないので、フィルタ係数を算出する次の要素を指定するため縮小マスクの現在指定中のｘ座標に１加算してｘ座標を更新する。また、入力マスクについて現在指定中のＸ座標（１の区画の左上端要素のＸ座標）にαを加算して、対応する１の区画の最終座標（１の区画における右下端要素のＸ座標）を算出し、その算出された値に更に１を加えて入力マスクの次の区画の先頭座標のＸ座標を指定してから（Ｓ８３）、その処理をＳ７７の処理に移行する。これにより、入力マスクの１の行において、最後の区画に到達するまで、縮小マスクの対応する要素のフィルタ係数が繰り返して算出される。
【０２３４】
また、Ｓ８２の処理で確認した結果、ｙがｎ−１未満であると（Ｓ８２：Ｙｅｓ）、縮小マスクの１の行において最終座標に到達しているが、最終行には至っていないので、フィルタ係数を算出する次要素（次行の先頭要素）を指定するため縮小マスクの現在のｙ座標に１加算してｙ座標を更新すると共に、ｘ座標を０にセットする。また、入力マスクの現在指定中のＸ座標（１の区画の左上端要素のＸ座標）を０にセットし、且つ、入力マスクの現在指定されているＹ座標（１の区画の左上端要素のＹ座標）にβを加算して現在の区画の最終座標（１の区画の右下端のＹ座標）を算出する。そして、その算出された値に更に１を加えて入力マスクの次の区画の先頭座標のＹ座標を指定してから（Ｓ８４）、その処理をＳ７７の処理に移行する。これにより、入力マスクの最終行に到達するまで、繰り返して処理が実行される。
【０２３５】
このように、本複合機１では、予め定めたサイズの入力マスクを縮小画像の縮小率に基づいて縮小して、縮小マスクを作成するので、入力される元画像のサイズに応じて元画像用マスクの大きさが変動することがない。言い換えれば、入力マスクのマスクサイズの上限値が不明になることはない。入力マスクを記憶するための膨大なメモリ割当てを不要にでき、画像補正を実行するために必要なメモリ量を低減することができる。更に、縮小マスクに入力マスクの間引きパターンを反映することができるので、両者の整合性を向上させ、縮小画像から求められるクリップ範囲を、元画像に対して適切なものとすることができる上、フィルタ処理の演算速度を向上させることができる。
【０２３６】
次に、図１１と図１２とを参照して、本発明の第２実施形態について説明する。上記第１実施形態の複合機１は、縮小マスクの要素に格納するフィルタ係数を、その要素に対応する入力マスクの区画において使用される要素数で、正規分布関数にて算出されたフィルタ係数に重み付けをして生成するように構成された。これに代えて、第２実施形態では、縮小マスクの要素に格納するフィルタ係数を、その要素に対応する入力マスクの区画において使用される要素に格納されたフィルタ係数の総和で、正規分布関数にて算出されたフィルタ係数に重み付けをして生成するように構成されている。尚、上記第１実施形態と同じ部分には同じ符号を付し、その説明を省略する。
【０２３７】
第２実施形態の複合機１は、複合機１において入力マスクを生成するのではなく、予めフィルタ演算に用いられる要素の配置と、その要素に格納されるフィルタ係数と、マスクサイズとが設定された入力マスクがデフォルトで記憶されている。このため、第２実施形態では、入力マスクを記憶する入力マスクメモリは、ＲＡＭ２３に代えてＲＯＭ２２に設けられている。尚、入力マスクにおいてフィルタ演算に用いられる要素の配置は、各要素に付与された識別番号またはマスク座標を乱数値で選択して決定されている。また、この入力マスクをＲＯＭ２２に記憶させる工程が、第２実施形態においては、請求項記載の元画像用マスク記憶ステップに該当する。
【０２３８】
図１１は、第２実施形態のマスク生成処理（Ｓ１２）のフローチャートである。第２実施形態では、第１実施形態と同様にＲｅｔｉｎｅｘ処理が実行されるが、Ｒｅｔｉｎｅｘ前処理（Ｓ１）の中で実行されるマスク生成処理（Ｓ１２）が変更されている。
【０２３９】
第２実施形態のマスク生成処理（Ｓ１２）では、入力マスクの生成が不要であるので、第１実施形態のマスク生成処理（Ｓ１２）におけるＳ６１〜Ｓ６７のステップは省略されている。第２実施形態のマスク生成処理（Ｓ１２）では、まず、縮小率メモリ２３ａ２に記憶される縮小率を読み出し、その後は、第１実施形態と同様に、入力マスクサイズＭ，Ｎに乗算して縮小率を乗算して縮小マスクサイズｍ，ｎを算出し、その縮小マスクサイズｍ，ｎの整数化、奇数値への補正、分割要素数の算出、正規分布関数に従った縮小マスクのフィルタ係数生成とを行う（Ｓ６８〜Ｓ７７）。
【０２４０】
その後、マスク座標（α，β）を求めてから（Ｓ７８）、入力マスクメモリに記憶されているフィルタ係数について、マスク座標（Ｘ，Ｙ）〜（α，β）の範囲に属する要素のフィルタ係数の総和を算出する（Ｓ１０１）。続いて、算出した総和をＳ７７で求めた座標（ｘ，ｙ）の要素のフィルタ係数に乗算し、得られた値を縮小マスクのフィルタ係数として、縮小マスクのマスク座標（ｘ，ｙ）に対応つけて縮小マスクメモリ２３ａ１０に記憶する（Ｓ１０２）。そして、かかるフィルタ係数の算出を、縮小マスクの全要素に対して実行する（Ｓ８１〜Ｓ８４）。
【０２４１】
尚、第２実施形態において入力マスクメモリにディフォルトで記憶されている入力マスクは、フィルタ演算に使用される要素についてのみフィルタ係数が格納されたものである。このため、縮小マスクの要素に対応する入力マスクの区画にフィルタ演算に使用される要素がない場合が生じるが、かかる場合においては、Ｓ１０１の処理においてマスク座標（Ｘ，Ｙ）〜（α，β）の範囲に属する要素の座標およびフィルタ係数が入力マスクメモリには記憶されていない。従って、Ｓ１０１の処理では、フィルタ係数の総和は算出されず、Ｓ１０２の処理をスキップして、Ｓ８１の処理を実行する。
【０２４２】
図１２は、かかる第２実施形態の縮小マスクの生成原理を説明する図である。図１０と同様に、紙面最左方には、１５×１５のマトリクスで形成された入力マスクを、紙面中央と、紙面最右方には、入力マスクから生成された５×５のマトリクスの縮小マスクを示しており、各縮小マスクの表示の下方には、それぞれ縮小マスクの拡大図を示している。また、入力マスクの上側には１行目に配列された要素について付与された識別番号「０，１，２，３，４，５，６，７，・・・，１４」を、および左側には１列目に配列された要素について付与された識別番号「（０），１５，３０，４５，６０，７５，・・・，２１０」を、表示している。
【０２４３】
中央の縮小マスクは、実際のフィルタ演算には用いられない縮小マスクであるが、縮小マスクの生成原理を説明するために図示しており、その拡大図には、正規分布関数から算出された基本のフィルタ係数を表示している。最右方の縮小マスクは、第２実施形態において縮小画像に対するフィルタ演算に用いる縮小マスクであり、この縮小マスクの拡大図においては、入力マスクにおいてフィルタ演算で使用される要素に格納されたフィルタ係数の総和で重み付けをすることで求められた縮小マスクのフィルタ係数が各要素に対応して表示されている。
【０２４４】
図示した各マスクにおいて、左上端と右下端とには、その位置の要素のマスク座標を表示しており、また、斜線の面種で表示されている要素は、実際にフィルタ演算に使用される要素とし、白塗りの面種で表示されている要素は、フィルタ演算に用いられない要素であることを示している。また、黒塗りで示した要素は、注目画素に重ねられる中心要素を示している。
【０２４５】
例えば、この縮小マスクの左上端のマスク座標（０，０）の要素においては、対応する入力マスクの区画は、入力マスクのマスク座標（０，０）〜（２，２）で囲まれる３×３要素の矩形の領域である。
【０２４６】
かかる区画にはフィルタ演算に使用される要素が２つあり、そのフィルタ係数は、入力マスクの右上方に示す拡大図に表示したとおり、０と０．０２とである。尚、入力マスクの拡大図内の各要素には、正規分布関数によって求められる各要素のフィルタ係数を示しているが、用いられない（格納されていない）フィルタ係数は括弧書きで示している。
【０２４７】
一方で、縮小マスクのマスク座標（０，０）に対応して、正規分布関数から求められたフィルタ係数は０．３７である（図１２中央に示す縮小マスク参照）。従って、０．３７に、入力マスクの対応する区画において使用されるフィルタ係数の総和０．０２を乗算した０．００７４が、第２実施形態において用いられる縮小マスクのマスク座標（０，０）に格納されているフィルタ係数となる。
【０２４８】
同様の演算によって、縮小マスクの各要素に対応する入力マスクの区画内において、演算に用いられるフィルタ係数がある場合には、そのフィルタ係数の総和が算出されるとともに、その総和が重みとして、正規分布関数によって求められる基本のフィルタ係数に乗算され、縮小画像の各要素のフィルタ係数が導出される。図１２の最右方の縮小マスクには、かかる演算によって得られたフィルタ係数が各要素に対応して表示されている。尚、縮小マスクの各要素に対応する入力マスクの区画内において、演算に用いられるフィルタ係数がない場合には、上記したように、縮小マスクのその対応する要素はフィルタ演算には用いられない要素となり、フィルタ係数は格納されない。
【０２４９】
このように、第２実施形態の複合機１によれば、縮小マスクの各要素に対応する入力マスクの区画内において、演算に用いられるフィルタ係数がある場合には、そのフィルタ係数の総和が重みとして縮小マスクのフィルタ係数に加味される。このため、入力マスクの内容を縮小マスクに反映させることができ、両マスクの整合性を向上させ、結果として、縮小画像から求められるクリップ範囲を、元画像に対する適切なパラメータとすることができる。
【０２５０】
以上、実施形態に基づいて本発明を説明したが、本発明は上記各実施形態に何ら限定されるものでなく、本発明の趣旨を逸脱しない範囲内で種々の改良変形が可能であることは容易に推察できるものである。
【０２５１】
例えば、上記各実施形態では、入力マスクは乱数によってフィルタ係数を格納する要素（フィルタ演算に用いる要素）が選定された。これに代えて、ユーザや設計者が任意に要素を選択するようにしてもよい。更には、上記各実施形態においては、縮小マスクのフィルタ演算に用いる要素についてのみ、正規分布関数に従ったフィルタ係数が算出されるようにマスク生成処理（Ｓ１２）は構成されたが、これに代えて、全ての要素の正規分布関数を最初にまとめて算出して縮小マスクメモリ２３ａ１０に記憶すると共に、使用しない要素に対してはその旨を示す情報を付与することで、使用する要素と否である要素とを区別してＣＰＵ２１が認識できるようにしても良い。
【０２５２】
また、上記第１実施形態では、入力マスクを複合機１において生成し、上記第２実施形態では、入力マスクは予め複合機１内のＲＯＭ２２に記憶される構成としたが、これに代えて、第１実施形態の複合機１を入力マスクを予め記憶する構成としても良く、第２実施形態の複合機１を装置内で入力マスクを生成する構成としても良い。
【０２５３】
更には、上記各実施形態では、マスク生成処理（Ｓ１２）において、正規分布関数に従ったフィルタ係数（重みを付加する前のフィルタ係数）は、Ｓ７７の処理により縮小マスクの全要素について算出されるように構成された。これに代えて、Ｓ７８，Ｓ７９の処理の後にＳ７７の処理を行うようにすると共に、入力マスクの対応する区画において使用される要素がない場合には、Ｓ７７の処理をスキップして、正規分布関数に従ったフィルタ係数の算出を回避するようにマスク生成処理（Ｓ１２）を構成しても良い。
【０２５４】
また、上記各実施形態では、入力マスクの全要素を縮小マスクに割り付けるとように、入力マスクを区分したが、必ずしも、入力マスクの全要素を縮小マスクに割り付ける必要はなく、例えば、縮小マスクの要素数で入力マスクの全要素を分割した場合に生じる端数を切り捨て、入力マスクの全要素の内、縮小マスクの要素数の整数倍の範囲ついてを縮小マスクに割り付けるものとしても良い。
【０２５５】
更には、上記各実施形態のマスク生成処理（Ｓ１２）においては、１の区画に属する要素数を整数化するように調整したが、これに代えて、分割要素数から導出される分割位置毎に分割された区画を縮小マスクの１の要素に対応する区画として、処理を行っても良い。
【図面の簡単な説明】
【０２５６】
【図１】本発明の一実施形態の複合機の外観図である。
【図２】複合機の電気的構成を示すブロック図である。
【図３】複合機において画像処理プログラムにより行われるＲｅｔｉｎｅｘ処理（レティネックス処理）のフローチャートである。
【図４】図３のＲｅｔｉｎｅｘ処理の中で実行されるＲｅｔｉｎｅｘ前処理を示すフローチャートである。
【図５】図３のＲｅｔｉｎｅｘ処理の中で実行されるＲｅｔｉｎｅｘ後処理を示すフローチャートである。
【図６】図４のＲｅｔｉｎｅｘ前処理において実行されるマスク生成処理のフローチャートである。
【図７】入力マスク及び縮小マスクの基本構成を示す図である。
【図８】縮小マスクの各要素に格納するフィルタ係数の内容を示す図である。
【図９】入力マスクの分割方法を示す図である。
【図１０】入力マスクの間引きパターンを反映した縮小マスクの生成原理を示す図である。
【図１１】第２実施形態のマスク生成処理のフローチャートである。
【図１２】第２実施形態の入力マスクの間引きパターンを反映した縮小マスクの生成原理を示す図である。
【図１３】従来のレティネックス処理の概要を示した図である。
【符号の説明】
【０２５７】
１              複合機（画像処理装置）
２              プリンタ
２１            ＣＰＵ
２２            ＲＯＭ
２２ｂ          画像処理プログラム
２３ａ９        元画像用マスク記憶手段
Ｓ３２          元画像平均画素値生成手段、元画像平均画素値生成ステップ
Ｓ１２          縮小画像用マスク生成手段、縮小画像用マスク生成ステップ
Ｓ１４          縮小画像形成手段、縮小画像形成ステップ
Ｓ１６          縮小平均画素値生成手段、縮小平均画素値生成ステップ
Ｓ１６〜Ｓ２５  正規化パラメータ設定手段、正規化パラメータ設定ステップ
Ｓ３２〜Ｓ３４  元画像反射光成分値算出手段、元画像反射光成分値算出ステップ
Ｓ３６          変換手段、変換ステップ
Ｓ６５          元画像用マスク記憶ステップ、
Ｓ７０，Ｓ７２  偶数判断手段
Ｓ７１，Ｓ７３  要素数調整手段
Ｓ７４          対応要素数算出手段、対応要素数算出ステップ
Ｓ７４，Ｓ７８  区分手段、区分ステップ
Ｓ７９，Ｓ８０，Ｓ１０１，Ｓ１０２  重み付けフィルタ係数算出手段、重み付けフィルタ係数算出ステップ
Ｓ７８          分割位置算出手段、整数化手段、分割位置算出ステップ、整数化ステップ
【図１】
2008252772.tif 000009
【図２】
2008252772.tif 000010
【図３】
2008252772.tif 000011
【図４】
2008252772.tif 000012
【図５】
2008252772.tif 000013
【図６】
2008252772.tif 000014
【図７】
2008252772.tif 000015
【図８】
2008252772.tif 000016
【図９】
2008252772.tif 000017
【図１０】
2008252772.tif 000018
【図１１】
2008252772.tif 000019
【図１２】
2008252772.tif 000020
【図１３】
2008252772.tif 000021