JP4415999B2 - 画像処理装置および画像処理プログラム - Google Patents

画像処理装置および画像処理プログラム Download PDF

Info

Publication number
JP4415999B2
JP4415999B2 JP2007094493A JP2007094493A JP4415999B2 JP 4415999 B2 JP4415999 B2 JP 4415999B2 JP 2007094493 A JP2007094493 A JP 2007094493A JP 2007094493 A JP2007094493 A JP 2007094493A JP 4415999 B2 JP4415999 B2 JP 4415999B2
Authority
JP
Japan
Prior art keywords
mask
original image
value
elements
reduced
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007094493A
Other languages
English (en)
Other versions
JP2008252772A (ja
Inventor
智彦 長谷川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Brother Industries Ltd
Original Assignee
Brother Industries Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Brother Industries Ltd filed Critical Brother Industries Ltd
Priority to JP2007094493A priority Critical patent/JP4415999B2/ja
Priority to US12/057,838 priority patent/US8165418B2/en
Publication of JP2008252772A publication Critical patent/JP2008252772A/ja
Application granted granted Critical
Publication of JP4415999B2 publication Critical patent/JP4415999B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、画像処理装置および画像処理プログラムに関し、特に、レティネックス処理におけるフィルタ処理を高速化すると共に、フィルタ処理を高速化してもレティネックス処理で得られる画像の品質を良好に保持することができる画像処理装置および画像処理プログラムに関するものである。
逆光条件下で被写体が撮像された場合、被写体部分の画像は、詳細な態様が判別困難となるほど明度やコントラストの低い不明瞭な逆光画像となる。かかる逆光画像のみならず、露光の過不足や、撮像時のぶれやぼけ、ノイズ、光量不足などによる劣悪な画像を、画像処理によって明度やコントラストを向上させて画質を改良することが行われている。かかる画像処理の1手法として、レティネックス処理(Retinex処理)が知られている。レティネックス処理は、主に低画質部分の画質改良を行うものである。このレティネックス処理では、元の画像は、リフレクタンス成分(反射光成分)とイルミナンス成分(照明光成分)との2の構成成分で成り立っているとされる。
レティネックス処理は、大略的には、元の画素値から反射光成分値と照明光成分値とを算出し、照明光成分値に対し反射光成分値に応じた補正を施した後、その補正された照明光成分値と元の画素値とを用いて出力値を生成することで画像補正を達成するものである。
図13は、かかるレティネックス処理の概要を示したものである。この図13を参照して、具体的にレティネックス処理の内容を説明する。
レティネックス処理では、まず、元の画像の各画素(注目画素)の反射光成分値を求めるために周辺画素の平均輝度値が求められる。周辺画素は、注目画素を含む注目画素周辺の領域に属する画素である。この周辺画素の平均輝度値は、周辺画素に対し、注目画素からの距離に応じた重みを加味してその画素値を平均(積和演算)したものであり、換言すれば、周辺画素の値を反映させることで元の注目画素の画素値を補正した値となっている。
この周辺画素の平均輝度値を求めるためには、まず、周辺画素の平均輝度値を算出するためのMSRマスク(ガウスフィルタ)が生成される(図13(a))。元画像(入力画像)の各画素を注目画素として(1)式に従ったガウスフィルタ処理によって、周辺画素の平均輝度値が算出される(図13(b))。
図13の(b−1)には、M×Nのマトリクスで形成されたガウスフィルタ(MSRマスク)を模式的に示している。また、図13の(b−2)には、このガウスフィルタのマトリクスの各要素に格納されるフィルタ係数(重み)の内容を示している。尚、図13の(b−2)におけるグラフは、横軸に各要素の位置(フィルタサイズ)、縦軸にフィルタ係数を示している。横軸の中心付近に示した「0」は、注目画素に重ねられるフィルタ中心位置であり、「0」から遠ざかるほどフィルタ中心から遠い要素の位置となる。図13の(b−2)に示すように、ガウスフィルタは、中心値を1とすると共に、中心から四方へ向かって正規分布関数に従って次第にフィルタ係数が小さくなるように設計されている。
Figure 0004415999
ここで、xは、横方向の座標を、yは、縦方向の座標を、I(x,y)は、座標(x、y)における信号強度値(画素値,画素信号の値)を、F(x,y)は、ガウスフィルタを、*は、畳み込み演算(コンボリューション)をそれぞれ示す。
フィルタを用いてなされるこのようなフィルタ処理、即ち、フィルタ演算は、フィルタ処理する元画像の注目画素とフィルタ中心とを重ね合わせ、フィルタの各要素に配置(格納)されたフィルタ係数(重み)と元画像の対応する位置の画素値とを乗算すると共にその乗算で得られた各値の総和を算出する積和演算を、各画素について行う畳み込み演算である。尚、フィルタ演算は、求めた総和をフィルタ係数の合計値で除す演算を含むものであってもよい。
ガウスフィルタ処理により、各画素をそれぞれ注目画素としてM×Nの領域にガウスフィルタF(x,y)による畳み込み演算が行われると、注目画素からの距離に応じた重みを加味しつつ平均された周辺画素の平均輝度値が、各画素のそれぞれに対応して算出されることとなる。上記したように、ガウスフィルタではマトリクスの各要素に配置された重みが距離に応じて異なる値となっているので、算出される平均輝度値は、周辺画素領域に属する各画素値を単純に平均したものとは異なる。
平均輝度値が求められると、反射光成分値が求められる。具体的には、(2)式に従って、元画像の各画素値を、算出された対応する平均輝度値で除し、得られた値を自然対数化する(図13(c))。
Figure 0004415999
この対数化された値(対数値)をRとする。かかる対数演算では、元画像の各画素毎に、対応する対数値R(即ち、R(x,y))が求められる。求められた対数値Rは、注目画素と周辺画素との相対的な明るさを示すものであって、元の画素の反射光成分値に相当するが、計算機処理でき、且つ、画素値として取り扱える値に変換する必要がある。
(2)式からわかるように、この対数値Rは、注目画素から周辺画素の画素値を差分したものの対数である。つまり、両者の相対的明るさを示すものである。従って、注目画素と周辺画素との明るさに差が無ければ、対数値Rは「0」となるが、レティネックス処理では、後半の演算処理で反射光成分値は分母に挿入されるので、反射光成分値が「0」であると演算不能となってしまうのである。
故に、この対数値Rが求められると、対数値Rを正規化するために全対数値Rの最大値から最小値までの範囲で対数値Rのヒストグラム(頻度分布)が作成される(図13(d))。
その後、ヒストグラムの補正を行う(図13(e))。かかるヒストグラム補正では、作成されたヒストグラムからメジアン値Mを求め、そのメジアン値Mから大きい側へ所定%(例えば45%)の画素数を含む範囲の上限値をU、メジアン値Mから小さい側へ所定%(例えば45%)の画素数を含む範囲の下限値をDとする。
続いて、対数値Rを正規化した正規化反射率(正規化レティネックス値)refleを求める(図13(f))。具体的には、求められた上限値Uおよび下限値Dの値を、それぞれ予め定めた上限値uおよび下限値dとして、先に算出された上限値U〜下限値Dの範囲の対数値Rを上限値u〜下限値dの範囲の値に正規化する(正規化反射率refleの算出)。この正規化は、例えば、(3)式に従って実行される。
Figure 0004415999
尚、下限値D以下である対数値Rは下限値dに、上限値U以上である対数値Rは、上限値uとされる。ここで、下限値dを「0」を超える値とすることで、先に求められた対数値Rは、計算機処理できるように正規化された正規化反射率refleとされるのである。得られた正規化反射率refleは、元画像の反射光成分値(正規化された反射光成分値)であって、最終的な反射光成分値(出力値Out)を求めるためのパラメータとなる値である。
その後、正規化反射率refleに対し、カラー補正処理であるCR処理が実行された後(図13(g))、出力値Outが生成される。出力値Outは、(4)式に従って算出される。この出力値Outは、出力画像の各画素の画素値(出力画像データ)となる。
Figure 0004415999
レティネックス処理では、上記したように、画素値は、照明光成分値と反射光成分値との合成値とされており、照明光成分値は輝度を反映し、反射光成分値は色を反映するものとされている。ここで、照明光成分値は、元画像の画素値を反射光成分値で除して求められるので、(4)式においては、分母が照明光成分値に相当する。尚、元画像の画素値は「0」〜「255」とされているので、算出された正規化反射率refle(x,y)についても「0」〜「255」で取り扱うべく、255が乗算されて画素値として取り扱われる値に変換されている。
(4)式では、元画像の画素値を照明光成分値で除しているので、算出される出力値Outは、反射光成分値となる。出力画像データの画素値としては、色を形成する値が必要であるので、反射光成分値で出力値Outが求められるのである。当然の事ながら、(4)式からも解るように、算出される出力値Outは、ガンマ補正によって明度や階調(コントラスト)が補正された照明光成分が反映された値となっている。
この(4)式に従えば、元画像の画素値と出力画像の画素値との対応関係は、反射光成分値(正規化反射率refle)に応じて変化するグラフ曲線となる。(4)式で示される関数では、一般に、入力された元画像の画素値は、画素値が小さい側、即ち暗部においては増大(伸張)される補正がなされて、出力値Outとして出力されるように設計されている。その結果、入力値の僅かな変化が大きく出力値Outに反映され、階調変化を増大させるコントラストの強調が行われることとなる。従って、レティネックス処理を行えば、入力された元画像に対し逆光画像部分などの低画質部分の画質が改良された出力画像を生成することができる。
更に、(4)式で示される関数は、元画像の画素値が大きい側、即ち、明部においては、入力された画素値は、正規化反射率refleが小さくなるほどより大きく減少(圧縮)されて出力されるように設計されている。
つまり、レティネックス処理において正規化反射率が小さな値であるほど(言い換えれば対数値Rが正であるよりも負であるほうが)、元画像データの画素値が大きくなるにつれ、生成される出力値Outが大きく圧縮される傾向にある。言い換えれば、正規化反射率refleが大きくなるほど、元画像の画素値が同じでも出力値Outは大きくなる。このように、同じ入力値でも、正規化反射率refle(対数値R)に応じて、即ち周辺画素との相対的な明るさに応じて、その出力値Outは広い範囲の値を取り得るので、明部において階調変化を増長(形成)し、コントラストを向上させることができるのである。尚、画素値と輝度(明るさ)とは連動しており、画素値が大きいほど輝度は高く(明るく)なり、逆に画素値が小さいほど輝度は低く(暗く)なる。
特開2001−69525号公報(特許文献1)には、このレティネックス処理をRGBの各プレーンで独立に行った場合に、カラーバランスが崩れたり色ずれが発生するという問題点を解決するために、RGB値をYCbCrやYIQという輝度成分と色成分により構成される座標空間に変換し、輝度成分Yに対してのみレティネックス処理を施し、色成分を維持したまま、RGBに戻すという方法が開示されている。この方法を用いると輝度成分のみが調整され、色成分は調整されないのでカラーバランスが崩れたり色ずれが発生することがない。また、この方法では、輝度成分のみにレティネックス処理を行うので、RGBの各プレーンそれぞれにレティネックス処理を行う場合に比べ、計算量が少なく、高速で処理を実行することができとともに、R(x,y)を正規化するために、RGBそれぞれについて記憶する必要がなく、輝度のみについて記憶すればよいので、必要な記憶容量は少なくなる。
また、特許3731577号(特許文献2)には、このレティネックス処理の処理速度を高速にする方法が開示されている。この方法は、元画像を平均画素法などの方法により縮小画像(解像度が低い)を形成し、その縮小画像の各画素について周辺平均輝度を求めた周辺平均輝度画像(ボケ画像)を形成し、そのボケ画像を拡大した画像と元画像からレティネックス処理画像を形成し、更に、そのレティネックス処理画像と元画像とから出力画像を形成している。
特開2001−69525号公報 特許3731577号公報
しかしながら、従来の文献に開示された処理では、元画像の全画素について、それぞれ反射光成分値を演算して記憶し、全画素分の反射光成分値を得た後に、その反射光成分値を集計して正規化パラメータを決定するので、全画素分の反射光成分値を記憶するための膨大な記憶容量が必要という問題点があった。
そこで、本出願人は、上記問題点を解決するために鋭意検討した結果、元画像の反射率を演算するのに先立って、縮小画像の反射光成分値である対数値Rsを取得し、その縮小画像の対数値Rsを用いて正規化パラメータ(上記した対数値Rから求められる上限値Uおよび下限値Dの値)を決定することを想到した(未公知)。なお、「s」は、縮小画像についての接尾辞であり、元画像については、接尾辞を付さないものとする。
正規化パラメータを求めるために、縮小画像を用いた方が、対数値を演算すべき画素の数を低減することができるので、メモリ使用量を小さくすることができる。また、正規化パラメータを事前に決定しておくことにより、元画像について演算された対数値Rは、他の画素の対数値Rの演算終了を待たずに、正規化して直ぐに出力することができるので、画像の出力開始までの時間が短縮し、処理を高速化することができる。
一方で、フィルタ演算は、各要素に格納された各フィルタ係数を元画像の対応する位置の画素値に乗算して加算する(乗算値の総和を求める)積和演算を、各画素について行う畳み込み演算であるため、その計算量が非常に多い。そこで、一般的に、フィルタ処理では、全要素に全てフィルタ係数が配置されて形成されたフィルタに代えて、フィルタ係数が各所で間引かれたフィルタを用いてフィルタ演算をすることが往々にして行われている。つまり、フィルタ要素が格納された要素のみを用いて積和演算を行うのである。
ここで、縮小画像から正規化パラメータを導出することにより処理を高速化する場合、ガウスフィルタを用いたフィルタ演算は、元画像と縮小画像とのそれぞれに対して行わなければならない。かかる場合に、両方のフィルタが的確に設定されていないと、フィルタ処理して得られる平均画素値を用いて対数値を求めた場合に、その演算結果(対数値の分布態様)が、元画像と縮小画像とでは大きく異なるものとなってしまうという問題点があった。つまり、元画像、縮小画像の双方においてそれぞれに用いられるフィルタが、不用意に作成されたものであると、縮小画像から決定された正規化パラメータが元画像に対しては不適切なパラメータとなってしまう。正規化パラメータは、対数値の頻度分布に基づいて設定されるものであるからである。その結果、縮小画像から得られた正規化パラメータを用いて元画像の対数値Rの正規化を行うと、レティネックス処理の精度を低下させてしまい、画質の補正が十分に行われないという問題点があった。
更には、縮小画像用のフィルタの大きさと元画像用のフィルタの大きさとの比を、画像サイズに応じたものとすることは、フィルタ処理の結果(対数値の分布態様)を縮小画像と元画像とで同様のものを得るための要件の1つである。しかしながら、入力される元画像の大きさは様々であるので、元画像の大きさに応じてその都度フィルタサイズが変動するといった事態が生じる。このため、フィルタを記憶するために必要なメモリ量が不明確となってしまう。言い換えれば、入力される元画像の大きさが不明であるために、元画像用のフィルタサイズの上限値が不明となってしまうのである。このため、場合によっては、フィルタサイズが当初予期したものよりも大きなものとなって、フィルタを記憶するためのメモリの確保が困難になるという問題点があった。また、入力される元画像がどのような大きさであっても、その元画像を処理するためのフィルタを記憶できるようにしようとすれば、フィルタを記憶するために膨大なメモリを割当ねばならず、必要なメモリ容量を増大させてしまうという問題点があった。
本発明は、上記問題点を解決するためになされたものであり、レティネックス処理におけるフィルタ処理を高速化すると共に、フィルタ処理を高速化してもレティネックス処理で得られる画像の品質を良好に保持することができる画像処理装置および画像処理プログラムを提供することを目的としている。
上記目的を達成するために、請求項1記載の画像処理装置は、元画像の注目画素を含む周辺画素領域に対するフィルタ演算を行って各注目画素に対応する周辺画素の平均画素値をそれぞれ生成する元画像平均画素値生成手段と、前記元画像平均画素値生成手段により生成された平均画素値と元画像の注目画素の画素値とに対する対数演算処理に基づいて、注目画素と周辺画素との明るさの比を示す反射光成分値を元画像の各画素について算出する元画像反射光成分値算出手段と、前記元画像反射光成分値算出手段により算出された元画像の各反射光成分値と、注目画素の画素値とに基づくと共に、反射光成分値に応じて変化する画素値と出力値との対応関係に従って注目画素の画素値を出力値に変換する変換手段とを有し、前記変換手段により、元画像の注目画素の画素値を、注目画素と周辺画素との明るさの比に応じて補正するものであり、前記変換手段は、元画像の画素値を反射光成分値に基づいて変換する場合には、反射光成分値を正規化パラメータに従って正規化した正規化反射光成分値を用いて元画像の画素値を変換するものであり、前記正規化パラメータを設定するために元画像を縮小して縮小画像を形成する縮小画像形成手段と、前記縮小画像形成手段により形成された縮小画像の各画素を注目画素とし、当該注目画素を含む周辺画素領域に対するフィルタ演算を行って、縮小画像の各注目画素に対応する周辺画素の平均画素値をそれぞれ生成する縮小平均画素値生成手段と、前記縮小平均画素値生成手段により生成された平均画素値と縮小画像の注目画素の画素値とに基づくレティネックス演算処理に基づいて、縮小画像の各画素の反射光成分値を算出し、算出された反射光成分値の最大値から最小値までの範囲で、前記縮小画像の前記反射光成分値の頻度分布を形成してその頻度分布のメジアン値を特定し、その特定したメジアン値を含む所定の数値範囲の下限値と上限値とを、前記変換手段が用いる正規化反射光成分値の正規化パラメータとして設定する正規化パラメータ設定手段と、前記元画像平均画素値生成手段でのフィルタ演算に用いられ仮想的に2次元マトリクスに配置される要素に格納されたフィルタ係数を有する元画像用マスクを記憶する元画像用マスク記憶手段と、記縮小平均画素値生成手段が実行するフィルタ演算で用いられる縮小画像用マスクを生成する縮小画像用マスク生成手段とを備え、前記縮小画像用マスク生成手段は、元画像と縮小画像とのサイズ比に基づいて縮小画像用マスクのマスクサイズを決定するマスクサイズ決定手段と、そのマスクサイズ決定手段により決定されたマスクサイズの縮小画像用マスクの全要素数で、前記元画像用マスク記憶手段に記憶される元画像用マスクを区分する区分手段と、縮小画像用マスクの各要素について、正規分布関数に従い、フィルタ係数を算出するフィルタ係数算出手段と、前記フィルタ係数算出手段により前記縮小画像用マスクの各要素について算出されたフィルタ係数に対し、前記区分手段にて区分された元画像用マスクの各区画のうち、縮小画像用マスクの要素の配置に対応する区画に関する値で、重み付けをする重み付けフィルタ係数算出手段と、前記重み付けフィルタ係数算出手段により得られる値を、フィルタ係数として、前記縮小画像用マスクの要素に格納するフィルタ係数格納手段とを備えたものである。
請求項2記載の画像処理装置は、請求項1記載の画像処理装置において、前記元画像平均画素値生成手段によるフィルタ演算において演算に関わる元画像用マスクの要素の数は、前記元画像用マスクを構成する全要素の数よりも少なく、前記元画像用マスクは、各要素を特定する値が乱数に従って選択されることで、全要素の内のフィルタ演算に実際に用いられる要素が決定されたものであり、前記重み付けフィルタ係数算出手段は、前記フィルタ係数算出手段により算出されるフィルタ係数に対し、前記区分手段にて区分された元画像用マスクの各区画のうち、縮小画像用マスクの要素の配置に対応する区画において前記元画像平均画素値生成手段によるフィルタ演算に実際に用いられる要素数で、重み付けをするものであり、前記縮小画像用マスク生成手段は、元画像用マスクで使用される要素のパターンを反映した縮小画像用マスクを生成するものである。
請求項3記載の画像処理装置は、請求項1記載の画像処理装置において、前記元画像平均画素値生成手段によるフィルタ演算において演算に関わる元画像用マスクの要素の数は、前記元画像用マスクを構成する全要素よりも少ない数であり、前記元画像用マスクは、各要素を特定する値が乱数に従って選択されることで、全要素の内のフィルタ演算に実際に用いられる要素が決定されたものであり、前記重み付けフィルタ係数算出手段は、前記フィルタ係数算出手段により算出されるフィルタ係数に対し、前記区分手段にて区分された元画像用マスクの各区画のうち、縮小画像用マスクの要素の配置に対応する区画において、前記元画像平均画素値生成手段によるフィルタ演算に実際に用いられる要素に格納されているフィルタ係数の総和で、重み付けをするものであり、前記縮小画像用マスク生成手段は、元画像用マスクの内容を反映した縮小画像用マスクを生成するものである。
請求項4記載の画像処理装置は、請求項2又は3に記載の画像処理装置において、前記区分手段は、生成された各区画を縮小画像用マスクの各要素に対応させた場合に元画像用マスク側に余剰の要素や不足の要素を発生させることなく、元画像用マスクの全要素を配分して、元画像用マスクを縮小画像用マスクの要素数分に区分するものである。
請求項5記載の画像処理装置は、請求項4記載の画像処理装置において、前記区分手段は、縮小画像用マスクの大きさと元画像用マスクの大きさとの比に基づいて、縮小画像用マスクの1の要素に対応する元画像用マスクの要素数を算出する対応要素数算出手段と、前記対応要素数算出手段により算出された要素数毎に元画像用マスクを分割した場合の各分割位置を算出する分割位置算出手段と、前記分割位置算出手段により算出された各分割位置に隣接する2の要素の内のより近いほうへ、分割位置をずらして分割位置間に含まれる要素数を整数化する整数化手段とを備えており、分割位置に応じて各分割位置間に含まれる要素数を変更しつつ元画像用マスクに区画を割り付けることで、元画像用マスク側に余剰の要素や不足の要素を発生させることなく、元画像用マスクの全要素を配分するものである。
請求項記載の画像処理装置は、請求項1からのいずれかに記載の画像処理装置において、前記マスクサイズ決定手段は、元画像と縮小画像とのサイズ比に基づいて形成される縮小画像用マスクの要素数が、偶数となるかを判断する偶数判断手段と、前記偶数判断手段により要素数が偶数になると判断されると、要素数を増加または減少させて、縮小画像用マスクの要素数が奇数となるように調整する要素数調整手段とを備えている。
請求項記載の画像処理プログラムは、元画像の補正処理を行う画像処理装置で実行され、元画像の注目画素を含む周辺画素領域に対するフィルタ演算を行って各注目画素に対応する周辺画素の平均画素値をそれぞれ生成する元画像平均画素値生成ステップと、前記元画像平均画素値生成ステップにより生成された平均画素値と元画像の注目画素の画素値とに対する対数演算処理に基づいて、注目画素と周辺画素との明るさの比を示す反射光成分値を元画像の各画素について算出する元画像反射光成分値算出ステップと、前記元画像反射光成分値算出ステップにより算出された元画像の各反射光成分値と、注目画素の画素値とに基づくと共に、反射光成分値に応じて変化する画素値と出力値との対応関係に従って注目画素の画素値を出力値に変換する変換ステップとを有し、前記変換ステップにより、元画像の注目画素の画素値を、注目画素と周辺画素との明るさの比に応じて補正するものであり、前記変換ステップは、元画像の画素値を反射光成分値に基づいて変換する場合には、反射光成分値を正規化パラメータに従って正規化した正規化反射光成分値を用いて元画像の画素値を変換するものであり、前記正規化パラメータを設定するために元画像を縮小して縮小画像を形成する縮小画像形成ステップと、前記縮小画像形成ステップにより形成された縮小画像の各画素を注目画素とし、当該注目画素を含む周辺画素領域に対するフィルタ演算を行って、縮小画像の各注目画素に対応する周辺画素の平均画素値をそれぞれ生成する縮小平均画素値生成ステップと、前記縮小平均画素値生成ステップにより生成された平均画素値と縮小画像の注目画素の画素値とに基づくレティネックス演算処理に基づいて、縮小画像の各画素の反射光成分値を算出し、算出された反射光成分値の最大値から最小値までの範囲で、前記縮小画像の前記反射光成分値の頻度分布を形成してその頻度分布のメジアン値を特定し、その特定したメジアン値を含む所定の数値範囲の下限値と上限値とを、前記変換ステップが用いる正規化反射光成分値の正規化パラメータとして設定する正規化パラメータ設定ステップと、前記元画像平均画素値生成ステップでのフィルタ演算に用いられ仮想的に2次元マトリクスに配置される要素に格納されたフィルタ係数を有する元画像用マスクを、前記画像処理装置の内部に記憶する元画像用マスク記憶ステップと、記縮小平均画素値生成ステップが実行するフィルタ演算で用いられる縮小画像用マスクを生成する縮小画像用マスク生成ステップとを備え、前記縮小画像用マスク生成ステップは、元画像と縮小画像とのサイズ比に基づいて縮小画像用マスクのマスクサイズを決定するマスクサイズ決定ステップと、そのマスクサイズ決定ステップにより決定されたマスクサイズの縮小画像用マスクの全要素数で、前記元画像用マスク記憶ステップにより記憶される元画像用マスクを区分する区分ステップと、縮小画像用マスクの各要素について、正規分布関数に従い、フィルタ係数を算出するフィルタ係数算出ステップと、前記フィルタ係数算出ステップにより前記縮小画像用マスクの各要素について算出されたフィルタ係数に対し、前記区分ステップにて区分された元画像用マスクの各区画のうち、縮小画像用マスクの要素の配置に対応する区画に関する値で、重み付けをする重み付けフィルタ係数算出ステップと、前記重み付けフィルタ係数算出ステップにより得られる値を、フィルタ係数として、前記縮小画像用マスクの要素に格納するフィルタ係数格納ステップとを備えたものである。
請求項記載の画像処理プログラムは、請求項記載の画像処理プログラムにおいて、前記元画像平均画素値生成ステップによるフィルタ演算において演算に関わる元画像用マスクの要素の数は、前記元画像用マスクを構成する全要素よりも少ない数であり、前記元画像用マスクは、各要素を特定する値が乱数に従って選択されることで、全要素の内のフィルタ演算に実際に用いられる要素が決定されたものであり、前記重み付けフィルタ係数算出ステップは、前記フィルタ係数算出ステップにより算出されるフィルタ係数に対し、前記区分ステップにて区分された元画像用マスクの各区画のうち、縮小画像用マスクの要素の配置に対応する区画において前記元画像平均画素値生成ステップによるフィルタ演算に実際に用いられる要素数で、重み付けをするものであり、前記区分ステップは、縮小画像用マスクの大きさと元画像用マスクの大きさとの比に基づいて、縮小画像用マスクの1の要素に対応する元画像用マスクの要素数を算出する対応要素数算出ステップと、前記対応要素数算出ステップにより算出された要素数毎に元画像用マスクを分割した場合の各分割位置を算出する分割位置算出ステップと、前記分割位置算出ステップにより算出された各分割位置に隣接する2の要素の内のより近いほうへ、分割位置をずらして分割位置間に含まれる要素数を整数化する整数化ステップとを備えており、分割位置に応じて各分割位置間に含まれる要素数を変更しつつ元画像用マスクに区画を割り付けることで、元画像用マスク側に余剰の要素や不足の要素を発生させることなく、元画像用マスクの全要素を配分するものである。
請求項記載の画像処理プログラムは、請求項記載の画像処理プログラムにおいて、前記元画像平均画素値生成ステップによるフィルタ演算において演算に関わる元画像用マスクの要素の数は、前記元画像用マスクを構成する全要素よりも少ない数であり、前記元画像用マスクは、各要素を特定する値が乱数に従って選択されることで、全要素の内のフィルタ演算に実際に用いられる要素が決定されたものであり、前記重み付けフィルタ係数算出ステップは、前記フィルタ係数算出ステップにより算出されるフィルタ係数に対し、前記区分ステップにて区分された元画像用マスクの各区画のうち、縮小画像用マスクの要素の配置に対応する区画において、前記元画像平均画素値生成ステップによるフィルタ演算に実際に用いられる要素に格納されているフィルタ係数の総和で、重み付けをするものであり、前記区分ステップは、縮小画像用マスクの大きさと元画像用マスクの大きさとの比に基づいて、縮小画像用マスクの1の要素に対応する元画像用マスクの要素数を算出する対応要素数算出ステップと、前記対応要素数算出ステップにより算出された要素数毎に元画像用マスクを分割した場合の各分割位置を算出する分割位置算出ステップと、前記分割位置算出ステップにより算出された各分割位置に隣接する2の要素の内のより近いほうへ、分割位置をずらして分割位置間に含まれる要素数を整数化する整数化ステップとを備えており、分割位置に応じて各分割位置間に含まれる要素数を変更しつつ元画像用マスクに区画を割り付けることで、元画像用マスク側に余剰の要素や不足の要素を発生させることなく、元画像用マスクの全要素を配分するものである。
請求項1記載の画像処理装置によれば、元画像の画素値を反射光成分値に基づいて変換する場合、反射光成分値を正規化パラメータに従って正規化した正規化反射光成分値を用いて元画像の画素値を変換するが、この正規化パラメータを、縮小画像の各画素の反射光成分値の頻度分布に基づいて設定するので、元画像の反射光成分値を用いて正規化パラメータを求めるよりも、正規化パラメータを求める際の演算数が少なく、処理を高速で行うことができると共に、必要なメモリ量を節約できる。
ここで、元画像および縮小画像のそれぞれに対し、平均画素値を求めるためのフィルタ演算が行われるが、縮小画像のフィルタ演算に用いられる縮小画像用マスクは、元画像用マスク記憶手段に記憶される元画像用マスクを、元画像と縮小画像とのサイズ比に基づいて縮小して生成する。このため、元画像および縮小画像のそれぞれに対して適用されるマスクは、元画像と縮小画像とのサイズ比に応じたものとなり、画像のサイズ比と無関係に生成されたマスクを用いてフィルタ演算を行う場合よりも、縮小画像の平均画素値に基づいて求められる反射光成分値の頻度分布の態様を、元画像の反射光成分値の頻度分布に整合させることができる。その結果、縮小画像の反射光成分値の頻度分布に基づいて設定される正規化パラメータを、元画像に適合する適切なものとすることができ、処理速度を向上させつつ、精度のよい画像補正を実行することができるという効果がある。
更に、マスクを用いてフィルタ処理を行う場合に、元画像用マスクから縮小画像用マスクを生成するので、元画像用マスクの大きさを固定サイズとし、縮小画像用マスクの大きさを変動させることで双方のマスクを画像のサイズ比に応じたものとすることができる。その上、元画像用マスクのマスクサイズを既知とすることができる。従って、例えば、縮小画像用マスクの大きさを固定して、元画像と縮小画像とのサイズ比に応じたマスクを作成する場合のように、入力される元画像のサイズに応じて元画像用マスクの大きさが変動することがない。言い換えれば、元画像用マスクのマスクサイズの上限値が不明になることはない。
このため、元画像用マスクの設計段階で、適切な大きさで元画像用マスクを設計しておけば、マスクサイズの上限値が不明である場合に行われるような元画像用マスクを記憶するための膨大なメモリ割当てを不要にでき、画像補正を実行するために必要なメモリ量を低減することができるという効果がある。また、フィルタ演算に際し、マスクを記憶するためのメモリの確保を容易とすることができる上、マスクを記憶できないが故にフィルタ演算が不能になるといった事態を回避できるという効果がある。
請求項2記載の画像処理装置によれば、請求項1記載の画像処理装置の奏する効果に加え、元画像用マスクは、フィルタ演算において演算に関わる要素が、元画像用マスクを構成する全要素よりも少ない数で配置されたものであるので、演算に使用される要素は間引かれたものとなって、フィルタ処理における演算数を低減して、演算を高速化することができるという効果がある。
元画像用マスクを縮小して縮小画像用マスクを生成すると、マスクを構成する要素数が減少するため、元画像用マスクの要素の間引きのパターンと同じパターンで縮小画像用マスクを形成することは困難となる。しかし、本装置においては、縮小画像用マスクの全要素数で区分された元画像用マスクの1区画においてフィルタ演算に実際に用いられる要素数で、当該1区画に対応する縮小画像用マスクの1の要素に格納されるフィルタ係数の重み付けを行う。よって、元画像用マスクの区画内のフィルタ演算に用いられる要素数に応じて、縮小画像用マスクの対応する要素のフィルタ係数を変化させることができる。これによれば、縮小画像用マスクのフィルタ係数に、元画像用マスクの対応する区画、即ち、対応する複数の要素群の内容(各々の要素の使用状態)を反映させることができる、言い換えれば、元画像用マスクの要素の間引きパターンを重みに変換してフィルタ係数に付与することができ、元画像用マスクの間引きのパターンが擬似的に模写された高度に相関性を有する縮小画像用マスクを形成することができるという効果がある。
従って、かかるマスクを用いることで、縮小画像の平均画素値に基づいて求められる反射光成分値の頻度分布の態様を、元画像の反射光成分値の頻度分布に、より整合させることができる。故に、その結果、縮小画像の反射光成分値の頻度分布に基づいて設定される正規化パラメータを、元画像に適合する適切なものとすることができるので、処理速度を向上させつつ、より一層、精度のよい画像補正を実行することができるという効果がある。
請求項3記載の画像処理装置によれば、請求項1記載の画像処理装置の奏する効果に加え、元画像用マスクは、フィルタ演算において演算に関わる要素が、元画像用マスクを構成する全要素よりも少ない数で配置されたものであるので、演算に使用される要素は間引かれたものとなって、フィルタ処理における演算数を低減して、演算を高速化することができるという効果がある。
元画像用マスクを縮小して縮小画像用マスクを生成すると、マスクを構成する要素数が減少するため、元画像用マスクの要素の間引きのパターンと同じパターンで縮小画像用マスクを形成することは困難となる。しかし、本装置においては、縮小画像用マスクの全要素数で区分された元画像用マスクの1区画において、フィルタ演算に実際に用いられる要素に格納されたフィルタ係数の総和で、当該1区画に対応する縮小画像用マスクの1の要素に格納されるフィルタ係数の重み付けを行う。このため、縮小画像用マスクのフィルタ係数に付与される重みは、元画像用マスクにおいて対応する区画において使用されるフィルタ係数の個数によっても、また、使用される個々のフィルタ係数の値によっても変化することとなる。
よって、縮小画像用マスクのフィルタ係数には、元画像用マスクによるフィルタ演算においてどれほどの数の要素が関わったか(即ち間引きのパターン)を反映できる上、元画像用マスクで使用されるフィルタ係数そのものの値についても反映させることができるという効果がある。フィルタ演算においては、要素に格納されているフィルタ係数に画素値が演算されるので、フィルタ係数の値に応じて異なる平均画素値が導出される。故に、元画像用マスクにおいてフィルタ演算に実際に用いられる要素数を重みとしてフィルタ係数に付与するよりも、用いられる要素に格納されているフィルタ係数の総和で、フィルタ係数を重み付けすることにより、より一層高度に元画像用マスクの内容を反映した縮小画像用マスクを生成することができる。
その結果、かかるマスクを用いることで、縮小画像の平均画素値に基づいて求められる反射光成分値の頻度分布の態様を、元画像の反射光成分値の頻度分布に、より整合させることができ、縮小画像の反射光成分値の頻度分布に基づいて設定される正規化パラメータを、元画像に適合する適切なものとすることができる。故に、処理速度を向上させつつ、より一層、精度のよい画像補正を実行することができるという効果がある。
さらに、請求項2,3に記載の画像処理装置によれば、元画像用マスクは、各要素を特定する値が乱数に従って選択されることで全要素の内のフィルタ演算に実際に用いられる要素が決定されたものであるので、人為的に、フィルタ演算に実際に用いられる要素を決定する(フィルタ演算に用いられない要素を間引く)場合に比べて、よりランダムにフィルタ演算に実際に用いられる要素を2次元マトリクスに配置することができるという効果がある。このため、全要素よりも少ない要素数でフィルタ演算を行っても、全要素がフィルタ演算に用いられた場合と比較して画質を大きく劣化させることなく自然な画像補正を実現することができるという効果がある。
請求項4記載の画像処理装置によれば、請求項2又は3に記載の画像処理装置の奏する効果に加え、元画像用マスクに生成される各区画を縮小画像用マスクの各要素に対応させた場合に元画像用マスク側に余剰の要素や不足の要素を発生させることなく、元画像用マスクの全要素を配分して、元画像用マスクを縮小画像用マスクの要素数分に区分するので、元画像用マスクの情報を欠落させることなく縮小画像用マスクに反映させることができるという効果がある。
請求項5記載の画像処理装置によれば、請求項4記載の画像処理装置の奏する効果に加え、区分手段にて元画像用マスクを分割する場合の分割位置を、各分割位置に隣接する2の要素の内のより近いほうへずらして分割位置間に含まれる要素数を整数化することができる。元画像と縮小画像とのサイズ比に応じて元画像用マスクを縮小した場合、縮小画像用マスクの1の要素に対応させる元画像用マスクの要素数は、多くの場合、整数とはならずに、小数点以下の端数を有する数となり、この場合、分割位置は、1の要素を分断する位置となる。
しかし、本装置においては、各分割位置に隣接する2の要素の内のより近いほうへ、分割位置をずらして分割位置間に含まれる要素数を整数化するので、縮小画像用マスクの要素に対応する区画を規定する際に、分断された面積比に応じて当該分断された要素を隣り合う区画のそれぞれに分配して区画を規定するなどといった煩雑な処理を不要とすることができるという効果がある。また、区画の範囲を整数で管理できるので、その管理を簡便にすることができるという効果がある。
請求項記載の画像処理装置によれば、請求項1からのいずれかに記載の画像処理装置の奏する効果に加え、元画像と縮小画像とのサイズ比に基づいて形成される縮小画像用マスクの要素数が偶数になる場合には、要素数を増加または減少させて、縮小画像用マスクの要素数が奇数となるように調整するので、縮小画像用マスクの中心要素を、縮小画像の注目画素に重ねてフィルタ処理を実行することができるという効果がある。
つまり、元画像と縮小画像とのサイズ比に基づいて、単純に縮小画像用マスクを形成した場合には、必ずしも奇数の要素数でマスクが形成されるとは限られず、偶数の要素数でマスクが形成されてしまうこともある。偶数の要素数で形成されたマスクではマスク中心に要素が配置されないが、本装置では、縮小画像用マスクは、必ず、奇数の要素数で生成される(即ち、マスクの中心に要素が配置される)ので、注目画素にマスク中心(中心要素)を確実に重ねることができる。その結果、偶数の要素数のフィルタを用いる場合のような注目画素に対して偏心された範囲でフィルタ演算が行われるといった事態が発生することはない。
通常、マスクは、中心要素を対称中心としてフィルタ係数が割り付けられているなど、中心要素を注目画素に重ね、他の要素をその配置に従って、注目画素周辺の対応する位置の周辺画素に重ねて演算を行うように設計されているので、縮小画像用マスクを奇数の要素数で形成されたものとすることにより、当初の設計通りのフィルタ演算を行うことができ、最終的に得られる補正画像を高品質で形成することができるという効果がある。
請求項記載の画像処理プログラムによれば、元画像の画素値を反射光成分値に基づいて変換する場合、反射光成分値を正規化パラメータに従って正規化した正規化反射光成分値を用いて元画像の画素値を変換するが、この正規化パラメータを、縮小画像の各画素の反射光成分値の頻度分布に基づいて設定するので、元画像の反射光成分値を用いて正規化パラメータを求めるよりも、正規化パラメータを求める際の演算数が少なく、処理を高速で行うことができると共に、必要なメモリ量を節約できる。
ここで、元画像および縮小画像のそれぞれに対し、平均画素値を求めるためのフィルタ演算が行われるが、縮小画像のフィルタ演算に用いられる縮小画像用マスクは、元画像用マスク記憶ステップにより記憶される元画像用マスクを、元画像と縮小画像とのサイズ比に基づいて縮小して生成する。このため、元画像および縮小画像のそれぞれに対して適用されるマスクは、元画像と縮小画像とのサイズ比に応じたものとなり、画像のサイズ比と無関係に生成されたマスクを用いてフィルタ演算を行う場合よりも、縮小画像の平均画素値に基づいて求められる反射光成分値の頻度分布の態様を、元画像の反射光成分値の頻度分布に整合させることができる。その結果、縮小画像の反射光成分値の頻度分布に基づいて設定される正規化パラメータを、元画像に適合する適切なものとすることができ、処理速度を向上させつつ、精度のよい画像補正を実行することができるという効果がある。
更に、マスクを用いてフィルタ処理を行う場合に、元画像用マスクから縮小画像用マスクを生成するので、元画像用マスクの大きさを固定サイズとし、縮小画像用マスクの大きさを変動させることで、双方のマスクを画像のサイズ比に応じたものとすることができる。その上、元画像用マスクのマスクサイズを既知とすることができる。従って、例えば、縮小画像用マスクの大きさを固定して、元画像と縮小画像とのサイズ比に応じたマスクを作成する場合のように、入力される元画像のサイズに応じて元画像用マスクの大きさが変動することがない。言い換えれば、元画像用マスクのマスクサイズの上限値が不明になることはない。
このため、元画像用マスクの設計段階で、適切な大きさで元画像用マスクを設計しておけば、マスクサイズの上限値が不明である場合に行われるような元画像用マスクを記憶するための膨大なメモリ割当てを不要にでき、画像補正を実行するために必要なメモリ量を低減することができるという効果がある。また、フィルタ演算に際し、マスクを記憶するためのメモリの確保を容易とすることができる上、マスクが記憶できないが故にフィルタ演算が不能になるといった事態を回避できるという効果がある。
請求項記載の画像処理プログラムによれば、請求項記載の画像処理プログラムの奏する効果に加え、元画像用マスクは、フィルタ演算において演算に関わる要素が、元画像用マスクを構成する全要素よりも少ない数で配置されたものであるので、演算に使用される要素は間引かれたものとなって、フィルタ処理における演算数を低減して、演算を高速化することができる。
元画像用マスクを縮小して縮小画像用マスクを生成すると、マスクを構成する要素数が減少するため、元画像用マスクの要素の間引きのパターンと同じパターンで縮小画像用マスクを形成することは困難となる。しかし、本プログラムにおいては、縮小画像用マスクの全要素数で区分された元画像用マスクの1区画においてフィルタ演算に実際に用いられる要素数で、当該1区画に対応する縮小画像用マスクの1の要素に格納されるフィルタ係数の重み付けを行う。よって、元画像用マスクの区画内のフィルタ演算に用いられる要素数に応じて縮小画像用マスクのフィルタ係数を変化させることができる。これによれば、元画像用マスクの要素の間引きパターンを重みに変換して、縮小画像用マスクのフィルタ係数に付与することができ、元画像用マスクの間引きのパターンが擬似的に模写された高度に相関性を有する縮小画像用マスクを形成することができるという効果がある。
従って、かかるマスクを用いることで縮小画像の平均画素値から求められる反射光成分値の頻度分布の態様を、元画像の反射光成分値の頻度分布に、より整合させることができ、その結果、縮小画像の反射光成分値の頻度分布に基づいて設定される正規化パラメータを、元画像に適合する適切なものとすることができる。故に、処理速度を向上させつつ、より一層、精度のよい画像補正を実行することができるという効果がある。
更に、区分ステップにて元画像用マスクを分割する場合の分割位置を、各分割位置に隣接する2の要素の内のより近いほうへずらして分割位置間に含まれる要素数を整数化することができる。このため、分割位置に応じて各分割位置間に含まれる要素数を変更しつつ元画像用マスクに区画を割り付けることができ、元画像用マスク側に余剰の要素や不足の要素を発生させることなく、各区画に元画像用マスクの全要素を配分することができる。よって、元画像用マスクの情報を欠落させることなく縮小画像用マスクに反映させることができるという効果がある。
また、元画像と縮小画像とのサイズ比に応じて元画像用マスクを縮小した場合、縮小画像用マスクの1の要素に対応させる元画像用マスクの要素数は、多くの場合、整数とはならずに、小数点以下の端数を有する数となる。この場合、分割位置は、1の要素を分断する位置となるが、本プログラムにおいては、分割位置をずらして間に含まれる要素数を整数化することができるので、縮小画像用マスクの要素に対応する区画を規定する際に、分断された面積比に応じて当該分断された要素を隣り合う区画のそれぞれに分配して区画を規定するなどといった煩雑な処理を不要とすることができるという効果がある。また、区画の範囲を整数で管理できるので、その管理を簡便にすることができるという効果がある。
請求項記載の画像処理プログラムによれば、請求項記載の画像処理プログラムの奏する効果に加え、元画像用マスクは、フィルタ演算において演算に関わる要素が、元画像用マスクを構成する全要素よりも少ない数で配置されたものであるので、演算に使用される要素は間引かれたものとなって、フィルタ処理における演算数を低減して、演算を高速化することができるという効果がある。
元画像用マスクを縮小して縮小画像用マスクを生成すると、マスクを構成する要素数が減少するため、元画像用マスクの要素の間引きのパターンと同じパターンで縮小画像用マスクを形成することは困難となる。しかし、本プログラムにおいては、縮小画像用マスクの全要素数で区分された元画像用マスクの1区画において、フィルタ演算に実際に用いられる要素に格納されたフィルタ係数の総和で、当該1区画に対応する縮小画像用マスクの1の要素に格納されるフィルタ係数の重み付けを行う。このため、縮小画像用マスクのフィルタ係数に付与される重みは、元画像用マスクにおいて対応する区画において使用されるフィルタ係数の個数によっても、また、用いられる個々のフィルタ係数の値によっても変化することとなる。
よって、縮小画像用マスクのフィルタ係数には、元画像用マスクによるフィルタ演算においてどれほどの数の要素が関わったか(即ち間引きのパターン)を反映できる上、元画像用マスクで使用されるフィルタ係数そのものの値についても反映させることができるという効果がある。フィルタ演算においては、要素に格納されているフィルタ係数に画素値が演算されるので、フィルタ係数の値に応じて異なる平均画素値が導出される。故に、元画像用マスクにおいてフィルタ演算に実際に用いられる要素数を重みとしてフィルタ係数に付与するよりも、用いられる要素に格納されているフィルタ係数の総和で、フィルタ係数を重み付けすることにより、より一層高度に元画像用マスクの内容を反映した縮小画像用マスクを生成することができる。
その結果、かかるマスクを用いることで、縮小画像の平均画素値に基づいて求められる反射光成分値の頻度分布の態様を、元画像の反射光成分値の頻度分布に、より整合させることができ、縮小画像の反射光成分値の頻度分布に基づいて設定される正規化パラメータを、元画像に適合する適切なものとすることができるので、処理速度を向上させつつ、より一層、精度のよい画像補正を実行することができるという効果がある。
更に、区分ステップにて元画像用マスクを分割する場合の分割位置を、各分割位置に隣接する2の要素の内のより近いほうへずらして分割位置間に含まれる要素数を整数化することができる。このため、分割位置に応じて各分割位置間に含まれる要素数を変更しつつ元画像用マスクに区画を割り付けることができ、元画像用マスク側に余剰の要素や不足の要素を発生させることなく、各区画に元画像用マスクの全要素を配分することができる。よって、元画像用マスクの情報を欠落させることなく縮小画像用マスクに反映させることができるという効果がある。
また、元画像と縮小画像とのサイズ比に応じて元画像用マスクを縮小した場合、縮小画像用マスクの1の要素に対応させる元画像用マスクの要素数は、多くの場合、整数とはならずに、小数点以下の端数を有する数となる。この場合、分割位置は、1の要素を分断する位置となるが、本プログラムにおいては、分割位置をずらして間に含まれる要素数を整数化することができるので、縮小画像用マスクの要素に対応する区画を規定する際に、分断された面積比に応じて当該分断された要素を隣り合う区画のそれぞれに分配して区画を規定するなどといった煩雑な処理を不要とすることができるという効果がある。また、区画の範囲を整数で管理できるので、その管理を簡便にすることができるという効果がある。
さらに、請求項8,9に記載の画像処理装置によれば、元画像用マスクは、各要素を特定する値が乱数に従って選択されることで全要素の内のフィルタ演算に実際に用いられる要素が決定されたものであるので、人為的に、フィルタ演算に実際に用いられる要素を決定する(フィルタ演算に用いられない要素を間引く)場合に比べて、よりランダムにフィルタ演算に実際に用いられる要素を2次元マトリクスに配置することができるという効果がある。このため、全要素よりも少ない要素数でフィルタ演算を行っても、全要素がフィルタ演算に用いられた場合と比較して画質を大きく劣化させることなく自然な画像補正を実現することができるという効果がある。
以下、本発明の好ましい実施形態について、添付図面を参照して説明する。図1は、本発明における実施形態の複合機1の外観構成を示す斜視図である。なお、以下の実施形態は本発明を具体化した一例にすぎず、本発明の要旨を変更しない範囲で、実施例を適宜変更できることは言うまでもない。
図1に示すように、本複合機1は、下部に設けられたプリンタ2と、上部に設けられたスキャナ3と、スキャナ3の正面側に設けられた操作パネル4とを一体的に備えたMFP(Multi Function Peripheral)であり、コピー機能、ファクシミリ機能、パーソナルコンピュータ(以下単に「PC」と称す)など外部のコンピュータ(図示せず)から受信したデータを記録用紙に記録(印刷)するプリンタ機能など複数の機能を実現するものである。
スキャナ3は、FBS(Flatbed Scanner)として機能する原稿読取台6に対して、自動原稿搬送機構(ADF:Auto Document Feeder、以下「ADF」という。)7を備えた原稿カバー8が、背面側の蝶番を介して開閉自在に取り付けられてなる。横長の直方体に形成された原稿読取台6の上面にはプラテンガラスが配設されており、原稿読取台6の内部には、図示しない画像読取ユニットが内蔵されている。
原稿読取台6の内部には、上記画像読取ユニットの移動スペースや、画像読取ユニット或いはそれを支持する部材および駆動させる機構などを配設するスペースが確保されているため、原稿読取台6の上面はプラテンガラスよりも大きく形成されているが、原稿読取台6は、プラテンガラスと平面視で概ね相似形(平面視で横方向に長い矩形状)に形成されている。
このように構成されたスキャナ3をFBSとして使用する場合は、原稿カバー8を開いてプラテンガラス上に原稿を載置し、その後、原稿カバー8を閉じて当該原稿を固定する。そして、読取開始指令が入力されると、上記画像読取ユニットがプラテンガラスの裏面に沿って走査される。これにより、FBSによる原稿の画像読取りが行われる。
上記画像読取ユニットは、複合機1の奥行き方向を主走査方向とするラインイメージセンサを備えたものであり、光源を発光させて原稿に光を照射し、原稿からの反射光をレンズにより光電変換素子に導き、光電変換素子が反射光強度に応じた電気信号を出力することによって画像を読み取る。ラインイメージセンサとしては、密着型のCIS(Contact Image Sensor)、或いは、縮小光学系のCCD(Charge Coupled Device)や、CMOS(Complementary Metal−Oxide Semiconductor:相補型金属酸化膜半導体)などを適用することができる。なお、画像読取ユニットやスキャナ3の内部構成の構成は本発明に直接関係がないので、ここでは詳細な説明は省略する。
ADF7は、原稿トレイ9から原稿排出トレイ10へ原稿搬送路を通じて原稿を搬送するものである。ADF7による原稿の搬送過程において、原稿が原稿読取台6上の読取面を通過され、該読取面の下方に待機する上記画像読取ユニットによって該原稿の画像が読み取られる。このようなADF7による画像読取りは、原稿カバー8が原稿読取台6に対して閉じられた状態で行われる。なお、本発明においてADF7は任意の構成であり、スキャナ3がADF7を具備せず、FBSとしてのみ画像読取を行うものであってもよい。したがって、ADF7の詳細な説明については省略する。
プリンタ2は、スキャナ3で読み取られた画像データ或いは外部から入力された画像データに基づいて、記録用紙上に画像を記録する画像記録装置である。このプリンタ2は、上述したように、スキャナ3の下方に配設されている。スキャナ3とプリンタ2は、それらの背面が同一面となるように位置決めされているため、複合機1の背面は凸凹のない平坦形状となっている。なお、プリンタ2は、画像記録方式にインクジェット方式を用いたインクジェットプリンタで構成されているが、電子写真方式や熱転写方式などの種々の画像記録方式を採用することができるのはもちろんである。
複合機1の正面側、換言すれば、プリンタ2の正面側には開口5が形成されている。この開口5内に給紙トレイ14及び排紙トレイ15が完全に内包されるように設けられている。給紙トレイ14と排紙トレイ15は上下二段となるように配設されており、上段に排紙トレイ15が設けられ、その下方に給紙トレイ14が設けられている。
プリンタ2の正面側の端面17は、上述したように原稿読取台6が横長の直方体に形成されているため、スキャナ3の正面側の端面18から所定幅だけ正面側に突出している。以下、このように正面側に突出したプリンタ2の正面側の端部を突出部16と称する。なお、プリンタ2の横幅はスキャナ3の横幅に合わせて形成されている。従って、複合機1は平面視で略正方形をなしている。
プリンタ2には、給紙トレイ14の奥側から上方へ延びた後に正面側へU字状に湾曲して排紙トレイ15に連結される用紙搬送路が設けられている。給紙トレイ14に収容された記録用紙は、その短辺を先頭にして用紙搬送路に送り出され、Uターン搬送されることによって用紙搬送路中に設けられた画像記録位置に案内される。そして、該画像記録位置で、画像が記録用紙に記録される。画像記録後の記録用紙は排紙トレイ15に排出される。
プリンタ2の上記開口5の上側には、接続パネル70が設けられている。この接続パネル70には、その左端側にUSB端子71が配設されている。USB端子71は、外部機器とUSB接続することにより該外部機器と本複合機1とを通信可能に接続するコネクタ端子である。また、接続パネル70の右端側にはスロット部72が配設されている。スロット部72はメモリカード(カード型メモリ)を装填可能な複数のカードスロットが設けられている。カードスロットにメモリカードが装填され、該装填されたメモリカードから画像データが後述の制御部20(図2参照)により読み出される。
複合機1の正面側には、操作パネル4が設けられている。操作パネル4は、突出部16の上方の空きスペースに適合するよう、横長形状に形成されている。換言すれば、操作パネル4は、その縦幅が、スキャナ3の縦幅からプリンタ2の縦幅を減じた長さ(空きスペースの縦幅)に収まる寸法に形成されている。操作パネル4は、プリンタ2やスキャナ3を操作するためのものであり、各種操作キー40と液晶ディスプレイ(LCD:Liquid Crystal Display)41とを具備する。ユーザは、操作パネル4を用いて、所望の指令を入力することができる。複合機1に所定の指令が入力されると、その入力された情報に基づいて該複合機1の動作が制御部20によって制御される。
特に、本実施形態の複合機1は、操作キー40として、コピーモードキー、FAXモードキーなどの各種モードキーを備えている。これらのモードキーにより、ユーザはいずれかのモードを選択する。コピーモードが選択されている場合、スキャナ3により読み取った画像データは、プリンタ2により記録される。FAXモードキーが選択されている場合、スキャナ3により読み取った画像データは、通信回線を介して他のファクシミリ装置に送信される。
なお、複合機1は、操作パネル4から入力された指令のほか、PCなどのコンピュータに接続されて該コンピュータからプリンタドライバやスキャナドライバ等を介して送信される指令に基づいて動作するようにシステム構成されている。
図1に示すように、LCD41は、操作パネル4に配置可能な最大の縦幅に大型化されている。一方、LCD41の横幅(横寸法)は、その縦幅の4/3倍よりも長いものである。換言すれば、LCD41の縦幅に対する横幅の寸法の比率が4/3より大きく設定されている。LCD41の縦幅に対する横幅の比率は8/3となっている。
図2は、上記のように構成された複合機1の電気的構成を示すブロック図である。この
複合機1は、ケーブルを介してPCと接続可能なインターフェイス(以下「I/F」と称する)であるパラレルI/F29と、デジタルカメラと接続可能なUSB端子71と、外部メディア(例えば、メモリカードなどフラッシュメモリにより構成される記録媒体)を着脱自在に装着可能なスロット部72とを備えている。このため、PC、デジタルカメラ、外部メディアから画像データを入力することができるようになっている。そして、入力された画像データに対して、レティネックス処理による画像処理(画像補正)を行うことができるように構成されている。
制御部20は、プリンタ2、スキャナ3及び操作パネル4を含む複合機1の動作を統括的に制御するものである。制御部20は、図2に示すように、CPU(Central Processing Unit)21、ROM(Read Only Memory)22、RAM(Random Access Memory)23、EEPROM(Electrically Erasable and Programmable ROM)24を主とするマイクロコンピュータとして構成されており、バス25を介してASIC(Application Specific Integrated Circuit)26に接続されている。
CPU21は、この複合機1を総括的に制御する中央演算処理装置である。ROM22は、CPU21により実行される各種制御プログラムやそのプログラムを実行する際に用いられる固定値などを記憶するものであり、コピー動作、プリンタ動作、ファクシミリ動作などを行うための制御プログラム22aと、レティネックス処理などの画像処理を行う画像処理プログラムを22bと、参照点数メモリ22cとを備えている。
画像処理プログラム22bは、パラレルI/F29、USB端子71、スロット部72を介して、PC、デジタルカメラ、外部メディアから入力された画像データ(元画像データ)に対しレティネックス処理(Retinex処理)を実行して、画像データの逆光画像部分などの低画質領域の補正を行った出力画像データを生成するように構成されている。図3から図6のフローチャートに示すプログラムは、画像処理プログラムの一部としてこのROM22に記憶されている。
参照点数メモリ22cは、元画像の平均輝度値を生成するために元画像に対して実行されるフィルタ演算で使用されるガウスフィルタにおいて、フィルタ演算に実際に用いる要素数(参照点数)を記憶するメモリである。尚、本実施形態では元画像と縮小画像とのそれぞれに対してガウスフィルタによるフィルタ演算が行われるが、以降、元画像に対して用いられるガウスフィルタを入力マスク、縮小画像に対して用いられるガウスフィルタを縮小マスクと称す。
この参照点数メモリ22cに記憶される数は、M×Nのマトリクスで形成される入力マスクの全要素数よりも少ない数とされており、全要素数の1/30程度を下限値としている。
レティネックス処理においては、ガウスフィルタによるフィルタ演算が行われるが、本複合機1においてフィルタ演算に用いられるガウスフィルタ(入力マスク及び縮小マスク)は、後述するマスク生成処理(S12)(図6参照)で生成される。マスク生成処理(S12)において入力マスクが生成される際には、CPU21にて参照点数メモリ22cが参照され、この参照点数メモリ22cに記憶される数分の要素にだけフィルタ係数が格納される。つまり、要素が各所で間引かれた間引きパターンを有するマスクが形成されることとなる。
RAM23は、CPU21が上記プログラムを実行する際に用いる各種データを一時的に記録する記憶領域又は作業領域として使用される書き換え可能なメモリである。RAM23には、複合機1の起動に伴って読み込みが指示されているプログラムやメイン処理のプログラムのためのロードエリア、及びメイン処理に必須の固定値などを記憶するためのエリア等として固定的に確保される領域以外に、実行されるプログラムに対して動的に割り当てられる可変領域が設けられている。各プログラムの実行時には、この可変領域の空き領域(使用されていない領域)において、そのプログラム動作に必要なメモリ領域(記憶領域や作業領域)が確保される。
一般にプログラムは、実行に際し、そのプログラム動作のために必要なメモリ領域を、必要最小量から最大量までの範囲でCPU21に要求する。そして、十分な空き領域があれば、プログラムを実行するために必要なメモリ領域が、要求された範囲内で、割り当てられる。複数のプログラムが並行して実行される場合には、各プログラムに割り当てられるメモリ領域は、要求された必要最小量から最大量までの範囲内で、状況に応じて変更される。
また、例えば、新たにプログラムが動作された場合には、現在動作中の他のプログラムに割り当てられているメモリ領域は圧縮され、作動中のプログラムが終了した場合には、現在動作中の他のプログラムに割り当てられているメモリ領域は拡張されるなど、メモリ領域は動的に割り当てられる。
画像処理の実行時には、画像処理プログラム23bを実行するために必要なメモリ領域が、画像処理用バッファ23aとしてRAM23に確保される。尚、当然のことながら、プログラムの実行に必要なメモリ領域よりも空き領域が少なければ、プログラムを実行するのに必要なメモリ領域を確保できないので、プログラムは実行不能となる。
この画像処理用バッファ23aは、元画像メモリ23a1と、縮小率メモリ23a2と、輝度値メモリ23a3と、縮小レティネックス画像メモリ23a4と、ヒストグラムメモリ23a5と、最大値メモリ23a6と、最小値メモリ23a7と、クリップ値メモリ23a8と、入力マスクメモリ23a9と、縮小マスクメモリ23a10と、分割要素数メモリ23a11と、対数値メモリ23a12と、refle値メモリ23a13と、出力画像メモリ23a14とを備えている。なお、「s」は、縮小画像についての接尾辞であり、元画像については、接尾辞を付さないものとする。
元画像メモリ23a1は、画像処理を行う前の元画像データを記憶するメモリであり、PC、デジタルカメラ、外部メディアから、それぞれ、パラレルI/F29、USB端子71、及びスロット部72を介してプリンタ2へ入力された画像データ(元画像データ)を記憶するものである。この元画像メモリ23a1に記憶される元画像データは、新たに複合機1に画像データが入力されると、入力された画像データで更新される。尚、元画像データには、そのサイズを示すサイズデータが付加されており、元画像メモリ23a1には、この元画像のサイズデータについても記憶されている。
ここで、元画像データは、ラスタデータであって元画像を形成する各画素の画素値(信号強度値、RGB値)で構成されている。なお、本実施形態では、元画像データ及び出力画像データはいずれも、RGB値から構成され、これらの各RGB値は、「0」〜「255」の範囲の値である。
RGB値は、光の3原色である赤を表すR値と、緑を表すG値と、青を示すB値とを構成成分とする値である。光の3原色の混色により各種の色は生成されるので、元画像の各画素の色は、R値とG値とB値との組合せ(RGB値)により1の色(色相や階調など)が示される。このRGB値の値が大きいほど、輝度(明度)は高くなる。
本実施形態においては、かかる元画像データ(RGB値)に対して直接的にレティネックス処理を行うのではなく、元画像データのRGB値を輝度信号Yに変換してからレティネックス処理を実行するように構成されている。従って、RGB値のそれぞれに対してレティネックス処理を行う場合に比べて、レティネックス処理後の出力画像において元画像のカラーバランスを維持することができる。
縮小率メモリ23a2は、元画像から縮小画像を作成する際の縮小率を記憶するメモリである。本複合機1では、元画像データに対してレティネックス処理を行うが、元画像から求められる反射率(対数値R)を正規化するパラメータは、縮小画像の反射率(対数値Rs)から求められる。故に、縮小画像を形成する必要がある。用いられる縮小画像はサイズが小さい程、対数値Rsを求めるために必要なメモリ量や、算出された各対数値を記憶するためのメモリ量を低減できる。しかし、縮小画像が小さくなるほど画像精度が低下するので、求められるパラメータも不正確なものとなる。つまり、正確なパラメータを算出できる縮小画像サイズには、下限値がある。従って、正確なパラメータを算出し得る最も小さなサイズが縮小画像の最適サイズとなり、本複合機1は、かかる最適サイズで縮小画像を形成するように、縮小画像の画像サイズは予め定めた固定サイズとされている。
縮小画像のサイズが固定されている一方で、入力される元画像(元画像データ)はユーザ任意のサイズであるので、固定サイズの縮小画像を形成するために、元画像のサイズに応じて縮小率は変更されることとなる。このため、元画像データの入力毎(異なる元画像に対する画像処理の実行毎)に縮小率が算出され、この縮小率メモリ23a2に記憶される。
この縮小率は、元画像のサイズと縮小画像のサイズとの比、つまり、元画像データに付加されたサイズデータと、既知である縮小画像のサイズデータとの比で導出される。サイズデータは、画像のX軸方向の画素数と、画像のY軸方向の画素数とで形成されている。一般に画像においては、X軸方向とY軸方向とで画素数が異なることが多いので、本実施形態においては、縮小率は、元画像および縮小画像の長辺の画素数の比と、短辺の画素数の比との2種類で求められる。そして、求められた値が縮小率としてこの縮小率メモリ23a2に記憶されている。縮小画像は、かかるX軸方向の縮小率とY軸方向の縮小率とのそれぞれに基づいて、元画像を縮小して形成される。
輝度値メモリ23a3は、RGB値から(5)式に従って算出された輝度信号Y(Ys)と色信号Cb,Crを記憶するメモリである。
Figure 0004415999
複合機1では、上記したように、入力された元画像の元画像データ(RGB値)に直接レティネックス処理を行うのではなく、RGB値を輝度信号Yに変換してからレティネックス処理を行うように構成されている。RGB値から変換された輝度信号Yなどは、変換元のRGB値の座標(x,y)に対応してこの輝度値メモリ23a3に記憶される。そして、この輝度値メモリ23a3に記憶される輝度信号Yや輝度信号Ysに基づいて、反射率や出力値Outが生成される。
ここで、複合機1は、出力画像の出力値Outを生成するために、縮小画像と元画像との両者から、合計2回、反射率(対数値Rs及び対数値R)を算出する。反射率の算出に際しては、算出元の画像データ(縮小画像データ、元画像データ)のRGB値から輝度信号Ysまたは輝度信号Yがそれぞれ生成され、この輝度値メモリ23a3に書き込まれる。元画像の輝度信号Yの生成に先立って、縮小画像の輝度信号Ysは生成され、輝度値メモリ23a3に書き込まれる。輝度値メモリ23a3に記憶された縮小画像の輝度信号Ys等は、その後、元画像の輝度信号Yが生成されるタイミングで、0クリアされ、新たに、元画像データのRGB値から生成された輝度信号Yなどが輝度値メモリ23a3に記憶される。
輝度信号Yおよび色信号Cb,Crは、RGB値から(5)式に従って算出されるが、RGB値は、予め定められた範囲「0」〜「255」であるので、輝度信号Yも予め定められた範囲の値となり、実際には「0」〜「255」となる。このため、本実施形態では上記(4)式における元画像の信号強度値I(x,y)は、輝度信号Y(x,y)又は輝度信号Ys(x,y)とされて、レティネックス処理がなされた輝度信号Y(輝度信号Ys)が、出力値Outとして生成されることとなる。
尚、この輝度信号Y及び輝度信号Ysが請求項記載の画素値に該当する。また、本実施形態においては、輝度信号Y(輝度信号Ys)に対しレティネックス処理を行う構成としたが、これに代えて、RGB値をそのまま用いてレティネックス処理を行うようにしても良い。
縮小レティネックス画像メモリ23a4は、元画像を縮小した縮小画像において求められる反射率(反射光成分値、対数値Rs)を記憶するものであり、縮小画像の輝度信号Ysから求められる反射率を記憶するメモリである。
元画像を縮小する方法としては、縮小する画像の画素に対応する元画像の位置に最も近い画素の値をサンプリングし、そのサンプリングした画素の値をそのまま用いる最近傍(Nearest Neighbor)法や、縮小する画像の画素に対応する元画像の位置の周囲の画素を用いて補間演算を行うバイキュービック法や、平均画素法などが知られている。画質より処理速度を優先する場合は、最近傍法が用いられ、処理速度より画質を優先する場合は、バイキュービック法や、平均画素法が用いられる。
これらいずれかの方法により、縮小率メモリ23a2に記憶される縮小率で、元画像が縮小され、その縮小画像の各画素(ピクセル)について対数値Rsが上述の(2)式を用いて演算され、縮小画像の各画素の座標(x,y)に対応して縮小レティネックス画像メモリ23a4に記憶される。この縮小レティネックス画像メモリ23a4に記憶される値は、新たな補正処理の実行時に更新される。尚、対数値Rsの演算は、上記(2)式における元画像の信号強度値I(x,y)に、輝度信号Ys(x,y)を代入して実行される。つまり、この対数値Rsは、ガウスフィルタ(縮小マスクメモリ23a10に記憶される縮小マスク)を用い、各画素をそれぞれ注目画素としてm×nの領域にガウスフィルタF(x,y)による畳み込み演算を行って平均輝度値を算出し、その算出された平均輝度値で縮小画像の輝度値Ysを除して得られた値を自然対数化することで得る。
ヒストグラムメモリ23a5は、縮小レティネックス画像メモリ23a4に記憶される反射率(対数値Rs)についてのヒストグラム(頻度分布)が記憶されるものである。このヒストグラムメモリ23a5には、対数値Rsのレベルが同じものの数を集計した集計結果を記憶するために、各レベルのそれぞれに対応して各1のエリアが設けられている。言い換えれば、ヒストグラムメモリ23a5は、対数値Rsのヒストグラムを形成するためのメモリである。
ヒストグラムメモリ23a5の各エリア数及び各エリアにて管理する対数値Rsのレベルは、新たに元画像が入力されることにより、CPU21によって設定される。具体的には、縮小画像を構成する全画素について対数値Rsが求められると、求められた対数値Rsの最小値と最大値とに基づいてヒストグラムの生成範囲が決定され、また、同じレベルとして集計するレベル範囲(管理するレベル)が選定される。これにより、ヒストグラムメモリ23a5のエリア数と各エリアのレベルが設定される。
そして、縮小レティネックス画像メモリ23a4に記憶される各対数値Rsが、いずれのレベルに属するかが判断されると、その判断された対数値Rsのレベルに対応するエリアに記憶される値に1が加算される。これにより、各レベル毎に、その頻度が集計される。
最大値メモリ23a6及び最小値メモリ23a7は、ヒストグラムの生成に際し、縮小レティネックス画像メモリ23a4に記憶される対数値Rsの内の、最大値のものと、最小値のものとをそれぞれ記憶するメモリである。かかる最大値メモリ23a6及び最小値メモリ23a7には、元画像のレティネックス処理(補正処理)の開始に際し、0が書き込まれる。対数値Rsが算出されると、最大値メモリ23a6に記憶される値は、その算出された(縮小レティネックス画像メモリ23a4に記憶された)対数値Rsと比較される。そして、その比較結果に基づいて、より大きな対数値Rsにて、最大値メモリ23a6に先に記憶される値が更新される。
また、最大値メモリ23a6に記憶される値よりも、比較した対数値Rsの方が小さかった場合には、その対数値Rsは、最小値メモリ23a7に記憶される値と比較される。そして、その比較結果に基づいて、より小さな対数値Rsにて最小値メモリ23a7に記憶される先の値は更新される。
これにより、最大値メモリ23a6には、縮小レティネックス画像メモリ23a4に記憶される対数値Rsの内の最大値が保持され、最小値メモリ23a7には、縮小レティネックス画像メモリ23a4に記憶される対数値Rsの内の最小値が保持される。
この最大値メモリ23a6及び最小値メモリ23a7に記憶される最大値および最小値は、ヒストグラム生成のタイミングでCPU21によって参照され、かかる最大値及び最小値に基づいて、ヒストグラム生成の範囲がCPU21にて決定される。
クリップ値メモリ23a8は、ヒストグラムから求められるクリップ範囲を記憶するメモリであり、具体的には、ヒストグラムメモリ23a5における集計結果に基づいて決定された下限値Dと上限値Uとが記憶されている。上限値Uは、ヒストグラムメモリ23a5に記憶される集計結果(頻度分布)から検出されるメジアン値Mよりも大きい側において45%の画素が含まれる点となる値であり、下限値Dは、メジアン値Mよりも小さい側において45%の画素が含まれる点となる値である。そして、下限値D〜上限値Uの範囲がクリップ範囲となり、元画像データの対数値Rに対し、このクリップ範囲に属するものが、予め定めた下限値d〜上限値uに正規化される(正規化反射率refleの生成)。つまり、下限値Dおよび上限値Uのそれぞれは、元画像データの対数値Rを正規化するパラメータとなっている。
このように、複合機1では、縮小画像から形成されたヒストグラムで元画像のクリップ範囲を決定することができるので、かかるクリップ範囲を決定するために、元画像の全画素についての反射率のヒストグラムを生成する必要が無く、処理時間を短縮することができる。
入力マスクメモリ23a9は、マスク生成処理(S12)によって生成されたM×Nのマトリクスのガウスフィルタであって、元画像に対するフィルタ演算処理において用いられるガウスフィルタである入力マスクを記憶するメモリである。本実施形態の入力マスクは、奇数の要素数を有する予め規定された大きさを有し、例えば、21×21のマトリクスで形成された全要素数441のマスクとされている。入力マスクの各要素に対しては、その位置を特定するべく、左上端の要素を座標(0,0)とし、右下端の要素を最終座標(21×21のマトリクスでは(20,20))として、マスク内の位置を示すXY座標(マスク座標)がそれぞれ付与されている。つまり、2次元配列されたマスクの各要素に付されたマスク座標は、X軸にそって右側の列へいくほどX座標が大きくなり、Y軸に沿って下方の行へ行くほどY座標が大きくなる。また、各要素には、座標の小さいものから順に、即ち、X軸方向に沿って左端から右端へ向かいつつ、上側の行から下側の行へ進行する順で、次第に大きな数となるように、0〜440の識別番号が付与されている。
本実施形態では、マスク生成処理(S12)において、参照点数メモリ22cに記憶されている数分の乱数が取得され、取得された乱数に対応する要素にだけフィルタ係数が格納される。上記したように、参照点数メモリ22cに記憶されている数は、全要素数(例えば441)よりも少ない数であるので、この入力マスクメモリ23a9に記憶される入力マスクは、間引きされたパターンを有するものとなっている。
マスクの全要素と、画像の対応する各画素とを積和演算すると、処理時間が膨大になる。一方で、多くの自然画では、要素が各所で間引かれた態様のマスクを用い、点在する要素と処理対象の画像における対応する画素とを積和演算してフィルタ演算を行っても、全要素を有するマスクを用いてフィルタ演算をして得られる結果と大差が生じないことが知られている。
そこで、本複合機1では、各所で要素が間引かれた態様のマスクを用いることで、フィルタ演算に要する時間の短縮と、フィルタ演算に際して必要となるメモリ量の抑制とを図っている。
縮小マスクメモリ23a10は、マスク生成処理(S12)によって生成されたm×nのマトリクスのガウスフィルタであって、縮小画像に対するフィルタ演算を行うためのガウスフィルタである縮小マスクを記憶するメモリである。この縮小マスクは、入力マスクメモリ23a9に記憶される入力マスクに基づいて作成される。
縮小マスクは、基本的には、元画像と縮小画像とのサイズ比に基づいて作成される。具体的には、縮小率メモリ23a2に記憶される縮小率で入力マスクを縮小して作成される。本実施形態では、縮小画像と元画像とのそれぞれから対数値R,Rsを求めるので、対数値R,Rsを求めるために縮小画像と元画像とのそれぞれに対してフィルタ演算を行う必要がある。ところが、間引きパターンを有する入力マスクを単純に縮小して縮小マスクを作成することはできない。入力マスクの間引きパターンが縮小マスクに反映されず、両者は整合性の乏しいものとなってしまうからである。フィルタ演算に用いられる入力マスクと縮小マスクとの整合性が乏しいと、得られる演算結果は整合性のないものとなってしまい、縮小画像から設定したクリップ範囲を元画像のクリップ範囲に適用することができなくなってしまう。
詳細は後述するが、本実施形態においては、入力マスクを縮小して縮小マスクを作成することを基本としつつ、入力マスクの間引きパターンを反映した縮小マスクが作成されるようになっており(図6のマスク生成処理(S12)及び図7から図10参照)、作成された縮小マスクがこの縮小マスクメモリ23a10には記憶されている。
尚、この縮小マスクの各要素も、入力マスクと同様に付与されたマスク内での位置を特定するための座標(マスク座標)によって管理される。
分割要素数メモリ23a11は、縮小マスクの1要素に対応する入力マスクの要素数(分割要素数)を記憶するメモリである。分割要素数は、入力マスクの全要素数を、生成する縮小マスクの全要素数で分割した場合に、分割された区画に属する要素数を示す数である。該分割要素数は、分割された入力マスクの区画に属する要素数そのものを直接示す値であってもよく、分割された入力マスクの区画のX軸方向とY軸方向とのそれぞれに配置される要素数の値であってもよい。
縮小マスクは入力マスクを縮小して生成されるので、当然、縮小マスクの要素数は入力マスクよりも減少し、入力マスクの要素数の略縮小率倍となっている。尚、算出された縮小マスクの要素数は、小数点以下の端数が丸められるので、誤差が発生し、厳密に縮小率倍とならないことが多い。
本実施形態では、かかる分割要素数は、入力マスクのX軸方向とY軸方向とのそれぞれの要素数を、縮小マスクの対応する軸方向の要素数で分割して求められた値とされており、各軸方向の分割要素数のそれぞれが、この分割要素数メモリ23a11に記憶される。
画像の縮小率は、X軸方向とY軸方向とで異なることが多いため、本実施形態ではX軸方向とY軸方向との両者について縮小率が求められている。一方で、入力マスクの形状は正方形で形成されている。従って、縮小マスクを生成した場合に、縮小マスクの1要素に対応する入力マスクの区画は、縦横サイズの異なる長方形となることが多い。このため、本実施形態では、縮小マスクの全要素数で、単純に入力マスクの全要素数を除して分割要素数を求めるのでなく、マスクのX軸方向、Y軸方向のそれぞれにおいて分割要素数を求めているのである。
尚、ここでいう全要素数は、M×Nのマトリクスで形成される入力マスクおよびm×nのマトリクスで形成される縮小マスクが有する全要素の数であり、フィルタ係数が格納されたものであるか否かには無関係である。
本複合機1は、この分割要素数メモリ23a11に記憶される分割要素数に基づいて入力マスクを区分し、形成された入力マスクの区画に属する要素の内容を、縮小マスクの1の要素に反映させることで、入力マスクとの整合性を維持した縮小マスクを生成するように構成されている(図6のマスク生成処理(S12)、図9、図10参照)。
ここで、分割要素数は、小数点以下の端数を伴った値であることが多い。このため、分割要素数毎に入力マスクを区分して区画を形成すると、区画の境界を形成する分割位置において1の要素が分断されてしまう。そこで、本実施形態では、分割要素数毎に入力マスクを区画した場合に得られる座標(マスク座標)を四捨五入して、縮小マスクの1の要素に対応する入力マスクの要素数が整数となるように分割位置をずらしている。このため、入力マスクに形成される区画は、厳密には、本来の境界からずれるが、形成される区画に対し僅か1要素を組み入れるか否かの僅かな差異であるので、かかる方法で分割位置をずらしても、生成される縮小マスクの入力マスクに対する整合性を著しく低下させるような支障が生じることはない。
これにより、縮小マスクの1の要素に、その1要素に対応する入力マスクの複数の要素の内容を反映させることができる上、その複数の要素は整数であるので、かかる複数の要素の内容を縮小マスクの1の要素に反映させる処理において端数の処理を不要とし、簡便に処理を行うことができる。
対数値メモリ23a12は、元画像の反射率(反射光成分値、対数値R)を記憶するものである。具体的には、輝度値メモリ23a3に記憶された元画像データの輝度信号Yを用いて、各画素に対応する対数値R(x,y)が、上述の(2)式に従って算出され、算出された対数値R(x,y)は、その座標に対応して対数値メモリ23a12に記憶される。この対数値メモリ23a12の値は、新たなレティネックス処理が実行された場合に新たに算出された対数値Rによって更新される。尚、対数値R(x,y)は、上記(2)式における元画像の信号強度値I(x,y)に、輝度信号Y(x,y)を用いて演算される。つまり、この対数値Rは、入力マスクを用いたフィルタ演算を行って平均輝度値を算出し、その算出された平均輝度値で元画像の輝度値Yを除して得られた値を自然対数化することで得る。
refle値メモリ23a13は、元画像の正規化反射率refleを記憶するものであり、対数値メモリ23a12に記憶される対数値R(元画像の反射率)を正規化した正規化反射率refleを記憶するメモリである。このrefle値メモリ23a13に記憶される正規化反射率refleは、対数値メモリ23a12に記憶される各対数値R(x,y)を、(3)式に従い、クリップ値メモリ23a8に記憶されるクリップ範囲について、下限値0.3〜上限値1.3の範囲に正規化したものである。対数値R(x,y)、即ち対数値Rの各々に対応して、各1ずつの正規化反射率refle(x,y)が生成され、その座標に対応してこのrefle値メモリ23a13に書き込まれる。このrefle値メモリ23a13に記憶される正規化反射率refleは、出力値Outを生成するタイミングでrefle値メモリ23a13から読み出され、読み出された正規化反射率refleを用いて出力値Outが算出される。
印刷またはプレビュー画像表示に際し、出力値Outを生成するためには、対数値R(又は対数値Rs)を正規化する必要があるが、対数値Rの正規化は、次の2つの条件を満たすように行われている。1つ目の条件は、正規化して得られる正規化反射率refleが、0を含まない値とすることである。これは、出力値Outが算出不能となることを回避するためである。
2つ目の条件は、正規化された正規化反射率refleの値の幅を1とすることである。正規化反射率refleの有する幅が1であると、元画像のダイナミックレンジと出力画像のダイナミックレンジとをおおよそ同じにすることができる。元画像の画素値は「0」〜「255」の範囲の値であるので、正規化反射率refleの有する幅を1とすることにより、本実施形態では、同じ範囲である「0」〜「255」で出力画像の画素値を得ることができる。その結果、出力画像全体の色調が入力画像に比べて変化してしまうことを回避できる。
このため、対数値Rは、0を超える値の下限値dから、その下限値dに1加算した上限値uの範囲に、正規化される。尚、本実施形態においては、(3)式における下限値dは0.3とされ、上限値uは1.3とされており、対数値Rは0.3〜1.3の値に正規化されている。言い換えれば、元画像の各画素の正規化反射率refleは、0.3〜1.3の値となる。また、対数値Rを0.3〜1.3の範囲に正規化すると、対数値R「0」の正規化反射率refleは、0.8となる。従って、正規化反射率refleが0.8を超える画素(注目画素)は、対数値Rが正である、即ち、注目画素が周辺画素よりも明るい事を示しており、正規化反射率refleが0.8未満である画素(注目画素)は、対数値Rが負である、即ち、注目画素が周辺画素よりも暗い事を示すこととなる。
レティネックス処理において出力値Outを算出する(4)式によれば、ガンマ係数は任意の定数であるので、変数(パラメータ)は、画素値(輝度信号Yまたは輝度信号Ys)と正規化反射率refleとの2つである。このため、正規化反射率refleが算出されれば、「0」〜「255」の各輝度信号Y(Ys)に対応する各出力値Outを導出することができる。
出力画像メモリ23a14は、プリンタ2に出力する出力画像データ、即ち、レティネックス処理による補正がなされた出力画像データを記憶するメモリである。この出力画像メモリ23a14に記憶される出力画像データは、補正処理によって元画像から生成された出力値Outであり、出力画像を形成する各画素のRGB値である。上記したように、本実施形態では、補正処理により、まず、元画像の輝度信号Y(x,y)に応じた出力値Outが生成され、以下に示す(6)式に従って、RGB値に変換されて出力値Outとされる。
Figure 0004415999
元画像の各輝度信号Y(x,y)の各々に対応して、各1ずつの出力値Out(x,y)が算出されており、出力値Outについても、各出力値Out(x,y)のそれぞれに対応する出力値Out(x,y)が生成される。そして、生成された出力値Out(x,y)が、その座標に対応して、出力画像メモリ23a14に書き込まれる。記憶された出力値Out(出力画像データ)は、印刷を実行するタイミングでこの出力画像メモリ23a14から読み出され、プリンタ2へ出力される。プリンタ2へ出力された出力値Outは、出力画像メモリ23a14から消去される。
制御部20とバス25を介して接続されるASIC26には、複合機1に所望の指令を入力する操作キー40を制御するパネルゲートアレイ(パネルGA)27が接続されている。パネルゲートアレイ27は、操作キー40の押下(入力)を検出して、所定のコード信号を出力する。このキーコードは、複数の操作キー40に対応して割り当てられている。CPU21は、パネルゲートアレイ27から所定のキーコードを受信すると、所定のキー処理テーブルに従って、実行すべき制御処理を行う。キー処理テーブルは、キーコードと制御処理とを対応させてテーブル化したものであり、例えば、ROM22に記憶されている。
ASIC26には、LCD41の画面表示を制御するLCDコントローラ28が接続されている。LCDコントローラ28は、CPU21の指令に基づいて、LCD41にプリンタ2又はスキャナ3の動作に関する情報を画面に表示させる。また、スキャナ3により読み取られたデータに対応する画像を画面に表示させ、または、接続された外部装置やスロット部72に挿入されたメモリカードから受け取ったデータに対応する画像を画面に表示させる。
さらに、ASIC26には、一般公衆回線33に接続されファクシミリ機能を実現するためのNCU(Network Control Unit)31や、NCUを介してモデム32が接続されている。また、ネットワーク上に存在するコンピュータとデータの送受信を行うための、図示しないネットワークインターフェースを備えていてもよい。更には、NCU31に送受話器を接続し、複合機1を通話(電話)機能を備えた構成としてもよい。
また、ASIC26には、アンプ73が接続されている。アンプ73は、そのアンプ73に接続されたスピーカ74を鳴動して、呼出音や拒否音、メッセージなどを出力するためのものである。
ASIC26に接続されたプリンタ2は、インクジェットプリンタで構成されており、記録ヘッド201と、CRモータ203と、LFモータ205と、駆動回路202,204,206とを備えている。
記録ヘッド201は、ノズル面に形成された複数のノズル口からインクを吐出して、記録用紙に印字を形成するものである。この記録ヘッド201は、非図示のキャリッジに搭載されており、記録用紙の搬送方向に対して直交する方向へ往復移動可能に構成されている。駆動回路202は、非図示のゲートアレイから出力される信号に応じて、その信号に合った波形の駆動パルスを、記録ヘッド201の各ノズルに対応した駆動素子に印加する駆動回路である。記録ヘッド201は、駆動回路から出力される駆動パルス信号によって動作され、インクを吐出する。
CRモータ203は、上記したキャリッジを往復移動させるためのモータである。駆動回路204は、CRモータ203に電圧を印加する回路である。駆動回路204から出力される電圧によってCRモータ203が駆動されると、CRモータ203に接続された例えばプーリなどの各部が動作され、キャリッジ、即ち、記録ヘッド201を記録用紙の搬送方向に対して直交する方向に往復移動させることができる。
LFモータ205は、記録用紙を搬送するためのモータである。駆動回路206は、LFモータ205に電圧を印加する回路である。駆動回路206から出力される電圧によってLFモータ205が駆動されると、LFモータ205に連結された給紙ローラや搬送ローラなどが駆動され、記録用紙が、給紙トレイ14の奥側から上方へ延びた後に正面側へU字状に湾曲して排紙トレイ15に連結される用紙搬送路を搬送される。
尚、本複合機1のプリンタ2が電子写真方式のもので構成される場合には、記録ヘッド201に代えて感光体ユニットが設けられ、CRモータ203に代えて感光体ユニットを回動させるモータが設けられる。
次に、上記のように構成された複合機1において実行される画像処理(レティネックス処理)を、図3から図6のフローチャートを参照して説明する。また、レティネックス処理の中で実行されるマスク生成処理(S12)については、入力マスク及び縮小マスクの基本構成を示す図7、縮小マスクの各要素に格納するフィルタ係数の内容を示す図8、入力マスクの分割方法を示す図9、入力マスクの間引きパターンを反映した縮小マスクの生成原理を示す図10を、フローチャートと共に適宜用いて説明する。
図3は、本複合機1で実行されるレティネックス処理(Retinex処理)のフローチャートである。複合機1にて実行されるRetinex処理では、まず、元画像を縮小し、その縮小した画像に基づいて元画像の反射率Rの正規化を行うためのクリップ範囲の設定とプレビュー画像の表示を行うRetinex前処理を実行した後(S1)、元画像のレティネックス処理を行うRetinex後処理を実行して(S2)、このレティネックス処理を終了する。Retinex後処理(S2)にて補正処理された元画像データはプリンタ2によって印刷される。
このように、本複合機1において実行されるレティネックス処理は、縮小画像に対してレティネックス処理を行う前処理と、元画像に対してレティネックス処理行う後処理の大別して2の処理から成り立っている。
図4は、図3に示したRetinex処理の中で実行されるRetinex前処理(S1)のフローチャートである。このRetinex前処理(S1)は、元画像のクリップ範囲を設定するために縮小画像に対するレティネックス処理(前処理)を行うものであり、まず、縮小画像のサイズデータ(縮小画像の長辺の画素数と短辺の画素数)と元画像メモリ23a1に記憶されている元画像のサイズデータ(元画像の長辺の画素数と短辺の画素数)との比により、X軸方向とY軸方向との両者について縮小率を算出し、算出した縮小率を縮小率メモリ23a2に記憶する(S11)。なお、長辺側をX軸、短辺側をY軸とする。故に、元画像および縮小画像の長辺同士の比がX軸方向の縮小率、短辺同士の比がY軸方向の縮小率となる。
次いで、縮小画像及び元画像に対して行われるフィルタ演算(畳み込み演算)に用いるガウスフィルタ(マスク)を生成するマスク生成処理を行う(S12)。その後、元画像メモリ23a1から元画像データを読み出し(S13)、縮小率メモリ23a2に記憶される縮小率で元画像データを縮小して縮小画像データを生成する(S14)。尚、外部から入力された元画像データは、その入力時或いはユーザの指示によって実行される所定の処理により、Retinex前処理(S1)に先立って、元画像メモリ23a1に記憶されている。
その後、生成された縮小画像データの各RGB値を輝度信号Ysと色信号Cb,Crとに変換し、縮小画像の各RGB値の座標(x,y)にそれぞれ対応させて輝度値メモリ23a3に書き込む(S15)。これにより、縮小画像の全画素に対応する輝度信号Ysが輝度値メモリ23a3に記憶される。
そして、輝度値メモリ23a3に記憶した縮小画像の輝度信号Ysについて反射率(対数値Rs)を算出する。各画素の対数値Rs(x,y)は、(2)式の画素値I(x,y)に輝度信号Ys(x,y)を用いて算出する(S16)。つまり、座標(x,y)の注目画素を含むm×nの領域にガウスフィルタF(x,y)による畳み込み演算を行って(縮小マスクを用いたフィルタ演算の実行)、注目画素からの距離に応じた重みを加味しつつ平均された周辺画素の平均輝度値を求め、その平均輝度値にて注目画素の輝度信号Ys(x,y)を除したものの自然対数を求めることにより、注目画素の反射率である対数値Rs(x,y)を算出する。なお、S16の処理において使用される縮小マスクは、S12のマスク生成処理において生成される。
その後、算出した対数値Rs(x,y)を縮小レティネックス画像メモリ23a4に記憶し(S17)、記憶した対数値Rs(x,y)が最大値メモリ23a6に記憶される値よりも大きいかを判断する(S18)。対数値Rs(x,y)が最大値メモリ23a6に記憶される値よりも大きければ(S18:Yes)、算出した対数値Rs(x,y)を最大値メモリ23a6に記憶して、先に最大値メモリ23a6に記憶される値を更新する(S19)。また、S18の処理で確認した結果、対数値Rs(x,y)が最大値メモリ23a6に記憶される値よりも小さい場合には(S18:No)、その対数値Rsを最小値メモリ23a7に記憶される値よりも小さいかを判断する(S20)。その結果、比較した対数値Rsが最小値メモリ23a7に記憶される値よりも小さければ(S20:Yes)、その対数値Rsを最小値メモリ23a7に記憶し、最小値メモリ23a7に先に記憶される値を更新する(S21)。
S19またはS21の処理の後は、縮小画像の全画素について処理が終了したかを確認する(S22)。縮小画像についての対数値Rsの生成と対数値Rsの最大値と最小値とを判断するS16〜S22の処理は、1の注目画素毎(1の輝度信号Ys毎)に実行され、最終画素の輝度信号Ysの処理が終了するまで、繰り返して実行される。従って、輝度値メモリ23a3からは、S16〜S22の処理の実行毎に、座標に従った順番で(先頭座標から最終座標へ向かうラスタ走査の順で)、輝度信号Ysが読み出される。そして、S22の処理で確認した結果、全画素についての処理が終了していれば(S22:Yes)、縮小レティネックス画像メモリ23a4に記憶される対数値Rsに対し、最大値メモリ23a6に記憶される最大値から最小値メモリ23a7に記憶される最小値までの範囲において、ヒストグラムを形成する(S23)。
その後、形成したヒストグラムからメジアン値Mを求め(S24)、次いで、そのメジアン値Mとヒストグラムとから対数値Rsのクリップ範囲(上限値Uと下限値D)を定め、下限値D及び上限値Uをクリップ値メモリ23a8に記憶する(S25)。具体的には、メジアン値Mを中心に、メジアン値Mの上側において45%の画素が含まれる点となる対数値Rsを上限値Uとし、メジアン値Mの下側において45%の画素が含まれる点となる対数値Rsを下限値Dとし、メジアン値Mの上下に各45%ずつの画素が所属する下限値D〜上限値Uの範囲をクリップ範囲とする。これによりヒストグラムの端部がカットされる。尚、このS25のステップで設定されたクリップ範囲は、Retinex後処理(S2)において元画像のクリップ範囲として適用される。
続いて、縮小レティネックス画像メモリ23a4に記憶される対数値Rsに対し、クリップ値メモリ23a8に記憶されるクリップ範囲(下限値D〜上限値U)を0.3〜1.3とする正規化をおこなって、正規化反射率refle(x,y)を算出する(S26)。尚、この正規化は、対数値Rs(x,y)≦Dである場合には、0.3とし、また、対数値R(x,y)≧Uである場合には、1.3とすると共に0.3<対数値R(x,y)<1.3である場合には、(3)式に従って、対数値Rを正規化するものである。尚、本実施形態においては、(3)式におけるd及びuは、それぞれ0.3と1.3とされている。
その後、S26の処理で算出された縮小画像の正規化反射率refleを用い、(4)式に従ってプレビュー画像の出力値Outを算出する(S27)。尚、S27の処理では、上記(4)式において元画像の信号強度値I(x,y)に輝度信号Ys(x,y)を用いて演算が実行される。
レティネックス処理において出力値Outを算出する(4)式によれば、ガンマ係数は任意の定数であるので、変数(パラメータ)は、元画像の画素値(輝度信号Y)と正規化反射率refleとの2つである。このため、正規化反射率refleを算出すれば、「0」〜「255」の各輝度信号Yに対応する各出力値Outを導出することができるのである。なお、算出された出力値Outが取り得る最高値は「255」とされているので、「255」を超えた出力値Outは、全て「255」で出力される。
尚、この輝度信号Yが請求項記載の画素値に該当する。また、本実施形態においては、輝度信号Yに対しレティネックス処理を行う構成としたが、これに代えて、RGB値をそのまま用いてレティネックス処理を行うようにしても良い。
そして、求めた出力値Outを、(6)式に従ってRGB値に逆変換して出力値Outを生成し、生成元の輝度信号Yの座標(x,y)に対応させて出力画像メモリ23a14に書き込み(S28)、縮小画像の全画素について出力値Outを生成したかを確認する(S29)。
S26〜S29の処理は、1の注目画素毎(1の対数値Rs毎)に実行され、最終画素の対数値Rsの処理が終了するまで、繰り返して実行される。従って、縮小レティネックス画像メモリ23a4からは、S26〜S29の処理の実行毎に、座標に従った順番で(先頭座標から最終座標へ向かうラスタ走査の順で)、対数値Rsが読み出される。そして、S29の処理で確認した結果、全画素についての処理が終了していれば(S29:Yes)、このRetinex前処理(S1)を終了する。
一方、S29の処理で確認した結果、未だ縮小画像の全画素について出力値Outが生成されていなければ(S29:No)、その処理をS26の処理に移行して、縮小画像の全画素について出力値Outが生成されるまで、S26〜S29の処理を繰り返す。
このRetinex前処理(S1)により、元画像に対するクリップ範囲(正規化パラメータ)が縮小画像を用いて求められる。また、縮小画像をレティネックス処理した画像、即ち、出力画像メモリ23a14に記憶される出力値Outは、このRetinex前処理(S1)終了後に、所定のタイミングでプレビュー画像としてLCD41に出力される。
図5は、図3のRetinex処理の中で実行されるRetinex後処理(S2)を示すフローチャートである。このRetinex後処理(S2)は、元画像に対してレティネックス処理を行うものであり、まず、元画像メモリ23a1に記憶される元画像データの各RGB値を輝度信号Ysと色信号Cb,Crとに変換し、縮小画像の各RGB値の座標(x,y)にそれぞれ対応させて輝度値メモリ23a3に書き込む(S31)。これにより、元画像の全画素に対応する輝度信号Yが輝度値メモリ23a3に記憶される。尚、輝度値メモリ23a3は、Retinex前処理(S1)終了後、Retinex後処理(S2)開始前に、非図示のステップにより0クリアされている。
そして、輝度値メモリ23a3に記憶した元画像の輝度信号Yについて対数値Rを算出する。各画素の対数値R(x,y)は、(2)式の画素値I(x,y)に輝度信号Y(x,y)を用いて算出する(S32)。
つまり、座標(x,y)の注目画素を含むM×Nの領域にガウスフィルタF(x,y)による畳み込み演算を行って(入力マスクを用いたフィルタ演算の実行)、注目画素からの距離に応じた重みを加味しつつ平均された周辺画素の平均輝度値を求め、その平均輝度値にて注目画素の輝度信号Y(x,y)を除したものの自然対数を求めることにより、注目画素の反射率である対数値R(x,y)を算出する。なお、S32の処理において使用される入力マスクは、マスク生成処理(S12)において生成される。
その後、算出した対数値R(x,y)を対数値メモリ23a12に記憶し(S33)、続いて、対数値メモリ23a12に記憶される対数値Rに対し、クリップ値メモリ23a8に記憶されるクリップ範囲(下限値D〜上限値U)を0.3〜1.3とする正規化をおこなって、正規化反射率refle(x,y)を算出する(S34)。これにより、縮小画像から求めたクリップ範囲(正規化パラメータ)によって元画像の対数値Rを正規化することができる。
尚、この正規化は、縮小画像の場合と同様に、対数値R(x,y)≦Dである場合には、0.3とし、また、対数値R(x,y)≧Uである場合には、1.3とすると共に0.3<対数値R(x,y)<1.3である場合には、(3)式に従って、対数値Rを正規化するものである。
これによれば、元画像の対数値Rについてはヒストグラムの形成を不要とできるので、RAM23の使用量を削減することができる上、レティネックス処理全体の処理速度を向上することができる。
そして、算出した元画像の正規化反射率refleをrefle値メモリ23a13に記憶した後(S35)、refle値メモリ23a13に記憶した正規化反射率refleを用い、(4)式に従って出力値Outを算出する(S36)。尚、S36の処理では、上記(4)式において元画像の信号強度値I(x,y)に輝度信号Y(x,y)を用いて演算が実行される。
その後、求めた出力値Outを、(6)式に従ってRGB値に逆変換して出力値Outを生成し、生成元の輝度信号Yの座標(x,y)に対応させて出力画像メモリ23a14に書き込み(S37)、元画像の全画素について出力値Outを生成したかを確認する(S38)。
S32〜S38の処理は、1の注目画素毎(1の輝度信号Y毎)に実行され、最終画素の輝度信号Yの処理が終了するまで、繰り返して実行される。従って、輝度値メモリ23a3からは、S32〜S38の処理の実行毎に、座標に従った順番で(先頭座標から最終座標へ向かうラスタ走査の順で)、輝度信号Yが読み出される。そして、S38の処理で確認した結果、全画素についての処理が終了していれば(S38:Yes)、このRetinex後処理(S2)を終了する。
尚、S37の処理において出力画像メモリ23a14に記憶された出力値Outは、このRetinex後処理(S2)終了後に、所定のタイミングでプリンタ2に出力される。また、S38の処理で確認した結果、未だ元画像の全画素について出力値Outが生成されていなければ(S38:No)、その処理をS32の処理に移行して、元画像の全画素について出力値Outが生成されるまで、S32〜S38の処理を繰り返す。
図6は、図4のRetinex前処理(S1)において実行されるマスク生成処理(S12)のフローチャートである。このマスク生成処理(S12)は、入力マスクを生成し、その生成した入力マスクから当該入力マスクに整合性を有する縮小マスクを生成する処理である。上記したように、Retinex前処理(S1)及びRetinex後処理(S2)では、このマスク生成処理(S12)で生成されたマスク(ガウスフィルタ)を用いて、S16及びS32のステップではフィルタ演算が実行される。
マスク生成処理(S12)では、まず、参照点数メモリ22cに記憶される参照点数を読み出し(S61)、変数iを0にセットする(S62)。そして、所定のアルゴリズムに従って入力マスクの要素数に対応した有限の範囲で疑似乱数を発生させる乱数生成処理を実行する(S63)。この乱数生成処理(S63)により、その実行毎に1の乱数値が生成され、乱数の一様性(連続で取得した場合に同じ値を取ることがなく、しかも、すべての値が同じ確率で取り出せること)を有する乱数値を得ることができる。
ここで、入力マスクの大きさは予め既知であり、例えば21×21のマトリクスで形成されるものであれば、入力マスクの全要素数441に対応する識別番号「0」〜「440」が、生成される乱数値の範囲となる。故に、生成された乱数値によっていずれかの識別番号を指定することができる。
かかる識別番号のそれぞれは、各要素に付与されたマスク座標のそれぞれと対応つけられているので、生成された乱数に対応するマスク座標のフィルタ係数を正規分布関数に従って算出する(S64)。
図7(b)においては、左方に入力マスクを、右方に縮小マスクを表示しており、各マスクの下方には、中心要素を含むマスク左右方向の各要素に格納されるフィルタ係数の変化をグラフにて図示している。図7(b)の各グラフにおいては、横軸は各要素の位置に対応しており、縦軸はフィルタ係数を示している。
この図7(b)からもわかるように、マスクの各要素に格納するフィルタ係数の基本的な割り付けは、入力マスクであっても縮小マスクであっても同様に実行される。つまり、生成される入力マスクも縮小マスクもガウスフィルタであるので、中心要素に格納するフィルタ係数を1とすると共に、中心から四方へ向かって正規分布関数に従って次第にフィルタ係数が小さくなる(減衰する)ように割り付けられる。
また、マスクの幅にわたって正規分布曲線が描かれるような正規分布関数に従って各要素に格納するフィルタ係数は設定される。従って、マスク内の要素の位置(マスク座標)がわかれば、その要素に格納するべきフィルタ係数を算出できる。
S64の処理の後は、算出されたフィルタ係数をマスク座標に対応つけて入力マスクメモリに記憶する(S65)。
そして、変数iに1加算してから(S66)、変数iが参照点数メモリ22cに記憶される参照点数以上であるかを確認し(S67)、確認した変数iがその参照点数未満であると、フィルタ係数を格納するべき要素全てについてフィルタ係数は未だ算出されていないので(S67:No)、その処理をS63の処理に移行して、フィルタ係数を格納するべき要素についてそのフィルタ係数が全て算出されるまで、S63〜S67の処理を繰り返す。
一方、S67の処理で確認した変数iがその参照点数以上であると(S67:Yes)、フィルタ係数を格納するべき要素分についてフィルタ係数全てが算出されているので、縮小率メモリ23a2に記憶されている縮小率を読み出して、入力マスクのX軸方向長さ(X軸方向の要素数、行の数)Mおよび入力マスクのY軸方向長さ(Y軸方向の要素数、列の数)Nのそれぞれに対応する縮小率を乗算し、縮小マスクサイズm,nを算出する(S68)。算出されるmは縮小マスクのX軸方向の要素数であり、nは縮小マスクのY軸方向の要素数である。
ここで、本実施形態において用いられるマスク(ガウスフィルタ)の基本構成について図7を参照して説明する。図7(a)の左方には、元画像および入力マスクを模式的に示しており、右方には、縮小画像および縮小マスクを、模式的に示している。本実施形態の入力マスク及び縮小マスクは、図7(a)に示すように、そのサイズ比が、元画像と縮小画像とのサイズ比と同程度となることを基本的構成としており、元画像と縮小画像とのサイズ比(縮小率メモリ23a2に記憶される縮小率)に基づいて、入力マスクから縮小マスクが作成される。
上記したように、縮小画像のサイズが固定されている一方で、入力される元画像はユーザ任意のサイズであるため、縮小率は、その入力される元画像のサイズに応じて変動する。ここで、入力マスクと縮小マスクとのサイズ比を、元画像と縮小画像とのサイズ比と等しくすることは、両マスクに整合性を持たせる要因の1つである。本実施形態では、入力マスクのサイズは固定サイズとしているので、元画像のサイズに応じて縮小率が変化すると、生成される縮小マスクのマスクサイズが変化することとなる。つまり、元画像のサイズに応じて大きさの異なる縮小マスクが生成される。
そして、算出された縮小マスクのマスクサイズm,nを小数点以下を四捨五入して整数化(m→int(m),n→int(n))する(S69)。入力マスクサイズに縮小率を乗算して縮小マスクサイズを算出すると、往々にして、そのマスクサイズは小数点以下の端数を伴った値で算出される。ここで、マスクの各要素は、画像の1の画素に対応するものであるので、マスクサイズは自然数で規定されなければならない。このため、S69のステップにより、算出された縮小マスクのマスクサイズに対し四捨五入を行い、マスクサイズを整数化する。
その後、mが奇数であるかを調べる(S70)。そして、mが偶数であると(S70:No)、その値に1加算して(S71)、mを奇数に変換する。次いで、算出されたマスクサイズnが奇数であるかを調べる(S72)。そして、nが偶数であると(S72:No)、その値に1加算して(S73)、nを奇数に変換する。これにより、縮小マスクのマスクサイズが確定する。尚、S70,S72のステップにおいてaは自然数である。また、S70,S72のステップでは、m,nが奇数であるかを調べることによって、m,nが奇数であるか、言い換えれば、偶数であるかを判別したが、かかるステップにおいて、m,nが偶数であるかを調べることによって、m,nが奇数であるか、偶数であるかを判別する構成としても良い。
画像の縮小率をもって縮小マスクを生成すると、マスクサイズm,nが偶数になることがある。フィルタ演算は、マスク(フィルタ)の中心要素を画像の注目画素に対応させて積和演算を行うことを基本とするものであるので、マスクサイズが偶数になってしまうと、その中心要素を注目画素に重ねることができなくなってしまう。そこで、本実施形態においては、マスクサイズが偶数となった場合には、算出されたマスクサイズに1加算してマスクサイズが奇数となるように調整しているのである。しかし、調整する要素数は僅か1であるので、入力マスクと縮小マスクとのサイズは、おおよそ元画像と縮小画像とのサイズ比に等しいものとなる。尚、本実施形態においては、偶数で算出されたマスクサイズに1加算することによって、マスクサイズが奇数となるように調整したが、マスクサイズを奇数にする調整方法は、これに限られるものではなく、例えば、偶数で算出されたマスクサイズから1減算しても良い。また、加減算される数を、1以上の奇数としても良い。
その後、入力マスクサイズM,Nを縮小マスクサイズm,nで除してX軸方向、Y軸方向それぞれの分割要素数を求め(S74)、求めた分割要素数を分割要素数メモリ23a11に記憶する(S75)。続いて、x,y,X,Yのそれぞれを0にセットする(S76)。尚、ここで、x,yは、縮小マスクのマスク座標を示す変数であり、X,Yは、入力マスクのマスク座標を示す変数である。
次に、X軸方向のマスクサイズmとY軸方向のマスクサイズnとの内、大きい方のサイズを基準とする正規分布関数に従って、縮小マスクの座標(x,y)のフィルタ係数を算出する(S77)。上記したように、X軸方向とY軸方向との縮小率が異なる場合には、多くの場合、縮小マスクは長方形で形成されるからである。
例えば、図8には、生成される縮小マスクの例として、5×7のマトリクスのマスクを示している。また、マスクの右方と下方には、それぞれ、中心要素を含むマスク左右および上下方向の各要素に格納されるフィルタ係数の変化をグラフにて図示している。図8の各グラフにおいては、横軸(マスク下方のグラフにおいては紙面左右方向に伸びる軸であり、マスク右方のグラフにおいては紙面上下方向に伸びる軸)は各要素の位置に対応しており、縦軸(横軸に直交する軸)はフィルタ係数を示している。
縮小マスクの各要素には、中心要素に格納するフィルタ係数を1とすると共に、中心から四方へ向かって正規分布関数に従って次第にフィルタ係数が小さくなる(減衰する)ようにフィルタ係数割り付けられる。
ここで、実際に生成される縮小マスクは、破線で囲まれた5×7のマトリクスのマスクであるが、マスクサイズの大きい側に基づき、7×7のマトリクスの幅にわたって正規分布曲線が描かれるような正規分布関数に従って各要素に格納するフィルタ係数は設定される。
一方で、縮小マスクのマスク座標は、破線で囲んだ実際の縮小マスクの5×7のマトリクスに付与され、破線で囲んだ5×7のマトリクス左上端の座標を(0,0)とし、5×7のマトリクスの右下端が最終座標(4,6)となる。算出された各フィルタ係数は、実際の縮小マスクのマスク座標に対応つけて管理される。
この後、マスク座標(α,β)を算出する(S78)。マスク座標(α,β)は、入力マスクにおける1の区画を規定するための座標であり、縮小マスクの1の要素に対応する入力マスクの1の区画においての最終座標(2次元配列で表された入力マスクの1の区画の右下端の座標)を示す。尚、座標(α)が1区画内の最終座標のX座標であり、座標(β)がY座標である。座標αは、以下の演算にて求められる。まず、分割要素数メモリ22a11に記憶されるX軸方向の分割要素数に、フィルタ係数を求める縮小マスクの要素のx座標に1加算した値(x+1)を乗算して得た値を、四捨五入によって整数化する。そして、整数化された値から1を減算することで要素の個数から座標系へと値を変換し、それを入力マスクの対応する区画の先頭座標であるXに加算することでαが求められる。
同様に、座標βは、分割要素数メモリ22a11に記憶されるY軸方向の分割要素数に、フィルタ係数を求める縮小マスクの要素のy座標に1加算した値(y+1)を乗算して得た値を、四捨五入によって整数化する。そして、整数化された値から1を減算することで要素の個数から座標系へと値を変換し、それを入力マスクの対応する区画の先頭座標であるYに加算することでβが求められる。
縮小マスクのx座標に1加算した値(x+1)を分割要素数に乗算して得られる値及び、縮小マスクのy座標に1加算した値(y+1)を分割要素数に乗算して得られる値、簡単に言えば、分割要素数をn倍(nは1以上の自然数)した値は、各区画における分割位置を示す座標値となっている。
図9には、21×21のマトリクスの入力マスクから5×7のマトリクスの縮小マスクを作成する場合を例示している。尚、Y軸方向についても同様の処理であるので、X軸方向についてのみ説明し、Y軸方向の説明については省略する。
図9の(a)は、入力マスクの分割方法を概念的に説明する図であり、図9の(b)は、入力マスクを分割して区画を作成する際のパラメータとなる数値を表で示したものである。表においては左欄に項目を、右欄には各項目に対応する数値を示している。図9の例では、図9(b)に示すように、入力マスクのX軸方向のサイズは21であり、X軸方向の縮小率は1/5とされている。従って、縮小率を乗算して縮小マスクのx軸方向のサイズは、4.2と算出され、これを整数化した後、奇数となるように1を加算することで、マスクサイズが5に確定する。確定したマスクサイズ5で入力マスクのX軸方向の要素数を分割すると、X軸方向の分割要素数=4.2が得られる。
図9(a)の最下方には、縮小マスクの1の行に配列された各要素を図示している。これら要素の縮小マスクにおけるマスク座標は、(0,0)〜(4,0)である。図9(a)の最上方には、入力マスクの1の行に配列された各要素を図示している。これら要素の入力マスクにおけるマスク座標は、(0,0)〜(20,0)である。分割要素数は4.2であるので、図示した入力マスクにおいて破線で示す位置がこの分割要素数に従った分割位置となる。座標で示すと、分割位置は(3.2,0),(7.4,0),(11.6,0),(15.8,0)となり、(0,0)〜(20,0)をかかる分割位置で区分した区画には、4.2要素ずつが含まれる。
図9(a)においては、この入力マスクの直下に、拡大した縮小マスクを示している。分割要素数に従えば、破線で示す位置まで、即ち、拡大した縮小マスクの1の要素と同じ大きさで表示される範囲までが、入力マスクにおける1区画となるが、本実施形態では、分割要素数から求めた分割位置を整数化しており、その整数化された分割位置から区画の座標を決定している。具体的には、例えば、入力マスクの先頭から4.2個の要素が含まれる範囲が、縮小マスクの座標(0,0)の要素に対応する本来の区画であるが、分割位置を整数化(四捨五入)して4個の要素を含む位置に、分割位置を変更している。その結果、縮小マスクのマスク座標(0,0)の要素に対応する入力マスクの区画は、入力マスクのX座標が(0)〜(3)である範囲となる。同様に、縮小マスクのマスク座標(1,0)の要素に対応する入力マスクの区画は、入力マスクのX座標が(4)〜(7)である範囲となり、縮小マスクのマスク座標(2,0)の要素に対応する入力マスクの区画は、入力マスクのX座標が(8)〜(12)である範囲となり、縮小マスクのマスク座標(3,0)の要素に対応する入力マスクの区画は、入力マスクのX座標が(13)〜(16)である範囲となり、縮小マスクのマスク座標(4,0)の要素に対応する入力マスクの区画は、入力マスクのX座標が(17)〜(21)である範囲となる。
このように、本実施形態では、各分割位置を四捨五入して整数化することで、要素が分断されることを回避して、区画内に含まれる要素数を整数化している。かかる方法によれば、区画内に含まれる要素数は変化するが、その数は、2以下の僅かな要素数であるので本来の区画に対して大きく変化することはない。これによれば、区画内において、フィルタ演算に使用される要素(フィルタ係数が格納されている要素)の数をカウントする処理を簡便に行うことができる。その上、入力マスクの全要素を縮小マスクに割り付けることができるので、両マスクの整合性を向上させることができる。
S78の処理の後は、入力マスクメモリ23a9に記憶されている要素のマスク座標に基づき、入力マスクのマスク座標が(X,Y)〜(α,β)の範囲で、フィルタ演算に用いられた要素(フィルタ係数が格納されている要素)の数を集計する(S79)。これは、入力マスクメモリ23a9において、マスク座標が(X,Y)〜(α,β)の範囲で記憶されているフィルタ係数の数を確認することで実行される。入力マスクメモリ23a9には、S63〜S67の処理によって、参照点数分の要素の座標とその対応するフィルタ係数のみが記憶されるように構成されているからである。
次いで、集計した数を(その数が0でなければ)、S77の処理で求めた縮小マスクのマスク座標(x,y)のフィルタ係数に乗算し、得られた値を縮小マスクのフィルタ係数として、縮小マスクメモリ23a10にマスク座標(x,y)に対応つけて記憶する(S80)。
尚、S79の処理で集計数が0となる場合には、縮小画像に対するフィルタ演算においては使用されない要素としてCPU21に認識される。縮小マスクメモリ23a10には、この0、或いは使用しない要素であることを示す何らかの情報をマスク座標に対応つけて記憶させることで、CPU21に、そのマスク座標の要素をフィルタ演算に用いない要素であると認識させても良く、S79での集計結果が0であると、そのマスク座標を縮小マスクメモリ23a10に記憶させないことで、CPU21に、そのマスク座標の要素がフィルタ演算に用いない要素であると認識させても良い。本実施形態においては、S79での集計結果が0である場合には、対応する要素のマスク座標を縮小マスクメモリ23a10には記憶されない。
かかる縮小マスクの生成原理を図10を参照して具体的に説明する。図10において、紙面最左方には、15×15のマトリクスで形成された入力マスクを図示している。かかる入力マスクの各要素には、左上端の要素を(0,0)、右下端の要素を最終座標(14,14)として、マスク座標がそれぞれ付与されている。また、各要素には、上記した順に従って0から224までの識別番号が付与されており、入力マスクの上側には1行目に配列された要素について付与された識別番号「0,1,2,3,4,5,6,7,・・・,14」を、および左側には1列目に配列された要素について付与された識別番号「(0),15,30,45,60,75,・・・,210」を表示している。
図示した入力マスクにおいて、斜線の面種で表示されている要素は、実際にフィルタ演算に使用される要素であることを、白塗りの面種で表示されている要素は、フィルタ演算に用いられない要素であることを示している。また、黒塗りで示した要素は、注目画素に重ねられる中心要素を示している。
入力マスクの右方には、入力マスクから作成された5×5のマトリクスの縮小マスクを表示している。このため、入力マスクの3×3の要素が、縮小マスクの1の要素に対応する区画となっている。この縮小マスクにおいて、左上端と右下端とには、その位置の要素のマスク座標(0,0)および(4,4)が表示されている。
図10の中央に表示した縮小マスクは、実際のフィルタ演算には用いられない縮小マスクであるが、縮小マスクの生成原理を説明するために図示しており、左方の入力マスクの対応する区画においてフィルタ演算に使用される要素が含まれている場合を斜線の面種で示し、逆に、使用される要素が含まれていない場合を白塗りの面種で示している。中心要素は黒塗りの面種で示している。
また、図10の中央下方には、その上方の縮小マスクの拡大図を表示しており、かかる拡大図に示す各要素には、正規分布関数から算出された基本(重みを付加する前)のフィルタ係数を表示している。尚、白塗りの面種で示される要素は、対応する入力マスクの区画において、1つもフィルタ演算に使用される要素を含んでいないので、縮小マスクによるフィルタ演算においては使用されない要素となり、縮小マスクメモリ23a10には、その座標、フィルタ係数は記憶されていない。このため、そのフィルタ係数を括弧書きで示している。
ここで、入力マスクと縮小マスクとを比較すると、マスクにおいて使用される要素のパターン(言い換えれば、要素の間引きパターン)が異なっていることが明確である。間引きパターンを有する入力マスクを縮小して縮小マスクを形成する場合、縮小マスクの各要素を使用する要素とするか否かを何らかの手法で定める必要がある。ここで、単純には、入力マスクを縮小して縮小マスクのサイズを規定した後、縮小マスクの要素に対応する入力マスクの区画において使用される要素がある場合、その要素を使用する要素とし、縮小マスクの要素に対応する入力マスクの区画において使用される要素がない場合、その要素を使用しない要素とすることで、縮小マスクを作成することができる。しかし、図8の入力マスクと縮小マスクの要素のパターンとは明らかに異なっていることから、かかる手法では、入力マスクのパターンを反映することはできず、両マスクの整合性が低下してしまうことは明白である。
図10の最右方には、本実施形態において縮小画像に対するフィルタ演算に用いる縮小マスクを示し、その直下には、この縮小マスクの拡大図を示している。各要素に付した面種は、左方に示した縮小マスクと同様に、斜線の面種は使用される要素を、白塗りの面種は使用されない要素を示している。また、この縮小マスクにおいても、左上端と右下端とには、その位置の要素のマスク座標(0,0)および(4,4)が表示されている。
この縮小画像に対するフィルタ演算に用いる縮小マスクの拡大図に示すように、各要素には、入力マスクにおいてフィルタ演算で使用される要素(フィルタ係数が格納された要素)数で重み付けをしたフィルタ係数が格納されている。例えば、この縮小マスクの左上端のマスク座標(0,0)の要素においては、対応する入力マスクの区画は、入力マスクのマスク座標(0,0)〜(2,2)で囲まれる3×3要素の矩形の領域である。
かかる区画にはフィルタ演算に使用される要素が2つある。一方で、縮小マスクのマスク座標(0,0)に対応して、正規分布関数から求められたフィルタ係数は0.37である(図10の真ん中に示す縮小マスク参照)。従って、0.37を2倍した0.74が本実施形態において用いられる縮小マスクのマスク座標(0,0)に格納されているフィルタ係数となる。
また、縮小マスクのマスク座標(1,0)の要素においては、対応する入力マスクの区画は、入力マスクのマスク座標(3,0)〜(5,2)で囲まれる3×3要素の矩形の領域であるが、使用される要素が含まれていない。従って、縮小マスクのマスク座標(1,0)の要素は、フィルタ演算に使用されない要素となる。
このように、本実施形態では、入力マスクの間引きパターンは、ガウスフィルタの本来のフィルタ係数に対する重みに変換されることとなる。故に、その重みを、本来のフィルタ係数に加味して、縮小マスクの各フィルタ係数を生成することにより、入力マスクの要素を間引いた状態(間引きパターン)を反映した縮小マスクを作成することができる。つまり、入力マスクと縮小マスクとでは、マスクのパターンは異なってはいるが、フィルタ係数を操作することで、擬似的に入力マスクのパターン(内容)を縮小マスクに反映させているのである。
S80の処理の後は、xがm−1未満であるか(x<m−1)、即ち、1の行におけるX軸方向の最終座標に到達したかを調べ(S81)、その結果、xがm−1以上であれば(S81:No)、その行の最終座標に到達しているので、yがn−1未満であるか(x<n−1)、即ち、最終行に到達したかを調べる(S82)。ここで、yがn−1以上であれば(S82:No)、最終行の最終座標(マスクの最終座標)に到達しているので、このマスク生成処理(S12)を終了する。
ここで、S70の処理で確認した結果、縮小マスクのマスクサイズmが奇数であれば(S70:Yes)、S71の処理をスキップして、その処理をS72の処理に移行する。更に、S72の処理で確認した結果、縮小マスクのマスクサイズnが奇数であれば(S72:Yes)、S73の処理をスキップして、その処理をS74の処理に移行する。また、S81の処理で確認した結果、xがm−1未満であると(S81:Yes)、縮小マスクの1の行において最終座標に到達していないので、フィルタ係数を算出する次の要素を指定するため縮小マスクの現在指定中のx座標に1加算してx座標を更新する。また、入力マスクについて現在指定中のX座標(1の区画の左上端要素のX座標)にαを加算して、対応する1の区画の最終座標(1の区画における右下端要素のX座標)を算出し、その算出された値に更に1を加えて入力マスクの次の区画の先頭座標のX座標を指定してから(S83)、その処理をS77の処理に移行する。これにより、入力マスクの1の行において、最後の区画に到達するまで、縮小マスクの対応する要素のフィルタ係数が繰り返して算出される。
また、S82の処理で確認した結果、yがn−1未満であると(S82:Yes)、縮小マスクの1の行において最終座標に到達しているが、最終行には至っていないので、フィルタ係数を算出する次要素(次行の先頭要素)を指定するため縮小マスクの現在のy座標に1加算してy座標を更新すると共に、x座標を0にセットする。また、入力マスクの現在指定中のX座標(1の区画の左上端要素のX座標)を0にセットし、且つ、入力マスクの現在指定されているY座標(1の区画の左上端要素のY座標)にβを加算して現在の区画の最終座標(1の区画の右下端のY座標)を算出する。そして、その算出された値に更に1を加えて入力マスクの次の区画の先頭座標のY座標を指定してから(S84)、その処理をS77の処理に移行する。これにより、入力マスクの最終行に到達するまで、繰り返して処理が実行される。
このように、本複合機1では、予め定めたサイズの入力マスクを縮小画像の縮小率に基づいて縮小して、縮小マスクを作成するので、入力される元画像のサイズに応じて元画像用マスクの大きさが変動することがない。言い換えれば、入力マスクのマスクサイズの上限値が不明になることはない。入力マスクを記憶するための膨大なメモリ割当てを不要にでき、画像補正を実行するために必要なメモリ量を低減することができる。更に、縮小マスクに入力マスクの間引きパターンを反映することができるので、両者の整合性を向上させ、縮小画像から求められるクリップ範囲を、元画像に対して適切なものとすることができる上、フィルタ処理の演算速度を向上させることができる。
次に、図11と図12とを参照して、本発明の第2実施形態について説明する。上記第1実施形態の複合機1は、縮小マスクの要素に格納するフィルタ係数を、その要素に対応する入力マスクの区画において使用される要素数で、正規分布関数にて算出されたフィルタ係数に重み付けをして生成するように構成された。これに代えて、第2実施形態では、縮小マスクの要素に格納するフィルタ係数を、その要素に対応する入力マスクの区画において使用される要素に格納されたフィルタ係数の総和で、正規分布関数にて算出されたフィルタ係数に重み付けをして生成するように構成されている。尚、上記第1実施形態と同じ部分には同じ符号を付し、その説明を省略する。
第2実施形態の複合機1は、複合機1において入力マスクを生成するのではなく、予めフィルタ演算に用いられる要素の配置と、その要素に格納されるフィルタ係数と、マスクサイズとが設定された入力マスクがデフォルトで記憶されている。このため、第2実施形態では、入力マスクを記憶する入力マスクメモリは、RAM23に代えてROM22に設けられている。尚、入力マスクにおいてフィルタ演算に用いられる要素の配置は、各要素に付与された識別番号またはマスク座標を乱数値で選択して決定されている。また、この入力マスクをROM22に記憶させる工程が、第2実施形態においては、請求項記載の元画像用マスク記憶ステップに該当する。
図11は、第2実施形態のマスク生成処理(S12)のフローチャートである。第2実施形態では、第1実施形態と同様にRetinex処理が実行されるが、Retinex前処理(S1)の中で実行されるマスク生成処理(S12)が変更されている。
第2実施形態のマスク生成処理(S12)では、入力マスクの生成が不要であるので、第1実施形態のマスク生成処理(S12)におけるS61〜S67のステップは省略されている。第2実施形態のマスク生成処理(S12)では、まず、縮小率メモリ23a2に記憶される縮小率を読み出し、その後は、第1実施形態と同様に、入力マスクサイズM,Nに乗算して縮小率を乗算して縮小マスクサイズm,nを算出し、その縮小マスクサイズm,nの整数化、奇数値への補正、分割要素数の算出、正規分布関数に従った縮小マスクのフィルタ係数生成とを行う(S68〜S77)。
その後、マスク座標(α,β)を求めてから(S78)、入力マスクメモリに記憶されているフィルタ係数について、マスク座標(X,Y)〜(α,β)の範囲に属する要素のフィルタ係数の総和を算出する(S101)。続いて、算出した総和をS77で求めた座標(x,y)の要素のフィルタ係数に乗算し、得られた値を縮小マスクのフィルタ係数として、縮小マスクのマスク座標(x,y)に対応つけて縮小マスクメモリ23a10に記憶する(S102)。そして、かかるフィルタ係数の算出を、縮小マスクの全要素に対して実行する(S81〜S84)。
尚、第2実施形態において入力マスクメモリにディフォルトで記憶されている入力マスクは、フィルタ演算に使用される要素についてのみフィルタ係数が格納されたものである。このため、縮小マスクの要素に対応する入力マスクの区画にフィルタ演算に使用される要素がない場合が生じるが、かかる場合においては、S101の処理においてマスク座標(X,Y)〜(α,β)の範囲に属する要素の座標およびフィルタ係数が入力マスクメモリには記憶されていない。従って、S101の処理では、フィルタ係数の総和は算出されず、S102の処理をスキップして、S81の処理を実行する。
図12は、かかる第2実施形態の縮小マスクの生成原理を説明する図である。図10と同様に、紙面最左方には、15×15のマトリクスで形成された入力マスクを、紙面中央と、紙面最右方には、入力マスクから生成された5×5のマトリクスの縮小マスクを示しており、各縮小マスクの表示の下方には、それぞれ縮小マスクの拡大図を示している。また、入力マスクの上側には1行目に配列された要素について付与された識別番号「0,1,2,3,4,5,6,7,・・・,14」を、および左側には1列目に配列された要素について付与された識別番号「(0),15,30,45,60,75,・・・,210」を、表示している。
中央の縮小マスクは、実際のフィルタ演算には用いられない縮小マスクであるが、縮小マスクの生成原理を説明するために図示しており、その拡大図には、正規分布関数から算出された基本のフィルタ係数を表示している。最右方の縮小マスクは、第2実施形態において縮小画像に対するフィルタ演算に用いる縮小マスクであり、この縮小マスクの拡大図においては、入力マスクにおいてフィルタ演算で使用される要素に格納されたフィルタ係数の総和で重み付けをすることで求められた縮小マスクのフィルタ係数が各要素に対応して表示されている。
図示した各マスクにおいて、左上端と右下端とには、その位置の要素のマスク座標を表示しており、また、斜線の面種で表示されている要素は、実際にフィルタ演算に使用される要素とし、白塗りの面種で表示されている要素は、フィルタ演算に用いられない要素であることを示している。また、黒塗りで示した要素は、注目画素に重ねられる中心要素を示している。
例えば、この縮小マスクの左上端のマスク座標(0,0)の要素においては、対応する入力マスクの区画は、入力マスクのマスク座標(0,0)〜(2,2)で囲まれる3×3要素の矩形の領域である。
かかる区画にはフィルタ演算に使用される要素が2つあり、そのフィルタ係数は、入力マスクの右上方に示す拡大図に表示したとおり、0と0.02とである。尚、入力マスクの拡大図内の各要素には、正規分布関数によって求められる各要素のフィルタ係数を示しているが、用いられない(格納されていない)フィルタ係数は括弧書きで示している。
一方で、縮小マスクのマスク座標(0,0)に対応して、正規分布関数から求められたフィルタ係数は0.37である(図12中央に示す縮小マスク参照)。従って、0.37に、入力マスクの対応する区画において使用されるフィルタ係数の総和0.02を乗算した0.0074が、第2実施形態において用いられる縮小マスクのマスク座標(0,0)に格納されているフィルタ係数となる。
同様の演算によって、縮小マスクの各要素に対応する入力マスクの区画内において、演算に用いられるフィルタ係数がある場合には、そのフィルタ係数の総和が算出されるとともに、その総和が重みとして、正規分布関数によって求められる基本のフィルタ係数に乗算され、縮小画像の各要素のフィルタ係数が導出される。図12の最右方の縮小マスクには、かかる演算によって得られたフィルタ係数が各要素に対応して表示されている。尚、縮小マスクの各要素に対応する入力マスクの区画内において、演算に用いられるフィルタ係数がない場合には、上記したように、縮小マスクのその対応する要素はフィルタ演算には用いられない要素となり、フィルタ係数は格納されない。
このように、第2実施形態の複合機1によれば、縮小マスクの各要素に対応する入力マスクの区画内において、演算に用いられるフィルタ係数がある場合には、そのフィルタ係数の総和が重みとして縮小マスクのフィルタ係数に加味される。このため、入力マスクの内容を縮小マスクに反映させることができ、両マスクの整合性を向上させ、結果として、縮小画像から求められるクリップ範囲を、元画像に対する適切なパラメータとすることができる。
以上、実施形態に基づいて本発明を説明したが、本発明は上記各実施形態に何ら限定されるものでなく、本発明の趣旨を逸脱しない範囲内で種々の改良変形が可能であることは容易に推察できるものである。
例えば、上記各実施形態では、入力マスクは乱数によってフィルタ係数を格納する要素(フィルタ演算に用いる要素)が選定された。これに代えて、ユーザや設計者が任意に要素を選択するようにしてもよい。更には、上記各実施形態においては、縮小マスクのフィルタ演算に用いる要素についてのみ、正規分布関数に従ったフィルタ係数が算出されるようにマスク生成処理(S12)は構成されたが、これに代えて、全ての要素の正規分布関数を最初にまとめて算出して縮小マスクメモリ23a10に記憶すると共に、使用しない要素に対してはその旨を示す情報を付与することで、使用する要素と否である要素とを区別してCPU21が認識できるようにしても良い。
また、上記第1実施形態では、入力マスクを複合機1において生成し、上記第2実施形態では、入力マスクは予め複合機1内のROM22に記憶される構成としたが、これに代えて、第1実施形態の複合機1を入力マスクを予め記憶する構成としても良く、第2実施形態の複合機1を装置内で入力マスクを生成する構成としても良い。
更には、上記各実施形態では、マスク生成処理(S12)において、正規分布関数に従ったフィルタ係数(重みを付加する前のフィルタ係数)は、S77の処理により縮小マスクの全要素について算出されるように構成された。これに代えて、S78,S79の処理の後にS77の処理を行うようにすると共に、入力マスクの対応する区画において使用される要素がない場合には、S77の処理をスキップして、正規分布関数に従ったフィルタ係数の算出を回避するようにマスク生成処理(S12)を構成しても良い。
また、上記各実施形態では、入力マスクの全要素を縮小マスクに割り付けるとように、入力マスクを区分したが、必ずしも、入力マスクの全要素を縮小マスクに割り付ける必要はなく、例えば、縮小マスクの要素数で入力マスクの全要素を分割した場合に生じる端数を切り捨て、入力マスクの全要素の内、縮小マスクの要素数の整数倍の範囲ついて縮小マスクに割り付けるものとしても良い。
更には、上記各実施形態のマスク生成処理(S12)においては、1の区画に属する要素数を整数化するように調整したが、これに代えて、分割要素数から導出される分割位置毎に分割された区画を縮小マスクの1の要素に対応する区画として、処理を行っても良い。
本発明の一実施形態の複合機の外観図である。 複合機の電気的構成を示すブロック図である。 複合機において画像処理プログラムにより行われるRetinex処理(レティネックス処理)のフローチャートである。 図3のRetinex処理の中で実行されるRetinex前処理を示すフローチャートである。 図3のRetinex処理の中で実行されるRetinex後処理を示すフローチャートである。 図4のRetinex前処理において実行されるマスク生成処理のフローチャートである。 入力マスク及び縮小マスクの基本構成を示す図である。 縮小マスクの各要素に格納するフィルタ係数の内容を示す図である。 入力マスクの分割方法を示す図である。 入力マスクの間引きパターンを反映した縮小マスクの生成原理を示す図である。 第2実施形態のマスク生成処理のフローチャートである。 第2実施形態の入力マスクの間引きパターンを反映した縮小マスクの生成原理を示す図である。 従来のレティネックス処理の概要を示した図である。
1 複合機(画像処理装置)
2 プリンタ
21 CPU
22 ROM
22b 画像処理プログラム
23a9 元画像用マスク記憶手段
S32 元画像平均画素値生成手段、元画像平均画素値生成ステップ
S12 縮小画像用マスク生成手段、縮小画像用マスク生成ステップ
S14 縮小画像形成手段、縮小画像形成ステップ
S16 縮小平均画素値生成手段、縮小平均画素値生成ステップ
S16〜S25 正規化パラメータ設定手段、正規化パラメータ設定ステップ
S32〜S34 元画像反射光成分値算出手段、元画像反射光成分値算出ステップ
S36 変換手段、変換ステップ
S65 元画像用マスク記憶ステップ、
S70,S72 偶数判断手段
S71,S73 要素数調整手段
S74 対応要素数算出手段、対応要素数算出ステップ
S74,S78 区分手段、区分ステップ
S79,S80,S101,S102 重み付けフィルタ係数算出手段、重み付けフィルタ係数算出ステップ
S78 分割位置算出手段、整数化手段、分割位置算出ステップ、整数化ステップ

Claims (9)

  1. 元画像の注目画素を含む周辺画素領域に対するフィルタ演算を行って各注目画素に対応する周辺画素の平均画素値をそれぞれ生成する元画像平均画素値生成手段と、前記元画像平均画素値生成手段により生成された平均画素値と元画像の注目画素の画素値とに対する対数演算処理に基づいて、注目画素と周辺画素との明るさの比を示す反射光成分値を元画像の各画素について算出する元画像反射光成分値算出手段と、前記元画像反射光成分値算出手段により算出された元画像の各反射光成分値と、注目画素の画素値とに基づくと共に、反射光成分値に応じて変化する画素値と出力値との対応関係に従って注目画素の画素値を出力値に変換する変換手段とを有し、前記変換手段により、元画像の注目画素の画素値を、注目画素と周辺画素との明るさの比に応じて補正する画像処理装置において、
    前記変換手段は、元画像の画素値を反射光成分値に基づいて変換する場合には、反射光成分値を正規化パラメータに従って正規化した正規化反射光成分値を用いて元画像の画素値を変換するものであり、
    前記正規化パラメータを設定するために元画像を縮小して縮小画像を形成する縮小画像形成手段と、
    前記縮小画像形成手段により形成された縮小画像の各画素を注目画素とし、当該注目画素を含む周辺画素領域に対するフィルタ演算を行って、縮小画像の各注目画素に対応する周辺画素の平均画素値をそれぞれ生成する縮小平均画素値生成手段と、
    前記縮小平均画素値生成手段により生成された平均画素値と縮小画像の注目画素の画素値とに基づくレティネックス演算処理に基づいて、縮小画像の各画素の反射光成分値を算出し、算出された反射光成分値の最大値から最小値までの範囲で、前記縮小画像の前記反射光成分値の頻度分布を形成してその頻度分布のメジアン値を特定し、その特定したメジアン値を含む所定の数値範囲の下限値と上限値とを、前記変換手段が用いる正規化反射光成分値の正規化パラメータとして設定する正規化パラメータ設定手段と、
    前記元画像平均画素値生成手段でのフィルタ演算に用いられ仮想的に2次元マトリクスに配置される要素に格納されたフィルタ係数を有する元画像用マスクを記憶する元画像用マスク記憶手段と、
    記縮小平均画素値生成手段が実行するフィルタ演算で用いられる縮小画像用マスクを生成する縮小画像用マスク生成手段とを備え
    前記縮小画像用マスク生成手段は、
    元画像と縮小画像とのサイズ比に基づいて縮小画像用マスクのマスクサイズを決定するマスクサイズ決定手段と、
    そのマスクサイズ決定手段により決定されたマスクサイズの縮小画像用マスクの全要素数で、前記元画像用マスク記憶手段に記憶される元画像用マスクを区分する区分手段と、
    縮小画像用マスクの各要素について、正規分布関数に従い、フィルタ係数を算出するフィルタ係数算出手段と、
    前記フィルタ係数算出手段により前記縮小画像用マスクの各要素について算出されたフィルタ係数に対し、前記区分手段にて区分された元画像用マスクの各区画のうち、縮小画像用マスクの要素の配置に対応する区画に関する値で、重み付けをする重み付けフィルタ係数算出手段と、
    前記重み付けフィルタ係数算出手段により得られる値を、フィルタ係数として、前記縮小画像用マスクの要素に格納するフィルタ係数格納手段とを備えることを特徴とする画像処理装置。
  2. 前記元画像平均画素値生成手段によるフィルタ演算において演算に関わる元画像用マスクの要素の数は、前記元画像用マスクを構成する全要素の数よりも少なく、
    前記元画像用マスクは、各要素を特定する値が乱数に従って選択されることで、全要素の内のフィルタ演算に実際に用いられる要素が決定されたものであり、
    前記重み付けフィルタ係数算出手段は、
    前記フィルタ係数算出手段により算出されるフィルタ係数に対し、前記区分手段にて区分された元画像用マスクの各区画のうち、縮小画像用マスクの要素の配置に対応する区画において前記元画像平均画素値生成手段によるフィルタ演算に実際に用いられる要素数で、重み付けをするものであり、
    前記縮小画像用マスク生成手段は、元画像用マスクで使用される要素のパターンを反映した縮小画像用マスクを生成するものであることを特徴とする請求項1記載の画像処理装置。
  3. 前記元画像平均画素値生成手段によるフィルタ演算において演算に関わる元画像用マスクの要素の数は、前記元画像用マスクを構成する全要素よりも少ない数であり、
    前記元画像用マスクは、各要素を特定する値が乱数に従って選択されることで、全要素の内のフィルタ演算に実際に用いられる要素が決定されたものであり、
    前記重み付けフィルタ係数算出手段は、
    前記フィルタ係数算出手段により算出されるフィルタ係数に対し、前記区分手段にて区分された元画像用マスクの各区画のうち、縮小画像用マスクの要素の配置に対応する区画において、前記元画像平均画素値生成手段によるフィルタ演算に実際に用いられる要素に格納されているフィルタ係数の総和で、重み付けをするものであり、
    前記縮小画像用マスク生成手段は、元画像用マスクの内容を反映した縮小画像用マスクを生成するものであることを特徴とする請求項1記載の画像処理装置。
  4. 前記区分手段は、生成された各区画を縮小画像用マスクの各要素に対応させた場合に元画像用マスク側に余剰の要素や不足の要素を発生させることなく、元画像用マスクの全要素を配分して、元画像用マスクを縮小画像用マスクの要素数分に区分するものであることを特徴とする請求項2又は3に記載の画像処理装置。
  5. 前記区分手段は、縮小画像用マスクの大きさと元画像用マスクの大きさとの比に基づいて、縮小画像用マスクの1の要素に対応する元画像用マスクの要素数を算出する対応要素数算出手段と、
    前記対応要素数算出手段により算出された要素数毎に元画像用マスクを分割した場合の各分割位置を算出する分割位置算出手段と、
    前記分割位置算出手段により算出された各分割位置に隣接する2の要素の内のより近いほうへ、分割位置をずらして分割位置間に含まれる要素数を整数化する整数化手段とを備えており、
    分割位置に応じて各分割位置間に含まれる要素数を変更しつつ元画像用マスクに区画を割り付けることで、元画像用マスク側に余剰の要素や不足の要素を発生させることなく、元画像用マスクの全要素を配分するものであることを特徴とする請求項4記載の画像処理装置。
  6. 前記マスクサイズ決定手段は、
    元画像と縮小画像とのサイズ比に基づいて形成される縮小画像用マスクの要素数が、偶数となるかを判断する偶数判断手段と、
    前記偶数判断手段により要素数が偶数になると判断されると、要素数を増加または減少させて、縮小画像用マスクの要素数が奇数となるように調整する要素数調整手段とを備えていることを特徴とする請求項1からのいずれかに記載の画像処理装置。
  7. 元画像の補正処理を行う画像処理装置で実行され、元画像の注目画素を含む周辺画素領域に対するフィルタ演算を行って各注目画素に対応する周辺画素の平均画素値をそれぞれ生成する元画像平均画素値生成ステップと、前記元画像平均画素値生成ステップにより生成された平均画素値と元画像の注目画素の画素値とに対する対数演算処理に基づいて、注目画素と周辺画素との明るさの比を示す反射光成分値を元画像の各画素について算出する元画像反射光成分値算出ステップと、前記元画像反射光成分値算出ステップにより算出された元画像の各反射光成分値と、注目画素の画素値とに基づくと共に、反射光成分値に応じて変化する画素値と出力値との対応関係に従って注目画素の画素値を出力値に変換する変換ステップとを有し、前記変換ステップにより、元画像の注目画素の画素値を、注目画素と周辺画素との明るさの比に応じて補正する画像処理プログラムにおいて、
    前記変換ステップは、元画像の画素値を反射光成分値に基づいて変換する場合には、反射光成分値を正規化パラメータに従って正規化した正規化反射光成分値を用いて元画像の画素値を変換するものであり、
    前記正規化パラメータを設定するために元画像を縮小して縮小画像を形成する縮小画像形成ステップと、
    前記縮小画像形成ステップにより形成された縮小画像の各画素を注目画素とし、当該注目画素を含む周辺画素領域に対するフィルタ演算を行って、縮小画像の各注目画素に対応する周辺画素の平均画素値をそれぞれ生成する縮小平均画素値生成ステップと、
    前記縮小平均画素値生成ステップにより生成された平均画素値と縮小画像の注目画素の画素値とに基づくレティネックス演算処理に基づいて、縮小画像の各画素の反射光成分値を算出し、算出された反射光成分値の最大値から最小値までの範囲で、前記縮小画像の前記反射光成分値の頻度分布を形成してその頻度分布のメジアン値を特定し、その特定したメジアン値を含む所定の数値範囲の下限値と上限値とを、前記変換ステップが用いる正規化反射光成分値の正規化パラメータとして設定する正規化パラメータ設定ステップと、
    前記元画像平均画素値生成ステップでのフィルタ演算に用いられ仮想的に2次元マトリクスに配置される要素に格納されたフィルタ係数を有する元画像用マスクを、前記画像処理装置の内部に記憶する元画像用マスク記憶ステップと、
    記縮小平均画素値生成ステップが実行するフィルタ演算で用いられる縮小画像用マスクを生成する縮小画像用マスク生成ステップとを備え
    前記縮小画像用マスク生成ステップは、
    元画像と縮小画像とのサイズ比に基づいて縮小画像用マスクのマスクサイズを決定するマスクサイズ決定ステップと、
    そのマスクサイズ決定ステップにより決定されたマスクサイズの縮小画像用マスクの全要素数で、前記元画像用マスク記憶ステップにより記憶される元画像用マスクを区分する区分ステップと、
    縮小画像用マスクの各要素について、正規分布関数に従い、フィルタ係数を算出するフィルタ係数算出ステップと、
    前記フィルタ係数算出ステップにより前記縮小画像用マスクの各要素について算出されたフィルタ係数に対し、前記区分ステップにて区分された元画像用マスクの各区画のうち、縮小画像用マスクの要素の配置に対応する区画に関する値で、重み付けをする重み付けフィルタ係数算出ステップと、
    前記重み付けフィルタ係数算出ステップにより得られる値を、フィルタ係数として、前記縮小画像用マスクの要素に格納するフィルタ係数格納ステップとを備えることを特徴とする画像処理プログラム。
  8. 前記元画像平均画素値生成ステップによるフィルタ演算において演算に関わる元画像用マスクの要素の数は、前記元画像用マスクを構成する全要素よりも少ない数であり、
    前記元画像用マスクは、各要素を特定する値が乱数に従って選択されることで、全要素の内のフィルタ演算に実際に用いられる要素が決定されたものであり、
    前記重み付けフィルタ係数算出ステップは、
    前記フィルタ係数算出ステップにより算出されるフィルタ係数に対し、前記区分ステップにて区分された元画像用マスクの各区画のうち、縮小画像用マスクの要素の配置に対応する区画において前記元画像平均画素値生成ステップによるフィルタ演算に実際に用いられる要素数で、重み付けをするものであり、
    前記区分ステップは、
    縮小画像用マスクの大きさと元画像用マスクの大きさとの比に基づいて、縮小画像用マスクの1の要素に対応する元画像用マスクの要素数を算出する対応要素数算出ステップと、
    前記対応要素数算出ステップにより算出された要素数毎に元画像用マスクを分割した場合の各分割位置を算出する分割位置算出ステップと、
    前記分割位置算出ステップにより算出された各分割位置に隣接する2の要素の内のより近いほうへ、分割位置をずらして分割位置間に含まれる要素数を整数化する整数化ステップとを備えており、
    分割位置に応じて各分割位置間に含まれる要素数を変更しつつ元画像用マスクに区画を割り付けることで、元画像用マスク側に余剰の要素や不足の要素を発生させることなく、元画像用マスクの全要素を配分するものであることを特徴とする請求項記載の画像処理プログラム。
  9. 前記元画像平均画素値生成ステップによるフィルタ演算において演算に関わる元画像用マスクの要素の数は、前記元画像用マスクを構成する全要素よりも少ない数であり、
    前記元画像用マスクは、各要素を特定する値が乱数に従って選択されることで、全要素の内のフィルタ演算に実際に用いられる要素が決定されたものであり、
    前記重み付けフィルタ係数算出ステップは、
    前記フィルタ係数算出ステップにより算出されるフィルタ係数に対し、前記区分ステップにて区分された元画像用マスクの各区画のうち、縮小画像用マスクの要素の配置に対応する区画において、前記元画像平均画素値生成ステップによるフィルタ演算に実際に用いられる要素に格納されているフィルタ係数の総和で、重み付けをするものであり、
    前記区分ステップは、
    縮小画像用マスクの大きさと元画像用マスクの大きさとの比に基づいて、縮小画像用マスクの1の要素に対応する元画像用マスクの要素数を算出する対応要素数算出ステップと、
    前記対応要素数算出ステップにより算出された要素数毎に元画像用マスクを分割した場合の各分割位置を算出する分割位置算出ステップと、
    前記分割位置算出ステップにより算出された各分割位置に隣接する2の要素の内のより近いほうへ、分割位置をずらして分割位置間に含まれる要素数を整数化する整数化ステップとを備えており、
    分割位置に応じて各分割位置間に含まれる要素数を変更しつつ元画像用マスクに区画を割り付けることで、元画像用マスク側に余剰の要素や不足の要素を発生させることなく、元画像用マスクの全要素を配分するものであることを特徴とする請求項記載の画像処理プログラム。
JP2007094493A 2007-03-30 2007-03-30 画像処理装置および画像処理プログラム Expired - Fee Related JP4415999B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007094493A JP4415999B2 (ja) 2007-03-30 2007-03-30 画像処理装置および画像処理プログラム
US12/057,838 US8165418B2 (en) 2007-03-30 2008-03-28 Image processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007094493A JP4415999B2 (ja) 2007-03-30 2007-03-30 画像処理装置および画像処理プログラム

Publications (2)

Publication Number Publication Date
JP2008252772A JP2008252772A (ja) 2008-10-16
JP4415999B2 true JP4415999B2 (ja) 2010-02-17

Family

ID=39977151

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007094493A Expired - Fee Related JP4415999B2 (ja) 2007-03-30 2007-03-30 画像処理装置および画像処理プログラム

Country Status (1)

Country Link
JP (1) JP4415999B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109636736B (zh) * 2018-11-06 2022-11-01 中国航空工业集团公司洛阳电光设备研究所 一种宽动态范围红外图像对比度增强方法
CN110717516B (zh) * 2019-09-06 2023-08-25 中国平安财产保险股份有限公司 票据图像分类方法、装置及计算机可读存储介质

Also Published As

Publication number Publication date
JP2008252772A (ja) 2008-10-16

Similar Documents

Publication Publication Date Title
US8165418B2 (en) Image processor
JP3472479B2 (ja) 画像処理装置
JP3626966B2 (ja) 画像処理装置
JP4912270B2 (ja) 画像処理装置及びその制御方法
US8014602B2 (en) Backlight image determining apparatus, backlight image determining method, backlight image correction apparatus, and backlight image correction method
JP2004510369A (ja) デジタル画像鮮鋭化システム
US20110013202A1 (en) Image processing apparatus, image processing method, and program for executing the image processing method
CN110691172B (zh) 图像处理装置、图像处理方法以及记录介质
EP2234383A1 (en) Image processing apparatus, control method, and program
US7916942B1 (en) Image determining apparatus, image enhancement apparatus, backlight image enhancement apparatus, and backlight image enhancement method
JP2008118216A (ja) 画像処理装置および画像処理プログラム
JP4465377B2 (ja) 画像処理方法、画像処理装置、画像形成装置、画像読取装置、コンピュータプログラム、及び記録媒体
US8224083B2 (en) Extraction of illumination light image in an image processing apparatus, and image processing method and storage medium therefor
JP3333894B2 (ja) 画像処理装置
JP4415999B2 (ja) 画像処理装置および画像処理プログラム
JP2022050362A (ja) スキャンした文書の背景領域を検出、抑制、及び修正するためのシステム及び方法
JP2010028314A (ja) 画像処理装置及び方法並びにプログラム
EP1708482A2 (en) Print control method, print control apparatus, and print control program
JP4861506B2 (ja) 画像処理装置およびその制御方法
JP4415998B2 (ja) 画像処理装置および画像処理プログラム
JP4345027B2 (ja) 画像処理プログラムおよび画像処理装置
JP4661754B2 (ja) 画像処理装置および画像処理プログラム
US8031973B2 (en) Data processing device capable of executing retinex processing at high speed
JP4334498B2 (ja) 画像処理装置、画像形成装置、画像処理方法及びコンピュータプログラム
JP5422520B2 (ja) 画像処理装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090305

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090317

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090518

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20091104

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

R150 Certificate of patent or registration of utility model

Ref document number: 4415999

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091117

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121204

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131204

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees