画像処理装置及びその制御方法、並びに、コンピュータプログラム及びコンピュータ可読記憶媒体
【課題】 格別な知識がなくても簡単な拡大率を設定するだけで、原画像のシャープネスを維持しつつ、ノイズの発生を抑制した拡大画像を得ることを可能にする。
【解決手段】 原画像データIaを設定された拡大率Eに従って拡大することで拡大画像IAを生成する。そして、拡大画像データIAに、拡大率Eに依存したサイズの平滑化フィルタを用いて、平滑化画像データIBを生成する。そして拡大画像データIAと平滑化画像データIBとの差分を算出し、差分画像データICを生成する。そして、生成された差分画像データに強調係数を乗算し、その結果と拡大画像データとを加算することで、拡大・アンシャープマスク処理された画像データISを得る。このとき利用する強調係数は、差分画素の値が大きいほど、大きい値を用いる。
【解決手段】 原画像データIaを設定された拡大率Eに従って拡大することで拡大画像IAを生成する。そして、拡大画像データIAに、拡大率Eに依存したサイズの平滑化フィルタを用いて、平滑化画像データIBを生成する。そして拡大画像データIAと平滑化画像データIBとの差分を算出し、差分画像データICを生成する。そして、生成された差分画像データに強調係数を乗算し、その結果と拡大画像データとを加算することで、拡大・アンシャープマスク処理された画像データISを得る。このとき利用する強調係数は、差分画素の値が大きいほど、大きい値を用いる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は画像の拡大処理技術に関するものである。
【背景技術】
【0002】
画像データに対し、エッジ部分を強調する処理の一つとして、アンシャープマスク処理がある。アンシャープマスクとは、エッジを強調する処理の過程で画像データを平滑化する処理が介在するため、このように呼ばれる。
【0003】
アンシャープマスク処理の手順は、まず、処理対象の原画像データIaに対し、平滑化処理を行い、平滑化画像Ibを作成する。平滑化処理とは、図2(a)に示すような平滑化フィルタ201を用いて、周辺画素との平均を取り、画像をぼかす処理である。そして、その平滑化処理された画像データIbと原画像データIaに基づき、シャープネスを向上させた画像データIsを生成する。これらの画像の関係は次式(1)の通りである。
Is =Ia + α(Ia −Ib) …(1)
【0004】
上記式を簡単に説明すると、元画像Iaと、平滑化画像Ibとの差分を取ることで、エッジ成分(換言すれば画像の高周波成分)を抽出する。そして、そのエッジ成分に強調係数αを乗算することで、強調する。この後、原画像Iaに、その強調後のエッジ成分を加算することで、シャープネスを向上した画像データIsを得ることができる。
【0005】
一方、昨今の印刷装置の印刷解像度が上がる一方である。印刷解像度とは単位長さ(或いは単位面積)当たりの画素数を意味する。従って、高い印刷解像度の印刷装置で印刷する場合には、画像データが持つ画素数も増やす必要がある。すなわち、印刷対象の画像を拡大することが必要になったので、前記式(1)の結果の画像データIsに必要に応じた拡大処理を行っているのが一般的である。
【0006】
しかしながら、アンシャープマスク処理を行った画像データを拡大処理してしまうと、せっかく強調したエッジ部分が滑らかになってしまい、アンシャープマスクの効果が薄れてしまう。
【0007】
この為、画像の拡大率に応じて、式(1)の強調係数αを設定してアンシャープマスク処理を実行し、その後に画像の拡大処理を行う技術が知られている(例えば、特許文献1)。この特許文献1には、別の実施方法として、まず、画像の拡大処理を行い、その後で大きな値の強調係数αでもってエッジ強調処理を行う方法も開示されている。
【0008】
しかし、上記の技術の場合、エッジ強調処理後の画像の拡大処理では、エッジが滑らかになってしまい、画質の劣化が目立ってしまう。また、拡大後にエッジ強調する場合においても、拡大後の画像は、エッジ領域が広くなるため、平滑化処理の効果が薄くなる。そのため、いくら強調係数αを大きくしても、エッジ部分を強調することは難しく、逆に、エッジ部分以外を無駄に強調するため、画像にノイズが増加する結果となる。
【0009】
エッジ領域が広くなる問題への対処としては、アンシャープマスク処理に関する技術ではないものの、拡大後の画像に対して、エッジ検出のフィルタサイズを大きくする方法が知られている(例えば特許文献2)。この特許文献2に、アンシャープマスクにおいても、平滑化フィルタのサイズを大きくすることで、エッジ領域の拡大化に対処できるが、この場合、平滑化処理が強くなるため、エッジ領域以外も強調することになってしまい、画像にノイズが増加してしまう。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開2003-141532号公報
【特許文献2】特開2003-274157号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
本発明は、上記課題に鑑みなされたものであり、画像を拡大する際、例えばアンシャープマスク処理によるエッジ強調後の画像を拡大処理するのではなく、なるべく拡大後の画像でアンシャープマスク処理を行うものである。これにより、格別な知識がなくても簡単な操作でもって、原画像のシャープネスを維持しつつ、ノイズの発生を抑制した拡大画像を生成する技術を提供しようとするものである。
【課題を解決するための手段】
【0012】
この課題を解決するため、例えば本発明の画像処理装置は以下の構成を備える。すなわち、
拡大率を設定する拡大率設定手段と、
前記拡大率に従って、原画像データを拡大して拡大画像データを生成する画像拡大手段と、
前記拡大率に対応するサイズの平滑化フィルタを用いて、前記拡大画像データを平滑化して平滑化画像データを生成する平滑化手段と、
前記平滑化画像データと前記拡大画像データの差分を算出し、差分画像データを生成する差分画像データ生成手段と、
前記差分画像データの各差分画素の値に応じた強調係数を当該各差分画素の値に乗算する乗算手段と、
前記乗算手段による乗算結果と前記拡大画像データの対応する画素値とをそれぞれ加算して出力画像を生成する加算手段と、を備え、
前記乗算手段は、前記差分画素の値が大きいほど、大きい強調係数を前記各差分画素に乗算することを特徴とする。
【発明の効果】
【0013】
本発明によれば、格別な知識がなくても簡単な拡大率を設定するだけで、原画像のシャープネスを維持しつつ、ノイズの発生を抑制した拡大画像を得ることが可能になる。
【図面の簡単な説明】
【0014】
【図1】本発明におけるシステムのブロック構成図である。
【図2】平滑化フィルタの例を示す図である。
【図3】差分値と強調係数のテーブルと、拡大率との関係を示す図である。
【図4】拡大率から、フィルタサイズ、強調係数テーブルを算出するためのテーブルを示す図である。
【図5】第1の実施形態における拡大・アンシャープマスク処理の処理手順を示すフローチャートである。
【図6】画像データのスキャン順と、アドレスとの対応関係を示す図である。
【図7】実施形態におけるアプリケーションプログラムのGUIの推移を示す図である。
【図8】実施形態におけるアプリケーションプログラムのメイン処理を示すフローチャートである。
【図9】第2の実施形態における拡大・アンシャープマスク処理の処理手順を示すフローチャートである。
【図10】第3の実施形態における拡大・アンシャープマスク処理の処理手順を示すフローチャートである。
【図11】バイリニア法とバイキュービック法による画像の拡大処理内容を説明するための図である。
【図12】第1の実施形態における拡大・アンシャープマスク処理の処理概要を説明するための図である。
【図13】第2の実施形態における拡大・アンシャープマスク処理の処理概要を説明するための図である。
【図14】第3の実施形態における拡大・アンシャープマスク処理の処理概要を説明するための図である。
【図15】第4の実施形態におけるハードウェアリソースの判定のためのテーブルを示す図である。
【図16】第4の実施形態におけるメイン処理を示すフローチャートである。
【図17】第5の実施形態における最適拡大の設定のGUIを示すフローチャートである。
【発明を実施するための形態】
【0015】
以下、添付図面に従って本発明に係る各実施形態を詳細に説明するが、まず、その前提について説明する。
【0016】
原画像をIa、原画像Iaの平滑化処理後の画像をIbとし、アンシャープマスク処理後の画像をIsとすると、先に示した式(1)のように表わせる。このアンシャープマスク処理後の画像Isを、拡大率Eに従ってバイリニア法等を用いて拡大(補間)処理して得られた画像をISとすると、ISとIsとの関係は次のように表わせる。
IS=E(Is)=E(Ia+α・(Ia−Ib)) …(2)
ここで、E(x)は画像xの水平、垂直方向の画素数をそれぞれE倍に増やすことを意味する。また、画像Ibは、元画像Iaに対して平滑化フィルタfを用いて平滑化した画像を示しているので、それを明示するために『f(Ia)』とすると、式(2)は次のように表わせる。
IS =E(Is)= E(Ia+α・(Ia−f(Ia))) …(2)’
このような画像処理を経ると、結局のところ、拡大処理では平滑化されてしまい、アンシャープマスクの効果が薄れてしまう。これに対処するためには、拡大処理を想定してαを、より大きな値にする必要があるが、必要以上に大きな値を設定してしまうと、逆にノイズが発生して画質劣化は避けられない。更に、不慣れなユーザの場合、最適なαや、平滑化する際のフィルタのサイズを決めるために、アンシャープマスク処理に係る操作と、拡大処理の操作を何度も繰り返し行い、目的とする画質の画像を得るまでに相当の時間を要することになる。
【0017】
これに対し、本発明では、ユーザは1つの操作を行うだけで、拡大処理とアンシャープマスク処理とを実行し、且つ、画質劣化を抑制した拡大後の画像データを得ることを可能にする。
【0018】
詳細は後述するが、第1の実施形態では、次式(3)に従って、拡大・アンシャープマスク処理後の画像ISを生成する。
IS=E(Ia)+α・(E(Ia)−F(E(Ia),E)) …(3)
ここで、F(x,E)は、倍率Eによって決まる平滑化フィルタFを用いて、画像xを平滑化することを意味する。
【0019】
図12は、上記式(3)による画像データの流れと処理の概念図である。
【0020】
まず、原画像データIaを拡大率Eに従って拡大処理し、拡大画像データIAを得る。拡大画像データIAは、式(3)でのE(Ia)に対応する。次いで、拡大率Eによって定まるサイズの平滑化フィルタF(,E)を用いて、拡大画像データIAを平滑化することで、平滑化画像データIBを得る。この平滑化画像データIBは、式(3)のF(E(Ia),E)に対応する。そして、拡大画像データIAと平滑化画像データIBとを画素同どうしの差分を算出することで、差分画像データICを得る。この差分画像データICは、式(3)の「E(Ia)−F(E(Ia),E)」に対応する。
【0021】
そして、差分画像データICの各画素の値に強調係数αを乗算し、その乗算結果と拡大画像データIA中の対応する画素の値とを加算することで、拡大・アンシャープマスク処理後の画像データISを得る。
【0022】
第2の実施形態では、次式(4)に従って、拡大・アンシャープマスク処理後の画像ISを求める。
IS=E(Ia)+α・(E(Ia)−E(f(Ia)) …(4)
【0023】
図13は、上記式(3)による画像データの流れと処理の概念図である。
【0024】
まず、原画像データIaを、その原画像データIaのサイズ等を参照した平均的な平滑化フィルタfを用いて平滑化画像データIbを得る。この平滑化画像データIbは、式(4)におけるf(Ia)に対応する。
【0025】
そして、原画像データIa及び平滑化画像データIbそれぞれを拡大率Eに従って拡大処理し、拡大画像データIA及び拡大平滑化画像データIBを得る。拡大画像データIAは式(4)におけるE(Ia)に対応し、拡大平滑化画像データIBは式(4)におけるE(f(Ia))に対応する。
【0026】
そして、拡大画像データIAと拡大平滑化画像データIBとを画素同どうしの差分を算出することで、差分画像データICを得る。この差分画像データICは、式(4)の「E(Ia)−E(f(Ia))」に対応する。
【0027】
そして、差分画像データICの各画素の値に強調係数αを乗算し、その乗算結果と拡大画像データIA中の対応する画素の値とを加算することで、拡大・アンシャープマスク処理後の画像データISを得る。
【0028】
第3の実施形態では、次式(5)に従って、拡大・アンシャープマスク処理後の画像ISを求める。
IS=IA+α・E(Ia−f(Ia)) …(5)
図14は、上記式(5)による画像データの流れと処理の概念図である。
【0029】
まず、原画像データIaを、その原画像データIaのサイズ等を参照した平均的な平滑化フィルタfを用いて平滑化画像データIbを得る。この平滑化画像データIbは、式(5)におけるf(Ia)に対応する。
【0030】
そして、原画像データIa及び平滑化画像データIbそれぞれの対応する画素の値の差分を算出することで差分画像データIcを得る。
【0031】
そして、原画像データIaと差分画像データIcを、それぞれを拡大率Eに従って拡大処理し、拡大画像データIA及び拡大差分画像データICを得る。拡大画像データIAは式(5)におけるE(Ia)に対応し、拡大差分画像データICは式(4)における「E(I(Ia)−f(Ia))」に対応する。
【0032】
そして、差分画像データICの各画素の値に強調係数αを乗算し、その乗算結果と拡大画像データIA中の対応する画素の値とを加算することで、拡大・アンシャープマスク処理後の画像データISを得る。
【0033】
<装置構成の説明>
ここで各実施形態に共通事項について説明する。
【0034】
図1は本発明に係るシステム構成図であり、例えばパーソナルコンピュータ等である。図中、101はキーボードやマウス等の入力装置、102は表示装置、103はハードディスク装置等の大容量の蓄積装置である。この蓄積装置103には、OS(オペレーティングシステム)や、各実施形態で示すアプリケーションプログラム、並びに、画像データファイル等が格納されている。104は装置全体の制御を司るCPUであり、105はBIOSやブートプログラムを格納しているROM、106はCPU104のワークエリアとして使用するRAMである。
【0035】
本装置の電源がONになると、CPU104はROM105のブートプログラムに従って処理を開始し、蓄積装置103内のOSをRAM106にロードし、実行することで情報処理装置として機能する。この後、ユーザは入力装置101を操作して、画像処理用のアプリケーションの起動指示を与えると、CPU104はそのアプリケーションプログラムを蓄積装置103からRAM106にロードし、実行する。この結果、本装置が画像処理装置として機能することになる。
【0036】
アプリケーションが起動すると、ユーザは所望とする画像ファイルを蓄積装置103に記憶されている画像ファイルを読込み、それを表示装置102に表示する。
【0037】
図7は画像ファイルを読込み、表示装置102に表示したGUIを示している。図示の如く、アプリケーションはウインドウ701を表示し、その中に、画像表示エリア702、最適拡大ボタン705を有する。なお、画像編集の種類には、拡大処理以外にも幾つもの種類が存在するが、図示では省略している。
【0038】
図示の場合、拡大対象の画像703が画像表示エリア702内に表示されている。ここで、ユーザが入力装置101を操作して、最適拡大ボタン705を指示すると、図示の拡大率を設定するためのダイアログボックス707を表示する。このダイアログボックス内には、拡大率を設定するためのスライダーバー707a、OKボタン707b、キャンセルボタン707cを備える。スライダーバー707aは、図示の場合1乃至10倍の範囲で設定できる。ユーザは、このスライダーバー707aを操作して、所望とする倍率を設定する。この後、ユーザがOKボタン707bを指示することで、このダイアログボックス707は消去され、後述する拡大・アンシャープマスク処理を実行する。また、キャンセルボタン707cが指示された場合には、単にダイアログセットトップボックス707を消去し、最適拡大ボタン705を指示する以前の状態に戻る。なお、上記では、拡大率を設定するのにスライダーバーを用いる例を示したが、ユーザはキーボードを操作して、拡大率となる数値を入力しても構わない。すなわち、拡大率の設定するための構成については、その種類を問わない。
【0039】
図8はアプリケーションプログラムのメイン処理手順を示すフローチャートである。各ステップはCPU104が実行することになる。
【0040】
まず、ステップS1では、図7に示すウインドウを表示し、ステップS2でユーザによる編集対象の画像ファイルが選択されるのを待つ。画像ファイルを選択は、ファイル選択のダイアログボックス等を表示し、ユーザが目的とするファイルを入力装置101より指示することで決定するものとする。ファイルが選択されると、その画像が画像表示エリア702に表示される。そして、ステップS3にて、ユーザによる編集指示を待つ。ユーザによる編集指示が最適拡大ボタン705以外であると判断した場合には、ステップS4に進んで対応する処理を行う。
【0041】
一方、最適拡大ボタン705であると判断した場合には、ステップS5に進んで、倍率設定のダイアログボックス707を表示し、倍率の設定を行なわせる。倍率の設定が終わり、ダイアログボックス707のOKボタンが指示されると、ステップS6に進んで自動最適拡大処理を実行する。この自動最適拡大処理の処理後の画像は、画像表示エリア702に表示される。
【0042】
ここで、実施形態で利用する拡大処理について補足説明する。実施形態では、拡大処理としてバイリニア法、又は、バイキュービック法を用いる。
【0043】
図11(a)は、画像の拡大処理で用いるリニア補間法(拡大方法)について説明した図である。2つの画素Xa、Xbを含む画像をn倍に拡大する場合、2つの画素Xa、Xb間に、2n−2個の補間画素を生成する。その中の任意の画素Xの値は、画素Xaからの距離をs、画素Xbからの距離をtとすると、次式で求められる。
X=(s×Xa+t×Xb)/2n
【0044】
このように、線形的に2つの画素間で補間する処理がリニア法である。画像データの場合、二次元的に補間されるので、周囲の4画素から線形的に補間する。バイリニア法は、このリニア補間法を、2次元の2×2画素の拡張した方法である。バイリニア法の特性は、拡大率が大きいほど、画像全体が滑らかになる。そのため、拡大後は、平滑化したような効果を得ることができる。
【0045】
図11(b)は、バイキュービック法を説明するための図であり、4つの画素Xa、Xb、Xc、Xdを含む画像をn倍に拡大する例を示している。バイキュービック法では、実在する水平(or垂直)方向に隣接する2画素間の距離を“1”と定義する。そして、補間生成しようとする画素Xの値を求める際、その画素Xと近傍の実在する画素との距離をdとすると、まず、次式に従ってCubic(d)を算出する。
0<|d|<1の場合:
Cubic(d)=1−2|d|2+|d|3
1≦|d|<2の場合:
Cubic(d)=4−8|d|+5|d|2−|d|3
2≦|d|の場合:
Cubic(d)=0
【0046】
そして、上記Cubicを、補間画素Xと画素{Xa、Xb、Xc、Xd}の1つとの距離について求める。そして、その総和を補間画素Xとする。すなわち、図11(b)の場合、補間画素Xは次式に従って算出する。
X=Cubic(n+s)×Xa+Cubic(s)×Xb+Cubic(t)×Xc + Cubic(n+t)×Xd
このように、線形補間よりも広い範囲で、画素を補間するのがバイキュービック法である。画像データの場合、二次元的に補間されるので、周囲の16画素から補間することになる。バイキュービック法は、バイリニア法に比べて、画像のエッジ部分が残りやすく、拡大後も比較的シャープな印象を得ることができる。
【0047】
以下、本発明に係る3つの実施形態を説明するが、それぞれは図8のステップS6に対応する処理に特徴を有するものであり、それ以外は共通であるものとする。
【0048】
<第1の実施形態>
本第1の実施形態では、先に示した式(3)に従い、拡大・アンシャープマスク処理を行う。すなわち、画像の拡大率にあわせて、平滑化フィルタのサイズ、強調係数のテーブルを切り替え、拡大後の画像に対して、適切なアンシャープマスクを実行する。なお、以下の説明において、各種処理中に生成されるデータはRAM106に格納されるものとする。
【0049】
本第1の実施形態におけるシャープネス処理は、先に説明したようにアンシャープマスク処理である。アンシャープマスク処理は、原画像に対して平滑化画像を作成する。そして、その平滑化画像と、原画像データとの画素毎の差分値を演算する。その後、原画像データ中の該当する画素値に足すことで、実行される。
【0050】
平滑化画像は、図2(a)の3×3のサイズの平滑化フィルタ201を用いて、作成される。
【0051】
Ia(x,y)は、元画像データの左上隅位置を原点(0,0)とした場合の座標(x,y)の画素値であり、RGBの各成分(ここでは各8ビットとする)で構成される。以降、特に説明がない限り、画素値の計算は、全て、RGBの各要素に対し、行うものとする。画像データの左上隅の座標を(0,0)とした場合、平滑化画像の、座標(x,y)の画素値Ib(x,y)は次式(6)で計算される。
Ib(x,y)={Ia(x-1,y-1)+Ia(x,y-1)+Ia(x+1,y-1)+Ia(x-1,y)+Ia(x,y)+Ia(x+1,y)
+Ia(x-1,y+1)+Ia(x,y+1)+Ia(x+1,y+1)}/9 … (6)
【0052】
次に、元画像と、平滑化画像との差分を求める。差分値をIc(x、y)とすると、
Ic(x,y)=Ia(x,y)-Ib(x,y) … (7)
そしれ、強調係数をαとした場合、アンシャープマスク実行後の画素値Is(x,y)を次式(8)に従って算出する。
Is(x,y)=Ia(x,y)+α×Ic(x,y) … (8)
これを、全ての画素に対し、計算することによって、アンシャープマスク処理が実行できる。
【0053】
平滑化画像を作る際には、平滑化フィルタのサイズを切り替えることもできる。図2(b)の平滑化フィルタ202のように、5×5画素サイズのフィルタを用いて、その平均値を求める方法である。同様に、図示していないが、7×7、9×9のサイズのフィルタサイズでも実行できる。フィルタサイズが大きいほうが、より広いエッジ部分を平滑化できるので、拡大後の画像に対しては有用である。しかし、フィルタサイズが大きくなると、その分、エッジ部分以外の領域も強調してしまい、画像データにノイズが目立つという弊害もある。
【0054】
図3は、そのようなノイズを軽減するための、強調係数テーブルを表したものである。
【0055】
これは、式(7)で求めた差分値Ic(x,y)の値に応じて、適切な強調係数αを決定するものである。同図では横軸が差分値、縦軸が強調係数αであり、差分値に応じて、強調係数αが算出できる曲線特性を有する。差分値の特徴として、エッジ部分では、差分値が大きく、エッジ部分以外の領域では、差分値が小さいという特徴がある。そのため、差分値が小さい場合は、強調係数を小さくすることで、エッジ部分以外の強調を防止し、ノイズの発生を抑制する。フィルタサイズが大きくなると、エッジ部分以外での差分値が大きくなってしまうので、フィルタサイズに合わせて、適切な強調係数テーブルを用意する。図3では、画像の拡大率が上がるほど、フィルタサイズを大きくするので、それに合わせて、実施形態では、曲線特性の異なる強調係数テーブル301〜303の3つを用意した。図示の通り、拡大率が大きくなるにつれて、差分値の小さい範囲においては強調係数がより小さくなっている。
【0056】
図4のテーブル401は、第1の実施形態における画像の拡大率Eに応じて、フィルタサイズの大きさ、強調係数テーブルを、どのように変更するかを示している。このテーブル401は、アプリケーションプログラムが保持しているものでもあるが、蓄積装置103内に本アプリケーションが参照する別途環境ファイルとして保存しても構わない。
【0057】
図示の如く、画像の拡大率Eに対し、1.0<E<2.0の範囲においては、フィルタのサイズを3×3、強調係数テーブルは、図3のテーブル301を用いる。
【0058】
2.0≦E<5.0の範囲においては、フィルタのサイズを5×5、強調係数テーブルは、図3のテーブル302を用いる。また、5.0≦Eの場合は、フィルタのサイズを7×7、強調係数テーブルは、図3のテーブル303を用いる。拡大率が5倍以上の場合においても、フィルタサイズ、強調係数テーブルを細分化することも可能であるが、フィルタサイズがこれ以上大きくなると、平滑化処理の処理時間が非常に長くなるため、5倍以上の場合は、一律の処置を実施している。
【0059】
以上のようにして、本第1の実施形態では、先に示した式(3)に従って、拡大処理とアンシャープマスク処理を実行する。
【0060】
図5は、第1の実施形態における、先に説明した図8のステップS6の処理の詳細を示すフローチャートである。先に説明したように、このステップS6に移行するとき、既に拡大率Eは設定されている点に注意されたい。
【0061】
ステップS501では、原画像データIa(図8のステップS2で選択した画像データ)を読込む。ステップS502では、読込んだ画像データIaを、設定された拡大率Eに従ってバイリニア法を利用して拡大処理し、画像データIAを生成する。生成された画像データIAはRAM106内に一時的に記憶する。また、この生成した拡大画像データIAは、先に示した式(3)におけるE(Ia)に相当する。なお、画像データの拡大処理は、バイリニア法に限らず、バイキュービック法等を用いても構わない。
【0062】
次いで、ステップS503において、拡大率Eに従ったサイズの平滑化フィルタFを決定する。そして、ステップS504において、生成した拡大画像データIAを平滑化フィルタFを用いて平滑化して、平滑化画像データIBを得る。この平滑化画像データIBもRAM106に一時的に記憶する。また、この生成した平滑化画像データIBは、先に示した式(3)におけるF(E(Ia),E))に対応する。そして、ステップS505において、拡大率Eに従って1つの強調係数テーブルを決定する。また、アンシャープマスク処理実行後の画像データISを格納するための領域をRAM106に確保する。
【0063】
そして、ステップS506では、処理対象画素位置を表わす変数iを“0”で初期化する。ここで、画像データのi番目の画素とは、図6のように、画像データの左上の画素を0番目としてラスタースキャンする際のアドレス値である。画像データの水平方向の画素数をW、垂直方向の画素数をHとすると、画像データの全画素数Nは、W×Hとなる。また、着目する画素の座標を(x,y)で表わすと、i=x+y×Wとなる。変数iは0から始まるので、変数iがN−1と等しくなるまで、アンシャープマスク処理を実行すれば良いことになる。
【0064】
ステップS507では、画像データIA及びIBの、i番目の画素値の差分値を算出する。画像データIAのi番目の画素値をIA(i)、画像データIBのi番目の画素値をIB(i)とすると、差分画像データIC(i)は次式に従って算出できる。
IC(i)=IA(i)−IB(i)
なお、画像データIA、IB内の各画素は正の値しか持たないが、差分画像データICの差分画素値は負の値も取り得る。原画像データの各画素が8ビットで表わされるのであれば、差分画像データの各差分画素は負の値も表現できるように9ビット以上を持つことになる。
【0065】
さて、ステップS508では、先のステップS503で決定した強調係数テーブル(図3の301乃至303のいずれか)と、差分画像データIC(i)から強調係数αを算出する。
【0066】
次いで、ステップS509では、次式に従って、アンシャープマスク処理後の画像ISのi番目の画素値を算出し、RAM106に格納した領域のi番目のアドレス位置に算出した画素値IS(i)を格納する。
IS(i)=IA(i)+α×IC(i)
【0067】
そして、ステップS510では、変数iとN−1とを比較し、全画素についてアンシャープマスク処理を行ったか否かを判断する。否の場合には、ステップS511に進み、変数iを“1”だけ増加させ、ステップS507以降の処理を繰り返す。
【0068】
また、全画素のアンシャープマスク処理が完了したと判断した場合には、ステップS512に進み、RAM106に生成されたアンシャープマスク処理後の画像データISを、図7の画像表示エリア702に表示出力することになる。このとき、処理後の画像データISを除く、他の中間的に発生した画像データを格納しているRAM106内の領域は、OSが使用可能とするために解放する。また。なお、アプリケーション上で、不図示の保存指示が指示された場合には、RAM106に生成された画像データISをファイルとして、蓄積装置103に保存することになる。
【0069】
以上説明したように本第1の実施形態によれば、格別な知識を持たないユーザであっても、単に拡大率を指示する操作を行うだけで、最適な平滑化フィルタ、強調係数テーブルを用いたアンシャープマスク処理後の画像データを得ることができる。また、このアンシャープマスク処理では、原画像Iaの拡大処理した後の画像データIA(=E(Ia))に適した平滑化フィルタ、強調係数テーブルが用いられる。従って、生成されるアンシャープマスク処理後の画像データは、ノイズが少なく、高い品位の画像とすることが可能になる。
【0070】
<第2の実施形態>
本第2の実施形態は、先に示した式(4)に従ってアンシャープマスク処理を実行するものである。装置構成は、共通であり、UI(ユーザインタフェース)も共通であるので、ここでは、図8のステップS6における詳細を説明する。
【0071】
図9は、第2の実施形態における、先に説明した図8のステップS6の処理の詳細を示すフローチャートである。先に説明したように、このステップS6に移行するとき、既に拡大率Eは設定されている点に注意されたい。
【0072】
ステップS901では、原画像データIa(図8のステップS2で選択した画像データ)を読込む。ステップS902では、読込んだ画像データIaの解像度もしくはサイズに従った平滑化フィルタfを用いて平滑化画像データIbを得る。この生成された平滑化画像データIbはRAM106内に一時的に記憶する。また、この生成した平滑化画像データIbは、先に示した式(4)中におけるf(Ia)に相当する。
【0073】
次いで、ステップS903において、原画像Iaを拡大率Eに従い、拡大処理し、拡大後の画像データIAを得る。このステップS903での拡大処理は、バイキュービック法、バイリニア法のいずれでも構わない。しかし、ここでは、原画像Iaのエッジを残したいので、本実施形態では、バイキュービック法に従って拡大処理するものとした。
【0074】
次に、ステップS904において、平滑化画像データIbを拡大率Eに従い、拡大処理し、拡大平滑化画像データIBを得る。このステップS904での拡大処理も、バイキュービック法、バイリニア法のいずれでも構わないが、拡大処理対象が平滑化画像であるので、本実施形態ではバイリニア法に従って拡大処理するものとした。
【0075】
また、拡大後の画像データIA及び拡大平滑化画像データIBは、RAM106に一時的に記憶する。因に、画像データIAは、式(4)におけるE(Ia)に相当し、拡大平滑化画像データIBはE(f(Ia))に対応する。
【0076】
次に、処理はステップS905に進み、処理対象画素位置を表わす変数iを“0”で初期化する。変数iの意味は第1の実施形態と同じである。
【0077】
ステップS906では、第1の実施形態のステップS507と同様、画像データIA及びIBそれぞれのi番目の画素値の差分値ICを算出する。
IC(i)=IA(i)−IB(i)
【0078】
そして、ステップS907に進み、原画像Iaの平滑化フィルタfに対応する強調係数フィルタの強調係数αを用いて、アンシャープマスク処理後の画像ISのi番目の画素値を算出する。そして、算出した画素値を、RAM106に格納した領域のi番目のアドレス位置に、画素値IS(i)として格納する。
IS(i)=IA(i)+α×IC(i)
【0079】
そして、ステップS908は、変数iとN−1とを比較し、全画素についてアンシャープマスク処理を行ったか否かを判断する。否の場合には、ステップS909に進み、変数iを“1”だけ増加させ、ステップS906以降の処理を繰り返す。
【0080】
また、全画素のアンシャープマスク処理が完了したと判断した場合には、ステップS910に進み、RAM106に生成されたアンシャープマスク処理後の画像データISを、図7の画像表示エリア702に表示出力することになる。なお、アプリケーション上で、不図示の保存指示が指示された場合には、RAM106に生成された画像データISをファイルとして、蓄積装置103に保存することになるのも、第1の実施形態と同じである。
【0081】
以上説明したように本第2の実施形態によれば、第1の実施形態と同様の作用効果を奏することが可能となる。また、本第2の実施形態によれば、平滑化フィルタfを用いた平滑化処理は、拡大処理前の原画像データIaに対して行うので、処理対象画素数が少ない分だけ、処理を高速化させることが可能になる。また、本第2の実施形態では拡大処理で利用する拡大方法として2種類、すなわち、バイリニア法、バイキュービック法を画像の性質に合わせて適応的に用いることで、画質劣化を更に抑えることが可能になる。
【0082】
<第3の実施形態>
本第3の実施形態は、先に示した式(5)に従ってアンシャープマスク処理を実行するものである。装置構成は、共通であり、UI(ユーザインタフェース)も共通であるので、ここでは、図8のステップS6における詳細を説明する。
【0083】
図10は、第3の実施形態における、先に説明した図8のステップS6の処理の詳細を示すフローチャートである。先に説明したように、このステップS6に移行するとき、既に拡大率Eは設定されている点に注意されたい。
【0084】
ステップS1001では、原画像データIa(図8のステップS2で選択した画像データ)を読込む。ステップS1002では、読込んだ画像データIaの解像度もしくはサイズに従った平滑化フィルタfを用いて平滑化画像データIbを得る。この生成された画像データIbはRAM106内に一時的に記憶する。また、この生成した平滑化画像データIbは、先に示した式(4)中におけるf(Ia)に相当する。
【0085】
次いで、ステップS1003では、原画像データIaと平滑化画像データIbとの差分画像データIcを算出する。この差分画像データIcは、先に示した式(5)の(Ia−f(Ia))に対応する。
【0086】
次いで、ステップS1004に進み、差分画像IcをZIP等の可逆圧縮符号化技術を用いて圧縮し、蓄積装置103に保存する。また、このとき、生成した平滑化画像データIbを格納していたRAM106の領域を、解放する。
【0087】
次いで、ステップS1005に進み、原画像データIaを拡大率Eに従い拡大する。拡大処理は、第2の実施形態と同様、バイキュービック法に従って行う。
【0088】
次いで、ステップS1006では、保存した圧縮差分画像データIcを読込み、伸長処理し、差分画像データIcを得る。そして、その差分画像データIcを拡大率Eに従って拡大処理し、拡大差分画像データICを得る。この拡大差分画像データICは式(5)のE(Ia−f(Ia))に対応するものである。また、この拡大処理もバイキュービック法に従って行う。
【0089】
そして、ステップS1007において、処理対象画素位置を表わす変数iを“0”で初期化する。変数iの意味は第1の実施形態と同じである。また、アンシャープマスク処理後の画像データを格納するための領域をRAM106に確保する。
【0090】
次いで、ステップS1008では、原画像Iaの平滑化フィルタfに対応する強調係数フィルタの強調係数αを用いて、アンシャープマスク処理後の画像ISのi番目の画素値を算出する。そして、算出した画素値を、RAM106に格納した領域のi番目のアドレス位置に、画素値IS(i)として格納する。
IS(i)=IA(i)+α×IC(i)
そして、ステップS1009は、変数iとN−1とを比較し、全画素についてアンシャープマスク処理を行なったか否かを判断する。否の場合には、ステップS1010に進み、変数iを“1”だけ増加させ、ステップS1008以降の処理を繰り返す。
【0091】
また、全画素のアンシャープマスク処理が完了したと判断した場合には、ステップS1011に進み、RAM106に生成されたアンシャープマスク処理後の画像データISを、図7の画像表示エリア702に表示出力することになる。なお、アプリケーション上で、不図示の保存指示が指示された場合には、RAM106に生成された画像データISをファイルとして、蓄積装置103に保存することになるのも、第1の実施形態と同じである。
【0092】
以上説明したように本第3の実施形態によれば、第2の実施形態と同様の作用効果を奏することが可能となる。また、本第3の実施形態によれば、ステップS1008乃至S1010のループ処理が、第2の実施形態のステップS906乃至S909のループ処理よりも簡略化されるので、高速に処理することも可能になる。
【0093】
<第4の実施形態>
以上説明した第1乃至第3の実施形態は、拡大後の画像データの数が異なる。すなわち、上記したように処理の高速化のみならず、処理装置におけるワークエリアであるRAM106(場合によっては蓄積装置103)の空き容量に応じて、最適となる処理方法を適宜選択する事は大変有効である。
【0094】
そこで、本第4の実施形態は、以上説明してきた3種類の式によるアンシャープマスクの処理方法を、画像処理装置の処理能力に関わるハードウェア構成、すなわち、ハードウェアリソースに従って、適宜選択して実施するものである。ここで、3種類のアンシャープマスクの処理方法について、RAM106の消費量、処理時間、画質をそれぞれ3段階に分けると、次のようになる。
式(3)(第1の実施形態):メモリ使用量は大。処理時間は長い。画質は良。
式(4)(第2の実施形態):メモリ使用量は中。処理時間は短い。画質は中。
式(5)(第3の実施形態):メモリ使用量は小。処理時間は中。画質は低。
【0095】
上記の通り、画質面で比較すると、最終的に得られる拡大・アンシャープマスク処理後の画像の画質は、式(3)の処理が最も良く、次いで、式(4)、式(5)の順になる。また、ここで言う、ハードウェアリソースとは、RAM106の利用可能なメモリサイズ、及び、CPU104の処理能力である。
【0096】
RAM106の全容量ではなく、利用可能なメモリサイズとする理由は、通常、PCでは、複数のアプリケーションが実行可能である点、及び、実行中のアプリケーションの種類とその数に依存して、空きメモリサイズが変化するためである。ただし、不特定多数のアプリケーションが実行できない環境にあるのであれば、RAM106の全容量でも構わない。
【0097】
また、CPU104の処理能力は、CPUの種類と、その動作クロックで決まる。
【0098】
RAM106の空エリア、CPU104の処理能力に係る情報は、OS(オペレーティングシステム)のファンクションコール等を利用すれば容易に取得できるので、ここでの詳細は省略する。
【0099】
本第4の実施形態では、RAM106の利用可能なメモリサイズと、予め設定した2つの閾値と比較し、領可能なメモリサイズが大中小のいずれであるかを判定する。
【0100】
また、CPU104の処理能力についても、予め設定した2つの閾値と比較し、CPU104の処理能力が大中小のいずれであるかを判定する。
【0101】
そして、RAM106の利用可能なサイズと、CPU104の処理能力に基づき、本第4の実施形態におけるアプリケーションが実行する装置のハードウェアリソースの指標値(大中小)を決定する。
【0102】
図15は、ハードウェアリソースを判定するためのテーブルを示している。
【0103】
図示の如く、CPUの処理能力及び利用可能なメモリサイズが共に中以上の場合は、ハードウェアリソースは大であると判断し、利用可能なメモリサイズが少ない場合は、ハードウェアリソースは小と判断する。そして、それ以外では、ハードウェアリソースは中であると判断する。
【0104】
そして、ハードウェアリソースが大であれば、式(3)、すなわち、第1の実施形態に従って拡大・アンシャープマスク処理を実行する。また、ハードウェアリソースが中であれば、式(4)、すなわち、第2の実施形態に従って拡大・アンシャープマスク処理を実行する。また、ハードウェアリソースが小であれば、式(5)、すなわち、第3の実施形態に従って拡大・アンシャープマスク処理を実行する。
【0105】
本第4の実施形態におけるメイン処理の例を図16に示す。図16の処理は、図8に置き換わるメイン処理でもある。
【0106】
まず、ステップS1601では、図7に示すウインドウを表示し、ステップS16022でユーザによる編集対象の画像ファイルが選択されるのを待つ。画像ファイルを選択は、ファイル選択のダイアログボックス等を表示し、ユーザが目的とするファイルを入力装置101より指示することで決定するものとする。ファイルが選択されると、その画像が画像表示エリア702に表示される。そして、ステップS1603にて、ユーザによる編集指示を待つ。ユーザによる編集指示が最適拡大ボタン705以外であると判断した場合には、ステップS1604に進んで対応する処理を行う。
【0107】
一方、最適拡大ボタン705であると判断した場合には、ステップS1605に進んで、倍率設定のダイアログボックス707を表示し、倍率の設定を行なわせる。倍率の設定が終わり、ダイアログボックス707のOKボタンが指示されると、ステップS1606に進む。このステップS1606では、RAM106中の利用可能なメモリサイズ、及び、CPU104自身の処理能力を解析し、図15のテーブルを参照して、ハードウェアリソースの指標値を得る。
【0108】
そして、ハードウェアリソースが大であれば、ステップS1608に進み、式(3)に従った処理、すなわち、図5のフローチャートに従った処理を実行する。また、ハードウェアリソースが中であれば、ステップS1609に進み、式(4)に従った処理、すなわち、図9のフローチャートに従った処理を実行する。そして、ハードウェアリソースが小であれば、ステップS1610に進み、式(5)に従った処理、すなわち、図10のフローチャートに従った処理を実行する。
【0109】
以上説明したように本第4の実施形態によれば、本第4の実施形態の画像編集アプリケーションを実行する装置のハードウェアリソースに基づき、適応的に式(3)乃至(5)のいずれか1つに従って拡大・アンシャープマスク処理を実行することができる。
【0110】
<第5の実施形態>
上記第4の実施形態では、装置のハードウェアリソースに応じて、適応的に式(3)乃至(5)のいずれかに従って拡大・アンシャープマスク処理するものであった。
【0111】
しかし、ハードウェアリソースが乏しい装置を所有するユーザが、時間がかかっても良いから最高画質の拡大・アンシャープマスク処理を望むことも有り得る。
【0112】
そこで、図17に示す如く、最適拡大処理の設定メニューを表示させ、自動、手動のいずれかを設定できるようにしても構わない。図示の如く、ラジオボタンを用意し、ユーザは「自動」、「手動」のいずれかを明示的に選択する。そして「自動」が設定された場合、上記第4の実施形態の処理を行なう。また、「手動」が選択された場合、スライダーバーを操作し、第1乃至第3の実施形態のいずれで行なうかを明示的に設定する。
【0113】
また、この設定を行なうと、次回の編集に反映させるため、設定内容を環境ファイル等に保存する。
【0114】
以上のようにすることで、ユーザは第1乃至第4の実施形態のいずれで処理を行なうかを設定できるようになり、ユーザの利便性を増すことが可能になる。
【0115】
[その他の実施形態]
以上本発明に係る4つの実施形態を説明した。上記の各実施形態の如く、本発明は上記の通り、コンピュータプログラムにより実現できるものであるから、当然、そのようなコンピュータプログラムも本発明の範疇に入る。
【0116】
なお、本発明は、複数の機器(例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機、ファクシミリ装置など)に適用してもよい。
【0117】
また、通常、コンピュータプログラムは、CD−ROM等のコンピュータ可読記憶媒体に格納されていて、それをコンピュータの読取り装置(CD−ROMドライブ)にセットし、システムにコピーもしくはインストールすることで実行可能になる。従って、このようなコンピュータ可読記憶媒体も本発明の範疇に入ることも明らかである。
【技術分野】
【0001】
本発明は画像の拡大処理技術に関するものである。
【背景技術】
【0002】
画像データに対し、エッジ部分を強調する処理の一つとして、アンシャープマスク処理がある。アンシャープマスクとは、エッジを強調する処理の過程で画像データを平滑化する処理が介在するため、このように呼ばれる。
【0003】
アンシャープマスク処理の手順は、まず、処理対象の原画像データIaに対し、平滑化処理を行い、平滑化画像Ibを作成する。平滑化処理とは、図2(a)に示すような平滑化フィルタ201を用いて、周辺画素との平均を取り、画像をぼかす処理である。そして、その平滑化処理された画像データIbと原画像データIaに基づき、シャープネスを向上させた画像データIsを生成する。これらの画像の関係は次式(1)の通りである。
Is =Ia + α(Ia −Ib) …(1)
【0004】
上記式を簡単に説明すると、元画像Iaと、平滑化画像Ibとの差分を取ることで、エッジ成分(換言すれば画像の高周波成分)を抽出する。そして、そのエッジ成分に強調係数αを乗算することで、強調する。この後、原画像Iaに、その強調後のエッジ成分を加算することで、シャープネスを向上した画像データIsを得ることができる。
【0005】
一方、昨今の印刷装置の印刷解像度が上がる一方である。印刷解像度とは単位長さ(或いは単位面積)当たりの画素数を意味する。従って、高い印刷解像度の印刷装置で印刷する場合には、画像データが持つ画素数も増やす必要がある。すなわち、印刷対象の画像を拡大することが必要になったので、前記式(1)の結果の画像データIsに必要に応じた拡大処理を行っているのが一般的である。
【0006】
しかしながら、アンシャープマスク処理を行った画像データを拡大処理してしまうと、せっかく強調したエッジ部分が滑らかになってしまい、アンシャープマスクの効果が薄れてしまう。
【0007】
この為、画像の拡大率に応じて、式(1)の強調係数αを設定してアンシャープマスク処理を実行し、その後に画像の拡大処理を行う技術が知られている(例えば、特許文献1)。この特許文献1には、別の実施方法として、まず、画像の拡大処理を行い、その後で大きな値の強調係数αでもってエッジ強調処理を行う方法も開示されている。
【0008】
しかし、上記の技術の場合、エッジ強調処理後の画像の拡大処理では、エッジが滑らかになってしまい、画質の劣化が目立ってしまう。また、拡大後にエッジ強調する場合においても、拡大後の画像は、エッジ領域が広くなるため、平滑化処理の効果が薄くなる。そのため、いくら強調係数αを大きくしても、エッジ部分を強調することは難しく、逆に、エッジ部分以外を無駄に強調するため、画像にノイズが増加する結果となる。
【0009】
エッジ領域が広くなる問題への対処としては、アンシャープマスク処理に関する技術ではないものの、拡大後の画像に対して、エッジ検出のフィルタサイズを大きくする方法が知られている(例えば特許文献2)。この特許文献2に、アンシャープマスクにおいても、平滑化フィルタのサイズを大きくすることで、エッジ領域の拡大化に対処できるが、この場合、平滑化処理が強くなるため、エッジ領域以外も強調することになってしまい、画像にノイズが増加してしまう。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開2003-141532号公報
【特許文献2】特開2003-274157号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
本発明は、上記課題に鑑みなされたものであり、画像を拡大する際、例えばアンシャープマスク処理によるエッジ強調後の画像を拡大処理するのではなく、なるべく拡大後の画像でアンシャープマスク処理を行うものである。これにより、格別な知識がなくても簡単な操作でもって、原画像のシャープネスを維持しつつ、ノイズの発生を抑制した拡大画像を生成する技術を提供しようとするものである。
【課題を解決するための手段】
【0012】
この課題を解決するため、例えば本発明の画像処理装置は以下の構成を備える。すなわち、
拡大率を設定する拡大率設定手段と、
前記拡大率に従って、原画像データを拡大して拡大画像データを生成する画像拡大手段と、
前記拡大率に対応するサイズの平滑化フィルタを用いて、前記拡大画像データを平滑化して平滑化画像データを生成する平滑化手段と、
前記平滑化画像データと前記拡大画像データの差分を算出し、差分画像データを生成する差分画像データ生成手段と、
前記差分画像データの各差分画素の値に応じた強調係数を当該各差分画素の値に乗算する乗算手段と、
前記乗算手段による乗算結果と前記拡大画像データの対応する画素値とをそれぞれ加算して出力画像を生成する加算手段と、を備え、
前記乗算手段は、前記差分画素の値が大きいほど、大きい強調係数を前記各差分画素に乗算することを特徴とする。
【発明の効果】
【0013】
本発明によれば、格別な知識がなくても簡単な拡大率を設定するだけで、原画像のシャープネスを維持しつつ、ノイズの発生を抑制した拡大画像を得ることが可能になる。
【図面の簡単な説明】
【0014】
【図1】本発明におけるシステムのブロック構成図である。
【図2】平滑化フィルタの例を示す図である。
【図3】差分値と強調係数のテーブルと、拡大率との関係を示す図である。
【図4】拡大率から、フィルタサイズ、強調係数テーブルを算出するためのテーブルを示す図である。
【図5】第1の実施形態における拡大・アンシャープマスク処理の処理手順を示すフローチャートである。
【図6】画像データのスキャン順と、アドレスとの対応関係を示す図である。
【図7】実施形態におけるアプリケーションプログラムのGUIの推移を示す図である。
【図8】実施形態におけるアプリケーションプログラムのメイン処理を示すフローチャートである。
【図9】第2の実施形態における拡大・アンシャープマスク処理の処理手順を示すフローチャートである。
【図10】第3の実施形態における拡大・アンシャープマスク処理の処理手順を示すフローチャートである。
【図11】バイリニア法とバイキュービック法による画像の拡大処理内容を説明するための図である。
【図12】第1の実施形態における拡大・アンシャープマスク処理の処理概要を説明するための図である。
【図13】第2の実施形態における拡大・アンシャープマスク処理の処理概要を説明するための図である。
【図14】第3の実施形態における拡大・アンシャープマスク処理の処理概要を説明するための図である。
【図15】第4の実施形態におけるハードウェアリソースの判定のためのテーブルを示す図である。
【図16】第4の実施形態におけるメイン処理を示すフローチャートである。
【図17】第5の実施形態における最適拡大の設定のGUIを示すフローチャートである。
【発明を実施するための形態】
【0015】
以下、添付図面に従って本発明に係る各実施形態を詳細に説明するが、まず、その前提について説明する。
【0016】
原画像をIa、原画像Iaの平滑化処理後の画像をIbとし、アンシャープマスク処理後の画像をIsとすると、先に示した式(1)のように表わせる。このアンシャープマスク処理後の画像Isを、拡大率Eに従ってバイリニア法等を用いて拡大(補間)処理して得られた画像をISとすると、ISとIsとの関係は次のように表わせる。
IS=E(Is)=E(Ia+α・(Ia−Ib)) …(2)
ここで、E(x)は画像xの水平、垂直方向の画素数をそれぞれE倍に増やすことを意味する。また、画像Ibは、元画像Iaに対して平滑化フィルタfを用いて平滑化した画像を示しているので、それを明示するために『f(Ia)』とすると、式(2)は次のように表わせる。
IS =E(Is)= E(Ia+α・(Ia−f(Ia))) …(2)’
このような画像処理を経ると、結局のところ、拡大処理では平滑化されてしまい、アンシャープマスクの効果が薄れてしまう。これに対処するためには、拡大処理を想定してαを、より大きな値にする必要があるが、必要以上に大きな値を設定してしまうと、逆にノイズが発生して画質劣化は避けられない。更に、不慣れなユーザの場合、最適なαや、平滑化する際のフィルタのサイズを決めるために、アンシャープマスク処理に係る操作と、拡大処理の操作を何度も繰り返し行い、目的とする画質の画像を得るまでに相当の時間を要することになる。
【0017】
これに対し、本発明では、ユーザは1つの操作を行うだけで、拡大処理とアンシャープマスク処理とを実行し、且つ、画質劣化を抑制した拡大後の画像データを得ることを可能にする。
【0018】
詳細は後述するが、第1の実施形態では、次式(3)に従って、拡大・アンシャープマスク処理後の画像ISを生成する。
IS=E(Ia)+α・(E(Ia)−F(E(Ia),E)) …(3)
ここで、F(x,E)は、倍率Eによって決まる平滑化フィルタFを用いて、画像xを平滑化することを意味する。
【0019】
図12は、上記式(3)による画像データの流れと処理の概念図である。
【0020】
まず、原画像データIaを拡大率Eに従って拡大処理し、拡大画像データIAを得る。拡大画像データIAは、式(3)でのE(Ia)に対応する。次いで、拡大率Eによって定まるサイズの平滑化フィルタF(,E)を用いて、拡大画像データIAを平滑化することで、平滑化画像データIBを得る。この平滑化画像データIBは、式(3)のF(E(Ia),E)に対応する。そして、拡大画像データIAと平滑化画像データIBとを画素同どうしの差分を算出することで、差分画像データICを得る。この差分画像データICは、式(3)の「E(Ia)−F(E(Ia),E)」に対応する。
【0021】
そして、差分画像データICの各画素の値に強調係数αを乗算し、その乗算結果と拡大画像データIA中の対応する画素の値とを加算することで、拡大・アンシャープマスク処理後の画像データISを得る。
【0022】
第2の実施形態では、次式(4)に従って、拡大・アンシャープマスク処理後の画像ISを求める。
IS=E(Ia)+α・(E(Ia)−E(f(Ia)) …(4)
【0023】
図13は、上記式(3)による画像データの流れと処理の概念図である。
【0024】
まず、原画像データIaを、その原画像データIaのサイズ等を参照した平均的な平滑化フィルタfを用いて平滑化画像データIbを得る。この平滑化画像データIbは、式(4)におけるf(Ia)に対応する。
【0025】
そして、原画像データIa及び平滑化画像データIbそれぞれを拡大率Eに従って拡大処理し、拡大画像データIA及び拡大平滑化画像データIBを得る。拡大画像データIAは式(4)におけるE(Ia)に対応し、拡大平滑化画像データIBは式(4)におけるE(f(Ia))に対応する。
【0026】
そして、拡大画像データIAと拡大平滑化画像データIBとを画素同どうしの差分を算出することで、差分画像データICを得る。この差分画像データICは、式(4)の「E(Ia)−E(f(Ia))」に対応する。
【0027】
そして、差分画像データICの各画素の値に強調係数αを乗算し、その乗算結果と拡大画像データIA中の対応する画素の値とを加算することで、拡大・アンシャープマスク処理後の画像データISを得る。
【0028】
第3の実施形態では、次式(5)に従って、拡大・アンシャープマスク処理後の画像ISを求める。
IS=IA+α・E(Ia−f(Ia)) …(5)
図14は、上記式(5)による画像データの流れと処理の概念図である。
【0029】
まず、原画像データIaを、その原画像データIaのサイズ等を参照した平均的な平滑化フィルタfを用いて平滑化画像データIbを得る。この平滑化画像データIbは、式(5)におけるf(Ia)に対応する。
【0030】
そして、原画像データIa及び平滑化画像データIbそれぞれの対応する画素の値の差分を算出することで差分画像データIcを得る。
【0031】
そして、原画像データIaと差分画像データIcを、それぞれを拡大率Eに従って拡大処理し、拡大画像データIA及び拡大差分画像データICを得る。拡大画像データIAは式(5)におけるE(Ia)に対応し、拡大差分画像データICは式(4)における「E(I(Ia)−f(Ia))」に対応する。
【0032】
そして、差分画像データICの各画素の値に強調係数αを乗算し、その乗算結果と拡大画像データIA中の対応する画素の値とを加算することで、拡大・アンシャープマスク処理後の画像データISを得る。
【0033】
<装置構成の説明>
ここで各実施形態に共通事項について説明する。
【0034】
図1は本発明に係るシステム構成図であり、例えばパーソナルコンピュータ等である。図中、101はキーボードやマウス等の入力装置、102は表示装置、103はハードディスク装置等の大容量の蓄積装置である。この蓄積装置103には、OS(オペレーティングシステム)や、各実施形態で示すアプリケーションプログラム、並びに、画像データファイル等が格納されている。104は装置全体の制御を司るCPUであり、105はBIOSやブートプログラムを格納しているROM、106はCPU104のワークエリアとして使用するRAMである。
【0035】
本装置の電源がONになると、CPU104はROM105のブートプログラムに従って処理を開始し、蓄積装置103内のOSをRAM106にロードし、実行することで情報処理装置として機能する。この後、ユーザは入力装置101を操作して、画像処理用のアプリケーションの起動指示を与えると、CPU104はそのアプリケーションプログラムを蓄積装置103からRAM106にロードし、実行する。この結果、本装置が画像処理装置として機能することになる。
【0036】
アプリケーションが起動すると、ユーザは所望とする画像ファイルを蓄積装置103に記憶されている画像ファイルを読込み、それを表示装置102に表示する。
【0037】
図7は画像ファイルを読込み、表示装置102に表示したGUIを示している。図示の如く、アプリケーションはウインドウ701を表示し、その中に、画像表示エリア702、最適拡大ボタン705を有する。なお、画像編集の種類には、拡大処理以外にも幾つもの種類が存在するが、図示では省略している。
【0038】
図示の場合、拡大対象の画像703が画像表示エリア702内に表示されている。ここで、ユーザが入力装置101を操作して、最適拡大ボタン705を指示すると、図示の拡大率を設定するためのダイアログボックス707を表示する。このダイアログボックス内には、拡大率を設定するためのスライダーバー707a、OKボタン707b、キャンセルボタン707cを備える。スライダーバー707aは、図示の場合1乃至10倍の範囲で設定できる。ユーザは、このスライダーバー707aを操作して、所望とする倍率を設定する。この後、ユーザがOKボタン707bを指示することで、このダイアログボックス707は消去され、後述する拡大・アンシャープマスク処理を実行する。また、キャンセルボタン707cが指示された場合には、単にダイアログセットトップボックス707を消去し、最適拡大ボタン705を指示する以前の状態に戻る。なお、上記では、拡大率を設定するのにスライダーバーを用いる例を示したが、ユーザはキーボードを操作して、拡大率となる数値を入力しても構わない。すなわち、拡大率の設定するための構成については、その種類を問わない。
【0039】
図8はアプリケーションプログラムのメイン処理手順を示すフローチャートである。各ステップはCPU104が実行することになる。
【0040】
まず、ステップS1では、図7に示すウインドウを表示し、ステップS2でユーザによる編集対象の画像ファイルが選択されるのを待つ。画像ファイルを選択は、ファイル選択のダイアログボックス等を表示し、ユーザが目的とするファイルを入力装置101より指示することで決定するものとする。ファイルが選択されると、その画像が画像表示エリア702に表示される。そして、ステップS3にて、ユーザによる編集指示を待つ。ユーザによる編集指示が最適拡大ボタン705以外であると判断した場合には、ステップS4に進んで対応する処理を行う。
【0041】
一方、最適拡大ボタン705であると判断した場合には、ステップS5に進んで、倍率設定のダイアログボックス707を表示し、倍率の設定を行なわせる。倍率の設定が終わり、ダイアログボックス707のOKボタンが指示されると、ステップS6に進んで自動最適拡大処理を実行する。この自動最適拡大処理の処理後の画像は、画像表示エリア702に表示される。
【0042】
ここで、実施形態で利用する拡大処理について補足説明する。実施形態では、拡大処理としてバイリニア法、又は、バイキュービック法を用いる。
【0043】
図11(a)は、画像の拡大処理で用いるリニア補間法(拡大方法)について説明した図である。2つの画素Xa、Xbを含む画像をn倍に拡大する場合、2つの画素Xa、Xb間に、2n−2個の補間画素を生成する。その中の任意の画素Xの値は、画素Xaからの距離をs、画素Xbからの距離をtとすると、次式で求められる。
X=(s×Xa+t×Xb)/2n
【0044】
このように、線形的に2つの画素間で補間する処理がリニア法である。画像データの場合、二次元的に補間されるので、周囲の4画素から線形的に補間する。バイリニア法は、このリニア補間法を、2次元の2×2画素の拡張した方法である。バイリニア法の特性は、拡大率が大きいほど、画像全体が滑らかになる。そのため、拡大後は、平滑化したような効果を得ることができる。
【0045】
図11(b)は、バイキュービック法を説明するための図であり、4つの画素Xa、Xb、Xc、Xdを含む画像をn倍に拡大する例を示している。バイキュービック法では、実在する水平(or垂直)方向に隣接する2画素間の距離を“1”と定義する。そして、補間生成しようとする画素Xの値を求める際、その画素Xと近傍の実在する画素との距離をdとすると、まず、次式に従ってCubic(d)を算出する。
0<|d|<1の場合:
Cubic(d)=1−2|d|2+|d|3
1≦|d|<2の場合:
Cubic(d)=4−8|d|+5|d|2−|d|3
2≦|d|の場合:
Cubic(d)=0
【0046】
そして、上記Cubicを、補間画素Xと画素{Xa、Xb、Xc、Xd}の1つとの距離について求める。そして、その総和を補間画素Xとする。すなわち、図11(b)の場合、補間画素Xは次式に従って算出する。
X=Cubic(n+s)×Xa+Cubic(s)×Xb+Cubic(t)×Xc + Cubic(n+t)×Xd
このように、線形補間よりも広い範囲で、画素を補間するのがバイキュービック法である。画像データの場合、二次元的に補間されるので、周囲の16画素から補間することになる。バイキュービック法は、バイリニア法に比べて、画像のエッジ部分が残りやすく、拡大後も比較的シャープな印象を得ることができる。
【0047】
以下、本発明に係る3つの実施形態を説明するが、それぞれは図8のステップS6に対応する処理に特徴を有するものであり、それ以外は共通であるものとする。
【0048】
<第1の実施形態>
本第1の実施形態では、先に示した式(3)に従い、拡大・アンシャープマスク処理を行う。すなわち、画像の拡大率にあわせて、平滑化フィルタのサイズ、強調係数のテーブルを切り替え、拡大後の画像に対して、適切なアンシャープマスクを実行する。なお、以下の説明において、各種処理中に生成されるデータはRAM106に格納されるものとする。
【0049】
本第1の実施形態におけるシャープネス処理は、先に説明したようにアンシャープマスク処理である。アンシャープマスク処理は、原画像に対して平滑化画像を作成する。そして、その平滑化画像と、原画像データとの画素毎の差分値を演算する。その後、原画像データ中の該当する画素値に足すことで、実行される。
【0050】
平滑化画像は、図2(a)の3×3のサイズの平滑化フィルタ201を用いて、作成される。
【0051】
Ia(x,y)は、元画像データの左上隅位置を原点(0,0)とした場合の座標(x,y)の画素値であり、RGBの各成分(ここでは各8ビットとする)で構成される。以降、特に説明がない限り、画素値の計算は、全て、RGBの各要素に対し、行うものとする。画像データの左上隅の座標を(0,0)とした場合、平滑化画像の、座標(x,y)の画素値Ib(x,y)は次式(6)で計算される。
Ib(x,y)={Ia(x-1,y-1)+Ia(x,y-1)+Ia(x+1,y-1)+Ia(x-1,y)+Ia(x,y)+Ia(x+1,y)
+Ia(x-1,y+1)+Ia(x,y+1)+Ia(x+1,y+1)}/9 … (6)
【0052】
次に、元画像と、平滑化画像との差分を求める。差分値をIc(x、y)とすると、
Ic(x,y)=Ia(x,y)-Ib(x,y) … (7)
そしれ、強調係数をαとした場合、アンシャープマスク実行後の画素値Is(x,y)を次式(8)に従って算出する。
Is(x,y)=Ia(x,y)+α×Ic(x,y) … (8)
これを、全ての画素に対し、計算することによって、アンシャープマスク処理が実行できる。
【0053】
平滑化画像を作る際には、平滑化フィルタのサイズを切り替えることもできる。図2(b)の平滑化フィルタ202のように、5×5画素サイズのフィルタを用いて、その平均値を求める方法である。同様に、図示していないが、7×7、9×9のサイズのフィルタサイズでも実行できる。フィルタサイズが大きいほうが、より広いエッジ部分を平滑化できるので、拡大後の画像に対しては有用である。しかし、フィルタサイズが大きくなると、その分、エッジ部分以外の領域も強調してしまい、画像データにノイズが目立つという弊害もある。
【0054】
図3は、そのようなノイズを軽減するための、強調係数テーブルを表したものである。
【0055】
これは、式(7)で求めた差分値Ic(x,y)の値に応じて、適切な強調係数αを決定するものである。同図では横軸が差分値、縦軸が強調係数αであり、差分値に応じて、強調係数αが算出できる曲線特性を有する。差分値の特徴として、エッジ部分では、差分値が大きく、エッジ部分以外の領域では、差分値が小さいという特徴がある。そのため、差分値が小さい場合は、強調係数を小さくすることで、エッジ部分以外の強調を防止し、ノイズの発生を抑制する。フィルタサイズが大きくなると、エッジ部分以外での差分値が大きくなってしまうので、フィルタサイズに合わせて、適切な強調係数テーブルを用意する。図3では、画像の拡大率が上がるほど、フィルタサイズを大きくするので、それに合わせて、実施形態では、曲線特性の異なる強調係数テーブル301〜303の3つを用意した。図示の通り、拡大率が大きくなるにつれて、差分値の小さい範囲においては強調係数がより小さくなっている。
【0056】
図4のテーブル401は、第1の実施形態における画像の拡大率Eに応じて、フィルタサイズの大きさ、強調係数テーブルを、どのように変更するかを示している。このテーブル401は、アプリケーションプログラムが保持しているものでもあるが、蓄積装置103内に本アプリケーションが参照する別途環境ファイルとして保存しても構わない。
【0057】
図示の如く、画像の拡大率Eに対し、1.0<E<2.0の範囲においては、フィルタのサイズを3×3、強調係数テーブルは、図3のテーブル301を用いる。
【0058】
2.0≦E<5.0の範囲においては、フィルタのサイズを5×5、強調係数テーブルは、図3のテーブル302を用いる。また、5.0≦Eの場合は、フィルタのサイズを7×7、強調係数テーブルは、図3のテーブル303を用いる。拡大率が5倍以上の場合においても、フィルタサイズ、強調係数テーブルを細分化することも可能であるが、フィルタサイズがこれ以上大きくなると、平滑化処理の処理時間が非常に長くなるため、5倍以上の場合は、一律の処置を実施している。
【0059】
以上のようにして、本第1の実施形態では、先に示した式(3)に従って、拡大処理とアンシャープマスク処理を実行する。
【0060】
図5は、第1の実施形態における、先に説明した図8のステップS6の処理の詳細を示すフローチャートである。先に説明したように、このステップS6に移行するとき、既に拡大率Eは設定されている点に注意されたい。
【0061】
ステップS501では、原画像データIa(図8のステップS2で選択した画像データ)を読込む。ステップS502では、読込んだ画像データIaを、設定された拡大率Eに従ってバイリニア法を利用して拡大処理し、画像データIAを生成する。生成された画像データIAはRAM106内に一時的に記憶する。また、この生成した拡大画像データIAは、先に示した式(3)におけるE(Ia)に相当する。なお、画像データの拡大処理は、バイリニア法に限らず、バイキュービック法等を用いても構わない。
【0062】
次いで、ステップS503において、拡大率Eに従ったサイズの平滑化フィルタFを決定する。そして、ステップS504において、生成した拡大画像データIAを平滑化フィルタFを用いて平滑化して、平滑化画像データIBを得る。この平滑化画像データIBもRAM106に一時的に記憶する。また、この生成した平滑化画像データIBは、先に示した式(3)におけるF(E(Ia),E))に対応する。そして、ステップS505において、拡大率Eに従って1つの強調係数テーブルを決定する。また、アンシャープマスク処理実行後の画像データISを格納するための領域をRAM106に確保する。
【0063】
そして、ステップS506では、処理対象画素位置を表わす変数iを“0”で初期化する。ここで、画像データのi番目の画素とは、図6のように、画像データの左上の画素を0番目としてラスタースキャンする際のアドレス値である。画像データの水平方向の画素数をW、垂直方向の画素数をHとすると、画像データの全画素数Nは、W×Hとなる。また、着目する画素の座標を(x,y)で表わすと、i=x+y×Wとなる。変数iは0から始まるので、変数iがN−1と等しくなるまで、アンシャープマスク処理を実行すれば良いことになる。
【0064】
ステップS507では、画像データIA及びIBの、i番目の画素値の差分値を算出する。画像データIAのi番目の画素値をIA(i)、画像データIBのi番目の画素値をIB(i)とすると、差分画像データIC(i)は次式に従って算出できる。
IC(i)=IA(i)−IB(i)
なお、画像データIA、IB内の各画素は正の値しか持たないが、差分画像データICの差分画素値は負の値も取り得る。原画像データの各画素が8ビットで表わされるのであれば、差分画像データの各差分画素は負の値も表現できるように9ビット以上を持つことになる。
【0065】
さて、ステップS508では、先のステップS503で決定した強調係数テーブル(図3の301乃至303のいずれか)と、差分画像データIC(i)から強調係数αを算出する。
【0066】
次いで、ステップS509では、次式に従って、アンシャープマスク処理後の画像ISのi番目の画素値を算出し、RAM106に格納した領域のi番目のアドレス位置に算出した画素値IS(i)を格納する。
IS(i)=IA(i)+α×IC(i)
【0067】
そして、ステップS510では、変数iとN−1とを比較し、全画素についてアンシャープマスク処理を行ったか否かを判断する。否の場合には、ステップS511に進み、変数iを“1”だけ増加させ、ステップS507以降の処理を繰り返す。
【0068】
また、全画素のアンシャープマスク処理が完了したと判断した場合には、ステップS512に進み、RAM106に生成されたアンシャープマスク処理後の画像データISを、図7の画像表示エリア702に表示出力することになる。このとき、処理後の画像データISを除く、他の中間的に発生した画像データを格納しているRAM106内の領域は、OSが使用可能とするために解放する。また。なお、アプリケーション上で、不図示の保存指示が指示された場合には、RAM106に生成された画像データISをファイルとして、蓄積装置103に保存することになる。
【0069】
以上説明したように本第1の実施形態によれば、格別な知識を持たないユーザであっても、単に拡大率を指示する操作を行うだけで、最適な平滑化フィルタ、強調係数テーブルを用いたアンシャープマスク処理後の画像データを得ることができる。また、このアンシャープマスク処理では、原画像Iaの拡大処理した後の画像データIA(=E(Ia))に適した平滑化フィルタ、強調係数テーブルが用いられる。従って、生成されるアンシャープマスク処理後の画像データは、ノイズが少なく、高い品位の画像とすることが可能になる。
【0070】
<第2の実施形態>
本第2の実施形態は、先に示した式(4)に従ってアンシャープマスク処理を実行するものである。装置構成は、共通であり、UI(ユーザインタフェース)も共通であるので、ここでは、図8のステップS6における詳細を説明する。
【0071】
図9は、第2の実施形態における、先に説明した図8のステップS6の処理の詳細を示すフローチャートである。先に説明したように、このステップS6に移行するとき、既に拡大率Eは設定されている点に注意されたい。
【0072】
ステップS901では、原画像データIa(図8のステップS2で選択した画像データ)を読込む。ステップS902では、読込んだ画像データIaの解像度もしくはサイズに従った平滑化フィルタfを用いて平滑化画像データIbを得る。この生成された平滑化画像データIbはRAM106内に一時的に記憶する。また、この生成した平滑化画像データIbは、先に示した式(4)中におけるf(Ia)に相当する。
【0073】
次いで、ステップS903において、原画像Iaを拡大率Eに従い、拡大処理し、拡大後の画像データIAを得る。このステップS903での拡大処理は、バイキュービック法、バイリニア法のいずれでも構わない。しかし、ここでは、原画像Iaのエッジを残したいので、本実施形態では、バイキュービック法に従って拡大処理するものとした。
【0074】
次に、ステップS904において、平滑化画像データIbを拡大率Eに従い、拡大処理し、拡大平滑化画像データIBを得る。このステップS904での拡大処理も、バイキュービック法、バイリニア法のいずれでも構わないが、拡大処理対象が平滑化画像であるので、本実施形態ではバイリニア法に従って拡大処理するものとした。
【0075】
また、拡大後の画像データIA及び拡大平滑化画像データIBは、RAM106に一時的に記憶する。因に、画像データIAは、式(4)におけるE(Ia)に相当し、拡大平滑化画像データIBはE(f(Ia))に対応する。
【0076】
次に、処理はステップS905に進み、処理対象画素位置を表わす変数iを“0”で初期化する。変数iの意味は第1の実施形態と同じである。
【0077】
ステップS906では、第1の実施形態のステップS507と同様、画像データIA及びIBそれぞれのi番目の画素値の差分値ICを算出する。
IC(i)=IA(i)−IB(i)
【0078】
そして、ステップS907に進み、原画像Iaの平滑化フィルタfに対応する強調係数フィルタの強調係数αを用いて、アンシャープマスク処理後の画像ISのi番目の画素値を算出する。そして、算出した画素値を、RAM106に格納した領域のi番目のアドレス位置に、画素値IS(i)として格納する。
IS(i)=IA(i)+α×IC(i)
【0079】
そして、ステップS908は、変数iとN−1とを比較し、全画素についてアンシャープマスク処理を行ったか否かを判断する。否の場合には、ステップS909に進み、変数iを“1”だけ増加させ、ステップS906以降の処理を繰り返す。
【0080】
また、全画素のアンシャープマスク処理が完了したと判断した場合には、ステップS910に進み、RAM106に生成されたアンシャープマスク処理後の画像データISを、図7の画像表示エリア702に表示出力することになる。なお、アプリケーション上で、不図示の保存指示が指示された場合には、RAM106に生成された画像データISをファイルとして、蓄積装置103に保存することになるのも、第1の実施形態と同じである。
【0081】
以上説明したように本第2の実施形態によれば、第1の実施形態と同様の作用効果を奏することが可能となる。また、本第2の実施形態によれば、平滑化フィルタfを用いた平滑化処理は、拡大処理前の原画像データIaに対して行うので、処理対象画素数が少ない分だけ、処理を高速化させることが可能になる。また、本第2の実施形態では拡大処理で利用する拡大方法として2種類、すなわち、バイリニア法、バイキュービック法を画像の性質に合わせて適応的に用いることで、画質劣化を更に抑えることが可能になる。
【0082】
<第3の実施形態>
本第3の実施形態は、先に示した式(5)に従ってアンシャープマスク処理を実行するものである。装置構成は、共通であり、UI(ユーザインタフェース)も共通であるので、ここでは、図8のステップS6における詳細を説明する。
【0083】
図10は、第3の実施形態における、先に説明した図8のステップS6の処理の詳細を示すフローチャートである。先に説明したように、このステップS6に移行するとき、既に拡大率Eは設定されている点に注意されたい。
【0084】
ステップS1001では、原画像データIa(図8のステップS2で選択した画像データ)を読込む。ステップS1002では、読込んだ画像データIaの解像度もしくはサイズに従った平滑化フィルタfを用いて平滑化画像データIbを得る。この生成された画像データIbはRAM106内に一時的に記憶する。また、この生成した平滑化画像データIbは、先に示した式(4)中におけるf(Ia)に相当する。
【0085】
次いで、ステップS1003では、原画像データIaと平滑化画像データIbとの差分画像データIcを算出する。この差分画像データIcは、先に示した式(5)の(Ia−f(Ia))に対応する。
【0086】
次いで、ステップS1004に進み、差分画像IcをZIP等の可逆圧縮符号化技術を用いて圧縮し、蓄積装置103に保存する。また、このとき、生成した平滑化画像データIbを格納していたRAM106の領域を、解放する。
【0087】
次いで、ステップS1005に進み、原画像データIaを拡大率Eに従い拡大する。拡大処理は、第2の実施形態と同様、バイキュービック法に従って行う。
【0088】
次いで、ステップS1006では、保存した圧縮差分画像データIcを読込み、伸長処理し、差分画像データIcを得る。そして、その差分画像データIcを拡大率Eに従って拡大処理し、拡大差分画像データICを得る。この拡大差分画像データICは式(5)のE(Ia−f(Ia))に対応するものである。また、この拡大処理もバイキュービック法に従って行う。
【0089】
そして、ステップS1007において、処理対象画素位置を表わす変数iを“0”で初期化する。変数iの意味は第1の実施形態と同じである。また、アンシャープマスク処理後の画像データを格納するための領域をRAM106に確保する。
【0090】
次いで、ステップS1008では、原画像Iaの平滑化フィルタfに対応する強調係数フィルタの強調係数αを用いて、アンシャープマスク処理後の画像ISのi番目の画素値を算出する。そして、算出した画素値を、RAM106に格納した領域のi番目のアドレス位置に、画素値IS(i)として格納する。
IS(i)=IA(i)+α×IC(i)
そして、ステップS1009は、変数iとN−1とを比較し、全画素についてアンシャープマスク処理を行なったか否かを判断する。否の場合には、ステップS1010に進み、変数iを“1”だけ増加させ、ステップS1008以降の処理を繰り返す。
【0091】
また、全画素のアンシャープマスク処理が完了したと判断した場合には、ステップS1011に進み、RAM106に生成されたアンシャープマスク処理後の画像データISを、図7の画像表示エリア702に表示出力することになる。なお、アプリケーション上で、不図示の保存指示が指示された場合には、RAM106に生成された画像データISをファイルとして、蓄積装置103に保存することになるのも、第1の実施形態と同じである。
【0092】
以上説明したように本第3の実施形態によれば、第2の実施形態と同様の作用効果を奏することが可能となる。また、本第3の実施形態によれば、ステップS1008乃至S1010のループ処理が、第2の実施形態のステップS906乃至S909のループ処理よりも簡略化されるので、高速に処理することも可能になる。
【0093】
<第4の実施形態>
以上説明した第1乃至第3の実施形態は、拡大後の画像データの数が異なる。すなわち、上記したように処理の高速化のみならず、処理装置におけるワークエリアであるRAM106(場合によっては蓄積装置103)の空き容量に応じて、最適となる処理方法を適宜選択する事は大変有効である。
【0094】
そこで、本第4の実施形態は、以上説明してきた3種類の式によるアンシャープマスクの処理方法を、画像処理装置の処理能力に関わるハードウェア構成、すなわち、ハードウェアリソースに従って、適宜選択して実施するものである。ここで、3種類のアンシャープマスクの処理方法について、RAM106の消費量、処理時間、画質をそれぞれ3段階に分けると、次のようになる。
式(3)(第1の実施形態):メモリ使用量は大。処理時間は長い。画質は良。
式(4)(第2の実施形態):メモリ使用量は中。処理時間は短い。画質は中。
式(5)(第3の実施形態):メモリ使用量は小。処理時間は中。画質は低。
【0095】
上記の通り、画質面で比較すると、最終的に得られる拡大・アンシャープマスク処理後の画像の画質は、式(3)の処理が最も良く、次いで、式(4)、式(5)の順になる。また、ここで言う、ハードウェアリソースとは、RAM106の利用可能なメモリサイズ、及び、CPU104の処理能力である。
【0096】
RAM106の全容量ではなく、利用可能なメモリサイズとする理由は、通常、PCでは、複数のアプリケーションが実行可能である点、及び、実行中のアプリケーションの種類とその数に依存して、空きメモリサイズが変化するためである。ただし、不特定多数のアプリケーションが実行できない環境にあるのであれば、RAM106の全容量でも構わない。
【0097】
また、CPU104の処理能力は、CPUの種類と、その動作クロックで決まる。
【0098】
RAM106の空エリア、CPU104の処理能力に係る情報は、OS(オペレーティングシステム)のファンクションコール等を利用すれば容易に取得できるので、ここでの詳細は省略する。
【0099】
本第4の実施形態では、RAM106の利用可能なメモリサイズと、予め設定した2つの閾値と比較し、領可能なメモリサイズが大中小のいずれであるかを判定する。
【0100】
また、CPU104の処理能力についても、予め設定した2つの閾値と比較し、CPU104の処理能力が大中小のいずれであるかを判定する。
【0101】
そして、RAM106の利用可能なサイズと、CPU104の処理能力に基づき、本第4の実施形態におけるアプリケーションが実行する装置のハードウェアリソースの指標値(大中小)を決定する。
【0102】
図15は、ハードウェアリソースを判定するためのテーブルを示している。
【0103】
図示の如く、CPUの処理能力及び利用可能なメモリサイズが共に中以上の場合は、ハードウェアリソースは大であると判断し、利用可能なメモリサイズが少ない場合は、ハードウェアリソースは小と判断する。そして、それ以外では、ハードウェアリソースは中であると判断する。
【0104】
そして、ハードウェアリソースが大であれば、式(3)、すなわち、第1の実施形態に従って拡大・アンシャープマスク処理を実行する。また、ハードウェアリソースが中であれば、式(4)、すなわち、第2の実施形態に従って拡大・アンシャープマスク処理を実行する。また、ハードウェアリソースが小であれば、式(5)、すなわち、第3の実施形態に従って拡大・アンシャープマスク処理を実行する。
【0105】
本第4の実施形態におけるメイン処理の例を図16に示す。図16の処理は、図8に置き換わるメイン処理でもある。
【0106】
まず、ステップS1601では、図7に示すウインドウを表示し、ステップS16022でユーザによる編集対象の画像ファイルが選択されるのを待つ。画像ファイルを選択は、ファイル選択のダイアログボックス等を表示し、ユーザが目的とするファイルを入力装置101より指示することで決定するものとする。ファイルが選択されると、その画像が画像表示エリア702に表示される。そして、ステップS1603にて、ユーザによる編集指示を待つ。ユーザによる編集指示が最適拡大ボタン705以外であると判断した場合には、ステップS1604に進んで対応する処理を行う。
【0107】
一方、最適拡大ボタン705であると判断した場合には、ステップS1605に進んで、倍率設定のダイアログボックス707を表示し、倍率の設定を行なわせる。倍率の設定が終わり、ダイアログボックス707のOKボタンが指示されると、ステップS1606に進む。このステップS1606では、RAM106中の利用可能なメモリサイズ、及び、CPU104自身の処理能力を解析し、図15のテーブルを参照して、ハードウェアリソースの指標値を得る。
【0108】
そして、ハードウェアリソースが大であれば、ステップS1608に進み、式(3)に従った処理、すなわち、図5のフローチャートに従った処理を実行する。また、ハードウェアリソースが中であれば、ステップS1609に進み、式(4)に従った処理、すなわち、図9のフローチャートに従った処理を実行する。そして、ハードウェアリソースが小であれば、ステップS1610に進み、式(5)に従った処理、すなわち、図10のフローチャートに従った処理を実行する。
【0109】
以上説明したように本第4の実施形態によれば、本第4の実施形態の画像編集アプリケーションを実行する装置のハードウェアリソースに基づき、適応的に式(3)乃至(5)のいずれか1つに従って拡大・アンシャープマスク処理を実行することができる。
【0110】
<第5の実施形態>
上記第4の実施形態では、装置のハードウェアリソースに応じて、適応的に式(3)乃至(5)のいずれかに従って拡大・アンシャープマスク処理するものであった。
【0111】
しかし、ハードウェアリソースが乏しい装置を所有するユーザが、時間がかかっても良いから最高画質の拡大・アンシャープマスク処理を望むことも有り得る。
【0112】
そこで、図17に示す如く、最適拡大処理の設定メニューを表示させ、自動、手動のいずれかを設定できるようにしても構わない。図示の如く、ラジオボタンを用意し、ユーザは「自動」、「手動」のいずれかを明示的に選択する。そして「自動」が設定された場合、上記第4の実施形態の処理を行なう。また、「手動」が選択された場合、スライダーバーを操作し、第1乃至第3の実施形態のいずれで行なうかを明示的に設定する。
【0113】
また、この設定を行なうと、次回の編集に反映させるため、設定内容を環境ファイル等に保存する。
【0114】
以上のようにすることで、ユーザは第1乃至第4の実施形態のいずれで処理を行なうかを設定できるようになり、ユーザの利便性を増すことが可能になる。
【0115】
[その他の実施形態]
以上本発明に係る4つの実施形態を説明した。上記の各実施形態の如く、本発明は上記の通り、コンピュータプログラムにより実現できるものであるから、当然、そのようなコンピュータプログラムも本発明の範疇に入る。
【0116】
なお、本発明は、複数の機器(例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機、ファクシミリ装置など)に適用してもよい。
【0117】
また、通常、コンピュータプログラムは、CD−ROM等のコンピュータ可読記憶媒体に格納されていて、それをコンピュータの読取り装置(CD−ROMドライブ)にセットし、システムにコピーもしくはインストールすることで実行可能になる。従って、このようなコンピュータ可読記憶媒体も本発明の範疇に入ることも明らかである。
【特許請求の範囲】
【請求項1】
拡大率を設定する拡大率設定手段と、
前記拡大率に従って、原画像データを拡大して拡大画像データを生成する画像拡大手段と、
前記拡大率に対応するサイズの平滑化フィルタを用いて、前記拡大画像データを平滑化して平滑化画像データを生成する平滑化手段と、
前記平滑化画像データと前記拡大画像データの差分を算出し、差分画像データを生成する差分画像データ生成手段と、
前記差分画像データの各差分画素の値に応じた強調係数を当該各差分画素の値に乗算する乗算手段と、
前記乗算手段による乗算結果と前記拡大画像データの対応する画素値とをそれぞれ加算して出力画像を生成する加算手段と、を備え、
前記乗算手段は、前記差分画素の値が大きいほど、大きい強調係数を前記各差分画素に乗算することを特徴とする画像処理装置。
【請求項2】
拡大率を設定する拡大率設定手段と、
前記拡大率に従って、原画像データを拡大して拡大画像データを生成する画像拡大手段と、
前記拡大率に対応するサイズの平滑化フィルタを用いて、前記拡大画像データを平滑化して平滑化画像データを生成する平滑化手段と、
前記平滑化画像データと前記拡大画像データの差分を算出し、差分画像データを生成する差分画像データ生成手段と、
前記差分画像データの各差分画素の値に応じた強調係数を当該各差分画素の値に乗算する乗算手段と、
前記乗算手段による乗算結果と前記拡大画像データの対応する画素値とをそれぞれ加算して出力画像を生成する加算手段と、を備え、
前記強調係数は、第1の差分値に応じた第1の値の方が、前記第1の差分値よりも値が小さい第2の差分値に応じた第2の値よりも強調の程度が大きいことを特徴とする画像処理装置。
【請求項3】
前記強調係数は、拡大率に応じて複数種類用意され、
前記乗算手段は、前記差分画像データを生成するのに用いられた拡大画像データの拡大率に応じた前記強調係数を選択することを特徴とする請求項1または2に記載の画像処理装置。
【請求項4】
前記強調係数は、第1の差分値に応じ第1の拡大率に応じた第1の値の方が、前記第1の差分値に応じ、前記第1の拡大率より拡大率の大きい第2の拡大率に応じた第2の値よりも強調の程度が大きいことを特徴とする請求項3に記載の画像処理装置。
【請求項5】
原画像データを拡大してアンシャープマスク処理を施す画像処理装置の制御方法であって、
拡大率を設定する拡大率設定工程と、
前記拡大率に従って、原画像データを拡大して拡大画像データを生成する画像拡大工程と、
前記拡大率に対応するサイズの平滑化フィルタを用いて、前記拡大画像データを平滑化して平滑化画像データを生成する平滑化工程と、
前記平滑化画像データと前記拡大画像データの差分を算出し、差分画像データを生成する差分画像データ生成工程と、
前記差分画像データの各差分画素の値に応じた強調係数を当該各差分画素の値に乗算する乗算工程と、
前記乗算工程による乗算結果と前記拡大画像データの対応する画素値とをそれぞれ加算して出力画像を生成する加算工程と、を備え、
前記乗算工程では、前記差分画素の値が大きいほど、大きい強調係数が前記各差分画素に乗算されることを特徴とする画像処理装置の制御方法。
【請求項6】
原画像データを拡大してアンシャープマスク処理を施す画像処理装置の制御方法であって、
拡大率を設定する拡大率設定工程と、
前記拡大率に従って、原画像データを拡大して拡大画像データを生成する画像拡大工程と、
前記拡大率に対応するサイズの平滑化フィルタを用いて、前記拡大画像データを平滑化して平滑化画像データを生成する平滑化工程と、
前記平滑化画像データと前記拡大画像データの差分を算出し、差分画像データを生成する差分画像データ生成工程と、
前記差分画像データの各差分画素の値に応じた強調係数を当該各差分画素の値に乗算する乗算工程と、
前記乗算工程による乗算結果と前記拡大画像データの対応する画素値とをそれぞれ加算して出力画像を生成する加算工程と、を備え、
前記強調係数は、第1の差分値に応じた第1の値の方が、前記第1の差分値よりも値が小さい第2の差分値に応じた第2の値よりも強調の程度が大きいことを特徴とする画像処理装置の制御方法。
【請求項7】
前記強調係数は、拡大率に応じて複数種類用意され、
前記乗算工程では、前記差分画像データを生成するのに用いられた拡大画像データの拡大率に応じた前記強調係数が選択されることを特徴とする請求項5または6に記載の画像処理装置の制御方法。
【請求項8】
前記強調係数は、第1の差分値に応じ第1の拡大率に応じた第1の値の方が、前記第1の差分値に応じ、前記第1の拡大率より拡大率の大きい第2の拡大率に応じた第2の値よりも強調の程度が大きいことを特徴とする請求項7に記載の画像処理装置の制御方法。
【請求項9】
コンピュータに読込ませ実行させることで、前記コンピュータを、請求項1乃至4のいずれか1つに記載の画像処理装置として機能させることを特徴とするコンピュータプログラム。
【請求項10】
請求項9に記載のコンピュータプログラムを格納したことを特徴とするコンピュータ可読記憶媒体。
【請求項1】
拡大率を設定する拡大率設定手段と、
前記拡大率に従って、原画像データを拡大して拡大画像データを生成する画像拡大手段と、
前記拡大率に対応するサイズの平滑化フィルタを用いて、前記拡大画像データを平滑化して平滑化画像データを生成する平滑化手段と、
前記平滑化画像データと前記拡大画像データの差分を算出し、差分画像データを生成する差分画像データ生成手段と、
前記差分画像データの各差分画素の値に応じた強調係数を当該各差分画素の値に乗算する乗算手段と、
前記乗算手段による乗算結果と前記拡大画像データの対応する画素値とをそれぞれ加算して出力画像を生成する加算手段と、を備え、
前記乗算手段は、前記差分画素の値が大きいほど、大きい強調係数を前記各差分画素に乗算することを特徴とする画像処理装置。
【請求項2】
拡大率を設定する拡大率設定手段と、
前記拡大率に従って、原画像データを拡大して拡大画像データを生成する画像拡大手段と、
前記拡大率に対応するサイズの平滑化フィルタを用いて、前記拡大画像データを平滑化して平滑化画像データを生成する平滑化手段と、
前記平滑化画像データと前記拡大画像データの差分を算出し、差分画像データを生成する差分画像データ生成手段と、
前記差分画像データの各差分画素の値に応じた強調係数を当該各差分画素の値に乗算する乗算手段と、
前記乗算手段による乗算結果と前記拡大画像データの対応する画素値とをそれぞれ加算して出力画像を生成する加算手段と、を備え、
前記強調係数は、第1の差分値に応じた第1の値の方が、前記第1の差分値よりも値が小さい第2の差分値に応じた第2の値よりも強調の程度が大きいことを特徴とする画像処理装置。
【請求項3】
前記強調係数は、拡大率に応じて複数種類用意され、
前記乗算手段は、前記差分画像データを生成するのに用いられた拡大画像データの拡大率に応じた前記強調係数を選択することを特徴とする請求項1または2に記載の画像処理装置。
【請求項4】
前記強調係数は、第1の差分値に応じ第1の拡大率に応じた第1の値の方が、前記第1の差分値に応じ、前記第1の拡大率より拡大率の大きい第2の拡大率に応じた第2の値よりも強調の程度が大きいことを特徴とする請求項3に記載の画像処理装置。
【請求項5】
原画像データを拡大してアンシャープマスク処理を施す画像処理装置の制御方法であって、
拡大率を設定する拡大率設定工程と、
前記拡大率に従って、原画像データを拡大して拡大画像データを生成する画像拡大工程と、
前記拡大率に対応するサイズの平滑化フィルタを用いて、前記拡大画像データを平滑化して平滑化画像データを生成する平滑化工程と、
前記平滑化画像データと前記拡大画像データの差分を算出し、差分画像データを生成する差分画像データ生成工程と、
前記差分画像データの各差分画素の値に応じた強調係数を当該各差分画素の値に乗算する乗算工程と、
前記乗算工程による乗算結果と前記拡大画像データの対応する画素値とをそれぞれ加算して出力画像を生成する加算工程と、を備え、
前記乗算工程では、前記差分画素の値が大きいほど、大きい強調係数が前記各差分画素に乗算されることを特徴とする画像処理装置の制御方法。
【請求項6】
原画像データを拡大してアンシャープマスク処理を施す画像処理装置の制御方法であって、
拡大率を設定する拡大率設定工程と、
前記拡大率に従って、原画像データを拡大して拡大画像データを生成する画像拡大工程と、
前記拡大率に対応するサイズの平滑化フィルタを用いて、前記拡大画像データを平滑化して平滑化画像データを生成する平滑化工程と、
前記平滑化画像データと前記拡大画像データの差分を算出し、差分画像データを生成する差分画像データ生成工程と、
前記差分画像データの各差分画素の値に応じた強調係数を当該各差分画素の値に乗算する乗算工程と、
前記乗算工程による乗算結果と前記拡大画像データの対応する画素値とをそれぞれ加算して出力画像を生成する加算工程と、を備え、
前記強調係数は、第1の差分値に応じた第1の値の方が、前記第1の差分値よりも値が小さい第2の差分値に応じた第2の値よりも強調の程度が大きいことを特徴とする画像処理装置の制御方法。
【請求項7】
前記強調係数は、拡大率に応じて複数種類用意され、
前記乗算工程では、前記差分画像データを生成するのに用いられた拡大画像データの拡大率に応じた前記強調係数が選択されることを特徴とする請求項5または6に記載の画像処理装置の制御方法。
【請求項8】
前記強調係数は、第1の差分値に応じ第1の拡大率に応じた第1の値の方が、前記第1の差分値に応じ、前記第1の拡大率より拡大率の大きい第2の拡大率に応じた第2の値よりも強調の程度が大きいことを特徴とする請求項7に記載の画像処理装置の制御方法。
【請求項9】
コンピュータに読込ませ実行させることで、前記コンピュータを、請求項1乃至4のいずれか1つに記載の画像処理装置として機能させることを特徴とするコンピュータプログラム。
【請求項10】
請求項9に記載のコンピュータプログラムを格納したことを特徴とするコンピュータ可読記憶媒体。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【公開番号】特開2012−48756(P2012−48756A)
【公開日】平成24年3月8日(2012.3.8)
【国際特許分類】
【出願番号】特願2011−266250(P2011−266250)
【出願日】平成23年12月5日(2011.12.5)
【分割の表示】特願2006−207168(P2006−207168)の分割
【原出願日】平成18年7月28日(2006.7.28)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成24年3月8日(2012.3.8)
【国際特許分類】
【出願日】平成23年12月5日(2011.12.5)
【分割の表示】特願2006−207168(P2006−207168)の分割
【原出願日】平成18年7月28日(2006.7.28)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]