(57)【特許請求の範囲】
【請求項１】
レティネックス処理をコンピュータにより実行させる画像処理プログラムにおいて、
前記レティネックス処理は、
注目画素に対応する位置を極座標の原点とする極座標関数に基づいて設定され、注目画素の周辺の所定の範囲内の位置に存在する複数のフィルタ係数と、そのフィルタ係数が存在する位置に対応する元画像の画素の濃度値と、の畳み込み演算を行う演算ステップを備え、
前記極座標関数は、対数螺旋関数と、アルキメデスの渦巻き関数と、正葉曲線関数とのうちのいずれかであることを特徴とする画像処理プログラム。
【請求項２】
前記レティネックス処理は、さらに、
前記注目画素の周辺の所定の領域におけるフィルタ係数を算出するフィルタ関数と、前記注目画素に対応する位置を極座標の原点とする前記極座標関数と、に基づいて、前記複数のフィルタ係数を取得するフィルタ係数取得ステップを備え、
前記演算ステップは、前記フィルタ係数取得ステップにより取得されたフィルタ係数と、そのフィルタ係数の前記領域内の位置に対応する元画像の画素の濃度値と、の畳み込み演算を行うことを特徴とする請求項１記載の画像処理プログラム。
【請求項３】
前記対数螺旋関数は、前記注目画素に対応する位置を原点とする複数の対数螺旋関数であることを特徴とする請求項１または２記載の画像処理プログラム。
【請求項４】
前記アルキメデスの渦巻き関数は、前記注目画素に対応する位置を原点とする複数のアルキメデスの渦巻き関数であることを特徴とする請求項１または２記載の画像処理プログラム。
【請求項５】
レティネックス処理をコンピュータにより実行させる画像処理装置において、
前記レティネックス処理に含まれる演算処理を実行する演算手段であって、前記演算処理において、注目画素に対応する位置を極座標の原点とする極座標関数に基づいて設定され、注目画素の周辺の所定の範囲内の位置に存在する複数のフィルタ係数と、そのフィルタ係数が存在する位置に対応する元画像の画素の濃度値と、の畳み込み演算を行う前記演算手段を備え、
前記極座標関数は、対数螺旋関数と、アルキメデスの渦巻き関数と、正葉曲線関数とのうちのいずれかであることを特徴とする画像処理装置。
【請求項６】
前記レティネックス処理に含まれる取得処理を実行するフィルタ係数取得手段であって、前記取得処理において、前記注目画素の周辺の所定の領域におけるフィルタ係数を算出するフィルタ関数と、前記注目画素に対応する位置を極座標の原点とする前記極座標関数と、に基づいて、前記複数のフィルタ係数を取得する前記フィルタ係数取得手段を備え、
前記演算手段は、前記演算処理において、前記フィルタ係数取得手段により取得されたフィルタ係数と、そのフィルタ係数の前記領域内の位置に対応する元画像の画素の濃度値と、の畳み込み演算を行うことを特徴とする請求項５記載の画像処理装置。
【請求項７】
前記対数螺旋関数は、前記注目画素に対応する位置を原点とする複数の対数螺旋関数であることを特徴とする請求項５または６記載の画像処理装置。
【請求項８】
前記アルキメデスの渦巻き関数は、前記注目画素に対応する位置を原点とする複数のアルキメデスの渦巻き関数であることを特徴とする請求項５または６記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レティネックス処理におけるフィルタ処理を高速化するとともに画質を劣化させることを防止することができる画像処理プログラムおよび画像処理装置に関するものである。
【背景技術】
【０００２】
逆光条件下で被写体が撮像された場合、被写体部分の画像は、詳細な態様が判別困難となるほど明度やコントラストの低い不明瞭な逆光画像となる。かかる逆光画像のみならず、露光の過不足や、撮像時のぶれやぼけ、ノイズ、光量不足などによる劣悪な画像を、画像処理によって明度やコントラストを向上させて画質を改良することが行われている。かかる画像処理の１手法として、レティネックス処理（Ｒｅｔｉｎｅｘ処理）が知られている。
【０００３】
レティネックス処理は、高画質部分については入力画像データを保持し、主に低画質部分の画質改良を行うものである。このレティネックス処理では、ガウスフィルタにより、元の画像の各画素データを周辺画素の画素データを反映させた値に補正し、その補正された画素データの自然対数から元の画像のリファレンス成分データを算出し、元画像の画素成分で元の画像の画素データを除してイルミナンス成分データを算出する。つまり、元の画像を、リファレンス成分とイルミナンス成分との２の構成成分に分けるのである。そして、イルミナンス成分に対してガンマ補正等の明度や階調（コントラスト）を補正する処理を行った後、その補正されたイルミナンス成分と、リファレンス成分とを合成することにより、元の画像に対し逆光画像部分などの低画質部分の画質が改良された画像データを生成することができる。
【特許文献１】特開２００４−１６５８４０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、このレティネックス処理におけるフィルタ処理では、所定の領域を構成するフィルタ係数とそのフィルタ係数に対応する位置の画素の濃度値との積をそれぞれ求め、その積の総和を求める積和演算である畳み込み演算（コンボリューション）を行う必要がある。例えば、９×９のフィルタ係数により構成される場合には、８１回の乗算と、８０回の加算を行う必要があった。
【０００５】
この演算には、多大な時間を要するので、行、あるいは列単位でフィルタ係数を間引き、演算数を減らすことが行われているが、行、または列などの直線的な間引きを行った場合、元画像に同じような方向に直線が存在すると、疑似輪郭が発生するなどの画質不良が発生するという問題点があった。
【０００６】
図９（ａ）は、フィルタＦと画像Ｇとを模式的に示す図であり、フィルタＦは、９×９の要素により構成され、このフィルタの中央の要素が、画像Ｇの注目画素に対応してフィルタ処理が行われる。この図９（ａ）に示すフィルタでは、９×９＝８１個の要素を有するので、フィルタ処理においては、それぞれの要素が対応する画素の濃度値と乗算され、その積が累算されることによって、畳み込み演算が行われる。なお、この例では、フィルタ係数は、１２〜２７の値をとるものとしている。
【０００７】
図９（ｂ）は、図９（ａ）に示すフィルタから、最外側の周囲の要素と、一列飛ばした内側の一周の要素を省略したフィルタを示す。このようにして要素を減らすことにより、畳み込み演算の演算数が減り、フィルタ処理を高速に行うことができるが、この図９（ｂ）に示すような、直線的な要素の削減を行うと、画像に直線が存在する場合に、擬似輪郭が発生し、レティネックス処理を行った結果の画質が劣化する。
【０００８】
図１０は、フィルタを構成する要素が直線上に配列されていて、画像に規則性がある場合の例を示す模式図である。図１０（ａ）および（ｂ）は、画像に水玉模様が格子状に描かれており、フィルタの要素が、中央の点から放射状に形成されている場合を示している。図１０（ａ）は、フィルタの要素が形成する直線が、水玉のドットの位置にほぼ一致した状態を示し、（ｂ）は、（ａ）の位置から少し離れた位置で、水玉のドットの位置とわずかに異なる位置に配置された場合を示す。フィルタの位置を順次移動してフィルタ処理を行う場合に、（ａ）が、示すように、水玉のドットの位置と一致した場合と、（ｂ）のようにずれた場合とでは、フィルタにより算出される平均輝度が大きく異なってしまうことが推察される。
【０００９】
図１０（ｃ）、（ｄ）も同様に、画像に直線の縦縞が規則的に描かれていて、フィルタの要素が格子状に配列されている場合を示している。（ｃ）は、フィルタの要素が形成する直線の一部が、画像の縦縞にほぼ一致した状態を示し、（ｄ）は、（ｃ）の位置から少し離れた位置で、縦縞の位置とわずかに異なる位置に配置された場合を示す。フィルタの位置を順次移動してフィルタ処理を行う場合に、（ｃ）が、示すように、縦縞の位置と一致した場合と、（ｄ）のようにずれた場合とでは、フィルタにより算出される平均輝度が大きく異なってしまう。
【００１０】
従って、このような、画像においてレティネックス処理を行う際に、直線状に配置されたフィルタ要素を使用すると、ほぼ同じ領域であっても、わずかに異なる位置で求めた平均輝度が大きく異なり、擬似輪郭を発生することになる。しかも、この擬似輪郭は、直線的なものとなるために、目に付きやすく、画質を劣化させる原因となる。
【００１１】
本発明は、上記問題点を解決するためになされたものであり、フィルタ処理を高速化するとともに画質を劣化させることを防止することができる画像処理プログラムおよび画像処理装置を提供することを目的としている。
【課題を解決するための手段】
【００１２】
この目的を達成するために、態様１の画像処理プログラムは、レティネックス処理をコンピュータにより実行させるものであり、注目画素に対応する位置を原点とする極座標関数に基づいて設定され、注目画素の周辺の所定の範囲内の位置に存在する複数のフィルタ係数と、そのフィルタ係数が存在する位置に対応する元画像の画素の濃度値との畳み込み演算を行う演算ステップを備えている。
【００１３】
態様２の画像処理プログラムは、態様１記載の画像処理プログラムにおいて、前記注目画素の周辺の所定の領域におけるフィルタ係数を算出するフィルタ関数と前記注目画素に対応する位置を原点とする極座標関数とに基づいて前記複数のフィルタ係数を取得するフィルタ係数取得ステップを備え、前記演算ステップは、前記フィルタ係数取得ステップにより取得されたフィルタ係数と、そのフィルタ係数の前記領域内の位置に対応する元画像の画素の濃度値との畳み込み演算を行う。
【００１４】
態様３の画像処理プログラムは、態様１または２記載の画像処理プログラムにおいて、前記極座標関数は、前記注目画素に対応する位置を極座標の原点とする螺旋関数である。
【００１５】
態様４の画像処理プログラムは、態様３記載の画像処理プログラムにおいて、前記螺旋関数は、対数螺旋関数である。
【００１６】
態様５の画像処理プログラムは、態様３記載の画像処理プログラムにおいて、前記螺旋関数は、アルキメデスの渦巻き関数である。
【００１７】
態様６の画像処理プログラムは、態様３から５のいずれかに記載の画像処理プログラムにおいて、前記螺旋関数は、前記注目画素に対応する位置を原点とする複数の螺旋関数である。
【００１８】
態様７の画像処理プログラムは、態様１または２記載の画像処理プログラムにおいて、前記極座標関数は、前記注目画素に対応する位置を極座標の原点とする正葉曲線関数である。
【００１９】
態様８の画像処理プログラムは、レティネックス処理をコンピュータにより実行させる画像処理プログラムにおいて、注目画素の周辺の所定の領域内のランダムな位置に存在する複数のフィルタ係数と、そのフィルタ係数が存在する位置に対応する元画像の画素の濃度値との畳み込み演算を行う演算ステップを備えている。
【００２０】
態様９の画像処理プログラムは、前記注目画素の周辺の所定の領域におけるフィルタ係数を算出するフィルタ関数と、前記注目画素の周辺の所定の領域内のランダムな位置を特定するランダム関数とに基づいて前記複数のフィルタ係数を取得するフィルタ係数取得ステップを備え、前記演算ステップは、前記フィルタ係数取得ステップにより取得されたフィルタ係数とそのフィルタ係数の前記領域内の位置に対応する元画像の画素の濃度値との畳み込み演算を行う。
【００２１】
態様１０の画像処理プログラムは、態様９記載の画像処理プログラムにおいて、前記フィルタ係数取得ステップは、前記領域中の画素が存在する位置に対応してランダム関数により乱数を発生するものであり、発生された乱数の値に基づいてフィルタ係数が存在するか否かを設定する。
【００２２】
態様１１の画像処理プログラムは、態様１０記載の画像処理プログラムにおいて、前記フィルタ係数取得ステップは、前記領域中の注目画素に対応する中心付近にフィルタ係数が存在する確率が、中心付近より離れた位置での確率より高く設定されている。
【００２３】
態様１２の画像処理装置は、レティネックス処理をコンピュータにより実行させるものであり、注目画素に対応する位置を原点とする極座標関数に基づいて設定され、注目画素の周辺の所定の範囲内の位置に存在する複数のフィルタ係数と、そのフィルタ係数が存在する位置に対応する元画像の画素の濃度値との畳み込み演算を行う演算手段を備えている。
【００２４】
態様１３の画像処理装置は、態様１２記載の画像処理装置において、前記注目画素の周辺の所定の領域におけるフィルタ係数を算出するフィルタ関数と、前記注目画素に対応する位置を原点とする極座標関数とに基づいて前記複数のフィルタ係数を取得するフィルタ係数取得手段を備え、前記演算ステップは、前記フィルタ係数取得手段により取得されたフィルタ係数と、そのフィルタ係数の前記領域内の位置に対応する元画像の画素の濃度値との畳み込み演算を行う。
【００２５】
態様１４の画像処理装置は、態様１２または１３記載の画像処理装置において、前記極座標関数は、前記注目画素に対応する位置を極座標の原点とする螺旋関数である。
【００２６】
態様１５の画像処理装置は、態様１４記載の画像処理装置において、前記螺旋関数は、対数螺旋関数である。
【００２７】
態様１６の画像処理装置は、態様１４記載の画像処理装置において、前記螺旋関数は、アルキメデスの渦巻き関数である。
【００２８】
態様１７の画像処理装置は、態様１４から１６のいずれかに記載の画像処理装置において、前記螺旋関数は、前記注目画素に対応する位置を原点とする複数の螺旋関数である。
【００２９】
態様１８の画像処理装置は、態様１２または１３記載の画像処理装置において、前記極座標関数は、前記注目画素に対応する位置を極座標の原点とする正葉曲線関数である。
【００３０】
態様１９の画像処理装置は、レティネックス処理をコンピュータにより実行させるものであり、注目画素の周辺の所定の領域内のランダムな位置に存在する複数のフィルタ係数と、そのフィルタ係数が存在する位置に対応する元画像の画素の濃度値との畳み込み演算を行う演算手段を備えている。
【００３１】
態様２０の画像処理装置は、態様１９記載の画像処理装置において、前記注目画素の周辺の所定の領域におけるフィルタ係数を算出するフィルタ関数と、前記注目画素の周辺の所定の領域内のランダムな位置を特定するランダム関数とに基づいて前記複数のフィルタ係数を取得するフィルタ係数取得手段を備え、前記演算手段は、前記フィルタ係数取得ステップにより取得されたフィルタ係数と、そのフィルタ係数の前記領域内の位置に対応する元画像の画素の濃度値との畳み込み演算を行う。
【００３２】
態様２１の画像処理装置は、態様２０記載の画像処理装置において、前記フィルタ係数取得ステップは、前記領域中の画素が存在する位置に対応してランダム関数により乱数を発生するものであり、発生された乱数の値に基づいてフィルタ係数が存在するか否かを設定する。
【００３３】
態様２２の画像処理装置は、態様２１記載の画像処理装置において、前記フィルタ係数取得ステップは、前記領域中の注目画素に対応する中心付近にフィルタ係数が存在する確率が、中心付近より離れた位置での確率より高く設定されている。
【発明の効果】
【００３４】
態様１記載の画像処理プログラムによれば、注目画素に対応する位置を原点とする極座標関数に基づいて設定され、注目画素の周辺の所定の範囲内の位置に存在する複数のフィルタ係数と、そのフィルタ係数が存在する位置に対応する元画像の画素の濃度値との畳み込み演算を行う演算ステップを備えているので、フィルタ係数の数を減少させて畳み込み演算を簡単にすることができるとともに、極座標関数は、直線を有さないので、直線を有する画像において、疑似輪郭の発生を防止することができ、画質の劣化を防止することができるという効果がある。画像が有する曲線が極座標関数が形成する曲線とほぼ一致する場合も考えられるが、曲線状で擬似輪郭が発生しても、直線状に発生する場合に比べ、画質の劣化が目立たないという特性もある。
【００３５】
態様２記載の画像処理プログラムによれば、態様１記載の画像処理プログラムの奏する効果に銜え、注目画素の周辺の所定の領域におけるフィルタ係数を算出するフィルタ関数と注目画素に対応する位置を原点とする極座標関数とに基づいて複数のフィルタ係数を取得するフィルタ係数取得ステップを備え、演算ステップは、フィルタ係数取得ステップにより取得されたフィルタ係数と、そのフィルタ係数の領域内の位置に対応する元画像の画素の濃度値との畳み込み演算を行うので、複数のフィルタ係数を所定の範囲内の位置に対応して記憶する必要がなく、簡単な演算によりフィルタ係数を取得することができるという効果がある。
【００３６】
レティネクス処理には、１回のフィルタ処理を行うＳＳＲ（Single  Scale  Retinex）と、複数回のフィルタ処理を行うＭＳＲ（Multi  Scale  Retinex）とが知られており、  一般的にＭＳＲの場合には、一つの極座標関数と、ガウス関数などのパラメータを変えて演算を行うことでフィルタ係数を求めることにより、マルチスケール、つまり複数のスケールによる周辺平均輝度値が得られ、より自然な色に補正することができる。
【００３７】
態様３記載の画像処理プログラムによれば、態様１または２記載の画像処理プログラムの奏する効果に加え、極座標関数は、注目画素に対応する位置を極座標の原点とする螺旋関数であるので、簡単な演算で、注目画素に対応する位置付近では、密度が高く、中心から離れるほど粗に分布する位置を特定することができる。したがって、畳み込み演算における演算回数を減少させることができるともに、画質の劣化を防止することができるという効果ある。
【００３８】
態様４または５記載の画像処理プログラムによれば、態様３記載の画像処理プログラムにおいて、螺旋関数は、対数螺旋関数またはアルキメデスの渦巻き関数であるので、簡単な演算で、画質の劣化が少ないフィルタを形成することができるという効果がある。
【００３９】
なお、対数螺旋関数は、中心部の渦が密であり、外側に行くほど粗になる。一方、アルキメデスの渦巻きは、隣り合う曲線の距離が一定である。よって、対数螺旋曲線の方が、良好な画質を得ることができる。
【００４０】
態様６記載の画像処理プログラムによれば、態様３から５のいずれかに記載の画像処理プログラムの奏する効果に加え、螺旋関数は、注目画素に対応する位置を原点とする複数の螺旋関数であるので、注目画素の周辺の領域内に均一にフィルタ係数を備えることができるので、より画質の劣化を防止することができるという効果がある。
【００４１】
態様７記載の画像処理プログラムによれば、態様１または２記載の画像処理プログラムの奏する効果に加え、極座標関数は、注目画素に対応する位置を極座標の原点とする正葉曲線関数であるので、簡単な関数により、注目画素の周辺の領域内の均一な位置にフィルタ係数を配置することができるので、より画質の劣化を防止することができるという効果がある。
【００４２】
態様８記載の画像処理プログラムによれば、注目画素の周辺の所定の領域内のランダムな位置に存在する複数のフィルタ係数と、そのフィルタ係数が存在する位置に対応する元画像の画素の濃度値との畳み込み演算を行う演算ステップを備えているので、フィルタ係数の数を減少させて畳み込み演算を簡単にすることができるとともに、ランダムな位置は、直線や曲線を形成することが少ないので、疑似輪郭の発生を防止することができ、画質の劣化を防止することができるという効果がある。
【００４３】
態様９記載の画像処理プログラムによれば、注目画素の周辺の所定の領域におけるフィルタ係数を算出するフィルタ関数と、注目画素の周辺の所定の領域内のランダムな位置を特定するランダム関数とに基づいて複数のフィルタ係数を取得するフィルタ係数取得ステップを備え、演算ステップは、フィルタ係数取得ステップにより取得されたフィルタ係数とそのフィルタ係数の前記領域内の位置に対応する元画像の画素の濃度値との畳み込み演算を行うので、複数のフィルタ係数を所定の範囲内の位置に対応して記憶する必要がなく、簡単な関数の演算によりフィルタ係数を取得することができるという効果がある。
【００４４】
態様１０記載の画像処理プログラムによれば、態様９記載の画像処理プログラムの奏する効果に加え、フィルタ係数取得ステップは、領域中の画素が存在する位置に対応してランダム関数により乱数を発生するものであり、発生された乱数の値に基づいてフィルタ係数が存在するか否かを設定するので、簡単な処理により注目画素の周辺の所定の領域内のランダムな位置を特定することができる。
【００４５】
態様１１記載の画像処理プログラムによれば、態様１０記載の画像処理プログラムの奏する効果に加え、フィルタ係数取得ステップは、領域中の注目画素に対応する中心付近にフィルタ係数が存在する確率が、中心付近より離れた位置での確率より高く設定されているので、注目画素に近い付近でフィルタ係数が多く発生され、より画質が劣化することを防止した処理を行うことができるという効果がある。
【００４６】
態様１２記載の画像処理装置によれば、注目画素に対応する位置を原点とする極座標関数に基づいて設定され、注目画素の周辺の所定の範囲内の位置に存在する複数のフィルタ係数と、そのフィルタ係数が存在する位置に対応する元画像の画素の濃度値との畳み込み演算を行う演算手段を備えているので、フィルタ係数の数を減少させて畳み込み演算を簡単にすることができるとともに、極座標関数は、直線を有さないので、直線を有する画像において、疑似輪郭の発生を防止することができ、画質の劣化を防止することができるという効果がある。画像が有する曲線が極座標関数が形成する曲線とほぼ一致する場合も考えられるが、曲線状で擬似輪郭が発生しても、直線状に発生する場合に比べ、画質の劣化が目立たないという特性もある。
【００４７】
態様１３記載の画像処理装置によれば、態様１２記載の画像処理装置の奏する効果に加え、注目画素の周辺の所定の領域におけるフィルタ係数を算出するフィルタ関数と、注目画素に対応する位置を原点とする極座標関数とに基づいて複数のフィルタ係数を取得するフィルタ係数取得手段を備え、演算ステップは、フィルタ係数取得手段により取得されたフィルタ係数と、そのフィルタ係数の前記領域内の位置に対応する元画像の画素の濃度値との畳み込み演算を行うので、複数のフィルタ係数を所定の範囲内の位置に対応して記憶する必要がなく、簡単な演算によりフィルタ係数を取得することができるという効果がある。
【００４８】
態様１４記載の画像処理装置によれば、態様１２または１３記載の画像処理装置の奏する効果に加え、極座標関数は、注目画素に対応する位置を極座標の原点とする螺旋関数であるので、簡単な演算で、注目画素に対応する位置付近では、密度が高く、中心から離れるほど粗に分布する位置を特定することができる。したがって、畳み込み演算における演算回数を減少させることができるともに、画質の劣化を防止することができるという効果ある。
【００４９】
態様１５または１６記載の画像処理装置によれば、態様１４記載の画像処理装置の奏する効果に加え、螺旋関数は、対数螺旋関数、または、アルキメデスの渦巻き関数であるので、簡単な演算で、画質の劣化が少ないフィルタを形成することができるという効果がある。
【００５０】
態様１７記載の画像処理装置によれば、態様１４から１６のいずれかに記載の画像処理装置の奏する効果に加え、螺旋関数は、注目画素に対応する位置を原点とする複数の螺旋関数であるので、注目画素の周辺の領域内に均一にフィルタ係数を備えることができるので、より画質の劣化を防止することができるという効果がある。
【００５１】
態様１８記載の画像処理装置によれば、態様１２または１３記載の画像処理装置の奏する効果に加え、極座標関数は、注目画素に対応する位置を極座標の原点とする正葉曲線関数であるので、簡単な関数により、注目画素の周辺の領域内の均一な位置にフィルタ係数を配置することができるので、より画質の劣化を防止することができるという効果がある。
【００５２】
態様１９記載の画像処理装置によれば、注目画素の周辺の所定の領域内のランダムな位置に存在する複数のフィルタ係数と、そのフィルタ係数が存在する位置に対応する元画像の画素の濃度値との畳み込み演算を行う演算手段を備えているので、フィルタ係数の数を減少させて畳み込み演算を簡単にすることができるとともに、ランダムな位置は、直線や曲線を形成することが少ないので、疑似輪郭の発生を防止することができ、画質の劣化を防止することができるという効果がある。
【００５３】
態様２０記載の画像処理装置によれば、態様１９記載の画像処理装置の奏する効果に加え、注目画素の周辺の所定の領域におけるフィルタ係数を算出するフィルタ関数と、注目画素の周辺の所定の領域内のランダムな位置を特定するランダム関数とに基づいて複数のフィルタ係数を取得するフィルタ係数取得手段を備え、演算手段は、フィルタ係数取得ステップにより取得されたフィルタ係数と、そのフィルタ係数の領域内の位置に対応する元画像の画素の濃度値との畳み込み演算を行うので、複数のフィルタ係数を所定の範囲内の位置に対応して記憶する必要がなく、簡単な関数の演算によりフィルタ係数を取得することができるという効果がある。
【００５４】
態様２１記載の画像処理装置によれば、態様２０記載の画像処理装置の奏する効果に加え、フィルタ係数取得ステップは、領域中の画素が存在する位置に対応してランダム関数により乱数を発生するものであり、発生された乱数の値に基づいてフィルタ係数が存在するか否かを設定するので、簡単な処理により注目画素の周辺の所定の領域内のランダムな位置を特定することができる。
【００５５】
態様２２記載の画像処理装置によれば、態様２１記載の画像処理装置の奏する効果に加え、フィルタ係数取得ステップは、領域中の注目画素に対応する中心付近にフィルタ係数が存在する確率が、中心付近より離れた位置での確率より高く設定されているので、注目画素に近い付近でフィルタ係数が多く発生され、より画質が劣化することを防止した処理を行うことができるという効果がある。
注目画素に近い付近でフィルタ係数が多く発生され、より画質が劣化することを防止した処理を行うことができるという効果がある。
【発明を実施するための最良の形態】
【００５６】
以下、本発明の好ましい実施形態について添付図面を参照して説明する。図１は、本実施形態の画像処理のプログラムを搭載したプリンタ１の電気的な構成を示したブロック図である。本実施形態においては、プリンタ１に搭載された画像処理のプログラムは、パーソナルコンピュータ（以下「ＰＣ」と称する）２や、デジタルカメラ２１や、外部メディア２０から入力された画像データ（原画像データなど）に対しレティネックス処理（Ｒｅｔｉｎｅｘ処理）を実行して、画像データの逆光画像部分などの低画質領域の補正を実行するように構成されている。
【００５７】
図１に示すように、プリンタ１には、ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、印刷ヘッドなどから構成され、印刷媒体（例えば、紙媒体など）への印刷（出力）を行う印刷部１５、出力画像サイズなどの入力値をユーザが入力可能なユーザ操作部（例えば、テンキーなど）を有する操作パネル１６とを備えている。
【００５８】
また、プリンタ１は、ケーブル５を介してＰＣ２と接続可能なインターフェイス（以下「Ｉ／Ｆ」と称する）１７と、ケーブル６を介してデジタルカメラ２１と接続可能なＩ／Ｆ１８と、外部メディア２０（例えば、ＳＤメモリカード、メモリスティックなどのフラッシュメモリにより構成される）を着脱自在に装着可能な外部メディアスロット１９とを備えている。近年、これらのＩ／Ｆ１７、１８により行われる通信方法としてＵＳＢ（Universal  Serial  Bus）が使用される。
【００５９】
よって、プリンタ１は、ＰＣ２に記憶されている画像データをケーブル５及びＩ／Ｆ１７を介して入力することが可能であると共に、デジタルカメラ２１によって撮影された画像データをケーブル６及びＩ／Ｆ１８を介して入力することが可能である。さらに、外部メディアスロット１９に装着された外部メディア２０から、その外部メディア２１に記憶されている画像データを入力することが可能である。
【００６０】
ＣＰＵ１１は、プリンタ１全体を制御する演算処理装置（演算装置）である。ＲＯＭ１２は、ＣＰＵ１１により実行される各種制御プログラムやそのプログラムを実行する際に用いられる固定値などを記憶するものであり、この実施形態では、レティネックス処理などの画像の処理を行う画像処理プログラムを記憶する画像処理プログラムメモリ１２ａと、その処理において使用されるガウス関数を記憶するガウス関数メモリ１２ｂと、フィルタ係数を設定するための対数螺旋関数を記憶する対数螺旋関数メモリ１２ｃとを備えている。
【００６１】
レティネックス処理におけるフィルタ処理では、注目画素の周辺の画素の濃度値とその各画素に対応するフィルタ係数との畳み込み演算を行うことにより周辺平均輝度を求めるが、その領域内の全ての画素について演算を行うと演算の量が多くなって処理に時間を要する。そこで、本発明では、畳み込み演算を行う領域のうち、対数螺旋関数により特定される位置においてのみ、画像の濃度値とフィルタ係数との畳み込み演算を行うものである。
【００６２】
ＲＡＭ１３は、ＣＰＵ１１で実行される制御プログラムに必要な各種レジスタ群などが設定されたワーキングエリアや、処理中のデータを一時的に格納するテンポラリエリア等を有しランダムにアクセスできる書き換え可能なメモリであり、元画像データを記憶する原画像メモリ１３ａと、対数螺旋関数により演算された曲線を表す座標データを記憶する曲線データメモリ１３ｂと、対数螺旋関数により指定された注目画素の周辺領域の位置に対応してフィルタ係数を記憶するフィルタ係数メモリ１３ｃとを備えている。
【００６３】
元画像データメモリ１３ａは、ＰＣ２、デジタルカメラ２１、及び外部メディア２０から、それぞれ、Ｉ／Ｆ１７、Ｉ／Ｆ１８、及び外部メディアスロット１９を介して入力した画像データを記憶するものである。なお、本実施形態では、元画像データ及び出力画像データはいずれも、ＲＧＢ値から構成され、これらのＲＧＢ値は、「０」〜「２５５」の範囲の値である。
【００６４】
尚、ＲＧＢ値は、光の３原色である赤を表すＲ値と、緑を表すＧ値と、青を示すＢ値とを構成成分とする値である。光の３原色の混色により各種の色は生成されるので、入力画像の各画素の色は、Ｒ値とＧ値とＢ値との組合せ（ＲＧＢ値）により１の色（色相や階調など）が示される。このＲＧＢ値の値が大きいほど、輝度（明度）は高くなる。
【００６５】
曲線データメモリ１３ｂおよびフィルタ係数メモリ１３ｃは、図４に示すフィルタ形成処理においてデータが記憶され、フィルタ係数メモリ１３ｃに記憶されたフィルタ係数は、図５に示すフィルタ処理において使用される。
【００６６】
次に図２を参照して、プリンタ１のＣＰＵ１１によって実行されるレティネックス処理におけるフィルタ処理の概要について説明する。図２は、本プリンタ１で実行されるフィルタ処理の概要を模式的に示した図である。
【００６７】
図２（ａ）は、螺旋関数のうち、対数螺旋関数の曲線Ａを示すものである。この対数螺旋関数は、ａおよびｂを定数、ｒを半径（動径ともいう）、θを偏角、直交座標の横軸をｘ縦軸をｙとすると、次式により表される。
【００６８】
【数１】
0004765667.tif 000002
図２（ｂ）は、この対数螺旋関数を２つ用いた場合を示し、一方の対数螺旋曲線Ａに対し、他方の対数螺旋曲線Ａ’は、対数螺旋曲線Ａを原点を中心に１８０度回転したものである。このように複数の対数螺旋関数を用いることにより、より周辺領域内で一様に演算を行う位置が指定されるので、画質の劣化を防止することができる。
【００６９】
図２（ｃ）は、図２（ｂ）に示す２つの対数螺旋関数により指定された位置のフィルタ係数を示すものであり、一方の対数螺旋により形成されたフィルタ係数には、斜線を入れ、他の１８０度回転した対数関数により形成されたフィルタ係数には、斜線を入れずに表示している。このようにして形成したフィルタをすべての画素について処理を行う。
【００７０】
次に、図３〜図５に示すフローチャートを参照して、上記のように構成されたプリンタ１で実行されるレティネックス処理の動作について説明する。図３は、プリンタ１で実行される画像処理を示したフローチャートである。レティネックス処理は、画像データの逆光画像部分の補正（画質改良、コントラスト及び明度の向上）を行うものである。処理を行う元画像データは、使用者の所定の操作により指定され、原画像メモリ１３ｂに書き込まれているものとする。
【００７１】
このレティネックス処理では、まず、周辺平均輝度を求めるためのフィルタのサイズを設定する（Ｓ１）。このフィルタのサイズは、通常円形であり、その半径は、元画像の短辺の画素数を所定の数（例えば、２０）で除した値などとする。フィルタは円形であっても、円を含有する正方形の大きさで表すため、この実施形態では、ｎ×ｎ個の要素（フィルタ係数）により構成されるものとする。
【００７２】
次に、設定されたサイズのフィルタを形成する（Ｓ２）。このフィルタ形成処理については、図４を参照して後述する。
【００７３】
次に、元画像の横方向の画素を特定する変数ｘ、縦方向の画素を特定する変数ｙをそれぞれｘ＝０、ｙ＝０とし（Ｓ３）、ｘおよびｙを順次増加して、元画像の全ての画素についてＳ４からＳ７までの処理を行う。
【００７４】
Ｉ（ｘ，ｙ）をｘおよびｙで特定される注目画素の濃度値とし、図２（ｃ）に示すフィルタを用いてフィルタ処理を行い（Ｓ４）、注目画素の周辺平均輝度を求める。このフィルタ処理については、図４を参照して後述する。
【００７５】
次に、このフィルタ処理で求めた平均周辺輝度で元画像の濃度値Ｉ（ｘ，ｙ）を除し、その除した値の自然対数であるリファレンス成分を求める（Ｓ５）。次に、元画像の濃度値Ｉ（ｘ，ｙ）を、リファレンス値で除すことによりイルミナンス成分を算出し、このイルミナンス成分に対してガンマ補正を行い（Ｓ６）、さらに元画像の濃度値Ｉ（ｘ，ｙ）をガンマ補正された値で除すことによりレティネックス処理を完了する（Ｓ７）。
【００７６】
これらの処理を全ての画素について完了したか否かを判断し（Ｓ８）、まだ完了していない場合は（Ｓ８：Ｎｏ）、ｘまたはｙを進めて（Ｓ９）Ｓ４の処理に戻り、完了した場合は（Ｓ８：Ｙｅｓ）、このレティネックス処理を終了する。
【００７７】
次に、図４を参照してＳ２の処理であるフィルタ形成処理について説明する。図４は、フィルタ形成処理を示すフローチャートである。フィルタ形成処理では、まず、対数螺旋関数メモリ１２ｃに記憶されている対数螺旋関数を用いて、θを０度から順次増加し、横方向の値ｘに対応する縦方向の値ｙを演算し、ＲＡＭ１３に設定された曲線データメモリ１３ｂに記憶する（Ｓ１１）。対数螺旋関数は、図２（ｃ）に示す対数螺旋関数Ａと対数螺旋関数Ａ’とが記憶され、この両方の関数について、演算を行って曲線データを記憶する。
【００７８】
次に、フィルタを構成するｎ×ｎの各フィルタ係数を指定するための変数をｉ，ｊとし、ｉ＝０、ｊ＝０とする（Ｓ１２）。以下、ｎ×ｎの各フィルタ係数をＳ１３〜Ｓ１５の処理で求める。まず、変数ｉとｊとにより指定される位置に対数螺旋関数による曲線が存在するか否かを判断する。（Ｓ１３）。
【００７９】
この判断は、ｉの値に対応するｘの値と、ｊの値に対応するｙの値とを求め、曲線データメモリ１３ｂに記憶されたｘの値に対応するｙの値がｊの値に対応するｙの値に一致するか否かにより判断することができる。すなわち、ｘの値に対応して記憶されているｙの値が、ｊの値に対応するｙの値と一致している場合は、ｉおよびｊにより指定される位置に曲線が存在し、ｘの値に対応して記憶されているｙの値が、ｊの値に対応するｙの値と一致しない場合は、ｉおよびｊにより指定される位置に曲線が存在しない。
【００８０】
ｉおよびｊにより指定される位置に曲線が存在している場合は（Ｓ１３：Ｙｅｓ）、ｉおよびｊにより指定される位置に対応するフィルタ係数をガウス関数メモリ１２ｂに記憶されているガウス関数を用いて演算により求め（Ｓ１４）、その求めたフィルタ係数を、ｉおよびｊにより指定される位置に対応してフィルタ係数メモリ１３ｃに記憶する（Ｓ１５）。Ｓ１５の処理を終了した場合またはＳ１３の判断処理において、ｉおよびｊにより指定される位置に曲線が存在しない場合は（Ｓ１３：Ｎｏ）、ｉおよびｊの値がｎの値に達し、フィルタを形成する全ての要素について処理を終えたか否かを判断する（Ｓ１６）。まだ、処理を行っていない要素がある場合は（Ｓ１６：Ｎｏ）、ｉまたはｊを進めることによってまだ処理を行っていない要素を指定し（Ｓ１７）、Ｓ１３の処理に戻り、全ての要素についての処理を終えた場合は（Ｓ１６：Ｙｅｓ）、このフィルタ形成処理を終了する。
【００８１】
次に、図５を参照してＳ４の処理であるフィルタ処理について説明する。図５は、フィルタ処理を示すフローチャートである。フィルタ処理では、まず、フィルタを構成するｎ×ｎの各フィルタ係数を指定するための変数をｉ，ｊとし、ｉ＝０、ｊ＝０とする（Ｓ２１）。以下、全てのフィルタ係数について、Ｓ２２〜Ｓ２４の処理を行う。まず、ｉおよびｊにより指定される位置にフィルタ係数が記憶されているか否かを判断する（Ｓ２２）。ｉおよびｊにより指定される位置にフィルタ係数が記憶されている場合は（Ｓ２２：Ｙｅｓ）、フィルタ係数とｉおよびｊにより指定される位置に対応する元画像の画素の濃度値と乗算を行う（Ｓ２３）。次に、その乗算値を前回までの累算値に加算する（Ｓ２４）。この演算により、畳み込み演算が順次行われることになる。
【００８２】
Ｓ２４の処理を終了した場合、または、Ｓ２２の判断処理において、ｉおよびｊにより指定される位置にフィルタ係数が記憶されていないと判断した場合は（Ｓ２２：Ｎｏ）、ｉおよびｊの値がｎの値に達し、フィルタを形成する全ての要素について処理を終えたか否かを判断する（Ｓ２３）。まだ、処理を行っていない要素がある場合は（Ｓ２３：Ｎｏ）、ｉまたはｊを進めることによってまだ処理を行っていない要素を指定し（Ｓ２６）、Ｓ２２の処理に戻り、全ての要素についての処理を終えた場合は（Ｓ２３：Ｙｅｓ）、このフィルタ処理を終了する。
【００８３】
以上、説明したように上記実施形態によれば、注目画素の周辺領域において、注目画素に対応する位置を原点とする対数螺旋関数により、周辺領域中のフィルタ要素が存在する位置を特定する。よって、フィルタ係数が存在する位置が直線とはならず、元画像に直線の映像が存在する場合に発生する擬似輪郭を抑制することができる。
【００８４】
また、例え、元画像中に曲線をなす画像が存在し、フィルタ係数が存在する位置がなす曲線と略一致する場合であって、擬似輪郭が発生した場合であっても、目立たないという効果がある。
【００８５】
なお、上記実施形態では、フィルタ係数が存在する位置を対数螺旋関数により設定するものとしたが、他の関数により設定してもよい。例えば、螺旋関数の他の一つとして、アルキメデスの渦巻きが知られている。このアルキメデスの渦巻き関数は、次式により表される。
【００８６】
【数２】
0004765667.tif 000003
図６に、対数螺旋関数曲線と、アルキメデスの渦巻き曲線とを示す。アルキメデスの渦巻き曲線は、偏角が同じ場合の他の内側または外側の曲線と等距離を有するものである。
【００８７】
なお、対数螺旋関数により特定される周辺領域内の位置は、注目画素に近い位置では蜜になり、注目画素から遠い位置では、粗になるので、アルキメデスの渦巻きに比べ、画像の劣化を防止することができる。
【００８８】
また、螺旋関数ではなく正葉関数を用いてもよい。図７に正葉関数曲線を示す。この正葉関数は、次式により表わされる。
【００８９】
【数３】
0004765667.tif 000004
図７（ａ）に示すグラフは、上式において、ｎ＝２場合であり、図７（ｂ）に示すグラフは、ｎ＝４の場合である。これらのグラフは、θを０度から３６０まで変化させることにより曲線が描かれる。
【００９０】
フィルタを構成する要素の数により形成される領域の升目の中に、この曲線が存在する場合は、フィルタ係数が存在するもものとしてもよいが、３６０度の間を所定の数（例えば、２００）で除した角度の曲線状の点（図７において、黒丸で示す）が存在する升目のみにフィルタ係数が存在するようにしてもよい。
【００９１】
また、ランダム関数を用いて、周辺領域のいずれにフィルタ係数が存在するかを設定してもよい。図８は、ランダム関数を用いて設定したフィルタの一例を示すものである。
【００９２】
このランダム関数を用いる方法としては、例えば、Ｍ系列のランダム関数を用いて、周辺領域のｎ×ｎの全ての要素について、０から９９までの値を発生させ（重複を許してもよいし、重複を許さないようにしてもよい）、５０以上の値を持つ要素については、フィルタ係数が存在し、５０より小さい要素は、フィルタ係数が存在しないとする。図８（ａ）は、フィルタの全域に渡って均一な確率で、フィルタ係数が存在するか否かを設定したものであるが、図８（ｂ）は、注目画素に近い位置ほど、フィルタ係数が存在する確率を高く設定した場合である。
【００９３】
これは、例えば、必ずフィルタ係数が存在するとし、注目画素に隣接する位置では、ランダム数が、２０以上であればフィルタ係数が存在するとし、さらにその周囲の位置では、ランダム数が、４０以上であればフィルタ係数が存在するとし、さらにその周囲の位置では、ランダム数が、６０以上であればフィルタ係数が存在するなどとすることにより設定することができる。
【００９４】
なお、請求項に記載の演算ステップおよび演算手段は、図５に示すフローチャートのＳ２３およびＳ２４の処理に該当し、フィルタ係数取得ステップおよびフィルタ係数取得手段は、図４に示すフローチャートのＳ１４の処理が該当する。
【００９５】
以上実施形態に基づき本発明を説明したが、本発明は上記各実施形態に何ら限定されるものでなく、本発明の趣旨を逸脱しない範囲内で種々の改良変形が可能であることは容易に推察できるものである。
【００９６】
例えば、上記実施形態では、色表現系はＲＧＢ形式としたが、ＲＧＢ形式以外の他の色表現系、例えば、ＹＣＣ形式やＬａｂ形式に、本発明を適用しても良く、ＹＣＣ形式やＬａｂ形式のように明度と色成分とが分かれている場合にはＬ＊（明度）のみに適用しても良い。
【００９７】
また、上記実施形態では、関数を用いて演算によりフィルタ係数を求めるものとしたが、よく用いる画像のサイズや画質に応じて画質の劣化が少ないフィルタを予めメモリに記憶し、その記憶されたフィルタのフィルタ係数と画素の濃度値とを演算することによりフィルタ処理を行うようにしてもよい。
【００９８】
また、上記実施形態では、ガウス関数と螺旋関数、あるいはガウス関数とランダム関数に基づいて、フィルタ係数を取得するものとしたが、予めＲＯＭ１２などの記憶装置にフィルタが形成する領域内の位置に対応してフィルタ係数を記憶し、そのフィルタ係数とそのフィルタ係数に対応する位置の画素の濃度値とに基づいて畳み込み演算を行うようにしてもよい。
【００９９】
また、上記実施形態では、本発明の画像処理プログラムは、プリンタ１に組み込まれたＣＰＵ１１により実行されるものとしたが、パーソナルコンピュータにアプリケーションとして供給され、パーソナルコンピュータに組み込まれたＣＰＵなどにより実行されるようにしてもよい。
【０１００】
また、上記実施形態では、レティネックス処理がＳＳＲであるとしたが、ＭＳＲの場合においても、使用される複数のフィルタは、ガウス関数のパラメータがフィルタにより異なるだけであるので、本発明を適用できることは言うまでもない。
【０１０１】
また、上記実施形態の画像処理では、ＣＰＵ１１によりレティネックス処理を行うものとしたが、ＤＳＰ（Digital Signal Processor）により行うようにしてもよい。ＤＳＰを用いると、より高速に処理を実行することができる。
【図面の簡単な説明】
【０１０２】
【図１】本発明の実施形態の画像処理プログラムを搭載したプリンタの電気的構成を示すブロック図である。
【図２】対数螺旋関数を用いてフィルタ係数が存在する位置を設定する方法を概略的に示す図であり、（ａ）は、対数螺旋関数曲線を、（ｂ）は、２つの対数螺旋関数曲線を組み合わせたグラフを示し、（ｃ）は、２つの対数螺旋関数を用いて作成したフィルを示す模式図である。
【図３】プリンタで実行される画像処理を示すフローチャートである。
【図４】図３の画像処理の中で実行されるフィルタ形成処理を示すフローチャートである。
【図５】図３の画像処理の中で実行されるフィルタ処理を示すフローチャートである。
【図６】対数螺旋関数曲線とアルキメデスの渦巻きとを示すグラフである。
【図７】正葉関数曲線を示すグラフである。
【図８】ランダム関数を用いて形成したフィルタを示す模式図であり、（ａ）は、フィルタの全域に渡って均一な確率でフィルタ係数が存在するとした場合であり、（ｂ）は、注目画素に近い位置ほどフィルタ係数が存在する確率が高い場合である。
【図９】従来の技術におけるフィルタの構成を示す模式図であり、（ａ）は、フィルタの全域にフィルタ係数が存在する場合であり、（ｂ）は、縦方向および横方向のフィルタ係数を省いた場合である。
【図１０】従来の技術における問題点を説明するための画像とフィルタの構成とを示す模式図である。
【符号の説明】
【０１０３】
１                        プリンタ
１１                      ＣＰＵ
１２                      ＲＯＭ
１２ａ                    画像処理プログラムメモリ
１２ｃ                    対数螺旋関数メモリ
【図１】
0004765667.tif 000005
【図２】
0004765667.tif 000006
【図３】
0004765667.tif 000007
【図４】
0004765667.tif 000008
【図５】
0004765667.tif 000009
【図６】
0004765667.tif 000010
【図７】
0004765667.tif 000011
【図８】
0004765667.tif 000012
【図９】
0004765667.tif 000013
【図１０】
0004765667.tif 000014