しかしながら、従来の文献に開示された処理では、元画像の全画素について、それぞれ反射率を演算して記憶し、全画素分の反射率を得た後に、その反射率を集計して正規化パラメータを決定していたから、全画素分の反射率を記憶するための膨大なメモリ容量が必要という問題点があった。また、従来の処理では、全画素分の反射率を演算してから正規化パラメータを決定し、その後、反射率を正規化して得られるレティネックス値によって画素値を補正し出力していたから、処理を開始してから画素値の出力開始までの時間が長いという問題点もあった。
本発明は、上記問題点を解決するためになされたものであり、レティネックス処理を高速且つ高精度に行うことができ、メモリ使用量を節約することができる画像処理プログラムおよび画像処理装置を提供することを目的としている。
本発明者は、上記問題点を解決するために鋭意検討した結果、元画像の反射率を演算するのに先立って、縮小画像の反射率を取得し、その縮小画像の反射率を用いて正規化パラメータを決定することを想到した。正規化パラメータを求めるために、縮小画像を用いた方が、反射率を演算すべき画素の数を低減することができるので、メモリ使用量を小さくすることができる。また、正規化パラメータを事前に決定しておくことにより、元画像について演算された反射率は、他の画素の反射率の演算終了を待たずに、正規化して直ぐに出力することができるので、画像の出力開始までの時間が短縮し、処理を高速化することができる。
このように、縮小画像から正規化パラメータを導出することにより処理を高速化する場合、縮小画像から得られる正規化パラメータと、元画像から得られる正規化パラメータの差が大きいと画質が劣化するおそれがあるため、これらの値の差は小さいことが望ましい。
本発明者は、さらに検討を重ねた結果、縮小画像用マスクにおける参照ポイントの配置と、元画像用マスクにおける参照ポイントの配置とを近似させることにより、縮小画像からでも、好適な正規化パラメータが導出できることを知見した。本発明は、以上の知見に基づいてなされたものである。
上記目的を達成するために、請求項1記載の画像処理プログラムは、画像の補正処理を行う画像処理装置により実行されるものであって、元画像を縮小した縮小画像の各画素について、縮小画像用フィルタを用いて周辺平均値を求め、その周辺平均値と縮小画像の各画素の値との比に対応した反射率を求める縮小画像反射率取得ステップと、その縮小画像反射率取得ステップにより求められた反射率に基づいてヒストグラムを形成し、そのヒストグラムからメディアン値を求め、そのメディアン値とヒストグラムとに基づいて求まる、前記メディアン値より大きい値の上限値と、前記メディアン値より小さい値の下限値とに基づくクリップ範囲を、正規化を行う際のパラメータ値として設定する正規化パラメータ設定ステップと、元画像の各画素について、元画像用フィルタを用いて周辺平均値を求め、その周辺平均値と元画像の画素値との比に対応した反射率を求める元画像反射率取得ステップと、その元画像反射率取得ステップにより取得した反射率を前記正規化パラメータ設定ステップにより設定されたパラメータ値に基づいて正規化した正規化レティネックス値を求め、その正規化レティネックス値と、元画像の画素値とに基づいて補正を行う補正ステップとを備え、縮小画像用フィルタおよび元画像用フィルタは、それぞれ周辺平均値の演算範囲に対応する所定サイズの領域を有し、且つ、その所定サイズの領域内に定められた参照ポイントと、その参照ポイントに対応付けられたフィルタ係数とを有するものであって、縮小画像用フィルタの参照ポイントの配置は、縮小画像用フィルタの所定位置を原点として設定される座標系において、関数r=f(θ)に基づいて定まるものであり、元画像用フィルタの参照ポイントの配置は、元画像用フィルタの所定位置を原点として設定される座標系において、関数r=g(θ)に基づいて定まるものであり、関数r=f(θ)と関数r=g(θ)とは同一の関数であることを特徴とする。
請求項2記載の画像処理プログラムは、画像の補正処理を行う画像処理装置により実行されるものであって、元画像を縮小した縮小画像の各画素について、縮小画像用フィルタを用いて周辺平均値を求め、その周辺平均値と縮小画像の各画素の値との比に対応した反射率を求める縮小画像反射率取得ステップと、その縮小画像反射率取得ステップにより求められた反射率に基づいてヒストグラムを形成し、そのヒストグラムからメディアン値を求め、そのメディアン値とヒストグラムとに基づいて求まる、前記メディアン値より大きい値の上限値と、前記メディアン値より小さい値の下限値とに基づくクリップ範囲を、正規化を行う際のパラメータ値として設定する正規化パラメータ設定ステップと、元画像の各画素について、元画像用フィルタを用いて周辺平均値を求め、その周辺平均値と元画像の画素値との比に対応した反射率を求める元画像反射率取得ステップと、その元画像反射率取得ステップにより取得した反射率を前記正規化パラメータ設定ステップにより設定されたパラメータ値に基づいて正規化した正規化レティネックス値を求め、その正規化レティネックス値と、元画像の画素値とに基づいて補正を行う補正ステップとを備え、縮小画像用フィルタおよび元画像用フィルタは、それぞれ周辺平均値の演算範囲に対応する所定サイズの領域を有し、且つ、その所定サイズの領域内に定められた参照ポイントと、その参照ポイントに対応付けられたフィルタ係数とを有するものであって、縮小画像用フィルタの参照ポイントの配置は、縮小画像用フィルタの所定位置を原点として設定される座標系において、関数r=f(θ)に基づいて定まるものであり、元画像用フィルタの参照ポイントの配置は、元画像用フィルタの所定位置を原点として設定される座標系において、関数r=g(θ)に基づいて定まるものであり、関数r=f(θ)と関数r=g(θ)とは、その関数に含まれる定数のみが異なる関係にあることを特徴とする。
なお、特許請求の範囲および明細書でいう、「縮小画像用フィルタの参照ポイントの配置は、縮小画像用フィルタの所定位置を原点として設定される座標系において、関数r=f(θ)に基づいて定まるものであり」、とは、仮に、縮小画像用フィルタの所定位置を原点として座標系を設定した場合に、縮小画像用フィルタの参照ポイントの配置が、関数r=f(θ)に基づいて定まり得る関係にあることを意味しており、実際に座標系を設定し、参照ポイントの配置の演算に関数r=f(θ)を用いることに限定するものではない。例えば、縮小画像用フィルタの参照ポイントの配置が予め定められており、その予め定められている配置が、関数r=f(θ)から定まり得る関係にある場合も含む。
また、「元画像用フィルタの参照ポイントの配置は、元画像用フィルタの所定位置を原点として設定される座標系において、関数r=g(θ)に基づいて定まるものであり、」も同様に、仮に、元画像用フィルタの所定位置を原点として座標系を設定した場合、元画像用フィルタの参照ポイントの配置が、関数r=g(θ)に基づいて定まり得る関係にあることを意味しており、実際に座標系を設定し、参照ポイントの配置の演算に関数r=g(θ)を用いることに限定するものではない。
請求項3記載の画像処理プログラムは、請求項2記載の画像処理プログラムにおいて、元画像用フィルタが定める領域の一辺の長さが縮小画像用フィルタが定める領域の一辺の長さのBR倍であるとき、g(θ)=BR・f(θ)の関係を満たすことを特徴とする。
請求項4記載の画像処理プログラムは、請求項3記載の画像処理プログラムにおいて、前記縮小画像用フィルタのサイズに基づいて、元画像用フィルタのサイズを決定し、元画像用フィルタを生成する元画像用フィルタ生成ステップを備える。
請求項5記載の画像処理プログラムは、請求項3記載の画像処理プログラムにおいて、前記元画像用フィルタのサイズに基づいて、縮小画像用フィルタのサイズを決定し、縮小画像用フィルタを生成する縮小画像用フィルタ生成ステップを備えることを特徴とする。
請求項6記載の画像処理プログラムは、請求項1から5のいずれかに記載の画像処理プログラムにおいて、縮小画像のサイズに対する縮小画像用フィルタのサイズの比は、元画像のサイズに対する元画像用フィルタのサイズの比と略同一であることを特徴とする。
請求項7記載の画像処理プログラムは、請求項1から6のいずれかに記載の画像処理プログラムにおいて、前記関数は、螺旋関数であることを特徴とする。
請求項8記載の画像処理プログラムは、請求項7記載の画像処理プログラムにおいて、前記螺旋関数は、対数螺旋関数であることを特徴とする。
請求項9記載の画像処理プログラムは、請求項7記載の画像処理プログラムにおいて、前記螺旋関数は、アルキメデスの渦巻き関数であることを特徴とする。
請求項10記載の画像処理プログラムは、請求項1から6のいずれかに記載の画像処理プログラムにおいて、前記関数は、正葉曲線関数であることを特徴とする。
請求項11記載の画像処理装置は、画像の補正処理を行うものであって、元画像を縮小した縮小画像の各画素について、縮小画像用フィルタを用いて周辺平均値を求め、その周辺平均値と縮小画像の各画素の値との比に対応した反射率を求める縮小画像反射率取得手段と、その縮小画像反射率取得手段により求められた反射率に基づいてヒストグラムを形成し、そのヒストグラムからメディアン値を求め、そのメディアン値とヒストグラムとに基づいて求まる、前記メディアン値より大きい値の上限値と、前記メディアン値より小さい値の下限値とに基づくクリップ範囲を、正規化を行う際のパラメータ値として設定する正規化パラメータ設定手段と、元画像の各画素について、元画像用フィルタを用いて周辺平均値を求め、その周辺平均値と元画像の画素値との比に対応した反射率を求める元画像反射率取得手段と、その元画像反射率取得手段により取得した反射率を前記正規化パラメータ設定手段により設定されたパラメータ値に基づいて正規化した正規化レティネックス値を求め、その正規化レティネックス値と、元画像の画素値とに基づいて補正を行う補正手段とを備え、縮小画像用フィルタおよび元画像用フィルタは、それぞれ周辺平均値の演算範囲に対応する所定サイズの領域を有し、且つ、その所定サイズの領域内に定められた参照ポイントと、その参照ポイントに対応付けられたフィルタ係数とを有するものであって、縮小画像用フィルタの参照ポイントの配置は、縮小画像用フィルタの所定位置を原点として設定される座標系において、関数r=f(θ)に基づいて定まるものであり、元画像用フィルタの参照ポイントの配置は、元画像用フィルタの所定位置を原点として設定される座標系において、関数r=g(θ)に基づいて定まるものであり、関数r=f(θ)と関数r=g(θ)とは同一の関数である。
請求項12記載の画像処理装置は、画像の補正処理を行うものであって、元画像を縮小した縮小画像の各画素について、縮小画像用フィルタを用いて周辺平均値を求め、その周辺平均値と縮小画像の各画素の値との比に対応した反射率を求める縮小画像反射率取得手段と、その縮小画像反射率取得手段により求められた反射率に基づいてヒストグラムを形成し、そのヒストグラムからメディアン値を求め、そのメディアン値とヒストグラムとに基づいて求まる、前記メディアン値より大きい値の上限値と、前記メディアン値より小さい値の下限値とに基づくクリップ範囲を、正規化を行う際のパラメータ値として設定する正規化パラメータ設定手段と、元画像の各画素について、元画像用フィルタを用いて周辺平均値を求め、その周辺平均値と元画像の画素値との比に対応した反射率を求める元画像反射率取得手段と、その元画像反射率取得手段により取得した反射率を前記正規化パラメータ設定手段により設定されたパラメータ値に基づいて正規化した正規化レティネックス値を求め、その正規化レティネックス値と、元画像の画素値とに基づいて補正を行う補正手段とを備え、縮小画像用フィルタおよび元画像用フィルタは、それぞれ周辺平均値の演算範囲に対応する所定サイズの領域を有し、且つ、その所定サイズの領域内に定められた参照ポイントと、その参照ポイントに対応付けられたフィルタ係数とを有するものであって、縮小画像用フィルタの参照ポイントの配置は、縮小画像用フィルタの所定位置を原点として設定される座標系において、関数r=f(θ)に基づいて定まるものであり、元画像用フィルタの参照ポイントの配置は、元画像用フィルタの所定位置を原点として設定される座標系において、関数r=g(θ)に基づいて定まるものであり、関数r=f(θ)と関数r=g(θ)とは、その関数に含まれる定数のみが異なる関係にあることを特徴とする。
請求項13記載の画像処理装置は、請求項12記載の画像処理装置において、元画像用フィルタが定める領域の一辺の長さが縮小画像用フィルタが定める領域の一辺の長さのBR倍であるとき、g(θ)=BR・f(θ)の関係を満たすことを特徴とする。
請求項14記載の画像処理装置は、請求項13記載の画像処理装置において、前記縮小画像用フィルタのサイズに基づいて、元画像用フィルタのサイズを決定し、元画像用フィルタを生成する元画像用フィルタ生成手段を備えることを特徴とする。
請求項15記載の画像処理装置は、請求項13記載の画像処理装置において、前記元画像用フィルタのサイズに基づいて、縮小画像用フィルタのサイズを決定し、縮小画像用フィルタを生成する縮小画像用フィルタ生成手段を備えることを特徴とする。
請求項16記載の画像処理装置は、請求項11から15のいずれかに記載の画像処理装置において、縮小画像のサイズに対する縮小画像用フィルタのサイズの比は、元画像のサイズに対する元画像用フィルタのサイズの比と略同一であることを特徴とする。
請求項17記載の画像処理装置は、請求項11から16のいずれかに記載の画像処理装置において、前記関数は、螺旋関数であることを特徴とする。
請求項18記載の画像処理装置は、請求項17記載の画像処理装置において、前記螺旋関数は、対数螺旋関数であることを特徴とする。
請求項19記載の画像処理装置は、請求項17記載の画像処理装置において、前記螺旋関数は、アルキメデスの渦巻き関数であることを特徴とする。
請求項20記載の画像処理装置は、請求項11から16のいずれかに記載の画像処理装置において、前記関数は、正葉曲線関数であることを特徴とする。
請求項1記載の画像処理プログラムによれば、縮小画像反射率取得ステップにより、元画像を縮小した縮小画像の各画素について、縮小画像用フィルタを用いて周辺平均値が求められ、その周辺平均値と縮小画像の各画素の値とから反射率が求められる。そして、正規化パラメータ設定ステップにより、反射率が取る値の全範囲における各値の頻度が集計され、正規化を行う際のパラメータ値が設定される。そして、元画像反射率取得ステップにより、元画像の各画素について、元画像用フィルタを用いて周辺平均値が求められ、その周辺平均値と元画像の画素値とから反射率が求められる。そして、補正ステップにより、設定されたパラメータ値に基づいて正規化した正規化レティネックス値を求められ、その正規化レティネックス値と、元画像の画素値とに基づいて補正が行われるので、正規化パラメータを求める際の演算数が少なく、処理を高速で行うことができると共に、メモリ使用量を節約できるという効果がある。
また、縮小画像用フィルタの参照ポイントの配置および元画像用フィルタの参照ポイントの配置は、同一の関数に基づいて定まるものであるので、縮小画像用フィルタにおける参照ポイントの配置と、元画像用フィルタにおける参照ポイントの配置とを近似させることができる。よって、縮小画像から得られるパラメータ値と、元画像から得られるパラメータ値とが近似したものとなり、縮小画像から得られたパラメータ値を用いた場合であっても、高精度のレティネックス処理を行うことができるという効果がある。
請求項2記載の画像処理プログラムによれば、縮小画像反射率取得ステップにより、元画像を縮小した縮小画像の各画素について、縮小画像用フィルタを用いて周辺平均値が求められ、その周辺平均値と縮小画像の各画素の値とから反射率が求められる。そして、正規化パラメータ設定ステップにより、反射率が取る値の全範囲における各値の頻度が集計され、正規化を行う際のパラメータ値が設定される。そして、元画像反射率取得ステップにより、元画像の各画素について、元画像用フィルタを用いて周辺平均値が求められ、その周辺平均値と元画像の画素値とから反射率が求められる。そして、補正ステップにより、設定されたパラメータ値に基づいて正規化した正規化レティネックス値を求められ、その正規化レティネックス値と、元画像の画素値とに基づいて補正が行われるので、正規化パラメータを求める際の演算数が少なく、レティネックス処理を高速で行うことができると共に、メモリ使用量を節約できるという効果がある。
また、縮小画像用マスクの参照ポイントの配置を定める関数r=f(θ)と、元画像用マスクの参照ポイントの配置を定める関数r=g(θ)とは、その関数に含まれる定数のみが異なる関係にあるので、縮小画像用フィルタにおける参照ポイントの配置と、元画像用フィルタにおける参照ポイントの配置とを近似させることができる。よって、縮小画像から得られるパラメータ値と、元画像から得られるパラメータ値とが近似したものとなり、縮小画像から得られたパラメータ値を用いた場合であっても、レティネックス処理を高精度に行うことができるという効果がある。
請求項3記載の画像処理プログラムによれば、請求項2記載の画像処理プログラムの奏する効果に加え、元画像用フィルタが定める領域の一辺の長さが縮小画像用フィルタの定める領域の一辺の長さのBR倍であるとき、g(θ)=BR・f(θ)の関係を満たすので、縮小画像から得られるパラメータ値と、元画像から得られるパラメータ値とがより近似したものとなり、縮小画像から得られたパラメータ値を用いた場合であっても、より高精度のレティネックス処理を行うことができるという効果がある。
請求項4記載の画像処理プログラムによれば、請求項3記載の画像処理プログラムの奏する効果に加え、縮小画像用フィルタのサイズに基づいて、元画像用フィルタのサイズが決定され、元画像用フィルタが生成されるので、予め元画像用フィルタをメモリに記憶しておく場合に比較して、メモリ使用量を節約することができるという効果がある。また、縮小画像用フィルタの適切なサイズを確保することができるという効果がある。
請求項5記載の画像処理プログラムによれば、請求項3記載の画像処理プログラムの奏する効果に加え、前記元画像用フィルタのサイズに基づいて、縮小画像用フィルタのサイズを決定し、縮小画像用フィルタを生成する縮小画像用フィルタ生成ステップを備えるので、予め縮小画像用フィルタをメモリに記憶しておく場合に比較して、メモリ使用量を節約することができるという効果がある。また、縮小画像用フィルタは元画像用フィルタよりもサイズが小さいので、生成した縮小画像用フィルタを格納するために確保しておくべきメモリ量も小さくて良いという効果がある。
請求項6記載の画像処理プログラムによれば、請求項1から5のいずれかに記載の画像処理プログラムの奏する効果に加え、縮小画像のサイズに対する縮小画像用フィルタのサイズの比は、元画像のサイズに対する元画像用フィルタのサイズの比と略同一であるので、縮小画像の反射率を用いた場合でも好適なパラメータを得ることができ、レティネックス処理を高精度に行うことができるという効果がある。
請求項7から10に記載の画像処理プログラムによれば、請求項1から6のいずれかに記載の画像処理プログラムの奏する効果に加え、参照ポイントが曲線状の軌跡を有する関数に基づいて配置されるので、直線を有する画像において疑似輪郭の発生を抑制することができ、画質の劣化を抑制することができるという効果がある。すなわち、参照ポイントが直線状に配置されていると、画像に同じような直線が存在する場合に、疑似輪郭が発生し、レティネックス処理を行った結果、画質不良が発生するおそれがあるのである。画像が有する曲線が、関数で表される曲線状の軌跡とほぼ一致する場合も考えられるが、曲線状で疑似輪郭が発生しても、直線状に発生する場合に比べ、画質の劣化が目立たないという特性があるのである。
請求項11記載の画像処理装置によれば、縮小画像反射率取得手段により、元画像を縮小した縮小画像の各画素について、縮小画像用フィルタを用いて周辺平均値が求められ、その周辺平均値と縮小画像の各画素の値とから反射率が求められる。そして、正規化パラメータ設定手段により、反射率が取る値の全範囲における各値の頻度が集計され、正規化を行う際のパラメータ値が設定される。そして、元画像反射率取得手段により、元画像の各画素について、元画像用フィルタを用いて周辺平均値が求められ、その周辺平均値と元画像の画素値とから反射率が求められる。そして、補正手段により、設定されたパラメータ値に基づいて正規化した正規化レティネックス値を求められ、その正規化レティネックス値と、元画像の画素値とに基づいて補正が行われるので、正規化パラメータを求める際の演算数が少なく、レティネックス処理を高速で行うことができると共に、メモリ使用量を節約できるという効果がある。
また、縮小画像用フィルタの参照ポイントの配置および元画像用フィルタの参照ポイントの配置は、同一の関数に基づいて定まるものであるので、縮小画像用フィルタにおける参照ポイントの配置と、元画像用フィルタにおける参照ポイントの配置とを近似させることができる。よって、縮小画像から得られるパラメータ値と、元画像から得られるパラメータ値とが近似したものとなり、縮小画像から得られたパラメータ値を用いた場合であっても、高精度のレティネックス処理を行うことができるという効果がある。
請求項12記載の画像処理装置によれば、縮小画像反射率取得手段により、元画像を縮小した縮小画像の各画素について、縮小画像用フィルタを用いて周辺平均値が求められ、その周辺平均値と縮小画像の各画素の値とから反射率が求められる。そして、正規化パラメータ設定手段により、反射率が取る値の全範囲における各値の頻度が集計され、正規化を行う際のパラメータ値が設定される。そして、元画像反射率取得手段により、元画像の各画素について、元画像用フィルタを用いて周辺平均値が求められ、その周辺平均値と元画像の画素値とから反射率が求められる。そして、補正手段により、設定されたパラメータ値に基づいて正規化した正規化レティネックス値を求められ、その正規化レティネックス値と、元画像の画素値とに基づいて補正が行われるので、正規化パラメータを求める際の演算数が少なく、レティネックス処理を高速で行うことができると共に、メモリ使用量を節約できるという効果がある。
また、縮小画像用マスクの参照ポイントの配置を定める関数r=f(θ)と、元画像用マスクの参照ポイントの配置を定める関数r=g(θ)とは、その関数に含まれる定数のみが異なる関係にあるので、縮小画像用フィルタにおける参照ポイントの配置と、元画像用フィルタにおける参照ポイントの配置とを近似させることができる。よって、縮小画像から得られるパラメータ値と、元画像から得られるパラメータ値とが近似したものとなり、縮小画像から得られたパラメータ値を用いた場合であっても、レティネックス処理を高精度に行うことができるという効果がある。
請求項13記載の画像処理装置によれば、請求項12記載の画像処理装置の奏する効果に加え、元画像用フィルタが定める領域の一辺の長さが縮小画像用フィルタが定める領域の一辺の長さのBR倍であるとき、g(θ)=BR・f(θ)の関係を満たすので、縮小画像から得られるパラメータ値と、元画像から得られるパラメータ値とがより近似したものとなり、縮小画像から得られたパラメータ値を用いた場合であっても、より高精度のレティネックス処理を行うことができるという効果がある。
請求項14記載の画像処理装置によれば、請求項13記載の画像処理装置の奏する効果に加え、縮小画像用フィルタのサイズに基づいて、元画像用フィルタのサイズが決定され、元画像用フィルタが生成されるので、予め元画像用フィルタをメモリに記憶しておく場合に比較して、メモリ使用量を節約することができるという効果がある。また、縮小画像用フィルタの適切なサイズを確保することができるという効果がある。
請求項15記載の画像処理装置によれば、請求項13記載の画像処理装置の奏する効果に加え、前記元画像用フィルタのサイズに基づいて、縮小画像用フィルタのサイズを決定し、縮小画像用フィルタを生成する縮小画像用フィルタ生成手段を備えるので、予め縮小画像用フィルタをメモリに記憶しておく場合に比較して、メモリ使用量を節約することができるという効果がある。また、縮小画像用フィルタは元画像用フィルタよりもサイズが小さいので、生成した縮小画像用フィルタを格納するために確保しておくべきメモリ量も小さくて良いという効果がある。
請求項16記載の画像処理装置によれば、請求項11から15のいずれかに記載の画像処理装置の奏する効果に加え、縮小画像のサイズに対する縮小画像用フィルタのサイズの比は、元画像のサイズに対する元画像用フィルタのサイズの比と略同一であるので、縮小画像の反射率を用いた場合でも好適なパラメータを得ることができ、レティネックス処理を高精度に行うことができるという効果がある。
請求項17から20に記載の画像処理装置によれば、請求項11から16のいずれかに記載の画像処理装置の奏する効果に加え、参照ポイントが曲線状の軌跡を有する関数に基づいて配置されるので、直線を有する画像において疑似輪郭の発生を抑制することができ、画質の劣化を抑制することができるという効果がある。すなわち、参照ポイントが直線状に配置されていると、画像に同じような直線が存在する場合に、疑似輪郭が発生し、レティネックス処理を行った結果、画質不良が発生するおそれがあるのである。画像が有する曲線が、関数で表される曲線状の軌跡とほぼ一致する場合も考えられるが、曲線状で疑似輪郭が発生しても、直線状に発生する場合に比べ、画質の劣化が目立たないという特性があるのである。
以下、本発明の好ましい実施形態について添付図面を参照して説明する。図1は、本実施形態の画像処理を行う機能を有するプリンタ1の電気的な構成を示したブロック図である。本実施形態においては、プリンタ1に搭載された画像処理プログラムは、パーソナルコンピュータ(以下「PC」と称する)2や、デジタルカメラ21や、外部メディア20から入力された画像データ(元画像データ)に対しレティネックス処理(Retinex処理)などを実行して、画像データの逆光画像部分などの低画質領域の補正を実行するように構成されている。
図1に示すように、プリンタ1には、CPU11、ROM12、RAM13、印刷ヘッドなどから構成され、印刷媒体(例えば、紙媒体など)への印刷(出力)を行う印刷部15、出力画像サイズなどの入力値をユーザが入力可能なユーザ操作部(例えば、テンキーなど)を有する操作パネル16とを備えている。
また、プリンタ1は、ケーブル5を介してPC2と接続可能なインターフェイス(以下「I/F」と称する)17と、ケーブル6を介してデジタルカメラ21と接続可能なI/F18と、外部メディア20(例えば、SDメモリカード、メモリスティックなどのフラッシュメモリにより構成される)を着脱自在に装着可能な外部メディアスロット19とを備えている。これらのI/F17、18により行われる通信方法としてUSB(Universal Serial Bus)が使用される。
よって、プリンタ1は、PC2に記憶されている画像データをケーブル5及びI/F17を介して入力することが可能であると共に、デジタルカメラ21によって撮影された画像データをケーブル6及びI/F18を介して入力することが可能である。さらに、外部メディアスロット19に装着された外部メディア20から、その外部メディア20に記憶されている画像データを入力することが可能である。
CPU11は、プリンタ1全体を制御する演算処理装置である。ROM12は、CPU11により実行される各種制御プログラムやそのプログラムを実行する際に用いられる固定値などを記憶するものであり、レティネックス処理などの画像の処理を行う画像処理プログラムを記憶する画像処理プログラムメモリ12aや、印刷を行うための印刷制御プログラムを記憶する印刷制御プログラムメモリ12b、ルックアップテーブルメモリ(LUTメモリ)12c等が備えられている。
RAM13は、制御プログラムがCPU11により実行される際に必要な各種レジスタ群などが記憶されるワーキングエリアや、処理中のデータを一時的に格納するテンポラリエリア等を有しランダムにアクセスできる書き換え可能なメモリであり、元画像データを記憶する元画像メモリ13aと、元画像を縮小し、縮小した画像のレティネックス処理において求められる反射率を記憶する縮小レティネックス画像メモリ13bと、ヒストグラム処理において各画素値の頻度が記憶されるヒストグラムメモリ13cと、元画像のサイズを記憶する元画像サイズメモリ13dと、使用者などにより設定される印刷を行う際の印刷パラメータを記憶する印刷パラメータメモリ13eと、印刷パラメータなどに基づいて決定される縮小画像サイズと縮小アルゴリズムがそれぞれ記憶される縮小画像サイズメモリ13fと、縮小アルゴリズムメモリ13gと、周辺平均輝度を求める際に用いられるマスク(フィルタ)を記憶するマスクメモリ13h等を備えている。
元画像データメモリ13aは、PC2、デジタルカメラ21、及び外部メディア20から、それぞれ、I/F17、I/F18、及び外部メディアスロット19を介して入力した画像データを記憶するものである。元画像データを1ライン単位で記憶し、縮小画像を形成することができるライン数のデータを読み込むと、縮小画像を形成する。縮小アルゴリズムが、最近傍法である場合には、1ラインのデータを記憶し、バイリニア法である場合には、2ライン、バイキュービック法である場合には、3ライン、平均画素法の場合は、縮小率に応じたライン数の元画像データが記憶される。なお、本実施形態では、元画像データ及び出力画像データはいずれも、RGB値から構成され、これらの各RGB値は、8ビット(1バイト)のデータサイズにより表され、10進数では、「0」〜「255」の範囲の値をとる。
RGB値は、光の3原色である赤を表すR値と、緑を表すG値と、青を示すB値とを構成成分とする値である。光の3原色の混色により各種の色は生成されるので、元画像の各画素の色は、R値とG値とB値との組合せ(RGB値)により1の色(色相や階調など)が示される。このRGB値の値が大きいほど、輝度(明度)は高くなる。
縮小レティネックス画像メモリ13bは、元画像を縮小し、その縮小した画像の輝度信号のみについてレティネックス処理において求められる反射率Rs(x,y)を記憶するメモリである。元画像を縮小する方法としては、縮小する画像の画素に対応する元画像の位置に最も近い画素の値をサンプリングし、そのサンプリングした画素の値をそのまま用いる最近傍(Nearest Neighbor)法や、縮小する画像の画素に対応する元画像の位置の周囲の画素を用いて補間演算を行うバイリニア法、バイキュービック法や、平均画素法などが知られている。画質より処理速度を優先する場合は、最近傍法が用いられ、処理速度より画質を優先する場合は、バイキュービック法や、平均画素法が用いられる。
これらいずれかの方法により元画像が縮小され、その縮小された画像の各画素(ピクセル)について反射率が上述の数式1を用いて演算され、この縮小レティネックス画像メモリ13bに記憶される。
ヒストグラムメモリ13cは、縮小画像の各画素の反射率Rs(x,y)の頻度を集計してヒストグラムを形成するためのメモリである。ヒストグラムが作成されると、そのヒストグラムに基づいて、正規化を行うためのパラメータである上限値および下限値(クリップ範囲)が定められる。
元画像サイズメモリ13dは、元画像のサイズを記憶するもので、元画像データをPC2などから読み込む際に、元画像データに付随して読み込まれ、この元画像サイズメモリ13dに記憶される。縮小画像のサイズおよび縮小アルゴリズムを決定する際には、この元画像サイズメモリ13dに記憶された元画像サイズが参照される。
印刷パラメータメモリ13eは、印刷を行う際の印刷モードを高画質の写真モードとするか、普通画質の普通モードとするか、また、記録媒体の種類を光沢紙、インクジェット紙、普通紙のいずれにするか、また、記録媒体のサイズをA4,B5、レターなどのいずれにするかなどを使用者が設定し、その設定されたパラメータを記憶する。印刷モードが選択されると、選択された印刷モードに設定された印刷の解像度や液滴サイズなどがパラメータとして記憶され、印刷が実行される際には、これらのパラメータに従って印刷が行われる。
これらの印刷パラメータや、元画像のサイズに基づいて、縮小画像のサイズと縮小するアルゴリズムが決定され、縮小画像サイズメモリ13fと縮小アルゴリズメモリ13gにそれぞれ記憶される。主として、処理速度より画質が優先される場合は、縮小画像サイズとして大きいサイズが設定され、画質より処理速度が優先される場合は、縮小画像サイズとして小さいサイズが設定される。縮小アルゴリズムとしては、上記、最近傍法、バイリニア法、平均画素法などの中から選択される。
これらの印刷パラメータは、PC2において使用者により設定され、プリンタ1に入力されるとともに、操作パネル16に備えられる操作子によっても設定することができる。
マスクメモリ13hは、各画素の周辺平均輝度を求める際に用いられるマスク(フィルタ)を記憶するメモリである。
操作パネル16には、印刷パラメータなどを表示するLCDと、印刷パラメータや画像処理に関するパラメータを設定したり、画像処理や印刷処理の実行を指示する各種操作子が備えられている。
次に、図2を参照してプリンタ1に接続されたPC2おいて設定される種々の印刷パラメータについて説明する。図2は、PC2において、印刷パラメータの設定を選択した際に表示器に表示される印刷パラメータ設定画面28である。
印刷パラメータ設定画面28には、印刷を行う記録媒体である印刷用紙を選択設定する用紙種類選択ボックス28aと、印刷用紙のサイズを選択設定する用紙サイズ設定ボックス28bと、印刷モードを設定する印刷モード設定ボックス28cと、印刷を行う部数を設定する部数設定ボックス28dなどが表示される。
用紙種類選択ボックス28aは、選択された用紙種類を表示する表示エリアと、そのエリアの右端に下方に向いた三角形が描かれたアイコンとを有し、このアイコンにマウスを操作してカーソル合わせ、クリックすると図2に示すようにプルダウンメニューが表示される。つぎに表示されたプルダウンメニューのいずれかの項目にカーソルを移動し、マウスに備えられたスイッチをクリックすると、カーソルにより指定される項目が選択される。
この実施形態では、印刷用紙の種類として、普通紙、光沢紙のいずれかを選択することができ、図2に示す例では、普通紙が選択された状態を示している。
同様に、用紙サイズ設定ボックス28bは、選択された用紙のサイズを表示するエリアと、選択を行うためのプルダウンメニューの表示を指示するアイコンとを有し、用紙のサイズとしては、A4,レター,5”×7”および4”×6”のいずれかを選択することができる。
印刷モード設定ボックス28cも同様に、選択された印刷モードを表示するエリアと、選択を行うためのプルダウンメニューの表示を指示するアイコンとを有し、印刷モードとして、写真モードと普通モードのいずれかを選択することができる。写真モードは、普通モードに比べ、高画質で印刷を行うモードであり、高解像度で印刷が行われる。例えば、写真モードの解像度は、1200×1200dpiであり、普通モードの解像度は、低解像度であって、600×600dpiである。なお、インクジェット方式のプリンタでは解像度に応じて液滴サイズや、使用されるインクの種類が異なるようにしてもよい。
印刷部数設定ボックス28dは、設定された部数を数値で表示するエリアからなり、そのエリアの右側に、数値を増加させるための上向きの三角形を表示したインクリメントアイコンと、数値を減少させるための下向きの三角形を表示したデクリメントアイコンを備え、これらのアイコンにカーソルを移動してマウスを操作することにより、印刷部数を設定することができる。
この印刷パラメータ設定画面28には、上記アイコン以外に、用紙に対する印刷の向きを設定するラジオボタンや、設定を有効にして設定画面の消去を指示するOKボタンや、設定を無効にして設定画面の消去を指示するキャンセルボタンや設定の説明画面の表示を指示するヘルプボタンが表示される。
このようにしてPC2によって設定された印刷パラメータは、ケーブル5およびI/F17を介してプリンタ1に入力され、印刷パラメータメモリ13eに記憶される。
次に、図3および図4を参照してCPU11により実行される画像処理について説明する。図3および図4は、画像処理を示すフローチャートである。図3に示す処理は、前処理と呼ばれる処理であり、この処理では、元画像を縮小し、縮小した画像に基づいて反射率Rの正規化を行うためのクリップ範囲が設定される。
この前処理では、まず、元画像データに付随している元画像のサイズを示すデータを元画像サイズメモリ13dに記憶する(S1)。この画像のサイズを示すデータは、通常長方形の画像を構成する縦と横のピクセル数により表される値である。
次に、印刷パラメータメモリ13eに記憶された印刷パラメータの中から縮小画像サイズと縮小アルゴリズムを設定する際に必要なパラメータを読み出す(S2)。この、実施形態では、印刷パラメータのうち、印刷モード、用紙種類、用紙サイズが必要なパラメータである。
次に、これらのパラメータなどに基づいて縮小画像サイズと縮小アルゴリズムを決定し、決定した縮小画像サイズを縮小画像サイズメモリ13f、縮小アルゴリズムを13gにそれぞれ記憶する(S3)。この処理については、図5〜7を参照して後述する。
次に、縮小画像用マスクFsと元画像用マスクFを生成する(S4)。このマスク生成処理の詳細は、図8および図9を参照して後述する。
次に、縮小画像を形成する。縮小画像を形成する処理では、まず、元画像を記憶しているPC2などから、1ライン単位で読み込み、RAM13の元画像メモリ13aに記憶する(S6)。デジタルカメラなどにより形成された画像データは、JPEGなどの圧縮法により圧縮されて記憶され、長方形の画像の横方向のピクセルのライン順に記憶されている。
次に、元画像メモリ13aに記憶された画像データのライン数が、縮小画像アルゴリズムメモリ13gに記憶された縮小アルゴリズムにより縮小することができるライン数のデータが記憶されたか否かを判断し(S7)、縮小できるライン数が記憶されていない場合は(S7:No)、S4の処理に戻り、縮小できるライン数が記憶されている場合は(S7:Yes)、その縮小アルゴリズムに従って縮小画像データを形成し(S8)、その縮小画像をRAMに記憶する(S9)。縮小画像データをRAMに記憶し、次に1ライン分の元画像を読み込んで元画像メモリ13aに記憶する場合は、先に記憶したデータに上書きする。このことにより、元画像メモリ13aの記憶容量を削減することができる。
次に、元画像の全てのラインについて走査を行って縮小画像を形成したか否かを判断し(S10)、まだ、未処理のラインが残っている場合は(S10:No)、S4の処理に戻り、全ラインについて処理を終了した場合は(S10:Yes)、縮小画像の各画素について輝度信号Yと色信号Cb,Crに変換する(S11)。
輝度信号Yおよび色信号Cb,Crは、元の画素のRGB値から次式により演算される。
輝度信号Yと色信号Cb,Crの値をそれぞれ記憶し、後の演算で使用するようにしてもよいが、記憶容量が小さい場合は、RGB値のみを記憶し、必要に応じて演算して求めるようにしてもよい。
次に、上式により演算された輝度信号Yについて、反射率Rs(x,y)を算出する。(S12)なお、「s」は、縮小画像についての接尾辞であり、元画像については、接尾辞を付さないものとする。反射率Rsは、縮小画像の各画素の輝度値をIs(x,y)、縮小画像用のフィルタをFs(x,y)として、次式により演算される。
なお、「*」は、畳み込み演算(コンボリューション)を示し、この畳み込み演算により周辺平均輝度(周辺平均値)が求められる。なお、logは、eを底とする自然対数である。
次に、上記演算により求められた反射率Rs(x,y)をRAM13の縮小レティネックス画像メモリ13bに記憶する(S13)。
次に、Rs(x,y)を最大値および最小値と比較する(S14)。詳細には、最初の座標について求めた反射率Rs(x,y)を最大値および最小値とし、そのつぎから求めた反射率Rs(x,y)と最大値および最小値とをそれぞれ比較し、今回求めた反射率Rs(x,y)が、最大値より大きい場合は、今回求めた反射率Rs(x,y)を新たな最大値とし、今回求めた反射率Rs(x,y)が、最小値より小さい場合は、今回求めた反射率Rs(x,y)を新たな最小値とし、今回求めた反射率Rs(x,y)が、最大値より小さく、最小値より大きい場合は、最大値、最小値を変更しないという処理である。
次に、縮小画像の全ての座標についてS12〜S14の処理を行ったか否かを判断し(S15)、まだ、未処理の座標がある場合は(S15:No)、S12の処理に戻り、全ての座標についての処理を終了した場合は(S15:Yes)、S14の処理により求めた最大値と最小値に基づいて、反射率Rs(x,y)を正規化し、ヒストグラムを形成する(S16)。
次に、その形成されたヒストグラムからメディアン値を求め(S17)、そのメディアン値とヒストグラムとから反射率Rs(x,y)のクリップされる範囲(クリップ範囲)を定める(S18)。このクリップ範囲は、例えば、メディアン値より大きい値で、全標本の45%の標本が含まれる上限値をクリップ範囲の上限値とし、メディアン値より小さい値で、全標本の45%が含まれる下限値をクリップ範囲の下限値とするものである。
以上の前処理により、元画像を縮小した縮小画像の反射率により構成される縮小レティネックス画像を形成し、その縮小レティネックス画像から、元画像の反射率を正規化する際のクリップ範囲が求められる。このことにより、クリップ範囲を求めるための演算の回数が、元画像について求める演算の回数より非常に少なくすることができ、処理速度が速くなる。また、縮小された画像のレティネックス画像を記憶するので、元画像のレティネックス画像を記憶する場合に比べ、少ない記憶容量で処理することができるという利点がある。また、縮小画像を用いて求めたクリップ範囲と、元画像を用いて求めたクリップ範囲とは、大差がない。次表は、縮小画像により求めたクリップ範囲(上限値と下限値)と元画像により求めたクリップ範囲との差異を示すものである。
この表が示すように、元画像により求めた最大値は、2.712、最小値は、−4.063であり、縮小画像により求めた最大値は、1.729、最小値は、−2.607である。よって、元画像により求めた最大値と縮小画像により求めた最大値との差は、0.983であり、元画像により求めた最小値と縮小画像により求めた最小値との差は、1.456であって、かなり大きな差が認められる。
一方、元画像により求めたクリップ範囲の上限値は、0.825、下限値は、−0.822であり、縮小画像により求めた上限値は、0.742、下限値は、−0.755である。よって、元画像により求めた上限値と縮小画像により求めた上限値との差は、0.083であり、元画像により求めた下限値と縮小画像により求めた下限値との差は、0.067であって、これらの差が小さいことが分かる。
次に、図3に示す処理により求められたクリップ範囲に基づいて行う後処理である元画像のレティネックス処理について説明する。図4は、元画像のレティネックス処理を示すフローチャートである。なお、この後処理では、元画像の各画素について処理が行われ、処理された画素値は、順次印刷部15に出力される。
まず、元画像について、反射率R(x,y)を数式1を用いて算出する(S21)。この演算において、フィルタF(x,y)は、マスクメモリ13hに記憶された元画像用のマスクである。
次に、縮小画像を用いて求めたクリップ範囲に基づいて、R(x,y)を正規化し、正規化反射率refle(x,y)を得る(S22)。
次に、このrefle(x,y)を用いて、次式により輝度についてレティネックス処理を行った画素の値Out(x,y)を得る(S23)。なお、数5の項のうち、I(x,y)/refle(x,y)が正規化レティネックス値に相当する。
次に、このOut(x,y)と、色信号Cb、Crとに基づいて、RGB値に変換する(S24)。この変換は、次式により算出される。
以上の処理により元画像の輝度信号にレティネックス処理が施され、色信号に基づいてRGB値に戻した画素値が求められる。次に、この処理された画素値を印刷部15に出力する(S25)。よって、前処理により、正規化を行うクリップ範囲が特定されているので、後処理では、順次各画素について処理を行い印刷部15に出力することができる。その結果、処理を開始してから、印刷が開始されるまでの時間を短縮することができる。
次に、元画像の全画素について処理を終了したか否かを判断し(S26)、まだ処理を終了していない画素がある場合は(S26:No)、S21の処理に戻り、全ての画素について処理を終了した場合は(S26:Yes)、この後処理を終了する。
次に、図5、図6および図7を参照して、S3の処理である縮小画像サイズと縮小アルゴリズムを決定する処理について説明する。元画像を縮小し、その縮小画像を用いてクリップ範囲を決定し、そのクリップ範囲に基づいて元画像の各画素について補正処理を行うので、クリップ範囲を速く決定することができるとともに、少ない記憶容量で処理することができる。しかしながら、縮小画像のサイズが小さい場合や、縮小された画像の画質の劣化が大きい場合には、適切なクリップ範囲を設定できない場合がある。また、縮小画像サイズを必要以上に大きくしたり、縮小画像の画質を必要以上に高くすれば、処理時間が長くかかり、処理速度が低下する。従って、使用者が設定する印刷パラメータなどに応じた適切な縮小画像のサイズや縮小アルゴリズムを選択する必要がある。
図5および図6は、印刷モード、用紙種類、用紙サイズ、元画像のサイズに応じて縮小画像サイズと縮小アルゴリズムを設定するためのルックアップテーブルであり、図5は、写真モード用のもの、図6は、普通モード用のものである。これらのテーブルは、ROM12のテーブルメモリ12cに記憶され、図7に示すフローチャートの処理において参照される。
図5は、印刷モードが写真モードである場合に選択されるテーブルであって、まず、用紙の種類により分類される。この実施形態では、光沢紙と普通紙の2種類で分類しているが、これら以外に、インクジェット紙などにより分類してもよい。
用紙種類の次に、用紙サイズにより分類される。用紙サイズは、用紙サイズが小さい方から順に、4”×6”、5”×7”、レター、A4の4種類に分類され、さらに、各用紙サイズについて元画像サイズにより分類される。元画像のサイズとしては、600×800、1200×1600、2400×3200(ピクセル)の3種類に分類され、それぞれのサイズについて、縮小画像サイズと縮小アルゴリズムとが設定される。
この実施形態では、縮小画像サイズは、150×200、300×400、450×600の3種類、縮小アルゴリズムは、平均画素法(ME)、バイリニア法(BL)、最近傍法(NN)の3類のいずれかが設定される。図6は、印刷モードが普通モードである場合に選択されるテーブルであって、写真モードと同様に、用紙種類、用紙サイズ、元画像サイズにより分類され、縮小画像サイズと縮小アルゴリズムとが設定される。
図7は、図3に示すフローチャートのS3の処理の詳細を示すフローチャートである。この処理では、まず印刷パラメータとして選択された印刷モードが写真モードであるか普通モードであるかを判定する(S31)。印刷モードが、写真モードである場合は、写真モード用のテーブルを選択し(S32)、印刷モードが、普通モードである場合は、写真モード用のテーブルを選択し(S33)、印刷パラメータとして設定されている用紙種類、用紙サイズ、および元画像サイズメモリ13dに記憶されている元画像サイズとから、設定されている縮小画像サイズと縮小アルゴリズムとを読み出し、縮小画像サイズメモリ13fと縮小アルゴリズムメモリ13gとにそれぞれ記憶する(S34)。
次に、図8を参照して、マスク生成処理(S4)にて生成される縮小画像用マスクFsおよび元画像用マスクFについて、それぞれ説明する。マスクは、周辺平均輝度を算出するための所定領域を有するフィルタであって、その所定領域で定められる範囲内の画素の輝度とフィルタ係数との畳み込み演算により、周辺平均輝度が算出される。しかしながら、所定領域内の全ての要素についてフィルタ係数を有し、畳み込み演算を行うと計算量が膨大になる。そこでフィルタ係数を間引くことにより、計算量を削減することが行われている。
図8(a)は、縮小画像用マスクFsが、領域内のいずれの要素にフィルタ係数を有するのかを示す模式図である。なお、図8では、フィルタ係数が存在する要素(以下、参照ポイントと称する)をグレイ色で示し、フィルタ係数が存在しない要素(以下、間引きポイントと称する)を白色で示す。各参照ポイントには、フィルタ係数が対応付けられている。
図8(a)に縮小画像用マスクFsは、縦方向の要素数が5、横方向の要素数が5であって、合計の要素数が25である。そのうち、9の要素が、フィルタ係数が対応付けられた参照ポイントであり、16の要素が、フィルタ係数が存在しない間引きポイントである。この縮小画像用マスクFsによれば、1つの周辺平均輝度を演算する際に、縮小画像の5画素×5画素の領域を覆うことができる。そして、参照ポイントに対応する9個の画素の輝度は畳み込み演算により、周辺平均輝度に値が反映されると共に、間引きポイントに対応する16個の画素の輝度は間引かれ、その輝度が周辺平均輝度に反映されない。¥すなわち、周辺画像用マスクFsによれば、残りの16個の画素の輝度は間引いて、周辺平均輝度を演算することができる。
図8(a)向かって右側の図は、縮小画像用マスクFsにおける参照ポイントの配置の決定条件を説明する図である。これに示すように、仮に、縮小画像用マスクFsの中央を原点Oとして極座標を設定し、縮小画像用マスクFsの各位置を動径rと偏角θ(偏角θは変数)とで表すと、関数r=f(θ)で表される軌跡に基づいて、縮小画像用マスクFsの参照ポイントの配置を定めることができる。なお、図8(a)に示す関数r=f(θ)は、原点Oを中心とした半径rが2の円であるから、動径rは偏角θの値に拘わらず常に「2」であって、関数2=f(θ)で表されるものである。
図8(b)は、元画像用マスクFが、領域内のいずれの要素にフィルタ係数を有するかを示す模式図である。図8(b)に示すように、元画像マスクFは、縦方向の要素数が15、横方向の要素数が15であって、合計の要素数が225である。すなわち、図8(a)に示す縮小画像用マスクFsの3倍のサイズを有する。図8(a)に示す縮小画像用マスクFsと、図8(b)に示す元画像用マスクFとは、縮小画像に対し、元画像が3倍のサイズを有する場合に用いられる。換言すれば、縮小画像のサイズに対する縮小画像用マスクFsのサイズの比が、元画像のサイズに対する元画像用マスクFのサイズの比と略同一となるように、縮小画像用マスクFsおよび元画像用マスクFのサイズが決定される。
このようにすれば、縮小画像用マスクFsと元画像用マスクFとで、周辺平均輝度を演算する際の演算領域が一致する。すなわち、画像全体に対し、一回の畳み込み演算でマスクによりカバーされる領域が一致するので、縮小画像から得られる周辺平均輝度の分布と、元画像から得られる周辺平均輝度の分布とが近似する。よって、縮小画像から得られる反射率の分布と、元画像から得られる反射率の分布とが近似し、縮小画像からでも好適な正規化パラメータを得ることができる。なお、ここでいう「元画像のサイズ」、または「縮小画像のサイズ」は、本実施例では横方向の画素数×縦方向の画素数で表記するものとする。また、「元画像用マスクのサイズ」または「縮小画像用マスクのサイズ」は、周辺平均輝度を演算する際の演算領域の大きさであり、本実施例では、演算領域に含まれる横方向の画素数×縦方向の画素数で、各マスクのサイズを表記する。なお、マスクの形状は矩形には限られず、円など、矩形以外の形状であっても良いが、その場合、そのマスクを内接する矩形領域の大きさを、マスクのサイズと称することとする。
図8(b)の向かって右側に示す図は、元画像用マスクFsにおける参照ポイントの配置の決定条件を説明する図である。図8(b)に示すように、元画像用マスクFの参照ポイントの配置は、縮小画像用マスクFsの参照ポイントの配置と同様に、仮に、元画像用マスクFの中央を原点Oとして極座標を設定した場合、関数r=g(θ)(rは動径であり、θは偏角である)で表される軌跡に基づいて定められ得る。なお、図8(b)に示す関数r=g(θ)は、原点Oを中心とした半径rが6の円であるから、関数6=g(θ)で表される。すなわち、縮小画像用マスクFsにおける参照ポイントの配置を決定する軌跡と、元画像用マスクFにおける参照ポイントの配置を決定する軌跡とは、相似の関係にある。このようにすれば、縮小画像から得られる周辺平均輝度の分布と、元画像から得られる周辺平均輝度の分布とがより近似する。その結果、縮小画像から得られる反射率の分布と、元画像から得られる反射率の分布とも近似し、縮小画像からでもより好適な正規化パラメータを得ることができる。
図9は、マスク生成処理を示すフローチャートである。マスク生成処理は、縮小画像用マスクFsと元画像用マスクFとを生成する処理である。
まず、縮小画像用マスクFsのサイズを決定する(S401)。この縮小画像用マスクFsのサイズは、前処理(図3参照)のS3のステップで決定された縮小画像のサイズに基づいて決定されるものであり、ここでは、縮小画像用マスクFsのサイズとして、例えば5×5が決定されたものとして説明する。
次に、パラメータRsmallを決定する(S402)。このパラメータRsmallは、関数r=f(θ)の動径rに相当するパラメータである。例えば、図8(a)に示すように円状の軌跡に沿って縮小画像用マスクFsの参照ポイントを決定する場合、Rsmall=2が決定される。
次に、偏角θを「0」とする(S403)。そして、偏角θとパラメータRsmallを用いて定まる極座標系の位置を、縮小画像用マスクFsの中央を原点とする直交座標系の座標に変換し、座標値(x,y)を決定する(S404)。なお、この座標値(x,y)は、下記(2)式により得たx,yの小数点以下を切り捨てて得られる値である。
x=Rsmall×cos(θ)
y=Rsmall×sin(θ) ・・・(2)
次に、得られた座標値(x,y)が、縮小画像用マスクFsの参照ポイント記憶用構造体にないか否かを判断する(S405)。ここで、縮小画像用マスクFsの参照ポイント記憶用構造体は、参照ポイントの座標およびそのフィルタ係数を記憶する構造体であり、マスクメモリ13h(図1参照)に設けられている。
得られた座標値(x,y)が、縮小画像用マスクFsの参照ポイント記憶用構造体にない場合(S405:Yes)、その座標値(x,y)を、縮小画像用マスクFsの参照ポイント記憶用構造体に記憶する(S406)。そして、ガウス関数を用いて、その座標値(x,y)のフィルタ係数を演算し、縮小画像用マスクFsの参照ポイント記憶用構造体に記憶し(S407)、S408の処理に移行する。
一方、得られた座標値(x,y)が、縮小画像用マスクFsの参照ポイント記憶用構造体に既にある場合(S405:No)、S406およびS407の処理をスキップし、S408に移行する。
次に、偏角θをインクリメントし(S408)、θが360より小であるか否かを判断する(S409)。θが360より小である間は(S409:Yes)、S404に戻り処理を繰り返す。
このようにして処理を繰り返す内に、θが360となり(S409:No)、全ての参照ポイントの座標およびフィルタ係数が、参照ポイント記憶用構造体に記憶されるので、縮小画像用マスクFsの生成を終了する。
次のステップからは、元画像用マスクFが生成される。まず、元画像に対する縮小画像の縮小率を読み出す(S410)。縮小率は、元画像の片辺長に対する縮小画像の片辺長の比に相当する値であり、例えば、RAM13に格納されている元画像サイズと縮小画像サイズとから求めることができる。次に、読み出した縮小率と、縮小画像用マスクFsのサイズとから、元画像用マスクFのサイズを決定する(S411)。具体的には、縮小画像用マスクFsのサイズに、縮小率の逆数を乗算した値を、元画像用マスクFのサイズとする。このようにすれば、縮小画像のサイズと縮小画像用フィルタのサイズとの比が、元画像のサイズと元画像用マスクFのサイズとの比と同じとなるように、元画像用マスクFのサイズを決定する(図8参照)。なお、縮小率の逆数が、特許請求の範囲におけるBRに相当する。
次に、パラメータRlargeを決定する(S412)。このパラメータRlargeは、関数r=g(θ)の動径rに相当するパラメータである。このパラメータRlargeは、縮小率の逆数BRと縮小画像用マスクFsのパラメータRsmallを用いて、以下の(3)式により決定される。
Rlarge=BR・Rsmall ・・・(3)
すなわち、縮小画像用マスクFsの参照ポイントの配置を関数r=f(θ)に基づいて定め、元画像用マスクFの参照ポイントの配置を関数r=g(θ)に基づいて定めるとき、f(θ)=BR・g(θ)の関係が満たされるよう、パラメータRlargeが決定される。
次に、偏角θを「0」とする(S413)。そして、偏角θとパラメータRlargeを用いて定まる極座標系の位置を、直交座標系に変換し、座標値(x,y)を決定する(S414)。なお、この座標値(x,y)は、下記(4)式により得たx,yの小数点以下を切り捨てて得られる値である。
x=Rlarge×cos(θ)
y=Rlarge×sin(θ) ・・・(4)
次に、得られた座標値(x,y)が、元画像用マスクFの参照ポイント記憶用構造体にないか否かを判断する(S415)。ここで、元画像用マスクFの参照ポイント記憶用構造体は、参照ポイントの座標およびそのフィルタ係数を記憶する構造体であり、マスクメモリ13h(図1参照)に設けられている。
得られた座標値(x,y)が、元画像用マスクFの参照ポイント記憶用構造体にない場合(S415:Yes)、その座標値(x,y)を、元画像用マスクFの参照ポイント記憶用構造体に記憶する(S416)。そして、ガウス関数を用いて、その座標値(x,y)のフィルタ係数を演算し、元画像用マスクFの参照ポイント記憶用構造体に記憶し(S417)、S418の処理に移行する。
一方、得られた座標値(x,y)が、元画像用マスクFの参照ポイント記憶用構造体に既にある場合(S415:No)、S416およびS417の処理をスキップし、S418に移行する。
次に、偏角θをインクリメントし(S418)、θが360より小であるか否かを判断する(S419)。θが360より小である間は(S419:Yes)、S414に戻り処理を繰り返す。
このようにして処理を繰り返す内に、θが360となると(S419:No)、全ての参照ポイントの座標およびフィルタ係数が、参照ポイント記憶用構造体に記憶されるので、元画像用マスクFの生成を終了し、マスク生成処理(S4)を終了する。
本実施形態によれば、前処理(図3参照)により、縮小画像を用いて設定されたパラメータ値に基づいてクリップ範囲が求められ、そのクリップ範囲を用いて、元画像の反射率が正規化されるので、クリップ範囲を求める際の演算数が少なく、レティネックス処理を高速で行うことができる。
また、縮小画像用マスクFsの参照ポイントの配置を定める関数r=f(θ)と、元画像用マスクFの参照ポイントを定める関数r=g(θ)とは、g(θ)=BR・f(θ)の関係を満たすので、縮小画像用マスクFsの参照ポイントの配置と、元画像用マスクFの参照ポイントの配置とが近似する。よって、縮小画像から得られる反射率の分布が、元画像から得られる反射率の分布と極めて近くなり、縮小画像からでも適切なクリップ範囲(元画像から得られるクリップ範囲と極めて近似するクリップ範囲)を得ることができ、高精度のレティネックス処理を行うことができる。
また、マスク生成処理(S4)によれば、縮小画像用マスクFsおよび元画像用マスクFは動的に生成されるので、予めメモリに記憶しておく場合に比較して、メモリの使用量を節約することができる。特に、コストの問題から、プリンタ1が有する不揮発性のメモリ量に制限がある場合には、縮小画像用マスクFsおよび元画像用マスクFを動的に生成することの効果が大きい。
また、マスク生成処理(S4)によれば、縮小画像用マスクFsのサイズを先に決定し、そのサイズに基づいて、元画像用マスクFのサイズを決定しているので、縮小画像用マスクFsの適切なサイズを確保することができる。すなわち、これとは逆に、元画像用マスクFのサイズを決定し、そのサイズを、縮小率に応じて小さくして縮小画像マスクFsのサイズを決定することとすると、その縮小率によっては、縮小画像用マスクFsのサイズが小さくなりすぎ、畳み込み演算のための適正なサイズを確保できないおそれがあるのである。
また、マスク生成処理(S4)によれば、縮小画像用マスクFsおよび元画像用マスクFの参照ポイントが曲線状の軌跡に基づいて配置されるので、直線を有する画像において疑似輪郭の発生を抑制することができ、画質の劣化を抑制することができる。すなわち、参照ポイントが直線状に配置されていると、画像に同じような直線が存在する場合に、疑似輪郭が発生し、レティネックス処理を行った結果、画質不良が発生するおそれがあるのである。
なお、請求項に記載の縮小画像反射率取得ステップおよび縮小画像反射率取得手段は、図3に示すフローチャートのS12の処理が該当し、正規化パラメータ取得ステップおよび正規化パラメータ取得手段は、図3に示すフローチャートのS16〜S18の処理が該当し、元画像反射率取得ステップおよび元画像反射率取得手段は、図4に示すフローチャートのS23の処理が該当し、補正ステップおよび補正手段は、図4に示す後処理が該当し、元画像用フィルタ生成ステップおよび元画像用フィルタ生成手段は、図9に示すフローチャートのS410〜S419の処理が該当し、縮小画像用フィルタ生成ステップおよび縮小画像用フィルタ生成手段は、後述する図10に示すフローチャートのS510〜S519の処理が該当する。
以上、実施形態に基づいて本発明を説明したが、本発明は上記各実施形態に何ら限定されるものでなく、本発明の趣旨を逸脱しない範囲内で種々の改良変形が可能であることは容易に推察できるものである。
例えば、上記実施形態では、マスク生成処理(S4)において、縮小画像用マスクFsを先に生成し、その後、元画像用マスクFを生成していたが、これに替えて、元画像用マスクFを先に生成し、その後に縮小画像用マスクFsを生成してもよい。
図10は、マスク生成処理(S4)の変形例を示すフローチャートである。この変形例のマスク生成処理(S4)は、先に元画像用マスクFを生成し、その元画像用マスクFに基づいて縮小画像用マスクFsを生成する点において、上記実施形態のマスク生成処理と異なる。
まず、元画像用マスクFのサイズを決定する(S501)。この元画像用マスクFのサイズは、元画像サイズメモリ13d(図1参照)に記憶された元画像のサイズに基づいて決定される。
次に、パラメータRlargeを決定する(S502)。このパラメータRlargeは、関数r=g(θ)の動径rに相当するパラメータである。
次に、偏角θを「0」とする(S503)。そして、偏角θとパラメータRlargeを用いて定まる極座標系の位置を、直交座標系に変換し、座標値(x,y)を決定する(S504)。なお、この座標値(x,y)は、上記(4)式により得たx,yの小数点以下を切り捨てて得られる値である。
次に、得られた座標値(x,y)が、元画像用マスクFの参照ポイント記憶用構造体にないか否かを判断する(S505)。
得られた座標値(x,y)が、元画像用マスクFの参照ポイント記憶用構造体にない場合(S505:Yes)、その座標値(x,y)を、元画像用マスクFの参照ポイント記憶用構造体に記憶する(S506)。そして、ガウス関数を用いて、その座標値(x,y)のフィルタ係数を演算し、元画像用マスクFの参照ポイント記憶用構造体に記憶し(S507)、S508の処理に移行する。
一方、得られた座標値(x,y)が、元画像用マスクFの参照ポイント記憶用構造体に既にある場合(S505:No)、S506およびS507の処理をスキップし、S508に移行する。
次に、偏角θをインクリメントし(S508)、θが360より小であるか否かを判断する(S509)。θが360より小である間は(S509:Yes)、S504に戻り処理を繰り返す。
このようにして処理を繰り返す内に、θが360となり(S509:No)、全ての参照ポイントの座標およびフィルタ係数が、参照ポイント記憶用構造体に記憶されるので、元画像用マスクFの生成を終了し、次に、縮小画像用マスクの生成を行う。
まず、元画像に対する縮小画像の縮小率を読み出す(S510)。次に、読み出した縮小率と、元画像用マスクFのサイズとから、縮小画像用マスクFsのサイズを決定する(S511)。具体的には、元画像用マスクFのサイズに、縮小率を乗算した値を、縮小画像用マスクFsのサイズとする。
次に、パラメータRsmallを決定する(S512)。このパラメータRsmallは、関数r=f(θ)の動径rに相当するパラメータである。このパラメータRsmallは、上記の(3)式に従って決定される。
次に、偏角θを「0」とする(S513)。そして、偏角θとパラメータRsmallを用いて定まる直交座標系の位置を、直交座標系に変換し、座標値(x,y)を決定する(S514)。なお、この座標値(x,y)は、上記(2)式により得たx,yの小数点以下を切り捨てて得られる値である。
次に、得られた座標値(x,y)が、縮小画像用マスクFsの参照ポイント記憶用構造体にないか否かを判断する(S515)。得られた座標値(x,y)が、縮小画像用マスクFsの参照ポイント記憶用構造体にない場合(S515:Yes)、その座標値(x,y)を、縮小画像用マスクFsの参照ポイント記憶用構造体に記憶する(S516)。そして、ガウス関数を用いて、その座標値(x,y)のフィルタ係数を演算し、縮小画像用マスクFsの参照ポイント記憶用構造体に記憶し(S517)、S518の処理に移行する。
一方、得られた座標値(x,y)が、縮小画像用マスクFsの参照ポイント記憶用構造体に既にある場合(S515:No)、S516およびS517の処理をスキップし、S518に移行する。
次に、変数θをインクリメントし(S518)、θが360より小であるか否かを判断する(S519)。θが360より小である間は(S519:Yes)、S514に戻り処理を繰り返す。
このようにして処理を繰り返す内に、θが360となると(S519:No)、全ての参照ポイントの座標およびフィルタ係数が、参照ポイント記憶用構造体に記憶されるので、縮小画像用マスクFsの生成を終了し、マスク生成処理(S4)を終了する。
変形例のマスク生成処理(S4)によれば、元画像用マスクFのサイズに基づいて、縮小画像用マスクFsのサイズを決定するので、生成した縮小画像用マスクFsを格納するために確保しなければならないRAM13の領域を小さくすることができる。すなわち、縮小画像用マスクFsを先に決定し、縮小画像用マスクFsのサイズと縮小率とに基づいて元画像用マスクFのサイズを決定し、元画像用マスクFを生成することとすると、縮小率によっては、元画像用マスクFのサイズが非常に大きいものとなるおそれがある。そのため、生成した元画像用マスクFの参照ポイントおよびフィルタ係数を格納するために、十分に大きなメモリ容量を確保しておかなければならないのである。
なお、元画像用マスクFのサイズが所定値以上となる場合には、変形例のマスク生成処理(S4)で縮小画像用マスクFsおよび元画像用マスクFを生成し、元画像用マスクFのサイズが所定値より小である場合は、実施形態で説明したマスク生成処理(S4)を実行することとするなど、場合に応じて使い分けるように構成しても良い。
また、上記実施形態で説明した縮小画像用マスクFsおよび元画像用マスクFの参照ポイントは、円状の軌跡に沿って配置されていた。すなわち、縮小画像用マスクFsの参照ポイントを決定するための関数r=f(θ)、r=g(θ)は、θの値に拘わらず、動径rが常に一定であった。しかしながら、当然のことながら、f(θ)およびg(θ)は、定数と、変数θから構成されるものであっても良い。
図11は、関数r=f(θ)および関数r=g(θ)が、螺旋関数である場合に描かれる軌跡を示す図である。図11においては、螺旋関数が関数r=a・θで表される対数螺旋の軌跡を波線で示し、螺旋関数が関数r=a・ebθで表されるアルキメデスの渦巻きとよばれる軌跡を実線で示す(但し、a,bは定数)。このような螺旋関数を用いて参照ポイントの配置を決定すれば、縮小画像用マスクおよび元画像用マスクの参照ポイントを、螺旋状の軌跡に沿って配置することができる。
また、上記実施形態では、縮小画像用マスクFsの参照ポイントの配置を定める関数r=f(θ)と、元画像用マスクFの参照ポイントの配置を定める関数r=g(θ)とは、g(θ)=BR・f(θ)の関係を満たすものとして説明したが、必ずしもこの関係を満たすものでなくても良い。例えば、縮小画像用マスクの参照ポイントを定める関数r=f(θ)が、r=a・ebθ
であるとき、元画像用マスクの参照ポイントを定める関数r=g(θ)が、r=a・ecθ(但し、cは定数であり、b≠c)であるなど、同じ種類の関数であって、少なくとも1つの定数が異なる関係にあっても良い。このようにしても、縮小画像用マスクの参照ポイントの配置と、元画像用マスクの参照ポイントの配置とは近似したものとなるので、同様の効果が得られる。
図12は、関数r=a・sin2θで表される正葉曲線関数の軌跡を示す図である。縮小画像用マスクの参照ポイントを決定する関数r=f(θ)、元画像用マスクの参照ポイントを決定する関数r=g(θ)は、この正葉曲線関数であっても良い。
また、関数r=f(θ)と、関数r=g(θ)は、定数も等しい同一の関数であっても良い。また、上記実施形態のマスク生成処理(S4)では、偏角θを1ずつ増加して参照ポイントの座標を決定していたが、例えば、図12に示すように、所定の間隔を空けて、参照ポイントを配置しても良く、縮小画像用マスクと、元画像用マスクとで、その間隔を異ならせるものであっても良い。
また、上記実施形態では、本発明の画像処理プログラムは、プリンタ1に組み込まれたCPU11により実行されるものとしたが、パーソナルコンピュータにアプリケーションとして供給され、パーソナルコンピュータに組み込まれたCPUなどにより実行されるようにしてもよい。
また、レティネックス処理は、SSR(シングルスケール法)であってもMSR(マルチスケール法)であってもよい。また、計算は極座標系を用いたが、直交座標系を用いてもよい。
また、上記実施形態の画像処理では、CPU11によりレティネックス処理などを行うものとしたが、DSP(Digital
Signal Processor)により行ってもよい。DSPを用いると、より高速に積和演算などの処理を実行することができる。