(57)【要約】【課題】  少ないメモリ容量で、画像を拡大する処理を高速に実行することができる画像拡大装置、画像拡大方法、画像拡大プログラムおよびそのプログラムを記録した記録媒体を提供すること。【解決手段】  イメージ画像Ｆを整数倍（Ｍ１倍）に拡大した後、実数倍（Ｍ２倍）に拡大する処理において、整数倍の拡大を行うときには、ソースデータとしてシステムメモリＳ−ＭＥＭに記憶されているイメージ画像Ｆをバイリニア法を用いて整数倍に拡大し、拡大したイメージ画像ＧＢのソースデータをシステムメモリＳ−ＭＥＭに記憶する。実数倍の拡大を行うときには、イメージ画像ＧＢのソースデータを読み出して、イメージ画像ＧＢを実数倍に拡大したイメージ画像Ｈの画素値をニアレストネイバー法により補間し、バンドバッファＢ−ＢＵＦに記憶することにより、イメージ画像ＨのＲＧＢデータを生成する。【選択図】      図１２
2007043461.tif 000002
【特許請求の範囲】
【請求項１】
印刷ページに含まれる印刷対象画像を拡大する画像拡大装置であって、
前記印刷対象画像を拡大するための第１の倍率および第２の倍率を設定する倍率設定部と、
前記第１の倍率に応じて前記印刷対象画像を拡大することにより中間拡大画像を生成し、前記中間拡大画像および前記印刷ページにおける中間拡大画像の位置を表す中間コードデータを登録する中間コード登録部と、
前記中間拡大画像を前記第２の倍率に応じて拡大したときの各画素について、前記中間コードデータに基づいて補間した画素値を、前記印刷ページに対応するビットマップ画像の画素値とすることにより、前記中間コードデータを前記ビットマップ画像に展開する中間コード展開部と、を備えることを特徴とする画像拡大装置。
【請求項２】
請求項１に記載の画像拡大装置において、
前記倍率設定部は、前記印刷対象画像を前記拡大画像に拡大する倍率を拡大倍率として、前記拡大倍率の整数部分の値、または前記拡大倍率に最も近い整数値を前記第１の倍率に、前記拡大倍率を前記第１の倍率で除算した実数値を第２の倍率に設定し、
前記中間コード展開部は、前記中間拡大画像を第２の倍率に応じて拡大したときのビットマップ画像の画素に対して周辺に位置する、前記中間拡大画像の１つの画素を用いて、当該ビットマップ画像の画素を補間することを特徴とする画像拡大装置。
【請求項３】
請求項２に記載の画像拡大装置において、
前記印刷対象画像がビットマップ画像である場合に、
前記中間コード登録部は、前記中間拡大画像の画素に対して周辺に位置する、前記印刷対象画像の複数の画素を用いて、当該中間拡大画像の画素を補間することを特徴とする画像拡大装置。
【請求項４】
印刷ページに含まれる印刷対象画像を拡大する画像拡大装置であって、
前記印刷対象画像を拡大するための拡大倍率を設定する倍率設定部と、
前記印刷対象画像および前記印刷ページにおける印刷対象画像の位置を表す中間コードデータを登録する中間コード登録部と、
前記印刷対象画像を前記拡大倍率で拡大したときの各画素について、前記中間コードデータに基づいて補間した画素値を、前記印刷ページに対応するビットマップ画像の画素値とすることにより、前記中間コードデータを前記ビットマップ画像に展開する中間コード展開部と、を備えることを特徴とする画像拡大装置。
【請求項５】
印刷ページに含まれる印刷対象画像を拡大する画像拡大方法であって、
前記印刷対象画像を拡大するための第１の倍率および第２の倍率を設定する倍率設定工程と、
前記第１の倍率に応じて前記印刷対象画像を拡大することにより中間拡大画像を生成し、前記中間拡大画像および前記印刷ページにおける中間拡大画像の位置を表す中間コードデータを登録する中間コード登録工程と、
前記中間拡大画像を前記第２の倍率に応じて拡大したときの各画素について、前記中間コードデータに基づいて補間した画素値を、前記印刷ページに対応するビットマップ画像の画素値とすることにより、前記中間コードデータを前記ビットマップ画像に展開する中間コード展開工程と、を備えることを特徴とする画像拡大方法。
【請求項６】
印刷ページに含まれる印刷対象画像を拡大する画像拡大プログラムであって、
コンピュータに、
前記印刷対象画像を拡大するための第１の倍率および第２の倍率を設定する倍率設定工程、
前記第１の倍率に応じて前記印刷対象画像を拡大することにより中間拡大画像を生成し、前記中間拡大画像および前記印刷ページにおける中間拡大画像の位置を表す中間コードデータを登録する中間コード登録工程、
前記中間拡大画像を前記第２の倍率に応じて拡大したときの各画素について、前記中間コードデータに基づいて補間した画素値を、前記印刷ページに対応するビットマップ画像の画素値とすることにより、前記中間コードデータを前記ビットマップ画像に展開する中間コード展開工程、を実行させることを特徴とする画像拡大プログラム。
【請求項７】
請求項６に記載の画像拡大プログラムを記録したコンピュータ読取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
画像を構成する画素数を増加させることにより、画像を拡大する画像拡大装置、画像拡大方法、画像拡大プログラムおよびそのプログラムを記録した記録媒体に関する。
【背景技術】
【０００２】
従来、画像を拡大する場合には、拡大して画素数が増加した画像の画素値を、バイリニア法（共１次内挿法）、バイキュービック法（３次畳み込み内挿法）、またはニアレストネイバー法（最近隣内挿法）などを用いて補間することにより行われる。バイリニア法では、補間対象の画素に対して周辺にある拡大前の４つの画素の画素値を用いて線形補間し、バイキュービック法では、周辺にある拡大前の１６の画素の画素値を用いて補間する。ニアレストネイバー法では、補間対象の画素に対して最も近い１つの画素の画素値を、当該補間対象の画素の画素値とすることにより補間する。バイリニア法、バイキュービック法によれば、複数の画素の画素値を用いて補間しているので、ニアレストネイバー法に比べてより高画質な画像を得ることができる。一方、ニアレストネイバーによれば、バイリニア法、バイキュービック法に比べて演算量を少なくすることができるので、より高速に処理することができる。
【０００３】
そこで、バイリニア法、バイキュービック法、またはニアレストネイバー法を適宜使い分けることにより、画質と処理速度を両立させることが行われている。例えば、特許文献１に記載の技術では、拡大した画像の画素ごとに補間方法を使い分けている。特許文献２に記載の技術では、画像データのうち視覚の感度が高い輝度成分と視覚の感度が低い色差成分とで補間方法を使い分けている。
【０００４】
また、特許文献３に記載の技術では、バイリニア法により縮小した画像に対して、さらにニアレストネイバ−法により拡大する処理を行っている。
【０００５】
【特許文献１】特開平１１−２９８７２１号公報
【特許文献２】特開２０００−１５１９８９号公報
【特許文献３】特開２００３−２８８１８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１または特許文献２に記載の技術では、バイリニア法、バイキュービック法を用いたときの演算量を減少させることはできない。特に、画像を拡大する倍率が実数倍であれば、バイリニア法、バイキュービック法の処理には膨大な演算量が必要となり、処理時間が長くなってしまう。
【０００７】
また、特許文献３に示すように、バイリニア法により変換した画像をさらにニアレストネイバ−法により拡大するようにして、画像の大きさを２段階に変換することもある。このとき、ニアレストネイバ−法により拡大した最終画像を記憶するためのメモリ領域に加えて、バイリニア法により拡大した画像を一時記憶しておくためのメモリ領域が必要になり、使用するメモリ領域が大きくなってしまう。
【０００８】
そこで、本発明は、少ないメモリ容量で、画像を拡大する処理を高速に実行することができる画像拡大装置、画像拡大方法、画像拡大プログラムおよびそのプログラムを記録した記録媒体を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成する本発明の画像拡大装置は、印刷ページに含まれる印刷対象画像を拡大する画像拡大装置であって、印刷対象画像を拡大するための第１の倍率および第２の倍率を設定する倍率設定部と、第１の倍率に応じて印刷対象画像を拡大することにより中間拡大画像を生成し、中間拡大画像および印刷ページにおける中間拡大画像の位置を表す中間コードデータを登録する中間コード登録部と、中間拡大画像を第２の倍率に応じて拡大したときの各画素について、中間コードデータに基づいて補間した画素値を、印刷ページに対応するビットマップ画像の画素値とすることにより、中間コードデータをビットマップ画像に展開する中間コード展開部と、を備えることを特徴とする。
【００１０】
この構成によれば、中間コード登録部は、第１の倍率に応じて印刷対象画像を拡大することにより中間拡大画像を生成し、中間拡大画像および印刷ページにおける中間拡大画像の位置を表す中間コードデータを登録する。中間コード展開部は、中間拡大画像を第２の倍率に応じて拡大したときの各画素について、中間コードデータに基づいて補間した画素値を、印刷ページに対応するビットマップ画像の画素値として展開する。中間拡大画像を第２の倍率に応じて拡大した画像を生成することなく、拡大した印刷対象画像を含むビットマップ画像に展開することができるので、中間拡大画像を第２の倍率に応じて拡大した画像を記憶しておくためのメモリが不要になり、処理に要するメモリ容量を少なくすることができる。また、中間拡大画像を第２の倍率に応じて拡大した画像をメモリに格納することなく展開しているので、より高速に処理することができる。
【００１１】
ここで、倍率設定部は、印刷対象画像を拡大画像に拡大する倍率を拡大倍率として、拡大倍率の整数部分の値、または拡大倍率に最も近い整数値を第１の倍率に、拡大倍率を第１の倍率で除算した実数値を第２の倍率に設定し、中間コード展開部は、中間拡大画像を第２の倍率に応じて拡大したときのビットマップ画像の画素に対して周辺に位置する、中間拡大画像の１つの画素を用いて、当該ビットマップ画像の画素を補間することが好ましい。
【００１２】
このようにすれば、実数倍の拡大については、１つの画素を用いて補間しているので演算量が少なくなり、処理全体としてより高速に処理することができる。なお、１つの画素を用いて補間する方法としては、ニアレストネイバー法を用いることがより望ましい。
【００１３】
ここで、印刷対象画像がビットマップ画像である場合に、中間コード登録部は、中間拡大画像の画素に対して周辺に位置する、印刷対象画像の複数の画素を用いて、当該中間拡大画像の画素を補間することが好ましい。
【００１４】
このようにすれば、中間コード登録部が行う整数倍の拡大については、複数の画素を用いて補間するので精度良く補間することができる。なお、複数の画素を用いて補間する方法としては、バイリニア法やバイキュービック法を用いることがより望ましい。
【００１５】
本発明のもう１つの画像拡大装置は、印刷ページに含まれる印刷対象画像を拡大する画像拡大装置であって、印刷対象画像を拡大するための拡大倍率を設定する倍率設定部と、印刷対象画像および印刷ページにおける印刷対象画像の位置を表す中間コードデータを登録する中間コード登録部と、印刷対象画像を拡大倍率で拡大したときの各画素について、中間コードデータに基づいて補間した画素値を、印刷ページに対応するビットマップ画像の画素値とすることにより、中間コードデータをビットマップ画像に展開する中間コード展開部と、を備えることを特徴とする。
【００１６】
この構成によれば、中間コード登録部は、印刷対象画像および印刷ページにおける印刷対象画像の位置を表す中間コードデータを登録する。中間コード展開部は、印刷対象画像を拡大倍率で拡大した拡大画像の各画素について、中間コードデータに基づいて補間した画素値を、印刷ページに対応する画像の画素値として展開するので、印刷対象画像を拡大倍率に応じて拡大した拡大画像を生成することなく、印刷ページに対応するビットマップ画像に展開することができる。したがって、処理に要するメモリ容量を少なくすることができると共に、高速に処理することができる。
【００１７】
また、本発明は、方法の発明とすることもできる。すなわち、本発明の画像拡大方法は、印刷対象画像を拡大するための第１の倍率および第２の倍率を設定する倍率設定工程と、第１の倍率に応じて印刷対象画像を拡大することにより中間拡大画像を生成し、中間拡大画像および印刷ページにおける中間拡大画像の位置を表す中間コードデータを登録する中間コード登録工程と、中間拡大画像を第２の倍率に応じて拡大したときの各画素について、中間コードデータに基づいて補間した画素値を、印刷ページに対応するビットマップ画像の画素値とすることにより、中間コードデータをビットマップ画像に展開する中間コード展開工程と、を備えることを特徴とする。
【００１８】
さらに、本発明は、プログラムまたはそのプログラムを記憶した記録媒体とすることもできる。すなわち、本発明の画像拡大プログラムは、印刷ページに含まれる印刷対象画像を拡大する画像拡大プログラムであって、コンピュータに、印刷対象画像を拡大するための第１の倍率および第２の倍率を設定する倍率設定工程、第１の倍率に応じて印刷対象画像を拡大することにより中間拡大画像を生成し、中間拡大画像および印刷ページにおける中間拡大画像の位置を表す中間コードデータを登録する中間コード登録工程、中間拡大画像を第２の倍率に応じて拡大したときの各画素について、中間コードデータに基づいて補間した画素値を、印刷ページに対応するビットマップ画像の画素値とすることにより、中間コードデータをビットマップ画像に展開する中間コード展開工程、を実行させることを特徴とする。また、このプログラムを記録した記録媒体としては、フレキシブルディスクやＣＤ−ＲＯＭ、ＩＣカード、パンチカードなど、コンピュータが読み取り可能な種々の媒体を利用することができる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明に係る一実施形態について図面を参照して説明する。
【００２０】
図１は、本実施形態に係る印刷システムの構成を示した図である。ホストコンピュータ１は、プリンタドライバ（図示なし）より、ＰＤＬなどの所定のプリンタ制御言語で記述された印刷対象データや、印刷対象データの画像を拡大するための倍率情報などを含む印刷ジョブデータをプリンタ２に送信する。印刷ジョブデータを送信するホストコンピュータ１としては、パーソナルコンピュータの他、デジタルスチルカメラ、携帯情報端末、携帯電話など様々な装置を挙げることができる。
【００２１】
プリンタ２は、いわゆるプリンタページモードで印刷することができるカラーレーザプリンタである。プリンタ２は、画像拡大装置１００と、プリントエンジン２００とを備えている。画像拡大装置１００は、所定のプリンタ制御言語で記述された印刷対象データを、印刷可能なＣＭＹＫ（シアン、マゼンタ、イエロー、ブラック）の各色ドットを表す印刷データに変換し、プリントエンジン２００に供給する。プリントエンジン２００は、印刷データに従って印刷用紙などの記録媒体にＣＭＹＫ各色のドットを形成することにより印刷を行う。
【００２２】
次に、画像拡大装置１００について説明する。図１に示すように、画像拡大装置１００は、言語解釈部１０、倍率設定部１１、中間コードデータ登録部１２、中間コードデータ展開部１３、色変換部１４、階調数変換部１５、および圧縮部１６を備えている。
【００２３】
言語解釈部１０は、ホストコンピュータ１から送信された印刷ジョブデータを解釈して、印刷対象画像を表す印刷対象データを取得する。また、言語解釈部１０は、印刷ジョブデータから印刷対象画像を拡大する拡大倍率も取得する。
【００２４】
倍率設定部１１は、取得した拡大倍率に基づき、印刷対象画像を後述するように２段階に拡大するための２つの倍率を設定する。設定する倍率は整数値の倍率、および実数値の倍率の２つであり、次式に従って整数倍の倍率（第１の倍率）Ｍ１および実数倍の倍率（第２の倍率）Ｍ２を設定する。ここで、Ｍは印刷対象画像の拡大倍率、ｉｎｔ（）は、（）内の値を超えない最大の整数値を返す関数である。
Ｍ１＝ｉｎｔ（Ｍ）  （ただし、Ｍ＞１）  …（１）
Ｍ２＝Ｍ／Ｍ１  …（２）
【００２５】
例えば、拡大倍率Ｍが「２．５」であれば、整数倍の倍率Ｍ１は「２」、実数倍の倍率Ｍ２は「１．２５」となる。整数倍の倍率Ｍ１に応じた拡大および実数倍の倍率Ｍ２に応じて拡大することにより、拡大倍率Ｍに応じた拡大となる２つの倍率が設定される。なお、本実施形態にいう倍率とは、拡大する前後での単位長さあたりに含まれる画素数の比をいう。
【００２６】
次に、中間コードデータ登録部１２が行う中間コードデータ登録処理について説明する。中間コードデータ登録処理では、まず、印刷対象データを解釈することにより、印刷ページのどこの領域にどのような画像があるかを検出する。そして、印刷対象データが表す印刷対象画像を整数倍の倍率Ｍ１に応じて、印刷対象画像を拡大する。図２は、中間コードデータ登録部１２が行う処理を説明する図である。印刷対象データが表す印刷ページには、図形、文字、イメージなどの印刷対象画像が含まれているが、以下、印刷対象画像をイメージとして説明する。図２（ａ）には、拡大前のビットマップ画像であるイメージ画像Ｆを含む印刷ページが示されている。
【００２７】
イメージ画像Ｆを整数倍の倍率Ｍ１に応じて拡大すると、図２（ｂ）に示すように、整数倍に拡大したイメージ画像（中間拡大画像）Ｇが生成される。
【００２８】
次に、整数倍に拡大したイメージ画像Ｇを、複数のバンドに分割して、各バンドを中間コードで表した中間コードデータを生成する処理を行う。中間コードデータ登録部１２は、まず、図２（ｃ）に示すように、印刷ページの領域を、所定のバンド高さで分割する。図２（ｃ）の例では、印刷ページを５つのバンド０〜４に分割している。各バンドには、各バンド領域に合わせてイメージ画像Ｇを分割したイメージ画像ＧＢが含まれている。
【００２９】
中間コードデータは、各バンドに含まれるオブジェクトの位置、領域などの情報を含んたデータである。図３は、中間コードデータのデータ構造を示している。図３に示すように、中間コードデータは、ヘッダ部分と中間コードデータ部分とで構成される。ヘッダ部分には、分割した各バンドに対応するバンド番号などの情報が含まれる。
【００３０】
中間コードデータ部分には、そのバンドに含まれるオブジェクトごとにオブジェクトデータが含まれる。１つのオブジェクトには、例えば、オブジェクトの種別を示す情報（オブジェクト種別情報：イメージ画像、文字などの情報）、オブジェクトの位置情報として座標（ｘ，ｙ）およびサイズ（ｗ，ｈ）等の種々の情報が含まれる。また、オブジェクト自体の画像データは、オブジェクトのソースデータへのポインタＰｓとして中間コードデータ部分に含まれている。ソースデータは、オブジェクトを表すビットマップデータであり、各画素ごとにＲＧＢ各色の画素値が与えられている。したがって、中間コードデータのポインタを参照してソースデータを読み出すことにより、イメージ画像を表すＲＧＢ形式のビットマップデータを得ることができる。
【００３１】
図４は、中間コードデータに含まれるオブジェクトの情報を説明するための図である。図４では、図２（ｃ）に示したバンド０を示している。図４に示すように、バンド０に含まれるイメージ画像ＧＢの座標は、バンドの左上を原点として、原点から右向きをｘ方向、下向きにｙ方向を定めた座標系に従って決められている。したがって、図４では、イメージ画像ＧＢの左上の位置を原点からの画素数で表した座標（ｘ，ｙ）がイメージ画像ＧＢの座標となる。また、図４に示すように、ｘ方向の画素数である幅ｗ、およびｙ方向の画素数である高さｈがイメージ画像ＧＢのサイズとなる。すなわち、中間コードデータでは、イメージ画像の座標およびサイズにより、描画するイメージ画像の位置を表現している。中間コードデータ登録部１２は、イメージ画像ＧＢの座標（ｘ，ｙ）、サイズ（ｗ，ｈ）の値、およびイメージ画像ＧＢのソースデータへのポインタＰｓを含む中間コードデータを生成する。
【００３２】
なお、図２の例では、印刷ページに含まれるイメージ画像Ｆは１つとしているが、オブジェクトであるイメージ画像Ｆの数はこれに限られない。印刷ページに複数のオブジェクトが含まれている場合には、図３に示すように、中間コードデータにはバンドごとに複数のオブジェクトについてのパラメータが記録される。
【００３３】
中間コードデータ展開部１３は、中間コードデータに含まれるイメージ画像ＧＢを実数倍の倍率Ｍ２に応じて拡大することにより、イメージ画像Ｆを拡大倍率Ｍに応じて拡大したイメージ画像を含んだＲＧＢデータに展開する。ここで、ＲＧＢデータは、イメージ画像が存在しない領域については、例えば初期値として「０」の画素値を有することにより、バンドごとの印刷ページに対応するビットマップ画像のビットマップデータとなっている。中間コードデータ展開部１３が行う処理（以下、中間コード展開処理という）について詳細は後述する。なお、展開するデータは、ＲＧＢ形式のデータに限られることなく、モノクロデータ、ＣＭＹＫデータなど他の色表現形式のデータであってもよい。
【００３４】
色変換部１４は、展開されたＲＧＢデータに色変換を行い、プリントエンジン２００が形成するドットの色に対応するＣＭＹＫデータに変換する。
【００３５】
階調数変換部１５は、ＣＭＹＫデータの各色ごとに、ディザ法、誤差拡散法など周知の方法を用いた量子化処理を行うことにより、形成する各色ドットの階調数に対応した階調変換データに変換する。
【００３６】
圧縮部１６は、階調変換データを圧縮して印刷データを生成する。
【００３７】
印刷データ出力部１７は、印刷データを解凍してパルス幅変調を施し、パルス幅信号の形式で印刷データをプリントエンジン２００に出力する。
【００３８】
図５は、画像拡大装置１００の具体的ハードウェア構成を示した図である。図５に示すように、画像拡大装置１００は、入力インターフェース（以下、入力Ｉ／Ｆ）５０、ＣＰＵ５１、ＲＯＭ５２、ハードディスク５３、ＲＡＭ５４、メモリカードスロット５５および出力インターフェース（以下、出力Ｉ／Ｆ）５６を備えており、それらはバスを介して互いに接続されている。
【００３９】
入力Ｉ／Ｆ５０は、ホストコンピュータ１とプリンタ２とのインターフェースである。ホストコンピュータ１から所定の伝送方式により伝送された印刷ジョブデータは入力Ｉ／Ｆ５０に入力される。
【００４０】
ＲＡＭ５４は、汎用のワーキングメモリとして機能する。また、ＲＡＭ５４の記憶領域上には、印刷システムの各種処理を実行するために用いるシステムメモリＳ−ＭＥＭ、中間コードデータを記憶する中間コードバッファＩＣ−ＢＵＦ、および中間コードデータ展開したバンドごとのデータを記憶するバンドバッファＢ−ＢＵＦが確保されている。特に、ホストコンピュータ１から伝送された印刷ジョブデータは、入力Ｉ／Ｆ５０を介してシステムメモリＳ−ＭＥＭに記憶される。
【００４１】
ＣＰＵ５１は、ＲＯＭ５２またはハードディスク５３に格納された画像拡大プログラムを読み出して、実行することにより画像拡大装置１００としての各種の画像処理を行う。すなわち、ＣＰＵ５１が画像拡大プログラムを実行することにより、画像拡大装置１００の各構成が機能する。この画像拡大プログラムは、予めＲＯＭ５２やハードディスク５３に格納されてもよいし、例えば、メモリカード５７などのコンピュータが読み取り可能な記録媒体によって外部から供給され、メモリカードスロット５５を介してプリンタ２に備えられたＲＯＭ５２やハードディスク５３に格納されてもよい。もっとも、インターネットなどのネットワーク手段を介して、プログラムを供給するサーバー等にアクセスし、データをダウンロードすることによって格納されてもよい。
【００４２】
出力Ｉ／Ｆ５６は、画像拡大装置１００とプリントエンジン２００とのインターフェースである。画像拡大装置１００が各種の画像処理を施したデータは、出力Ｉ／Ｆ５６を介してプリントエンジン２００に出力され、プリントエンジン２００により印刷が行われる。
【００４３】
以上に説明したように、本実施形態に係るプリンタ２では、中間コードデータを登録する際に、整数倍に拡大し、さらに中間コードデータを展開する際に実数倍の拡大を行うことにより、拡大画像のＲＧＢデータを生成する。図６は、プリンタ２が印刷時に行う処理の流れを示すフローチャートである。以下、プリンタ２が行う処理についてフローチャートに従って詳細に説明する。
【００４４】
まず、ユーザがホストコンピュータ１を操作して、印刷する画像ファイル、拡大倍率などの印刷条件を設定して印刷する操作を行うと、ホストコンピュータ１内のプリンタドライバは、印刷対象データおよび拡大倍率Ｍの倍率情報などを含む印刷ジョブデータを生成し、プリンタ２に送信する。
【００４５】
ＣＰＵ５１が画像拡大プログラムを実行し、プリンタ２が受信した印刷ジョブデータをシステムメモリＳ−ＭＥＭに格納すると、図６のフローチャートに示す処理を開始する。処理を開始すると、まず、ステップＳ１において、言語解釈部１０は、システムメモリＳ−ＭＥＭから読み出した印刷ジョブデータを解釈して、印刷対象データを取得する。また、印刷ジョブデータを解釈して拡大倍率Ｍを取得し、システムメモリＳ−ＭＥＭに格納する。
【００４６】
次に、ステップＳ２では、倍率設定部１１は、式（１）および式（２）に従って拡大倍率Ｍから、整数倍の倍率Ｍ１および実数倍の倍率Ｍ２を算出する。算出した整数倍の倍率Ｍ１および実数倍の倍率Ｍ２はシステムメモリＳ−ＭＥＭに格納する。
【００４７】
次に、ステップＳ３では、中間コードデータ登録部１２は、中間コードデータを生成して登録する中間コード登録処理を行う。図７は、中間コード登録処理の処理の流れを示したフローチャートである。
【００４８】
中間コード登録処理を開始すると、まず、ステップＳ３０において、中間コードデータ登録部１２は、印刷対象データを解釈して、印刷ページに含まれるイメージ画像Ｆの範囲を算出する。印刷対象データには、印刷ページにおけるイメージ画像Ｆの座標、幅、高さを示す位置情報が含まれており、印刷対象データの位置情報からイメージ画像Ｆの範囲を求める。
【００４９】
次に、ステップＳ３１では、中間コードデータ登録部１２は、イメージ画像Ｆの範囲から、整数倍の倍率Ｍ１に応じて拡大したイメージ画像Ｇの範囲を算出し、システムメモリＳ−ＭＥＭの記憶領域に、イメージ画像Ｇのソースデータを記憶するための領域を確保する。
【００５０】
次に、ステップＳ３２では、中間コードデータ登録部１２は、イメージ画像Ｇの領域を区切るようにして、各バンドごとのイメージ画像Ｇの領域を認識する。
【００５１】
次に、ステップＳ３３〜ステップＳ３５では、中間コードデータ登録部１２は、イメージ画像Ｇをバンドごとに区切ったイメージ画像ＧＢについての画素値を求める処理を行う。そのため、まず、ステップＳ３３では、注目するバンド内のイメージ画像ＧＢについて補間対象とする画素の座標を算出する。
【００５２】
次に、ステップＳ３４では、イメージ画像Ｇの補間対象画素の画素値をバイリニア法により補間する。図８は、バイリニア法による補間処理を説明する図である。図８では、拡大する前のイメージ画像Ｆの画素を黒丸印、倍率Ｍ１倍に拡大したイメージ画像ＧＢの画素を三角印で表している。
【００５３】
バイリニア法では、補間対象画素の周辺の４つの画素を用いて線形補間することによって、補間対象画素の画素値を求める。例えば、図８において、イメージ画像ＧＢの補間対象画素ＧＢ（ｋ，ｌ）の画素値ｇ（ｋ，ｌ）を求める際には、イメージ画像Ｆの４つの画素Ｆ（ｉ，ｊ）、画素Ｆ（ｉ＋１，ｊ）、画素Ｆ（ｉ，ｊ＋１）および画素Ｆ（ｉ＋１，ｊ＋１）の画素値、ｆ（ｉ，ｊ），ｆ（ｉ＋１，ｊ），ｆ（ｉ，ｊ＋１），ｆ（ｉ＋１，ｊ＋１）を用いて、次式の演算を行う。算出した画素値ｇ（ｋ，ｌ）はイメージ画像ＧＢのソースデータとしてシステムメモリＳ−ＭＥＭ上に確保した領域に格納する。
ｇ（ｋ，ｌ）＝（（ｉ＋１）−ｋ）×（（ｊ＋１）−ｌ））×f（ｉ，ｊ）
＋（（ｉ＋１）−ｋ）×（ｌ−ｊ））×f（ｉ，ｊ＋１）
＋（ｋ−ｉ）×（（ｊ＋１）−ｌ））×f（ｉ＋１，ｊ）
＋（（ｋ−ｉ）×（ｌ−ｊ））×f（ｉ＋１，ｊ＋１）  …（３）
【００５４】
なお、整数倍の倍率Ｍ１の拡大に用いる補間方法としては、上述したバイリニア法に限られることなく、補間対象画素の周辺の１６点の画素を用いて補間するバイキュービック法など、ニアレストネイバ−法より補間精度が高い、他の補間方法を用いてもよい。
【００５５】
次に、ステップＳ３５では、注目するバンド内のイメージ画像ＧＢの全画素について、ステップＳ３３およびＳ３４の処理を行ったか否かを判断する。全画素について処理を行っていなかった場合（Ｎｏ）、ステップＳ３３に進み、イメージ画像ＧＢの新たな画素を補間対象画素として処理を行う。イメージ画像ＧＢの全画素について処理を行っていた場合（Ｙｅｓ）、ステップＳ３６に進む。
【００５６】
ステップＳ３６では、中間コードデータ登録部１２は、注目するバンド内のイメージ画像ＧＢについて、イメージ画像ＧＢの座標、高さ、幅およびイメージ画像ＧＢのソースデータへのポインタなどを当該バンドの中間コードデータとして中間コードバッファＩＣ−ＢＵＦに書き込む。
【００５７】
次に、ステップＳ３７では、注目するバンドに含まれる全イメージ画像ＧＢについて処理を終了したか否かを判断する。バンド内に複数のイメージ画像が含まれており、未処理のイメージ画像ＧＢがある場合（Ｎｏ）、バンド内の未処理のイメージ画像ＧＢに注目してステップＳ３３へ進む。全イメージ画像ＧＢについて処理を行っている場合（Ｙｅｓ）、ステップＳ３８に進む。
【００５８】
ステップＳ３８では、分割した全バンドについて、ステップＳ３３〜ステップＳ３７の処理を行ったか否かを判断する。全バンドについて処理を行っていなかった場合（Ｎｏ）、次のバンド番号のバンドに注目してステップＳ３３に進む。全バンドについて処理を行っていた場合（Ｙｅｓ）、図７の中間コード登録処理を終了し、ステップＳ４に進む。
【００５９】
図６のフローチャートに戻り、ステップＳ４では、中間コードデータ展開部１３は中間コードデータを展開する中間コード展開処理を行う。図９は中間コード展開処理の流れを示したフローチャートである。
【００６０】
中間コード展開処理を開始すると、ステップＳ４０において、中間コードデータ展開部１３は、中間コードバッファＩＣ−ＢＵＦから展開するバンドの中間コードデータを読み取り、展開するバンドに含まれるイメージ画像ＧＢの座標、幅、高さ、ソースデータへのポインタの情報を取得する。
【００６１】
次に、ステップＳ４１では、中間コードデータ展開部１３は、イメージ画像ＧＢを実数倍の倍率Ｍ２に応じて拡大したイメージ画像Ｈの範囲を算出し、算出した範囲内にある画素の画素値を記憶するための記憶領域を、バンドバッファＢ−ＢＵＦに確保する。例えば、実数倍の倍率Ｍ２に応じた拡大では、図１０（ａ）に示した幅ｗ、高さｈのイメージ画像ＧＢは、図１０（ｂ）に示すように、幅Ｍ２×ｗ、高さＭ２×ｈのイメージ画像Ｈに変換されるので、中間コードデータのイメージ画像ＧＢの位置情報を表すパラメータから、イメージ画像Ｈの範囲を特定する。イメージ画像Ｈの範囲を特定すると、当該イメージ画像Ｈの画素値を記憶することができるだけの記録領域をバンドバッファＢ−ＢＵＦに確保する。
【００６２】
次に、ステップＳ４２〜ステップＳ４４では、中間コードデータ展開部１３は、イメージ画像Ｈの画素値を、ニアレストネイバー法により補間する処理を行う。図１１は、ニアレストネイバー法による補間処理を説明する図である。図１１の例では、イメージ画像ＧＢの画素を三角印、イメージ画像Ｈの画素を四角印で示している。ニアレストネイバー法によれば、イメージ画像Ｈの補間対象画素Ｈ（ｍ，ｎ）に最も近い、イメージ画像ＧＢの画素ＧＢ（ｋ＋１，ｌ＋１）の画素値を、補間対象画素Ｈ（ｍ，ｎ）の画素値とする。なお、バンドバッファＢ−ＢＵＦのバンドに対応する領域には、例えば画素値「０」が初期値として与えられている。
【００６３】
そのため、ステップＳ４２では、中間コードデータ展開部１３は、ステップＳ４１にて特定されたイメージ画像Ｈの範囲のうちから、補間対象とする画素Ｈ（ｍ，ｎ）の座標を算出する。
【００６４】
次に、ステップＳ４３では、補間対象画素Ｈ（ｍ，ｎ）に最も近い、イメージ画像ＧＢの画素を選択する。
【００６５】
次に、ステップＳ４４では、ステップＳ４３で選択した画素の画素値を取得し、補間対象画素Ｈ（ｍ，ｎ）の画素値とする。具体的には、中間コードバッファＩＣ−ＢＵＦに記憶された中間コードデータから、イメージ画像ＧＢのソースデータへのポインタＰｓを読み出し、ポインタＰｓおよび補間対象画素の位置から、選択した画素の画素値を記憶しているシステムメモリＳ−ＭＥＭ上のアドレスを割り出す。割り出したアドレスのシステムメモリＳ−ＭＥＭにアクセスして、選択した画素の画素値を読み出し、イメージ画像Ｈの補間対象画素Ｈ（ｍ，ｎ）の画素値としてバンドバッファＢ−ＢＵＦの確保した領域に書き込む。
【００６６】
次に、ステップＳ４５では、イメージ画像Ｈの全画素を補間対象画素として、ステップＳ４２〜ステップＳ４４の処理を行ったか否かを判断する。すなわち、バンドバッファＢ−ＢＵＦに確保した全領域の画素についてニアレストネイバー法による補間を行ったかを判断する。全画素について補間していなかった場合（Ｎｏ）、ステップＳ４２に進み、新たな画素を補間対象画素として処理を行う。全画素について補間していた場合（Ｙｅｓ）、ステップＳ４６に進む。
【００６７】
ステップＳ４６では、バンド内の全イメージ画像ＧＢについて処理を行ったか否かを判断する。未処理のイメージ画像ＧＢがあった場合（Ｎｏ）、ステップＳ４１に進み、未処理のイメージ画像ＧＢについてステップＳ４１からＳ４５の処理を行う。未処理のイメージ画像ＧＢがない場合（Ｙｅｓ）、図９の中間コード展開処理を終了し、ステップＳ５に進む。
【００６８】
図６のフローチャートに戻り、ステップＳ５では、色変換部１４は、バンドバッファＢ−ＢＵＦから読み出したＲＧＢデータをＣＭＹＫデータに変換する色変換処理を行う。そして、色変換したＣＭＹＫデータをバンドバッファＢ−ＢＵＦに格納する。
【００６９】
次に、ステップＳ６では、階調数変換部１５は、バンドバッファＢ−ＢＵＦから読み出したＣＭＹＫデータに階調数変換を行う。階調変換した階調変換データはバンドバッファＢ−ＢＵＦに格納する。
【００７０】
次に、ステップＳ７では、印刷ページの全バンドについて処理を行ったか否かを判断する。未処理のバンドがある場合（Ｎｏ）、ステップＳ４に戻り、未処理のバンドについて処理を行う。全バンドについて処理を行っていた場合（Ｙｅｓ）、ステップＳ８へ進む。
【００７１】
次に、ステップＳ８では、圧縮部１６は、バンドバッファＢ−ＢＵＦに格納された全バンドについての階調変換データを圧縮し、印刷データを生成する。印刷データはシステムメモリＳ−ＭＥＭに格納する。
【００７２】
ステップＳ９では、印刷データ出力部１７が、システムメモリＳ−ＭＥＭから読み出した印刷データにパルス幅変調を行い、プリントエンジン２００に対応するパルス幅信号に変換する。そして、変換したパルス幅信号をプリントエンジン２００に出力する。プリントエンジン２００は、印刷データ出力部１７から入力されたパルス幅信号に従って、ＣＭＹＫ各色の画像を順番に印刷することにより、印刷を実行する。ステップＳ９の処理を終えると、図６のフローチャートに示した処理を終了する。
【００７３】
なお、ステップＳ２が、倍率設定工程、ステップＳ３が中間コード登録工程、ステップＳ４が中間コード展開工程に相当する。
【００７４】
以上に説明したように、本実施形態の画像拡大装置１００は、印刷対象画像であるイメージ画像Ｆを、整数倍の拡大と実数倍の拡大に分け、２段階に拡大している。図１２は、本実施形態の中間コード登録処理、中間コード展開処理においてシステムメモリＳ−ＭＥＭ、中間コードバッファＩＣ−ＢＵＦ、バンドバッファＢ−ＢＵＦに記憶されるデータの動きを示した図である。図１２に示すように、イメージ画像ＦのソースデータはシステムメモリＳ−ＭＥＭに格納されている。整数倍の拡大を行うときには、イメージ画像Ｆを整数倍に拡大したイメージ画像ＧのソースデータがシステムメモリＳ−ＭＥＭに格納される。そして、イメージ画像Ｇを各バンドに含まれるイメージ画像ＧＢごとに、イメージ画像ＧＢのソースデータへのポインタＰｓを含んだ中間コードデータが、中間コードバッファＩＣ−ＢＵＦに格納される。実数倍の拡大を行うときには、中間コードデータに含まれるポインタＰｓを参照して、イメージ画像Ｈの補間対象画素Ｈ（ｍ，ｎ）の画素値を、システムメモリＳ−ＭＥＭに記憶されたイメージ画像ＧＢのソースデータから読み出して、バンドバッファＢ−ＢＵＦに次々に記憶するようにして、イメージ画像Ｈの全画素についてのＲＧＢデータを生成する。このように、イメージ画像ＨのソースデータをシステムメモリＳ−ＭＥＭに記憶することなく、実数倍の拡大処理を行っている。
【００７５】
また、図１３では、本実施形態に係る画像拡大装置１００によらずに、２段階の拡大処理を通常の方法で行う場合に、中間コード登録処理、中間コード展開処理においてシステムメモリＳ−ＭＥＭ、中間コードバッファＩＣ−ＢＵＦ、バンドバッファＢ−ＢＵＦに記憶されるデータの動きを示している。２段階に拡大する処理を行うと、図１３に示すように、中間コード展開処理において、整数倍拡大後のソースデータおよび実数倍拡大後のソースデータを、システムメモリＳ−ＭＥＭに記憶することになる。そして、中間コード展開処理では、実数倍拡大後のソースデータを読み出して、ＲＧＢデータに展開したＲＧＢデータをバンドバッファＢ−ＢＵＦに記憶する。このように、整数倍拡大後のソースデータおよび実数倍拡大後のソースデータを記憶しておく必要があった。
【００７６】
したがって、本実施形態の中間コード展開処理では、図１３に示した処理に比べて、実数倍拡大後のソースデータをバンドバッファＢ−ＢＵＦに記憶することなく、実数倍の拡大を行うことができる。
【００７７】
以下、本実施形態における効果を記載する。
【００７８】
（１）本実施形態に係る画像拡大装置１００によれば、イメージ画像ＨのソースデータをシステムメモリＳ−ＭＥＭに記憶していないので、処理に要するメモリ容量を少なくすることができる。
【００７９】
（２）イメージ画像ＨのソースデータをシステムメモリＳ−ＭＥＭに格納していないので、ソースデータの読み書きに要する時間が短くなる。したがって、高速に処理することができる。
【００８０】
（３）整数倍（Ｍ１倍）の拡大には補間精度の高いバイリニア法、またはバイキュービック法を用い、実数倍の拡大には、演算量が少ないニアレストネイバー法により行っているので、処理全体としての演算量が少なくなる。したがって、画質の劣化を抑えながら、高速に処理することができる。
【００８１】
（４）ニアレストネイバー法を用いる実数倍の拡大においては、補間対象画素Ｈ（ｘ，ｙ）の周辺に１つでも画素があれば適切に補間することができるので、バンドの境界にある補間対象画素であっても適切に補間することができる。
【００８２】
以上、本発明の一実施形態について説明したが、本発明はこれに限られることなく、様々な形態とすることもできる。以下、本発明の変形例について説明する。
【００８３】
（変形例１）本発明は、通常の１段階に拡大する処理においても適用することができる。図１４に示すように、中間コードデータのソースデータへのポインタＰｓよりイメージ画像Ｆのソースデータを読み出し、中間コードデータの座標、高さ、幅の情報から、イメージ画像Ｆを拡大倍率Ｍ倍に拡大したイメージ画像Ｈを記憶する領域をバンドバッファＢ−ＢＵＦに確保する。イメージ画像Ｈの各画素について、イメージ画像Ｆより補間した画素値をバンドバッファＢ−ＢＵＦに記憶することにより、拡大画像を取得する。すなわち、前記実施形態の中間コード登録処理においては整数倍の拡大を行うことなく、中間コード展開処理において拡大倍率Ｍ倍の拡大を行う。このようにしても、イメージ画像Ｆを拡大倍率Ｍに応じて解像度変換した画像を表すソースデータを記憶する必要がなくなるので、少ないメモリ容量で印刷対象画像を拡大することができる。
【００８４】
（変形例２）前記実施形態では、設定された倍率Ｍから整数部分の倍率を倍率Ｍ１として、バイリニア法またはバイキュービック法を用いた拡大処理を行った。第２の変形例として、倍率Ｍ１を次式で表す値としてもよい。
Ｍ１＝ｉｎｔ（Ｍ＋０．５）…（４）
例えば、拡大倍率Ｍが「２．７」である場合、前記実施形態によれば、倍率Ｍ１は「２」、倍率Ｍ２が「１．３５」となるところ、式（４）によれば整数倍の倍率Ｍ１は「３」、倍率Ｍ２は式（２）に従って「０．９」となる。このようにすれば、実数倍の倍率Ｍ２により拡大または縮小する割合が小さくなるので、ニアレストネイバー法の補間により生じる画質の劣化をさらに抑えることができる。
【００８５】
（変形例３）前記実施形態では、印刷対象画像であるオブジェクトが、画素ごとに画素値を有したイメージ画像の例について説明した。本発明はこれに限られることなく、図形・文字のオブジェクトをパラメータやインデックスにより表した中間コードデータに対応することもできる。この場合、中間コード登録時には、整数倍（Ｍ１倍）に拡大した図形・文字を表す中間コードデータを生成して登録する。中間コード展開時には、図形・文字をさらに実数倍（Ｍ２倍）に拡大した領域の各画素について、中間コードデータから画素値を補間するようにして、ＲＧＢデータを生成する。
【００８６】
（変形例４）前記実施形態では、ＣＰＵ５１が画像拡大プログラムを実行することにより、画像拡大装置１００としての機能をソフトウェアによって実現する例について説明した。第４の変形例として、上述した画像拡大装置１００の機能を、ＡＳＩＣなどのハードウェア回路により実現するとしてもよい。もちろん、一部の機能をハードウェア回路にもたせて、ハードウェア回路がもたない機能をソフトウェアによって実現するようにしてもよい。
【００８７】
（変形例５）前記実施形態では、レーザプリンタに適用した画像拡大装置１００の一例について説明した。本発明の画像拡大装置は、インクジェットプリンタや熱昇華型プリンタなど他の印刷方式のプリンタ、複写機、ファックス、ディスプレイなど様々な装置に適用することもできる。
【図面の簡単な説明】
【００８８】
【図１】本実施形態に係る印刷システムの構成を示した図。
【図２】中間コードデータ登録部１２が行う処理を説明する図。
【図３】中間コードデータのデータ構造を示した図。
【図４】中間コードデータに含まれるオブジェクトの情報を説明するための図。
【図５】画像拡大装置１００の具体的ハードウェア構成を示した図。
【図６】印刷時に行う処理の流れを示すフローチャート。
【図７】中間コード登録処理の流れを示したフローチャート。
【図８】バイリニア法による補間処理を説明する図。
【図９】中間コード展開処理の流れを示したフローチャート。
【図１０】実数倍の拡大を説明する図。（ａ）は実数倍拡大前のバンドを示した図、（ｂ）は実数倍拡大後のバンドを示した図。
【図１１】ニアレストネイバー法による補間処理を説明する図。
【図１２】中間コード登録処理、中間コード展開処理においてメモリに記憶されるデータの動きを示した模式図。
【図１３】２段階の拡大処理を通常の方法で行う場合に、中間コード登録処理、中間コード展開処理においてメモリに記憶されるデータの動きを示した模式図。
【図１４】第１の変形例を説明する図。
【符号の説明】
【００８９】
１…ホストコンピュータ、２…プリンタ、１０…言語解釈部、１１…倍率設定部、１２…中間コード登録部としての中間コードデータ登録部、１３…中間コード展開部としての中間コードデータ展開部、１４…色変換部、１５…階調数変換部、１６…圧縮部、１７…印刷データ出力部、５０…入力インターフェース、５１…ＣＰＵ、５２…ＲＯＭ、５３…ハードディスク、５４…ＲＡＭ、５５…メモリカードスロット、５６…出力インターフェース、５７…メモリカード、１００…画像拡大装置、２００…プリントエンジン、Ｆ…印刷対象画像としての拡大前のイメージ画像、Ｆ（ｉ，ｊ）…拡大前のイメージ画像における座標（ｉ，ｊ）の画素、Ｇ…中間拡大画像としての整数倍に拡大後のイメージ画像、Ｇ（ｋ，ｌ）…整数倍に拡大後のイメージ画像における座標（ｋ，ｌ）の画素、ＧＢ…整数倍に拡大後のバンドごとのイメージ画像、Ｈ…実数倍に拡大後のイメージ画像、Ｈ（ｍ，ｎ）…実数倍に拡大後のイメージ画像における座標（ｍ，ｎ）の画素、ｆ…イメージ画像Ｆの画素値、ｇ…イメージ画像Ｇの画素値、ｈ…イメージ画像Ｈの画素値、Ｍ…拡大倍率、Ｍ１…第１の倍率としての整数倍の倍率、Ｍ２…第２の倍率としての実数倍の倍率、Ｓ−ＭＥＭ…システムメモリ、ＩＣ−ＢＵＦ…中間コードバッファ、Ｂ−ＢＵＦ…バンドバッファ。
【図１】
2007043461.tif 000003
【図２】
2007043461.tif 000004
【図３】
2007043461.tif 000005
【図４】
2007043461.tif 000006
【図５】
2007043461.tif 000007
【図６】
2007043461.tif 000008
【図７】
2007043461.tif 000009
【図８】
2007043461.tif 000010
【図９】
2007043461.tif 000011
【図１０】
2007043461.tif 000012
【図１１】
2007043461.tif 000013
【図１２】
2007043461.tif 000014
【図１３】
2007043461.tif 000015
【図１４】
2007043461.tif 000016