画像処理装置、画像処理方法、及びコンピュータプログラム
【課題】 ドキュメント内の画像を従来よりも適切に補正できるようにする。
【解決手段】 画像領域を含むドキュメントの実際の観察条件(視距離、印字サイズ)に基づくLPFを用いて低周波画像を生成する。そして、画像領域を含むドキュメントのうち、ユーザにより指定された補正対象領域の画素値を、生成した低周波画像を用いて補正する。したがって、フィルタの適用対象となる領域の周辺の情報(画素値)を反映した低周波画像を生成することができ、ドキュメントを展開したときの見えを考慮して画像を補正することができる。また、指定した領域のみを補正するため、ハロ等の画像障害を抑制し、必要のない部分への補正を行わないようにすることができる。
【解決手段】 画像領域を含むドキュメントの実際の観察条件(視距離、印字サイズ)に基づくLPFを用いて低周波画像を生成する。そして、画像領域を含むドキュメントのうち、ユーザにより指定された補正対象領域の画素値を、生成した低周波画像を用いて補正する。したがって、フィルタの適用対象となる領域の周辺の情報(画素値)を反映した低周波画像を生成することができ、ドキュメントを展開したときの見えを考慮して画像を補正することができる。また、指定した領域のみを補正するため、ハロ等の画像障害を抑制し、必要のない部分への補正を行わないようにすることができる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置、画像処理方法、及びコンピュータプログラムに関し、特に、ドキュメント内の画像を再現するために用いて好適なものである。
【背景技術】
【0002】
昨今、デジタルカメラによってシーンを撮影し、撮影した画像をディスプレイやプロジェクタでの表示やプリンタでの印字を用いて親しむ機会が増えている。この際、撮影時の露出量が適正でないことに起因して、非常に明るい画像又は非常に暗い画像になることがある。また、撮影時の露出量が適正であったとしても、デジタルカメラの輝度レンジに対して、出力機器のレンジが狭い場合には、全体的に暗く眠い画像が出力機器から出力されることになる。
【0003】
これらの問題に対して、従来のS字カーブやニー圧縮等の1D/3DLUTを用いる画像処理では、シャドウやハイライトのディティールが大きく損なわれることがある。これは、画像全体に対して一様な処理が行われることから、特定の階調領域を犠牲にして他の階調領域を良好に再現する処理となるからである。
また、別の画像処理として、レチネックスやiCAM等を用いた画像処理が知られている。これらの画像処理では、画像の低周波領域を用いて照明成分を近似し、この低周波成分を圧縮することで暗画像を明るく補正し、狭いレンジで画像を良好に再現することを実現する。この画像処理では、注目画素と周辺の画素との輝度の対比を用いて補正を行うため、特定の階調領域でのつぶれ等の画像障害の程度が低い。この低周波成分を抽出するにはLPF(Low Pass Filter)を用いる。LPFを設計する方法として、入力側でのシーンとの視距離や画角、或いは出力側での観察距離や印字サイズに応じて視野角を決定し、決定した視野角をLPFに反映することで入力・観察条件に対応した再現を得る方法が提案されている。
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、前述した技術で補正した画像をドキュメント中に埋め込む場合、画像の良好な再現が得られないという問題があった。例えば、ビジネスドキュメントや年賀状・レター・アルバムのように、ドキュメント中に画像が配置されている場合、画像と周辺背景との対比により画像の見えが異なることがある。また、前述した技術とは別の方法として、ドキュメント全体に補正処理を実施する方法もある。しかしながら、この方法を用いた場合、画像の輪郭部分や補正を行いたくないテクスチャー部分に画像障害(ハロ、バンディング)が出ることがある。
【0005】
本発明は、このような問題点に鑑みてなされたものであり、ドキュメント内の画像を従来よりも適切に補正できるようにすることを目的とする。
【課題を解決するための手段】
【0006】
本発明の画像処理装置は、画像データを含むドキュメントデータの画素値を補正する画像処理装置であって、前記ドキュメントデータに基づいて出力されるドキュメントの観察条件をユーザによる操作に基づいて取得する取得手段と、前記観察条件を用いて、前記補正を行うためのローパスフィルタを生成するフィルタ生成手段と、前記ローパスフィルタを用いて、前記ドキュメントデータに対する低周波画像データを生成する低周波データ生成手段と、前記ドキュメントデータにおける画像データを含む領域の画素値を、前記低周波画像データを用いて補正する補正手段とを有することを特徴とする。
【0007】
本発明の画像処理方法は、画像データを含むドキュメントデータの画素値を補正する画像処理方法であって、前記ドキュメントデータに基づいて出力されるドキュメントの観察条件をユーザによる操作に基づいて取得する取得ステップと、前記観察条件を用いて、前記補正を行うためのローパスフィルタを生成するフィルタ生成ステップと、前記ローパスフィルタを用いて、前記ドキュメントデータに対する低周波画像データを生成する低周波データ生成ステップと、前記ドキュメントデータにおける画像データを含む領域の画素値を、前記低周波画像データを用いて補正する補正ステップとを有することを特徴とする。
【0008】
本発明のコンピュータプログラムは、画像データを含むドキュメントデータの画素値を補正することをコンピュータに実行させるためのコンピュータプログラムであって、前記ドキュメントデータに基づいて出力されるドキュメントの観察条件をユーザによる操作に基づいて取得する取得ステップと、前記観察条件を用いて、前記補正を行うためのローパスフィルタを生成するフィルタ生成ステップと、前記ローパスフィルタを用いて、前記ドキュメントデータに対する低周波画像データを生成する低周波データ生成ステップと、前記ドキュメントデータにおける画像データを含む領域の画素値を、前記低周波画像データを用いて補正する補正ステップとをコンピュータに実行させることを特徴とする。
【発明の効果】
【0009】
本発明によれば、実際の観察条件に基づくローパスフィルタを用いて低周波画像データを生成し、生成した低周波画像データを用いてドキュメント内の画像を含む領域を補正するようにした。したがって、ドキュメントを展開するときの見えを考慮して補正することができる。よって、ドキュメント内の画像を従来よりも適切に補正することができる。
【発明を実施するための最良の形態】
【0010】
以下に、図面を参照しながら、本発明の一実施形態について説明する。
図1は、画像処理装置100及びその周辺機器の構成の一例を示すブロック図である。図1において、101はCPU、102はメインメモリ、103はSCSI(Small Computer System Interface)インタフェース(SCSI I/F)である。また、104はネットワークインタフェース(ネットワークI/F)、105はHDD(Hard Disk Drive)、106はグラフィックアクセラレータ、107はディスプレイ、108はプリンタである。また、109はキーボード/マウスコントローラ、110はキーボード、111はマウス、112はPCI(Peripheral Components Interconnect)バス、113はローカルエリアネットワークである。
【0011】
次に、画像処理装置100における画像補正動作について述べる。まず、HDD105に格納されている画像補正アプリケーションが、ユーザの指示を受けたOSプログラムに基づき、CPU101によって起動される。続いてユーザの指示による画像補正アプリケーション内の処理に従って、後述の画像補正を行い、画像補正を完了する。
【0012】
図2は、前記画像補正アプリケーションによって行われる処理の概要の一例を説明するフローチャートである。本実施形態では、観察条件取得処理、低周波画像作成処理、補正領域取得処理、補正係数算出処理、及び画像補正処理の5つの処理を主として行って画像補正を実施する。
【0013】
まず、ステップS201では、CPU101は、初期化動作を行い、後述の観察条件指定用UIをディスプレイ107に表示させる。
次に、ステップS202では、CPU101は、ステップS201で表示された観察条件指定用UIにてユーザにより設定された、ドキュメントの観察条件(環境条件)をメインメモリ102に格納する。
このように本実施形態では、図2のステップS203の処理を実行することにより、取得手段の一例が実現される。
次に、ステップS203では、CPU101は、ステップ202にて取得された、ドキュメントの観察条件を用いて、後述の処理によりLPF(ローパスフィルタ)を生成する。
【0014】
次に、ステップS204では、CPU101は、ステップS203にて生成したLPFを用いて低周波画像データを生成し、後述の補正対象領域指定用UIをディスプレイ107に表示させる。
次に、ステップS205では、CPU101は、ステップS204で表示された補正対象領域指定用UIにてユーザにより設定された指定領域(ドキュメントの補正対象領域)をメインメモリ102に格納する。
次に、ステップS206では、CPU101は、ステップS205にて設定された指定領域と、ステップS204にて生成された低周波画像データと用いて、後述の処理により補正係数を算出する。
次に、ステップ207では、CPU101は、ステップS206にて算出した補正係数を用いて、ステップS205にて設定された指定領域に対する画像補正を行う。
【0015】
図3は、図2のステップS201で表示される観察条件指定用UIのダイアログウィンドウの一例を示す図である。
図3において、301、302は補正条件を設定するテキストボックスであり、それぞれ印字サイズ(ドキュメントの印字サイズ)、観察距離(ドキュメントを観察する際の当該ドキュメントから観察者までの距離)に対応している。303は終了ボタンであり、この終了ボタン303がユーザによって押下されると、CPU101は、各テキストボックス301、302に設定されている内容を観察条件としてメインメモリ102に保持し、補正を実施する。
【0016】
図4は、図2のステップS201で表示される観察条件指定用UIの設定動作の一例を説明する図である。
図4において、ステート401では、観察条件指定用UIの初期設定値を読み出し、読み出した初期設定値を用いて観察条件指定用UIを表示するといった初期化動作が行われる。
次に、ステート402では、図3に示したダイアログウィンドウに対するユーザの操作判断を待つ状態となる。ここで、テキストボックス301が変更されるとステート403へ移行し、テキストボックス302が変更されるとステート404へ移行し、終了ボタン303が押下されるとステート405へ移行する。ステート403では、テキストボックス301に入力された印字サイズが設定され、ステート404では、テキストボックス302に入力された観察距離が設定され、ステート405では、ステップS202以降の処理が開始される。
【0017】
図5は、図2のステップS203におけるLPF生成処理の一例を詳細に説明するフローチャートである。
まず、ステップS501では、CPU101は、メモリの確保等の初期化動作を行う。
次に、ステップS502では、CPU101は、ステップS202にて取得された観察条件から、印字サイズ及び観察距離を取得する。
次に、ステップS503では、CPU101は、以下の式(1)により、フィルタ影響範囲を算出する。ここで、フィルタ影響範囲の一辺の長さをXとし、観察距離をDとする。
【0018】
【数1】
【0019】
次に、ステップS504では、CPU101は、以下の式(2)より、LPFのフィルタサイズを算出する。ここで、算出するフィルタサイズをN'とし、印字サイズに対応した横方向の長さをLとし、画像の横方向の画素数をNとする。尚、ここでは、横向き印刷が行われる場合を例に挙げて説明する。
【0020】
【数2】
【0021】
以上のように本実施形態では、例えば、図2のステップS203(図5のフローチャート)の処理を行うことによりフィルタ生成手段の一例が実現される。
次に、図6のフローチャートを参照しながら、図2のステップS204における低周波画像の生成処理の一例を詳細に説明する。
まず、ステップS601では、CPU101は、初期化動作を行う。
次に、ステップS602では、CPU101は、図2のステップS203(図5のフローチャート)にて生成されたLPFのフィルタサイズN'を取得する。
次に、ステップS603では、CPU101は、画素の縦位置を表す変数iと、横位置を表す変数jをそれぞれ0に設定する。また、フィルタ演算の対象範囲となる縦位置をP1、P2、横位置をS1、S2とし、画像の横のピクセル数をcol、縦のピクセル数をrowとする。
次に、ステップS604では、CPU101は、画素の横位置を表す変数jがN'/2より小さければ、フィルタ演算の対象範囲となる横位置S1に"0"を代入し、そうでなければ、横位置S1に"j−N'/2"を代入する。
次に、ステップS605では、CPU101は、"j+N'/2"が、画像の横のピクセル数colより小さければ、フィルタ演算の対象範囲となる横位置S2に"j+N'/2"を代入し、そうでなければ、縦位置S2に"col"を代入する。
【0022】
次に、ステップS606では、CPU101は、画素の縦位置を表す変数iがN'/2より小さければ、フィルタ演算の対象範囲となる縦位置P1に"0"を代入し、そうでなければ、縦位置P1に"i−N'/2"を代入する。
次に、ステップS607では、CPU101は、"i+N'/2"が、画像の縦のピクセル数rowより小さければ、フィルタ演算の対象範囲となる縦位置P2に"i+N'/2"を代入し、そうでなければ、縦位置P2に"row"を代入する。
次に、ステップS608では、CPU101は、以下の式(3)により、(P1、S1)、(P1、S2)、(P2、S1)、(P2、S2)の4点に囲まれた領域のRGB値について周辺の影響(画素値)を考慮した信号値(画素値)を算出する。そして、CPU101は、その信号値をメインメモリ102に格納する。
【0023】
【数3】
【0024】
次に、ステップS609では、CPU101は、画素の横位置を表す変数jに"1"を加える。
次に、ステップS610では、CPU101は、画素の横位置を表す変数jが、画像の横のピクセル数colよりも大きいか否かを判定する。この判定の結果、画素の横位置を表す変数jが、画像の横のピクセル数colよりも大きくない場合には、ステップS604に戻る。そして、画素の横位置を表す変数jが、画像の横のピクセル数colよりも大きくなるまでステップS604〜S610を繰り返し行う。そして、画素の横位置を表す変数jが、画像の横のピクセル数colよりも大きくなると、ステップS611に進む。
【0025】
次に、ステップS611では、CPU101は、画素の横位置を表す変数jに"0"を代入すると共に、画素の縦位置を表す変数iに"1"を加える。
次に、ステップS612では、CPU101は、画素の縦位置を表す変数iが、画像の縦のピクセル数rowよりも大きいか否かを判定する。この判定の結果、画素の縦位置を表す変数iが、画像の縦のピクセル数rowよりも大きくない場合には、ステップS604に戻る。そして、画素の縦位置を表す変数iが、画像の縦のピクセル数rowよりも大きくなるまでステップS604〜S612を繰り返し行う。そして、画素の縦位置を表す変数iが、画像の縦のピクセル数rowよりも大きくなると、図2のステップS205に進む。
以上のように本実施形態では、例えば、ステップS204(図6のフローチャート)の処理を行うことにより低周波データ生成手段の一例が実現される。
【0026】
次に、図7のフローチャートを参照しながら、図2のステップS205における指定領域(補正対象領域)の取得処理の一例を詳細に説明する。
まず、ステップS701では、CPU101は、初期化動作を行い、後述の補正対象領域指定用UIをディスプレイ107表示させる。
次に、ステップS702では、CPU101は、ステップS701で表示された補正対象領域指定用UIにてユーザにより設定された、補正対象領域の座標を取得する。
【0027】
図8は、図2のステップS205で表示される補正対象領域指定用 UIのダイアログウィンドウの一例を示す図である。
図8において、801は、ドキュメントの画像を表示するウィンドウである。802は領域確定ボタンである。803は領域追加ボタンである。804は領域削除ボタンである。805は指定領域表示リストである。806は終了ボタンであり、この終了ボタン806がユーザによって押下されると、CPU101は、補正対象領域指定用UIのダイアログウィンドウ800に対して行われた各設定をメインメモリ102に保持し、領域指定を実施する。
【0028】
図9は、図2のステップS205で表示される補正対象領域指定用UIの設定動作の一例を説明する図である。
図9において、ステート901では、補正対象領域指定用UIの初期設定値を読み出し、読み出した初期設定値を用いて補正対象領域指定用UIを表示するといった初期化動作が行われる。
次に、ステート902では、図8に示したダイアログウィンドウに対するユーザの操作判断を待つ状態となる。ここで、ユーザが補正対象領域を指定するとステート903へ移行し、領域確定ボタン802が押下されるとステート904へ移行し、領域追加ボタン803が押下されるとステート905へ移行する。また、領域削除ボタン804が押下されるとステート906へ移行し、指定領域表示リスト805の項目が選択されるとステート907へ移行し、終了ボタン806が押下されるとステート908へ移行する。
【0029】
ステート903では、ウィンドウ801に対してユーザにより補正対象領域が指定される。ステート907では、指定領域表示リスト805の中からユーザにより選択された項目が補正対象領域として指定される。ステート904では、補正対象領域が確定される。ステート905では、補正対象領域の追加が可能になる。ステート906では、補正対象領域が削除される。
【0030】
次に、図10のフローチャートを参照しながら、図2のステップS206における補正係数の算出処理の一例を詳細に説明する。
まず、ステップS1001では、CPU101は、初期化動作を行う。
次に、ステップS1002では、CPU101は、入力されたドキュメントの画像と、ステップS204にて生成された低周波画像とを取得する。
次に、ステップS1003では、CPU101は、画像内の横位置を表す変数jに"0"を代入し、縦位置を表す変数iに"0"を代入する。
次に、ステップS1004では、CPU101は、以下の式(4)により、入力されたドキュメントの画像の(Rin_ij、Gin_ij、Bin_ij)の輝度値Yinを算出する。
【0031】
【数4】
【0032】
次に、ステップS1005では、CPU101は、式(4)により、低周波画像の(Rlow_ij、Glow_ij、Blow_ij)の輝度値Ylowを算出する。
次に、ステップS1006では、CPU101は、式(5)により、第1補正係数αを計算する。
【0033】
【数5】
【0034】
次に、ステップS1007では、CPU101は、式(4)により、後述の処理にて算出される画素値(Rtmp_ij、Gtmp_ij、Btmp_ij)の輝度値Ytmpを算出する。
次に、ステップS1008では、CPU101は、以下の式(6)により第2補正係数βを計算する。
【0035】
【数6】
【0036】
次に、ステップS1009では、CPU101は、第3補正係数kを、以下の式(7)により算出する。
【0037】
【数7】
【0038】
次に、ステップS1010では、CPU101は、画像内の横位置を表す変数jに"1"を加える。
次に、ステップS1011では、CPU101は、画像内の横位置を表す変数jが、画像の横のピクセル数colよりも大きいか否かを判定する。この判定の結果、画像内の横位置を表す変数jが、画像の横のピクセル数colよりも大きくない場合には、ステップS1004に戻る。そして、画像内の横位置を表す変数jが、画像の横のピクセル数colよりも大きくなるまでステップS1004〜S1011を繰り返し行う。そして、画像内の横位置を表す変数jが、画像の横のピクセル数colよりも大きくなると、ステップS1012に進む。
【0039】
次に、ステップS1012では、CPU101は、画像内の横位置を表す変数jに"0"を代入すると共に、画像内の縦位置を表す変数iに"1"を加える。
次に、ステップS1013では、CPU101は、画像内の縦位置を表す変数iが、画像内の縦のピクセル数rowよりも大きいか否かを判定する。この判定の結果、画像内の縦位置を表す変数iが、画像の縦のピクセル数rowよりも大きくない場合には、ステップS1004に戻る。そして、画像内の縦位置を表す変数iが、画像の縦のピクセル数rowよりも大きくなるまでステップS1004〜S1013を繰り返し行う。そして、画像内の縦位置を表す変数iが、画像の縦のピクセル数rowよりも大きくなると、図2のステップS207に進む。
【0040】
次に、図11のフローチャートを参照しながら、図10のステップS1007で用いられる画素値(Rtmp_ij、Gtmp_ij、Btmp_ij)の算出処理の一例を詳細に説明する。
まず、ステップS1101では、CPU101は、初期化動作を行う。
次に、ステップS1102では、CPU101は、図2のステップS205にて指定された補正対象領域の座標(col0、row0)、(col0、row1) (col1、row0)、(col1、row1)を取得する。
次に、ステップS1103では、CPU101は、画素の縦位置を表す変数iにcol0を設定し、横位置を表す変数jにrow0を設定する。また、フィルタ演算の対象範囲となる縦位置をP1、P2とし、横位置をS1、S2とする。
【0041】
次に、ステップS1104では、CPU101は、画素の横位置を表す変数jが、"col0+N'/2"より小さければ、フィルタ演算の対象範囲となる横位置S1に"col0"を代入し、そうでなければ、横位置S1に"j−N'/2"を代入する。
ステップS1105では、CPU101は、"j+N'/2がcol1より小さければ、フィルタ演算の対象範囲となる横位置S2に"j+N/2"を代入し、そうでなければ、横位置S2にcol1を代入する。
次に、ステップS1106では、CPU101は、画素の縦位置を表す変数iが"row0+N'/2"より小さければ、フィルタ演算の対象範囲となる縦位置P1にrow0を代入し、そうでなければ、縦位置P1に"i−N'/2"を代入する。
【0042】
次に、ステップS1107では、CPU101は、"i+N'/2"がrow1より小さければ、フィルタ演算の対象範囲となる縦位置P2に"i+N'/2"を代入し、そうでなければ、縦位置P2にrow1を代入する。
次に、ステップS1108では、CPU101は、前述した式(3)により、(P1、S1)、(P1、S2)、(P2、S1)、(P2、S2)の4点に囲まれた領域のRGB値について周辺の影響(画素値)を考慮した信号値(画素値)を算出する。そして、CPU101は、その信号値をメインメモリ102に格納する。
次に、ステップS1109では、CPU101は、画素の横位置を表す変数jに"1"を加える。
【0043】
次に、ステップS1110では、CPU101は、画素の横位置を表す変数jが、画像の横のピクセル数colよりも大きいか否かを判定する。この判定の結果、画素の横位置を表す変数jが、画像の横のピクセル数colよりも大きくない場合には、ステップS1104に戻る。そして、画素の横位置を表す変数jが、画像の横のピクセル数colよりも大きくなるまでステップS1104〜S1110を繰り返し行う。そして、画素の横位置を表す変数jが、画像の横のピクセル数colよりも大きくなると、ステップS1111に進む。
次に、ステップS1111では、CPU101は、画像内の横位置を表す変数jに"0"を代入すると共に、画素の縦位置を表す変数iに"1"を加える。
【0044】
次に、ステップS1112では、CPU101は、画素の縦位置を表す変数iが、画像の縦のピクセル数rowよりも大きいか否かを判定する。この判定の結果、画素の縦位置を表す変数iが、画像の縦のピクセル数rowよりも大きくない場合には、ステップS1104に戻る。そして、画素の縦位置を表す変数iが、画像の縦のピクセル数rowよりも大きくなるまでステップS1104〜S1112を繰り返し行う。そして、画素の縦位置を表す変数iが、画像の縦のピクセル数rowよりも大きくなると、図11のフローチャートによる処理を終了する。
【0045】
次に、図12のフローチャートを参照しながら、図2のステップS207における画像補正処理の一例を詳細に説明する。
まず、ステップS1201では、CPU101は、初期化動作を行う。
次に、ステップS1202では、CPU101は、図2のステップS206(図10のステップS1009)にて算出した第3補正係数kを取得する。
次に、ステップS1203では、CPU101は、画像内の横位置を表す変数jに0を代入し、縦位置を表す変数iに0を代入する。ここで、画像の横のピクセル数をcol、縦のピクセル数をrowとする。また、ステップS205にて指定された補正対象領域の座標を(col0、row0)、(col0、row1) (col1、row0)、(col1、row1)とする。
次に、ステップS1204では、CPU101は、以下の式(8)の不等式を満たすか否かを判定する。この判定の結果、以下の式(8)の不等式を満たしている場合にはステップS1205に進み、満たしていない場合にはステップS1206に進む。
【0046】
【数8】
【0047】
次に、ステップS1205では、CPU101は、以下の式(9)により補正画素値を算出する。
【0048】
【数9】
【0049】
このように本実施形態では、例えば、第3補正係数と指定領域内の画素値とを乗算することにより、指定領域内の画素値が補正されるようにしている。
次に、ステップS1206では、CPU101は、画像内の横位置を表す変数jに1を加える。
次に、ステップS1207では、CPU101は、画像内の横位置を表す変数jが画像の横のピクセル数colより大きいか否かを判定する。この判定の結果、画像内の横位置を表す変数jが、画像の横のピクセル数colよりも大きくない場合には、ステップS1204に戻る。そして、画像内の横位置を表す変数jが、画像の横のピクセル数colよりも大きくなるまでステップS1204〜S1207を繰り返し行う。そして、画像内の横位置を表す変数jが、画像の横のピクセル数colよりも大きくなると、ステップS1208に進む。
【0050】
次に、ステップS1208では、CPU101は、画像内の横位置を表す変数jに"0"を代入すると共に、画像内の縦位置を表す変数iに"1"を加える。
次に、ステップS1209では、CPU101は、画像内の縦位置を表す変数iが、画像内の縦のピクセル数rowよりも大きいか否かを判定する。この判定の結果、画像内の縦位置を表す変数iが、画像の縦のピクセル数rowよりも大きくない場合には、ステップS1204に戻る。そして、画像内の縦位置を表す変数iが、画像の縦のピクセル数rowよりも大きくなるまでステップS1204〜S1209を繰り返し行う。そして、画像内の縦位置を表す変数iが、画像の縦のピクセル数rowよりも大きくなると、処理を終了する。
以上のように本実施形態では、例えば、図2のステップS206、S207(図10〜図12のフローチャート)の処理を行うことにより補正手段の一例が実現される。
【0051】
以上のように本実施形態では、画像領域を含むドキュメントの実際の観察条件(視距離、印字サイズ)に基づくLPFを用いて低周波画像を生成する。そして、画像領域を含むドキュメントデータのうち、ユーザにより指定された補正対象領域の画素値を、生成した低周波画像を用いて補正する。したがって、フィルタの適用対象となる領域の周辺の情報(画素値)を反映した低周波画像を生成することができ、ドキュメントを展開したときの見えを考慮して画像を補正することができる。また、指定した領域のみを補正するため、ハロ等の画像障害を抑制し、必要のない部分への補正を行わないようにすることができる。よって、HDR(High Dynamic Range)の画像の再現を従来よりも適切に行うことができる。
【0052】
以下に、本実施形態の変形例を示す。
<ローパスフィルタ>
前記実施形態では、フィルタサイズに10度視野を用いているが、2度視野或いはその他の視覚に対応したフィルタサイズのLPFを用いてもよい。
<周辺の影響を考慮した信号値>
前記実施形態では、LPFとして平均値フィルタを用いているが、ガウシアン並びにガボア等のフィルタをLPFとして用いてもよい。
【0053】
<補正係数の算出>
前記実施形態では、補正係数の算出に輝度の指数を用いているが、任意の均等色空間での明るさの値や、輝度比等を用いて補正係数を算出することも可能である。
<観察条件>
前記実施形態では、観察条件に印字サイズや視距離を用いているが、これらの代わりに、又はこれらに加えて、画像解像度や表示・出力デバイスの解像度、並びに照明条件(ドキュメントを観察する際の照明条件)等を観察条件として用いることが可能である。
【0054】
(本発明の他の実施形態)
前述した本発明の実施形態における画像処理装置を構成する各手段、並びに画像処理方法の各ステップは、コンピュータのRAMやROMなどに記憶されたプログラムが動作することによって実現できる。このプログラム及び前記プログラムを記録したコンピュータ読み取り可能な記録媒体は本発明に含まれる。
【0055】
また、本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
【0056】
尚、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラム(実施形態では図2、図5〜図7、図10〜図12に示すフローチャートに対応したプログラム)を、システムあるいは装置に直接、あるいは遠隔から供給するものを含む。そして、そのシステムあるいは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合も本発明に含まれる。
【0057】
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【0058】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であってもよい。
【0059】
プログラムを供給するための記録媒体としては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RWなどがある。また、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などもある。
【0060】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本発明のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
【0061】
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
【0062】
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【0063】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【0064】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
【0065】
尚、前述した各実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【図面の簡単な説明】
【0066】
【図1】画像処理装置及びその周辺機器の構成の一例を示すブロック図である。
【図2】画像補正アプリケーションによって行われる処理の概要の一例を説明するフローチャートである。
【図3】観察条件指定用UIのダイアログウィンドウの一例を示す図である。
【図4】観察条件指定用UIの設定動作の一例を説明する図である。
【図5】図2のステップS203におけるLPF生成処理の一例を詳細に説明するフローチャートである。
【図6】図2のステップS204における低周波画像の生成処理の一例を詳細に説明するフローチャートである。
【図7】、図2のステップS205における指定領域(補正対象領域)の取得処理の一例を詳細に説明するフローチャートである。
【図8】補正対象領域指定用UIのダイアログウィンドウの一例を示す図である。
【図9】補正対象領域指定用UIの設定動作の一例を説明する図である。
【図10】図2のステップS206における補正係数の算出処理の一例を詳細に説明するフローチャートである。
【図11】図10のステップS1007で用いられる画素値の算出処理の一例を詳細に説明するフローチャートである。
【図12】図2のステップS207における画像補正処理の一例を詳細に説明するフローチャートである。
【技術分野】
【0001】
本発明は、画像処理装置、画像処理方法、及びコンピュータプログラムに関し、特に、ドキュメント内の画像を再現するために用いて好適なものである。
【背景技術】
【0002】
昨今、デジタルカメラによってシーンを撮影し、撮影した画像をディスプレイやプロジェクタでの表示やプリンタでの印字を用いて親しむ機会が増えている。この際、撮影時の露出量が適正でないことに起因して、非常に明るい画像又は非常に暗い画像になることがある。また、撮影時の露出量が適正であったとしても、デジタルカメラの輝度レンジに対して、出力機器のレンジが狭い場合には、全体的に暗く眠い画像が出力機器から出力されることになる。
【0003】
これらの問題に対して、従来のS字カーブやニー圧縮等の1D/3DLUTを用いる画像処理では、シャドウやハイライトのディティールが大きく損なわれることがある。これは、画像全体に対して一様な処理が行われることから、特定の階調領域を犠牲にして他の階調領域を良好に再現する処理となるからである。
また、別の画像処理として、レチネックスやiCAM等を用いた画像処理が知られている。これらの画像処理では、画像の低周波領域を用いて照明成分を近似し、この低周波成分を圧縮することで暗画像を明るく補正し、狭いレンジで画像を良好に再現することを実現する。この画像処理では、注目画素と周辺の画素との輝度の対比を用いて補正を行うため、特定の階調領域でのつぶれ等の画像障害の程度が低い。この低周波成分を抽出するにはLPF(Low Pass Filter)を用いる。LPFを設計する方法として、入力側でのシーンとの視距離や画角、或いは出力側での観察距離や印字サイズに応じて視野角を決定し、決定した視野角をLPFに反映することで入力・観察条件に対応した再現を得る方法が提案されている。
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、前述した技術で補正した画像をドキュメント中に埋め込む場合、画像の良好な再現が得られないという問題があった。例えば、ビジネスドキュメントや年賀状・レター・アルバムのように、ドキュメント中に画像が配置されている場合、画像と周辺背景との対比により画像の見えが異なることがある。また、前述した技術とは別の方法として、ドキュメント全体に補正処理を実施する方法もある。しかしながら、この方法を用いた場合、画像の輪郭部分や補正を行いたくないテクスチャー部分に画像障害(ハロ、バンディング)が出ることがある。
【0005】
本発明は、このような問題点に鑑みてなされたものであり、ドキュメント内の画像を従来よりも適切に補正できるようにすることを目的とする。
【課題を解決するための手段】
【0006】
本発明の画像処理装置は、画像データを含むドキュメントデータの画素値を補正する画像処理装置であって、前記ドキュメントデータに基づいて出力されるドキュメントの観察条件をユーザによる操作に基づいて取得する取得手段と、前記観察条件を用いて、前記補正を行うためのローパスフィルタを生成するフィルタ生成手段と、前記ローパスフィルタを用いて、前記ドキュメントデータに対する低周波画像データを生成する低周波データ生成手段と、前記ドキュメントデータにおける画像データを含む領域の画素値を、前記低周波画像データを用いて補正する補正手段とを有することを特徴とする。
【0007】
本発明の画像処理方法は、画像データを含むドキュメントデータの画素値を補正する画像処理方法であって、前記ドキュメントデータに基づいて出力されるドキュメントの観察条件をユーザによる操作に基づいて取得する取得ステップと、前記観察条件を用いて、前記補正を行うためのローパスフィルタを生成するフィルタ生成ステップと、前記ローパスフィルタを用いて、前記ドキュメントデータに対する低周波画像データを生成する低周波データ生成ステップと、前記ドキュメントデータにおける画像データを含む領域の画素値を、前記低周波画像データを用いて補正する補正ステップとを有することを特徴とする。
【0008】
本発明のコンピュータプログラムは、画像データを含むドキュメントデータの画素値を補正することをコンピュータに実行させるためのコンピュータプログラムであって、前記ドキュメントデータに基づいて出力されるドキュメントの観察条件をユーザによる操作に基づいて取得する取得ステップと、前記観察条件を用いて、前記補正を行うためのローパスフィルタを生成するフィルタ生成ステップと、前記ローパスフィルタを用いて、前記ドキュメントデータに対する低周波画像データを生成する低周波データ生成ステップと、前記ドキュメントデータにおける画像データを含む領域の画素値を、前記低周波画像データを用いて補正する補正ステップとをコンピュータに実行させることを特徴とする。
【発明の効果】
【0009】
本発明によれば、実際の観察条件に基づくローパスフィルタを用いて低周波画像データを生成し、生成した低周波画像データを用いてドキュメント内の画像を含む領域を補正するようにした。したがって、ドキュメントを展開するときの見えを考慮して補正することができる。よって、ドキュメント内の画像を従来よりも適切に補正することができる。
【発明を実施するための最良の形態】
【0010】
以下に、図面を参照しながら、本発明の一実施形態について説明する。
図1は、画像処理装置100及びその周辺機器の構成の一例を示すブロック図である。図1において、101はCPU、102はメインメモリ、103はSCSI(Small Computer System Interface)インタフェース(SCSI I/F)である。また、104はネットワークインタフェース(ネットワークI/F)、105はHDD(Hard Disk Drive)、106はグラフィックアクセラレータ、107はディスプレイ、108はプリンタである。また、109はキーボード/マウスコントローラ、110はキーボード、111はマウス、112はPCI(Peripheral Components Interconnect)バス、113はローカルエリアネットワークである。
【0011】
次に、画像処理装置100における画像補正動作について述べる。まず、HDD105に格納されている画像補正アプリケーションが、ユーザの指示を受けたOSプログラムに基づき、CPU101によって起動される。続いてユーザの指示による画像補正アプリケーション内の処理に従って、後述の画像補正を行い、画像補正を完了する。
【0012】
図2は、前記画像補正アプリケーションによって行われる処理の概要の一例を説明するフローチャートである。本実施形態では、観察条件取得処理、低周波画像作成処理、補正領域取得処理、補正係数算出処理、及び画像補正処理の5つの処理を主として行って画像補正を実施する。
【0013】
まず、ステップS201では、CPU101は、初期化動作を行い、後述の観察条件指定用UIをディスプレイ107に表示させる。
次に、ステップS202では、CPU101は、ステップS201で表示された観察条件指定用UIにてユーザにより設定された、ドキュメントの観察条件(環境条件)をメインメモリ102に格納する。
このように本実施形態では、図2のステップS203の処理を実行することにより、取得手段の一例が実現される。
次に、ステップS203では、CPU101は、ステップ202にて取得された、ドキュメントの観察条件を用いて、後述の処理によりLPF(ローパスフィルタ)を生成する。
【0014】
次に、ステップS204では、CPU101は、ステップS203にて生成したLPFを用いて低周波画像データを生成し、後述の補正対象領域指定用UIをディスプレイ107に表示させる。
次に、ステップS205では、CPU101は、ステップS204で表示された補正対象領域指定用UIにてユーザにより設定された指定領域(ドキュメントの補正対象領域)をメインメモリ102に格納する。
次に、ステップS206では、CPU101は、ステップS205にて設定された指定領域と、ステップS204にて生成された低周波画像データと用いて、後述の処理により補正係数を算出する。
次に、ステップ207では、CPU101は、ステップS206にて算出した補正係数を用いて、ステップS205にて設定された指定領域に対する画像補正を行う。
【0015】
図3は、図2のステップS201で表示される観察条件指定用UIのダイアログウィンドウの一例を示す図である。
図3において、301、302は補正条件を設定するテキストボックスであり、それぞれ印字サイズ(ドキュメントの印字サイズ)、観察距離(ドキュメントを観察する際の当該ドキュメントから観察者までの距離)に対応している。303は終了ボタンであり、この終了ボタン303がユーザによって押下されると、CPU101は、各テキストボックス301、302に設定されている内容を観察条件としてメインメモリ102に保持し、補正を実施する。
【0016】
図4は、図2のステップS201で表示される観察条件指定用UIの設定動作の一例を説明する図である。
図4において、ステート401では、観察条件指定用UIの初期設定値を読み出し、読み出した初期設定値を用いて観察条件指定用UIを表示するといった初期化動作が行われる。
次に、ステート402では、図3に示したダイアログウィンドウに対するユーザの操作判断を待つ状態となる。ここで、テキストボックス301が変更されるとステート403へ移行し、テキストボックス302が変更されるとステート404へ移行し、終了ボタン303が押下されるとステート405へ移行する。ステート403では、テキストボックス301に入力された印字サイズが設定され、ステート404では、テキストボックス302に入力された観察距離が設定され、ステート405では、ステップS202以降の処理が開始される。
【0017】
図5は、図2のステップS203におけるLPF生成処理の一例を詳細に説明するフローチャートである。
まず、ステップS501では、CPU101は、メモリの確保等の初期化動作を行う。
次に、ステップS502では、CPU101は、ステップS202にて取得された観察条件から、印字サイズ及び観察距離を取得する。
次に、ステップS503では、CPU101は、以下の式(1)により、フィルタ影響範囲を算出する。ここで、フィルタ影響範囲の一辺の長さをXとし、観察距離をDとする。
【0018】
【数1】
【0019】
次に、ステップS504では、CPU101は、以下の式(2)より、LPFのフィルタサイズを算出する。ここで、算出するフィルタサイズをN'とし、印字サイズに対応した横方向の長さをLとし、画像の横方向の画素数をNとする。尚、ここでは、横向き印刷が行われる場合を例に挙げて説明する。
【0020】
【数2】
【0021】
以上のように本実施形態では、例えば、図2のステップS203(図5のフローチャート)の処理を行うことによりフィルタ生成手段の一例が実現される。
次に、図6のフローチャートを参照しながら、図2のステップS204における低周波画像の生成処理の一例を詳細に説明する。
まず、ステップS601では、CPU101は、初期化動作を行う。
次に、ステップS602では、CPU101は、図2のステップS203(図5のフローチャート)にて生成されたLPFのフィルタサイズN'を取得する。
次に、ステップS603では、CPU101は、画素の縦位置を表す変数iと、横位置を表す変数jをそれぞれ0に設定する。また、フィルタ演算の対象範囲となる縦位置をP1、P2、横位置をS1、S2とし、画像の横のピクセル数をcol、縦のピクセル数をrowとする。
次に、ステップS604では、CPU101は、画素の横位置を表す変数jがN'/2より小さければ、フィルタ演算の対象範囲となる横位置S1に"0"を代入し、そうでなければ、横位置S1に"j−N'/2"を代入する。
次に、ステップS605では、CPU101は、"j+N'/2"が、画像の横のピクセル数colより小さければ、フィルタ演算の対象範囲となる横位置S2に"j+N'/2"を代入し、そうでなければ、縦位置S2に"col"を代入する。
【0022】
次に、ステップS606では、CPU101は、画素の縦位置を表す変数iがN'/2より小さければ、フィルタ演算の対象範囲となる縦位置P1に"0"を代入し、そうでなければ、縦位置P1に"i−N'/2"を代入する。
次に、ステップS607では、CPU101は、"i+N'/2"が、画像の縦のピクセル数rowより小さければ、フィルタ演算の対象範囲となる縦位置P2に"i+N'/2"を代入し、そうでなければ、縦位置P2に"row"を代入する。
次に、ステップS608では、CPU101は、以下の式(3)により、(P1、S1)、(P1、S2)、(P2、S1)、(P2、S2)の4点に囲まれた領域のRGB値について周辺の影響(画素値)を考慮した信号値(画素値)を算出する。そして、CPU101は、その信号値をメインメモリ102に格納する。
【0023】
【数3】
【0024】
次に、ステップS609では、CPU101は、画素の横位置を表す変数jに"1"を加える。
次に、ステップS610では、CPU101は、画素の横位置を表す変数jが、画像の横のピクセル数colよりも大きいか否かを判定する。この判定の結果、画素の横位置を表す変数jが、画像の横のピクセル数colよりも大きくない場合には、ステップS604に戻る。そして、画素の横位置を表す変数jが、画像の横のピクセル数colよりも大きくなるまでステップS604〜S610を繰り返し行う。そして、画素の横位置を表す変数jが、画像の横のピクセル数colよりも大きくなると、ステップS611に進む。
【0025】
次に、ステップS611では、CPU101は、画素の横位置を表す変数jに"0"を代入すると共に、画素の縦位置を表す変数iに"1"を加える。
次に、ステップS612では、CPU101は、画素の縦位置を表す変数iが、画像の縦のピクセル数rowよりも大きいか否かを判定する。この判定の結果、画素の縦位置を表す変数iが、画像の縦のピクセル数rowよりも大きくない場合には、ステップS604に戻る。そして、画素の縦位置を表す変数iが、画像の縦のピクセル数rowよりも大きくなるまでステップS604〜S612を繰り返し行う。そして、画素の縦位置を表す変数iが、画像の縦のピクセル数rowよりも大きくなると、図2のステップS205に進む。
以上のように本実施形態では、例えば、ステップS204(図6のフローチャート)の処理を行うことにより低周波データ生成手段の一例が実現される。
【0026】
次に、図7のフローチャートを参照しながら、図2のステップS205における指定領域(補正対象領域)の取得処理の一例を詳細に説明する。
まず、ステップS701では、CPU101は、初期化動作を行い、後述の補正対象領域指定用UIをディスプレイ107表示させる。
次に、ステップS702では、CPU101は、ステップS701で表示された補正対象領域指定用UIにてユーザにより設定された、補正対象領域の座標を取得する。
【0027】
図8は、図2のステップS205で表示される補正対象領域指定用 UIのダイアログウィンドウの一例を示す図である。
図8において、801は、ドキュメントの画像を表示するウィンドウである。802は領域確定ボタンである。803は領域追加ボタンである。804は領域削除ボタンである。805は指定領域表示リストである。806は終了ボタンであり、この終了ボタン806がユーザによって押下されると、CPU101は、補正対象領域指定用UIのダイアログウィンドウ800に対して行われた各設定をメインメモリ102に保持し、領域指定を実施する。
【0028】
図9は、図2のステップS205で表示される補正対象領域指定用UIの設定動作の一例を説明する図である。
図9において、ステート901では、補正対象領域指定用UIの初期設定値を読み出し、読み出した初期設定値を用いて補正対象領域指定用UIを表示するといった初期化動作が行われる。
次に、ステート902では、図8に示したダイアログウィンドウに対するユーザの操作判断を待つ状態となる。ここで、ユーザが補正対象領域を指定するとステート903へ移行し、領域確定ボタン802が押下されるとステート904へ移行し、領域追加ボタン803が押下されるとステート905へ移行する。また、領域削除ボタン804が押下されるとステート906へ移行し、指定領域表示リスト805の項目が選択されるとステート907へ移行し、終了ボタン806が押下されるとステート908へ移行する。
【0029】
ステート903では、ウィンドウ801に対してユーザにより補正対象領域が指定される。ステート907では、指定領域表示リスト805の中からユーザにより選択された項目が補正対象領域として指定される。ステート904では、補正対象領域が確定される。ステート905では、補正対象領域の追加が可能になる。ステート906では、補正対象領域が削除される。
【0030】
次に、図10のフローチャートを参照しながら、図2のステップS206における補正係数の算出処理の一例を詳細に説明する。
まず、ステップS1001では、CPU101は、初期化動作を行う。
次に、ステップS1002では、CPU101は、入力されたドキュメントの画像と、ステップS204にて生成された低周波画像とを取得する。
次に、ステップS1003では、CPU101は、画像内の横位置を表す変数jに"0"を代入し、縦位置を表す変数iに"0"を代入する。
次に、ステップS1004では、CPU101は、以下の式(4)により、入力されたドキュメントの画像の(Rin_ij、Gin_ij、Bin_ij)の輝度値Yinを算出する。
【0031】
【数4】
【0032】
次に、ステップS1005では、CPU101は、式(4)により、低周波画像の(Rlow_ij、Glow_ij、Blow_ij)の輝度値Ylowを算出する。
次に、ステップS1006では、CPU101は、式(5)により、第1補正係数αを計算する。
【0033】
【数5】
【0034】
次に、ステップS1007では、CPU101は、式(4)により、後述の処理にて算出される画素値(Rtmp_ij、Gtmp_ij、Btmp_ij)の輝度値Ytmpを算出する。
次に、ステップS1008では、CPU101は、以下の式(6)により第2補正係数βを計算する。
【0035】
【数6】
【0036】
次に、ステップS1009では、CPU101は、第3補正係数kを、以下の式(7)により算出する。
【0037】
【数7】
【0038】
次に、ステップS1010では、CPU101は、画像内の横位置を表す変数jに"1"を加える。
次に、ステップS1011では、CPU101は、画像内の横位置を表す変数jが、画像の横のピクセル数colよりも大きいか否かを判定する。この判定の結果、画像内の横位置を表す変数jが、画像の横のピクセル数colよりも大きくない場合には、ステップS1004に戻る。そして、画像内の横位置を表す変数jが、画像の横のピクセル数colよりも大きくなるまでステップS1004〜S1011を繰り返し行う。そして、画像内の横位置を表す変数jが、画像の横のピクセル数colよりも大きくなると、ステップS1012に進む。
【0039】
次に、ステップS1012では、CPU101は、画像内の横位置を表す変数jに"0"を代入すると共に、画像内の縦位置を表す変数iに"1"を加える。
次に、ステップS1013では、CPU101は、画像内の縦位置を表す変数iが、画像内の縦のピクセル数rowよりも大きいか否かを判定する。この判定の結果、画像内の縦位置を表す変数iが、画像の縦のピクセル数rowよりも大きくない場合には、ステップS1004に戻る。そして、画像内の縦位置を表す変数iが、画像の縦のピクセル数rowよりも大きくなるまでステップS1004〜S1013を繰り返し行う。そして、画像内の縦位置を表す変数iが、画像の縦のピクセル数rowよりも大きくなると、図2のステップS207に進む。
【0040】
次に、図11のフローチャートを参照しながら、図10のステップS1007で用いられる画素値(Rtmp_ij、Gtmp_ij、Btmp_ij)の算出処理の一例を詳細に説明する。
まず、ステップS1101では、CPU101は、初期化動作を行う。
次に、ステップS1102では、CPU101は、図2のステップS205にて指定された補正対象領域の座標(col0、row0)、(col0、row1) (col1、row0)、(col1、row1)を取得する。
次に、ステップS1103では、CPU101は、画素の縦位置を表す変数iにcol0を設定し、横位置を表す変数jにrow0を設定する。また、フィルタ演算の対象範囲となる縦位置をP1、P2とし、横位置をS1、S2とする。
【0041】
次に、ステップS1104では、CPU101は、画素の横位置を表す変数jが、"col0+N'/2"より小さければ、フィルタ演算の対象範囲となる横位置S1に"col0"を代入し、そうでなければ、横位置S1に"j−N'/2"を代入する。
ステップS1105では、CPU101は、"j+N'/2がcol1より小さければ、フィルタ演算の対象範囲となる横位置S2に"j+N/2"を代入し、そうでなければ、横位置S2にcol1を代入する。
次に、ステップS1106では、CPU101は、画素の縦位置を表す変数iが"row0+N'/2"より小さければ、フィルタ演算の対象範囲となる縦位置P1にrow0を代入し、そうでなければ、縦位置P1に"i−N'/2"を代入する。
【0042】
次に、ステップS1107では、CPU101は、"i+N'/2"がrow1より小さければ、フィルタ演算の対象範囲となる縦位置P2に"i+N'/2"を代入し、そうでなければ、縦位置P2にrow1を代入する。
次に、ステップS1108では、CPU101は、前述した式(3)により、(P1、S1)、(P1、S2)、(P2、S1)、(P2、S2)の4点に囲まれた領域のRGB値について周辺の影響(画素値)を考慮した信号値(画素値)を算出する。そして、CPU101は、その信号値をメインメモリ102に格納する。
次に、ステップS1109では、CPU101は、画素の横位置を表す変数jに"1"を加える。
【0043】
次に、ステップS1110では、CPU101は、画素の横位置を表す変数jが、画像の横のピクセル数colよりも大きいか否かを判定する。この判定の結果、画素の横位置を表す変数jが、画像の横のピクセル数colよりも大きくない場合には、ステップS1104に戻る。そして、画素の横位置を表す変数jが、画像の横のピクセル数colよりも大きくなるまでステップS1104〜S1110を繰り返し行う。そして、画素の横位置を表す変数jが、画像の横のピクセル数colよりも大きくなると、ステップS1111に進む。
次に、ステップS1111では、CPU101は、画像内の横位置を表す変数jに"0"を代入すると共に、画素の縦位置を表す変数iに"1"を加える。
【0044】
次に、ステップS1112では、CPU101は、画素の縦位置を表す変数iが、画像の縦のピクセル数rowよりも大きいか否かを判定する。この判定の結果、画素の縦位置を表す変数iが、画像の縦のピクセル数rowよりも大きくない場合には、ステップS1104に戻る。そして、画素の縦位置を表す変数iが、画像の縦のピクセル数rowよりも大きくなるまでステップS1104〜S1112を繰り返し行う。そして、画素の縦位置を表す変数iが、画像の縦のピクセル数rowよりも大きくなると、図11のフローチャートによる処理を終了する。
【0045】
次に、図12のフローチャートを参照しながら、図2のステップS207における画像補正処理の一例を詳細に説明する。
まず、ステップS1201では、CPU101は、初期化動作を行う。
次に、ステップS1202では、CPU101は、図2のステップS206(図10のステップS1009)にて算出した第3補正係数kを取得する。
次に、ステップS1203では、CPU101は、画像内の横位置を表す変数jに0を代入し、縦位置を表す変数iに0を代入する。ここで、画像の横のピクセル数をcol、縦のピクセル数をrowとする。また、ステップS205にて指定された補正対象領域の座標を(col0、row0)、(col0、row1) (col1、row0)、(col1、row1)とする。
次に、ステップS1204では、CPU101は、以下の式(8)の不等式を満たすか否かを判定する。この判定の結果、以下の式(8)の不等式を満たしている場合にはステップS1205に進み、満たしていない場合にはステップS1206に進む。
【0046】
【数8】
【0047】
次に、ステップS1205では、CPU101は、以下の式(9)により補正画素値を算出する。
【0048】
【数9】
【0049】
このように本実施形態では、例えば、第3補正係数と指定領域内の画素値とを乗算することにより、指定領域内の画素値が補正されるようにしている。
次に、ステップS1206では、CPU101は、画像内の横位置を表す変数jに1を加える。
次に、ステップS1207では、CPU101は、画像内の横位置を表す変数jが画像の横のピクセル数colより大きいか否かを判定する。この判定の結果、画像内の横位置を表す変数jが、画像の横のピクセル数colよりも大きくない場合には、ステップS1204に戻る。そして、画像内の横位置を表す変数jが、画像の横のピクセル数colよりも大きくなるまでステップS1204〜S1207を繰り返し行う。そして、画像内の横位置を表す変数jが、画像の横のピクセル数colよりも大きくなると、ステップS1208に進む。
【0050】
次に、ステップS1208では、CPU101は、画像内の横位置を表す変数jに"0"を代入すると共に、画像内の縦位置を表す変数iに"1"を加える。
次に、ステップS1209では、CPU101は、画像内の縦位置を表す変数iが、画像内の縦のピクセル数rowよりも大きいか否かを判定する。この判定の結果、画像内の縦位置を表す変数iが、画像の縦のピクセル数rowよりも大きくない場合には、ステップS1204に戻る。そして、画像内の縦位置を表す変数iが、画像の縦のピクセル数rowよりも大きくなるまでステップS1204〜S1209を繰り返し行う。そして、画像内の縦位置を表す変数iが、画像の縦のピクセル数rowよりも大きくなると、処理を終了する。
以上のように本実施形態では、例えば、図2のステップS206、S207(図10〜図12のフローチャート)の処理を行うことにより補正手段の一例が実現される。
【0051】
以上のように本実施形態では、画像領域を含むドキュメントの実際の観察条件(視距離、印字サイズ)に基づくLPFを用いて低周波画像を生成する。そして、画像領域を含むドキュメントデータのうち、ユーザにより指定された補正対象領域の画素値を、生成した低周波画像を用いて補正する。したがって、フィルタの適用対象となる領域の周辺の情報(画素値)を反映した低周波画像を生成することができ、ドキュメントを展開したときの見えを考慮して画像を補正することができる。また、指定した領域のみを補正するため、ハロ等の画像障害を抑制し、必要のない部分への補正を行わないようにすることができる。よって、HDR(High Dynamic Range)の画像の再現を従来よりも適切に行うことができる。
【0052】
以下に、本実施形態の変形例を示す。
<ローパスフィルタ>
前記実施形態では、フィルタサイズに10度視野を用いているが、2度視野或いはその他の視覚に対応したフィルタサイズのLPFを用いてもよい。
<周辺の影響を考慮した信号値>
前記実施形態では、LPFとして平均値フィルタを用いているが、ガウシアン並びにガボア等のフィルタをLPFとして用いてもよい。
【0053】
<補正係数の算出>
前記実施形態では、補正係数の算出に輝度の指数を用いているが、任意の均等色空間での明るさの値や、輝度比等を用いて補正係数を算出することも可能である。
<観察条件>
前記実施形態では、観察条件に印字サイズや視距離を用いているが、これらの代わりに、又はこれらに加えて、画像解像度や表示・出力デバイスの解像度、並びに照明条件(ドキュメントを観察する際の照明条件)等を観察条件として用いることが可能である。
【0054】
(本発明の他の実施形態)
前述した本発明の実施形態における画像処理装置を構成する各手段、並びに画像処理方法の各ステップは、コンピュータのRAMやROMなどに記憶されたプログラムが動作することによって実現できる。このプログラム及び前記プログラムを記録したコンピュータ読み取り可能な記録媒体は本発明に含まれる。
【0055】
また、本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
【0056】
尚、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラム(実施形態では図2、図5〜図7、図10〜図12に示すフローチャートに対応したプログラム)を、システムあるいは装置に直接、あるいは遠隔から供給するものを含む。そして、そのシステムあるいは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合も本発明に含まれる。
【0057】
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【0058】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であってもよい。
【0059】
プログラムを供給するための記録媒体としては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RWなどがある。また、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などもある。
【0060】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本発明のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
【0061】
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
【0062】
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【0063】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【0064】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
【0065】
尚、前述した各実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【図面の簡単な説明】
【0066】
【図1】画像処理装置及びその周辺機器の構成の一例を示すブロック図である。
【図2】画像補正アプリケーションによって行われる処理の概要の一例を説明するフローチャートである。
【図3】観察条件指定用UIのダイアログウィンドウの一例を示す図である。
【図4】観察条件指定用UIの設定動作の一例を説明する図である。
【図5】図2のステップS203におけるLPF生成処理の一例を詳細に説明するフローチャートである。
【図6】図2のステップS204における低周波画像の生成処理の一例を詳細に説明するフローチャートである。
【図7】、図2のステップS205における指定領域(補正対象領域)の取得処理の一例を詳細に説明するフローチャートである。
【図8】補正対象領域指定用UIのダイアログウィンドウの一例を示す図である。
【図9】補正対象領域指定用UIの設定動作の一例を説明する図である。
【図10】図2のステップS206における補正係数の算出処理の一例を詳細に説明するフローチャートである。
【図11】図10のステップS1007で用いられる画素値の算出処理の一例を詳細に説明するフローチャートである。
【図12】図2のステップS207における画像補正処理の一例を詳細に説明するフローチャートである。
【特許請求の範囲】
【請求項1】
画像データを含むドキュメントデータの画素値を補正する画像処理装置であって、
前記ドキュメントデータに基づいて出力されるドキュメントの観察条件をユーザによる操作に基づいて取得する取得手段と、
前記観察条件を用いて、前記補正を行うためのローパスフィルタを生成するフィルタ生成手段と、
前記ローパスフィルタを用いて、前記ドキュメントデータに対する低周波画像データを生成する低周波データ生成手段と、
前記ドキュメントデータにおける画像データを含む領域の画素値を、前記低周波画像データを用いて補正する補正手段とを有することを特徴とする画像処理装置。
【請求項2】
前記補正手段は、前記ドキュメントデータにおける画像データを含む領域であって、ユーザによる操作に基づいて指定された領域の画素値を、前記低周波画像データを用いて補正することを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記観察条件は、前記ドキュメントを観察する際の照明条件と、前記ドキュメントを観察する際の当該ドキュメントからの距離と、前記ドキュメントの印字サイズとの少なくとも何れか1つを含むことを特徴とする請求項1又は2に記載の画像処理装置。
【請求項4】
前記補正手段は、前記ドキュメントデータの画素値及び前記低周波画像データの画素値を用いて、前記ドキュメントデータにおける画像データを含む領域の画素値を補正するための補正係数を算出し、算出した補正係数と当該領域における画素値とを乗算して、当該領域の画素値を補正することを特徴とする請求項1〜3の何れか1項に記載の画像処理装置。
【請求項5】
画像データを含むドキュメントデータの画素値を補正する画像処理方法であって、
前記ドキュメントデータに基づいて出力されるドキュメントの観察条件をユーザによる操作に基づいて取得する取得ステップと、
前記観察条件を用いて、前記補正を行うためのローパスフィルタを生成するフィルタ生成ステップと、
前記ローパスフィルタを用いて、前記ドキュメントデータに対する低周波画像データを生成する低周波データ生成ステップと、
前記ドキュメントデータにおける画像データを含む領域の画素値を、前記低周波画像データを用いて補正する補正ステップとを有することを特徴とする画像処理方法。
【請求項6】
前記補正ステップは、前記ドキュメントデータにおける画像データを含む領域であって、ユーザによる操作に基づいて指定された領域の画素値を、前記低周波画像データを用いて補正することを特徴とする請求項5に記載の画像処理方法。
【請求項7】
前記観察条件は、前記ドキュメントを観察する際の照明条件と、前記ドキュメントを観察する際の当該ドキュメントからの距離と、前記ドキュメントの印字サイズとの少なくとも何れか1つを含むことを特徴とする請求項5又は6に記載の画像処理方法。
【請求項8】
前記補正ステップは、前記ドキュメントデータの画素値及び前記低周波画像データの画素値を用いて、前記ドキュメントデータにおける画像データを含む領域の画素値を補正するための補正係数を算出し、算出した補正係数と当該領域における画素値とを乗算して、当該領域の画素値を補正することを特徴とする請求項5〜7の何れか1項に記載の画像処理方法。
【請求項9】
画像データを含むドキュメントデータの画素値を補正することをコンピュータに実行させるためのコンピュータプログラムであって、
前記ドキュメントデータに基づいて出力されるドキュメントの観察条件をユーザによる操作に基づいて取得する取得ステップと、
前記観察条件を用いて、前記補正を行うためのローパスフィルタを生成するフィルタ生成ステップと、
前記ローパスフィルタを用いて、前記ドキュメントデータに対する低周波画像データを生成する低周波データ生成ステップと、
前記ドキュメントデータにおける画像データを含む領域の画素値を、前記低周波画像データを用いて補正する補正ステップとをコンピュータに実行させることを特徴とするコンピュータプログラム。
【請求項1】
画像データを含むドキュメントデータの画素値を補正する画像処理装置であって、
前記ドキュメントデータに基づいて出力されるドキュメントの観察条件をユーザによる操作に基づいて取得する取得手段と、
前記観察条件を用いて、前記補正を行うためのローパスフィルタを生成するフィルタ生成手段と、
前記ローパスフィルタを用いて、前記ドキュメントデータに対する低周波画像データを生成する低周波データ生成手段と、
前記ドキュメントデータにおける画像データを含む領域の画素値を、前記低周波画像データを用いて補正する補正手段とを有することを特徴とする画像処理装置。
【請求項2】
前記補正手段は、前記ドキュメントデータにおける画像データを含む領域であって、ユーザによる操作に基づいて指定された領域の画素値を、前記低周波画像データを用いて補正することを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記観察条件は、前記ドキュメントを観察する際の照明条件と、前記ドキュメントを観察する際の当該ドキュメントからの距離と、前記ドキュメントの印字サイズとの少なくとも何れか1つを含むことを特徴とする請求項1又は2に記載の画像処理装置。
【請求項4】
前記補正手段は、前記ドキュメントデータの画素値及び前記低周波画像データの画素値を用いて、前記ドキュメントデータにおける画像データを含む領域の画素値を補正するための補正係数を算出し、算出した補正係数と当該領域における画素値とを乗算して、当該領域の画素値を補正することを特徴とする請求項1〜3の何れか1項に記載の画像処理装置。
【請求項5】
画像データを含むドキュメントデータの画素値を補正する画像処理方法であって、
前記ドキュメントデータに基づいて出力されるドキュメントの観察条件をユーザによる操作に基づいて取得する取得ステップと、
前記観察条件を用いて、前記補正を行うためのローパスフィルタを生成するフィルタ生成ステップと、
前記ローパスフィルタを用いて、前記ドキュメントデータに対する低周波画像データを生成する低周波データ生成ステップと、
前記ドキュメントデータにおける画像データを含む領域の画素値を、前記低周波画像データを用いて補正する補正ステップとを有することを特徴とする画像処理方法。
【請求項6】
前記補正ステップは、前記ドキュメントデータにおける画像データを含む領域であって、ユーザによる操作に基づいて指定された領域の画素値を、前記低周波画像データを用いて補正することを特徴とする請求項5に記載の画像処理方法。
【請求項7】
前記観察条件は、前記ドキュメントを観察する際の照明条件と、前記ドキュメントを観察する際の当該ドキュメントからの距離と、前記ドキュメントの印字サイズとの少なくとも何れか1つを含むことを特徴とする請求項5又は6に記載の画像処理方法。
【請求項8】
前記補正ステップは、前記ドキュメントデータの画素値及び前記低周波画像データの画素値を用いて、前記ドキュメントデータにおける画像データを含む領域の画素値を補正するための補正係数を算出し、算出した補正係数と当該領域における画素値とを乗算して、当該領域の画素値を補正することを特徴とする請求項5〜7の何れか1項に記載の画像処理方法。
【請求項9】
画像データを含むドキュメントデータの画素値を補正することをコンピュータに実行させるためのコンピュータプログラムであって、
前記ドキュメントデータに基づいて出力されるドキュメントの観察条件をユーザによる操作に基づいて取得する取得ステップと、
前記観察条件を用いて、前記補正を行うためのローパスフィルタを生成するフィルタ生成ステップと、
前記ローパスフィルタを用いて、前記ドキュメントデータに対する低周波画像データを生成する低周波データ生成ステップと、
前記ドキュメントデータにおける画像データを含む領域の画素値を、前記低周波画像データを用いて補正する補正ステップとをコンピュータに実行させることを特徴とするコンピュータプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2010−134704(P2010−134704A)
【公開日】平成22年6月17日(2010.6.17)
【国際特許分類】
【出願番号】特願2008−310081(P2008−310081)
【出願日】平成20年12月4日(2008.12.4)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成22年6月17日(2010.6.17)
【国際特許分類】
【出願日】平成20年12月4日(2008.12.4)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]