以下、図面にもとづいて本発明の実施形態を説明する。
図1は、本発明の一実施形態にかかる画像評価方法を実行して画像処理する画像処理システムをブロック図により示しており、図2は具体的ハードウェア構成例を概略ブロック図により示している。
図1において、画像入力装置10は写真などをドットマトリクス状の画素として表した実写の画像データを画像処理装置20へ出力し、同画像処理装置20は所定の処理を経て画像データを集計して評価結果を求め、同評価結果に基づいて画像処理の内容と程度を決定してから画像処理を実行する。同画像処理装置20は画像処理した画像データを画像出力装置30へ出力し、画像出力装置は画像処理された画像をドットマトリクス状の画素で出力する。
画像処理装置20は、予め画像データを集計して当該画像に対する評価結果を求めている。この際、複数の評価基準を採用して個別に画像データの集計を行い、所定の条件で重み付けを変化させて合算している。従って、画像処理装置20は、画像データ評価手段を構成する。
画像入力装置10の具体例は図2におけるスキャナ11やデジタルスチルカメラ12あるいはビデオカメラ14などが該当し、画像処理装置20の具体例はコンピュータ21とハードディスク22とキーボード23とCD−ROMドライブ24とフレキシブルディスクドライブ25とモデム26などからなるコンピュータシステムが該当し、画像出力装置30の具体例はプリンタ31やディスプレイ32等が該当する。本実施形態の場合、画像の不具合等を修正すべく等該画像を評価するため、画像データとしては写真などの実写データが好適である。なお、モデム26については公衆通信回線に接続され、外部のネットワークに同公衆通信回線を介して接続し、ソフトウェアやデータをダウンロードして導入可能となっている。
本実施形態においては、画像入力装置10としてのスキャナ11やデジタルスチルカメラ12が画像データとしてRGB(緑、青、赤)の階調データを出力するとともに、画像出力装置30としてのプリンタ31は階調データとしてCMY(シアン、マゼンダ、イエロー)あるいはこれに黒を加えたCMYKの二値データを入力として必要とするし、ディスプレイ32はRGBの階調データを入力として必要とする。一方、コンピュータ21内ではオペレーティングシステム21aが稼働しており、プリンタ31やディスプレイ32に対応したプリンタドライバ21bやディスプレイドライバ21cが組み込まれている。また、画像処理アプリケーション21dはオペレーティングシステム21aにて処理の実行を制御され、必要に応じてプリンタドライバ21bやディスプレイドライバ21cと連携して所定の画像処理を実行する。
従って、画像処理装置20としてのこのコンピュータ21の具体的役割は、RGBの階調データを入力して画像を評価しつつ最適な画像処理を施したRGBの階調データを作成し、ディスプレイドライバ21cを介してディスプレイ32に表示させるとともに、プリンタドライバ21bを介してCMY(あるいはCMYK)の二値データに変換してプリンタ31に印刷させることになる。
このように、本実施形態においては、画像の入出力装置の間にコンピュータシステムを組み込んで画像評価と画像処理を行うようにしているが、必ずしもかかるコンピュータシステムを必要とするわけではなく、画像データに対して各種の画像処理を行うシステムに適用可能である。例えば、図3に示すようにデジタルスチルカメラ12a内に画像評価して画像処理する画像処理装置を組み込み、変換した画像データを用いてディスプレイ32aに表示させたりプリンタ31aに印字させるようなシステムであっても良い。また、図4に示すように、コンピュータシステムを介することなく画像データを入力して印刷するプリンタ31bにおいては、スキャナ11bやデジタルスチルカメラ12bあるいはモデム26b等を介して入力される画像データから画像評価して画像処理するように構成することも可能である。
上述した画像評価とそれに伴う画像処理は、具体的には上記コンピュータ21内にて図5などに示すフローチャートに対応した画像処理プログラムで行っている。同図に示すフローチャートは画像処理プログラムにおける画像評価の前段部分に該当し、画像データを複数の評価基準で集計して所定の評価結果を得る処理を実行する。
ここで本実施形態において採用する二つの評価基準について説明する。共通するのはいずれも全画素を対象とするのではなく、所定の基準に従って画素を間引くとともに、サンプリングした画素について輝度を集計する点である。また、相違するのは、一方が均等に画素をサンプリングするのに対し、他方がエッジ画素を選択してサンプリングする点である。輝度の集計結果については後述するが、このようにしていわゆるサンプリング手法を変えることにより、画像の評価を変えることができる。均等に画素をサンプリングするというのは画像全体の画素について輝度を集計することに他ならず、画像全体としての画像データの輝度の分布を評価することになるから、風景写真が全体的に暗いとかコントラストが狭いといった評価の参考となる。
一方、エッジ画素は画像のシャープな部分であるから、画像の中でも本来の被写体に関わる画素について輝度を集計することになり、たとえ背景が暗くても被写体が十分な明るさを持っていれば画像の明るさは十分であるといった評価結果が得られることになる。本実施形態においては、操作者による選択あるいは自動処理によってこれら二つの評価基準を適宜組み合わせて画像の判定を行うようにしている。
図5に示すフローチャートを参照すると、この画像評価処理では、図6に示すようにドットマトリクス状の画素からなる画像データについて対象画素を水平方向に主走査しつつ垂直方向に副走査して移動させ、各画素についてサンプリング対象であるか否かを判断して集計している。
画像データがドットマトリクス状の画素から構成されている場合には、各画素ごとに上述したRGBの輝度を表す階調データで表されており、画像のエッジ部分では隣接する画素間での同データの差分は大きくなる。この差分は輝度勾配であり、これをエッジ度と呼ぶことにし、ステップS110では各画素でのエッジ度を判定する。図7に示すようなXY直交座標を考察する場合、画像の変化度合いのベクトルはX軸方向成分とY軸方向成分とをそれぞれ求めれば演算可能となる。
ドットマトリクス状の画素からなるディジタル画像においては、図8に示すように縦軸方向と横軸方向に画素が隣接しており、その明るさをf(x,y)で表すものとする。この場合、f(x,y)はRGBの各輝度であるR(x,y),G(x,y),B(x,y)であったり、あるいは全体の輝度Y(x,y)であってもよい、なお、RGBの各輝度であるR(x,y),G(x,y),B(x,y)と全体の輝度Y(x,y)との関係は、厳密には色変換テーブルなどを参照しなければ変換不能であるが、後述するようにして簡易な対応関係を利用するようにしても良い。
図8に示すものにおいて、X方向の差分値fxとY方向の差分値fyは、
のように表される。従って、これらを成分とするベクトルの大きさ
のように表される。むろん、エッジ度はこの|g(x,y)|で表される。なお、本来、画素は図9に示すように縦横に升目状に配置されており、中央の画素に注目すると八つの隣接画素がある。従って、同様にそれぞれの隣接する画素との画像データの差分をベクトルで表し、このベクトルの和を画像の変化度合いと判断しても良い。
以上のようにして各画素についてエッジ度が求められるので、あるしきい値と比較してエッジ度の方が大きい画素はエッジ画素と判断すればよい。なお、経験的事実から考察すると、フォーカスが集中する被写体は構図の中央部分に位置することが多い。従って、中央部分から多くの画素が抽出されるような仕組みとすることにより、画像処理の判断に利用したときにより好ましい効果を得られる。
このため、図10に示すように、画像の中の部分毎に比較するしきい値Th1,Th2,Th3を異ならせておくようにしてもよい。むろん、この例では、
なる関係があり、中央に近い部分ほどしきい値は低く、エッジ度が比較的低くてもフォーカスが集中していると判断されるようになる。
ステップS120ではエッジ度と同しきい値とを比較して変化度合いが大きいか否かを判断する。比較の結果、エッジ度の方が大きければこの画素はエッジ画素であると判断し、ステップS130にてその画素の画像データをサンプリングしてワークエリアに保存する。ワークエリアはコンピュータ21内のRAMであってもよいしハードディスク22であってもよい。
一方、このようなエッジ度の判定と並行してステップS140では当該対象画素が均等サンプリングの対象画素であるか否かを判断する。均等にサンプリングするといっても、ある誤差の範囲内となる程度にサンプリングする必要がある。統計的誤差によれば、サンプル数Nに対する誤差は概ね1/(N**(1/2))と表せる。ただし、**は累乗を表している。従って、1%程度の誤差で処理を行うためにはN=10000となる。
ここにおいて、図6に示すビットマップ画面は(width)×(height)の画素数となり、サンプリング周期ratioは、
とする。ここにおいて、min(width,height)はwidthとheightのいずれか小さい方であり、Aは定数とする。また、ここでいうサンプリング周期ratioは何画素ごとにサンプリングするかを表しており、図11の○印の画素はサンプリング周期ratio=2の場合を示している。すなわち、縦方向及び横方向に二画素ごとに一画素のサンプリングであり、一画素おきにサンプリングしている。A=200としたときの1ライン中のサンプリング画素数は図12に示すようになる。
同図から明らかなように、サンプリングしないことになるサンプリング周期ratio=1の場合を除いて、200画素以上の幅があるときには最低でもサンプル数は100画素以上となることが分かる。従って、縦方向と横方向について200画素以上の場合には(100画素)×(100画素)=(10000画素)が確保され、誤差を1%以下にできる。
ここにおいてmin(width,height)を基準としているのは次のような理由による。例えば、図13(a)に示すビットマップ画像のように、width>>heightであるとすると、長い方のwidthでサンプリング周期ratioを決めてしまった場合には、同図(b)に示すように、縦方向には上端と下端の2ラインしか画素を抽出されないといったことが起こりかねない。しかしながら、min(width,height)として、小さい方に基づいてサンプリング周期ratioを決めるようにすれば同図(c)に示すように少ない方の縦方向においても中間部を含むような間引きを行うことができるようになる。すなわち、所定の抽出数を確保したサンプリングが可能となる。
ステップS140では、このような均等なサンプリング手法を採用しつつ、当該対象画素がそのサンプリング対象となっているか否かを判断し、対象であればステップS150にて画像データをサンプリングする。
ステップS130,S150で画像データをサンプリングするというのは、同画像データに基づいて輝度を集計することを意味する。上述したように、本実施形態においてはコンピュータ21が扱うのはRGBの階調データであり、直接には輝度の値を持っていない。輝度を求めるためにLuv表色空間に色変換することも可能であるが、演算量などの問題から得策ではない。このため、テレビジョンなどの場合に利用されているRGBから輝度を直に求める次式の変換式を利用する。
輝度はヒストグラムとして集計し、むろん、ステップS130の集計エリアとステップS150の集計エリアは別個である。なお、輝度の集計とともに集計対象となった画素数についても集計しておく。
以上のような処理を画像データの各画素について行うため、ステップS160にて処理の対象画素を移動させ、ステップS170にて全画素について終了したと判断されるまで処理を繰り返す。
それぞれのサンプリング手法で対象となる画素について輝度の集計を行ったら、ステップS180では画像評価オプションを入力する。図14はディスプレイ32上に表示される画像評価オプション入力画面を示しており、選択肢としてポートレートと風景写真と自動設定という三つが用意されている。
図15に示すように均等サンプリングで得られた輝度のヒストグラムと、エッジ画素のサンプリングで得られた輝度のヒストグラムとを合算して当該画像を評価するためのヒストグラムを生成するにあたり、それぞれの重み付けを調整する必要がある。ここで重み付け係数kを採用すると、均等サンプリングの集計結果Dist_aveとエッジ画素サンプリングでの集計結果Dist_edgから、評価用の集計結果Dist_Sumは、
となる。そして、この重み付け係数kは、「0」に近づくほど全体重視となり、「1」に近づくほど被写体重視といえる。このため、図14に示す画像評価オプション入力画面でオプションを選択した後、ステップS190にて同オプションに基づいて分岐し、ポートレートを選択したときにはステップS192にて「k=0.8」と設定し、風景写真を選択したときにはステップS194にて「k=0.2」と設定する。
オプション選択の残る一つの選択肢は自動設定である。この自動設定では先に述べたようにサンプリングしたエッジ画素数に基づき、当該エッジ画素数が少ない場合には風景写真と考えて重み付け係数kを「0」に近づけるし、当該エッジ画素数が多い場合にはポートレートと考えて重み付け係数kを「1」に近づける。エッジ画素のサンプリング数x_edgと均等サンプリング数x_aveを使用し、ステップS196にて重み付け係数を
として算出して評価用の集計結果Dist_Sumを得る。
このようにして評価用の集計結果Dist_Sumを得ることにより画像の評価を行ったことになる。むろん、この集計結果を用いてさらなる判定を行っても良いが、基本的にはかかる集計結果を利用する画像処理に応じて適宜変更すればよい。
この後、同集計結果に基づいて最適な画像処理を決定し、実行する。図16は、その一例としてコントラストの拡大と明度の補正の画像処理を実行するためのフローチャートを示している。
本実施形態でのコントラストを拡大するための基本的な手法は、画像データに基づいて輝度分布を求め、この輝度分布が本来の階調幅(255階調)の一部分しか利用していないのであれば分布を拡大するというものである。
従って、ステップS310では上述した重み付け係数kから集計結果Dist_Sumとしての輝度分布のヒストグラムを作成し、ステップS320では拡大する幅を決定する。拡大幅を決定するにあたり、輝度分布の両端を求めることを考える。写真画像の輝度分布は図17に示すように概ね山形に表れる。むろん、その位置、形状についてはさまざまである。輝度分布の幅はこの両端をどこに決めるかによって決定されるが、単に裾野が延びて分布数が「0」となる点を両端とすることはできない。裾野部分では分布数が「0」付近で変移する場合があるし、統計的に見れば限りなく「0」に近づきながら推移していくからである。
このため、分布範囲において最も輝度の大きい側と小さい側からある分布割合だけ内側に経た部分を分布の両端とする。本実施形態においては、同図に示すように、この分布割合を0.5%に設定している。むろん、この割合については、適宜、変更することが可能である。このように、ある分布割合だけ上端と下端をカットすることにより、ノイズなどに起因して生じている白点や黒点を無視することもできる。すなわち、このような処理をしなければ一点でも白点や黒点があればそれが輝度分布の両端となってしまうので、255階調の輝度値であれば、多くの場合において最下端は階調「0」であるし、最上端は階調「255」となってしまうが、上端部分から0.5%の画素数だけ内側に入った部分を端部とすることにより、このようなことが無くなる。
実際の処理ではサンプリングした画素数に対する0.5%を演算し、再現可能な輝度分布における上端の輝度値及び下端の輝度値から順番に内側に向かいながらそれぞれの分布数を累積し、0.5%の値となった輝度値を求める。以後、この上端側をymaxと呼び、下端側をyminと呼ぶ。
再現可能な輝度の範囲を「0」〜「255」としたときに、変換前の輝度yと輝度の分布範囲の最大値ymaxと最小値yminから変換先の輝度Yを次式に基づいて求める。
ただし
また、上記変換式にてY<0ならばY=0とし、Y>255ならばY=255とする。ここにおける、aは傾きであり、bはオフセットといえる。この変換式によれば、図18に示すように、あるせまい幅を持った輝度分布を再現可能な範囲まで広げることができる。ただし、再現可能な範囲を最大限に利用して輝度分布の拡大を図った場合、ハイライト部分が白く抜けてしまったり、ハイシャドウ部分が黒くつぶれてしまうことが起こる。これを防止するため本実施形態においては、再現可能な範囲を制限している。すなわち、再現可能な範囲の上端と下端に拡大しない範囲として輝度値で「5」だけ残している。この結果、変換式のパラメータは次式のようになる。
そして、この場合にはy<yminと、y>ymaxの範囲においては変換を行わないようにする。
ただし、このままの拡大率(aに対応)を適用してしまうと、非常に大きな拡大率が得られる場合も生じてしまう。例えば、夕方のような薄暮の状態では最も明るい部分から暗い部分までのコントラストの幅が狭くて当然であるのに、この画像についてコントラストを大きく拡大しようとする結果、昼間の画像のように変換されてしまいかねない。このような変換は希望されないので、拡大率には制限を設けておき、aが1.5(〜2)以上とはならないように制限する。これにより、薄暮は薄暮なりに表現されるようになる。なお、この場合は輝度分布の中心位置がなるべく変化しないような処理を行っておく。
ところで、輝度の変換時に、毎回、上記変換式(Y=ay+b)を実行するのは非合理的である。というのは、輝度yの取りうる範囲が「0」〜「255」でしかあり得ないため、予め輝度yが取りうる全ての値に対応して変換後の輝度Yを求めておくことも可能である。従って、図19に示すようなテーブルとして記憶しておく。
このような変換テーブルを形成することがステップS320の拡大幅決定処理に該当し、画像データを変更することが可能になる。しかし、このような輝度の範囲の拡大によってコントラストを強調するだけでなく、合わせて明るさを調整することも極めて有効であるため、ステップS330にて画像の明るさを判断し、補正のためのパラメータを生成する。
例えば、図20にて実線で示すように輝度分布の山が全体的に暗い側に寄っている場合には波線で示すように全体的に明るい側に山を移動させると良いし、逆に、図21にて実線で示すように輝度分布の山が全体的に明るい側に寄っている場合には波線で示すように全体的に暗い側に山を移動させると良い。
各種の実験を行った結果、本実施形態においては、輝度分布におけるメジアンymedを求め、同メジアンymedが「85」未満である場合に暗い画像と判断して以下のγ値に対応するγ補正で明るくする。
あるいは、
とする。
この場合、γ<0.7となっても、γ=0.7とする。このような限界を設けておかないと夜の画像が昼間のようになってしまうからである。なお、明るくしすぎると全体的に白っぽい画像になってコントラストが弱い画像になりやすいため、彩度を合わせて強調するなどの処理が好適である。
一方、メジアンymedが「128」より大きい場合に明るい画像と判断して以下のγ値に対応するγ補正で暗くする。
あるいは、
とする。この場合、γ>1.3となっても、γ=1.3として暗くなり過ぎないように限界を設けておく。
なお、このγ補正は変換前の輝度分布に対して行っても良いし、変換後の輝度分布に対して行っても良い。γ補正をした場合における対応関係を図22に示しており、γ<1であれば上方に膨らむカーブとなり、γ>1であれば下方に膨らむカーブとなる。むろん、かかるγ補正の結果も図19に示すテーブル内に反映させておけばよく、テーブルデータに対して同補正を行っておく。
最後に、ステップS340にてコントラスト補正と明度補正が必要であるか否かを判断する。この判断は上述した拡大率(a)とγ値について適当なしきい値と比較し、拡大率の方が大きかったりγ値が所定範囲を超えていたら必要性有りと判断する。そして、必要性有りと判断されれば画像データの変換を行う。
画像処理が必要であると判断された場合、(9)式に基づく変換を行うが、同式の変換式は、RGBの成分値との対応関係においても当てはめることができ、変換前の成分値(R0 ,G0 ,B0 )に対して変換後の成分値(R,G,B)は、
として求めることもできる。ここで、輝度y,Yが階調「0」〜階調「255」であるのに対応してRGBの各成分値(R0,G0,B0),(R,G,B)も同じ範囲となっており、上述した輝度y,Yの変換テーブルをそのまま利用すればよいといえる。
従って、ステップS350では全画素の画像データ(R0,G0,B0)について(18)〜(20)式に対応する変換テーブルを参照し、変換後の画像データ(R,G,B)を得るという処理を繰り返すことになる。
ところで、この場合は輝度の集計結果を画像の判定に利用する評価基準として使用し、コントラスト補正と明度補正を行うようにしているが、画像処理の具体例はこれに限られるものではなく、従って評価基準として使用する集計内容も様々である。
図23は彩度強調のための画像処理を実行する場合のフローチャートを示している。
まず、画素データがその成分要素として彩度を持っていればその彩度の値を用いて分布を求めることが可能であるが、RGBの成分値しか持っていないため、本来的には彩度値が直接の成分値となっている表色空間への変換を行なわなければ彩度値を得ることができない。例えば、標準表色系としてのLuv空間においては、L軸が輝度(明度)を表し、U軸及びV軸で色相を表している。ここにおいて、U軸及びV軸においては両軸の交点からの距離が彩度を表すため、実質的に(U**2+V**2)**(1/2)が彩度となる。
このような異なる表色空間の間での色変換は対応関係を記憶した色変換テーブルを参照しつつ、補間演算を併用しなければならず、演算処理量は膨大となってくる。このような状況に鑑み、本実施形態においては、画像データとして標準的なRGBの階調データを直に利用して彩度の代替値Xを次のようにして求めている。
本来的には彩度は、R=G=Bの場合に「0」となり、RGBの単色あるいはいずれか二色の所定割合による混合時において最大値となる。この性質から直に彩度を適切に表すのは可能であるものの、簡易な(21)式によっても赤の単色および緑と青の混合色である黄であれば最大値の彩度となり、各成分が均一の場合に「0」となる。また、緑や青の単色についても最大値の半分程度には達している。むろん、
という式にも代替可能である。
ステップS410では、上述した均等サンプリングとエッジ画素サンプリングの手法を採用しつつそれぞれ別個に彩度の代替値Xについてのヒストグラムの分布を求める。(21)式においては、彩度が最低値「0」〜最大値「511」の範囲で分布し、概略的には図24に示すような分布となる。次なるステップS420では、集計された彩度分布に基づいてこの画像についての彩度指数というものを決定する。但し、この場合も均等サンプリングの集計結果とエッジ画素サンプリングの集計結果から個別に彩度指数を導出し、上述した重み付け係数kを利用して合算せしめた彩度指数を算出する。
彩度指数を導出するにあたり、本実施形態においては、サンプリングされた画素数の範囲で、分布数として上位の「16%」が占める範囲を求める。そして、この範囲内での最低の彩度「A」がこの画像の彩度を表すものとして次式に基づいて彩度強調指数Sを決定する。
すなわち、
とする。図25は、この彩度「A」と彩度強調指数Sとの関係を示している。図に示すように、彩度指数Sは最大値「50」〜最小値「0」の範囲で彩度「A」が小さいときに大きく、同彩度「A」が大きいときに小さくなるように徐々に変化していくことになる。
彩度強調指数Sに基づいて彩度を強調するにあたり、上述したように画像データが彩度のパラメータを備えているものであれば同パラメータを変換すればよいものの、RGBの表色空間を採用している場合には、一旦、標準表色系であるLuv空間に変換し、Luv空間内で半径方向へ変移させなければならないといえる。しかしながら、RGBの画像データを、一旦、Luv空間内の画像データに変換し、彩度強調後に再びRGBに戻すといった作業が必要となり、演算量が多くならざるを得ない。従って、RGBの階調データをそのまま利用して彩度強調することにする。
RGB表色空間のように各成分が概略対等な関係にある色相成分の成分値であるときには、R=G=Bであればグレイであって無彩度となる。従って、RGBの各成分における最小値となる成分については各画素の色相に影響を与えることなく単に彩度を低下させているにすぎないと考えれば、各成分における最小値をすべての成分値から減算し、その差分値を拡大することによって彩度を強調できるといえる。
まず、上述した彩度強調指数Sから演算に有利な彩度強調パラメータSratioを、
として求める。この場合、彩度強調指数S=0のときに彩度強調パラメータSratio=1となって彩度強調されない。次に、RGB階調データの各成分(R,G,B)における青(B)の成分値が最小値であったとすると、この彩度強調パラメータSratio を使用して次のように変換する。
この結果、RGB表色空間とLuv空間との間で一往復する二度の色変換が不要となるため、演算時間の低減をはかることができる。この実施形態においては、無彩度の成分について単純に最小値の成分を他の成分値から減算する手法を採用しているが、無彩度の成分を減算するにあたっては別の変換式を採用するものであっても構わない。ただし、(29)〜(31)式のように最小値を減算するだけの場合には乗除算が伴わないので演算量が容易となるという効果がある。
(25)〜(27)式を採用する場合でも、良好な変換が可能であるものの、この場合には彩度を強調すると輝度も向上して全体的に明るくなるという傾向がある。従って、各成分値から輝度の相当値を減算した差分値を対象として変換を行うことにする。
まず、輝度を求めるために、上述したLuv空間に色変換したのでは演算量が多大となってしまうため、テレビジョンなどの場合に利用されているRGBから輝度を直に求める次式の変換式を利用する。
輝度Yは、
一方、彩度強調は、
とする。この加減値△R,△G,△Bは輝度との差分値に基づいて次式のように求める。すなわち、
となり、この結果、
として変換可能となる。なお、輝度の保存は次式から明らかである。
また、入力がグレー(R=G=B)のときには、輝度Y=R=G=Bとなるので、加減値△R=△G=△B=0となり、無彩色に色が付くこともない。(39)式〜(41)式を利用すれば輝度が保存され、彩度を強調しても全体的に明るくなることはない。
以上のようにして彩度強調指数Sratio を求めたら、ステップS430にて所定のしきい値と比較し、彩度強調が必要な画像であるかを判断する。そして、必要であればステップS440にて(39)式〜(41)式に基づいて全画素について画像データを変換する。
従って、ステップS410,S420にて複数の評価基準に基づいて画像データを評価しつつ、それぞれの評価結果に対して所定の重み付けを持たせて合算しており、これらを実行するハードウェア構成とソフトウェアとによって画像データ評価手段を構成することになる。
また、他の画像の評価基準としてエッジ強調処理の画像処理を前提としたエッジ度の評価に適用することもできる。図26は、このエッジ強調処理のフローチャートを示している。エッジ度は上述した手法にて算出するものとし、ステップS510では対象画素を移動させながら均等サンプリングとエッジ画素サンプリングの手法で別々にエッジ度を集計する。そして、積算されたエッジ度を画素数で除算することにより、それぞれの評価基準に基づくエッジ度の平均値を算出する。すなわち、この画像のシャープ度合いSLは、画素数をE(I)pixとすると、
のようにして演算することができる。この場合、SLの値が小さい画像ほどシャープネスの度合いが低い(見た目にぼけた)と判断できるし、SLの値が大きい画像ほどシャープネスの度合いが高い(見た目にはっきりとしたもの)と判断できる。
次に、ステップS515では画像評価オプションを入力するなどして重み付け係数kを決定し、それぞれのサンプリング手法に基づくエッジ度を重み付け加算して合算する。
一方、画像のシャープさは感覚的なものであるため、実験的に得られた最適なシャープ度合いの画像データについて同様にしてシャープ度合いSLを求め、その値を理想のシャープ度合いSLoptと設定するとともに、ステップS520においてエッジ強調度Eenhanceを、
として求める。ここにおいて、係数ksは画像の大きさに基づいて変化するものであり、上述したように画像データが縦横方向にそれぞれheightドットとwidthドットからなる場合、
のようにして求めている。ここにおいて、min(height,width)はheightドットとwidthドットのうちのいずれか小さい方を指し、Aは定数で「768」としている。むろん、これらは実験結果から得られたものであり、適宜変更可能であることはいうまでもない。ただし、基本的には画像が大きいものほど強調度を大きくするということで良好な結果を得られている。
このようにしてエッジ強調度Eenhance を求めたら、ステップS530にて所定のしきい値と比較してエッジ強調が必要であるか判断し、必要であると判断されればステップS540にて全画素についてエッジ強調処理を実行する。
エッジ強調処理は、強調前の各画素の輝度Yに対して強調後の輝度Y’が、
として演算される。ここで、Yunsharpは各画素の画像データに対してアンシャープマスク処理を施したものであり、ここでアンシャープマスク処理について説明する。図27は一例として5×5画素のアンシャープマスク41を示している。このアンシャープマスク41は、中央の「100」の値をマトリクス状の画像データにおける処理対象画素Y(x,y)の重み付けとし、その周縁画素に対して同マスクの升目における数値に対応した重み付けをして積算するのに利用される。このアンシャープマスク41を利用する場合、
なる演算式に基づいて積算する。(48)式において、「396」とは重み付け係数の合計値であり、サイズの異なるアンシャープマスクにおいては、それぞれ升目の合計値となる。また、Mijはアンシャープマスクの升目に記載されている重み係数であり、Y(x,y)は各画素の画像データである。なお、ijについてはアンシャープマスク41に対して横列と縦列の座標値で示している。
(47)式に基づいて演算されるエッジ強調演算の意味するところは次のようになる。Yunsharp(x,y)は注目画素に対して周縁画素の重み付けを低くして加算したものであるから、いわゆる「なまった(アンシャープ)」画像データとしていることになる。このようにしてなまらせたものはいわゆるローパスフィルタをかけたものと同様の意味あいを持つ。従って、「Y(x,y)−Yunsharp (x,y)」とは本来の全成分から低周波成分を引いたことになってハイパスフィルタをかけたものと同様の意味あいを持つ。そして、ハイパスフィルタを通過したこの高周波成分に対してエッジ強調度Eenhance を乗算して「Y(x,y)」に加えれば同エッジ強調度Eenhanceに比例して高周波成分を増したことになり、エッジが強調される結果となる。
なお、エッジ強調が必要になる状況を考えるといわゆる画像のエッジ部分であるから、隣接する画素との間で画像データの差が大きな場合にだけ演算するようにしてもよい。このようにすれば、殆どのエッジ部分でない画像データ部分でアンシャープマスクの演算を行う必要がなくなり、処理が激減する。
なお、実際の演算は、強調後の輝度Y’と強調前の輝度Yから、
と置き換えれば、変換後のR’G’B’は、
のように演算可能となる。
従って、このエッジ強調処理では、ステップS510,S515にて、複数の評価基準に基づいて画像のエッジ度を評価しつつ、それぞれの評価結果に対して所定の重み付けを持たせて合算しており、これらを実行するハードウェア構成とソフトウェアとによって画像データ評価手段を構成することになる。
なお、上述したコントラスト補正、明度補正、彩度強調、エッジ強調のそれぞれについて、画像処理を行うかを判断している。しかし、必ずしも画像処理を行うか否かの二者択一の判断を行う必要はない。すなわち、それぞれにおいて強調程度を設定しており、このようにして設定した強調程度で画像処理を行うようにしても良い。
次に、上記構成からなる本実施形態の動作を説明する。
写真画像をスキャナ11で読み込み、プリンタ31にて印刷する場合を想定する。すると、まず、コンピュータ21にてオペレーティングシステム21aが稼働しているもとで、画像処理アプリケーション21dを起動させ、スキャナ11に対して写真の読み取りを開始させる。読み取られた画像データが同オペレーティングシステム21aを介して画像処理アプリケーション21dに取り込まれたら、処理対象画素を初期位置に設定する。続いて、ステップS110にて(1)式〜(3)式に基づいてエッジ度を判定し、ステップS120ではしきい値と同エッジ度とを比較する。そして、エッジ度の方が大きい場合には処理対象画素がエッジ画素であると判断し、ステップS130にて当該画素の画像データをワークエリアに保存する。また、ステップS140では当該処理対象画素が均等サンプリングの対象であるか否かを判断し、対象である場合はステップS150で当該画素の画像データを別のワークエリアに保存する。
以上の処理をステップS160にて処理対象画素を移動させながらステップS170にて全画素について実行したと判断されるまで繰り返す。
全画素について実行し終えたら、それぞれのワークエリアには異なる評価基準でサンプリングされた画像データが保存されていることになり、ステップS180では画像評価のためのオプションを入力する。操作者が画像を見てポートレートであるか風景写真であるかが判断できればいずれかを選択すればよいし、判断できない場合や全てを自動化したい場合には自動設定を選択する。ポートレートを選択した場合には重み付け係数kが「0.8」となってエッジ画素についての集計結果に重きを置かれるし、風景写真を選択した場合には重み付け係数kが「0.2」となって均等にサンプリングした集計結果に重きを置かれ、自動設定を選択した場合にはエッジ画素の割合に応じた重み付け係数kがセットされる。ただし、どの場合においても重み付け係数kを使用して複数の評価基準を採用することになり、一つだけの評価基準にとらわれない柔軟な評価が可能となる。
本実施形態においては、ワークエリアに画像データそのものを保存するようにしたが、メモリ容量や処理時間の面から考えると必ずしも画像データをそのものをワークエリアに保存しておく必要はない。すなわち、最終的にはサンプリング対象の画素について輝度分布や彩度代替値分布のヒストグラムを作成することになるので、予めステップS120,S150にてヒストグラムの情報を蓄積していくようにすればよい。
自動的にコントラスト補正と明度補正を実行する場合は、重み付け係数を使用してステップS120,S150,S310にて輝度分布のヒストグラムを求め、ステップS320にて(12)(13)式に基づいて拡大処理のためのパラメータを決定するとともに、ステップS330にて(14)〜(17)式に基づいて明度補正のためのパラメータを決定する。そして、ステップS340ではこれらのパラメータを所定のしきい値と比較し、画像処理すべきと判断すればステップS350にて上記パラメータに基づいて輝度変換する。この場合、演算量を減らすために最初に図19に示す輝度の変換テーブルを作成しておき、(18)〜(20)式に基づいて画像データを変換する。
この後、画像処理された画像データをディスプレイドライバ21cを介してディスプレイ32に表示し、良好であればプリンタドライバ21bを介してプリンタ31にて印刷させる。すなわち、同プリンタドライバ21bはエッジ強調されたRGBの階調データを入力し、所定の解像度変換を経てプリンタ31の印字ヘッド領域に対応したラスタライズを行なうとともに、ラスタライズデータをRGBからCMYKへ色変換し、その後でCMYKの階調データから二値データへ変換してプリンタ31へ出力する。
以上の処理により、スキャナ11を介して読み込まれた写真の画像データは自動的に最適なコントラスト補正と明度補正を施されてディスプレイ32に表示された後、プリンタ31にて印刷される。すなわち、複数の評価基準を採用してより柔軟に画像を判定し、その評価結果に基づいてコントラスト補正や明度補正という最適な画像処理を実現することができる。
一方、このようなコントラスト補正や明度補正に限らず、彩度強調やエッジ強調の場合にも、複数の評価基準で彩度やエッジ度をサンプリングして集計するとともに重み付け係数を調整して合算するようにしたため、単一の評価基準だけにとらわれない柔軟な判定を経て画像処理を実行することになる。
このように、画像処理の中枢をなすコンピュータ21はステップS120,S140にて異なる評価基準で画素の画像データをサンプリングしておくとともに、ステップS180にて入力される画像評価オプションに基づいてステップS192〜S196にて重み付け係数kを決定し、この決定した重み付け係数kを使用してステップS310にて集計結果を合算して輝度分布ヒストグラムを生成することにより、複数の評価基準を合算した総合的な集計結果に基づいて画像を評価し、ステップS310〜S350にて最適な画像処理を実行することができる。