(57)【要約】【課題】レティネックス処理を行う際に使用できる記憶容量に応じた最適な方式で処理することができる画像処理装置および画像処理プログラムを提供する。【解決手段】プリンタ１の使用状態に応じて、画像処理用メモリ１３ｃを確保し、確保できたメモリ量をテンポラリメモリ１３ａに記憶する（Ｓ２）。テンポラリメモリ１３ａに記憶した元画像サイズに基づいて、元画像の全画素を記憶して行う通常レティネックス処理に必要とするメモリ量を算出する（Ｓ３）。通常レティネックス処理を行うのに必要なメモリ量が、確保できたメモリ量より大きくない場合は（Ｓ４：Ｎｏ）、通常レティネックス処理を行い（Ｓ５）、通常レティネックス処理を行うのに必要なメモリ量が、確保できたメモリ量より大きい場合は（Ｓ４：Ｙｅｓ）、縮小レティネックス処理を行う（Ｓ６）。【選択図】図２
2008118216.tif 000002
【特許請求の範囲】
【請求項１】
元画像を入力する入力手段と、その入力手段により入力された元画像をレティネックス処理するレティネックス処理手段とを備えた画像処理装置において、
前記レティネックス処理手段は、複数の方式でレティネックス処理を実行するものであり、
書き換え可能な記憶手段と、
その記憶手段にレティネックス処理を行う際に画像を記憶することができる領域の大きさを検出する画像記憶領域検出手段と、
前記入力手段により入力された画像のサイズに応じて前記レティネックス処理手段において使用するメモリ量を取得するメモリ量取得手段と、
前記画像記憶領域検出手段により検出された画像を記憶する領域の大きさと前記メモリ量取得手段により取得されたメモリ量とを比較することにより、前記レティネックス処理手段により実行されるレティネックス処理の方式を複数の方式の中から設定する方式設定手段とを備えていることを特徴とする画像処理装置。
【請求項２】
前記レティネックス処理手段は、複数の方式の一つとして元画像を全て前記記憶手段に記憶してレティネックス処理を行う元画像記憶処理手段を備えていることを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記レティネックス処理手段は、レティネックス処理における元画像の全画素についての反射率を前記記憶手段に記憶処理を行う元画像反射率記憶手段を備えていることを特徴とする請求項１または２記載の画像処理装置。
【請求項４】
前記レティネックス処理手段は、複数の方式の一つとして元画像を縮小して前記記憶手段に記憶してレティネックス処理を行う縮小画像記憶処理手段を備え、その縮小画像記憶処理手段は、
元画像を縮小した縮小画像を形成する縮小画像形成手段と、その縮小画像形成手段により形成された縮小画像の各画素について、画素の値とその画素の周辺平均値とから反射率を求めることにより縮小レティネックス画像を形成する縮小レティネックス画像形成手段と、その縮小レティネックス画像形成手段により形成された縮小レティネックス画像の画素値が取る値の全範囲における各画素値の頻度を集計し、正規化を行う際のパラメータを設定する正規化パラメータ設定手段と、前記元画像の各画素について、画素の値とその画素の周辺平均値とから反射率を求め、その反射率を前記正規化パラメータ設定手段により設定されたパラメータに基づいて正規化した正規化レティネックス値を求め、その正規化レティネックス値と、元画像の画素値とに基づいて補正を行う補正手段とを備えていることを特徴とする請求項１から３のいずれかに記載の画像処理装置。
【請求項５】
前記画像記憶領域検出手段により検出された画像を記憶する領域の大きさと、前記入力手段に入力された元画像のサイズに応じて、縮小画像のサイズを設定する縮小サイズ設定手段を備え、前記縮小画像形成手段は、前記縮小サイズ設定手段により設定されたサイズに元画像を縮小することを特徴とする請求項４記載の画像処理装置。
【請求項６】
前記画像記憶領域検出手段により検出された画像を記憶する領域の大きさと、前記入力手段に入力された元画像のサイズに応じて元画像を縮小する縮小アルゴリズムを設定する縮小アルゴリズム設定手段を備え、前記縮小画像形成手段は、前記縮小アルゴリズム設定手段により設定された縮小アルゴリズムにより元画像を縮小することを特徴とする請求項４または５に記載の画像処理装置。
【請求項７】
前記レティネックス処理手段により処理される元画像は、横方向に複数の画素を有するラインと、縦方向にそのラインを複数有するように構成され、
前記レティネックス処理手段は、複数の方式の一つとして前記記憶手段にマスク処理を実行するに際して参照されるライン数分の画素を記憶してレティネックス処理を行う複数ライン記憶処理手段を備えていることを特徴とする請求項１から６のいずれかに記載の画像処理装置。
【請求項８】
前記レティネックス処理手段により処理される元画像は、横方向に複数の画素を有するラインと、縦方向にそのラインを複数有するように構成され、
前記レティネックス処理手段は、複数の方式の一つとして前記記憶手段にマスク処理を実行するに際して参照されるライン数分の画素を元画像を縮小して記憶してレティネックス処理を行う縮小複数ライン記憶処理手段を備えていることを特徴とする請求項１から７のいずれかに記載の画像処理装置。
【請求項９】
記録媒体に画像を印刷する印刷手段を備え、
前記画像記憶領域検出手段は、前記印刷手段により印刷処理に使用される記憶領域に基づいて前記記憶手段にレティネックス処理を行う際に画像を記憶することができる領域の大きさを検出することを特徴とする請求項１から８のいずれかに記載の画像処理装置。
【請求項１０】
前記印刷手段により印刷される画像の画質を優先するか印刷処理速度を優先するかを判断する優先判断手段を備え、
前記方式設定手段は、前記優先判断手段による画像の画質を優先するか印刷処理速度を優先するかの判断に応じて、前記レティネックス処理手段により実行されるレティネックス処理の方式を複数の方式の中から設定することを特徴とする請求項９記載の画像処理装置。
【請求項１１】
元画像を入力する入力手段と、画像を記憶する書き換え可能な記憶手段とを備えた画像処理装置により実行される画像処理プログラムにおいて、
前記入力手段により入力された元画像を複数の方式でレティネックス処理するレティネックス処理ステップと、
前記記憶手段にレティネックス処理を行う際に画像を記憶することができる領域の大きさを検出する画像記憶領域検出ステップと、
前記入力手段により入力された画像のサイズに応じて前記レティネックス処理ステップにおいて使用するメモリ量を取得するメモリ量取得ステップと、
前記画像記憶領域検出ステップにより検出された画像を記憶する領域の大きさと前記メモリ量取得ステップにより取得されたメモリ量とを比較することにより、前記レティネックス処理ステップにより実行されるレティネックス処理の方式を複数の方式の中から設定する方式設定ステップとを備えていることを特徴とする画像処理プログラム。
【請求項１２】
前記レティネックス処理ステップは、複数の方式の一つとして元画像を全て前記記憶手段に記憶してレティネックス処理を行う元画像記憶処理ステップを備えていることを特徴とする請求項１１記載の画像処理プログラム。
【請求項１３】
前記レティネックス処理ステップは、複数の方式の一つとして元画像を縮小して前記記憶手段に記憶してレティネックス処理を行う縮小画像記憶処理ステップを備え、その縮小画像記憶処理ステップは、
元画像を縮小した縮小画像を形成する縮小画像形成ステップと、その縮小画像形成ステップにより形成された縮小画像の各画素について、画素の値とその画素の周辺平均値とから反射率を求めることにより縮小レティネックス画像を形成する縮小レティネックス画像形成ステップと、その縮小レティネックス画像形成ステップにより形成された縮小レティネックス画像の画素値が取る値の全範囲における各画素値の頻度を集計し、正規化を行う際のパラメータを設定する正規化パラメータ設定ステップと、前記元画像の各画素について、画素の値とその画素の周辺平均値とから反射率を求め、その反射率を前記正規化パラメータ設定ステップにより設定されたパラメータに基づいて正規化した正規化レティネックス値を求め、その正規化レティネックス値と、元画像の画素値とに基づいて補正を行う補正ステップとを備えていることを特徴とする請求項１１または１２に記載の画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置に関し、特にレティネックス処理を行う際に使用できる記憶容量に応じた最適な方式で処理することができる画像処理装置および画像処理プログラムを提供するものである。
【背景技術】
【０００２】
逆光条件下で被写体が撮像された場合、被写体部分の画像は、詳細な態様が判別困難となるほど明度やコントラストの低い不明瞭な逆光画像となる。かかる逆光画像のみならず、露光の過不足や、撮像時のぶれやぼけ、ノイズ、光量不足などによる劣悪な画像を、画像処理によって明度やコントラストを向上させて画質を改良することが行われている。かかる画像処理の１手法として、レティネックス処理（Ｒｅｔｉｎｅｘ処理）が知られている。
【０００３】
レティネックス処理は、高画質部分については入力画像データを保持し、主に低画質部分の画質改良を行うものである。このレティネックス処理では、ガウスフィルタにより、元の画像の各画素データを周辺画素の画素データを反映させた値に補正し、その補正された画素データの自然対数から元の画像の反射率（リフレクタンス）成分データを算出し、元画像の画素成分で元の画像の画素データを除してイルミナンス成分データを算出する。つまり、元の画像を、反射率成分とイルミナンス成分との２の構成成分に分けるのである。そして、イルミナンス成分に対してガンマ補正等の明度や階調（コントラスト）を補正する処理を行った後、その補正されたイルミナンス成分と、反射率成分とを合成することにより、元の画像に対し逆光画像部分などの低画質部分の画質が改良された画像データを生成することができる。反射率成分を求めるには、反射率Ｒ（ｘ，ｙ）の正規化を行う。
【０００４】
ここで、図１５を参照して、反射率Ｒ（ｘ，ｙ）の正規化について説明する。反射率Ｒ（ｘ，ｙ）は、次式により算出される。
【０００５】
【数１】
2008118216.tif 000003
ここで、ｘは、横方向の座標を、ｙは、縦方向の座標を、Ｉ（ｘ，ｙ）は、座標（ｘ，ｙ）における強度値を、Ｆ（ｘ，ｙ）は、座標（ｘ，ｙ）のフィルタ係数を、＊は、畳み込み演算（コンボリューション）をそれぞれ示し、この畳み込み演算により周辺平均輝度（周辺平均値）が求められる。なお、ｌｏｇは、ｅを底とする自然対数である。
【０００６】
図１５は、ある静止画像について、上式により求められた反射率Ｒ（ｘ，ｙ）の最小値を０、最大値を２５５とする０から２５５の範囲の整数値に正規化し、各整数の出現頻度を集計したヒストグラムである。
【０００７】
このヒストグラムからメディアン値Ｍを求め、メディアン値から大きい側へ４５％の画素数を含む範囲の上限値をＵ、メディアン値から小さい側へ４５％の画素数を含む範囲の下限値をＤとする。
【０００８】
ＵおよびＤの値に対応するＲ（ｘ，ｙ）の値を、ＵｐＲ、ＤｏｗｎＲとし、正規化反射率ｒｅｆｌｅ（ｘ，ｙ）は、Ｒ（ｘ，ｙ）の値がＤｏｗｎＲ以下の場合は、０．０とし、Ｒ（ｘ，ｙ）の値がＵｐＲ以上の場合は、１．０とし、Ｒ（ｘ，ｙ）の値がＤｏｗｎＲより大きくＵｐＲより小さい場合は、
【０００９】
【数２】
2008118216.tif 000004
とする。
【００１０】
このように処理するとｒｅｆｌｅ（ｘ，ｙ）は、０．０から１．０の間の値を取るように正規化される。実験によれば、こうして得られた値に、０．３を加算し、ｒｅｆｌｅ（ｘ，ｙ）の値が０．３から１．３の値を取るようにするのがよいことが判明している。
【００１１】
このようにしてｒｅｆｌｅ（ｘ，ｙ）が求められるので、クリップされる範囲（ＵｐＲとＤｏｗｎＲとの間）を求めるため、Ｒ（ｘ，ｙ）を全画素分記憶しなければならない。尚かつ、Ｒ（ｘ，ｙ）は、対数演算により求まる数値であるので、小数点を用いて記録する必要があり、浮動小数点では、４バイト、倍精度実数の場合には８バイトで画素毎に記憶するため膨大な記憶容量が必要である。
【００１２】
特開２００１−６９５２５号公報（特許文献１）には、このレティネックス処理をＲＧＢの各プレーンで独立に行った場合に、カラーバランスが崩れたり色ずれが発生するという問題点を解決するために、ＲＧＢ値をＹＣｂＣｒやＹＩＱという輝度成分と色成分により構成される座標空間に変換し、輝度成分Ｙに対してのみレティネックス処理を施し、色成分を維持したまま、ＲＧＢに戻すという方法が開示されている。この方法を用いると輝度成分のみが調整され、色成分は調整されないのでカラーバランスが崩れたり色ずれが発生することがない。また、この方法では、輝度成分のみにレティネックス処理を行うので、ＲＧＢの各プレーンそれぞれにレティネックス処理を行う場合に比べ、計算量が少なく、高速で処理を実行することができとともに、Ｒ（ｘ，ｙ）を正規化するために、ＲＧＢそれぞれについて記憶する必要がなく、輝度のみについて記憶すればよいので、必要な記憶容量は少なくなる。
【００１３】
また、特許３７３１５７７号（特許文献２）には、このレティネックス処理の処理速度を高速にする方法が開示されている。この方法は、元画像を平均画素法などの方法により縮小画像（解像度が低い）を形成し、その縮小画像の各画素について周辺平均値を求めた周辺平均値画像（ボケ画像）を形成し、そのボケ画像を拡大した画像と元画像からレティネックス処理画像を形成し、更に、そのレティネックス処理画像と元画像とから出力画像を形成している。
【特許文献１】特開２００１−６９５２５号公報
【特許文献２】特許３７３１５７７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
しかしながら、従来の文献に開示された処理では、反射率を記憶するメモリのサイズが依然として大きいという問題点と、元画像をレティネックス処理する従来の方式に比べ、画質が劣化するという問題点とがあった。
【００１５】
本発明は、上記問題点を解決するためになされたものであり、レティネックス処理を行う際に使用できる記憶容量に応じた最適な方式で処理することができる画像処理装置および画像処理プログラムを提供することを目的としている。
【課題を解決するための手段】
【００１６】
この目的を達成するために、請求項１記載の画像処理装置は、元画像を入力する入力手段と、その入力手段により入力された元画像をレティネックス処理するレティネックス処理手段とを備えたものであって、前記レティネックス処理手段は、複数の方式でレティネックス処理を実行するものであり、書き換え可能な記憶手段と、その記憶手段にレティネックス処理を行う際に画像を記憶することができる領域の大きさを検出する画像記憶領域検出手段と、前記入力手段により入力された画像のサイズに応じて前記レティネックス処理手段において使用するメモリ量を取得するメモリ量取得手段と、前記画像記憶領域検出手段により検出された画像を記憶する領域の大きさと前記メモリ量取得手段により取得されたメモリ量とを比較することにより、前記レティネックス処理手段により実行されるレティネックス処理の方式を複数の方式の中から設定する方式設定手段とを備えている。
【００１７】
請求項２記載の画像処理装置は、請求項１記載の画像処理装置において、前記レティネックス処理手段は、複数の方式の一つとして元画像を全て前記記憶手段に記憶してレティネックス処理を行う元画像記憶処理手段を備えている。
【００１８】
請求項３記載の画像処理装置は、請求項１または２記載の画像処理装置において、前記レティネックス処理手段は、レティネックス処理における元画像の全画素についての反射率を前記記憶手段に記憶処理を行う元画像反射率記憶手段を備えている。
【００１９】
請求項４記載の画像処理装置は、請求項１から３のいずれかに記載の画像処理装置において、前記レティネックス処理手段は、複数の方式の一つとして元画像を縮小して前記記憶手段に記憶してレティネックス処理を行う縮小画像記憶処理手段を備え、その縮小画像記憶処理手段は、元画像を縮小した縮小画像を形成する縮小画像形成手段と、その縮小画像形成手段により形成された縮小画像の各画素について、画素の値とその画素の周辺平均値とから反射率を求めることにより縮小レティネックス画像を形成する縮小レティネックス画像形成手段と、その縮小レティネックス画像形成手段により形成された縮小レティネックス画像の画素値が取る値の全範囲における各画素値の頻度を集計し、正規化を行う際のパラメータを設定する正規化パラメータ設定手段と、前記元画像の各画素について、画素の値とその画素の周辺平均値とから反射率を求め、その反射率を前記正規化パラメータ設定手段により設定されたパラメータに基づいて正規化した正規化レティネックス値を求め、その正規化レティネックス値と、元画像の画素値とに基づいて補正を行う補正手段とを備えている。
【００２０】
請求項５記載の画像処理装置は、請求項４記載の画像処理装置において、前記画像記憶領域検出手段により検出された画像を記憶する領域の大きさと、前記入力手段に入力された元画像のサイズに応じて、縮小画像のサイズを設定する縮小サイズ設定手段を備え、前記縮小画像形成手段は、前記縮小サイズ設定手段により設定されたサイズに元画像を縮小する。
【００２１】
請求項６記載の画像処理装置は、請求項４または５記載の画像処理装置において、前記画像記憶領域検出手段により検出された画像を記憶する領域の大きさと、前記入力手段に入力された元画像のサイズに応じて元画像を縮小する縮小アルゴリズムを設定する縮小アルゴリズム設定手段を備え、前記縮小画像形成手段は、前記縮小アルゴリズム設定手段により設定された縮小アルゴリズムにより元画像を縮小する。
【００２２】
請求項７記載の画像処理装置は、請求項１から６のいずれかに記載の画像処理装置において、前記レティネックス処理手段により処理される元画像は、横方向に複数の画素を有するラインと、縦方向にそのラインを複数有するように構成され、前記レティネックス処理手段は、複数の方式の一つとして前記記憶手段にマスク処理を実行するに際して参照されるライン数分の画素を記憶してレティネックス処理を行う複数ライン記憶処理手段を備えている。
【００２３】
請求項８記載の画像処理装置は、請求項１から７のいずれかに記載の画像処理装置において、前記レティネックス処理手段により処理される元画像は、横方向に複数の画素を有するラインと、縦方向にそのラインを複数有するように構成され、前記レティネックス処理手段は、複数の方式の一つとして前記記憶手段にマスク処理を実行するに際して参照されるライン数分の画素を元画像を縮小して記憶してレティネックス処理を行う縮小複数ライン記憶処理手段を備えている。
【００２４】
請求項９記載の画像処理装置は、請求項１から８のいずれかに記載の画像処理装置において、記録媒体に画像を印刷する印刷手段を備え、前記画像記憶領域検出手段は、前記印刷手段により印刷処理に使用される記憶領域に基づいて前記記憶手段にレティネックス処理を行う際に画像を記憶することができる領域の大きさを検出する。
【００２５】
請求項１０記載の画像処理装置は、請求項９記載の画像処理装置において、前記印刷手段により印刷される画像の画質を優先するか印刷処理速度を優先するかを判断する優先判断手段を備え、前記方式設定手段は、前記優先判断手段による画像の画質を優先するか印刷処理速度を優先するかの判断に応じて、前記レティネックス処理手段により実行されるレティネックス処理の方式を複数の方式の中から設定する。
【００２６】
請求項１１記載の画像処理プログラムは、元画像を入力する入力手段と、画像を記憶する書き換え可能な記憶手段とを備えた画像処理装置により実行されるものであって、前記入力手段により入力された元画像を複数の方式でレティネックス処理するレティネックス処理ステップと、前記記憶手段にレティネックス処理を行う際に画像を記憶することができる領域の大きさを検出する画像記憶領域検出ステップと、前記入力手段により入力された画像のサイズに応じて前記レティネックス処理ステップにおいて使用するメモリ量を取得するメモリ量取得ステップと、前記画像記憶領域検出ステップにより検出された画像を記憶する領域の大きさと前記メモリ量取得ステップにより取得されたメモリ量とを比較することにより、前記レティネックス処理ステップにより実行されるレティネックス処理の方式を複数の方式の中から設定する方式設定ステップとを備えている。
【００２７】
請求項１２記載の画像処理プログラムは、請求項１１記載の画像処理プログラムにおいて、前記レティネックス処理ステップは、複数の方式の一つとして元画像を全て前記記憶手段に記憶してレティネックス処理を行う元画像記憶処理ステップを備えている。
【００２８】
請求項１３記載の画像処理プログラムは、請求項１１または１２に記載の画像処理プログラムにおいて、前記レティネックス処理ステップは、複数の方式の一つとして元画像を縮小して前記記憶手段に記憶してレティネックス処理を行う縮小画像記憶処理ステップを備え、その縮小画像記憶処理ステップは、元画像を縮小した縮小画像を形成する縮小画像形成ステップと、その縮小画像形成ステップにより形成された縮小画像の各画素について、画素の値とその画素の周辺平均値とから反射率を求めることにより縮小レティネックス画像を形成する縮小レティネックス画像形成ステップと、その縮小レティネックス画像形成ステップにより形成された縮小レティネックス画像の画素値が取る値の全範囲における各画素値の頻度を集計し、正規化を行う際のパラメータを設定する正規化パラメータ設定ステップと、前記元画像の各画素について、画素の値とその画素の周辺平均値とから反射率を求め、その反射率を前記正規化パラメータ設定ステップにより設定されたパラメータに基づいて正規化した正規化レティネックス値を求め、その正規化レティネックス値と、元画像の画素値とに基づいて補正を行う補正ステップとを備えている。
【発明の効果】
【００２９】
請求項１記載の画像処理装置によれば、レティネックス処理手段は、複数の方式でレティネックス処理を実行するものであり、書き換え可能な記憶手段と、その記憶手段にレティネックス処理を行う際に画像を記憶することができる領域の大きさを検出する画像記憶領域検出手段と、前記入力手段により入力された画像のサイズに応じて前記レティネックス処理手段において使用するメモリ量を取得するメモリ量取得手段と、前記画像記憶領域検出手段により検出された画像を記憶する領域の大きさと前記メモリ量取得手段により取得されたメモリ量とを比較することにより、前記レティネックス処理手段により実行されるレティネックス処理の方式を複数の方式の中から設定する方式設定手段とを備えている
ので、書き換え可能な記憶手段に記憶できる容量で処理することができるレティネックス処理の最良の方式が設定されるという効果がある。レティネックス処理を精度よく、かつ高速で実行するためには、大きな記憶容量を必要とするが、記憶手段は、高価であり、安価な装置などでは、記憶容量が制限される。本発明によれば、記憶容量に応じた最良の方式のレティネックス処理を実行することができる。
【００３０】
請求項２記載の画像処理装置によれば、請求項１記載の画像処理装置の奏する効果に加え、レティネックス処理手段は、複数の方式の一つとして元画像を全て記憶手段に記憶してレティネックス処理を行う元画像記憶処理手段を備えているので、記憶容量が大きい場合には、精度の高い処理を高速で行うことができるという効果がある。
【００３１】
請求項３記載の画像処理装置によれば、請求項１または２記載の画像処理装置の奏する効果に加え、レティネックス処理手段は、レティネックス処理における元画像の全画素についての反射率を記憶手段に記憶処理を行う元画像反射率記憶手段を備えているので、元画像の反射率を一度求めて記憶しておけば、再度求める必要がなく、高速で処理することができるという効果がある。反射率を求める演算は、種々の方法が提案されているが、精度良く行うには、計算量が多く、時間を要するが、一度求めた値を記憶することにより高速で処理することができる。
【００３２】
請求項４記載の画像処理装置によれば、請求項１から３のいずれかに記載の画像処理装置の奏する効果に加え、レティネックス処理手段は、複数の方式の一つとして元画像を縮小して記憶手段に記憶してレティネックス処理を行う縮小画像記憶処理手段を備え、その縮小画像記憶処理手段は、元画像を縮小した縮小画像を形成する縮小画像形成手段と、その縮小画像形成手段により形成された縮小画像の各画素について、画素の値とその画素の周辺平均値とから反射率を求めることにより縮小レティネックス画像を形成する縮小レティネックス画像形成手段と、その縮小レティネックス画像形成手段により形成された縮小レティネックス画像の画素値が取る値の全範囲における各画素値の頻度を集計し、正規化を行う際のパラメータを設定する正規化パラメータ設定手段と、元画像の各画素について、画素の値とその画素の周辺平均値とから反射率を求め、その反射率を正規化パラメータ設定手段により設定されたパラメータに基づいて正規化した正規化レティネックス値を求め、その正規化レティネックス値と、元画像の画素値とに基づいて補正を行う補正手段とを備えているので、記憶手段の記憶容量が大きくない場合において、かなり精度良く、かつ高速で処理を行うことができるという効果ある。特に、縮小画像を用いて正規化パラメータを求めるために、正規化パラメータを求めるのに要する時間を短縮することができ、その後、順次画素値を補正して出力できるので、処理を開始してから、出力が開始されるまでの時間が短いという効果がある。
【００３３】
請求項５記載の画像処理装置によれば、請求項４記載の画像処理装置の奏する効果に加え、前記画像記憶領域検出手段により検出された画像を記憶する領域の大きさと、前記入力手段に入力された元画像のサイズに応じて、縮小画像のサイズを設定する縮小サイズ設定手段を備え、縮小画像形成手段は、縮小サイズ設定手段により設定されたサイズに元画像を縮小するので、画像を記憶する領域が少なくなってもレティネックス処理を続けることができるので、その結果、画像を記憶する領域の大きさが少なくなっても、明度やコントラストを向上させて画質の改良が良好に行われるという効果がある。
【００３４】
請求項６記載の画像処理装置によれば、請求項４または５記載の画像処理装置において、画像記憶領域検出手段により検出された画像を記憶する領域の大きさと、入力手段に入力された元画像のサイズに応じて元画像を縮小する縮小アルゴリズムを設定する縮小アルゴリズム設定手段を備え、縮小画像形成手段は、縮小アルゴリズム設定手段により設定された縮小アルゴリズムにより元画像を縮小するので、元画像を予め定められた縮小アルゴリズムで縮小した場合に、画像を記憶する領域に記憶できない場合には、縮小アルゴリズムを、画像を記憶する容量が少なくて処理できるアルゴリズムに変更する。よって、画像を記憶する領域が少ない場合であっても、レティネックス処理を継続できるので、その結果、画像を記憶する領域の大きさが、予め定められた縮小画像のサイズより少なくなっても、明度やコントラストを向上させて画質の改良を継続できるという効果がある。
【００３５】
請求項７記載の画像処理装置によれば、請求項１から６のいずれかに記載の画像処理装置の奏する効果に加え、レティネックス処理手段により処理される元画像は、横方向に複数の画素を有するラインと、縦方向にそのラインを複数有するように構成され、レティネックス処理手段は、複数の方式の一つとして記憶手段にマスク処理を実行するに際して参照されるライン数分の画素を記憶してレティネックス処理を行う複数ライン記憶処理手段を備えているので、画像を記憶する記憶容量が少ない場合にも、多少時間を要するが、レティネックス処理を行うことができるという効果がある。
【００３６】
請求項８記載の画像処理装置によれば、請求項１から７のいずれかに記載の画像処理装置の奏する効果に加え、レティネックス処理手段により処理される元画像は、横方向に複数の画素を有するラインと、縦方向にそのラインを複数有するように構成され、レティネックス処理手段は、複数の方式の一つとして記憶手段にマスク処理を実行するに際して参照されるライン数分の画素を元画像を縮小して記憶してレティネックス処理を行う縮小複数ライン記憶処理手段を備えているので、画像を記憶する記憶容量がより少ない場合にも時間を要するとともに、多少画質が劣化する恐れがあるが、レティネックス処理を行うことができるという効果がある。
【００３７】
請求項９記載の画像処理装置によれば、請求項１から８のいずれかに記載の画像処理装置の奏する効果に加え、記録媒体に画像を印刷する印刷手段を備え、画像記憶領域検出手段は、印刷手段により印刷処理に使用される記憶領域に基づいて記憶手段にレティネックス処理を行う際に画像を記憶することができる領域の大きさを検出するので、印刷手段による印刷機能が実行される際に、画像処理用に確保できた領域の大きさに応じたレティネックス処理の方式により処理することができるという効果がある。よって、印刷機能を備えた画像処理装置の記憶容量が、それほど大きくなくても、印刷処理と画像処理とを行うことができるようになり、画像処理装置のコストが高くなるので抑制することができる。
【００３８】
請求項１０記載の画像処理装置によれば、請求項９記載の画像処理装置の奏する効果に加え、印刷手段により印刷される画像の画質を優先するか印刷処理速度を優先するかを判断する優先判断手段を備え、方式設定手段は、優先判断手段による画像の画質を優先するか印刷処理速度を優先するかの判断に応じて、レティネックス処理手段により実行されるレティネックス処理の方式を複数の方式の中から設定するので、ユーザにより設定された印刷パラメータに応じた方式で画像処理が行われる。例えば、印刷の解像度が高く設定されたり、印刷用紙として光沢紙が選択されたような場合は、高画質が要求されていると判断し、確保できたメモリ量の中で最も画質が良い方式が設定される。一方、印刷の解像度が低く設定されたり、印刷用紙として普通紙が選択されたような場合は、画質より速度が要求されていると判断し、例え、確保できたメモリ量が大きくても、高速に画像処理を行う方式が選択される。よって、ユーザの要求にあった方式が設定されるという効果がある。
【００３９】
請求項１１記載の画像処理プログラムによれば、入力手段により入力された元画像を複数の方式でレティネックス処理するレティネックス処理ステップと、記憶手段にレティネックス処理を行う際に画像を記憶することができる領域の大きさを検出する画像記憶領域検出ステップと、入力手段により入力された画像のサイズに応じてレティネックス処理ステップにおいて使用するメモリ量を取得するメモリ量取得ステップと、画像記憶領域検出ステップにより検出された画像を記憶する領域の大きさと前記メモリ量取得ステップにより取得されたメモリ量とを比較することにより、レティネックス処理ステップにより実行されるレティネックス処理の方式を複数の方式の中から設定する方式設定ステップとを備えている。
【００４０】
よって、書き換え可能な記憶手段に記憶できる容量で処理することができるレティネックス処理の最良の方式が設定されるという効果がある。レティネックス処理を精度よく、かつ高速で実行するためには、大きな記憶容量を必要とするが、記憶手段は、高価であり、安価な装置などでは、記憶容量が制限される。本発明によれば、記憶容量に応じた最良の方式のレティネックス処理を実行することができる。
【００４１】
請求項１２記載の画像処理プログラムによれば、請求項１１記載の画像処理プログラムの奏する効果に加え、レティネックス処理ステップは、複数の方式の一つとして元画像を全て記憶手段に記憶してレティネックス処理を行う元画像記憶処理ステップを備えているので、記憶容量が大きい場合には、精度の高い処理を高速で行うことができるという効果がある。
【００４２】
請求項１３記載の画像処理プログラムによれば、請求項１１または１２に記載の画像処理プログラムの奏する効果に加え、レティネックス処理ステップは、複数の方式の一つとして元画像を縮小して記憶手段に記憶してレティネックス処理を行う縮小画像記憶処理ステップを備え、その縮小画像記憶処理ステップは、元画像を縮小した縮小画像を形成する縮小画像形成ステップと、その縮小画像形成ステップにより形成された縮小画像の各画素について、画素の値とその画素の周辺平均値とから反射率を求めることにより縮小レティネックス画像を形成する縮小レティネックス画像形成ステップと、その縮小レティネックス画像形成ステップにより形成された縮小レティネックス画像の画素値が取る値の全範囲における各画素値の頻度を集計し、正規化を行う際のパラメータを設定する正規化パラメータ設定ステップと、元画像の各画素について、画素の値とその画素の周辺平均値とから反射率を求め、その反射率を前記正規化パラメータ設定ステップにより設定されたパラメータに基づいて正規化した正規化レティネックス値を求め、その正規化レティネックス値と、元画像の画素値とに基づいて補正を行う補正ステップとを備えている。
【００４３】
よって、記憶手段の記憶容量が大きくない場合において、かなり精度良く、かつ高速で処理を行うことができるという効果ある。特に、縮小画像を用いて正規化パラメータを求めるために、正規化パラメータを求めるのに要する時間を短縮することができ、その後、順次画素値を補正して出力できるので、処理を開始してから、出力が開始されるまでの時間が短いという効果がある。
【発明を実施するための最良の形態】
【００４４】
以下、本発明の好ましい第１実施形態について添付図面を参照して説明する。図１は、本実施形態の画像処理を行う機能を有するプリンタ１と、インターフェース１７を介して接続されるパーソナルコンピュータ（以下、「ＰＣ」と略す）２と、同じくインターフェース１８を介して接続されるデジタルカメラ２１とからシステムの構成を示すブロック図である。
【００４５】
プリンタ１は、ＲＯＭ１２に記憶された画像処理プログラムを実行することにより、ＰＣ２や、デジタルカメラ２１や、外部メディア２０から入力された画像データ（元画像データ）に対しレティネックス処理（Ｒｅｔｉｎｅｘ処理）を実行して、画像データの逆光画像部分などの低画質領域の補正を実行するように構成されている。
【００４６】
図１に示すように、プリンタ１は、ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、印刷ヘッドなどから構成され、印刷媒体（例えば、紙媒体など）への印刷を行う印刷部１５、ユーザが機能を選択したり各機能におけるパラメータなどを入力する操作パネル１６、ＰＣ２とのインターフェイス（以下「Ｉ／Ｆ」と称す）１７、デジタルカメラ２１とのＩ／Ｆ１８、画像データなどを記憶した外部メディア２０を着脱自在に装着する外部メディアスロット１９を主に備えている。
【００４７】
Ｉ／Ｆ１７は、ケーブル５を介してＰＣ２と接続され、Ｉ／Ｆ１８は、ケーブル６を介してデジタルカメラ２１と接続され、これらのＩ／Ｆ１７、１８により行われる通信方法としてＵＳＢ（Universal  Serial  Bus）が使用される。外部メディア２０は、例えば、ＳＤメモリカード、メモリスティックなどのフラッシュメモリにより構成されるメモリカードである。
【００４８】
プリンタ１は、ＰＣ２に記憶されている画像データをケーブル５及びＩ／Ｆ１７を介して入力することが可能であると共に、デジタルカメラ２１によって撮影された画像データをケーブル６及びＩ／Ｆ１８を介して入力することが可能である。さらに、外部メディアスロット１９に装着された外部メディア２０から、その外部メディア２０に記憶されている画像データを入力することが可能である。また、ＰＣ２において設定された印刷パラメータは、ケーブル５及びＩ／Ｆ１７を介してプリンタ１入力され、印刷機能用メモリ１３ｂに記憶される。
【００４９】
ＣＰＵ１１は、プリンタ１全体を制御する演算処理装置である。ＲＯＭ１２は、ＣＰＵ１１により実行される各種制御プログラムやそのプログラムを実行する際に用いられる固定値などを記憶するものであり、レティネックス処理などの画像の処理を行う画像処理プログラムを記憶する画像処理プログラムメモリ１２ａや、印刷を行うための印刷制御プログラムを記憶する印刷制御プログラムメモリ１２ｂや画像処理プログラムが実行される際に参照されるルックアップテーブルを記憶するＬＵＴメモリ１２ｃ等が備えられている。ＬＵＴメモリ１２ｃに記憶されるルックアップテーブルについては、図１１および図１２を参照して後述する。
【００５０】
ＲＡＭ１３は、ランダムにアクセスできる書き換え可能なメモリであり、制御プログラムがＣＰＵ１１により実行される際に必要な各種レジスタ群などが記憶されるワーキングエリアや、処理中のデータを一時的に格納するテンポラリエリア等の領域であるテンポラリメモリ１３ａと、印刷を行う際にユーザにより設定される印刷パラメータや、印刷データなどが記憶される領域である印刷機能用メモリ１３ｂと、画像処理が行われる際に使用される領域である画像処理用メモリ１３ｃ等を備えている。これらの各メモリ領域の大きさは、ユーザが使用する機能の状態に応じてプログラムにより設定される。例えば、印刷を行うための画像データが入力された場合には、印刷機能用メモリ１３ｂにその画像データが記憶され、他の記憶領域の大きさは、小さく設定される。
【００５１】
テンポラリメモリ１３ａには、画像処理が行われる際に、元画像のサイズや元画像を縮小して画像処理を行う場合の縮小画像サイズや縮小アルゴリズムなどの画像処理を行う際に使用されるパラメータが記憶される。
【００５２】
印刷機能用メモリ１３ｂには、印刷パラメータや画像データが記憶される。印刷パラメータは、印刷を行う際の印刷モードを高画質の写真モードとするか、普通画質の普通モードとするか、また、記録媒体の種類を光沢紙、インクジェット紙、普通紙のいずれにするか、また、記録媒体のサイズをＡ４，Ｂ５、レターなどのパラメータでありユーザにより設定される。
【００５３】
縮小画を用いてレティネックス処理を行う場合は、これらの印刷パラメータや、元画像のサイズに基づいて、縮小画像のサイズと縮小するアルゴリズムが決定される。画質が優先される場合は、縮小画像サイズとして大きいサイズが設定され、画質より処理速度が優先される場合は、縮小画像サイズとして小さいサイズが設定される。縮小アルゴリズムとしては、上記、最近傍法、バイリニア法、平均画素法などの中から選択される。
【００５４】
バイリニア法や平均画素法では、縮小画像の画素値は、元画像の対応する位置の周囲の複数の画素値に重み付けをするなどの演算を行って算出される。この算出された値は、元の画素値が整数値で表される場合に、小数値を有することになる。この小数値を四捨五入などにより整数値に丸めると誤差が発生する。その結果、補正された画像の画質が劣化する場合がある。
【００５５】
画像処理用メモリ１３ｃには、画像処理が行われる画像データを記憶する領域である画像データメモリ１３ｃ１と、レティネックス処理において求められる反射率を記憶する領域である反射率メモリ１３ｃ２と、正規化を行うためのパラメータを求める際に反射率の頻度が記憶され、ヒストグラムが形成されるヒストグラムメモリ１３ｃ３などが必要に応じて確保される。
【００５６】
画像メモリ１３ｃ１には、設定された画像処理処理方式により、元画像の全画素の画素値が記憶される場合と、元画像を所定の縮小アルゴリズムで所定の縮小サイズに縮小した縮小画像の画素値が記憶される場合とがある。縮小画像を形成する場合には、縮小画像を形成するために必要なライン数分のデータを読み込み、縮小画像を形成する。縮小アルゴリズムが、最近傍法である場合には、１ラインのデータを記憶し、バイリニア法である場合には、２ライン、バイキュービック法である場合には、３ライン、平均画素法の場合は、縮小率に応じたライン数分の元画像データが記憶される。
【００５７】
なお、本実施形態では、元画像データ及び出力画像データはいずれもＲＧＢ値から構成され、これらの各ＲＧＢ値は、データサイズ（データ長ともいう）が８ビットであって、１０進数では「０」〜「２５５」の範囲の値である。
【００５８】
ＲＧＢ値は、光の３原色である赤を表すＲ値と、緑を表すＧ値と、青を示すＢ値とを構成成分とする値である。光の３原色の混色により各種の色は生成されるので、入力画像の各画素の色は、Ｒ値とＧ値とＢ値との組合せ（ＲＧＢ値）により１の色（色相や階調など）が示される。このＲＧＢ値の値が大きいほど、輝度（明度）は高くなる。
【００５９】
元画像データには、その元画像のサイズを表すデータ（例えば、縦横のピクセル数）が付随し、そのサイズを表すデータが読み込まれてテンポラリメモリ１３ａに記憶される。
【００６０】
反射率メモリ１３ｃ２は、元画像または縮小画像の輝度信号のみについてレティネックス処理において求められる反射率Ｒ（ｘ，ｙ）、またはＲｓ（ｘ，ｙ）を記憶するメモリである。
【００６１】
ヒストグラムメモリ１３ｃ３は、反射率Ｒ（ｘ，ｙ）、またはＲｓ（ｘ，ｙ）の頻度を集計してヒストグラムを形成するためのメモリである。ヒストグラムが作成されると、そのヒストグラムに基づいて、正規化を行うためのパラメータである上限値および下限値（クリップ範囲）が定められる。
【００６２】
操作パネル１６には、印刷パラメータなどを表示するＬＣＤと、印刷パラメータや画像処理に関するパラメータを設定したり、画像処理や印刷処理の実行を指示する各種操作子が備えられている。
【００６３】
次に、図２〜図７を参照して、プリンタ１により実行される画像処理について説明する。この画像処理では、現在の使用状態で、画像処理用にメモリを確保し、その確保できたメモリ量が、画像処理を行う元画像の全画素を記憶して処理できるメモリ量より大きいか否か判断し、確保できたメモリ量が、全画素を記憶して処理できる場合には、全画素を記憶して処理する方式とし、全画素を記憶できない場合は、確保できたメモリ量に合った縮小方法で元画像を縮小して処理を行う方式とするものである。
【００６４】
図２は、画像処理を行う画像がユーザにより選択され、画像処理を開始するように指示された場合に起動される処理を示すフローチャートである。まず、元画像のサイズを選択された画像が記憶されているファイルから読み出し、テンポラリメモリ１３ａに記憶する（Ｓ１）。元画像のサイズを示す情報は、例えば、縦横それぞれの画素数で表され元画像を記憶するファイルのヘッダなどに記憶されている。
【００６５】
次に、現在のプリンタ１の使用状態に応じて、画像処理用メモリ１３ｃを確保し、確保できたメモリ量をテンポラリメモリ１３ａに記憶する（Ｓ２）。次に、テンポラリメモリ１３ａに記憶した元画像サイズに基づいて、元画像の全画素を記憶して行う通常レティネックス処理に必要とするメモリ量を算出する（Ｓ３）。この通常レティネックス処理は、図３に示すフローチャートの処理であって、元画像の全画素の画素値を画像処理用メモリ１３ｃに記憶し、レティネックス処理で求められた元画像の反射率を反射率メモリ１３ｃ２に記憶し、その反射率のヒストグラムをヒストグラムメモリ１３ｃ３に形成して行うレティネックス処理の一方式である。なお、この通常レティネックス処理により処理された場合は、最も画質が良いが、処理に時間を要するという特徴を有する。
【００６６】
次に、通常レティネックス処理を行うのに必要なメモリ量が、確保できたメモリ量より大きいか否かを判断し（Ｓ４）、通常レティネックス処理を行うのに必要なメモリ量が、確保できたメモリ量より大きくない場合は（Ｓ４：Ｎｏ）、通常レティネックス処理を行い（Ｓ５）、通常レティネックス処理を行うのに必要なメモリ量が、確保できたメモリ量より大きい場合は（Ｓ４：Ｙｅｓ）、縮小レティネックス処理を行う（Ｓ６）。
【００６７】
縮小レティネックス処理は、元画像を縮小した縮小画像に基づいて反射率のクリップ範囲を求め、その求められたクリップ範囲に基づいて、元画像のレティネックス処理を行う方式であり、図４および図７を参照して後述する。なお、縮小レティネックス処理は、通常レティネックス処理に比べ、画質は少し劣るが、処理速度が速いという特徴を有する。
【００６８】
次に、図３を参照して通常レティネックス処理について説明する。図３は、通常レティネックス処理を示すフローチャートである。
【００６９】
通常レティネックス処理では、まず、元画像の全画素の画素値をＰＣ２やデジタルカメラ２１から読み込み、ＲＡＭ１３の元画像メモリ１３ａに記憶する（Ｓ１１）。次に、元画像の各画素について輝度信号Ｙと色信号Ｃｂ，Ｃｒに変換する（Ｓ１２）。輝度信号Ｙおよび色信号Ｃｂ，Ｃｒは、次式により演算される。
【００７０】
【数３】
2008118216.tif 000005
演算された輝度信号Ｙおよび色信号Ｃｂ、Ｃｒは、画像データメモリ１３ｃ１に記憶し、次に、上式により演算された輝度信号Ｙについて、反射率Ｒ（ｘ，ｙ）を算出する（Ｓ１３）。反射率Ｒは、上述の通り数式１により演算される。
【００７１】
次に、演算された反射率ＲをＲＡＭ１３の反射率メモリ１３ｃ２に記憶する（Ｓ１４）。次に、Ｒ（ｘ，ｙ）を最大値および最小値と比較する（Ｓ１５）。詳細には、最初の座標について求めた反射率Ｒ（ｘ，ｙ）を最大値および最小値とし、そのつぎから求めた反射率Ｒ（ｘ，ｙ）と最大値および最小値とをそれぞれ比較し、今回求めた反射率Ｒ（ｘ，ｙ）が、最大値より大きい場合は、今回求めた反射率Ｒ（ｘ，ｙ）を新たな最大値とし、今回求めた反射率Ｒ（ｘ，ｙ）が、最小値より小さい場合は、今回求めた反射率Ｒ（ｘ，ｙ）を新たな最小値とし、今回求めた反射率Ｒ（ｘ，ｙ）が、最大値より小さく、最小値より大きい場合は、最大値、最小値を変更しないという処理である。
【００７２】
次に、画像の全ての座標についてＳ１３〜Ｓ１５の処理を行ったか否かを判断し（Ｓ１６）、まだ、未処理の座標がある場合は（Ｓ１６：Ｎｏ）、Ｓ１３の処理に戻り、全ての座標についての処理を終了した場合は（Ｓ１６：Ｙｅｓ）、Ｓ１５の処理により求めた最大値と最小値に基づいて、反射率メモリ１３ｃ２に記憶した反射率Ｒ（ｘ，ｙ）を正規化し、ヒストグラムを形成する（Ｓ１７）。このヒストグラムは、算出された最大値と最小値との間の各整数値をとる画素値の数を集計したもので、この集計されたヒストグラムは、ヒストグラムメモリ１３ｃ３に形成される。
【００７３】
次に、その形成されたヒストグラムからメディアン値を求め（Ｓ１８）、そのメディアン値とヒストグラムとから反射率Ｒ（ｘ，ｙ）のクリップ範囲を定める（Ｓ１９）。このクリップ範囲は、例えば、メディアン値より大きい値で、全標本の４５％の標本が含まれる上限値をクリップ範囲の上限値ＵｐＲとし、メディアン値より小さい値で、全標本の４５％が含まれる下限値をクリップ範囲の下限値ＤｏｗｎＲとするものである。
【００７４】
以上の処理により、元画像の反射率により構成されるレティネックス画像を形成し、そのレティネックス画像から、元画像の反射率のクリップする範囲を求めることができる。
【００７５】
次に、上記処理により求められたクリップ範囲に基づいて、反射率メモリ１３ｃ２に記憶したＲ（ｘ，ｙ）を正規化し、正規化反射率ｒｅｆｌｅ（ｘ，ｙ）を得る（Ｓ２０）。
【００７６】
正規化反射率ｒｅｆｌｅ（ｘ，ｙ）は、上述の通り数式２などを用いて求められる。次に、このｒｅｆｌｅ（ｘ，ｙ）を用いて、次式により輝度についてレティネックス処理を行った画素の値Ｏｕｔ（ｘ，ｙ）を得る（Ｓ２１）。なお、γは、定数である。
数４の項のうち、I(x,y)/refle(x,y）が正規化レティネックス値に相当する。
【００７７】
【数４】
2008118216.tif 000006
次に、このＯｕｔ（ｘ，ｙ）を輝度値Ｙとし、色信号Ｃｂ、Ｃｒとに基づいて、ＲＧＢ値に変換し（Ｓ２２）出力する。この変換は、次式により算出される。
【００７８】
【数５】
2008118216.tif 000007
出力先が印刷部１５に設定されている場合は、処理された画素値が印刷部１５に出力される。次に、元画像の全ての画素について処理を行ったかを判断し（Ｓ２３）、まだ、処理を行っていない画素があるある場合は（Ｓ２３：Ｎｏ）、Ｓ２０の処理に戻り、全ての画素について処理を終了した場合は（Ｓ２３：Ｙｅｓ）、このレティネックス処理を終了する。
【００７９】
次に、図４〜図７とを参照して縮小レティネックス方式について説明する。図４に示すフローチャートは、縮小レティネックス処理における縮小画像のサイズと縮小アルゴリズムとを設定する処理であり、図５と図６とに示すフローチャートは、縮小サイズを決定する処理を示すフローチャートであり、図７に示すフローチャートは、設定された縮小画像のサイズと縮小アルゴリズムとに従って行う縮小レティネックス処理である。
【００８０】
まず、図４に示すフローチャートでは、縮小アルゴリズムを平均画素法と仮に設定し（Ｓ３１）、テンポラリメモリ１３ａに記憶した確保できたメモリ量と元画像のサイズとから、元画像を平均画素法により縮小した画像でレティネックス処理を行うことができる最大の縮小サイズを求めるサブルーチンの処理を行う（Ｓ３２）。この縮小サイズを決定するサブルーチンの処理については、図５と図６とを参照して後述する。
【００８１】
次に、その縮小サイズがレティネックス処理を行うことができる最小画像サイズより小さいか否かを判断する（Ｓ３３）。
【００８２】
縮小サイズがレティネックス処理を行うことができる最小画像サイズより小さくない場合は（Ｓ３３：Ｎｏ）、縮小サイズを、その縮小サイズとし、縮小アルゴリズムを平均画素法と決定して、テンポラリメモリ１３ａに記憶する（Ｓ３４）。
【００８３】
Ｓ３３の判断処理において、平均画素法により縮小した画像でレティネックス処理を行うことができる最大の縮小サイズが、レティネックス処理を行うことができる最小画像サイズより小さい場合は（Ｓ３３：Ｙｅｓ）、縮小アルゴリズムをバイリニア法に仮に設定し（Ｓ３５）、テンポラリメモリ１３ａに記憶した確保できたメモリ量と元画像のサイズとから、元画像をバイリニア法により縮小した画像でレティネックス処理を行うことができる最大の縮小サイズを求めるサブルーチンの処理を行う（Ｓ３６）。このサブルーチンの処理は、図５と図６とを参照して後述する。
【００８４】
次に、その縮小サイズがレティネックス処理を行うことができる最小画像サイズより小さいか否かを判断する（Ｓ３７）、その縮小サイズがレティネックス処理を行うことができる最小画像サイズより小さくない場合は（Ｓ３７：Ｎｏ）、縮小サイズを、その縮小サイズとし、縮小アルゴリズムをバイリニア法と決定して、テンポラリメモリ１３ａに記憶する（Ｓ３８）。
【００８５】
Ｓ３７の判断処理において、バイリニア法により縮小した画像でレティネックス処理を行うことができる最大の縮小サイズが、レティネックス処理を行うことができる最小画像サイズより小さい場合は（Ｓ３７：Ｙｅｓ）、縮小アルゴリズムを最近傍法（ニアレストネイバ法ともいう）に仮に設定し（Ｓ４１）、テンポラリメモリ１３ａに記憶した確保できたメモリ量と元画像のサイズとから、元画像を最近傍法により縮小した画像でレティネックス処理を行うことができる最大の縮小サイズを求めるサブルーチンの処理を行う（Ｓ４２）。このサブルーチンの処理は、図５と図６とを参照して後述する。
【００８６】
次に、その縮小サイズがレティネックス処理を行うことができる最小画像サイズより小さいか否かを判断する（Ｓ４３）、その縮小サイズがレティネックス処理を行うことができる最小画像サイズより小さくない場合は（Ｓ４３：Ｎｏ）、縮小サイズを、その縮小サイズとし、縮小アルゴリズムを最近傍法と決定して、テンポラリメモリ１３ａに記憶する（Ｓ４４）。Ｓ４３の判断処理において、最近傍法により縮小した画像でレティネックス処理を行うことができる最大の縮小サイズが、レティネックス処理を行うことができる最小画像サイズより小さい場合は（Ｓ４３：Ｙｅｓ）、元画像を縮小してレティネックス処理を行うことができないので、その旨を操作パネル１６の表示器に表示し（Ｓ４５）、この縮小サイズ、縮小アルゴリズム設定処理を終了する。一方、Ｓ３４、またはＳ３８、またはＳ４４の処理により縮小サイズおよび縮小アルゴリズムが決定された場合は、図７に示すフローチャートの前処理に進む。
【００８７】
次に、図５を参照して、縮小サイズを決定するサブルーチンの処理について説明する。このサブルーチンは、仮設定された縮小アルゴリズムにより元画像を縮小し、縮小画像用として確保されたメモリ量のメモリを使用してレティネックス処理を行うことができる縮小画像のサイズを演算により求めるものである。
【００８８】
まず、元画像の縦、横のサイズをテンポラリメモリ１３ａから読み出し（Ｓ１４１）、アスペクト比（縦横比）を算出する（Ｓ１４２）。アスペクト比ａｓｐｅｃｔは、横方向の画素数を縦方向の画素数で除算した値である。
【００８９】
次に、縮小画像記憶用バッファのサイズｍｉｎ＿ｂｕｆｆを求める（Ｓ１４３）。この縮小画像記憶用バッファのサイズは、図２に示すフローチャートのＳ２の処理により確保されたメモリのうち、縮小アルゴリズムにより縮小処理を行う際に使用されるメモリなどを除いた縮小画像を記憶することができるメモリ量である。したがって、このｍｉｎ＿ｂｕｆｆの値は、仮設定された縮小アルゴリズムの種類により変化する。
【００９０】
次に、１画素について縮小画像の画素とその縮小画像の反射率とのデータサイズを求め、そのデータサイズで縮小画像記憶用バッファサイズを除算することにより、縮小画像サイズを算出する（Ｓ１４４）。詳細には、１画素の反射率Ｒのデータ量を、ｌｏｇ＿ｄａｔａ＿ｓｉｚｅ、縮小画像の１画素の画素値のデータ量をｍｉｎ＿ｓｉｚｅ、元画像のプレーン数をｐｌａｎｅ、求められる縮小画像サイズをｍｉｎ＿ｓｉｚｅとして、
【００９１】
【数６】
2008118216.tif 000008
を満たす最大値として求めることができる。
なお、プレーン数ｐｌａｎｅは、本実施形態では、ＲＧＢ値から輝度値Ｙと、色信号Ｃｂ、Ｃｒに変換して記憶するので、３である。
このｍｉｎ＿ｂｕｆｆから縮小画像の縦サイズは、次式
ｍｉｎ＿ｓｉｚｅ／（ａｓｐｅｃｔ＋１）
で求め（Ｓ１４５）、縮小画像の横サイズは、次式
ｍｉｎ＿ｓｉｚｅ×ａｓｐｅｃｔ／（ａｓｐｅｃｔ＋１）
で求める（Ｓ１４６）。
【００９２】
以上のようにして、演算により縮小画像サイズを求めることができる。この縮小画像サイズを求める他の方法としては、上記図５に示す処理の一部をテーブルを参照して行う処理方法がある。図６は、テーブルを参照して縮小画像サイズを求める処理を示すフローチャートである。
【００９３】
このテーブルを参照する処理では、まず、元画像の縦、横のサイズをテンポラリメモリ１３ａから読み出し（Ｓ１５１）、アスペクト比を算出する（Ｓ１５２）。次に、縮小画像記憶用バッファのサイズｍｉｎ＿ｂｕｆｆを求める（Ｓ１５３）。
【００９４】
次に、１画素の反射率Ｒのデータ量を、ｌｏｇ＿ｄａｔａ＿ｓｉｚｅ、縮小画像の１画素の画素値のデータ量をｍｉｎ＿ｓｉｚｅ、元画像のプレーン数をｐｌａｎｅ、１画素当たりの合計データ量をｔｏｔａｌ＿ｄａｔａ＿ｓｉｚｅとし、
ｔｏｔａｌ＿ｄａｔａ＿ｓｉｚｅを
ｌｏｇ＿ｄａｔａ＿ｓｉｚｅ＋ｐｌａｎｅ×ｍｉｎ＿ｄａｔａ＿ｓｉｚｅ
として求め（Ｓ１５４）。
縮小画像記憶用バッファに記憶することができるデータ量であるｄｉｖｉｄｅｄ＿ｍｉｎ＿ｂｕｆｆを
ｍｉｎ＿ｂｕｆｆ／ｔｏｔａｌ＿ｄａｔａ＿ｓｉｚｅ
として算出する（Ｓ１５５）。
【００９５】
次に、この算出したｄｉｖｉｄｅｄ＿ｍｉｎ＿ｂｕｆｆに基づいてテーブルを参照し、縮小画像サイズｍｉｎ＿ｂｕｆｆを読み出す（Ｓ１５６）。
【００９６】
表１は、このテーブルを示すもので、ｄｉｖｉｄｅｄ＿ｍｉｎ＿ｂｕｆｆの値に対応してｍｉｎ＿ｂｕｆｆが記憶されている。この表では、ｄｉｖｉｄｅｄ＿ｍｉｎ＿ｂｕｆｆは、キロバイトを単位とし、ｍｉｎ＿ｓｉｚｅは、画素数（ピクセル）を単位として記憶され、ｄｉｖｉｄｅｄ＿ｍｉｎ＿ｂｕｆｆの最小値を２５１とし、この値以下の場合にはレティネックス処理を行わないものとしている。
【００９７】
【表１】
2008118216.tif 000009
こうして決定されたｍｉｎ＿ｂｕｆｆから縮小画像の縦サイズは、次式
ｍｉｎ＿ｓｉｚｅ／（ａｓｐｅｃｔ＋１）
で求め（Ｓ１５７）、縮小画像の横サイズは、次式
ｍｉｎ＿ｓｉｚｅ×ａｓｐｅｃｔ／（ａｓｐｅｃｔ＋１）
で求める（Ｓ１５８）。
【００９８】
以上、図５と図６とを参照して説明したようにして、いずれかの方法で縮小画像サイズを決定することができる。
【００９９】
次に、図７に示すフローチャートに従って、縮小レティネックス処理の前処理について説明する。まず、テンポラリメモリ１３ａに記憶された縮小サイズと縮小アルゴリズムとを読み出し、元画像をその縮小アルゴリズムによりその縮小サイズの縮小画像を形成する。縮小画像を形成する処理では、まず、元画像を記憶しているＰＣ２などから、１ライン単位で読み込み、ＲＡＭ１３の画像データメモリ１３ｃ１の所定のエリアに記憶する（Ｓ５１）。デジタルカメラなどにより形成された画像データは、ＪＰＥＧなどの圧縮法により圧縮されて記憶され、長方形の画像の横方向のピクセルのライン順に記憶されている。
【０１００】
次に、画像データメモリ１３ｃ１に記憶された画像データのライン数が、縮小画像アルゴリズムメモリにより縮小することができるライン数分のデータが記憶されたか否かを判断する（Ｓ５２）。この縮小することができるライン数とは、縮小アルゴリズムが平均画素法の場合は、元画像サイズを縮小画像サイズで除した値（縮小率の逆数）であり、バイリニア法の場合は、２、最近傍法の場合は、１である。
【０１０１】
縮小できるライン数が記憶されていない場合は（Ｓ５２：Ｎｏ）、Ｓ５１の処理に戻り、縮小できるライン数が記憶された場合は（Ｓ５２：Ｙｅｓ）、その縮小アルゴリズムに従って縮小画像を形成し（Ｓ５３）、その縮小画像を画像データメモリ１３ｃ１の縮小画像記憶エリア（図示なし）に記憶する（Ｓ５４）。縮小画像を形成し、次に１ライン分の元画像を読み込んで画像データ１３ｃ１の所定のエリアに記憶する場合は、先に記憶したデータに上書きする。このことにより、元画像を記憶するエリアの記憶容量を削減することができる。
【０１０２】
次に、元画像の全てのラインについて走査を行って縮小画像を形成したか否かを判断し（Ｓ５５）、まだ、未処理のラインが残っている場合は（Ｓ５５：Ｎｏ）、Ｓ５１の処理に戻り、全ラインについて処理を終了した場合は（Ｓ５５：Ｙｅｓ）、縮小画像の各画素について輝度信号Ｙと色信号Ｃｂ，Ｃｒに変換する（Ｓ５６）。輝度信号Ｙおよび色信号Ｃｂ，Ｃｒは、元の画素のＲＧＢ値から数式３により演算される。
【０１０３】
輝度信号Ｙと色信号Ｃｂ，Ｃｒの値をそれぞれ記憶し、後の演算で使用するようにしてもよいが、記憶容量が小さい場合は、ＲＧＢ値のみを記憶し、必要に応じて演算して求めるようにしてもよい。
【０１０４】
次に、上式により演算された輝度信号Ｙについて、反射率Ｒｓ（ｘ，ｙ）を算出する。（Ｓ５７）なお、「ｓ」は、縮小画像についての接尾辞であり、元画像については、接尾辞を付さないものとする。反射率Ｒｓは、縮小画像の各画素の輝度信号ＹをＩｓ（ｘ，ｙ）、縮小画像用のフィルタをＦｓ（ｘ，ｙ）として、次式により演算される。
【０１０５】
【数７】
2008118216.tif 000010
なお、「＊」は、畳み込み演算（コンボリューション）を示し、ｌｏｇは、ｅを底とする自然対数である。
【０１０６】
次に、上記演算により求められた反射率Ｒｓ（ｘ，ｙ）をＲＡＭ１３の反射率メモリ１３ｃ２に記憶する（Ｓ５８）。
【０１０７】
次に、Ｒｓ（ｘ，ｙ）を最大値および最小値と比較する（Ｓ５９）。詳細には、元画像についての処理（図３に示すフローチャートのＳ１５の処理）と同様であるので、その説明を省略する。
【０１０８】
次に、縮小画像の全ての座標についてＳ５７〜Ｓ５９の処理を行ったか否かを判断し（Ｓ６０）、まだ、未処理の座標がある場合は（Ｓ６０：Ｎｏ）、Ｓ５７の処理に戻り、全ての座標についての処理を終了した場合は（Ｓ６０：Ｙｅｓ）、Ｓ５９の処理により求めた最大値と最小値に基づいて、反射率Ｒｓ（ｘ，ｙ）を正規化し、ヒストグラムをヒストグラムメモリ１３ｃ３に形成する（Ｓ６１）。
【０１０９】
次に、その形成されたヒストグラムからメディアン値を求め（Ｓ６２）、そのメディアン値とヒストグラムとから反射率Ｒ（ｘ，ｙ）のクリップされる範囲（クリップ範囲）を定める（Ｓ６３）。このクリップ範囲も、図３に示すフローチャートのＳ１９の処理と同様であるので、その詳細な説明を省略する。
【０１１０】
以上の処理により、元画像を縮小した縮小画像の反射率により構成される縮小レティネックス画像を形成し、その縮小レティネックス画像から、元画像の反射率を正規化する際のクリップ範囲が求められる。このことにより、クリップ範囲を求めるための演算の回数が、元画像について求める演算の回数より非常に少なくすることができ、処理速度が速くなる。また、縮小された画像のレティネックス画像を記憶するので、元画像のレティネックス画像を記憶する場合に比べ、少ない記憶容量で処理することができるという利点がある。また、縮小画像を用いて求めたクリップ範囲と、元画像を用いて求めたクリップ範囲とは、大差がない。次表は、縮小画像により求めたクリップ範囲（上限値と下限値）と元画像により求めたクリップ範囲との差異を示すものである。
【０１１１】
【表２】
2008118216.tif 000011
この表２が示すように、元画像により求めた最大値は、２．７１２、最小値は、−４．０６３であり、縮小画像により求めた最大値は、１．７２９、最小値は、−２．６０７である。よって、元画像により求めた最大値と縮小画像により求めた最大値との差は、０．９８３であり、元画像により求めた最小値と縮小画像により求めた最小値との差は、１．４５６であって、かなり大きな差が認められる。
【０１１２】
一方、元画像により求めたクリップ範囲の上限値は、０．８２５、下限値は、−０．８２２であり、縮小画像により求めた上限値は、０．７４２、下限値は、−０．７５５である。よって、元画像により求めた上限値と縮小画像により求めた上限値との差は、０．０８３であり、元画像により求めた下限値と縮小画像により求めた下限値との差は、０．０６７であって、これらの差が小さいことが分かる。
【０１１３】
次に、上記前処理により求められたクリップ範囲に基づいて行う後処理である元画像のレティネックス処理について説明する。図８は、元画像のレティネックス処理を示すフローチャートである。なお、この後処理では、元画像の各画素について処理が行われ、処理された画素値は、順次印刷部１５に出力される。
【０１１４】
まず、元画像について、反射率Ｒ（ｘ，ｙ）を算出するためにマスク処理に必要なライン数分の画像データを読み込み、輝度信号Ｙを求めて画像データメモリ１３ｃ１に記憶する（Ｓ７１）。次に、この画像データメモリ１３ｃ１に記憶した輝度信号Ｙとフィルタ計数とを用いて反射率Ｒ（ｘ，ｙ）を求める（Ｓ７２）。次に、縮小画像を用いて求めたクリップ範囲に基づいて、Ｒ（ｘ，ｙ）を正規化し、正規化反射率ｒｅｆｌｅ（ｘ，ｙ）を得る（Ｓ７３）。
【０１１５】
次に、このｒｅｆｌｅ（ｘ，ｙ）を用いて、数  により輝度についてレティネックス処理を行った画素の値Ｏｕｔ（ｘ，ｙ）を得る（Ｓ７４）。
【０１１６】
次に、このＯｕｔ（ｘ，ｙ）と、色信号Ｃｂ、Ｃｒとに基づいて、ＲＧＢ値に変換する（Ｓ７５）。この変換は、上述の数式５により算出される。
【０１１７】
以上の処理により元画像の輝度信号にレティネックス処理が施され、色信号に基づいてＲＧＢ値に戻した画素値が求められる。次に、この処理された画素値を印刷部１５に出力する（Ｓ７６）。次に、元画像の全画素について処理を完了したか否かを判断し（Ｓ７７）、まだ、処理していない画素がある場合には（Ｓ７７：Ｎｏ）、Ｓ７１の処理に戻り、全画素についいての処理を完了した場合は（Ｓ７７：Ｙｅｓ）、この後処理を終了する。
【０１１８】
以上、第１の実施形態について説明したように、確保できたメモリ量が、元画像を全てＲＡＭ１３に記憶してレティネックス処理を行うことができるメモリ量より大きい場合は、元画像を全てＲＡＭ１３に記憶してレティネックス処理を行うことができない場合は、元画像を縮小して処理を行う。縮小する場合には、まず、縮小アルゴリズムを平均画素法とした場合に、確保できたメモリ量を使用して処理できる最大の縮小画像のサイズを求め、そのサイズがレティネックス処理を行うことができる最小のサイズより大きい場合には、平均画素法により縮小して処理を行う。平均画素法により縮小して処理できない場合は、次に、縮小アルゴリズムをバイリニア法とした場合について判定し、バイリニア法で処理できる場合は、バイリニア法で縮小してレティネックス処理を行う。
【０１１９】
バイリニア法で処理できない場合は、次に、最近傍法とした場合について判定し、最近傍法で処理できる場合は、最近傍法で縮小してレティネックス処理を行い、最近傍法でも処理できない場合は、ユーザにレティネックス処理を行うことができない旨を表示する。
【０１２０】
元画像の全画素を記憶して処理する方式は、最も画質が高い処理であり、次に、元画像を縮小して処理する場合には、平均画素法で縮小する方式が、最も画質が高く、バイリニア法、最近傍法の順で、画質は、劣化する。しかしながら、画質が高いほど処理する画素の数や、演算の回数が多く、処理に時間がかかる。したがって、第１の実施形態では、画質を重視したレティネックス処理の方式が選択される。
【０１２１】
次に、第２実施形態について説明する。第２実施形態では、ユーザにより画像を印刷する場合のパラメータが設定され、その印刷パラメータにより、画質を優先する場合と、処理速度を優先する場合とを判断し、確保できたメモリ量と、画質と処理速度のいずれを優先するかとに応じてレティネックス処理を行う方式を決定する。なお、第２実施形態は、第１実施形態の回路構成と同一の回路構成を用い、処理方法のみが異なるので、異なる書処理のみについて説明する。
【０１２２】
まず、ユーザにより設定される印刷パラメータについて説明する。ここでは、印刷パラメータは、プリンタ１に接続されたＰＣ２の表示画面において設定され、Ｉ／Ｆ１７を介してプリンタ１に送信されて印刷機能用メモリ１３ａに記憶される。
【０１２３】
図９は、ＰＣ２において表示される印刷パラメータ設定画面２８である。印刷パラメータ設定画面２８には、印刷を行う記録媒体である印刷用紙を選択設定する用紙種類選択ボックス２８ａと、印刷用紙のサイズを選択設定する用紙サイズ設定ボックス２８ｂと、印刷モードを設定する印刷モード設定ボックス２８ｃと、印刷を行う部数を設定する部数設定ボックス２８ｄなどが表示される。
【０１２４】
用紙種類選択ボックス２８ａは、選択された用紙種類を表示する表示エリアと、そのエリアの右端に下方に向いた三角形が描かれたアイコンとを有し、このアイコンにマウスを操作してカーソル合わせ、クリックすると図９に示すようにプルダウンメニューが表示される。つぎに表示されたプルダウンメニューのいずれかの項目にカーソルを移動し、マウスに備えられたスイッチをクリックすると、カーソルにより指定される項目が選択される。
【０１２５】
この実施形態では、印刷用紙の種類として、普通紙、光沢紙のいずれかを選択することができ、図９に示す例では、普通紙が選択された状態を示している。
【０１２６】
同様に、用紙サイズ設定ボックス２８ｂは、選択された用紙のサイズを表示するエリアと、選択を行うためのプルダウンメニューの表示を指示するアイコンとを有し、用紙のサイズとしては、Ａ４，レター，５”×７”および４”×６”のいずれかを選択することができる。
【０１２７】
印刷モード設定ボックス２８ｃも同様に、選択された印刷モードを表示するエリアと、選択を行うためのプルダウンメニューの表示を指示するアイコンとを有し、印刷モードとして、写真モードと普通モードのいずれかを選択することができる。写真モードは、普通モードに比べ、高画質で印刷を行うモードであり、高解像度で印刷が行われる。例えば、写真モードの解像度は、１２００×１２００ｄｐｉであり、普通モードの解像度は、低解像度であって、６００×６００ｄｐｉである。なお、インクジェット方式のプリンタでは解像度に応じて液滴サイズや、使用されるインクの種類が異なるようにしてもよい。
【０１２８】
印刷部数設定ボックス２８ｄは、設定された部数を数値で表示するエリアからなり、そのエリアの右側に、数値を増加させるための上向きの三角形を表示したインクリメントアイコンと、数値を減少させるための下向きの三角形を表示したデクリメントアイコンを備え、これらのアイコンにカーソルを移動してマウスを操作することにより、印刷部数を設定することができる。
【０１２９】
この印刷パラメータ設定画面２８には、上記アイコン以外に、用紙に対する印刷の向きを設定するラジオボタンや、設定を有効にして設定画面の消去を指示するＯＫボタンや、設定を無効にして設定画面の消去を指示するキャンセルボタンや設定の説明画面の表示を指示するヘルプボタンが表示される。
【０１３０】
次に、図１０を参照してＣＰＵ１１により実行される画像処理について説明する。図１０は、画像処理のメイン処理を示すフローチャートである。このメイン処理では、処理を行う元画像のサイズと、ＲＡＭ１３において、現在の使用状況で確保できた画像処理用メモリ１３ｃの領域の大きさとから、画像処理の方式を決定し、その決定された方式で画像処理を行うことを示している。
【０１３１】
まず、ユーザにより指定された画像処理を行う元画像のサイズを読み込みＲＡＭ１３に記憶する（Ｓ８１）。この元画像のサイズは、デジタルカメラなどにより撮影された画像データのヘッダなどに、記憶されているデータである。
【０１３２】
次に、ＰＣ２により設定された印刷パラメータを印刷機能用メモリ１３ｂに記憶する（Ｓ８２）。次に、現在のプリンタ１の使用状態から、画像処理を行うための画像処理用メモリ１３ｃを確保し、確保したメモリの容量をテンポラリメモリ１３ａに記憶する（Ｓ８３）。
【０１３３】
次に、その確保できたメモリの容量に応じて、画像処理の方式を決定する。ここでは、メモリ量を、大きい方から順に、Ａ，Ｂ，Ｃ，Ｄとし、まず、確保できたメモリの容量が、Ａより大きいか否かを判断する（Ｓ８４）。
【０１３４】
このメモリ量Ａは、処理を行う元画像を記憶するとともに、元画像の全画素について求めた反射率を記憶し、レティネックス処理を行うことができるメモリ量である。よって、元画像のサイズに応じて設定される値である。メモリ量Ｂ，Ｃ，Ｄも、元画像サイズに応じて設定される値であって、それぞれの方式において、必要なメモリ量である。
【０１３５】
Ｓ８４の判断処理において、確保できたメモリの容量がメモリ量Ａより大きい場合（Ｓ８４：Ｙｅｓ）は、印刷機能用メモリ１３ｂに記憶された、印刷を行う際の印刷モードが写真モードに設定されているか否かを判断する（Ｓ８５）。
【０１３６】
印刷を行う際の印刷モードが写真モードに設定されている場合は（Ｓ８５：Ｙｅｓ）、元画像の全画素を画像処理用メモリ１３ｃ１に記憶してレティネックス処理を行う（Ｓ８６）。このＳ８６の処理は、第１実施形態の図４に示すフローチャートと同一の処理であるので、その説明を省略する。
【０１３７】
印刷を行う際の印刷モードが写真モードはなく普通モードに設定されている場合は（Ｓ８５：Ｎｏ）、元画像を縮小して画像処理用メモリ１３ｃ１に記憶してレティネックス処理の前処理を行う（Ｓ８７）。このＳ８７の前処理については、図１１および図１２に示すテーブルを参照して後述する。
【０１３８】
写真モードは、処理速度より画質を優先するモードであるので、画質を最も優先する方式で画像処理を行い、普通モードは、画質より処理速度を優先するモードであるので、画質より処理速度を優先する方式のレティネックス処理を行うのである。
【０１３９】
Ｓ８４の判断処理において、確保できたメモリの容量がメモリ量Ａより大きくない場合（Ｓ８４：Ｎｏ）は、メモリ量Ｂより大きいか否かを判断し、メモリ量Ｂより大きい場合は、前述のＳ７の処理を行い、メモリ量Ｂより大きくない場合は、メモリ量Ｃより大きいか否かを判断し、メモリ量Ｃより大きい場合は、元画像からマスク処理に必要なライン数を画元画像メモリ１３ｃ１に記憶してレティネックス処理の前処理を行う（Ｓ８８）。このＳ８８の前処理については、図１３に示すフローチャートを参照して後述する。なお、マスク処理とは、反射率を求める際にフィルタ係数Ｆ（ｘ，ｙ）と注目画素の周辺画素とで畳み込み演算を行う処理のことであり、フィルタ係数は、画像の縦方向と横方向とに所定のマスクサイズを有し、画像を順次マスクして反射率が演算により求められる。
【０１４０】
確保できたメモリの容量がメモリ量Ｃより大きくない場合は、メモリ量Ｄより大きいか否かを判断し、メモリ量Ｄより大きい場合は、元画像を縮小し、その縮小した画像のマスク処理に必要なライン数を画像処理用メモリ１３ｃ１に記憶してレティネックス処理の前処理を行う（Ｓ８９）。このＳ８９の前処理については、図１４を参照して後述する。
【０１４１】
Ｓ８７、Ｓ８８、Ｓ８９のいずれかにより前処理が行われた後、レティネックス処理の後処理を行う（Ｓ９０）。この後処理は、第１の実施形態における図８に示す処理と同一である。
【０１４２】
確保できたメモリの容量がメモリ量Ｃより大きくない場合は、レティネックス処理を行うことができない容量であるので、ガンマ補正処理を行う（Ｓ９１）。ガンマ補正処理は、画像の画素値であるＲＧＢの各値について、補正テーブルなどを参照して補正することにより、輝度やコントラストを補正する公知の方式であるので、詳細な説明は、省略する。
【０１４３】
次に、図１１および図１２を参照して、Ｓ８７の前処理について説明する。図１１および図１２は、Ｓ８７の前処理で参照されるテーブルである。この前処理は、第１の実施形態の図７に示す前処理と同一である。印刷パラメータと処理を行う元画像のサイズとに基づいて、これらのテーブルが参照され、縮小画像サイズと、縮小アルゴリズムとが決定され、前処理が行われる。
【０１４４】
図１１および図１２は、印刷モード、用紙種類、用紙サイズ、元画像のサイズに応じて縮小画像サイズと縮小アルゴリズムを設定するためのルックアップテーブルであり、図１１は、写真モード用のもの、図１２は、普通モード用のものである。これらのテーブルは、ＲＯＭ１２のＬＵＴメモリ１２ｃに記憶され、Ｓ８７の処理において参照される。
【０１４５】
図１１は、印刷モードが写真モードである場合に選択されるテーブルであって、まず、用紙の種類により分類される。この実施形態では、光沢紙と普通紙の２種類で分類しているが、これら以外に、インクジェット紙などにより分類してもよい。
【０１４６】
用紙種類の次に、用紙サイズにより分類される。用紙サイズは、用紙サイズが小さい方から順に、４”×６”、５”×７”、レター、Ａ４の４種類に分類され、さらに、各用紙サイズについて元画像サイズにより分類される。元画像のサイズとしては、６００×８００、１２００×１６００、２４００×３２００（ピクセル）の３種類に分類され、それぞれのサイズについて、縮小画像サイズと縮小アルゴリズムとが設定される。
【０１４７】
この実施形態では、縮小画像サイズは、１５０×２００、３００×４００、４５０×６００の３種類、縮小アルゴリズムは、平均画素法（ＭＥ）、バイリニア法（ＢＬ）、最近傍法（ＮＮ）の３類のいずれかが設定される。図１２は、印刷モードが普通モードである場合に選択されるテーブルであって、写真モードと同様に、用紙種類、用紙サイズ、元画像サイズにより分類され、縮小画像サイズと縮小アルゴリズムとが設定される。
【０１４８】
次に、図１３に示すフローチャートを参照してＳ８８の前処理について説明する。この前処理では、まずマスク処理に必要なライン数を元画像から１ライン単位で画像データを読み込み、輝度信号Ｙに変換して画像データメモリ１３ｃ１に記憶する（Ｓ１０１）。次に、記憶した輝度信号Ｙについて、反射率Ｒ（ｘ，ｙ）を算出する（Ｓ１０２）。これらの演算方法については、上述した通りである。
【０１４９】
次に、上記演算により求められた反射率Ｒ（ｘ，ｙ）の最大値および最小値と比較し、（Ｓ１０３）、求められた反射率が、最大値より大きい場合は、最大値を更新し、最小値より小さい場合は、最小値を更新する。
【０１５０】
次に、元画像の全てのラインについてＳ１０１〜１０３の処理を行ったか否かを判断し（Ｓ１０４）、まだ、未処理のラインがある場合は（Ｓ１０４：Ｎｏ）、Ｓ１０１の処理に戻り次の１ラインを読み込む。この時、新たに読み込まれたラインの画像データは、次のマスク処理に不要となったラインの画像データに上書きされる。従って、この前処理では、画像データメモリ１３ｃ１は、マスク処理に必要なライン数だけのメモリ量が確保されればよい。
【０１５１】
全てのラインについての処理を終了した場合は（Ｓ１０４：Ｙｅｓ）、次に、再度マスク処理に必要なライン数を読み込み（Ｓ１０５）、輝度信号について反射率Ｒ（ｘ、ｙ）を求め（Ｓ１０６）、その反射率を、Ｓ１０３の処理により求めた最大値と最小値に基づいて、正規化を行い、ヒストグラムメモリ１３ｃ３に登録する（Ｓ１０７）。このヒストグラムメモリ１３ｃ３の登録は、最大値と最小値との間の各値をとる画素値の数を集計し、ヒストグラムを形成するためのものである。
【０１５２】
次に、元画像の全てのラインについてＳ１０５〜１０７の処理を行ったか否かを判断し（Ｓ１０８）、まだ、未処理のラインがある場合は（Ｓ１０８：Ｎｏ）、Ｓ１０５の処理に戻り、全てのラインについて処理を終了した場合は（Ｓ１０８：Ｙｅｓ）、次に、ヒストグラムメモリ１３ｃ３に形成されたヒストグラムからメディアン値を求め（Ｓ１０９）、そのメディアン値とヒストグラムとから反射率Ｒ（ｘ，ｙ）のクリップ範囲を定める（Ｓ１１０）。
【０１５３】
このＳ８８の前処理によれば、マスク処理を行うことができるライン数分の輝度信号を記憶する領域があれば、レティネックス処理を行うことができる。ただし、反射率を求める演算を、前処理で２回、後処理で１回行わなければならず、時間を要する。
【０１５４】
次に、図１４に示すフローチャートを参照してＳ８９の前処理について説明する。この前処理では、元画像を最近傍法により縮小し、縮小した画像にマスク処理を行うライン数を画像データメモリ１３ｃ１に記憶して処理を行うものである。この方法によれば、少ないメモリ量で、高速に処理することができるが、画質は多少劣化する恐れがある。
【０１５５】
まず、元画像のサイズと確保できたメモリ量とから縮小率を求める（Ｓ１２１）。この縮小率を求めることにより、元画像から読み出す画素を決定することができる。すなわち元画像の画素のうち、縮小率により定められる飛び飛びの位置の画素値を読み出して、最近傍法による縮小を行い、画素値から輝度信号Ｙを算出して、輝度信号Ｙをマスク処理に必要なライン数分画像データメモリ１３ｃ１に記憶する（Ｓ１２２）。次に、記憶した輝度信号Ｙについて、反射率Ｒｓ（ｘ，ｙ）を算出する（Ｓ１２３）。これらの演算方法については、上述した通りである。
【０１５６】
次に、上記演算により求められた反射率Ｒ（ｘ，ｙ）の最大値および最小値と比較し、（Ｓ１２４）、求められた反射率が、最大値より大きい場合は、最大値を更新し、最小値より小さい場合は、最小値を更新する。
【０１５７】
次に、元画像の全てのラインについてＳ１２２〜１２４の処理を行ったか否かを判断し（Ｓ１２５）、まだ、未処理の座標がある場合は（Ｓ１２５：Ｎｏ）、Ｓ１２２の処理に戻り次の１ラインを読み込む。この時、新たに読み込まれたラインの画像データは、次のマスク処理に不要となったラインの画像データに上書きされる。従って、この前処理では、画像データメモリ１３ｃ１は、マスク処理に必要なライン数だけのメモリ量が確保されればよい。
【０１５８】
全てのラインについての処理を終了した場合は（Ｓ１２５：Ｙｅｓ）、次に、再度、縮小した画像のマスク処理に必要なライン数を読み込み（Ｓ１２６）、輝度信号Ｙについて反射率Ｒｓ（ｘ、ｙ）を求め（Ｓ１２７）、その反射率を、Ｓ１２４の処理により求めた最大値と最小値に基づいて、正規化を行い、ヒストグラムメモリ１３ｃ３に登録する（Ｓ１２８）。このヒストグラムメモリ１３ｃ３の登録は、最大値と最小値との間の各値をとる画素値の数を集計し、ヒストグラムを形成するためのものである。
【０１５９】
次に、元画像の全画素について処理を終了したかを判断し（Ｓ１２９）、まだ、処理していない画素がある場合は（Ｓ１２９：Ｎｏ）、Ｓ１２６の処理に戻り、全画素について処理を終了した場合は（Ｓ１２９：Ｙｅｓ）、Ｓ１２８の処理により形成されたヒストグラムからメディアン値を求め（Ｓ１３０）、そのメディアン値とヒストグラムとから反射率Ｒ（ｘ，ｙ）のクリップ範囲を定める（Ｓ１３１）。
【０１６０】
以上、第２の実施形態について説明したように、ユーザにより設定された印刷パラメータにより、画質を優先するか、速度を優先するかを判断し、画質を優先する場合は、画質の良い処理方式を設定し、処理速度を優先する場合は、画像処理のために確保できたメモリ量が大きい場合でも、縮小レティネックス方式などの処理速度が速い方式を設定する。
【０１６１】
なお、請求項に記載の画像記憶領域検出手段は、図２に示すフローチャートのＳ２の処理が該当し、メモリ量取得手段は、図２に示すフローチャートのＳ３の処理が該当し、方式設定手段は、図２に示すフローチャートのＳ４〜Ｓ６の処理が該当し、縮小画像形成手段は、図７に示すフローチャートのＳ５３の処理が該当し、縮小レティネックス画像形成手段は、図７に示すフローチャートのＳ５７の処理が該当し、正規化パラメータ設定手段は、図７に示すフローチャートのＳ６３の処理が該当し、補正手段は、図８に示すフローチャートの処理が該当し、縮小サイズ設定手段および縮小アルゴリズム設定手段は、図４に示すフローチャートのＳ３４、Ｓ３８、Ｓ４４の処理が該当し、複数ライン記憶処理手段は、図１３に示すフローチャートのＳ１０１およびＳ１０５の処理が該当し、縮小複数ライン記憶処理手段は、図１４に示すフローチャートのＳ１２２およびＳ１２６の処理が該当し、優先判断手段は、図１０に示すフローチャートのＳ８５の処理が該当する。
【０１６２】
以上、実施形態に基づいて本発明を説明したが、本発明は上記各実施形態に何ら限定されるものでなく、本発明の趣旨を逸脱しない範囲内で種々の改良変形が可能であることは容易に推察できるものである。
【０１６３】
例えば、上記実施形態では、色表現系はＲＧＢ形式としたが、ＲＧＢ形式以外の他の色表現系、例えば、ＣＭＹ形式などに本発明を適用してもよい。
【０１６４】
また、上記実施形態では、本発明の画像処理プログラムは、プリンタ１組み込まれたＣＰＵ１１により実行されるものとしたが、他の画像処理装置、例えばファクシミリ装置やプリンタ機能やファクシミリ機能などの複数の機能を備えた複合機に組み込まれたＣＰＵなどにより実行されるようにしてもよい。
【０１６５】
また、レティネックス処理は、ＳＳＲ（シングルスケール法）であってもＭＳＲ（マルチスケール法）であってもよい。
【０１６６】
また、上記第２の実施形態では、印刷モード、用紙種類、用紙サイズ、元画像サイズの４つのパラメータにより縮小画像サイズが決定されるものとしたが、これら４つのパラメータのうち、いずれか１つ、またはいずれか２つ、またはいずれか３つにより縮小画像サイズが決定されるようにしてもよい。
【０１６７】
また、上記実施形態の画像処理では、ＣＰＵ１１によりレティネックス処理などを行うものとしたが、ＤＳＰ（Digital  Signal  Processor）により行ってもよい。ＤＳＰを用いると、より高速に積和演算などの処理を実行することができる。
【図面の簡単な説明】
【０１６８】
【図１】本発明の実施形態の画像処理プログラムを搭載したプリンタの電気的構成を示すブロック図である。
【図２】画像処理プログラムにより実行される処理を示すフローチャートである。
【図３】元画像の全画素値を記憶して画像処理を行う処理を示すフローチャートである。
【図４】元画像を縮小して行うレティネクス処理を示すフローチャートである。
【図５】縮小画像サイズを決定する処理を示すフローチャートである。
【図６】縮小画像サイズをテーブルを参照して決定する処理を示すフローチャートである。
【図７】縮小画像処理の前処理を示すフローチャートである。
【図８】縮小画像処理の後処理を示すフローチャートである。
【図９】第２実施形態における印刷パラメータを設定するための設定画面を示す図である。
【図１０】第２実施形態における画像処理の概要を示すフローチャートである。
【図１１】第２実施形態における縮小画像サイズと縮小アルゴリズムとを設定する写真モード用テーブルである。
【図１２】第２実施形態における縮小画像サイズと縮小アルゴリズムとを設定する普通モード用テーブルである。
【図１３】第２の実施形態における元画像のマスク処理に必要なライン数分の画像データを記憶して処理を行う場合のフローチャートである。
【図１４】第２の実施形態における元画像を縮小し縮小画像のマスク処理に必要なライン数分の画像データを記憶して処理を行う場合のフローチャートである。
【図１５】正規化を行うためのクリップ範囲について説明するためのヒストグラムである。
【符号の説明】
【０１６９】
１                        プリンタ
２                        パーソナルコンピュータ
１１                      ＣＰＵ
１２                      ＲＯＭ
１２ａ                    画像処理プログラムメモリ
１３                      ＲＡＭ（記憶手段）
１３ｂ                    印刷機能用メモリ
１３ｃ                    画像処理用メモリ
１５                      印刷部（印刷手段）
１７                      インターフェース（入力手段の一つ）
１９                      外部メディアスロット（入力手段の一つ）
【図１】
2008118216.tif 000012
【図２】
2008118216.tif 000013
【図３】
2008118216.tif 000014
【図４】
2008118216.tif 000015
【図５】
2008118216.tif 000016
【図６】
2008118216.tif 000017
【図７】
2008118216.tif 000018
【図８】
2008118216.tif 000019
【図９】
2008118216.tif 000020
【図１０】
2008118216.tif 000021
【図１１】
2008118216.tif 000022
【図１２】
2008118216.tif 000023
【図１３】
2008118216.tif 000024
【図１４】
2008118216.tif 000025
【図１５】
2008118216.tif 000026