本発明は画像処理装置およびその方法に関し、例えば、画像サイズを出力フレームサイズに変倍する画像処理に関する。
近年、ディジタル画像を扱う装置が広く使用されるようになり、ディジタル画像を出力する手段も広く使用されるようになった。例えば、ディジタルスチルカメラやディジタルビデオカメラによって得られたディジタル画像を表示するディスプレイや、ディジタル画像を印刷するプリンタが挙げられる。
ディジタル画像を出力する際、モニタや紙といった出力媒体の表示可能範囲に合わせた画像サイズの変更が行われる。また、ディジタル画像と出力媒体の表示可能範囲のアスペクト比が異なる場合、出力媒体の表示可能範囲に合わせたフィッティングを行う必要がある(例えば特許文献1参照)。これら画像サイズを変更する変倍処理は大きな処理負荷を必要とし、処理速度の面が問題になるケースがある。
ディジタル画像を変倍する場合、ディジタル画像の保存形態(例えばJPEGフォーマット等)、画像処理装置のシステムの特徴、ハードウェア構成の特徴を活かし、離散的な変倍率だけ(例えば整数倍等)の特殊な変倍方法を使用する方が変倍処理の処理負荷を軽減することができる。さらに、一度離散的な変倍率で変倍した後、簡易な処理で変倍率を微調整する方法がある(例えば特許文献2参照)。
また、拡大に比べて縮小の処理負荷が大きい場合に、離散的な縮小率によって、一旦、出力媒体の表示可能範囲より小さいサイズに縮小し、その後、出力媒体の表示可能範囲に拡大することで、処理負荷を軽減する方法がある。例えば、整数分の一倍の縮小処理を高速に行うことができるハードウェアを搭載する画像処理装置において、ディジタル画像を55%サイズに縮小する場合、一旦、ハードウェアにより画像サイズを1/2(50%縮小)にした後、ソフトウェアによって110%に拡大すれば、55%サイズの縮小画像を高速に得ることができる。
このような方法は、多くの場合、処理負荷を軽減することができるが、ディジタル画像のサイズと出力媒体の表示可能範囲の組み合わせによっては、表示可能範囲へ調整する段階で処理負荷が大きくなる場合や、画質が大幅に劣化する場合がある。例えば、先のハードウェアを搭載した画像処理装置において、ディジタル画像を99%サイズに縮小する場合は、一旦、ハードウェアで1/2(50%縮小)にした後、ソフトウェアで198%に拡大する必要がある。この場合、ディジタル画像は50%に縮小されるため、画像データがもつ情報量が著しく低下し画像劣化につながる。また、本来は微かな縮小(99%縮小)を行うだけでよいが、50%縮小を行って、さらに198%拡大を行うため、ソフトウェアによる演算処理に無駄が生じる。
特開2003-25678号公報(第2頁)
特開平9-50516号公報(第1頁)
本発明は、処理負荷が少ない変倍処理を行うことを目的とする。
さらに、安価なシステムで高速な変倍処理を実現することを他の目的とする。
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
本発明にかかる画像処理は、入力画像および出力フレームのサイズに基づき、離散的な複数の変倍率を設定し、前記入力画像および出力フレームのサイズに基づき、前記複数の変倍率から一つを選択し、前記選択された変倍率に応じて、前記変倍率により前記入力画像を変倍し、前記複数の変倍率に含まれる第一の変倍率によって前記入力画像を変倍した画像サイズを前記出力フレームのサイズで除算した値が所定の閾値未満の場合は前記第一の変倍率を選択し、前記第一の変倍率を前記選択された変倍率として前記入力画像を変倍して、前記変倍後の画像が前記出力フレームからはみ出す画像部分を切り取り、前記除算した値が前記所定の閾値以上になる場合は、前記複数の変倍率から前記第一の変倍率とは異なる第二の変倍率を選択し、前記第二の変倍率を前記選択された変倍率として前記入力画像を変倍して、前記変倍後の画像が前記出力フレームのサイズに合うように、前記変倍後の画像を拡大処理することを特徴とする。
本発明によれば、処理負荷が少ない変倍処理を行うことができる。
また、安価なシステムで高速に変倍処理を実行することができる。
以下、本発明にかかる実施例の画像処理を図面を参照して詳細に説明する。なお、以下では、一例として、フォトダイレクトプリンタにおいて画像を印刷する際に、原画像を印刷フレームサイズに変倍する画像処理を説明する。しかし、本発明の適用は、後述するフォトダイレクトプリンタや原画像を印刷フレームサイズに変倍する画像処理に限定されるわけではなく、変倍処理を行う画像処理およびその画像処理装置に適用可能である。
図1は実施例1のフォトダイレクトプリンタ(以下、単に「プリンタ」と呼ぶ)の画像処理の構成例を示すブロック図である。
その内部にCPUを有するディジタル信号処理プロセッサ(DSP) 1000は、後述する各種制御、輝度信号(RGB)を濃度信号(CMYK)へ変換する処理、変倍処理、ガンマ変換処理、誤差拡散などの中間調処理などを担当する。プリンタエンジン1001は、複数色のカラーインクを用いてカラー画像を印刷するインクジェット方式のプリンタエンジンである。勿論、複数色のトナーを用いてカラー画像を印刷する電子写真方式のプリンタエンジンを搭載しても構わない。
メモリカード、または、画像入力デバイス(カメラ、スキャナ、PCなど)からUSBやIEEE1394などのシリアルバスインタフェイス(入力I/F)1010を介して入力される画像データ(またはJPEG圧縮された画像データ)は、一旦、イメージバッファ1002に格納される。JPEG圧縮された画像データの場合は、JPEG伸長部1011によって伸長およびYCbCr信号からRGB信号に変換される。この後、画像データは、RGBバッファ1003に格納される。
3D3変換部1012は、ルックアップテーブル(3D3テーブル1018)を参照して、RGBバッファ1003から読み出したRGBデータの色空間を標準的なRGB色空間に変換し、RGBバッファ1003に書き戻す。また、3D6変換部1013は、ルックアップテーブル(3D6テーブル1018)を参照して、RGBバッファ1003から読み出した標準的な色空間のRGBデータをCMYK、並びに、LC(明るいシアン)およびLM(明るいマゼンタ)の6色の信号に変換し、CMYKバッファ1004に格納する。
変倍部1014は、CMYKバッファ1004から読み出した画像データの画像サイズを変える変倍処理を行う。なお、変倍部1014には1/n(nは整数)の縮小を行うハードウェアが搭載されている。また、変倍処理は、3D6変換部1013の処理後に限らず、3D6変換部1013の処理前、つまりRGBデータの段階で実行しても構わない。なお、下記の説明で、変倍率Xで変倍(縮小または拡大)するとは、画像の縦および横のサイズをそれぞれX倍に変倍(縮小または拡大)することを表す。つまり、変倍率が2であれば、画像の縦および横のサイズをそれぞれ1/2倍または2倍に変倍した面積が1/4または4倍の画像を生成することを表す。
ガンマ変換部1015は、一次元テーブル1019を参照して、変倍部1014から出力される画像データにガンマ変換などの処理を施す。誤差拡散部1016は、EDバッファ1005を利用して、ガンマ変換部1015から出力される多値の画像データに誤差拡散(ED)処理を施し、C、M、Y、K、LC、LM各色の二値画像データ(または三値や四値のデータ)を生成し、ワークバッファ1006に格納する。
ワークバッファ1006には、各色のインクを吐出する記録ヘッドそれぞれに対応して二値画像データ(記録データ)を記憶する。プリンタI/F 1017は、ワークバッファ1006から各記録ヘッドに対応する記録データを読み出して、プリンタエンジン1001に送り、印刷が実行される。
図2は変倍部1014の変倍処理を説明するブロック図、図3は変倍処理を説明するフローチャートである。
図2に示すように、変倍部1014の変倍処理は、離散的な値を有する二つの以上の変倍率候補を設定する変倍率候補演算部101、設定された変倍率候補から一つを選択する変倍率決定部102、選択された変倍率に応じて処理フローを切り替える処理フロー決定部103、そして実際に変倍を行う変倍実行部104、および、フィッティグを行うフィッティング部105で構成される。
また、図3において、ステップS14は変倍率候補演算部101の処理に相当し、同様に、ステップS15およびS16が変倍率決定部102の、ステップS17が処理フロー決定部103の処理に相当する。また、ステップS18およびS20は、整数分の一の縮小を行うハードウェアで構成される変倍実行部104に処理に相当する。さらに、ステップS19およびS21はフィッティング部105の処理に相当する。
以下、入力のディジタル画像(以下「原画像」と呼ぶ)のアスペクト比と、出力フレームのアスペクト比が同一の場合の変倍処理を説明する。また、画像サイズおよび出力フレームサイズとは縦(副走査方向)または横(主走査方向)のサイズである。この場合、アスペクト比が同じという前提から、縦または横の一方のサイズを使用すればよい。
まず、変倍部1014は、画像データを入力し(S11)、入力画像サイズISおよび出力フレームサイズOSを設定する(S12)。なお、入力画像サイズISは、画像データをイメージバッファ1002に格納した際に画像データのヘッダ情報などからDSP 1000によって取得される。また、出力フレームサイズOSは、プリンタの操作パネル(不図示)で設定されるか、画像入力デバイスから指示される記録紙などの出力媒体のサイズ情報(B5やA4といった情報)に基づきDSP 1000によって取得される。DSP 1000は、取得した入力画像サイズISおよび出力フレームサイズOSを変倍部104に供給する。
次に、変倍部1014は、入力画像サイズISと出力フレームサイズOSを比較して(S13)、IS≦OSであれば、フィッティング部105により入力画像を拡大し(S21)、変倍処理した画像データを出力する(S22)。
一方、IS>OSの場合、変倍部1014は、変倍率候補演算部101により、出力フレームサイズOSに対する入力画像サイズISの比率IS/OS(>1)を算出し、その小数点以下を切り捨てた値を変数SC11に保存する(S14)。続いて、変数SC11の値に1を足した値を変数SC12に保存する(S15)。ここで、変数SC11およびSC12の値は、整数であり、変倍率候補の逆数である。
次に、変倍部1014は、変倍率決定部102により、変数SC11の値を用いて縮小処理した場合の画像サイズIS/SC11を変数TMPに保存する(S16)。前述したように、比率IS/OSの小数点以下を切り捨てた値が変数SC1の値であるから、必ずTMP>OSになる。続いて、処理フロー決定部103により、画像サイズTMPと出力フレームサイズOSの比率TMP/OS(>1)と所定の閾値Thを比較して(S17)、TMP/OS<Thであれば、縮小処理して出力フレームからはみ出す画像部分を切り取る処理に分岐する。なお、閾値Thは、許容する画像の切り取り面積によって設定するが、例えば1.08に設定すると、最大で0.082=0.64%の面積に相当する画像の切り取りを許容することになる。
TMP/OS<Thの場合、変倍部1014は、変倍実行部104により、変数SC11を用いた変倍処理(変倍率1/SC11)を入力画像に施し(S18)、出力フレームからはみ出した画像部分をフィッティング部105によって切り取り(S19)、変倍処理した画像データを出力する(S22)。
他方、TMP/OS≧Thの場合、変倍部1014は、変倍実行部104により、変数SC12を用いた変倍処理(変倍率1/SC12)を行い(S20)、変倍処理結果を、さらに、フィッティング部105によって拡大し(S21)、変倍処理した画像データを出力する(S22)。
例えば、入力画像サイズが4800×6400画素、出力フレームサイズが591×788画素だとすると、変数SC11には4800/591=8が、変数SC12には9が、変数TMPには4800/8=600がそれぞれ格納される。そして、600/591=1.015<Th(=1.08)であるから、変倍実行部104によって入力画像を変倍率1/8に縮小(600×800画素)する。そして、フィッティング部105によって出力フレームからはみ出す画像部分(縦方向の12画素分、横方向の9画素分)を切り取り、出力フレームサイズOSに合った画像サイズにする。
また、入力画像サイズISが例えば4500×6000画素、出力フレームサイズが591×788画素だとすると、変数SC11には4500/591=7が、変数SC12には8が、変数TMPには4500/7=642がそれぞれ格納される。そして、642/591=1.086>Th(=1.08)であるから、変倍実行部104によって入力画像を変倍率1/8に縮小(562×750画素)する。そして、フィッティング部105によって変倍率591/562=1.05に拡大して、出力フレームサイズOSに合った画像サイズにする。
このように、上述した実施例1の構成および処理手順によれば、処理負荷が少なく、必要以上に画質を劣化させない変倍処理を行うことができる。
以下、本発明にかかる実施例2の画像処理を説明する。なお、実施例2において、実施例1と略同様の構成については、同一符号を付して、その詳細説明を省略する。
以下、原画像のアスペクト比と出力フレームのアスペクト比が異なり、縦および横方向ともに、入力画像サイズIX、IYが出力フレームサイズOX、OYよりも大きい場合の変倍処理を実施例2として説明する。また、実施例2の変倍実行部104には、画像サイズを2のべき乗分の一に縮小するハードウェアが搭載されている。
図4は実施例2の変倍処理を説明するフローチャートである。
図4において、ステップS24、S25、S30は変倍率候補演算部101の処理に相当し、同様に、ステップS26〜S29が変倍率決定部102の、ステップS31が処理フロー決定部103の処理に相当する。また、ステップS32およびS33は、2のべき乗分の一の縮小を行うハードウェアで構成される変倍実行部104に処理に相当する。さらに、ステップS34およびS35はフィッティング部105の処理に相当する。
まず、変倍部1014は、画像データを入力し(S21)、入力画像サイズIX、IYおよび出力フレームサイズOX、OYを設定し(S22)、変数n=0を設定する(S23)。
次に、変倍部1014は、変倍率候補演算部101により、入力画像サイズの1/2nを変数SX21(=IX/2n)、SY21(=IY/2n)に格納し(S24)、入力画像サイズの1/2n+1を変数SX22(=IX/2n+1)、SY22(=IY/2n+2)に格納する(S25)。続いて、変倍率決定部105により、変数SX22の値と出力フレームサイズOXを比較して(S26)、SX22<OXであればX(横)方向を基準に変倍率を決定するため、変数SC21に変数SX21の値を代入し、変数OSに出力フレームサイズOXを代入する(S27)。
一方、SX22≧OXの場合、変倍部1014は、変倍率決定部105により、変数SY22の値と出力フレームサイズOYを比較して(S28)、SY22<OYであればY(縦)方向を基準に変倍率を決定するため、変数SC21に変数SY21の値を代入し、変数OSに出力フレームサイズOYを代入する(S29)。
他方、SX22≧OXかつSY22≧OYの場合、変倍部1014は、変倍率候補演算部101により、変数nをインクリメントし(S30)、処理をステップS24に戻す。変数nのインクリメントは、SX22<OXまたはSY22<OYが成立するまで繰り返す。
次に、変倍部1014は、処理フロー決定部103により、変数SC21の値と変数OSの値の比と閾値Thを比較して(S31)、SC21/OS<Thの場合は、変倍実行部104により、変倍率1/2nの変倍処理を入力画像に施し(S32)、出力フレームからはみ出す画像部分をフィッティング部105によって切り取って画像サイズを出力フレームと同サイズかつ同アスペクト比にし(S35)、変倍処理した画像データを出力する(S36)。
他方、SC21/OS≧Thの場合、変倍部1014は、変倍実行部104により、変倍率1/2n+1の変倍処理を入力画像に施し(S33)、フィッティング部105により、変数OSの値と変数SC21の値を同値にするような変倍率で拡大を行い(S34)、出力フレームからはみ出した画像部分をフィッティング部105によって切り取って画像サイズを出力フレームと同サイズかつ同アスペクト比にし(S35)、変倍処理した画像データを出力する(S36)。
例えば、入力画像サイズが4800×6400画素で、出力フレームサイズが例えば580×788画素だとすると、n=3の場合に得られる変数SX22の値は4800/23+1=300、変数SY22の値は6400/23+1=400になり、SY21<OXであるから変倍のX(横)方向を基準とし、変数SC21には4800/23=600が代入され、変数OSにはOY=500が代入される。そして、SC21/OS=600/580=1.03<TH(=1.08)であるから、変倍実行部104によって入力画像を変倍率1/23に縮小(600×800画素)にする。そして、フィッティング部105によって出力フレームからはみ出す画像部分(縦方向の12画素分、横方向の20画素分)を切り取り、出力フレームサイズOX、OYに合った画像サイズにする。
以下、本発明にかかる実施例3の画像処理を説明する。なお、実施例3において、実施例1、2と略同様の構成については、同一符号を付して、その詳細説明を省略する。
写真ライクな効果を得るために縁なし印刷を行うことがあるが、縁なし印刷を実現するには、印刷メディアサイズより出力フレームサイズを大きく取って印刷を行うことで、印刷メディアの余白部をなくす手法をとることがある。以下、本発明を縁なし印刷に適用する場合を実施例3として説明する。
以下では、入力画像サイズに対して出力フレームサイズが小さく、入力画像と出力フレームのアスペクト比が同一の場合を説明するが、当然、入力画像サイズに対して出力フレームサイズが大きい場合にも応用可能である。また、実施例3の変倍実行部104には、画像サイズを2のべき乗分の一に縮小するハードウェアが搭載されている。
図5は実施例3の変倍処理を説明するフローチャートである。
図5において、ステップS44、S45、S47は変倍率候補演算部101の処理に相当し、同様に、ステップS46が変倍率決定部102の、ステップS48およびS49が処理フロー決定部103の処理に相当する。また、ステップS50およびS51は、2のべき乗分の一の縮小を行うハードウェアで構成される変倍実行部104に処理に相当する。さらに、ステップS52はフィッティング部105の処理に相当する。
まず、変倍部1014は、画像データを入力し(S41)、入力画像サイズISおよび出力フレームサイズOSを設定し(S42)、変数n=0を設定する(S43)。なお、アスペクト比が同じという前提から、入力画像サイズISおよび出力フレームサイズOSとして、縦または横の一方のサイズを使用すればよい。
次に、変倍部1014は、変倍率候補演算部101により、入力画像サイズの1/2nを変数SC31(=IS/2n)に格納し(S44)、入力画像サイズの1/2n+1を変数SC32(=IS/2n+1)に格納する(S45)。続いて、変倍率決定部105により、変数SC32の値と出力フレームサイズOSを比較して(S46)、SC32≧OSの場合は、変倍率候補演算部101により、変数nをインクリメントし(S47)、処理をステップS34に戻す。変数nのインクリメントは、SC32<OXが成立するまで繰り返す。
一方、SC32<OSであれば、変倍部1014は、処理フロー決定部103により、DSP 1000のROMなどに格納されているはみ出し量データベース1020から印刷メディアサイズ、印刷モードに対応して記録されている縁なし印刷可能な閾値の最小値および最大値を取得し(S48)、取得した閾値ThminおよびThmaxと、変数SC31の値と変数OSの値の比を比較して(S49)、縁なし印刷が可能か否かを判定する。ここで、閾値Thminは縁なし印刷が可能な最小のはみ出し量に相当し、閾値Thmaxは縁なし印刷が可能な最大のはみ出し量に相当する。図6ははみ出し量データベース1020に記録されたデータの一例を示す図である。
SC31/OSが縁なし印刷が可能な範囲にある(Thmin≦SC31/OS≦Th)場合、変倍部1014は、変倍実行部104により、変倍率1/2nの変倍処理を入力画像に施し(S50)、変倍処理した画像データを出力する(S53)。
また、SC31/OSが縁なし印刷が可能な範囲外にある(SC31/OS≦ThminまたはThmax≦SC31/OS)場合、変倍部1014は、変倍実行部104により変倍率1/2n+1の変倍処理を入力画像に施し(S51)、フィッティング部105により変倍率OS/SC31×Thminの拡大処理を入力画像に施し(S52)、画像サイズを縁なし印刷が可能な範囲に収めた画像データを出力する(S53)。
例えば、5100×3570画素の原稿画像を、L判(127mm×89mm)の印刷メディアサイズに高画質モードで印刷する場合に、プリンタが、L判に高画質モードで印刷するために、2500×1750画素の画像データを必要とすると仮定する。入力画像サイズと、プリンタが必要とする画素サイズから、入力画像サイズIS=5100、出力フレームサイズOS=2500になる。また、閾値は、図6に示すように、L判かつ高画質からThmin=1.01、Thmax=1.07である。
n=1において、変数SC31の値は5100/2=2550、変数SC32の値は5100/21+1=1275になり、SC32<OS(=2500)かつSC31/OS=2550/2500=1.02になる。従って、SC31/OSはThmin(=1.01)より大きく、かつ、Thmax(=1.07)未満であるから、変倍実行部104によって入力画像を変倍率1/2に縮小(2550×1785画素)にする。出力される画像データは2550×1785画素になり、出力フレームサイズより若干大きいが、縁なし印刷のはみ出し許容範囲であるため、フィッティング処理を行う必要はない。
なお、図6に示すはみ出し量データベース1020の項目や値は一例であり、プリンタの機能および特性に応じて設定されるものである。
以下、本発明にかかる実施例4の画像処理を説明する。なお、実施例4において、実施例1〜3と略同様の構成については、同一符号を付して、その詳細説明を省略する。
図2は、変倍部1014の各構成が連続的に処理を行うように記載したが、必ずしも各構成が連続処理を行う必要はない。例えば、JPEG伸長部1011で圧縮された画像データを伸長する際に、出力フレームサイズよりも小さくなるように1/2nサイズに縮小し、その後、変倍部1014において拡大することで、画像サイズを出力フレームサイズに合わせてもよい。実施例4では、アスペクト比が出力フレームと異なる入力画像を、出力フレームに余白が残らないように出力する場合に、変倍処理とフィッティング処理を分散して行う例を説明する。
以下、JPEG伸長部1011と変倍部1014の組み合わせで変倍処理を行う場合の一例を説明する。つまり、図2に示す変倍率候補演算部101、変倍率決定部102、処理フロー決定部103および変倍実行部104の処理をJPEG処理部1011が実行し、フィッティング部105の処理を変倍部1014が実行する。図7はJPEG伸長部1011が実行する縮小処理の一例を示すフローチャート、図8は変倍部1014が実行するフィッティング処理の一例を示すフローチャートである。なお、JPEG伸長部1011は、JPEGデータを伸長する際に、2のべき乗分の一の縮小を行ってRGB画像データを出力する。
図7において、ステップS64、S65、S67は変倍率候補演算部101の処理に相当し、同様に、ステップS66が変倍率決定部102の、ステップS63、S68が処理フロー決定部103の処理に相当する。また、ステップS70およびS69は、2のべき乗分の一の縮小を行う変倍実行部104に処理に相当する。また、図8において、ステップS83、S84が処理フロー決定部103の処理に相当し、ステップS85〜S87がフィッティング部105の処理に相当する。
まず、JPEG伸長部1011は、入力画像サイズIX、IYおよび出力フレームサイズOX、OYを設定し(S61)、変数n=0を設定する(S62)。
次に、JPEG伸長部1011は、入力画像サイズIX、IYと出力フレームサイズOX、OYをそれぞれ比較して(S63)、入力画像の縦横の一方が出力フレームよりも大きい(つまり、OX<IXまたはOY<IY)場合は処理をステップS64に進め、そうでなければ処理をステップS69に進める。
OX<IXまたはOY<IYの場合、JPEG伸長部1011は、変数SC41に1/2nを格納し(S64)、変数SC42に1/2n+1を格納する(S65)。続いて、変数SC42の値で変倍した場合の、画像の横サイズIX×SC42が出力フレームの横サイズOXよりも小さいか、または、画像の縦サイズIY×SC42が出力フレームの縦サイズOYよりも小さくいかを判定する(S66)。縦横のどちらかが小さい(つまり、OX>IX×SC42またはOY>IY×SC42)場合は処理をステップS68に進め、そうでない場合は変数nをインクリメントし(S67)、処理をステップS64に戻す。変数nのインクリメントは、OX>IX×SC42またはOY>IY×SC42が成立するまで繰り返す。
次に、JPEG伸長部1011は、入力画像を変数SC41の値で縮小した場合の、横および縦のサイズの比率IX×SC41/OXおよびIY×SC41/OYと、閾値Thを比較して(S68)、IX×SC41/OX<ThまたはIY×SC41/OY<Thの場合は変数CPに2nを格納する(S69)。また、ステップS63の判定でOX<IXまたはOY<IYだった場合も変数CPに2nを格納する(S69)が、この場合はn=0であるから変数CP=1になる。
一方、IX×SC41/OX<ThまたはIY×SC41/OY<Thを満たさない場合、JPEG伸長部1011は、変数CPに2n+1を格納する(S70)。
次に、JPEG伸長部1011は、JPEGデータをイメージバッファ1002から入力し(S71)、縦横の画素数が1/CPになるように画素を間引いてJPEGデータを伸長し、RGB画像データをRGBバッファ1003に出力する(S72)。なお、JPEGフォーマットの特性上、変数CPの値が2のべき乗であれば単純な処理で画像を縮小することができる。
他方、変倍部1014は、JPEG伸長部1011によって縮小処理された画像データを入力し(S81)、
入力画像サイズIX、IYおよび出力フレームサイズOX、OYを設定する(S82)。続いて、入力画像サイズIXおよびIYと、出力フレームサイズOXおよびOYをそれぞれ比較し(S83)、OX<IXかつOY<IY、つまり、画像の縦横とも出力フレームサイズより大きい場合は、既にJPEG伸長部1011によって、出力フレームからはみ出す部分画像が切り取りの許容範囲内と判定されている。従って、この場合は、出力フレームからはみ出す画像部分を切り取って画像サイズを出力フレームと同サイズかつ同アスペクト比にし(S87)、変倍処理した画像データを出力する(S88)。
また、OX>IXまたはOY>IYの場合、変倍部1014は、出力フレームに余白が残らないような最小の拡大率を選択する。つまり、OX/IXとOY/IYを比較して(S84)、OX/IX>OY/IYであれば変倍率OY/IYの変倍処理を入力画像に施し(S85)、OX/IX≦OY/IYであれば変倍率OX/IXの変倍処理を入力画像に施す(S86)。続いて、出力フレームからはみ出す画像部分を切り取って画像サイズを出力フレームと同サイズかつ同アスペクト比にし(S87)、変倍処理した画像データを出力する(S88)。
例えば、入力画像サイズが4800×6400画素で、出力フレームサイズが例えば580×788画素だとすると、n=3の場合に得られる変数SC42の値は1/23+1=1/16になり、OX>IX×SC42かつOY>IY×SC42(OX=580、IX×SC42=4800/16=300、OY=788、IY×SC42=6400/16=400)の条件を満足する。従って、IX×SC41/OX=4800/23/580=1.03、IY×SC41/OY=6400/23/788=1.02になり、CP=23=8がセットされ、JPEG伸長部1011は縦横のサイズが1/8になるように画素を間引いたRGB画像データ(600×800画素)を出力する。
一方、変倍部1014は、入力画像サイズと出力フレームサイズの関係がOX<IXかつOY<IYを満たすから、出力フレームからはみ出す画像部分を切り取って画像サイズを出力フレームと同サイズかつ同アスペクト比にした画像データを出力する。
以上、本実施例において説明したように、離散的な変倍率によって一度画像を変倍した後にフィッティングを行う際、画像サイズと出力媒体における画像表示範囲のサイズを考慮し、画像データの劣化が少なくなるような変倍率を選択し、変倍率に応じて最適なフィッティング手段を選択することで、安定して処理負荷が少なく、必要以上に画質が劣化しない変倍処理をアスペクト比が出力フレームと異なる入力画像を、出力フレームに余白が残らないように出力することが可能となる。
[変形例]
上記では、変倍率候補演算部101および変倍率決定部102により整数分の一の縮小率を設定して変倍処理を行う例、2の倍数分の一の縮小率を設定して変倍処理を行う例を説明したが、変倍実行部104の構成に応じて様々な縮小率を用いることができる。また、整数倍の拡大、2のべき乗倍拡大などを用いることで、原画像サイズが印刷フレームサイズより小さい場合の拡大処理にも対応可能である。また、幾つかの変倍法を組み合わせることで、複数の変倍率候補を求める方法も可能で、上記では、二つの変倍率候補を比較する例を説明したが、三つ以上の候補を比較することも可能である。
また、切り取る画像が許容範囲か否かを、変倍後の画像サイズTMPと出力フレームサイズOSの比に基づき判断する例を説明し、その閾値Thとして1.08を挙げた。この閾値は、例えば、画像中の特徴量を抽出し、切り取られる画像部分の特徴量によって閾値を決定する方法や、ユーザの操作によって閾値を決定する方法などが挙げられる。
また、縮小処理によって出力フレームサイズより小さくなった画像を拡大して、出力フレームサイズにフィッティングする例を説明したが、その際に用いる拡大方法は単純拡大、線形拡大など、様々な拡大方法を利用することができる。
また、変倍率候補演算部101が設定する離散的な複数の変倍率は、整数、二のべき乗、JPEGのMCU数を分母にもつ数、画像サイズに応じた数など、ディジタル画像の保存形態やシステムの特性などを考慮した、処理負荷を軽減可能な変倍率にすればよい。
また、フィッティング部105は、画像の拡大または縮小、出力フレームからはみ出す画像部分の切り取りを行うが、画像の縦および横方向にはみ出す場合も、切り取りを行う。
このように、画像サイズと出力フレームサイズ(出力媒体の画像表示範囲)を考慮して、離散的な複数の変倍率を設定し、画像データの劣化が少なくなるように変倍率を選択して変倍を行った後、変倍率に応じたフィッティングを行うことで、処理負荷が小さく、必要以上に画質を劣化させない変倍処理を行うことができる。
[他の実施例]
なお、本発明は、複数の機器(例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機、ファクシミリ装置など)に適用してもよい。
また、本発明の目的は、前述した実施例の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体(または記録媒体)を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施例の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれることは言うまでもない。
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
実施例1のフォトダイレクトプリンタの画像処理の構成例を示すブロック図、
変倍部の変倍処理を説明するブロック図、
変倍処理を説明するフローチャート、
実施例2の変倍処理を説明するフローチャート、
実施例3の変倍処理を説明するフローチャート、
はみ出し量データベースに記録されたデータの一例を示す図、
実施例4において、JPEG伸長部が実行する縮小処理の一例を示すフローチャート、
変倍部が実行するフィッティング処理の一例を示すフローチャートである。